Category Archives: Betkas

Apple Cinema irgi genda

Abuoliai irgi genda. Ypač, kai baigiasi garantinis. Buvo čia toks ligonis, vienas iš Apple Cinema serijos monitorių. Ir jis biški ėmė ir neberodė vaizdo.
Apple cinema LED refurbishing
Čia jis taip atrodo visas. USB, display port laideliai ir laidelis pajungti abuolinio notebuko krovimą. Jokių mygtukų. Gedimas paprastas- neveikia pašvietimas (pasitikrino su prožektorium). Buvau užterorizuotas- diagnostiką pratesiau ir nustačiau, kad viena LED eilutė pradėjo svilti- jos užsižiebimo įtampa stipriai paaugo. Toliau remontuoti atsisakiau. Vėliau buvo visa epopėja netgi su oficialiu servisu ir kažkoks meistrelis tipo pataisė. Monitorius kurį laiką veikė, tik atsirado vertikali juosta. Matyt lindo į matricą… Monitorius kiek paveikė, bet gana greitai vėl nustojo šviesti. O čia buvau užšantažuotas ir monitories atsidūrė pas mane. Remontas buvo daromas su tokiom sąlygom: kada kils noras remontuoti, darau bet ką, neatsakau už kokybę ir nebūtinai suremontuoju. Taigis monitorius pragulėjo gal metus, o gal daugiau 🙂 .
Continue reading →

AVR87: TXC101 UHF siustuvėlis

Tai mano pirmas eksperimentas radio dažnių generavime. Todėl labai jau nekritikuokite. Viskas prasidėjo nuo signalizacijos siustuvėlio, kurio nesugebėjau paleisti. Poto iš kinijos nusipirkau pirmą pasitaikiusi mikroscheminą kuris generuoja aukštus dažnius. Tai buvo TXC101, 300-1000MHz transmitter. Kuris gali veikti kaip savarankiškas prietaisas, o gali veikti valdomas mikrokontrolerio. Poto vėl buvo viskas užmiršta, kol kitame projekte liko vietos PCB (nes jos dabar didelės). Taip ir gimė šis visiškai žalias projektas su klaidom.
Schema paprasta- MCU (ATMEGA8), sintezatorius TXC101, biški pasyvių element ir dviejų tranzų stiprintuvas. Mažesnis tranzistorius tai kažkas su užrašu “7Y 1”, kas savo ruožtu gali būti: MMBR941, MMBR951 kas visai tinkama (arba ten visai ne tokia detalė, nors lupau iš kažko aukštadažnio), o didesnis buvo BLT50, kas gerai 470MHz, bet tikriausiai negerai prie 900MHz. Tačiau visiškai tranzo patikrinti prie aukštesnio dažnio nepavyko, nes traukiojant laidus ir jungiant visokiausias apkrovas tranzistorius biški užkaito ir jau nebeveikė. Toliau eksperimentus dariau be galinio tranzo…
TXC101 transmitter and AVR ATMEGA8
(foto pasididina)
Continue reading →

ARM:0002 versija B, TXT LCD

Kol kas visiškai neapsisprendžiau kokia “baze” remtis programuojant STM32 mikroschemą. Dabar tik eksperimentuoju ir paprasčiausiai pakartojau senesnį ARM projektą su tekstiniu LCD ekranėliu. Kol kas nebraidžiojau optimizacijos pinklėse ir naudojausi kažkieno sukurtais primityvais, kurie gana griozdiški viduje. Tačiau šaip – ne taip pavyko paleisti.

STM32 LCD tXT
(dešinėje skaičiukas kur neaiškus tai fotikas pagavo momentą kai keičiasi reikšmė)

Kokios iškilo bėdos? Pagrindinė bėda buvo suvokti kaip galima duomenų pinus operatyviai perprogramuoti iš OUTPUT į INPUT. Pas mano naudojamas bibliotekas ten naudojamos griozdiškos struktūros. Ir aišku tingėjau skaityti instrukcijas.
Pradinė užduotis buvo, kad LCD gali būti prijungtas prie bet kurios kojos, bet poto teko supaprastinti, kad visdėlto jungiasi prie to pačio banko. Čia išlindo pirmas skirtumas tarp atmelio SAM7 ir STM32. Pas atmelį PIO kojos bent jau 32, priklauso vienam bankui. Gana logiška- CPU tai 32 bitų ir vienu smūgiu galima pakeisti 32 kojas. Pas STM32 kojos suskirstytos po 16 kiekvienam bankui. Kas baisiau, rodos viduje ten dar suskirstyta po 8 bitus ir išmaukyti tie bitai kažkokia tvarka. Aišku, gal galima skirtingus bankus valdyti skirtingais laikrodukais, o gal taupyti elektrą ir gal juos išjunginėti? Tačiau dingsta paprastumas… Kodėl taip padaryta aš nežinau. Bet man nepatiko.

A! dar kažkaip užmiršau, kad mano LCD tai 5V technologija, o STM32 tai 3V. Tai vieną vakarą prasikankinau be reikalo. Kažkaip galvojau, kad mano testinis ekranėlis veikia su 3V maitinimu.

ARM STM32F103 TXT LCD source code.

ARM:0001 versija B arba STM32

Kažkada gavau Atmelio ARM šroto. O dabar gavau ST produkcijos beveik šroto. Tiksliau pamačiau, kai metė į šiukšlyną “paletėlę”* su STM32 čipais. Dalis čipų nukrito neatgaunamai, o keliasdešimt buvo sugauta ir parkeliavo namo. Tai buvo STM32F103RET6 – 512kB flash ROM, 64kB RAM ir 64 plonos kojos (gana daug kojų palinko gelbėjimo operacijos metu) … LEDų mirkčiojimui pats tas čipukas. 🙂

STM32F103RE
Gryni čipai neveikia, todėl sukurpiau savo PCB. Ji gavosi kraupiai raudona. Dar pakeliui nupirkau kinišką dev boarduką su mažesniu čipuku. Bet PCB iš kinijos atėjo greičiau. Į tą UNIBUS dalį nereikia kreipti dėmesio, čia eksperimentai- ten nebesiekia Eagle free softas ir ta dalis PCB kaip ir nesinaudojasi. Ten “menas” gerberiuose.
Aišku padariau kaip minimum dvi klaidas. Abi gana lengvai pataisomos- užmiršau RESET liniją patempti į pliusą. Ir panašus patempimas reikalingas prie USB jei jį naudoti. Ten reikėtu statyti gal net tranzu valdomą pull-up.

Apie softą kita šneka. Kažkaip seniokiškai piktybiškai nenorėjau jokio IDE. Man užteko tų “user friendly” nesamonių. Tik oldskūlas, tik hardkoras. Žodžiu dabar kompiliuojasi iš to pačio notepado- ir AVR ir STM ir atmelio ARMas. Ir iš ten pat ir programuojasi.

Kad ir ką nešnekėtu vartotojai- nėra labai patogaus softo. Kažkaip eina tendencija, kad jei reikia pamirksėti LEDą, tai reikia į čipuką supusti visa operacinę sistemą ir krūvas pričindalų… Aišku periferiją reikia suprogramuoti ir kuo toliau, ji sudėtingesnė. Bet dėti šimtus eilučių chaotiško kodo? ST išleido gerą įdėją- grafinį periferijos konfiguratorių STM Cube, ten aš jo sugeneruoto kodo nesugebėjau netik suprasti, bet ir sukompiliuoti su gcc. Poto skaičiau nemūsiškus forumus ir atsiliepimai buvo ne kokie… Matyt tokie oldfagai rašė.

Todėl teko pažaisti kokius trys vakarus ir pavyko visdėlto paleisti MCU kojas taip, kad jos duotu kažkokius signalus.
Deja, nepavyko svetimų bibliotekų privesti tiek, kad nerodytu nei vieno warning. Man nepatinka warningai…


gcc version 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496] (GNU Tools for ARM Embedded Processors)
Building file: stm32f10x_vector.o
Invoking: MCU C Compiler
arm-none-eabi-gcc -Os -Wall -fno-strict-aliasing -fmessage-length=0 -fno-builtin -mthumb -mcpu=cortex-m3 -MMD -MP -ffunction-sections -fdata-sections -I ../src -I ../src/includes -I ../libSTM32F103 -I ../libSTM32F103/inc -MF objs/stm32f10x_vector.d -MT objs/stm32f10x_vector.d -c ../src/includes/stm32f10x_vector.c -o objs/stm32f10x_vector.o
../src/includes/stm32f10x_vector.c:114:4: warning: taking address of expression of type 'void'
&_estack, // The initial stack pointer
^
Finished building: stm32f10x_vector.o

Building target: blinky_stm32f103.elf
Invoking: MCU Linker
arm-none-eabi-gcc -Wl,--gc-sections,-Map=blinky_stm32f103.map -Os -Wall -fno-strict-aliasing -fmessage-length=0 -fno-builtin -mthumb -mcpu=cortex-m3 -MMD -MP -ffunction-sections -fdata-sections -L ../ -T ../loaders/stm32.ld -I ../src -I ../src/includes -I ../libSTM32F103 -I ../libSTM32F103/inc objs/main.o objs/stm32f10x_it.o objs/stm32f10x_vector.o ../libSTM32F103/Release/libstm32f103.a -oblinky_stm32f103.elf
Finished building target: blinky_stm32f103.elf

Visas source kodas čia, su visom bibliotekom.

*) jei kas nesuprato, “paletelė” tai toks plastikinis laikiklis mikroschemom. Kaip šitas iš to pačio šaltinio:
STM32F205ZGT6
Tik čia daugiau kojų turinti mikroschema STM32F205ZGT6 (1M flash, 132kb RAM ir 144 kojos…) biški per daug.

Vieno nixio laikrodis

Per naujų metų sveikinimą panaudojau šią iliustraciją:

2017 year nixie in-18

Tai vieno nixio laikrodis. Visos detalės tipinės, hardwarėje nieko specifinio. Vienintelė naujovė- viskas valdoma vienu mygtuku. Kadangi reikia daugiau funkcijų, tai mygtukas atskiria “trumpą” ir “ilgą” paspaudimą.
Dar vienas skirtumas- RTC panaudotas iš kažkokio DVRo. Tai Dallas Semiconductors/Maxim čipas DS1338. Jis turi “tick” išėjimą kuris užprogramuotas 1s impulsams ir aktyviai naudojamas programos. Dar naudojama IPS511G mikroschema- smart switch, kuri tik reikiamu metu įjungia aukštos įtampos šaltinį. Lempa didoka, o ir keitiklis nėra labai ekonomiškas. Todėl kai nenaudojama lempa, iš ~7V maitblokio srebia apie 14mA srovės, tačiau kai užsikuria lemputė, srovė užkyla iki maždaug 290mA. Jei neišjunginėti maitinimo, tai raktinis FETas kiek kaista ir jaučiasi šiluma per korpusą. Naudojant atjungimą viskas spėja ataušti.

Laikrodis kokias 7 sekundes nieko nerodo, poto parodo valandas ir minutes nuosekliai. Kiekvienas skaičius rodomas vieną sekundę.Daromos nedidelės pauzelės, kad matytusi kaip keičiasi skaičiai net tada, kai laikrodis turi rodyti tą patį skaitmenį.
Norint iš karto pažiūrėti laiką, reikia nuspausti trumpam mygtuką, tada laikrodis pradeda skaičių rodymo ciklą. Jei niekas neliečiama, skaičiai atsiranda savaime.
Norint nustatyti laiką, reikia spausti ir palaikyti mygtuką. Tada laikrodis rodo visus skaičius iš eilės ir nesiblaško tarp jų. Tada trumpu nuspausdimu galima padidinti skaičius. Penktas ilgas nuspaudimas išjungia nustatymo režimą. Tai indikuojama “vaiduoklišku” švytėjimu (ne visos nixies tai padaro)- visa lempa truputi švyti, bet konkrečių skaičių nerodo. Tai gaunama paduodant aukštą įtampą, bet nejungiant jokio segmento. Per parazitines talpas ir rezistorius yra įtampos nutekėjimas ir lempa švyti.

Kiek apie softą: naudojami trys darbiniai algoritmai vienu metu:
Pirmas- sekundinis “tick” iš RTC mikroschemos per INT0 koją. Čia beveik viskas ir atliekama: nuskaitomas RTC, pagal mygtuko reikšmę atliekamos funkcijos, rodomas laikas.
Antras- taimeris. Čia, neatsimenu kokiu intervalu dirba, bet čia pagal mygtuko rezultatą persijungia režimai. Taip pat generuojama “kintama” įtampa nixio uždegimui per kondensatorių. Taip uždegiamas indikatorius, nes išjungiant aukštos įtampos šaltinį įtampa “pasibaigia” ne iškarto, o poto, kai išsikrauna kondensatorius. O dar, čia galima reguliuoti nixio švietimo ryškumą.
Trečias- pagrindinis ciklas. Čia tikriausiai reikėtu irgi panaudoti kitą taimerį, bet šioje softo versijoje daromas sisteminis mygtukų būklės apklausimas kas 10ms.

Ir aišku:
Single nixie RTC clock with single button control. Source code and hex.

Kiniškos PCB, pigiau ir spalvingiau

Kaip ir žadėjau, kai tik gavau PCB iš Kinijos, tai iš karto dedu kelias nuotraukas ir kiek komentarų.

kiniska PCB plokste

Pirmiausia- seniau buvo 5×5 ir tik žalios. Dabar, dėl konkurencijos, mažiausia PCB tai 10×10 ir bet kokios spalvos. Teoriškai galima jas panelizuoti ir frezuoti, bet tada kaina pasidaro nebe pigi. Ši kainuoja ~10$ (10vnt) plius siuntimas (apie 5$). Pagamina iš gerberių per kelias dienas, deja siuntimas užtrunka Kinišką mėnesį. Tai kiek ištemptas ir neapibrėžtas laiko tarpas kiek panašus į kalendorinį mėnesį.
Continue reading →

Drėlės akumuliatoriaus perdarymas

Nors ir žiemos metas, laikas nuo laiko važiuoju į fazendą ir ten ką nors statau ar remontuoju. Palyginus su remontais Kaune (kur kaimynai užliejo sienas- lubas ir rusį, bet pas “juos nebėga”), šis fazendinis remontas ramina nervus. Ten kovojama su sena sienų izoliacija ir dabar reikia įsukti vieną kitą milijoną medvaržčių… Buvau pasiskolinęs normalų suktuką iš darbo, bet ji reikia atiduoti atgal. Pirkti naują kažkaip nenoriu. Aš prisiminiau, kad kai stačiau garažiuką arkliui, buvau nusipirkęs kinišką suktuką. Jo akumuliatorius jau kokį dešimt metų kažkodėl padėtas ant palangės iš kiemo pusės… Taigis, jis tikriausiai jau nebeveikia 🙂 Todėl nutariau akumuliatoriau elementus pakeisti į kitus, juolab mėtosi visas kalnas ličio bačkučių iš “garantinių” kompų akumuliatorių. Garantiniai reiškia, kad tie akumai susifeilino dėl gamyklinio defekto ir ten dažniausiai 66,66% ličio elementų visiškai geri ir beveik nauji. Paėmiau vieną samsung akumą ir jo skrodimas parodė, kad 100% “bačkelių” geros- paprasčiausiai kontrolerio PCB perlūžusi per pusę.

Akume buvo 6 elementai, sujungti pagal 3S2P schemą. Elemento talpa kažkur 2Ah (teoriškai, naudojami samsungėliai, nors ir nauji kogero bus 1.8Ah talpos). Įtampa kažkur gausis apie 12V. Norėjau pažiūrėti kas parašyta ant suktuvo… bet suktuvo neradau. Prisiminiau, kad darbe kažkur mėtėsi suktuvas (aišku kiniškas) be akumo kur radau šiukšlėse ir pasiėmiau dėl patrono… laime, kad ta vieta nelankoma vos ne penkmečiais, tai drėlę radau 🙂 . Ji buvo be jokių užrašu… dzin.

dreles akumuliatoriaus remontas
Mechaniškai sutvirtinti elementus patodu su kiniškai akumų laikikliais, kurie kaip kokios lego kaladėlės susijungia viena su kita. Nuotraukoje kitos celės, nes fotkinau po eksperimento.
Continue reading →

Nauji metai, vėl

Pagaliau baigėsi šie kiek bjauroki 2016 metai, kurie prasidėjo Buviu, Princu, o baigėsi princese Lėja su jos motina… Asmeniškai man šie metai buvo sunkoki, tačiau gal jau baigsis šis juodumo periodas. Todėl linkiu visiems ir sau, kad sekantys metai būtų geresni, šviesesni ir laimingesni.

Ta proga suklijavau animuotą gifą:

2017 year nixie in-18

Tai pačios didžiausios ir gražiausios tarybinės indikatorinės lemputės- ИН-18. Ir pačios brangiausios 🙂
Nei softas, nei hardwaras nevertas paminėjimo. Tai panaudotos standartizuotos mano PCB. O jei prašnekom apie PCB, tai nežinau ar tai jau po visam, ar tai tik akcija: seeedas atpigino PCB gamyba keturis kartus ir už tą pačią kainą leidžia pasirinkti bet kokią PCB spalvą. Dabar vietoje 5×5 PCB už tuos pačius 10 doleriu daro 10x10cm. Visa bėda, kad demo Eagle neleidžia išnaudoti visą plotą- max paišomas dydis 8x10cm free versijoje. O dar Eagle nupirko autokadas… Kai jie ten spręs toliau licenzijavimą aš nežinau, jaučiu padarysis kokį nors “cloud” nesusipratimą ir dar pagėjins visą dizainą… Kai gausiu PCB, parašysiu atskirai.

Švęskit šventes!

Kiniškas niekaliukas arba 4×4 LED kubas

Kažkada vasaros metu užsakiau kinišką rinkinuką surinkti 4×4 LED kubą. Rinkinukas nėra brangus, kažkur puspenkto dolerio su atsiuntimu. Už tai gaunam PCB, kalną mėlynu (gal yra ir ne mėlynu) LEDu, kelis rezistorius, dvi mikroschemos 74HC595, visokios jungtys… Ir labai labai kiniškos instrukcijos kurios nieko nerodo. Todėl litavau pagal save ir padariau kiek atvirkščiai- LEDus pastačiau kita kryptim ir jie kitaip užsidega (softe teko invertuoti). Kaip konstruktorius pradedančiajam tinkamas, tačiau reikia žmogaus kuris turi kantrybę- lituoti ore tuos LEDus tikrai reikia nervų. Dabar mano nervai pašliję (nuo buitinio triukšmo), tai teko lituoti net dvi dienas.

LED 4x4 cube AVR atmega

Kai viską sulitavau, pakuičiau savo lobynus. Deja nei vienos “arduino” PCB neturiu, o kur turiu nesusiderina pinais su šituo rinkinuku. Kad reikia originalaus arduino rodo debilna 0,1″ jungtis pastumpta per pusę žingsnio.
Softas pridedamas prie konstruktoriau irgi ne fontanai… ypač patiko ši optimizacija:

if(value > 19) return;
if(charge != LOW && charge != HIGH) return;
if(charge == LOW)
{
switch (value)
{
case 0: HC_595_Temp &=~_BV(15); break;
case 1: HC_595_Temp &=~_BV(14); break;
case 2: HC_595_Temp &=~_BV(13); break;
case 3: HC_595_Temp &=~_BV(12); break;
case 4: HC_595_Temp &=~_BV(11); break;
case 5: HC_595_Temp &=~_BV(10); break;
case 6: HC_595_Temp &=~_BV(9); break;
case 7: HC_595_Temp &=~_BV(8); break;
case 8: HC_595_Temp &=~_BV(7); break;
case 9: HC_595_Temp &=~_BV(6); break;
case 10: HC_595_Temp &=~_BV(5); break;
case 11: HC_595_Temp &=~_BV(4); break;
case 12: HC_595_Temp &=~_BV(3); break;
case 13: HC_595_Temp &=~_BV(2); break;
case 14: HC_595_Temp &=~_BV(1); break;
case 15: HC_595_Temp &=~_BV(0); break;
case 16: digitalWrite(LED_Pin16,LOW); break;
case 17: digitalWrite(LED_Pin17,LOW); break;
...

ir panašiai. Iš esmės kiniškam softe kiekvienas LED aprašytas atskirai ir daromas 16×4 ciklas užpildyti tuos aštuonis baitus informacijos reikalingus displėjui. Ir dar visokio monstriško softo. Ką jau pasakyti, kad “raštai” surašyti į paprastą masyvą. Nutariau nesikankinti ir pasirašyti savo softą grynam C.
Mano variantas kiek paprastesnis ir kartu sudėtingesnis jei reikia suprogramuoti animaciją. Animacija saugoma baituose. Po du baitus vienam sluoksniui. Kiekvienas bitas atitinka vieną LED. Pati animacija saugoma progmem.
Visas softas sukasi per pertraukimą, pati serial out procedūra klasikinė, netikrinau ar tikrai reikalingos visos komandos (kad ir priverstinis CLK LOW įjungimas po ciklo). Tačiau viskas veikia.

4×4 LED Cube ATMEGA source kodas ir sukompiliuotas hex.

Dar vienas bambesys- dabar jau harwarėje. Kinai pataupė balastinius rezistorius. Suprojektavo tik po vieną rezistorių visam sluoksniui (nors į rinkinuką įdėjo daugiau rezistorių), todėl kai dega visas sluoksnis, LEDai dega silpniau nei tada, kai dega vos keli LEDukai.

LED 4x4 cube AVR atmega
Kairėje kaip padarė kinai, dešinėje kaip daryti geriau. Aišku dešinė schema irgi ne pyragai- viso sluoksnio LEDai teoriškai duoda sakysim 16x20mA=0.32A. O tiek tikrai neina per ATMEGOS vieną koją… ko pasekoje mikroschema dirba nekorektiškam režime. Gerai, kad ji tokia “fool proof” ir veikia, o ne susvyla. Šiaip, kam tada iš viso varginosi su tais rezistoriais… O jei norisi daryti teisingai, čia reikia pakabinti tranzistorių su leistina srove 0,5A ar daugiau ir viskas šviestu tolygiai. Pačios 74HC mikroschemos dirba daugmaž normaliu režimu, nes veikimo metu viena koja “draivina” tik vieną diodą.

Atari 800XL remontas

Dėl statybų nieko gero ir nedarau. Bet vasaros metu nusipirkau seną Atari 800XL kompiuterį ir diskasukį prie jo. Šiaip, pirkau tik diskasukį, nes pats kompiuteris neveikė- nepraeidavo RAM testas (ir rodos ROM), mirgėjo keli simboliai ant ekrano. Visi defektuotos atminties požymiai. Rodos problema paprasta ir išsprendžiama, nes kitą Atarį kompiuterį jau suremontavau.
Padarius skrodimą, paaiškėjo, kad kompiuteris tobulintas vietinių meistrelių- išplėsta atmintis iki 320kb, padarytas OS versijų perjungimas. Patobulinimas padarytas su keliom logikos mikroschemos (nuskusti pavadinimai) ir su RAM čipų “buterbrodais” (kai ant vieno čipo viršaus prilituojamas kitas čipas ir atlenkiamos kojos). Viskas buvo labai chaotiškai ir rusiškai padaryta, todėl nusprendžiau pašalinti visus “upgreidus” ir pradžioje kompiuteriuką atstatyti iki gamyklinės versijos.

Atari 800 xl repair
Continue reading →