Pradžia kaip visada paprasta – tai nuo šio tai nuo to vis lieka kokių detalių, tai koks projektukas nepasiteisina ar tampa nebeaktualus ir lieka dar kas nors, tai patestuot veikimą reikia. Taip ir čia – liko vienas ampermetras, keletas RTC schemų, o pratestuoti reikia LMZ23605 iš Texas Instruments (DC-DC maitinimo šaltinis) ir µCPU mažame MLF korpuse. Idėja sugeneruota – sumontuoti viską kaip analoginį laikrodį. Toliau, kaip visada, užduoties sudėtinginimas. Chm, tikrai yra toks žodis ? Gal pasunkinimas :D? Taigi užduotis:
- Laikrodis turi rodyti valandas, minutes ir sekundes.
- Rodymas turi vykti analoginiuose rodykliniuose indikatoriuose.
- Laikas turi būti tikslus, t.y., neskubėti ir neatsilikti, nepriklausomai nuo rodyklinių indikatorių tikslumo.
- Maitinimas – pastoviam naudojimui iš 230VAC, laikinam iš baterijos/akumuliatoriaus.
- Laikas turi būti skaičiuojamas atjungus maitinimą.
Tai ir einam papunkčiui. Kad laikrodis rodytų valandas, minutes ir sekundes kaip ir natūralu, nors galima apseiti ir be sekundžių. Rodykliniai indikatoriai – paprasti, kinietiško „Hopesun” PM-2. Lietuvoje juos stumdo „Lemona”. Atrodo va taip vat:
Nieko labai prašmatnaus, bet ir ne visai blogai. Tinka iš esmės bet koks, bet, kad mažiau būtų skaičiavimo ir vartotų mažiausiai srovės – čiupau DC ampermetrą su 50 µA pilno atlenkimo srove.
Laiko tikslumas yra geras dalykas, idealiu atveju reiktų sinchronizuoti su radio laiko sistema, arba GPS, bet paskui pagalvojau, kad čia būtų šaudymas į žvirblius iš patrankos, nes yra kitas puikus, ganėtinai tikslus ir labai seniai naudojamas būdas laiko skaičiavimui – RTC mikroschemos. Tuo dar išsispręstų ir laiko skaičiavimas atjungus maitinimą. Ankščiau, kitam projektukui (ok, ok, pasakysiu – Nixie laikrodžiui) buvau pasirinkęs DS3231SN mikroschemą, puikios galimybės už mažą kainą ir duomenų siuntimu per I²C, o dar ir moduliukai iš eBay, 5 vnt už kelis €. Atėjo jie jau seniai, tik nebuvo kaip išbandyt.
Maitinimas iš išorinio maitinimo blokelio arba baterijų/akumuliatorių, perjungimas turi būti automatiškas, bet tai realizuojama nesunkiai ir matysis schemoje. Taigi, schema:
Įtariu paveiksliuką norėsis pasididinti :). Pradedam. Maitinimo lizdukas baterijos pajungimui – dviejų kontaktų smeigiamas lizdas, anksčiau buvęs trumpikliu ant kompiuterio motininės plokštės. Šalia, kilmingas Wurth Electronics maitinimo lizdukas. Nu tikrai geras daikčiukas. Jis ir daro automatinį maitinimo nuo baterijos atjungimą. Kol kištukas neįkištas – 2 ir 3 kontaktai susijungę ir perduoda maitinimą iš baterijos lizdo, o kai kištukas įkištas, vietoj baterijos minuso lieka prijungtas kištuko minusas. Toliau, 5V maitinimo šaltinis. Kadangi mūsų prietaisas „srovinis”, t.y. parodymai priklauso nuo srovės, o ji, savo ruožtu, priklauso nuo maitinimo įtampos – čia reiktų stabilaus šaltinio. Arba galima būtų eliminuoti pokyčius programiškai (gal kada nors). Kol kas užtenka LMZ23605TZ arba jo giminaičių. Veikia stabiliai ir dar visokio gėrio pilnas. Toliau – pagrindinis darbinis arkliukas, ATMEGA328P, MLF korpuse, kurį ir norėjau išbandyti. Į kairę nuo Atmegos – perkrovimo (Reset) schema, mygtukas S1, rezistorius R16 ir diodas D6. Paspaudus mygtuką žemas lygis atitinkamame kontakte perkrauna procesorių. Toliau – kontaktai mygtukus, kurį paspaudus rodys temperatūrą (RTC čipas turi sensoriuką). Rezistorius R10 – pulldown’as. Tas pats ir su kalibravimo mygtuku S2. Jį paspaudus procesorius sukomanduoja rodyklėms maksimaliai atsilenkti, taip galima sureguliuoti maksimalaus atsilenkimo padėtį rezistoriais R6, R7 ir R8. Pastovūs rezistoriai R3, R4 ir R5 jau sukuria apie 54,94 µA srovę, o patenciometrais galima ją pakeisti iki 49,50 µA, taigi, turime maksimalaus atlenkimo reguliavimo ribas – 49,50..54,94 µA.
Lyrinis nukrypimas apie skaičiavimus, kadangi galima naudoti praktiškai bet kokius indikatorius, kurių žinoma maksimali atlenkimo srovė. Čia mums padės Omo dėsnis. Taigi, pirmiausia apsisprendžiame, kokia įtampa viskas bus maitinama. Mano atveju ta pačia įtampą valgo ir procesoriukas, taigi, 5V. Tuomet, žinant indikatoriaus maksimalaus atlenkimo srovę galima paskaičiuoti varžą, R[Ω] = U[V] /I[A].
R = 5V / 50 µA = 5V / 0,00005 A = 100000 Ω = 100 kΩ.
Taigi, dar paliekam „vietos” pareguliavimui ir pasirenkam artimiausias vertes pagal gaminamus standartus.
JP1 – programavimo/diagnostinė jungtis (C6 jai padeda padaryti procesoriaus perkrovimą). Dar toje pusėje yra kontaktas pažymėtas „touch”. Čia turėtų būti jau seniau nagrinėtas talpuminis lietimo sensorius, su jam priklausančiais C1 ir R11. Pagal idėją, palietus turėtų uždegti rodyklinių indikatorių pašvietimą, tam panaudojant tris (arba vieną, o kiti darytų ką nors kitą) atskirus tranzistorius Q1, Q2 ir Q6 (be srovės ribojimo !). Ir paskutinė detalė – RTC schema, iš kurios nuskaitom laiką.
PCB, kaip visada, pagaminta pas kinus, iš seeedstudio.com ir atrodo va taip:
Jei kam reikia plikų PCB, kreipkitės, turiu dar 5 vnt. Sukompiliuotą failiuką įdėsiu straipsnelio pabaigoje, kartu su schema.
Originali ampermetrų skalė netinkama, bet po svaičiojimų apie naujos skalės gamybą lazeriuojant, šilkografuojant ir bandant pagaminti dar keletu mazochistinių būdų, nuėjau lengviausiu keliu – užsakiau pagaminti lipdukus su man tinkama skale. Ją pasibraižiau su AutoCADu, nors skalėms iš tikrųjų yra specializuotas softas.
Toliau sudėtingiausia dalis – korpusas. Iš pradžių galvojau padaryti tokį „old school” vaizdelį, montuojant visą elektroniką į seną, rusišką, ebonitinį korpusą, gal net su kokiom rankenėlėm ar užrašais, pavyzdžiui:
Bet tokios dėžutės neturiu, o laikas eina… Šiaip, aišku aš neskubu, tai nusitempė tie korpuso parinkimai tikrai ilgam laikui, tuo labiau, kad darbiniai projektai visokie visą laiką suvalgo. Bet darbiniai projektai man pasufleriavo ir sprendimą – korpusą iš aliuminio kompozito. Sumontavimas toks truputį sunkokas, bet neskubant viskas sutilpo ir rezultatas gavosi toks:
Toliau – skalės apšvietimas. Čia jau teko paprasčiausiai priklijuoti SMD LEDus (OSM5DLS1C1A). Vaizdas štai toks:
Bandymai parodė, kad pašvietimas gražus ir tolygus. Spalva – šiltai balta. O štai kaip tai atrodo (dieną, maksimalus šviesumas):
Darbinė srovė be apšvietimo prie 9,302V – 26,16 mA (0,2433 W), su apšvietimu 94,00 mA prie 8,95V (0,8413 W). Ir trumpas video kaip viskas veikia:
Čia yra viskas, ko reikia Eagle ir AutoCAD brėžiniai. Programa gali būti developinama, tai naujausią sukompiliuotą HEXą čia rasite atskirai.
Programos versija – V1:
- Laikas nuskaitomas iš RTC ir parodomas indikatorių skalėse.
- Paspaudus mygtuką (užtrumpinus SV4, bet mygtuko nedėjau) – minučių indikatoriuje būtų rodoma RTC temperatūra.
- Jautrus lietimui korpusas, palietus lėtai uždegami pašvietimo LEDai, laikomi įjungti kol liečiamas korpusas, ir lėtai užgesinami nebeliečiant korpuso.
- Visų trijų indikatorių LEDai (6 vnt.) valdomi trimis atskirais kanalais
Tolimesnių tobulinimų idėjos:
- Žadintuvas, taimeris arba priminimas su garsu.
- Mygtukai laiko nustatymui ir pirmo punkto sureguliavimui.
- Praplėsti maksimalaus atlenkimo reguliavimo ribą (45-60 μA). Šiaip nebūtina, bet vienam iš 6 ampermetrų prisireikė daugiau srovės pilnam atlenkimui. Daugiau gal tokio užsispyrusio ir nepasitaikys…
- RGB LEDai (tam ir turim tris kanalus valdymui)
Posted in:
Arduino, Elektronika
by
Dainius /
No Comments