Sisällysluettelo:

XOD-käyttöinen ladattava aurinkolamppu: 9 vaihetta (kuvilla)
XOD-käyttöinen ladattava aurinkolamppu: 9 vaihetta (kuvilla)

Video: XOD-käyttöinen ladattava aurinkolamppu: 9 vaihetta (kuvilla)

Video: XOD-käyttöinen ladattava aurinkolamppu: 9 vaihetta (kuvilla)
Video: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, Marraskuu
Anonim
XOD-käyttöinen ladattava aurinkolamppu
XOD-käyttöinen ladattava aurinkolamppu

Useimmissa kodin tavara- ja rautakaupoissa on edullisia aurinkopuutarhoja/kävelytielamppuja. Mutta kuten vanha sanonta kuuluu, saat yleensä sen, mistä maksat. Heidän käyttämänsä tavalliset lataus- ja valaistuspiirit ovat yksinkertaisia ja halpoja, mutta saamasi valoteho on kaikkea muuta kuin vaikuttava (ja tuskin tarpeeksi kaikille, jotka käyttävät kävelytietäsi nähdäkseen, minne he ovat menossa!)

Tämä on yritykseni suunnitella verkon ulkopuolinen valaistusmoduuli, joka on merkittävä parannus, mutta silti suhteellisen halpa tehdä. Antamalla sille "aivoja". XOD.io on uusi IDE, joka on yhteensopiva Arduinon sulautetun kehitysalustan kanssa, jossa voit "kirjoittaa" koodia graafisesti. Ympäristö kääntää graafisen luonnoksesi nykyaikaiseksi C ++: ksi, joka on erittäin tehokas kompaktin koodin luomisessa ja luo lähdekoodin, joka on täysin yhteensopiva Arduino IDE -kannan kanssa ilman lisä ulkoisia riippuvuuksia. Tällä tavoin jopa pieniä, edullisia mikrokontrollereita, joilla on rajalliset ohjelma- ja tallennusresurssit, voidaan käyttää monimutkaisten tehtävien suorittamiseen.

Tämä projekti osoittaa, kuinka kahta yhdessä toimivaa Arduino-yhteensopivaa ATTiny85-mikro-ohjainta voidaan käyttää lampun tehontarpeen hallintaan. Ensimmäinen prosessori käsittelee ulkoisen laitteiston tunnistustietoa ympäristöstä, ja toinen yrittää kerätä eniten energiaa auringosta päivän aikana ja sitten ohjata suuritehoisen LED-valon, kun akku tyhjenee yöllä. Toinen prosessori suorittaa tehtävänsä käyttämällä sumean logiikan ohjausta. Molempien sirujen ohjelmisto on kehitetty yksinomaan XOD -ympäristössä.

Vaihe 1: Tarvittavat materiaalit

Arduino IDE, uusin versio, ATTinyCore -laajennus asennettu "Boards" -hallinnasta

Sparkfun USBTinyISP ATTiny -ohjelmoija, 11801 tai vastaava Sparkfun -tuotesivu

Pololu-säädettävä pienjännitevahvistin, jossa on katkaisutulo, U1V11A tai vastaava Pololu-tuotesivu

Tehokas valkoinen tai RGB -LED jäähdytyselementillä, yleinen anodi, Adafruit 2524 tai vastaava Adafruit -tuotesivu

Mikrosiru ATTiny85 8-nastaisessa DIP-pakkauksessa, 2 Mouserin tuotesivu

8 -nastaiset DIP -IC -liittimet, 2

Irtotavarakondensaattori, 16 v 220 uF

Lähtökondensaattori, 6.3v 47uF

Virtaa rajoittavat vastukset, 50 ohmia 1/4 wattia

i2c-vetovastus, 4.7k, 2

Paneelin jännitteen tunnistusjakajan vastukset, 1/4 wattia, 100k, 470k

Virta -anturivastus, 10 ohmia 1⁄2 wattia 1%: n toleranssi

Ohituskondensaattorit, 0,1uF keraaminen, 2

2 3,7 v 100 mAh litiumioniakku, PKCELL LP401 tai vastaava

Tynnyrin tuloliitin paneelille, 1

Mini-riviliittimet 3”x3” juotoslevylevy ja ohut kiinteäjohtoinen liitäntä

Testaukseen tarvitaan lähes varmasti oskilloskooppi, yleismittari ja penkki

Vaihe 2: Ympäristöasetus

Ympäristöasetus
Ympäristöasetus

XOD-ympäristö ei tue ATTiny-prosessorisarjoja heti pakkauksesta, mutta käyttämällä paria Arduino-universumin kolmannen osapuolen kirjastoa on helppo lisätä tuki tälle AVR-sarjalle. Ensimmäinen askel on asentaa ATTinyCore -kirjasto Arduino IDE: n avattavasta valikosta Työkalut → Hallitus → Hallituksen johtaja. Varmista, että mukana tulevassa kuvassa näkyvät asetukset ovat oikein - muista, että sinun on painettava "Burn bootloader" muuttaaksesi sammutusjännitettä ja kellotaajuuden asetussulakkeita ennen minkään koodin lataamista!

Tämän kirjaston lähdekoodi on saatavilla osoitteessa

Toinen hyödyllinen kirjasto arkistosta on”FixedPoints”, joka on kiinteän pisteen matematiikan kokoamisen aikainen toteutus Arduino-tuetuille prosessoreille. ATTiny -laitteessa on rajallinen SRAM- ja ohjelmamuisti, ja se auttaa paljon lopullisen luonnoksen koon pienentämisessä käyttämällä 2 -tavua kokonaislukua yleiseen tietojen tallennukseen liukulukutyypin sijaan, mikä vaatii 4 tavua AVR: ssä. Suoritusnopeutta on myös parannettava, koska ATTiny-laitteessa ei ole laitteiston kertoyksikköä, vielä vähemmän laitteiston liukulukua!

Lähdekoodi on saatavilla osoitteessa

Opetusohjelma XOD -graafisten luonnosten luomiseen, kääntämiseen ja käyttöönottoon osoitteessa: https://github.com/Pharap/FixedPointsArduino auttaa paljon ymmärtämään, miten mukana olevat lähdetiedostot luotiin.

Vaihe 3: Suunnittelun yleiskatsaus

Suunnittelun yleiskatsaus
Suunnittelun yleiskatsaus
Suunnittelun yleiskatsaus
Suunnittelun yleiskatsaus

Taululla kaksi ATTiny85 -prosessoria on yhdistetty i2c -liitännän kautta, ja niitä käytetään yhdessä hallitsemaan aurinkopaneelin jännitettä, virranmuuttajaa, joka virtaa akkuun tehosuuntaajasta, kun paneeli on valaistu, akun jännitettä ja akkua lämpötila.

Boost-muunnin on valmismoduuli, joka perustuu Texas Instruments TPS6120 IC -tekniikkaan, joka voi ottaa jopa 0,5 voltin syöttöjännitteen ja nostaa sen mihin tahansa 2 voltista 5 volttiin. Anturin ydin käsittää useita toiminnallisia lohkoja. Pääkello alkaa toimia heti, kun tehonmuuntimeen syötetään virtaa aurinkopaneelitulosta. Tämä aloittaa luonnoksen suorittamisen, ja ensimmäinen asia on selvittää, onko paneeli valaistu tarpeeksi latausvirran tuottamiseksi akulle.

Aurinkopaneelin jännite välitetään kahden digitaalisen suodattimen kautta, ja jos se ylittää tietyn kynnyksen, järjestelmä määrittää, että paneeli on valaistu, ja sulkee pääkellon virtamittariin. Tämä on sirun analogi -digitaalimuunninkanava, joka on konfiguroitu eri tavalla, joka tunnistaa jännitteen 10 ohmin 1% toleranssivastuksen yli, joka on kytketty sarjaan tehostusmuuntimen lähdön ja akun tulon väliin. Kun paneeli ei ole valaistu, tämä ATTiny lähettää signaalin toiselle ATTiny -käskylle, että se valvoo LED -virtaa lataustehon sijasta ja sammuta tehostin ja eristä tulo, jotta akku ei lähetä virtaa takaisin paneelin läpi.

Toisessa ATTiny -ytimessä LED -ohjain ja akun varauksen valvontajärjestelmä toimivat. Paneelin jännite, akun jännite ja akun latausvirta lähetetään tälle ytimelle käsiteltäväksi sumean logiikan verkon kautta, joka yrittää luoda sopivan PWM-signaalin käytettäväksi SHTDN-nastassa ja ohjaa siten akulle lähetettävän virran määrää sen lataaminen valaistuna-perusmuoto maksimaalisen tehopisteen seurannassa (MPPT.) Se vastaanottaa myös signaalin anturin ytimestä, joka kertoo, pitäisikö sen kytkeä LED päälle tai pois päältä riippuen anturin ytimen päivästä/ yön flip floppi.

Kun LED on aktiivinen yöllä, tämä ATTiny valvoo sen kaverin lähettämiä akun jännitetietoja ja omaa sirulla olevaa lämpötila-anturia saadakseen karkean arvion siitä, kuinka paljon virtaa LED-valoon työnnetään (akun jännite laskee ja sirun lämpötila nousee, kun virta vedetään ulos nastoista.) LED-PWM-laastariin liittyvä sumea logiikkaverkko yrittää arvioida, kuinka paljon akkuvirtaa on vielä saatavilla, ja vähentää LED-valon voimakkuutta, kun akku on tyhjä.

Vaihe 4: Mukautettujen korjaustiedostojen luominen XOD -ydinkirjastosta

Mukautettujen korjaustiedostojen luominen XOD -ydinkirjastosta
Mukautettujen korjaustiedostojen luominen XOD -ydinkirjastosta
Mukautettujen korjaustiedostojen luominen XOD -ydinkirjastosta
Mukautettujen korjaustiedostojen luominen XOD -ydinkirjastosta

Tätä suunnittelua varten käytettiin useita mukautettuja korjaussolmuja, joista osa voidaan helposti rakentaa kokonaan sisällytetyistä XOD -solmuista, ja jotkut toteutettiin C ++: ssa.

Ensimmäinen kahdesta mukautetusta korjaussolmusta kuvissa on eksponentiaalisen liukuvan keskiarvon suodattimen toteutus. Tämä on matalalentokykyinen alipäästösuodatin, jota käytetään luonnoksessa sarjassa, kerran suodattamaan tulevan aurinkopaneelin jännite logiikkaytimelle ja jälleen syöttämään laukaisinta, joka määrittää pitkän aikavälin ympäristön valaistuksen. Katso eksponentiaalinen tasoitus Wikipedia -kohdasta.

Kuvan solmurakenne on vain suora graafinen esitys artikkelin siirtofunktiosta, joka on yhdistetty toisiinsa käyttämällä linkkejä sopivista tuloista lähtöihin. Kirjastosta löytyy lykkäämissolmu, joka mahdollistaa palautesilmukan luomisen (XOD varoittaa sinua, jos luot palautesilmukan lisäämättä silmukkaan viivettä, kuten XOD -suoritusmallissa on kuvattu.) laastari toimii hyvin, se on yksinkertaista.

Toinen mukautettu korjaussolmu on muunnelma XOD: n mukana toimitetussa varastossa olevasta flip-flopista, joka syötetään suodatetun paneelin jännitteellä. Se lukittuu korkealle tai matalalle riippuen siitä, onko tulosignaali tietyn kynnyksen ylä- tai alapuolella. Cast -solmuja käytetään muuntamaan Boolen lähtöarvot pulssitietotyyppiksi laukaistakseen flip flopin, kun tila siirtyy alhaisesta korkeaan. Tämän korjaussolmun suunnittelun pitäisi toivottavasti olla kuvakaappauksesta hieman itsestään selvää.

Vaihe 5: Mukautettujen korjaustiedostojen luominen C ++: lla

Mukautettujen korjaustiedostojen luominen C ++: lla
Mukautettujen korjaustiedostojen luominen C ++: lla

Erityisvaatimuksissa, joissa tarvittavat solmutoiminnot olisivat liian monimutkaisia kuvaamaan helposti graafisesti tai jotka perustuvat Arduino-kirjastoihin, jotka eivät ole alkuperäisiä Arduino-ympäristössä, XOD helpottaa niiden, joilla on jonkin verran C/C ++ -tietoja, kirjoittaa purentakokoisia paloja koodi, joka voidaan integroida korjaustiedostoon samalla tavalla kuin mikä tahansa muu käyttäjän luoma tai varastosolmu. Valitsemalla "luo uusi korjaustiedosto" tiedostovalikosta luodaan tyhjä arkki, jota voidaan käyttää, ja syöttö- ja lähtösolmut voidaan vetää sisään ydinkirjaston "solmut" -osasta. Sitten "ei-toteutettu-in-xod" -solmu voidaan vetää sisään, ja kun sitä napsautetaan, se tuo esiin tekstieditorin, jossa vaaditut toiminnot voidaan toteuttaa C ++: ssa. Tässä käsitellään sisäisen tilan käsittelyä ja tulo- ja lähtöporttien käyttöä C ++ -koodista.

Esimerkkinä mukautettujen korjaustiedostojen käyttöönotosta C ++: ssa käytetään kahta muuta mukautettua korjaustiedostoa ohjaimen ytimelle arvioiden esittämiseksi ohjaimen ytimen syöttöjännitteestä ja ytimen lämpötilasta. Sen sumean verkon lisäksi tämä mahdollistaa karkean arvion jäljellä olevasta akkuvirrasta, joka on käytettävissä LEDien käyttämiseen pimeässä.

Lämpötila -anturilaastariin syötetään myös syöttöjänniteanturin ulostulo paremman arvion saamiseksi - tunnistavan ytimen lämpötilan avulla voimme saada karkean arvion siitä, kuinka paljon valoa LED -valot palavat, ja yhdistettynä syöttöjännitteen lukemaan, kun kun akku loppuu, karkea arvio siitä, kuinka paljon akkua on jäljellä. Sen ei tarvitse olla erittäin tarkka; Jos ydin "tietää", että LEDit käyttävät paljon virtaa, mutta akun jännite laskee nopeasti, on luultavasti turvallista sanoa, että akkuvirta ei kestä kovin kauan, ja on aika sammuttaa lamppu.

Vaihe 6: Rakentaminen

Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen

Rakensin projektin pienelle prototyyppilevyn palalle, jossa oli kuparityynyjä reikäosille. Liitäntöjen käyttäminen IC: lle auttaa paljon ohjelmointiin/muokkaamiseen/testaamiseen; Sparkfunin USBTiny -Internet -palveluntarjoajalla on samanlainen pistorasia, joten kahden sirun ohjelmointi koostuu vain ohjelmoijan kytkemisestä PC: n USB -porttiin, lähetetyn XOD -koodin lataamisesta mukana tulevista Arduino.ino -tiedostoista asianmukaisilla levy- ja ohjelmointiasetuksilla ja irrota sitten sirut varovasti ohjelmointirasiasta ja työnnä ne protoboard -kantoihin.

Pololu TPS6120 -pohjainen tehostusmuunninmoduuli toimitetaan nousupaneelilla, joka on juotettu protoboardiin nastojen otsikoissa, joten on mahdollista säästää tilaa asentamalla joitakin komponentteja sen alle. Prototyypille laitoin kaksi 4,7 k: n vetovoimaa alla. Näitä tarvitaan, jotta sirujen välinen i2c -väylä toimisi oikein - kommunikointi ei toimi oikein ilman niitä! Levyn oikealla puolella on aurinkopaneelin pistokkeen ja sisääntulokondensaattorin tuloliitin. On parasta yrittää liittää liitin ja tämä korkki suoraan yhteen juotoksen "kulkujen" kautta, ei kytkentäjohtoa, jotta saadaan mahdollisimman pieni vastus. Kiinteää juotosta käytetään sitten kytkemään tallennuskondensaattorin positiivinen napa suoraan tehostusmoduulin tulojänniteliittimeen ja tehostusmoduulin maadoitusnasta suoraan liittimen maadoitusnastaan.

Molempien ATTinys -pistorasioiden oikealla ja vasemmalla puolella on 0,1 uF: n hajoamis-/purkukondensaattorit. Nämä komponentit ovat myös tärkeitä, jotta niitä ei jätetä pois, ja ne on liitettävä IC -virtalähteisiin ja maadoitusliittimiin mahdollisimman lyhyen ja suoran polun kautta. 10 ohmin virran tunnistusvastus on vasemmalla puolella, tämä on kytketty tehonmuuntimen ulostulon mukaisesti ja molemmat puolet on kytketty anturin ytimen sisääntulonastaan - nämä nastat on asetettu toimimaan differentiaalisena ADC: nä epäsuoraan virtaa akkuun. Liitännät i2c-väylän IC-nastojen ja tehostusmuuntimen sulkutapin jne. Välillä voidaan tehdä käyttämällä liitäntäjohtoa protoboardin alapuolella, erittäin ohut kiinteäydinliitäntäjohto toimii erinomaisesti tähän. Se tekee muutoksista helpompaa ja näyttää myös paljon siistimmältä kuin puseroiden juokseminen yläreunan välissä.

Käyttämäni LED-moduuli oli kolmivärinen RGB-yksikkö, suunnitelmani oli saada kaikki kolme LEDiä aktiivisiksi tuottamaan valkoisia, kun akku oli lähes täyteen ladattu, ja sammuttamaan hitaasti sininen LED keltaiseksi, kun varaus oli loppunut. Mutta tätä ominaisuutta ei ole vielä otettu käyttöön. Yksittäinen valkoinen LED, jossa on yksi virranrajoitusvastus, toimii myös OK.

Vaihe 7: Testaus, osa 1

Testaus, osa 1
Testaus, osa 1

Kun olet ohjelmoinut molemmat ATTiny -piirit mukana toimitetuilla luonnostiedostoilla Arduino -ympäristön USB -ohjelmoijan kautta, se auttaa testaamaan, että prototyypin kaksi ydintä toimivat oikein ennen kuin yrität ladata akkua aurinkopaneelista. Ihannetapauksessa tämä vaatii perus oskilloskoopin, yleismittarin ja penkki -virtalähteen.

Ensimmäinen asia, joka on tarkistettava, on, ettei kortilla ole oikosulkuja missään vaiheessa ennen kuin liität IC: t, akun ja paneelin pistorasioihin mahdollisten vaurioiden välttämiseksi! Helpoin tapa tehdä tämä on käyttää penkkivirtalähdettä, joka voi rajoittaa sen lähtövirran turvalliseen arvoon tilanteessa. Käytin aurinkopaneelin syöttöliittimiin kytkettyä 3 voltin ja 100 mA: n raja -arvoa positiiviseen ja negatiiviseen virtalähteeseen. Kun mitään muuta kuin passiivisia komponentteja ei ole asennettu, virtalähteen virtanäytössä ei pitäisi olla mitään virrankulutusta. Jos virta on merkittävä tai syöttö menee virranrajoitukseen, jotain on mennyt pieleen ja kortti on tarkistettava, ettei ole kytketty väärin kytkettyjä liitoksia tai kondensaattoreita, joiden napaisuus on päinvastainen.

Seuraava askel on varmistaa, että tehostusmuunnin toimii oikein. Levyssä on ruuvipotentiometri, virtalähde edelleen kytkettynä ja neljä muuntimen nastaa liitetty asianmukaisesti, potentiometriä tulee kääntää pienellä ruuvimeisselin kärjellä, kunnes jännite moduulin lähtöliittimessä lukee noin 3,8-3,9 volttia. Tämä tasavirta -arvo ei muutu käytön aikana, ohjaimen ydin ohjaa keskimääräistä lähtöjännitettä sykkimällä moduulin sulkutappia.

Vaihe 8: Testaus, osa 2

Testaus, osa 2
Testaus, osa 2
Testaus, osa 2
Testaus, osa 2

Seuraavaksi on tarkistettava, että i2c -tiedonsiirto toimii OK, ja levyn virta pois penkiltä voi anturin ytimen IC asentaa. Oskilloskoopilla fyysisen sirun nastassa 5 ja nastassa 7 pitäisi olla sykkiviä signaaleja, tämä sirun i2c -ohjain yrittää lähettää tietoja kaverilleen. Ajurin ytimen sammuttamisen jälkeen voidaan asentaa ydin ja tarkistaa liitäntä oskilloskoopilla uudelleen, molemmilla linjoilla pitäisi olla suurempi pulssisarja. Tämä tarkoittaa, että sirut kommunikoivat oikein.

Se auttaa akkua lataamaan hieman viimeistä täyttä testiä varten. Tätä varten voidaan käyttää myös penkkisyöttöä, kun virtaraja on noin 50 mA ja jännite edelleen 3,8 volttia, jolloin LiPo -akku on kytketty suoraan muutaman minuutin ajaksi.

Viimeinen vaihe on testata koko järjestelmä - kaikki kytkettyinä, jos paneeli on peitetty kymmenen tai 15 sekunnin ajan, valon pitäisi syttyä kuljettajan ytimen PWM -lähdön kautta. Kun paneeli on kirkkaassa auringonvalossa, akun pitäisi ladata tehostinmuuntimen lähdöstä. Sumea logiikkaverkko voidaan epäsuorasti tarkistaa, toimiiko se oikein tarkastelemalla PWM -linjaa, joka ohjaa tehonmuuntimen sammutustappia; kun valaistus lisääntyy akun ollessa matala lataustila, pulssin leveyden pitäisi kasvaa, mikä osoittaa, että kun auringonvalosta tulee enemmän virtaa, kuljettajan ydin ilmoittaa, että akkuun tulee lähettää enemmän virtaa!

Vaihe 9: Liite sumeasta logiikasta

Liite sumeasta logiikasta
Liite sumeasta logiikasta

Sumuinen logiikka on koneoppimistekniikka, jota voidaan käyttää laitteistojärjestelmien hallintaan, kun monet ohjattavan järjestelmän parametrit ovat epävarmoja, mikä antaa nimenomaisen panoksen tulosten ohjausratkaisuun tavoitteen vaikeaksi kirjoittaa matemaattisesti. Tämä saavutetaan käyttämällä loogisia arvoja, jotka ovat välillä 0 (epätosi) ja 1 (tosi), ilmaisemalla epävarmuutta arvossa, joka on enemmän kuin ihminen ("enimmäkseen totta" tai "ei todellakaan") ja sallimalla harmaan alueen väitteiden välillä, jotka ovat 100% totta ja 100% vääriä. Tämä saavutetaan ottamalla ensin näytteitä syöttömuuttujista, joihin päätös on perustuttava, ja "sumentamalla" ne.

Minkä tahansa sumean logiikkajärjestelmän ydin on”sumea assosiatiivinen muisti”. Tämä muistuttaa matriisia, johon akun latauspiirin tapauksessa tallennetaan 3x3 arvosarja välillä 0-1. Matriisin arvot voidaan yhdistää karkeasti siihen, miten ihminen pohtisi tehostimen muuntimen SHTDN -tappia hallitsevan PWM -tekijän olevan sen mukaan, miten yllä oleva jäsenfunktio täyttää tietyn syöttöjoukon. Jos esimerkiksi paneelin tulojännite on korkea, mutta akkuun vedettävä virta on alhainen, se todennäköisesti tarkoittaa, että virtaa voidaan ottaa enemmän ja PWM -asetus ei ole optimaalinen ja sitä on lisättävä. Päinvastoin, jos paneelin jännite laskee, mutta laturi yrittää edelleen työntää suurta virtaa akkuvirtaan, se myös hukkaantuu, joten olisi parasta vähentää PWM -signaalia tehonmuuntimeen. Kun tulosignaalit on "sumennettu" sumeaksi joukkoksi, ne kerrotaan näillä arvoilla, samalla tavalla kuin vektori kerrotaan matriisilla, muodostaen muunnetun joukon, joka edustaa kuinka paljon "tieto" sisälsi solun matriisin tulee ottaa huomioon lopullisessa yhdistelmäfunktiossa.

"Not-implement-in-xod" -solmun käyttäminen, jonka avulla XOD-solmut, jotka toteuttavat mukautettuja toimintoja liian monimutkaisiksi ollakseen kohtuullisia tehdä varastosta, ja pieni Arduino-tyylinen C ++, assosiatiivinen muisti, painotusfunktio ja " sumutin ", joka on samanlainen kuin tässä viitteessä kuvatut lohkot: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940, on helppo tehdä ja kokeilla paljon helpommin.

Suositeltava: