Sadržaj:

Punjiva solarna lampa na XOD pogon: 9 koraka (sa slikama)
Punjiva solarna lampa na XOD pogon: 9 koraka (sa slikama)

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

Video: Punjiva solarna lampa na XOD pogon: 9 koraka (sa slikama)
Video: 102 Year Old Lady's Abandoned Home in the USA ~ Power Still ON! 2024, Prosinac
Anonim
Punjiva solarna lampa sa XOD napajanjem
Punjiva solarna lampa sa XOD napajanjem

U većini trgovina kućanskom robom i hardverom dostupne su jeftine solarne svjetiljke 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 tko koristi vaš hodnik da vidi kamo idu!)

Ovo je moj pokušaj dizajniranja modula rasvjete izvan mreže koji je značajno poboljšanje, a još uvijek je relativno jeftin za izradu. Dajući mu malo "mozga". XOD.io je novi IDE kompatibilan s ugrađenom razvojnom platformom Arduino, gdje možete grafički "pisati" kôd. Okruženje prenosi vašu grafičku skicu na suvremeni C ++, koji je izuzetno učinkovit pri generiranju kompaktnog koda i generira izvor potpuno kompatibilan sa standardnim Arduino IDE -om bez potrebe za daljnjim vanjskim ovisnostima. Na taj se način čak i mali, jeftini mikrokontroleri s ograničenim programima i resursima za pohranu podataka mogu koristiti za preuzimanje složenih zadataka.

Ovaj projekt pokazuje kako se dva mikrokontrolera ATTiny85 kompatibilna s Arduinom mogu koristiti za upravljanje zahtjevima snage svjetiljke. Prvi procesor upravlja senzorskim podacima o okolišu s vanjskog hardvera, a drugi pokušava prikupiti najviše energije od sunca tijekom 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 “nejasne 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 programer, 11801 ili ekvivalentna stranica proizvoda Sparkfun

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

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

Mikročip ATTiny85 u 8-pinskom DIP paketu, stranica s 2 Mousera

8 -polne DIP IC utičnice, 2

Kondenzator za masovnu pohranu, 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 osjetnika struje, tolerancija 10 ohma 1⁄2 vata 1%

Zaobilazni kondenzatori, 0,1uF keramika, 2

2 3,7 v 100mAh litij-ionska 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 s čvrstom jezgrom za povezivanje

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

Korak 2: Postavljanje okruženja

Postavljanje okruženja
Postavljanje okruženja

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

Izvorni kod za ovu biblioteku dostupan je na:

Još jedna korisna knjižnica iz spremišta je “FixedPoints”, koja je za vrijeme kompajliranja implementacija matematike fiksnih točaka za procesore podržane Arduinom. ATTiny ima ograničen SRAM i memoriju programa, a mnogo pomaže pri smanjenju 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 izvođenja također treba poboljšati jer ATTiny nema jedinicu za hardversko množenje, a još manje hardversku pomičnu točku!

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 načina stvaranja uključenih izvornih datoteka.

Korak 3: Pregled dizajna

Pregled dizajna
Pregled dizajna
Pregled dizajna
Pregled dizajna

Na ploči su dva procesora ATTiny85 spojena 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čanje dok je ploča osvijetljena, napona baterije i baterije temperatura.

Pretvarač pojačanja je gotov modul temeljen na IC Instrumentu Texas Instruments TPS6120, koji može uzeti ulazni napon do 0,5 volti i povećati ga na 2 do 5 volti. Jezgra senzora sastoji se od nekoliko funkcionalnih blokova. Glavni sat počinje raditi čim se napajanje pretvarača pojačala uključi s ulaza solarne ploče. Time se pokreće izvršavanje skice, a prvo je utvrditi je li ploča dovoljno osvijetljena kako bi bateriji osigurala struju punjenja.

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

Druga jezgra ATTiny izvršava LED kontroler i sustav praćenja napunjenosti baterije. Podaci o naponu ploče, naponu baterije i struji punjenja baterije šalju se u ovu jezgru radi obrade putem mreže s nejasnom logikom, koja pokušava generirati odgovarajući PWM signal za primjenu na SHTDN pin, kontrolirajući tako količinu struje poslane na bateriju da ga napuni kad svijetli-osnovni oblik praćenja maksimalne točke napajanja (MPPT.) Također prima signal iz jezgre senzora koji mu govori treba li uključiti ili isključiti LED, ovisno o izlazu dana 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 raste s strujom koja se izvlači iz njegovih pinova.) Mreža nejasne logike povezana s LED PWM zakrpom pokušava procijeniti koliko je još baterije na raspolaganju, te smanjiti intenzitet LED diode kako se baterija prazni.

Korak 4: Stvaranje prilagođenih zakrpa iz knjižnice XOD Core

Stvaranje prilagođenih zakrpa iz knjižnice XOD Core
Stvaranje prilagođenih zakrpa iz knjižnice XOD Core
Stvaranje prilagođenih zakrpa iz knjižnice XOD Core
Stvaranje prilagođenih zakrpa iz knjižnice XOD Core

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

Prvi od dva prilagođena čvora zakrpa na slikama implementacija je eksponencijalnog filtra pomičnog 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čku jezgru, 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 izravan grafički prikaz prijenosne funkcije u članku, povezana zajedno pomoću veza od odgovarajućih ulaza do izlaza. Iz knjižnice postoji čvor za odgodu koji omogućuje stvaranje povratne sprege (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 japankama uključenim u XOD, koje se napajaju 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 koriste se za pretvaranje Booleovih izlaznih vrijednosti u impulsni tip podataka za pokretanje japanke, jer stanje prelazi s niskog na visoko. Nadamo se da bi dizajn ovog zakrpa trebao biti donekle sam po sebi razumljiv sa snimke zaslona.

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

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

Za posebne zahtjeve u kojima bi potrebna funkcionalnost čvora bila previše složena za grafičko prikazivanje ili se oslanjaju na Arduino knjižnice koje nisu izvorne u arduino okruženju, XOD olakšava pisanje komadića veličine zalogaja kod koji se tada može integrirati u zakrpu isto kao i bilo koji drugi čvor koji je izradio korisnik ili čvor. Odabirom "izradi novu zakrpu" iz izbornika datoteka stvara se prazan list za rad, a čvorovi za unos i izlaz mogu se povući iz odjeljka "čvorovi" osnovne biblioteke. Tada se čvor "nije implementirano-u-xod" može uvući, a kad se klikne, otvorit će se uređivač teksta u kojem se potrebna funkcionalnost može implementirati u C ++. Ovdje je opisano kako rukovati unutarnjim 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 opskrbnog napona i temperature jezgre upravljačkog programa. Uz nejasnu mrežu, ovo omogućuje grubu procjenu preostale snage baterije dostupne za napajanje LED dioda kada je mrak.

Zakrpa osjetnika temperature također se napaja izlazom osjetnika napona napajanja kako bi se dobila bolja procjena - mjerenje temperature jezgre omogućuje nam da dobijemo grubu procjenu količine energije koja se troši u LED -ima, te u kombinaciji s očitanjem napona napajanja kada pražnjenja baterije daljnja gruba procjena količine preostale baterije. Ne mora biti supertočan; ako jezgra "zna" da LED diode troše veliku struju, ali napon baterije brzo pada, vjerojatno je sigurno reći da napajanje baterije neće trajati još dugo i da je vrijeme da se žarulja ugasi.

Korak 6: Izgradnja

Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo

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 puno pomaže pri programiranju/izmjeni/testiranju; USBTiny ISP iz Sparkfuna ima sličnu utičnicu na ploči pa se programiranje dva čipa sastoji samo od uključivanja programatora u USB priključak računala, učitavanja transponiranog XOD koda s uključenih Arduino.ino datoteka s odgovarajućim postavkama ploče i programatora, i zatim nježno izvadite čipove iz utičnice programatora i umetnite ih u utičnice za protoboard.

Modul pretvarača pojačanja temeljen na Pololu TPS6120 dolazi na ploči za uspon lemljenoj u protoboard na zaglavljima pinova, pa je moguće uštedjeti prostor ugradnjom nekih komponenti ispod. Na svoj prototip ispod sam stavio dva 4,7 k otpornika. Oni su potrebni da bi i2c sabirnica između čipova radila ispravno - komunikacija neće funkcionirati bez njih! S desne strane ploče nalazi se ulazna utičnica za utikač solarne ploče i ulazni kondenzator za pohranu. Najbolje je pokušati spojiti utičnicu i ovaj čep izravno zajedno putem "nizova" lema, a ne žice za spajanje, kako biste dobili što je moguće manji put. Pokreti čvrstog lemljenja tada se koriste za spajanje pozitivnog terminala skladišnog kondenzatora izravno na stezaljku ulaznog napona modula za pojačavanje, a uzemljivač modula za pojačanje izravno na uzemljeni pin utičnice.

Desno i lijevo od utičnica za dva ATTinys -a nalaze se 0,1uF kondenzatori za uklanjanje grešaka/uklanjanje kvara. Ove su komponente također važne da se ne izostavljaju te bi ih trebale spojiti na napajanje IC -ova i uzemljenje preko što kraćeg i usmjerenijeg puta. Otpor 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 - ti su pinovi postavljeni da rade kao diferencijalni ADC za neizravno mjerenje struje u bateriju. Veze između IC pinova za sabirnicu i2c i zapornog prekidača pretvarača pojačanja itd. Mogu se uspostaviti pomoću spojne žice na donjoj strani protobora, vrlo tanka spojna žica s čvrstom jezgrom odlično pristaje u tu svrhu. 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. No ova se značajka tek treba implementirati. 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 provjeriti rade li dvije jezgre na prototipu ispravno prije pokušaja punjenja baterije sa solarne ploče. U idealnom slučaju, za to su potrebni osnovni osciloskop, multimetar i stolno napajanje.

Prvo što trebate provjeriti je da nigdje na ploči nema kratkih spojeva prije uključivanja IC -a, baterije i ploče u njihove utičnice kako biste izbjegli moguće oštećenje! Najjednostavniji način za to je korištenje stonog napajanja koje u tom slučaju može ograničiti svoju izlaznu struju na sigurnu vrijednost. Koristio sam svoj radni stol 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. S instaliranim samo pasivnim komponentama, na trenutnom monitoru napajanja ne bi trebalo biti registrirano nikakvo strujno napajanje. Ako postoji značajan protok struje ili opskrba prelazi u ograničenje struje, nešto je pošlo po zlu te je potrebno provjeriti ploču kako bi se uvjerili da nema pogrešno spojenih veza ili kondenzatora s 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 igle pretvarača odgovarajuće spojene, potenciometar bi se trebao okretati malim vrhom odvijača sve dok napon na izlaznom priključku modula ne pokaže oko 3,8 do 3,9 volti. Ova se istosmjerna vrijednost neće promijeniti tijekom rada, jezgra upravljačkog programa kontrolirat će prosječni izlazni napon pulsiranjem iglice za isključivanje modula.

Korak 8: Testiranje, 2. dio

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

Sljedeća stvar koju treba provjeriti je da i2c komunikacija radi u redu, s pločom koja se napaja s klupe, može se instalirati jezgra senzora. Na osciloskopu bi trebali postojati 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 što se isključi pogonska jezgra, može se instalirati i veza ponovno 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 postizanje ovoga može se koristiti 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 sustava - sa svim spojenim ako je ploča pokrivena deset ili 15 sekundi, svjetlo bi se trebalo paliti pokrećući se preko PWM izlaza upravljačke jezgre. Uz ploču na jakom sunčevom svjetlu, baterija bi se trebala puniti iz izlaza pretvarača za pojačavanje. Mreža neizrazite logike može se neizravno provjeriti radi li ispravno gledajući PWM liniju koja upravlja isključnim pinom pretvarača pojačanja; kako se osvjetljenje povećava s baterijom pri niskom stanju napunjenosti, širina impulsa bi se trebala povećati, pokazujući da kako sve više energije dolazi iz 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 strojnog učenja koja se može koristiti u upravljanju hardverskim sustavima gdje postoji nesigurnost u mnogim parametrima sustava koji se kontrolira, što čini eksplicitan unos u izlazno rješenje upravljanja za cilj koji je teško matematički zapisati. To se postiže korištenjem logičkih vrijednosti koje se nalaze negdje između 0 (netočno) i 1 (istinito), izražavajući nesigurnost u vrijednosti više poput načina 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% netočne. Način na koji se to postiže je prvo uzimanje uzoraka ulaznih varijabli na kojima se odluka mora temeljiti i njihovo "fuzzificiranje".

Srce svakog sustava neizrazite logike 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 ugrubo povezati s načinom na koji bi čovjek razmišljao o tome kakav bi trebao biti faktor PWM koji kontrolira pin SHTDN 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 su ulazni signali "nejasni" u nejasan skup, oni se množe s tim vrijednostima, slično načinu na koji se vektor množi s matricom, kako bi se generirao transformirani skup koji predstavlja koliko je ćelija sadržana u "znanju" matrice treba uvrstiti u funkciju konačne kombinacije.

Korištenje čvora "not-implementirano-u-xodu" koji omogućuje 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čeni: