Sadržaj:

Punjiva solarna lampa sa XOD napajanjem: 9 koraka (sa slikama)
Punjiva solarna lampa sa XOD napajanjem: 9 koraka (sa slikama)

Video: Punjiva solarna lampa sa XOD napajanjem: 9 koraka (sa slikama)

Video: Punjiva solarna lampa sa XOD napajanjem: 9 koraka (sa slikama)
Video: Топ 15 Цасио Г Схоцк Сатова испод $ 500 | Најбољи сатови Г-С... 2024, Novembar
Anonim
Punjiva solarna lampa sa XOD napajanjem
Punjiva solarna lampa sa XOD napajanjem

U većini trgovina kućnom robom i željeznom robom dostupne su jeftine solarne lampe za vrt/šetnice. Ali kako stara poslovica kaže, obično dobijete ono što platite. Uobičajeni krugovi za punjenje i osvjetljenje koje koriste jednostavni su i jeftini, ali svjetlosna snaga koju dobijete je sve samo ne impresivna (i jedva dovoljna da bilo ko koristi vaš hodnik da vidi kuda idu!)

Ovo je moj pokušaj da dizajniram modul za rasvjetu izvan mreže koji je značajno poboljšanje, iako je još uvijek relativno jeftin za izradu. Dajući mu malo "mozga". XOD.io je novi IDE kompatibilan sa Arduino ugrađenom razvojnom platformom, gdje možete grafički "pisati" kôd. Okruženje prenosi vašu grafičku skicu na savremeni C ++, koji je izuzetno efikasan u generisanju kompaktnog koda i generiše izvor potpuno kompatibilan sa osnovnim Arduino IDE -om bez potrebe za daljim spoljnim zavisnostima. Na taj način čak i mali, jeftini mikrokontroleri s ograničenim resursima programa i prostora za pohranu podataka mogu se koristiti za preuzimanje složenih zadataka.

Ovaj projekt pokazuje kako se dva mikrokontrolera kompatibilna s Arduino-om ATTiny85 mogu koristiti zajedno za upravljanje potrebama lampe. Prvi procesor upravlja senzorskim podacima o okolišu s vanjskog hardvera, a drugi pokušava prikupiti najviše energije od sunca tokom dana, a zatim kontrolira osvjetljenje LED-a velike snage dok se baterija za skladištenje prazni noću. Drugi procesor svoj posao ostvaruje kompaktnom implementacijom kontrole “fazi logike”. Softver za oba čipa razvijen je isključivo u XOD okruženju.

Korak 1: Potrebni materijali

Arduino IDE, najnovija verzija, s ATTinyCore ekstenzijom instaliranom iz upravitelja "Boards"

Sparkfun USBTinyISP ATTiny programator, 11801 ili ekvivalentna stranica proizvoda Sparkfun

Pololu podesivi niskonaponski pretvarač sa pojačalom, U1V11A ili ekvivalentna stranica proizvoda Pololu

Bijela ili RGB LED velike snage sa hladnjakom, zajedničkom anodom, Adafruit 2524 ili ekvivalentna stranica proizvoda Adafruit

Mikročip ATTiny85 u 8-pinskom DIP paketu, stranica sa 2 Mouser-a

8 -polne DIP IC utičnice, 2

Kondenzator za masovno skladištenje, 16 v 220 uF

Izlazni kondenzator, 6.3v 47uF

Otpornici za ograničavanje struje, 50 ohma 1/4 vata

i2c pull-up otpornici, 4.7k, 2

Otpornici osjetnika razdjelnika napona na ploči, 1/4 vata, 100 k, 470 k

Otpornik trenutnog osjetnika, tolerancija 10 ohma 1⁄2 vata 1%

Zaobilazni kondenzatori, 0,1uF keramika, 2

2 3,7 v 100mAh litijum-jonska punjiva baterija, PKCELL LP401 ili ekvivalentna

Ulazna utičnica s utikačem za cijev, 1

Mini priključni blokovi 3”x3” ploča za lemljenje i tanka žica sa čvrstim jezgrom za povezivanje

Za testiranje će gotovo sigurno biti potrebni osciloskop, multimetar i stono napajanje

Korak 2: Postavljanje okruženja

Podešavanje okruženja
Podešavanje okruženja

XOD okruženje ne podržava ATTiny seriju procesora, ali pomoću nekoliko biblioteka trećih strana iz Arduino univerzuma jednostavno je dodati podršku za ovu seriju AVR-ova. Prvi korak je instaliranje biblioteke „ATTinyCore“iz padajućeg izbornika „Alati → Ploča → Upravitelj ploče“Arduino IDE -a. Uvjerite se da su postavke kao što je prikazano na priloženoj slici ispravne - zapamtite da morate pritisnuti "Burn bootloader" da biste promijenili osigurače za podešavanje napona i brzine takta prije postavljanja bilo kojeg koda!

Izvorni kod za ovu biblioteku dostupan je na:

Još jedna korisna biblioteka iz spremišta je “FixedPoints”, koja je implementacija matematike fiksnih tačaka za vrijeme kompajliranja za procesore podržane Arduinom. ATTiny ima ograničenu SRAM i programsku memoriju, a mnogo pomaže pri smanjivanju konačne veličine skice za korištenje 2 -bajtnog cijelog broja za opću pohranu podataka, a ne za tip s pomičnim zarezom, koji zahtijeva 4 bajta na AVR -u. Brzinu izvršavanja također treba poboljšati jer ATTiny nema jedinicu za hardversko množenje, a još manje hardversku pomičnu zarez!

Izvorni kod dostupan je na:

Vodič o tome kako stvoriti, prenijeti i primijeniti XOD grafičke skice na: https://github.com/Pharap/FixedPointsArduino puno će vam pomoći u razumijevanju kako su nastale uključene izvorne datoteke.

Korak 3: Pregled dizajna

Pregled dizajna
Pregled dizajna
Pregled dizajna
Pregled dizajna

Na ploči su dva ATTiny85 procesora povezana putem i2c sučelja i koriste se za zajedničko upravljanje upravljanjem otkrivanjem napona solarne ploče, struje koja teče u bateriju iz pretvarača za pojačavanje dok je ploča osvijetljena, napona baterije i baterije temperaturu.

Pretvarač za pojačavanje je standardni modul zasnovan na Texas Instruments TPS6120 IC, koji može uzeti ulazni napon do 0,5 volti i povećati ga na 2 do 5 volti. Jezgro senzora sastoji se od nekoliko funkcionalnih blokova. Glavni sat počinje raditi čim se napajanje pretvarača pojačivača uključi sa ulaza solarne ploče. Ovo započinje izvršavanje skice, a prva stvar je utvrditi je li ploča dovoljno osvijetljena da osigura struju punjenja baterije.

Napon solarne ploče prolazi kroz dva digitalna filtera, a ako je iznad određenog praga, sistem utvrđuje da je ploča osvijetljena i usmjerava glavni sat u monitor sa trenutnom osjetljivošću. Ovo je analogno -digitalni kanal pretvarača čipa, konfiguriran različito, koji osjeća napon na otporniku tolerancije od 10 ohma od 1% spojenom serijski između izlaza pretvarača pojačanja i ulaza baterije. Kada ploča nije osvijetljena, ovaj ATTiny šalje signal drugom ATTiny -u govoreći mu da prati napajanje LED -a umjesto napajanja, te da isključi pretvarač pojačanja i izolira ulaz tako da baterija ne šalje struju natrag kroz ploču.

Drugo jezgro ATTiny -a izvršava LED kontroler i sistem praćenja napunjenosti baterije. Podaci o naponu ploče, naponu baterije i struji punjenja baterije šalju se u ovo jezgro radi obrade putem mreže s nejasnom logikom, koja pokušava generirati odgovarajući PWM signal koji će se primijeniti na SHTDN pin, čime se kontrolira količina struje poslane na bateriju da ga napuni kada svijetli-osnovni oblik praćenja maksimalne tačke napajanja (MPPT.) Takođe prima signal iz jezgre senzora koji mu govori da li treba da uključi ili isključi LED diodu, u zavisnosti od izlaza na danu jezgre senzora/ noćni japanke.

Kad je LED aktivna noću, ovaj ATTiny nadzire podatke o naponu baterije koje mu šalje njegov prijatelj i vlastiti senzor temperature na čipu, kako bi dobio grubu procjenu o tome koliko se energije ubacuje u LED (napon baterije se smanjuje a temperatura čipa se povećava sa strujom koja se izvlači iz njegovih pinova.) Mreža nejasne logike povezana sa LED PWM zakrpom pokušava procijeniti koliko je još baterije na raspolaganju, te smanjiti intenzitet LED diode kako se baterija prazni.

Korak 4: Kreiranje prilagođenih zakrpa iz XOD Core biblioteke

Kreiranje prilagođenih zakrpa iz XOD Core biblioteke
Kreiranje prilagođenih zakrpa iz XOD Core biblioteke
Kreiranje prilagođenih zakrpa iz XOD Core biblioteke
Kreiranje prilagođenih zakrpa iz XOD Core biblioteke

Za ovaj dizajn korišteno je nekoliko prilagođenih čvorova zakrpa, od kojih se neki lako mogu u potpunosti konstruirati iz uključenih XOD čvorova, a neki su implementirani u C ++.

Prvi od dva prilagođena čvora zakrpe na slikama je implementacija eksponencijalnog filtera pokretnog prosjeka. Ovo je niskopropusni digitalni filter s niskim opterećenjem koji se serijski koristi na skici, jednom za filtriranje dolaznog napona solarne ploče za logičko jezgro, i još jednom za napajanje okidača koji određuje dugotrajno osvjetljenje okoline. Pogledajte unos Wikipedije o eksponencijalnom zaglađivanju.

Struktura čvora na slici samo je direktan grafički prikaz prijenosne funkcije u članku, povezana zajedno pomoću veza od odgovarajućih ulaza do izlaza. Iz biblioteke postoji čvor za odgodu koji omogućuje stvaranje povratne petlje (XOD će vas upozoriti ako kreirate povratnu petlju bez umetanja odgode u petlju, kako je opisano u modelu izvođenja XOD -a.) S tim detaljima vodi se računa o patch radi dobro, jednostavno je.

Drugi prilagođeni čvor za zakrpe je varijacija na stock flip-flopu uključenom u XOD, koji se napaja filtriranim naponom ploče. Zaključava se visoko ili nisko, ovisno o tome je li ulazni signal iznad ili ispod određenog praga. Cast čvorovi se koriste za pretvaranje Booleovih izlaznih vrijednosti u impulsni tip podataka za pokretanje flip flopa, jer stanje prelazi s niskog na visoko. Nadamo se da bi dizajn ovog zakrpa trebao biti donekle samorazumljiv sa snimke zaslona.

Korak 5: Kreiranje prilagođenih zakrpa pomoću C ++

Kreiranje prilagođenih zakrpa pomoću C ++
Kreiranje prilagođenih zakrpa pomoću C ++

Za posebne zahtjeve gdje bi potrebna funkcionalnost čvora bila previše složena da bi se lako grafički prikazala ili koja se oslanja na Arduino biblioteke koje nisu izvorne u arduino okruženju, XOD olakšava onima koji imaju određeno znanje C/C ++ pisanje komadića veličine kod koji se zatim može integrirati u zakrpu isto kao i bilo koji drugi čvor koji je stvorio korisnik ili čvor. Odabirom "kreiraj novu zakrpu" iz izbornika datoteka stvara se prazan list za rad, a ulazni i izlazni čvorovi mogu se povući iz odjeljka "čvorovi" osnovne biblioteke. Tada se čvor "nije implementirano-u-xod" može uvući, a kada se klikne, otvorit će se uređivač teksta u kojem se potrebna funkcionalnost može implementirati u C ++. Ovdje je opisano kako rukovati unutrašnjim stanjem i pristupom ulaznim i izlaznim portovima iz C ++ koda.

Kao primjer implementacije prilagođenih zakrpa u C ++, dvije dodatne prilagođene zakrpe za jezgru upravljačkog programa koriste se za procjenu napona napajanja i temperature jezgre upravljačkog programa. Uz nejasnu mrežu, ovo omogućava grubu procjenu preostale snage baterije dostupne za napajanje LED dioda kada je mrak.

Deo temperaturnog senzora takođe se napaja sa izlaza senzora napona napajanja da bi se dobila bolja procena - senzorska temperatura jezgra nam omogućava da dobijemo grubu procenu količine energije koja se troši u LED diodama, u kombinaciji sa očitavanjem napona napajanja kada pražnjenje baterije, gruba procjena količine preostale baterije. Ne mora biti supertačan; ako jezgra "zna" da LED diode troše veliku struju, ali napon baterije brzo pada, vjerovatno je sigurno reći da napajanje baterije neće trajati još dugo i da je vrijeme da se lampica ugasi.

Korak 6: Konstrukcija

Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo

Projekt sam izgradio na malom komadu ploče za izradu prototipa s bakrenim jastučićima za dijelove kroz rupe. Korištenje utičnica za IC -ove mnogo pomaže pri programiranju/modifikaciji/testiranju; USBTiny ISP iz Sparkfun -a ima sličnu utičnicu na ploči pa se programiranje dva čipa sastoji samo od uključivanja programera u USB port računara, otpremanja transponiranog XOD koda iz uključenih Arduino.ino datoteka s odgovarajućim postavkama ploče i programatora, i zatim nježno uklonite čipove iz utičnice programatora i umetnite ih u utičnice za protoboard.

Modul pretvarača pojačanja zasnovan na Pololu TPS6120 dolazi na ploči za podizanje lemljenoj u protoboard na zaglavljima pinova, pa je moguće uštedjeti prostor postavljanjem nekih komponenti ispod. Na svoj prototip ispod sam stavio dva 4,7k pullup otpornika. Oni su potrebni da bi i2c sabirnica između čipova radila ispravno - komunikacija neće funkcionirati bez njih! Na desnoj strani ploče nalazi se ulazna utičnica za utikač solarnog panela i ulazni skladišni kondenzator. Najbolje je da pokušate spojiti utičnicu i ovaj poklopac direktno zajedno pomoću "nizova" lema, a ne spojne žice, kako biste dobili što je moguće manji put. Pokreti čvrstog lemljenja tada se koriste za povezivanje pozitivnog terminala kondenzatora za skladištenje izravno na priključak ulaznog napona modula za pojačavanje, a uzemljivač modula za pojačavanje izravno na priključak za uzemljenje utičnice.

Desno i lijevo od utičnica za dva ATTinys -a nalaze se 0,1uF kondenzatori za brisanje/uklanjanje kvara. Ove komponente su također važne da se ne izostavljaju i treba ih spojiti na napajanje IC -ova i uzemljenje preko što kraće i usmjerene staze. Otpornik osjetnika struje od 10 ohma nalazi se s lijeve strane, spojen je u skladu s izlazom iz pretvarača pojačanja, a svaka strana spojena je na ulazni pin jezgre senzora - ovi pinovi su postavljeni da rade kao diferencijalni ADC za indirektno mjerenje struje u bateriju. Veze između IC pinova za sabirnicu i2c i igle za isključivanje pretvarača pojačanja itd. Mogu se uspostaviti pomoću spojne žice na donjoj strani protobora, vrlo tanka spojna žica s čvrstim jezgrom odlično funkcionira za to. Olakšava promjene i također izgleda mnogo urednije od skakača između rupa na vrhu.

LED modul koji sam koristio bila je trobojna RGB jedinica, moj plan je bio da sve tri LED diode budu aktivne kako bi proizvodile bijelu boju kad je baterija skoro potpuno napunjena, a plavu LED diodu polako gasile u žutu jer se baterija ispraznila. Ali ova funkcija tek treba biti implementirana. Jedna bijela LED sa jednim otpornikom za ograničavanje struje također će raditi u redu.

Korak 7: Testiranje, 1. dio

Testiranje, 1. dio
Testiranje, 1. dio

Nakon programiranja oba ATTiny IC -a s uključenim datotekama skica putem USB programatora iz Arduino okruženja, pomaže se provjeriti rade li dvije jezgre na prototipu ispravno prije pokušaja punjenja baterije sa solarnog panela. U idealnom slučaju, za to su potrebni osciloskop, multimetar i stono napajanje.

Prva stvar koju treba provjeriti je da nigdje na ploči nema kratkih spojeva prije nego što uključite IC -ove, bateriju i ploču u njihove utičnice kako biste izbjegli moguće oštećenje! Najlakši način za to je korištenje napajanja za radnu površinu koje može ograničiti svoju izlaznu struju na sigurnu vrijednost u slučaju takve situacije. Koristio sam svoj radni sto napajanja postavljen na 3 volta i ograničenje od 100 mA spojen na priključke ulazne utičnice solarne ploče na pozitivne i negativne vodove napajanja. Bez instaliranih ništa osim pasivnih komponenti, na trenutnom monitoru napajanja ne bi trebalo biti evidentirano nikakvo strujno napajanje. Ako postoji značajan protok struje ili napajanje prelazi u ograničenje struje, nešto je pošlo po zlu i ploču treba provjeriti kako bi se uvjerili da nema pogrešno povezanih veza ili kondenzatora sa obrnutim polaritetom.

Sljedeći korak je osigurati da pretvarač pojačanja radi ispravno. Na ploči je potenciometar s vijkom, s napajanjem koje je još spojeno, a četiri pina pretvarača pravilno spojena, potenciometar treba okretati malim vrhom odvijača sve dok napon na izlaznom priključku modula ne pokaže oko 3,8 do 3,9 volti. Ova vrijednost istosmjernog napona neće se promijeniti tokom rada, jezgra upravljačkog programa će kontrolirati prosječni izlazni napon pulsiranjem pina za isključivanje modula.

Korak 8: Testiranje, 2. dio

Testiranje, 2. dio
Testiranje, 2. dio
Testiranje, 2. dio
Testiranje, 2. dio

Slijedeća stvar koju treba provjeriti je da i2c komunikacija radi ispravno, s pločom koja se napaja sa klupe, može se instalirati jezgra senzora. Na osciloskopu bi trebali biti pulsirajući signali i na pinu 5 i na pinu 7 fizičkog čipa, ovaj i2c upravljački program na čipu pokušava poslati podatke svom prijatelju. Nakon gašenja jezgra upravljačkog programa može se instalirati i veza ponovo provjeriti osciloskopom, trebao bi biti veći slijed impulsa vidljiv na obje linije. To znači da čipovi pravilno komuniciraju.

Pomaže da se baterija malo napuni za posljednji potpuni test. Za to se može upotrijebiti i napajanje sa stola, s ograničenjem struje postavljenim na oko 50 mA i naponom i dalje na 3,8 volta, ostavljajući LiPo bateriju izravno priključenom na nekoliko minuta.

Posljednji korak je testiranje cijelog sistema - sa svim spojenim ako je ploča pokrivena deset ili 15 sekundi, svjetlo bi se trebalo uključiti pogonom preko PWM izlaza upravljačkog programa. Sa panelom na jakom sunčevom svjetlu, baterija bi se trebala puniti iz izlaza pretvarača pojačanja. Mreža nejasne logike može se indirektno pregledati da bi se utvrdilo radi li ispravno gledajući PWM liniju koja upravlja isključnim pinom pretvarača pojačanja; kako se osvjetljenje povećava s akumulatorom pri niskom stanju napunjenosti, širina impulsa bi se trebala povećati, pokazujući da kako sve više energije postaje dostupno od sunčeve svjetlosti, jezgra vozača signalizira da se u bateriju treba poslati više energije!

Korak 9: Dodatak o nejasnoj logici

Dodatak o nejasnoj logici
Dodatak o nejasnoj logici

Nejasna logika je tehnika mašinskog učenja koja se može koristiti u kontroli hardverskih sistema gdje postoji nesigurnost u mnogim parametrima sistema koji se kontrolira, što čini eksplicitan ulaz u izlazno rješenje za upravljanje koje je teško matematički zapisati. To se postiže korištenjem logičkih vrijednosti koje se nalaze negdje između 0 (lažno) i 1 (istinito), izražavajući nesigurnost u vrijednosti koja više liči na način na koji bi to učinio čovjek ("uglavnom istinito" ili "nije istinito") i dopušta sivo područje između tvrdnji koje su 100% istinite i 100% lažne. Način na koji se to postiže je prvo uzimanje uzoraka ulaznih varijabli na kojima se odluka mora temeljiti i njihovo “fuzzifikovanje”.

Srce svakog nejasnog logičkog sistema je „maglovita asocijativna memorija“. Ovo podsjeća na matricu, gdje se u slučaju kruga punjenja baterije pohranjuje skup vrijednosti 3x3 u rasponu od 0 do 1. Vrijednosti u matrici mogu se otprilike povezati s načinom na koji bi čovjek razmišljao o tome kakav bi trebao biti faktor PWM koji kontrolira SHTDN pin pretvarača pojačanja, ovisno o tome kako gornja funkcija članstva kvalificira dati skup ulaza. Na primjer, ako je ulazni napon ploče visok, ali je struja koja se dovodi u bateriju niska, to vjerojatno znači da se može izvući veća snaga, a postavka PWM -a nije optimalna i treba je povećati. Nasuprot tome, ako napon ploče padne, ali punjač i dalje pokušava ugurati veliku struju u bateriju, također će se potrošiti, pa bi bilo najbolje smanjiti PWM signal na pretvarač pojačanja. Nakon što se ulazni signali „fuzifikuju“u nejasan skup, oni se množe sa ovim vrijednostima, slično načinu na koji je vektor pomnožen matricom, da bi se generisao transformisani skup koji predstavlja koliko je ćelija sadržana u „znanju“matrice treba uvrstiti u funkciju konačne kombinacije.

Korištenje čvora "not-implementirano-u-xod" koji dopušta XOD čvorovima koji implementiraju prilagođenu funkcionalnost previše kompliciranu da bi je bilo razumno napraviti od zaliha građevnih blokova i malo C ++ u Arduino stilu, asocijativnu memoriju, funkciju ponderiranja i " fuzzifier "slični blokovima opisanim u ovoj referenci: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 jednostavni su za izradu i s njima je mnogo lakše eksperimentirati.

Preporučuje se: