Sisukord:

XOD-toitega laetav päikeseenergia lamp: 9 sammu (piltidega)
XOD-toitega laetav päikeseenergia lamp: 9 sammu (piltidega)

Video: XOD-toitega laetav päikeseenergia lamp: 9 sammu (piltidega)

Video: XOD-toitega laetav päikeseenergia lamp: 9 sammu (piltidega)
Video: Mens Casio G-SHOCK MT-G Коллекция Магма Океан | 35-я годовщина MTGB1000... 2024, November
Anonim
XOD-toitega laetav päikeseenergialamp
XOD-toitega laetav päikeseenergialamp

Enamikus kodukaupade ja riistvara kauplustes on saadaval odavad päikeseenergia aia-/kõnniteede lambid. Kuid nagu ütleb vana ütlus, saate tavaliselt selle, mille eest maksate. Tavalised laadimis- ja valgustusahelad, mida nad kasutavad, on lihtsad ja odavad, kuid saadav valgustugevus on kõike muud kui muljetavaldav (ja vaevalt piisav kõigile, kes kasutavad teie kõnniteed, et näha, kuhu nad lähevad!)

See on minu katse kavandada võrguväline valgustusmoodul, mis on märkimisväärne täiustus, kuid on sellegipoolest suhteliselt odav. Andes sellele mõned "ajud". XOD.io on uus IDE, mis ühildub Arduino sisseehitatud arendusplatvormiga, kus saate koodi graafiliselt "kirjutada". Keskkond muudab teie graafilise visandi kaasaegseks C ++ -ks, mis on kompaktse koodi genereerimisel märkimisväärselt tõhus ja genereerib allika, mis ühildub täielikult Arduino IDE aktsiaga, ilma et oleks vaja täiendavaid väliseid sõltuvusi. Nii saab keeruliste ülesannete täitmiseks kasutada isegi väikseid odavaid mikrokontrollereid, millel on piiratud programmi- ja andmesalvestusressursid.

See projekt näitab, kuidas kahte koos töötavat Arduino-ühilduvat ATTiny85 mikrokontrollerit saab kasutada lambi võimsusnõuete haldamiseks. Esimene protsessor tegeleb välisest riistvarast pärinevate keskkonnaandmetega ja teine püüab päikeselt päeva jooksul võimalikult palju energiat koguda ning seejärel juhtida suure võimsusega LED-i valgustust, kui akupatarei öösel tühjeneb. Teine protsessor täidab oma ülesande häguse loogika juhtimise kompaktse rakendamise kaudu. Mõlema kiibi tarkvara töötati välja eranditult XOD -keskkonnas.

Samm: vajalikud materjalid

Arduino IDE, uusim versioon, mille laiendus ATTinyCore on installitud "Boards" haldurist

Sparkfun USBTinyISP ATTiny programmeerija, 11801 või samaväärne Sparkfuni tooteleht

Pololu reguleeritav madalpinge võimendusmuundur väljalülitussisendiga, U1V11A või samaväärne Pololu tooteleht

Suure võimsusega valge või RGB LED koos jahutusradiaatoriga, tavaline anood, Adafruit 2524 või samaväärne Adafruit tooteleht

Mikrokiip ATTiny85 8-kontaktilises DIP-pakendis, 2 Mouseri tooteleht

8 kontaktiga DIP IC pesad, 2

Mahukondensaator, 16 v 220 uF

Väljundkondensaator, 6.3v 47uF

Voolut piiravad takistid, 50 oomi 1/4 vatti

i2c tõmbetakistid, 4,7k, 2

Paneeli pingejaoturi takistid, 1/4 vatti, 100k, 470k

Voolutakistus, 10 oomi 1⁄2 vatti 1% tolerants

Möödavoolukondensaatorid, 0,1 uF keraamilised, 2

2 3,7 v 100mAh liitiumioonaku, PKCELL LP401 või samaväärne aku

Silindripistiku sisendpesa paneelile, 1

Miniklemmiplokid 3”x3” jootepadjaplaat ja õhuke tahke südamikuga traat ühenduste tegemiseks

Testimiseks on peaaegu kindlasti vaja ostsilloskoopi, multimeetrit ja pingitoiteallikat

2. samm: keskkonna seadistamine

Keskkonna seadistamine
Keskkonna seadistamine

XOD-keskkond ei toeta karbist ATTiny protsessorite seeriat, kuid kasutades paari Arduino universumi kolmanda osapoole raamatukogu, on selle AVR-seeria toe lisamine lihtne. Esimene samm on teeki „ATTinyCore” installimine Arduino IDE rippmenüüst „Tööriistad → Tahvel → Tahvlihaldur”. Veenduge, et kaasatud pildil näidatud seaded on õiged - pidage meeles, et enne mis tahes koodi üleslaadimist peate vajutama nuppu "Burn bootloader", et muuta väljalülituspinge ja kella kiiruse seadistamise kaitsmed!

Selle raamatukogu lähtekood on saadaval aadressil

Veel üks kasulik raamatukogu hoidlast on “FixedPoints”, mis on Arduino toega protsessorite jaoks fikseeritud punktmateetika kompileeritav rakendamine. ATTiny -l on piiratud SRAM -i ja programmimälu ning see aitab palju lõpliku visandisuuruse kahanemisel, kui kasutada üldiste andmete salvestamiseks 2 -baidist täisarvu, mitte ujukoma tüüpi, mis nõuab AVR -il 4 baiti. Täitmise kiirust tuleks samuti parandada, kuna ATTiny-l pole riistvara korrutamise seadet, veel vähem riistvara ujukoma!

Lähtekood on saadaval aadressil:

XOD -i graafiliste visandite loomise, teisaldamise ja juurutamise õpetus aadressil: https://github.com/Pharap/FixedPointsArduino aitab palju mõista kaasatud lähtefailide loomist.

3. samm: disaini ülevaade

Disaini ülevaade
Disaini ülevaade
Disaini ülevaade
Disaini ülevaade

Plaadil on kaks ATTiny85 protsessorit ühendatud i2c liidese kaudu ja neid kasutatakse koos, et juhtida päikesepaneeli pinget, võimendusmuundurist akusse voolavat voolu, kui paneel on valgustatud, aku pinget ja akut temperatuur.

Võimendusmuundur on riiulist moodul, mis põhineb Texas Instruments TPS6120 IC-l, mis võib võtta sisendpinge kuni 0,5 volti ja tõsta selle vahemikku 2–5 volti. Anduri tuum koosneb mitmest funktsionaalsest plokist. Peakell hakkab tööle kohe, kui võimendusmuundurile antakse päikesepaneelide sisendist toide. See käivitab visandi käivitamise ja kõigepealt tuleb kindlaks teha, kas paneel on piisavalt valgustatud, et tagada aku laadimisvool.

Päikesepaneeli pinge edastatakse kahe digitaalse filtri kaudu ja kui see ületab teatud läve, tuvastab süsteem, et paneel on valgustatud, ja suunab põhikella voolutundlikku monitori. See on kiibi analoog -digitaalmuunduri kanal, mis on konfigureeritud erinevalt, mis tuvastab pinge 10 oomi 1% tolerantstakisti vahel, mis on järjestikku ühendatud võimendusmuunduri väljundi ja aku sisendi vahel. Kui paneel ei ole valgustatud, saadab see ATTiny teisele ATTiny'le signaali, öeldes, et see jälgib laadimisvõimsuse asemel LED -toiteallikat ning lülitab võimendusmuunduri välja ja isoleerib sisendi, nii et aku ei saada voolu läbi paneeli tagasi.

Teine ATTiny tuum täidab LED -kontrolleri ja aku laetuse jälgimise süsteemi. Paneeli pinge, aku pinge ja aku laadimisvoolu andmed saadetakse sellesse südamikku töötlemiseks hägusa loogika võrgu kaudu, mis üritab genereerida sobiva PWM-signaali, mida rakendada SHTDN-tihvtile, kontrollides seeläbi akule saadetava voolu kogust selle laadimiseks, kui see on valgustatud-maksimaalse võimsuspunkti jälgimise (MPPT.) põhivorm. Samuti saab see anduri südamikult signaali, mis ütleb, kas see peaks LED-i sisse või välja lülitama, sõltuvalt anduri südamiku päevast väljundist. öö flip flop.

Kui LED on öösel aktiivne, jälgib see ATTiny oma sõbralt talle saadetud aku pingeandmeid ja oma kiibil olevat temperatuuriandurit, et saada ligikaudne hinnang selle kohta, kui palju energiat LED-i surutakse (aku pinge väheneb ja kiibi temperatuur tõuseb, kui vool tõmmatakse selle tihvtidest välja.) LED-i PWM-plaastriga seotud udune loogikavõrk püüab otsustada, kui palju akut on veel saadaval, ja vähendada LED-i intensiivsust, kui aku on tühi.

Samm: kohandatud plaastrite loomine XOD põhiteegist

Kohandatud plaastrite loomine XOD põhiteegist
Kohandatud plaastrite loomine XOD põhiteegist
Kohandatud plaastrite loomine XOD põhiteegist
Kohandatud plaastrite loomine XOD põhiteegist

Selle disaini jaoks kasutati mitut kohandatud patch -sõlme, millest mõnda saab hõlpsasti täielikult koostada kaasasolevatest XOD -sõlmedest ja mõnda, mis rakendati C ++ -is.

Esimene kahest kohandatud patch-sõlmest piltidel on eksponentsiaalse liikuva keskmise filtri rakendamine. See on visandis järjestikku kasutatav madala üldkuluga madalpääsfiltr, mis kord filtreerib sissetuleva päikesepaneeli pinge loogilise südamiku jaoks ja veel kord päästiku toitmiseks, mis määrab pikaajalise ümbritseva valgustuse. Vt Vikipeedia kirjet eksponentsiaalse silumise kohta.

Pildil olev sõlme struktuur on vaid artikli ülekandefunktsiooni otsene graafiline esitus, mis on ühendatud vastavate sisendite ja väljundite linkide abil. Raamatukogust on edasilükkamissõlm, mis võimaldab luua tagasisideahelat (XOD hoiatab teid, kui loote tagasisideahela ilma silmusesse viivitust sisestamata, nagu on kirjeldatud XOD -i täitmismudelis.) Selle detailiga hoolitsetakse plaaster töötab hästi, see on lihtne.

Teine kohandatud plaastrisõlm on variatsioon XOD-ga kaasasoleval varrukal, mida toidetakse filtreeritud paneeli pingega. See lukustub kõrgelt või madalalt sõltuvalt sellest, kas sisendsignaal on teatud lävest üle või alla. Valatud sõlme kasutatakse Boole'i väljundväärtuste teisendamiseks impulsi andmetüübiks, et käivitada flip flop, kui olek läheb üle madalalt kõrgele. Loodetavasti peaks selle plaastrisõlme disain olema ekraanipildilt mõnevõrra iseenesestmõistetav.

Samm: kohandatud plaastrite loomine C ++ abil

Kohandatud plaastrite loomine C ++ abil
Kohandatud plaastrite loomine C ++ abil

Erinõuete puhul, kus vajalik sõlme funktsionaalsus oleks graafika hõlpsaks kujutamiseks liiga keeruline või mis tuginevad Arduino teekidele, mis ei ole Arduino varukeskkonnale omased, võimaldab XOD neil, kellel on teatud C/C ++ teadmised, hõlpsasti hammustada suurusi. koodi, mille saab seejärel plaastrisse integreerida samamoodi nagu mis tahes muu kasutaja loodud või varusõlm. Failimenüüst valiku "Loo uus plaaster" loomine loob töötamiseks tühja lehe ning sisend- ja väljundsõlmed saab lohistada tuumaraamatukogu jaotisest "sõlmed". Siis saab "mitte-rakendatud-xodis" sõlme lohistada ja sellel klõpsates avaneb tekstiredaktor, kus saab vajalikku funktsionaalsust rakendada C ++ -is. Siit saate teada, kuidas käsitleda sisemist olekut ning C ++ koodist sisend- ja väljundportidele juurdepääsu.

Näitena kohandatud plaastrite rakendamisest C ++ -is kasutatakse juhi südamiku jaoks veel kahte kohandatud plaastrit, et esitada hinnang juhi südamiku toitepinge ja südamiku temperatuuri kohta. Koos häguse võrguga võimaldab see ligikaudselt hinnata järelejäänud aku energiat, mis on saadaval LED -ide toiteks pimedas.

Temperatuurianduri plaastrit toidetakse ka toitepingeanduri väljundiga, et saada paremat hinnangut - südamiku temperatuuritundlikkus võimaldab meil saada ligikaudse hinnangu selle kohta, kui palju energiat LED -id põlevad, ning kombineerida toitepinge näitu, kui Aku tühjenemine annab täiendava ligikaudse hinnangu selle kohta, kui palju aku on alles. See ei pea olema ülitäpne; kui tuum "teab", et valgusdioodid võtavad palju voolu, kuid aku pinge langeb kiiresti, võib ilmselt öelda, et aku ei kesta enam kaua ja on aeg lamp välja lülitada.

6. samm: ehitamine

Ehitus
Ehitus
Ehitus
Ehitus
Ehitus
Ehitus

Ehitasin projekti väikesele prototüüpplaadile, millel olid vaskpadjad aukude jaoks. Pistikupesade kasutamine IC -de jaoks aitab palju programmeerimisel/muutmisel/testimisel; Sparkfuni USBTiny Interneti -teenuse pakkuja plaadil on sarnane pistikupesa, nii et kahe kiibi programmeerimine seisneb programmeerija ühendamises arvuti USB -porti, üleslaaditud XOD -koodi üleslaadimises kaasasolevatest Arduino.ino -failidest koos sobivate tahvli- ja programmeerimisseadetega ning seejärel eemaldage kiibid õrnalt programmeerija pesast ja sisestage need protoboardi pesadesse.

Pololu TPS6120 põhinev võimendusmuunduri moodul on tõusuplaadil, mis on jootetud tihvtide päiste protoboardisse, nii et on võimalik säästa ruumi, paigaldades mõned komponendid alla. Oma prototüübile panin kaks 4,7 k tõmbetakistit alla. Need on vajalikud kiipide vahel oleva i2c -siini korrektseks toimimiseks - side ei tööta ilma nendeta! Tahvli paremal küljel on päikesepaneeli pistiku ja sisendkondensaatori sisendpesa. Parim on proovida ühendada pistik ja see kork otse kokku jootetorude, mitte juhtmete ühendamise teel, et saada võimalikult väike takistus. Seejärel kasutatakse tahke jootet, et ühendada mälukondensaatori positiivne klemm otse võimendusmooduli sisendpinge klemmiga ja võimendusmooduli maandusnõel otse pistiku maandusnõelaga.

Kahe ATTinys pistikupesast paremal ja vasakul on 0,1uF despike/deglitching kondensaatorid. Neid komponente on samuti oluline mitte välja jätta ja need tuleks ühendada IC -de toite- ja maanduspistikutega võimalikult lühikese ja otsese tee kaudu. 10 -oomine voolutugevuse takisti on vasakul, see on ühendatud vastavalt võimendusmuunduri väljundiga ja mõlemad küljed on ühendatud anduri südamiku sisendtihvtiga - need tihvtid on seadistatud töötama diferentsiaalse ADC -na, et kaudselt mõõta voolu akusse. Ühendusi i2c siini IC-tihvtide ja võimendusmuunduri väljalülitustihvti jms vahel saab teha protobooki alumisel küljel asuva ühendustraadi abil, selleks sobib väga õhuke tugeva südamikuga haaketraat. See muudab muudatused lihtsamaks ja näeb ka palju korralikum välja, kui hüppajate jooksmine ülaosas olevate aukude vahel.

Kasutatud LED-moodul oli kolmevärviline RGB-seade, minu plaan oli, et kõik kolm LED-i oleksid aktiivsed, et toota valget värvi, kui aku oleks peaaegu täis laetud, ja kustutada sinine LED aeglaselt kollaseks, kui laeng on tühjenenud. Kuid seda funktsiooni tuleb veel rakendada. Üks valge LED, millel on üks voolu piirav takisti, töötab ka hästi.

7. samm: testimine, 1. osa

Testimine, 1. osa
Testimine, 1. osa

Pärast Arduino keskkonnast USB -programmeerija kaudu mõlema ATTiny IC -i programmeerimist kaasasolevate visandifailidega aitab enne päikesepaneelilt aku laadimist kontrollida, kas prototüübi kaks südamikku töötavad korralikult. Ideaalis on selleks vaja tavalist ostsilloskoopi, multimeetrit ja pingitoiteallikat.

Esmalt tuleb kontrollida, et enne IC -de, aku ja paneeli pistikupesasse ühendamist poleks plaadil kuskil lühiseid, et vältida võimalikke kahjustusi! Lihtsaim viis seda teha on kasutada pingitoiteallikat, mis võib selle olukorra korral piirata selle väljundvoolu ohutu väärtuseni. Kasutasin oma pingivarustuse komplekti 3 volti ja 100 mA piiri, mis oli ühendatud päikesepaneeli sisendpesa klemmidega positiivse ja negatiivse toitejuhtme külge. Kui installitud pole midagi muud kui passiivsed komponendid, ei tohiks toiteallika praegusel kuvaril sisuliselt olla registreeritud voolutugevust. Kui vool on märkimisväärne või toide läheb voolu piiravaks, on midagi valesti läinud ja plaati tuleb kontrollida, et veenduda, et pole polaarsusega vastupidiseid juhtmeid ega kondensaatoreid.

Järgmine samm on tagada, et võimendusmuundur töötab korralikult. Plaadil on kruvipotentiomeeter, toiteallikas on endiselt ühendatud ja neli muunduri kontakti on korralikult ühendatud, tuleb potentsiomeetrit keerata väikese kruvikeeraja otsaga, kuni mooduli väljundklemmi pinge on umbes 3,8–3,9 volti. See alalisvoolu väärtus ei muutu töötamise ajal, juhi tuum kontrollib keskmist väljundpinget mooduli väljalülitustihvti pulseerides.

8. etapp: testimine, 2. osa

Testimine, 2. osa
Testimine, 2. osa
Testimine, 2. osa
Testimine, 2. osa

Järgmine asi, mida tuleb kontrollida, on see, et i2c kommunikatsioon töötab hästi, kui plaat töötab pingilt, saab anduri südamiku IC paigaldada. Ostsilloskoobil peaksid füüsilise kiibi tihvtidel 5 ja 7 olema pulseerivad signaalid, see i2c draiver kiibil üritab oma sõbrale andmeid saata. Pärast juhtsüdamiku väljalülitamist saab paigaldada ja ühenduse uuesti ostsilloskoobiga kontrollida, peaks mõlemal liinil olema suurem impulsside jada. See tähendab, et kiibid suhtlevad õigesti.

See aitab akut veidi laadida, et lõplik täielik test teha. Selle eesmärgi saavutamiseks võib kasutada ka pingivarustust, kus voolupiiranguks on seatud umbes 50 mA ja pinge endiselt 3,8 volti, jättes LiPo aku mõneks minutiks otse ühendatuks.

Viimane samm on kogu süsteemi testimine - kui kõik on ühendatud, kui paneel on 10 või 15 sekundi jooksul kaetud, peaks tuli süttima juhi südamiku PWM -väljundi kaudu. Kui paneel on ereda päikesevalguse käes, peaks aku laadima võimendusmuunduri väljundist. Hägusat loogikavõrku saab kaudselt kontrollida, et näha, kas see töötab õigesti, vaadates võimendusmuunduri väljalülitusnuppu juhtivat PWM -liini; kui valgustus suureneb madala laetusega aku korral, peaks impulsi laius suurenema, mis näitab, et kui päikesevalgusest saab rohkem energiat, annab juhi tuum märku, et akusse tuleb saata rohkem energiat!

9. samm: Lisa häguse loogika kohta

Lisa häguse loogika kohta
Lisa häguse loogika kohta

Hägune loogika on masinõppetehnika, mida saab kasutada riistvaraliste süsteemide juhtimisel, kui paljud juhitava süsteemi parameetrid on ebakindlad, andes selgesõnalise sisendi väljundi juhtimislahendusele eesmärgi jaoks, mida on raske matemaatiliselt kirja panna. Selle saavutamiseks kasutatakse loogilisi väärtusi, mis jäävad vahemikku 0 (vale) kuni 1 (tõene), väljendades ebakindlust väärtuses, mis sarnaneb inimesega („enamasti tõsi” või „pole tõsi”), ning lubab halli ala 100% tõese ja 100% vale väite vahel. Selle saavutamiseks võetakse kõigepealt proovid sisendmuutujatest, millel otsus peab põhinema, ja need „hägustatakse”.

Iga häguse loogikasüsteemi süda on „hägune assotsiatiivne mälu”. See meenutab maatriksit, kus aku laadimisahela puhul salvestatakse 3x3 väärtuste kogum vahemikus 0 kuni 1. Maatriksi väärtusi saab laias laastus seostada sellega, kuidas inimene peaks mõtlema, milline peaks olema võimendusmuunduri SHTDN -tihvti juhtiv PWM -tegur, sõltuvalt sellest, kuidas ülaltoodud liikmesfunktsioon antud sisendite komplekti kvalifitseerib. Näiteks kui paneeli sisendpinge on kõrge, kuid patareisse tõmmatav vool on madal, tähendab see tõenäoliselt, et saab rohkem energiat ja PWM -seade pole optimaalne ja seda tuleks suurendada. Ja vastupidi, kui paneeli pinge langeb, kuid laadija üritab endiselt akusse suurt voolu suruda, läheb see samuti raisku, seega oleks parem vähendada PWM -signaali võimendusmuundurile. Kui sisendsignaalid on „hägustunud” häguseks kogumiks, korrutatakse need nende väärtustega, sarnaselt sellele, kuidas vektor korrutatakse maatriksiga, et saada teisendatud kogum, mis esindab seda, kui palju „teadmised” sisaldasid lahtrit maatriksi osa tuleks arvesse võtta lõpliku kombinatsiooni funktsioonis.

Kasutades sõlme „mitte-rakendatud-xodis”, mis võimaldab XOD-sõlmedel, mis rakendavad kohandatud funktsioone liiga keeruliseks, et neid poleks mõistlik teha varude ehitusplokkidest, ja väikest Arduino-stiilis C ++, assotsiatiivset mälu, kaalumisfunktsiooni ja fuzzifier , mis sarnaneb selles viites kirjeldatud plokkidega: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940, on lihtne teha ja nendega on palju lihtsam katsetada.

Soovitan: