Obsah:

Nabíjateľná solárna lampa napájaná XOD: 9 krokov (s obrázkami)
Nabíjateľná solárna lampa napájaná XOD: 9 krokov (s obrázkami)

Video: Nabíjateľná solárna lampa napájaná XOD: 9 krokov (s obrázkami)

Video: Nabíjateľná solárna lampa napájaná XOD: 9 krokov (s obrázkami)
Video: Mens Casio G-SHOCK MT-G Коллекция Магма Океан | 35-я годовщина MTGB1000... 2024, Júl
Anonim
Dobíjacia solárna lampa napájaná XOD
Dobíjacia solárna lampa napájaná XOD

Vo väčšine obchodov s domácim tovarom a železiarstvom sú k dispozícii lacné solárne záhradné/chodníkové žiarovky. Ale ako hovorí staré príslovie, zvyčajne dostanete to, za čo zaplatíte. Zvyčajné nabíjacie a osvetľovacie obvody, ktoré používajú, sú jednoduché a lacné, ale svetelný výkon, ktorý získate, nie je ničím pôsobivým (a sotva stačí, aby ktokoľvek, kto používa váš chodník, videl, kam ide!)

Toto je môj pokus o navrhnutie modulu osvetlenia mimo mriežky, ktorý je významným zlepšením, pričom je stále relatívne lacný. Tým, že mu dáte nejaké „mozgy“. XOD.io je nové IDE kompatibilné s vstavanou vývojovou platformou Arduino, kde môžete kód „písať“graficky. Prostredie transponuje váš grafický náčrt do moderného jazyka C ++, ktorý je pozoruhodne účinný pri vytváraní kompaktného kódu, a generuje zdroj plne kompatibilný so štandardným IDE Arduino bez toho, aby vyžadoval ďalšie externé závislosti. Takýmto spôsobom je možné použiť aj malé, lacné mikrokontroléry s obmedzenými prostriedkami na ukladanie programov a dát na vykonávanie komplexných úloh.

Tento projekt ukazuje, ako je možné použiť dva mikrokontroléry ATTiny85 kompatibilné s Arduino na riadenie energetických požiadaviek žiarovky. Prvý procesor spracováva údaje o prostredí z externého hardvéru a druhý sa pokúša zozbierať čo najviac energie zo slnka počas dňa a potom ovládať osvetlenie vysoko výkonnej LED diódy, keď sa v noci vybíja akumulátor. Druhý procesor plní svoju úlohu prostredníctvom kompaktnej implementácie riadenia „fuzzy logiky“. Software pre oba čipy bol vyvinutý výhradne v prostredí XOD.

Krok 1: Požadovaný materiál

Arduino IDE, najnovšia verzia, s rozšírením ATTinyCore nainštalovaným zo správcu „Dosky“

Programátor Sparkfun USBTinyISP ATTiny, 11801 alebo ekvivalentná stránka produktu Sparkfun

Pololu nastaviteľný nízkonapäťový zosilňovač s vypínacím vstupom, U1V11A alebo ekvivalentnou stránkou produktu Pololu

Vysokovýkonná biela alebo RGB LED s chladičom, spoločnou anódou, stránkou produktu Adafruit 2524 alebo ekvivalentnou stranou

Mikročip ATTiny85 v 8-kolíkovom DIP balení, stránka produktu 2 Mouser

8 kolíkové zásuvky DIP IC, 2

Hromadný úložný kondenzátor, 16 v 220 uF

Výstupný kondenzátor, 6,3 V, 47uF

Rezistory obmedzujúce prúd, 50 ohmov 1/4 wattu

vyťahovacie odpory i2c, 4,7 k, 2

Panelové odpory rozdeľujúce snímanie napätia, 1/4 W, 100k, 470k

Rezistor na snímanie prúdu, tolerancia 10 ohmov 1⁄2 wattu 1%

Bypass kondenzátory, 0,1uF keramické, 2

2 3,7 V 100mAh lítium-iónová nabíjateľná batéria, PKCELL LP401 alebo ekvivalent

Vstupný konektor hlavne pre panel, 1

Mini svorkovnice doštičky s plošnými spojmi 3 x 3 palce a tenký drôt s pevným jadrom na vytváranie spojení

Na testovanie bude takmer určite potrebný osciloskop, multimetr a napájanie na stole

Krok 2: Nastavenie prostredia

Nastavenie prostredia
Nastavenie prostredia

Prostredie XOD nepodporuje sériu procesorov ATTiny hneď po vybalení, ale pomocou niekoľkých knižníc tretích strán z vesmíru Arduino je jednoduché pridať podporu pre túto sériu AVR. Prvým krokom je inštalácia knižnice „ATTinyCore“z rozbaľovacej ponuky „Nástroje → Board → Board Manager” v Arduino IDE. Uistite sa, že nastavenia zobrazené na priloženom obrázku sú správne - pamätajte na to, že pred odoslaním akéhokoľvek kódu musíte stlačiť „Burn bootloader“, aby ste zmenili poistky nastavenia napätia a rýchlosti hodín.

Zdrojový kód tejto knižnice je dostupný na:

Ďalšou užitočnou knižnicou z úložiska je „FixedPoints“, čo je implementácia matematiky pevných bodov v čase kompilácie pre procesory podporované Arduino. ATTiny má obmedzenú pamäť SRAM a program a veľmi pomáha pri zmenšovaní konečnej veľkosti náčrtu na používanie 2 bajtov celého čísla na všeobecné ukladanie údajov, a nie na typ s pohyblivou rádovou čiarkou, ktorý na AVR vyžaduje 4 bajty. Mala by sa tiež zlepšiť rýchlosť vykonávania, pretože ATTiny nemá jednotku na násobenie hardvéru, oveľa menej hardvéru s pohyblivou rádovou čiarkou!

Zdrojový kód je k dispozícii na:

Tutoriál o tom, ako vytvárať, prekladať a nasadzovať grafické skice XOD na adrese: https://github.com/Pharap/FixedPointsArduino, veľmi pomôže pri pochopení toho, ako boli vytvorené zahrnuté zdrojové súbory.

Krok 3: Prehľad dizajnu

Prehľad dizajnu
Prehľad dizajnu
Prehľad dizajnu
Prehľad dizajnu

Na doske sú dva procesory ATTiny85 prepojené cez rozhranie i2c a slúžia spoločne na riadenie snímania napätia solárneho panelu, prúdu tečúceho do batérie z posilňovacieho meniča, keď je panel osvetlený, napätia batérie a batérie. teplota.

Zosilňovač je štandardný modul založený na Texas Instruments TPS6120 IC, ktorý dokáže zachytiť vstupné napätie až 0,5 voltu a zvýšiť ho kdekoľvek od 2 voltov do 5 voltov. Jadro senzora obsahuje niekoľko funkčných blokov. Hlavné hodiny začnú bežať, akonáhle je napájanie zosilňovača zapojené zo vstupu solárneho panelu. Spustí sa spustenie náčrtu a prvou vecou je zistiť, či je panel dostatočne osvetlený, aby poskytoval nabíjací prúd batérii.

Napätie solárneho panelu prechádza dvoma digitálnymi filtrami a ak je nad určitou prahovou hodnotou, systém určí, že panel je osvetlený, a prepne hlavné hodiny na monitor snímania prúdu. Toto je kanál analógovo -digitálneho prevodníka čipu, nakonfigurovaný odlišne, ktorý sníma napätie na 10 ohmovom tolerančnom odpore 1% zapojenom v sérii medzi výstupom zosilňovača a vstupom batérie. Keď panel nie je osvetlený, tento ATTiny vyšle signál druhému ATTinymu, ktorý mu hovorí, aby namiesto nabíjania monitoroval napájanie LED a vypol zosilňovač a izoloval vstup, aby batéria neposielala prúd späť cez panel..

Druhé jadro ATTiny je miesto, kde funguje kontrolér LED a systém monitorovania nabitia batérie. Údaje o napätí panela, napätí batérie a nabíjacom prúde batérie sa odosielajú do tohto jadra na spracovanie prostredníctvom fuzzy-logickej siete, ktorá sa pokúša vygenerovať vhodný signál PWM, ktorý sa aplikuje na pin SHTDN, čím sa kontroluje množstvo prúdu odosielaného do batérie. nabíjať ho, keď je osvetlený-základná forma sledovania maximálneho výkonového bodu (MPPT.) Tiež prijíma signál z jadra senzora, ktorý mu hovorí, či má zapnúť alebo vypnúť LED diódu, v závislosti od výkonu dňa jadra senzora/ nočný šľapák.

Keď je LED dióda v noci aktívna, tento ATTiny monitoruje údaje o napätí batérie, ktoré mu boli zaslané od jeho kamaráta a vlastného teplotného senzora na čipe, aby získal hrubý odhad, koľko energie sa do LED tlačí (napätie batérie klesá a teplota čipu sa zvyšuje s prúdom odoberaným z jeho kolíkov.) Fuzzy-logická sieť spojená s LED PWM záplatou sa pokúša posúdiť, koľko energie batérie je ešte k dispozícii, a znižovať intenzitu LED, keď je batéria vybitá.

Krok 4: Vytváranie vlastných opráv z základnej knižnice XOD

Vytváranie vlastných opráv z základnej knižnice XOD
Vytváranie vlastných opráv z základnej knižnice XOD
Vytváranie vlastných opráv z základnej knižnice XOD
Vytváranie vlastných opráv z základnej knižnice XOD

Na tento návrh bolo použitých niekoľko vlastných uzlov opráv, z ktorých niektoré je možné ľahko skonštruovať výlučne z priložených uzlov XOD a niektoré boli implementované v jazyku C ++.

Prvý z dvoch vlastných uzlov opráv na obrázkoch implementácia exponenciálneho filtra kĺzavého priemeru. Jedná sa o nízkopriepustný dolnopriepustný digitálny filter, ktorý sa v náčrte používa sériovo, raz na filtrovanie prichádzajúceho napätia solárneho panelu pre logické jadro a ešte raz na napájanie spúšte, ktorá určuje dlhodobé osvetlenie okolia. Pozrite si článok Wikipedia o exponenciálnom vyhladzovaní.

Štruktúra uzla na obrázku je len priamym grafickým znázornením prenosovej funkcie v článku, prepojenej pomocou odkazov z príslušných vstupov na výstupy. Z knižnice je odkladací uzol, ktorý umožňuje vytvorenie slučky spätnej väzby (XOD vás upozorní, ak vytvoríte spätnú väzbu bez vloženia oneskorenia do slučky, ako je to popísané v modeli vykonávania XOD.) S týmto detailom sa postaráme o patch funguje dobre, je to jednoduché.

Druhý vlastný patch uzol je variácia na klopnom obvode zásobníka zahrnutom v XOD, ktorý je napájaný filtrovaným napätím panela. Blokuje vysoko alebo nízko v závislosti od toho, či je vstupný signál nad alebo pod určitou prahovou hodnotou. Castové uzly sa používajú na konverziu booleovských výstupných hodnôt na typ impulzných údajov na spustenie klopného obvodu, pretože stav prechádza z nízkeho na vysoký. Dizajn tohto opravného uzla by mal byť dúfajme, že by mal byť z obrázku samovysvetľujúci.

Krok 5: Vytváranie vlastných opráv pomocou C ++

Vytváranie vlastných opráv pomocou C ++
Vytváranie vlastných opráv pomocou C ++

Pri špeciálnych požiadavkách, kde by potrebná funkčnosť uzla bola príliš zložitá na to, aby sa dalo ľahko graficky znázorniť, alebo ktorá sa spolieha na knižnice Arduino, ktoré nie sú pôvodné v štandardnom prostredí Arduino, XOD uľahčuje tým, ktorí majú určité znalosti C/C ++, písať bloky veľkosti bite kód, ktorý potom môže byť integrovaný do opravy, rovnako ako ktorýkoľvek iný užívateľsky vytvorený alebo akciový uzol. Výberom možnosti „vytvoriť novú opravu“z ponuky súborov sa vytvorí prázdny list, s ktorým sa bude pracovať, a vstupné a výstupné uzly je možné pretiahnuť z časti „uzly“základnej knižnice. Potom je možné uzol „neimplementovaný v xod“vtrhnúť a po kliknutí naň sa zobrazí textový editor, v ktorom je možné implementovať požadovanú funkcionalitu v jazyku C ++. Tu je popísané, ako zvládnuť vnútorný stav a pristupovať k vstupným a výstupným portom z kódu C ++.

Ako príklad implementácie vlastných záplat v C ++ sa na odhad odhadu napájacieho napätia a teploty jadra ovládača používajú dve ďalšie vlastné záplaty pre jadro vodiča. Spolu s jeho fuzzy sieťou to umožňuje hrubý odhad zostávajúcej energie batérie dostupnej na napájanie diód LED, keď je tma.

Náplasť snímača teploty je tiež napájaná výstupom snímača napájacieho napätia, aby sa dosiahol lepší odhad - snímanie teploty jadra nám umožňuje získať hrubý odhad, koľko energie sa spaľuje v diódach LED, a kombinovať s čítaním napájacieho napätia, keď vybitie batérie ďalší hrubý odhad toho, koľko batérie ešte zostáva. Nemusí byť super presný; ak jadro „vie“, že diódy LED odoberajú veľa prúdu, ale napätie batérie rýchlo klesá, pravdepodobne je možné povedať, že energia z batérie nebude trvať oveľa dlhšie a je načase lampu vypnúť.

Krok 6: Konštrukcia

Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia

Projekt som postavil na malom kúsku prototypovej dosky s medenými podložkami pre diely s priechodnými otvormi. Použitie zásuviek pre integrované obvody veľmi pomáha pri programovaní/úprave/testovaní; USBTiny ISP od Sparkfun má na svojej doske podobnú zásuvku, takže programovanie dvoch čipov spočíva iba v zapojení programátora do USB portu počítača, nahraní preloženého kódu XOD z priložených súborov Arduino.ino s príslušnými nastaveniami dosky a programátora a potom jemne vyberte čipy zo zásuvky programátora a vložte ich do zásuviek protoboardu.

Modul zosilňovača zosilňovača Pololu TPS6120 sa dodáva na stúpačke spájkovanej do protoboardu na kolíkových konektoroch, takže je možné ušetriť miesto namontovaním niektorých komponentov pod ním. Na svoj prototyp som umiestnil dva 4,7k pullup rezistory pod. Tieto sú potrebné pre správnu funkciu zbernice i2c medzi čipmi - komunikácia bez nich nebude fungovať správne! Na pravej strane dosky je vstupný konektor pre zástrčku solárneho panelu a vstupný úložný kondenzátor. Najlepšie je pokúsiť sa pripojiť konektor a tento kryt priamo k sebe pomocou „chodov“spájky, nie pomocou prepojovacieho drôtu, aby ste získali cestu s čo najmenším odporom. Série pevnej spájky sa potom použijú na pripojenie kladného pólu úložného kondenzátora priamo na svorku vstupného napätia zosilňovacieho modulu a uzemňovací kolík zosilňovacieho modulu priamo na uzemňovací kolík konektora.

Vpravo a vľavo od zásuviek pre dva ATTinys sú kondenzátory despike/deglitching 0,1uF. Tieto súčasti je tiež dôležité nevynechať a mali by byť pripojené k napájacím a uzemňovacím kolíkom integrovaných obvodov čo najkratšou a najpriamejšou cestou. Rezistor snímania prúdu 10 ohmov je vľavo, je zapojený v súlade s výstupom z posilňovacieho prevodníka a každá strana je pripojená k vstupnému kolíku jadra snímača - tieto kolíky sú nastavené tak, aby fungovali ako diferenciálny ADC na nepriame meranie prúd do batérie. Pripojenie medzi pinmi IC pre zbernicu i2c a vypínacím kolíkom zosilňovača atď. Je možné vykonať pomocou prepojovacieho drôtu na spodnej strane protoboardu, veľmi tenký prepojovací vodič s pevným jadrom na to slúži. Uľahčuje zmeny a tiež vyzerá oveľa elegantnejšie ako behanie prepojok medzi otvormi na vrchu.

LED modul, ktorý som použil, bola trojfarebná jednotka RGB. Mojim plánom bolo, aby všetky tri LED diódy boli aktívne, aby produkovali bielu farbu, keď je batéria takmer úplne nabitá, a pomaly vybledla modrá LED dióda na žltú, keď sa vybíjala batéria. Táto funkcia však ešte musí byť implementovaná. Jedna biela LED s jedným odporom obmedzujúcim prúd bude fungovať tiež v poriadku.

Krok 7: Testovanie, časť 1

Testovanie, časť 1
Testovanie, časť 1

Po naprogramovaní oboch integrovaných obvodov ATTiny pomocou priložených súborov náčrtu pomocou programátora USB z prostredia Arduino pomáha otestovať, či dve jadrá prototypu fungujú správne, a až potom sa pokúsiť nabiť batériu zo solárneho panelu. V ideálnom prípade to vyžaduje základný oscilloskop, multimetr a stolné napájanie.

Prvá vec, ktorú musíte skontrolovať, je, že pred zapojením integrovaných obvodov, batérie a panelu do ich zásuviek nie sú nikde na doske žiadne skraty, aby sa zabránilo možnému poškodeniu! Najjednoduchší spôsob, ako to urobiť, je použiť stolný napájací zdroj, ktorý môže v prípade takejto situácie obmedziť jeho výstupný prúd na bezpečnú hodnotu. Použil som svoj stolný zdroj nastavený na 3 volty a limit 100 mA pripojený k svorkám vstupného konektora solárneho panelu na kladné a záporné napájacie vodiče. Keďže nie je nainštalované nič iné ako pasívne komponenty, na aktuálnom monitore napájania by nemalo byť v podstate registrované žiadne odoberanie prúdu. Ak existuje značný tok prúdu alebo napájanie obmedzuje prúd, niečo sa pokazilo a mali by ste skontrolovať dosku, aby ste sa uistili, že nie sú nesprávne zapojené pripojenia alebo kondenzátory s opačnou polaritou.

Ďalším krokom je zaistiť správnu funkciu zosilňovača. Na doske je skrutkovací potenciometer, pričom napájanie je stále pripojené a štyri piny meniča sú pripojené primerane. Potenciometer by sa mal otáčať malým hrotom skrutkovača, kým napätie na výstupnej svorke modulu nedosiahne hodnotu 3,8 až 3,9 voltu. Táto hodnota DC sa počas prevádzky nezmení, jadro budiča bude ovládať priemerné výstupné napätie pulzovaním vypínacieho kolíka modulu.

Krok 8: Testovanie, časť 2

Testovanie, časť 2
Testovanie, časť 2
Testovanie, časť 2
Testovanie, časť 2

Ďalšou vecou, ktorú je potrebné skontrolovať, je, že komunikácia i2c funguje dobre, keď je doska vybitá, je možné nainštalovať IC jadra senzora. Na osciloskope by mali byť pulzné signály na pine 5 aj na pine 7 fyzického čipu, tento i2c ovládač na čipe sa pokúša odoslať údaje svojmu kamarátovi. Po vypnutí je možné nainštalovať jadro ovládača a znova skontrolovať pripojenie osciloskopom, na oboch riadkoch by mala byť viditeľná väčšia sekvencia impulzov. To znamená, že čipy komunikujú správne.

Na úplný úplný test pomôže batéria mierne nabitá. Na tento účel je možné použiť aj stolové napájanie, pričom prúdový limit je nastavený na približne 50 mA a napätie je stále na 3,8 voltu, pričom batéria LiPo je na niekoľko minút priamo pripojená.

Posledným krokom je testovanie celého systému - so všetkým, čo je pripojené, ak je panel zakrytý na desať alebo 15 sekúnd, svetlo by sa malo rozsvietiť a byť poháňané prostredníctvom výstupu PWM jadra vodiča. Keď je panel na jasnom slnečnom svetle, batéria by sa mala nabíjať z výstupu zosilňovača. Fuzzy logickú sieť je možné nepriamo skontrolovať, či funguje správne, a to pohľadom na linku PWM poháňajúcu vypínací kolík zosilňovača; Ako sa osvetlenie zvyšuje s batériou s nízkym stavom nabitia, šírka impulzu by sa mala zväčšiť, čo ukazuje, že keď je slnečné svetlo k dispozícii viac energie, jadro vodiča signalizuje, že do batérie by malo byť odoslané viac energie!

Krok 9: Príloha k fuzzy logike

Príloha k fuzzy logike
Príloha k fuzzy logike

Fuzzy logika je technika strojového učenia, ktorú je možné použiť pri riadení hardvérových systémov tam, kde existuje neistota v mnohých parametroch systému, ktorý je riadený, čo robí explicitné riešenie vstupu a výstupu pre cieľ ťažko matematicky zapísateľným. To sa dosiahne použitím logických hodnôt, ktoré spadajú niekde medzi 0 (nepravda) a 1 (pravda), vyjadrením neistoty v hodnote, ktorá sa viac podobá na spôsob, akým by to urobil človek („väčšinou pravdivý“alebo „nie je skutočne pravdivý“), a povolením šedej zóny medzi tvrdeniami, ktoré sú 100% pravdivé a 100% nepravdivé. To sa dosahuje tak, že sa najskôr odoberú vzorky vstupných premenných, na ktorých musí byť založené rozhodnutie, a ich „fuzzifikácia“.

Srdcom každého fuzzy logického systému je „fuzzy asociatívna pamäť“. Pripomína to maticu, kde je v prípade nabíjacieho obvodu batérie uložená sada hodnôt 3x3 v rozmedzí od 0 do 1. Hodnoty v matici môžu byť zhruba spojené s tým, ako by človek uvažoval o tom, aký by mal byť faktor PWM riadiaci pin SHTDN zosilňovača, v závislosti od toho, ako vyššie uvedená členská funkcia kvalifikuje daný súbor vstupov. Ak je napríklad vstupné napätie panela vysoké, ale prúd nasávaný do batérie je nízky, pravdepodobne to znamená, že je možné čerpať viac energie a nastavenie PWM nie je optimálne a malo by sa zvýšiť. Naopak, ak napätie v paneli klesne, ale nabíjačka sa stále pokúša vytlačiť veľký prúd do energie batérie, bude tiež zbytočné, takže by bolo najlepšie znížiť signál PWM do zosilňovača. Akonáhle sú vstupné signály „fuzzifikované“do fuzzy množiny, sú vynásobené týmito hodnotami, podobne ako je spôsob násobenia vektora maticou, aby sa vytvorila transformovaná množina, ktorá je reprezentatívna v tom, ako silne bunka „znalostí“obsahuje matice by sa malo započítať do konečnej kombinovanej funkcie.

Použitie uzla „neimplementované v xod“, ktorý umožňuje uzlom XOD, ktoré implementujú vlastné funkcie, príliš komplikované na to, aby bolo rozumné ich vyrobiť zo stavebných blokov, a trochou Arduino C ++, asociatívnej pamäte, funkcie váženia a „ fuzzifier “podobné blokom opísaným v tomto odkaze: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 je jednoduché na výrobu a je oveľa jednoduchšie s nimi experimentovať.

Odporúča: