2015 m. lapkričio 26 d., ketvirtadienis

Atnaujinimas

Sveiki :),
Nors savo blogo nepamiršau, tačiau seniai čia beparašiau. Priežasčių buvo daug, dvi pagrindinės tai laiko stoka ir tai, kad vis nepabaigiu jokių projektų pilnai. Šiandien kalbėdamas su viena drauge apie jos blogą, supratau, kad mano problema ir yra noras pilnai pabaigti projektus prieš juos publikuojant. Kadangi šie projektai kartais tęsiasi daugiau nei metus laiko, dažniausiai pasimiršta kaip viskas prasidėjo, ir yra labai sunku tai aprašyti.

Taigi nuo šiandien bandysiu atnaujinti šį blogą, ir rašyti dažniau, bet mažesnius įrašus.

Kol kas noriu aprašyti keletą projektų prie kurių dirbu.

1. Programuojama DC apkrova.

Iš esmės apkrova testuojant įvairius maitinimo šaltinius, privalumas prieš paprastus rezistorius ar kaitrines lemputes, tas, kad palaikoma nustatyta srovė ar galingumas, nepriklausomai nuo įtampos kritimo. Planuojama maksimali galia apie 300-400W.
Liko:
  • Parašyti programą mikrovaldikliui
  • Ištestuot ir sukalibruot
  • Surinkt į korpusą




2. Nešiojamas gitaros priešstiprintuvis, su integruota garso plokšte.
Iš esmės tai paprastas gitaros stiprintuvais su 1 FET + CM108 USB garso plokštės IC + LM4880 ausinių stiprintuvas + 3.7V 800mah Li-ion akumuliatorius. Kad būtu įdomiau, susigalvojau iššūkį - sutalpint viską į 6x4.5x1.7cm metalinę dėžutę nuo mėtinių pastilių. Gana sudėtinga užduotis, turint omeny, kad 6.3mm gitarinė jungtis užima vos ne trečdalį dėžutės :)
Reikia:
  • Pabaigti braižyti schemą ir PCB
  • Surinkt ir ištestuot
  • Sudėt viską į dėžutę
Nepabaigta schema

Tai tiek trumpai. Turiu dar ir daug kitų projektų (Reguliuojamas maitblokis, garso stiprintuvas, CNC staklės ir kiti...), tačiau jie kaip ir nukišti už dviejų minėtų, todėl manau greitai nebus įgyvendinti.

2015 m. vasario 18 d., trečiadienis

Litavimo sotelės modifikavimas

Prieš kelias savaites sugedo mano lituoklis, taigi reikėjo nusipirkti naują. Pirkti tokio pačio pigaus nesinorėjo, dėl jau ankščiau aprašytų problemų. Tačiau normalūs gana brangiai kainuoja, ir daugelis yra ne su termopora, o su RTD matavimo elementu. Pamąstęs, nusprendžiau tiesiog pasikeisti kaitinimo elementą turimam lituokliui. Nusipirkau ebay'juj patį pigiausia kaitinimo elementą, už 1.99$. Na ir neseniai jis atėjo.


Tačiau greitai supratau, kad šis elementas, taip pat su RTD, o ne su termopora. Geriau pagalvojus tai tapo nebe problema, reikėjo tik padaryti keletą modifikacijų schemoje. Išmatavau operacinio stiprintuvo išėjimo įtampą, kai termopora įkaitusi iki ~315C (panaudojau termoporą nuo multimetro) - apie 1.3V. Tada įdėjau naują kaitinimo elementą į lituoklį, ir padavęs 24V užkaitinau iki maždaug 320C, RTD varža prie tokios temperatūros - 150 omų, kambario temperatūroje - 50 omų. Tada pasinaudojus šiais duomenimis, omo dėsniu ir paprasta opamp'ų taisykle (Jeigu naudojamas grįžtamas ryšis, opamp'as visada stengsis keisti išėjimo įtampą taip, kad abiejų įėjimų įtampos būtų lygios, daug geriau paaiškinta čia.) paskaičiavau rezistorių vertes.

Schemos modifikavimas
Uždėtas naujas elementas.

Beliko sukalibruoti, tai padariau labai lengvai. Pastebėjau, kad su šiuo elementu, priešingai nei ankščiau, nebeplaukioja rodoma temperatūra. Be to beveik nėra to šuolio į priekį, ir užkaista žymiai greičiau. Seniau iki 320C užkaisdavo per 1:50, o rodydavo, kad per 22s, dabar iki 320C užkaista per 48s, o rodo, kad per 38s. Likau labai patenkintas!

2014 m. gruodžio 22 d., pirmadienis

Rotary encoders naudojimas

Egzistuoja toks dalykas kaip rotary encoders (Rotaciniai enkoderiai?). Lemona juos vadina skaitmeniniais potenciometrais, ir tame yra truputis tiesios. Jie panašūs į potenciometrus, ir turi 3 išvadus, tačiau veikia visiškai skirtingai. Enkoderiai, juos sukant, išduoda skaitmeninius signalus. Jie patogūs naudoti todėl, kad yra prasisukantys, t.y. į vieną puse galima sukti kiek nori. Taip pat juos labai patogu jungti prie mikrovaldiklio. Nusprendžiau su jais pažaisti, ir nusipirkau 10vnt iš ebay'jaus už maždaug 2.5$.



 Jungimas paprastas - vidurinė koja į GND, kitos dvi kojos - tai A ir B. Ant A ir B užkabinami pull-up rezistoriai. Dabar, jei pajungsime oscilografą prie A ir B kojų ir pasuksime, pamatysime tokį vaizdą.

Geltonas - A, Mėlynas -B

Kaip matote, gauname du vienodus signalus tik pasislinkusius. Jei enkoderį suksime į kitą pusę, signalas gausis toks pats, tik iš kitos pusės. T.y. jeigu dabar kai A leidžiasi B būna 0V, tai sukant į kitą pusę, kai leisis B bus 5V. Žinant šį principą, labai lengva parašyti programą.


Parsisiųsti. Principas toks pats. Padarytas falling pertraukimas ant vieno iš dviejų kojų (A arba B). Falling reiškia, kad suveikia kai lygis keičiasi iš aukšto į žemą. Tada tikrinama ar kita koja tuo metu buvo aukštam ar žemam lygyje, ir pagal tai sprendžiama, ar pasukta pagal, ar prieš laikrodžio rodyklę.
Problema ta, kad programa nuskaito tik 1/4 visų būsenų. Tačiau man tai tik privalumas, nes pasukus rankenėlę vieną kartą (sukant jaučiasi toks tarsi treškėjimas, vienas kartas - tai vienas "stepas"), pereinama per visas 4 būsenas. Todėl jei nuskaitinėjant visas būsenas, pasukus vieną kartą, poz vertė pasikeistų per 4 vienetus.

Kita problema yra ta, kad kaip ir mygtukuose, enkoderiuose persijungiant būsenai atsiranda triukšmas, ir mikrovaldiklis tai gali interpretuoti kaip keletą pasukimų. Todėl juos reikia taip sakant "debouncinti".
Šis procesas gali būti dviejų rūšių : programinis, arba hardwarinis. Aš dažniausiai renkuosi hardwarinį, nes programavimas yra mano silpnoji pusė. Tam aš pasinaudojau tokia schema :

Viską sujungiame ir bandome

Rezultatai
Išbandžiau ir galiu pasakyti, kad veikia labai sklandžiai, neperšoko nei vieno skaičiaus - man tikrai labai patiko. Manau, kad tikrai naudosiu juos projektams, kur reikia ką nors reguliuoti, pvz.: laboratorinis maitinimo šaltinis. Dar vienas geras dalykas kurio nepaminėjau - šie enkoderiai turi integruotus mygtukus. Galima paspausti pačia ašį. Nuo savo oscilografo nusižiūrėjau, kad labai patogu ant tų mygtukų padaryti skalės keitimą. Pvz. jei reikia tikslaus nustatymo, paspaudi mygtuką, ir pereinama į mV reguliavimą, paspaudi dar kartą - grįžtama į V.

2014 m. lapkričio 7 d., penktadienis

Pasižaidimas su MCP4921

Vis nesugebu pabaigti pradėtų projektų, mokslai spaudžia, tai nelabai lieka laiko parašyti į blogą. Planuoju gaminti programuojamą DC apkrovą, ir vienas iš jos komponentų yra DAC'as. DAC - Digital to Analog Conveter. Lietuviškai - skaitmeninio signalo į analoginį keitiklis. Šiam projektui pasirinkau Microchip sukurtą MCP4921 DAC mikroschemą. Tai 12 bitų, SPI interfeisą turintis DAC'as su išorine atramos įtampa.

Šiandien ją gavau, tai nusprendžiau truputį pažaisti. Kadangi pirkau SO8 korpuse teko pasidaryti SO į DIP adapterį. Pajungimas gana paprastas: maitinimas +5V, atraminė įtampa (pas mane tiesiog įtampos daliklis į 2.5V), ir trys signalo laidai (Data, clock, chip select). Dar yra toks LDAC pin'as, jei naudojamas buferis. Tokiu atveju nusiuntus duomenis jie bus patalpinti buferyje iki tol, kol į LDAC bus paduotas žemo lygio impulsas. Jeigu buferis nenaudojamas, LDAC reikia tiesiog prijungti į žemę. Tokiu atveju išėjime įtampa atsiras vos gavus duomenis.

Pajungimas, rezistoriai formuoja daliklį atraminei įtampai.
Mikroschemą pajungiau prie savadarbės plokštės su atmega1284p mikrovaldikliu ir Arduino bootloaderiu.
Iš kart sakau mano - programavimo žinios labai megėjiškos, tai nerekomenduoju remtis mano kodu :).

Kodas paprastas - įtampa įrašoma į kintamąjį vol, vėliau dauginama iš 4096 (Prisiminkite - tai 12bitų keitiklis), ir dalinama iš išmatuotos atraminės įtampos, mano atveju - 2.53V. Tada paimami pirmi (ar paskutiniai?, painiojuosi :) ) vol 8 bitai ir įrašomi į pirmą baitą. Antro baito atveju sudėtingiau - čia turi būti sudėti likę 4 iš 12 bitų bei dar 4 konfigūracijos bitai. Vėliau tie du baitai paeiliui išsiunčiami. Ką koks bitas reiškia žiūrėjau mikroschemos datasheet'e.
 

Na ir ką jūs manot? Puikiausiai veikia! Net nustebau :). 

Paklaida - 0.6mV. Visai neblogai turint omenyje, kad viskas pakabinta ant ilgų laidų, be kondensatorių, ir dar maitinimas iš USB. Oscilogramos patvirtina kad viskas veikia kaip turėtų.
1 kanalas - duomenys, 2 kanalas - chip select signalas

1 kanalas - duomenys, 2 kanalas - clock signalas

2014 m. spalio 19 d., sekmadienis

Savadarbė litavimo stotelė

Kiekvienas elektronikas ankščiau ar vėliau prieina etapą, kai paprasto lituoklio jau būna negana. Norisi stabilios, reguliuojamos, temperatūros, įvairių lituoklio antgalių, automatinio išsijungimo ir t.t. Tokiu atveju yra perkama litavimo stotelė, tačiau, jei normalesnės kokybės, jos būna gana brangios. Vienintelis liekantis dalykas yra pasigaminti pačiam. Taip ir nusprendžiau padaryti. Kaip ir daugelis lietuvių dariau pagal šitą saitą. Tik padariau keletą pakeitimų : operacinį stiprintuvą naudojau TLC272, nes toks pasitaikė po ranka :), paderinamą rezistorių dėjau 100K, o rezistorių šalia jo 33K, mosfetą panaudojau kažkokį TO-252 korpuse (svarbu būtu virš 30V ir 3A atlaikantis). Beje nors schemoje nebuvo pavaizduota, programoje numatyta vieta buzeriui, ant atmegos PB0 išvado.
Taip pat kadangi naudojau modifikuotą nešiojamojo kompiuterio maitinimo bloką, tai nedėjau diodų tiltelio ir elektrolitinių kondensatorių. Reguliatorių 7805 irgi dėjau ne ant plokštės o prisukau prie skardinio korpuso, nes jis nemažai kaista. PCB braižiau ir gaminau savo.

Valdymo PCB

Valdymo PCB, apačia

Indikatoriai su mygukais, ant atskiros plošktelės

Kita pusė
 Korpusas pagamintas iš seno CD skaitytuvo. Priekinė panelė, bei galas padaryti iš kompiuterio korpuso skardos.






Daugiausia vargo buvo su priekine panele, perdariau gal kokius 6 kartus, nes norėjau padaryti gražiai, o mygtukai buvo truputi per žemai. Užrašai suprojektuoti eagle programa, atspausdinti ant popieriaus ir dvipuse lipnia plėvele priklijuoti prie skardos. Skylutės mygtukams išdegintos lituokliu. O ant viršaus priklijuota skaidri plėvelė, kad nesitepliotų. Taip pat ant ekrano uždėtas tamsios plastmasės gabaliukas, kad geriau matytųsi skaičiai.






 

Lituoklio korpusas prijungtas prie žemės per 1M rezistorių, kad turėtų žemės potencialą, bet palietus ką nors po įtampa, tarkime fazę, nebūtų didelio pokšt!

Prieš viską sudedant

Užklijavau kojeles

Vos vos tilpo, matosi, kad net išlinkę




Lituoklį pirkau iš ebay'jaus. Tai kinietiška Hakko 936 lituoklio versija. Galingumas 50W. Mokėjau gal 6$. Taip pat pasiėmiau 10 vnt. skirtingu antgalių šiam lituoklui už 4$.


Galutinis rezultatas
Lituokliu nusivyliau, nes toks vaizdas, kad termopora yra labai arti kaitinimo elemento, todėl jis yra labai inertiškas, parodymai labai plaukiojo. Įjungus užkaista pakanamai greitai, tik gaila negali tiksliai žinoti kada, dėl minėto efekto. Iki 320C lituoklis užkaista per 1:50, tačiau rodo kad per 22s.  Išbandžiau daug firmware versijų, ir pasilikau su  Firmw 4.0b, su kuria plaukiojimas buvo mažiausias. Taip pat toje versijoje yra programinis kalibravimas, galima nustatyti miego laiką ir t.t. Šiaip stotele visai džiaugiuosi, reikės tik gal kada lituoklį pasikeist.

Prikabinu plokštės brėžinius ir schemą, programa nemano, taigi negaliu pridėt, jei reikia parašykit emailą, atsiūsiu. Atsisiūsti

P.S. Plokštės braižytos neatsižvelgiant į reikalavimus, sau, todėl gali būti klaidų.

2014 m. rugsėjo 24 d., trečiadienis

Intel Galileo

Viskas prasidėjo, prieš maždaug tris mėnesius, kai elektronika.lt portale užtikau šią temą. Microsoft'as vykdė tokią akciją - nemokamai dalino Intel Galileo plokštes. Tereikėjo užsiregistruoti, parašyti kokios turi patirties programavime, ir aprašyti keletą idėjų, ką tu nuveiktum su Intel Galileo.
Nusprendžiau ir aš pabandyti laimę, užsiregistravau. Kiek prisimenu parašiau dvi idėjas: 1. Namų automatizavimo sistema 2. EEG įrenginys, sekantis akių judėjimą miegant, ir pagal tai nustatantis ar subjektas sapnuoja, na, o kadangi dabar ant bangos IoT, tai prirašiau dar, kad jungiamas prie interneto :). Man atrašė, kad duos žinoti jeigu turės daugiau plokščių, nes kaip supratau tuo metu jau nebedalino. Na pagalvojau, kad nieko neišėjo, ir kažkaip apie tai pamiršau.

O štai po mėnesio gavau el.laišką, kad buvau buvau atrinktas, ir man nusprendė atsiųsti šią plokštę. Tai man buvo didžiulė staigmena, nes seniai buvau praradęs viltį :). Dar po savaitės gavau laišką, kad siunta išsiųsta, ir fedex siuntos sekimo kodą. Po 10d. siunta pasiekė Lietuvą, ir pastrigo muitinėje. Siunta buvo deklaruota 150$ vertės, taigi reikėtų sumokėti nemažai mokesčių, todėl jau buvau nusprendęs atsisakyti, kai su manimi susisieks. Tačiau gavus el. laišką iš fedex, paaiškėjo, kad visus muitus, mokesčius ir t.t. padengs siuntėjas, t.y Microsoft, ir man tereikia pasirašyti išmuitinimo sutartį! Dar karta labai apsidžiaugiau...

Ir štai šiandien, išgirdau skambutį į duris, o už durų stovėjo kurjeris. Pasirašiau ir man atiteko štai ši dėžė.


Atplėšiam ir pradžioje randame sveikinimą nuo Microsoft.




Žiūrim ką turim toliau...


O čia ir prasidėjo staigmenos :).








Viduje randame USB tinklo plokštę, patch kabelį, 16Gb 10 klasės microSD kortelę (vėliau paaiškėjo, kad joje įrašyta Windows OS Intel Galileo plokštei), ir 3mm žalią šviesos diodą :). Likau maloniai nustebintas, nes nesitikėjau kažko, apart Intel Galileo. Aišku galbūt reikėjo pirmiausia perskaityti tą atviruką :).

Na, o dabar prie pagrindinio objekto - Intel Galileo. Atidarome dėžutę.





Viduje randame 5V 3A adapterį, krūvą kištukų įvairioms šalims, na ir žinoma patį Intel Galileo. Iš tikrųjų man labai patiko pačios dėžutės dizainas - tikrai puikiai pasidarbuota.

Pasirodo yra ne vienas būdas jį programuoti. Galima rašyti programas Arduino aplinkoje ir įkelti į flash atmintį. Galima į SD kortelę įsirašyti Linux OS, ir ten rašyti programas, kad ir Python kalba. Arba, kaip dariau šiuo atveju, įdėti SD kortelę su windows OS, ir rašyti kodą Visual Studio programa.

Tiesa sakant nelabai aš dar spėjau su ja susipažinti, bet bent šviesos diodą pamirksinau :)