Nuotolinis valdymas, tęsinys – posūkiai, siųstuvas 2024.07.16 at 09:15

Tęsiam projektuką, kurio pradžia susijusi su straipsneliais:

HT12E – HT12D bandymų plokštė – nuotolinio valdymo pradžia

HT12E enkoderio duomenų srauto savybių tyrimas

HT12E enkoderio emuliatorius

Jau po truputį galima papsakoti apie viso šito reikalo tikslą – reikia be laidų valdyti posūkius, taip taip, mašinos posūkius. Kas per mašina ir kodėl reikia – vėliau, kad būtų intrigėlė 😁. Ir pagaliau pabaigta finalinė siųstuvo versija, išbandyta ir pasitvirtinom teisingą veikimą. Paskutine tapo trečioji versija, taigi, pabandykime paanalizuoti klaidų ir tobulinimo kelią.

Pati pirmoji, V1.0 versija, įkūnijanti pačią idėją. O idėja tokia – prie H1 prijungiama posūkių valdymo rankenėlė, kuri iš 2 kontakto permetą pliusą į 1 arba 3, priklausomai nuo to, į kurią pusę paspausta. R1 ir R3 – pull-down rezistoriai, kad valdikliukas Attiny85 neprisigaudytų trukdžių. Toliau visą „protingą” darbą daro valdikliukas. Pagal tai, į kurį kontaktą (PB1 ar PB2) ateina signalas, valdiklis suformuoja atitinkamą baitų paketą ir supučia jį iš PB3 kontakto į siųstuvo TXM433LR antrą kontaktą (duomenų įėjimas), o siųstuvas viską ištransliuoja per ANT-433-USP anteną. Prieš tai nepamirštame nustatyti loginį 1 PB4 kontakte ir tuo pačiu siųstuvo PDN kontakte, kad siųstuvas „prabustų”. Tas padaryta elektros energijos taupymo sumetimais, kad bent jau siųstuvas neveiktų visą laiką, o tik tada, kai reikia parodyti posūkio signalą, nes maitinimas nuo CR2450 3V baterijos, iš kurios galima tikėtis tik 600 mAh. Viršutinė schemos dalis, U4 su C1 ir C2 – aukštinantis DC/DC mikrokonverteris XCL101C301ER-G, sugebantis iš 0,7-5,5 V įėjimo padaryti stabilią nustatytą įtampą, nuo 1,8 V iki 5.0 V (±2.0%) su 0,1 V žingsniu. Maksimali srovė 100 mA, mums tikrai užtenka. Kam jo reikia ? Ogi tam, kad baterijai išsikraunant, schema vis dar gautų skaniai ir sočiai valgyti 🙂. Pabandžiau, veikia stabiliai iki 0,8 V, taigi, baterijoje esančią energiją išnaudos kuo pilniausiai. Toliau jungiklis H2 ir baterija U3 (nežinau, kodėl būtent U). J1 trumpiklis arba 0 Ω rezistorius skirtas atjungti likusią schemos dalį, kol vyksta Attiny85 programavimas per CN1 jungtį, nes programatorius šeria 5 V, o siųstuvas valgo maksimum 3,6 V. Schema, sakyčiau griozdiška, bet kažkaip veikia, toliau bandome optimizuoti. Skirtingai nuo visų elektronikos gamintojų, man žodis „optimizuoti” nereiškia „atpiginti”, todėl antroji schemos versija gavosi tokia:

Pagrindiniai komponentai liko tokie patys, todėl kalbėsime tik apie pasikeitimus. Pirmas dalykas – schema perbraižyta plačiau, lengviau suprasti, kas čia prie ko prijungta ir kodėl. Perprojektuota maitinimo šaltinio veikimo logika, kas leido pašalinti mechaninį įjungimo tumbleriuką. Mintis tokia – baterijos pliusas, kaip ir ankščiau, ateina į posūkių rankenėlės kontaktus ir daugiau nieko neužmaitina. Įjungus posūkį, pliusas nubėga į trijų diodų mikroschemą ir patenka į tranzistoriaus Q1 užtūrą, tranzistorius atsidaro ir prijungia minusą prie visos schemos. Kam trys diodai ? Čia toks, vadinamas, loginis ARBA elementas. Loginis ARBA – tai kai bent viename įėjime yra loginis 1, išėjime irgi yra loginis 1. Taigi, kai maitinimas ateina nuo kurio nors posūkio (į kairę arba į dešinę), jis per savo diodą užmaitina tranzistorių, pasileidžia visa schema, tada valdikliukas iš PB4 paduoda pliusą, kad laikyti tranzistorių atidarytą tiek, kiek jam reikia. O kiek reikia ? Čia mintis tokia – kad posūkis mirksėtų, valdiklis/siųstuvas turi periodiškai siųsti įjungimo ir išjungimo komandas, jeigu siuntimas išjungiamas, tarkim, po komandos uždegti posūkio indikatorių, tuomet jis ir lieka degti, nes nebelieka komandos jį išjungti. Todėl atjungus posūkių rankenėlę pats valdikliukas dar palaiko schemą veikiančią, kad spėtų pabaigti siųsti išjungimo komandą ir tada jau PB4 nustatomas į loginį 0 ir viskas atsijungia iki sekančio posūkių rankenėlės įjungimo. Truputį pakoreguota ir Attiny programa, kad veiktų pagal naująją schemą. Toliau smulkmenos – pridėti trumpikliai SJ2 ir SJ3, skirti tam pačiam reikalui, programavimo metu atjungti likusią schemos dalį. Pamiršau – pirmoje versijoje J2, o antroje SJ1 naudojami DC/DC apėjimui, užtrumpinus maitinimas eina tiesiogiai iš baterijos ir DC/DC keitiklis nedalyvauja parade. Bandymu metu maitinimo schema veikė keistai, matyt atjunginėti minusą tuo trazistoriumi nebuvo gera mintis, gal koks „ground loop’as” gaunasi, gal dar kažkas, bet DC/DC keitikliui nepatiko taip veikti, todėl pradėta projektuoti trečioji schemos versija.

Ir vėl, pagrindinė mintis liko ta pati – mažinti nereikalingų komponentų kiekį, mažinti elektros suvartojimą, viską optimizuoti. Čia pagrindinis pasikeitimas yra maitinimo grandinėje. Paanalizuokime. Baterijos U2 pliusas sujungtas su posūkių rankenėle ir mikroschema U5 (TCK106AF), čia toks „protingas” tranzistorius, arba skaitmeninis jungiklis arba… Vienu žodžiu padavus jam pliusą jis pats teisingai sujungia savo Vin su Vout ir užmaitina prie Vout prijungtą schemos dalį. Taigi, kol posūkių rankenėlė atjungta, niekas neveikia, nėra jokio srovės vartojimo – energetinio taupumo tikslas pasiektas, nes energija naudojama tik tada, kai reikia rodyti posūkį. Sujungus rankenėlę, pliusas nubėga pas vieną iš trijų diodų (tas pats loginis ARBA), pasileidžia DC/DC keitiklis ir užmaitina visą schemą (valdikliuką ir siųstuvą). Valdikliukas įsijungia, įmeta loginį 1 į PB4, tuo paleisdamas tą U5 jungiklį, pasitikrina kuris posūkis įjungtas (kontaktai PB1 arba PB2) ir atitinkamus duomenis supučią siųstuvui. Kai posūkis atjungiamas, valdiklis vis dar laiko PB4 išėjime aukštą lygį, kad veiktų jungiklis U5, per kurį maitinimas patenka į vieną iš diodų, tada į DC/DC keitiklį ir visa schema veikia, kol valdiklis išsiunčia paskutines komandas, o tada nustato loginį 0 į PB4, tuo išjungdamas jungiklį U5. Kadangi tuo metu tai būna vienintelis dalykas, laikantis schemą įjungtą – viskas išsijungia iki sekančio posūkio įjungimo. Šitoje vietoje dvejojau, nes posūkių rankenėlė perduoda tiesioginę baterijos įtampą ir kaip ji keisis baterijai išsikraunant ? Maitinimas po DC/DC vis dar būtų 3V, bet baterija tuo matu jau gal bus tik 2V. Čia teko paknisti Attiny85 aprašymą, ir radau tokį dalyką:

\[ U_{AukštasLygis}\geqslant0,6*U_{Maitinimo}\geqslant0,6*3 \geqslant 1,8V\]
\[ U_{ŽemasLygis}\leqslant0,3*U_{Maitinimo}\leqslant0,3*3 \leqslant 0,9V\]

Taigi, įtampos nuo 1,8 V ir daugiau bus tikrai fiksuojamos kaip loginis 1, įtampos žemiau 0,9 V bus tikrai fiksuojamos kaip loginis 0. Taigi, baterija gali išsikrauti net iki 1,8 V, vis tiek schema veiks teisingai, man tokie įtampų lygiai priimtini 🙂.

Schema ir montažinė plokštė braižyta EasyEDA programoje. Kodėl ? Paprastoms schemoms man ji visai patiko. Yra visokių niuansų ar nesklandumų, bet ne kritiški, todėl šalia Autodesk Eagle (gaila, kad ne Cadsoft) naudoju ir EasyEDA.

Plokštė daryta pagal posūkių rankenėlę, kad tilptų viduje. Keletas 3D vaizdelių:

Ir jau pagaminta plokštė:

Reiks dar įkelti EasyEDA projekto failiukus ir valdiklio programą.

O toliau – pabaigti ir aprašyti imtuvo projektą (prototipas irgi jau pagamintas ir išbandytas). Paskutinei, trečiajai, schemos versijai, dar įmanoma padaryti šiokį toki atpiginimą – kadangi per Attiny85 IO kontaktus gali tekėti 40 mA srovė, galima išmesti U5 ir valdyti viską vietoje jo, PB4 tikrai išveš tokias sroves – visa schema, siuntimo metu, vartoja 4,9 mA, t. y. ~8 kartus mažiau. Tam tereikia PB4 prijungti tiesiogiai prie D1 diodų 4 kontakto.

Leave a Reply

*