Kazalo:

Sončna svetilka za ponovno polnjenje, ki jo poganja XOD: 9 korakov (s slikami)
Sončna svetilka za ponovno polnjenje, ki jo poganja XOD: 9 korakov (s slikami)

Video: Sončna svetilka za ponovno polnjenje, ki jo poganja XOD: 9 korakov (s slikami)

Video: Sončna svetilka za ponovno polnjenje, ki jo poganja XOD: 9 korakov (s slikami)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Sončna svetilka za ponovno polnjenje z XOD napajanjem
Sončna svetilka za ponovno polnjenje z XOD napajanjem

V večini trgovin z blagom in strojno opremo za dom so na voljo poceni sončne svetilke za vrt/sprehajalne poti. Toda kot pravi stari rek, običajno dobiš tisto, za kar plačaš. Običajni polnilni in osvetljevalni tokokrogi, ki jih uporabljajo, so preprosti in poceni, vendar svetlobna moč, ki jo dobite, ni nič drugega kot impresivna (in komaj dovolj, da vsakdo, ki uporablja vašo pot, vidi, kam gredo!)

To je moj poskus oblikovanja modula za razsvetljavo zunaj omrežja, ki je bistvena izboljšava, čeprav je še vedno relativno poceni za izdelavo. Tako, da mu daš nekaj "možganov". XOD.io je nov IDE, združljiv z vgrajeno razvojno platformo Arduino, kjer lahko grafično "pišete" kodo. Okolje prenaša vašo grafično skico v sodoben C ++, ki je izjemno učinkovit pri ustvarjanju kompaktne kode in ustvarja vir, ki je popolnoma združljiv z osnovnim Arduino IDE, ne da bi bile potrebne dodatne zunanje odvisnosti. Tako se lahko za opravljanje kompleksnih nalog uporabijo tudi majhni in poceni mikrokrmilniki z omejenimi programskimi in podatkovnimi viri.

Ta projekt prikazuje, kako lahko dva mikrokontrolerja ATTiny85, združljiva z Arduino, uporabljata za upravljanje zahtev glede moči svetilke. Prvi procesor obravnava podatke o okolju zaznavanja iz zunanje strojne opreme, drugi pa poskuša čez dan pobrati največ energije sonca, nato pa nadzira osvetlitev LED z veliko močjo, ko se akumulator ponoči izprazni. Drugi procesor opravlja svoje delo s kompaktno izvedbo upravljanja "mehke logike". Programska oprema za oba čipa je bila razvita izključno v okolju XOD.

1. korak: Potrebni materiali

Arduino IDE, najnovejša različica, z razširitvijo ATTinyCore, nameščeno iz upravitelja "Boards"

Sparkfun USBTinyISP ATTiny programer, 11801 ali enakovredna stran izdelka Sparkfun

Pololu nastavljiv nizkonapetostni ojačevalni pretvornik z vhodom za zaustavitev, stran U1V11A ali enakovreden izdelek Pololu

Bela ali RGB LED z veliko močjo s hladilnikom, skupno anodo, Adafruit 2524 ali enakovredna stran izdelka Adafruit

Mikročip ATTiny85 v 8-polnem DIP paketu, stran z 2 Mouser

8 -polne DIP IC vtičnice, 2

Kondenzator za shranjevanje v razsutem stanju, 16 v 220 uF

Izhodni kondenzator, 6,3v 47uF

Upori, ki omejujejo tok, 50 ohmov 1/4 vata

i2c vlečni upori, 4,7 k, 2

Panelni delilniški upori, 1/4 vati, 100 k, 470 k

Upor toka, 10 ohm ½ vata 1% tolerance

Bypass kondenzatorji, 0,1uF keramika, 2

2 3,7 v 100 mAh litij-ionska baterija za ponovno polnjenje, PKCELL LP401 ali enakovredna

Vhodni priključek za vtič za cev, 1

Mini priključne plošče 3”x3” plošča za spajkanje in tanka polnovredna žica za povezovanje

Za testiranje bodo skoraj zagotovo potrebni osciloskop, multimeter in napajalnik

2. korak: Nastavitev okolja

Nastavitev okolja
Nastavitev okolja

Okolje XOD ne podpira standardnih procesorjev serije ATTiny, vendar je z uporabo nekaj knjižnic tretjih oseb iz vesolja Arduino preprosto dodati podporo za to serijo AVR-jev. Prvi korak je namestitev knjižnice “ATTinyCore” iz spustnega menija “Tools → Board → Board Manager” Arduino IDE. Prepričajte se, da so nastavitve, prikazane na priloženi sliki, pravilne - ne pozabite, da morate pred nalaganjem kode pritisniti "Burn bootloader", da spremenite napetost rjavenja in nastavite taktne hitrosti!

Izvorna koda za to knjižnico je na voljo na:

Druga koristna knjižnica iz skladišča je »FixedPoints«, ki je v času prevajanja izvedba matematike fiksnih točk za procesorje, ki jih podpira Arduino. ATTiny ima omejen pomnilnik SRAM in programski pomnilnik, veliko pa pomaga pri krčenju končne velikosti skice pri uporabi 2 -bajtnega celega števila za splošno shranjevanje podatkov in ne tipa s plavajočo vejico, ki zahteva 4 bajte na AVR -ju. Prav tako je treba izboljšati hitrost izvajanja, saj ATTiny nima enote za strojno množenje, še manj strojne plavajoče točke!

Izvorna koda je na voljo na:

Vadnica o tem, kako ustvariti, prevesti in namestiti grafične skice XOD na: https://github.com/Pharap/FixedPointsArduino, bo v veliko pomoč pri razumevanju, kako so nastale vključene izvorne datoteke.

3. korak: Pregled oblikovanja

Pregled oblikovanja
Pregled oblikovanja
Pregled oblikovanja
Pregled oblikovanja

Na plošči sta dva procesorja ATTiny85 povezana prek vmesnika i2c in se skupaj uporabljata za upravljanje zaznavanja napetosti sončne celice, ki teče v baterijo iz ojačevalnega pretvornika, medtem ko je plošča osvetljena, napetosti baterije in baterije temperaturo.

Povečevalni pretvornik je modul, ki temelji na IC-ju Texas Instruments TPS6120 IC, ki lahko sprejme vhodno napetost že pri 0,5 voltov in jo poveča na 2 do 5 voltov. Jedro senzorja je sestavljeno iz več funkcionalnih blokov. Glavna ura začne teči takoj, ko se na vhodni pretvornik napaja iz vhoda sončne celice. S tem se skica začne izvajati in najprej je treba ugotoviti, ali je plošča dovolj osvetljena, da bateriji zagotavlja polnilni tok.

Napetost sončne celice prehaja skozi dva digitalna filtra, in če je nad določenim pragom, sistem ugotovi, da je plošča osvetljena, in vodi glavno uro v monitor trenutnega zaznavanja. To je analogno -digitalni pretvorniški kanal čipa, konfiguriran različno, ki zazna napetost na 10 -ohmskem 1% tolerančnem uporu, ki je zaporedno povezan med izhodom pretvornika ojačevalnika in vhodom baterije. Ko plošča ni osvetljena, ta ATTiny pošlje signal drugemu ATTinyju, da mu sporoči, naj spremlja moč LED namesto napajanja, izklopi ojačevalni pretvornik in izolira vhod, tako da baterija ne pošilja toka nazaj skozi ploščo..

Drugo jedro ATTiny izvaja LED krmilnik in sistem za spremljanje napolnjenosti baterije. Podatki o napetosti plošče, napetosti baterije in toku polnjenja baterije se pošljejo v to jedro za obdelavo prek omrežja z mehko logiko, ki poskuša ustvariti ustrezen signal PWM za uporabo na zatiču SHTDN in s tem nadzirati količino toka, poslanega v baterijo da ga napolnite, ko sveti-osnovna oblika sledenja največje moči (MPPT.) Prejema tudi signal iz jedra senzorja, ki mu pove, ali naj vklopi ali izklopi LED, odvisno od izhoda dneva jedra senzorja/ nočna japonka.

Ko je LED aktivna ponoči, ta ATTiny spremlja podatke o napetosti baterije, ki mu jih pošilja njegov prijatelj, in lastni senzor temperature na čipu, da dobi grobo oceno, koliko energije se potisne v LED (napetost baterije se zmanjša in temperatura čipa narašča s tokom, ki ga črpajo iz njegovih zatičev.) Omrežje z mehko logiko, povezano z LED PWM popravkom, poskuša presoditi, koliko energije baterije je še na voljo, in zmanjšati intenzivnost LED, ko se baterija izprazni.

4. korak: Ustvarjanje popravkov po meri iz knjižnice XOD Core

Ustvarjanje popravkov po meri iz knjižnice XOD Core
Ustvarjanje popravkov po meri iz knjižnice XOD Core
Ustvarjanje popravkov po meri iz knjižnice XOD Core
Ustvarjanje popravkov po meri iz knjižnice XOD Core

Za to zasnovo je bilo uporabljenih več vozlišč popravkov po meri, od katerih so nekatera zlahka sestavljena v celoti iz vključenih vozlišč XOD, druga pa v C ++.

Prvo od obeh vozlišč popravkov po meri na slikah je izvedba eksponentnega filtra drsečega povprečja. To je nizkoprepustni nizkoprepustni digitalni filter, ki se zaporedoma uporablja v skici, enkrat za filtriranje vhodne napetosti sončne celice za logično jedro in še enkrat za napajanje sprožilca, ki določa dolgoročno osvetlitev okolja. Oglejte si vnos Wikipedia o eksponentnem glajenju.

Struktura vozlišč na sliki je le neposreden grafični prikaz prenosne funkcije v članku, ki je skupaj povezana s povezavami od ustreznih vhodov do izhodov. Iz knjižnice je odloženo vozlišče, ki omogoča ustvarjanje povratne zanke (XOD vas bo opozoril, če ustvarite povratno zanko, ne da bi v zanko vstavili zamudo, kot je opisano v izvedbenem modelu XOD.) S temi podrobnostmi smo poskrbeli za obliž dobro deluje, preprosto je.

Drugo vozlišče popravkov po meri je variacija na zalogi flip-flopa, vključenega v XOD, ki se napaja s filtrirano napetostjo plošče. Zapre se visoko ali nizko, odvisno od tega, ali je vhodni signal nad ali pod določenim pragom. Odlivna vozlišča se uporabljajo za pretvorbo logičnih izhodnih vrednosti v podatkovni tip impulza za sprožitev flip flopa, saj stanje prehaja iz nizkega v visoko. Upajmo, da bi morala biti zasnova tega popravka nekoliko samoumevna s posnetka zaslona.

5. korak: Ustvarjanje popravkov po meri z uporabo C ++

Ustvarjanje popravkov po meri z uporabo C ++
Ustvarjanje popravkov po meri z uporabo C ++

Za posebne zahteve, kjer bi bila potrebna funkcionalnost vozlišča preveč zapletena, da bi jo bilo mogoče preprosto grafično prikazati, ali ki se opira na knjižnice Arduino, ki niso izvorne v okolju Arduino, XOD olajša pisanje kosov velikosti ugriza kodo, ki jo lahko nato integrirate v popravek, enako kot katero koli drugo uporabniško ustvarjeno ali založniško vozlišče. Če v meniju datoteke izberete »ustvari nov popravek«, ustvarite prazen list za delo, vhodna in izhodna vozlišča pa lahko povlečete iz razdelka »vozlišča« osnovne knjižnice. Nato lahko vlečete vozlišče "not-proved-in-xod" in po kliku odpre urejevalnik besedil, kjer je mogoče v C ++ implementirati zahtevano funkcionalnost. Tukaj je opisano, kako ravnati z notranjim stanjem in dostopati do vhodnih in izhodnih vrat iz kode C ++.

Kot primer izvajanja popravkov po meri v C ++ se za oceno napajalne napetosti in temperature jedra gonilnika uporabljata še dva popravka po meri za gonilniško jedro. Skupaj s svojim mehkim omrežjem omogoča grobo oceno preostale moči baterije, ki je na voljo za napajanje LED v temi.

Obliž temperaturnega senzorja se napaja tudi z izhodom senzorja napajalne napetosti, da dobimo boljšo oceno - zaznavanje temperature jedra nam omogoča, da dobimo grobo oceno, koliko energije se porabi v LED diodah, in skupaj z odčitkom napajalne napetosti, ko izpraznitev akumulatorja, nadaljnja groba ocena, koliko baterije ostane. Ni nujno, da je super natančen; če jedro "ve", da LED diode črpajo velik tok, vendar napetost akumulatorja hitro pada, je verjetno varno reči, da moč baterije ne bo trajala dlje in je čas, da ugasnete svetilko.

Korak 6: Gradnja

Gradnja
Gradnja
Gradnja
Gradnja
Gradnja
Gradnja

Projekt sem zgradil na majhnem kosu prototipne plošče z bakrenimi blazinicami za dele skozi luknje. Uporaba vtičnic za IC -je veliko pomaga pri programiranju/spreminjanju/testiranju; USBTiny ponudnik internetnih storitev podjetja Sparkfun ima podobno vtičnico na plošči, zato programiranje obeh čipov sestoji le iz priklopa programerja v vrata USB računalnika, nalaganja transpilirane kode XOD iz priloženih datotek Arduino.ino z ustreznimi nastavitvami plošče in programerja ter nato nežno odstranite žetone iz vtičnice za programer in jih vstavite v vtičnice za protoboard.

Modul za povečanje pretvornika na osnovi Pololu TPS6120 prihaja na dvižni plošči, spajani v protoboard na glavi zatičev, zato je mogoče prihraniti prostor z namestitvijo nekaterih komponent spodaj. Na svoj prototip sem spodaj postavil dva 4,7k uporna upora. Ti so potrebni za pravilno delovanje vodila i2c med čipi - komunikacija brez njih ne bo delovala prav! Na desni strani plošče je vhodna vtičnica za vtič sončne celice in vhodni kondenzator za shranjevanje. Najbolje je, da poskušate priključek in ta pokrov povezati neposredno skupaj z "teki" spajkanja, ne s priključne žice, da dobite čim manjši upor. Potek trdne spajke se nato uporabi za priključitev pozitivnega priključka shranjevalnega kondenzatorja neposredno na vhodno napetostno sponko ojačevalnega modula in ozemljitveni zatič ojačevalnega modula neposredno na ozemljitveni zatič vtičnice.

Desno in levo od vtičnic za dva ATTinys sta 0,1uF despike/odklopni kondenzatorji. Te komponente so prav tako pomembne, da jih ne izpustite, zato jih je treba priključiti na napajalne kable IC in ozemljitvene zatiče po čim krajši in usmerjeni poti. Tokovni upor 10 ohmov je na levi, ta je povezan v skladu z izhodom iz ojačevalnega pretvornika in vsaka stran je povezana z vhodnim zatičem jedra senzorja - ti zatiči so nastavljeni tako, da delujejo kot diferencialni ADC za posredno merjenje tok v baterijo. Povezave med nožicami IC za vodilo i2c in izklopnim zatičem pretvornika povečanja itd. Lahko izvedete s priključno žico na spodnji strani protoboard-a, zelo tanka polnožilna priključna žica se pri tem odlično obnese. Omogoča lažje spremembe in je tudi videti precej bolj urejeno kot tek skakalcev med luknjami na vrhu.

LED-modul, ki sem ga uporabil, je bila tribarvna enota RGB, moj načrt je bil, da so bile vse tri LED-diode aktivne, da proizvajajo belo, ko je bila baterija skoraj popolnoma napolnjena, in modro LED-diodo počasi zbledi v rumeno, ko se je baterija izpraznila. Toda ta funkcija še ni uvedena. Ena bela LED z enim tokom, ki omejuje tok, bo delovala tudi v redu.

7. korak: Testiranje, 1. del

Testiranje, 1. del
Testiranje, 1. del

Po programiranju obeh IC -jev ATTiny s priloženimi skicami prek programatorja USB iz okolja Arduino je v pomoč, da se pred poskusom polnjenja baterije s sončne celice preveri, ali obe jedri na prototipu delujeta pravilno. V idealnem primeru to zahteva osnovni osciloskop, multimeter in namizno napajanje.

Najprej morate preveriti, da ni nobenega kratkega stika na plošči, preden priključite IC -je, baterijo in ploščo v vtičnice, da se izognete morebitnim poškodbam! Najlažji način za to je uporaba namiznega napajalnika, ki lahko v tem primeru omeji svoj izhodni tok na varno vrednost. Uporabil sem napajalno mizo, nastavljeno na 3 volte in mejo 100 mA, priključeno na vhodne vtičnice solarne plošče na pozitivne in negativne napajalne kable. Ker ni nameščenih nič drugega kot pasivne komponente, na trenutnem monitorju napajalnika v bistvu ne bi smelo biti nobenega trenutnega porabe. Če pride do znatnega pretoka toka ali se napajanje omeji, je šlo kaj narobe in ploščo je treba preveriti, da se prepričate, da ni napačno povezanih povezav ali kondenzatorjev z obrnjeno polarnostjo.

Naslednji korak je zagotoviti, da ojačevalni pretvornik deluje pravilno. Na plošči je vijačni potenciometer, pri katerem je napajalnik še vedno priključen in so štirje zatiči pretvornika ustrezno povezani, potenciometer je treba obrniti z majhno konico izvijača, dokler napetost na izhodnem priključku modula ne odčita okoli 3,8 do 3,9 voltov. Ta vrednost enosmernega toka se med delovanjem ne bo spremenila, jedro gonilnika bo nadzorovalo povprečno izhodno napetost s pulziranjem zapornega zatiča modula.

8. korak: Preizkušanje, 2. del

Testiranje, 2. del
Testiranje, 2. del
Testiranje, 2. del
Testiranje, 2. del

Naslednja stvar, ki jo je treba preveriti, je, da komunikacija i2c deluje v redu, pri izklopu plošče pa se lahko namesti jedro senzorja IC. Na osciloskopu morajo biti utripajoči signali na pin 5 in pin 7 fizičnega čipa, ta gonilnik i2c na čipu poskuša poslati podatke svojemu prijatelju. Po izklopu je mogoče namestiti gonilniško jedro in ponovno preveriti povezavo z osciloskopom, na obeh linijah mora biti vidno večje zaporedje impulzov. To pomeni, da čipi komunicirajo pravilno.

Pomaga, da se baterija rahlo napolni za zadnji zaključni test. Za to lahko uporabite tudi napajalno mizo, pri čemer je trenutna meja nastavljena na približno 50 mA in napetost še vedno pri 3,8 voltov, pri čemer je baterija LiPo neposredno priključena za nekaj minut.

Zadnji korak je preizkus celotnega sistema - z vsemi povezavami, če je plošča pokrita deset ali 15 sekund, bi se morala prižgati lučka preko izhoda PWM v jedru gonilnika. Ko je plošča na močni sončni svetlobi, se mora baterija napolniti iz izhoda ojačevalnika. Mrežo z mehko logiko lahko posredno preverite, ali deluje pravilno, tako da pogledate linijo PWM, ki poganja izklopni zatič pretvornika povečanja; ker se osvetlitev povečuje z baterijo pri nizkem stanju napolnjenosti, se mora širina impulza povečati, kar kaže, da z večjo močjo sončne svetlobe voznikovo jedro signalizira, da je treba v baterijo poslati več energije!

9. korak: Dodatek k nejasni logiki

Dodatek k Fuzzy Logic
Dodatek k Fuzzy Logic

Mehka logika je tehnika strojnega učenja, ki se lahko uporablja pri nadzoru strojnih sistemov, kjer obstaja negotovost pri številnih parametrih sistema, ki se nadzoruje, zato je izrecen vnos v izhodno krmilno rešitev za cilj, ki ga je težko matematično zapisati. To se doseže z uporabo logičnih vrednosti, ki padejo nekje med 0 (napačno) in 1 (resnično), izražanjem negotovosti v vrednosti, ki je bolj podobna temu, kot bi to naredil človek ("večinoma res" ali "v resnici ne drži") in dovoljuje sivo območje med trditvami, ki so 100% resnične in 100% napačne. To dosežemo tako, da najprej vzamemo vzorce vhodnih spremenljivk, na katerih mora temeljiti odločitev, in jih "zmešamo".

Srce vsakega sistema z mehko logiko je "nejasen asociativni spomin". To spominja na matriko, kjer je v primeru vezja za polnjenje baterije shranjen niz vrednosti 3x3, ki se giblje med 0 in 1. Vrednosti v matriki so lahko približno povezane s tem, kako bi človek razmišljal o tem, kakšen bi moral biti faktor PWM, ki nadzira pin SHTDN ojačevalnega pretvornika, odvisno od tega, kako zgornja funkcija članstva kvalificira dani niz vhodov. Na primer, če je vhodna napetost plošče visoka, vendar je tok, ki se črpa v baterijo, nizek, to verjetno pomeni, da je mogoče porabiti več energije in nastavitev PWM ni optimalna in jo je treba povečati. Nasprotno, če je napetost na plošči nizka, vendar polnilec še vedno poskuša potisniti velik tok v baterijo, bo prav tako zapravljen, zato bi bilo najbolje zmanjšati signal PWM na ojačevalni pretvornik. Ko so vhodni signali "fuzzificirani" v nejasen niz, se pomnožijo s temi vrednostmi, podobno kot način pomnoževanja vektorja z matrico, da se ustvari preoblikovan niz, ki je reprezentativen za to, kako močno celica "znanja" vsebuje matrike je treba vključiti v funkcijo končne kombinacije.

Z uporabo vozlišča "not-proved-in-xod", ki omogoča vozliščem XOD, ki izvajajo prilagojene funkcije, preveč zapletene, da bi jih bilo smiselno izdelati iz zalog, in malo C ++ v slogu Arduino, asociativni pomnilnik, funkcijo ponderiranja in " fuzzifier ", podobne blokom, opisanim v tej referenci: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940, so enostavni za izdelavo in z njimi je veliko lažje eksperimentirati.

Priporočena: