Obsah:

Dobíjecí solární lampa napájená XOD: 9 kroků (s obrázky)
Dobíjecí solární lampa napájená XOD: 9 kroků (s obrázky)

Video: Dobíjecí solární lampa napájená XOD: 9 kroků (s obrázky)

Video: Dobíjecí solární lampa napájená XOD: 9 kroků (s obrázky)
Video: Sestavte si vlastní fotovoltaickou minielektrárnu s Conradem 2024, Listopad
Anonim
Dobíjecí solární lampa napájená XOD
Dobíjecí solární lampa napájená XOD

Ve většině obchodů s domácím zbožím a železářstvím jsou k dispozici levné solární zahradní/chodníkové lampy. Ale jak říká staré přísloví, obvykle dostanete to, za co zaplatíte. Obvyklé nabíjecí a osvětlovací obvody, které používají, jsou jednoduché a levné, ale světelný výkon, který získáte, není nic jiného než působivý (a sotva stačí, aby někdo, kdo používá váš chodník, viděl, kam jde!)

Toto je můj pokus navrhnout modul osvětlení mimo mřížku, který je významným zlepšením, a přitom je stále relativně levný. Tím, že tomu dáme nějaké „mozky“. XOD.io je nové IDE kompatibilní s integrovanou vývojovou platformou Arduino, kde můžete kód „psát“graficky. Prostředí převádí váš grafický náčrt do moderního jazyka C ++, který je pozoruhodně účinný při generování kompaktního kódu, a generuje zdroj plně kompatibilní se základním IDE Arduino, aniž by vyžadoval další externí závislosti. Tímto způsobem lze i malé, levné mikrokontroléry s omezenými prostředky pro program a ukládání dat provádět složité úkoly.

Tento projekt ukazuje, jak lze dva mikrokontroléry ATTiny85 kompatibilní s Arduino použít ke správě energetických požadavků lampy. První procesor zpracovává snímání dat prostředí z externího hardwaru a druhý se pokouší získat co nejvíce energie ze slunce během dne a poté ovládat osvětlení vysoce výkonné LED diody, když se v noci vybíjí akumulátor. Druhý procesor plní svou úlohu prostřednictvím kompaktní implementace řízení „fuzzy logiky“. Software pro oba čipy byl vyvinut výhradně v prostředí XOD.

Krok 1: Požadované materiály

Arduino IDE, nejnovější verze, s nainstalovaným rozšířením ATTinyCore ze správce „Boards“

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

Pololu nastavitelný nízkonapěťový zesilovač s vypínacím vstupem, U1V11A nebo ekvivalentní produktovou stránkou Pololu

Vysoce výkonná bílá nebo RGB LED s chladičem, společnou anodou, produktovou stránkou Adafruit 2524 nebo ekvivalentní

Microchip ATTiny85 v 8pólovém DIP balení, 2 produktová stránka Mouser

8pinové zásuvky DIP IC, 2

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

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

Rezistory omezující proud, 50 ohmů 1/4 watt

i2c výsuvné odpory, 4,7 k, 2

Panelové rezistory s rozdělovačem snímání napětí, 1/4 watt, 100 k, 470 k

Rezistor pro snímání proudu, tolerance 10 ohmů 1⁄2 watt 1%

Bypass kondenzátory, 0,1uF keramika, 2

2 lithium-iontová dobíjecí baterie 3,7 V 100 mAh, PKCELL LP401 nebo ekvivalent

Vstupní konektor hlavně pro panel, 1

Mini svorkovnice 3”x3” deska pro pájecí podložku a tenký drát s pevným jádrem pro vytváření připojení

Pro testování bude téměř jistě vyžadován osciloskop, multimetr a stolní napájecí zdroj

Krok 2: Nastavení prostředí

Nastavení prostředí
Nastavení prostředí

Prostředí XOD nepodporuje řadu procesorů ATTiny ihned po vybalení, ale pomocí několika knihoven třetích stran z vesmíru Arduino je snadné přidat podporu pro tuto sérii AVR. Prvním krokem je instalace knihovny „ATTinyCore“z rozbalovací nabídky „Nástroje → Deska → Správce desek“Arduino IDE. Ujistěte se, že nastavení, jak je znázorněno na přiloženém obrázku, jsou správná - nezapomeňte, že před odesláním jakéhokoli kódu musíte stisknout „Vypálit zavaděč“, abyste změnili pojistky nastavení napětí při procházení a rychlosti hodin!

Zdrojový kód této knihovny je k dispozici na adrese:

Další užitečnou knihovnou z úložiště je „FixedPoints“, což je implementace matematiky pevných bodů v procesech podporovaných Arduino v době kompilace. ATTiny má omezenou paměť SRAM a program a hodně pomáhá při zmenšování konečné velikosti náčrtu pro použití 2bajtového celého čísla pro obecné ukládání dat, místo typu s plovoucí desetinnou čárkou, který vyžaduje 4 bajty na AVR. Rovněž by se měla zlepšit rychlost provádění, protože ATTiny nemá jednotku pro násobení hardwaru, natož hardwarovou plovoucí čárku!

Zdrojový kód je k dispozici na:

Tutoriál o tom, jak vytvářet, převádět a nasazovat grafické skici XOD na adrese: https://github.com/Pharap/FixedPointsArduino, hodně pomůže s pochopením toho, jak byly vytvořeny zahrnuté zdrojové soubory.

Krok 3: Přehled návrhu

Přehled designu
Přehled designu
Přehled designu
Přehled designu

Na desce jsou dva procesory ATTiny85 propojeny přes rozhraní i2c a společně pracují na řízení snímání napětí solárního panelu, proudu protékajícího do baterie z posilovače, zatímco je panel osvětlený, napětí baterie a baterie teplota.

Boost Converter je běžný modul založený na Texas Instruments TPS6120 IC, který dokáže nabrat vstupní napětí tak nízké, jak 0,5 voltů, a zvýšit jej na libovolné místo od 2 voltů do 5 voltů. Jádro senzoru obsahuje několik funkčních bloků. Hlavní hodiny se spustí, jakmile je na vstup solárního panelu přivedeno napájení posilovače. Tím se spustí provádění náčrtu a první věcí je zjistit, zda je panel dostatečně osvětlený, aby poskytoval nabíjecí proud baterii.

Napětí solárního panelu prochází dvěma digitálními filtry, a pokud je nad určitou prahovou hodnotou, systém určí, že je panel osvětlený, a uzavře hlavní hodiny do monitoru snímajícího proud. Jedná se o kanál analogově digitálního převodníku čipu, konfigurovaný odlišně, který snímá napětí na 10 ohmovém tolerančním odporu 1% zapojeném v sérii mezi výstupem zesilovače a vstupem baterie. Když panel nesvítí, vyšle tento ATTiny signál druhému ATTiny, který mu řekne, aby místo nabíjení monitoroval napájení LED a vypnul posilovač a izoloval vstup, aby baterie neposílala proud zpět přes panel.

Druhé jádro ATTiny je místo, kde se spouští ovladač LED a systém monitorování nabití baterie. Údaje o napětí panelu, napětí baterie a nabíjecím proudu baterie jsou odesílány do tohoto jádra ke zpracování prostřednictvím fuzzy logické sítě, která se pokouší generovat vhodný signál PWM, který se aplikuje na pin SHTDN, čímž se řídí množství proudu odesílaného do baterie nabíjet při osvětlení-základní forma sledování maximálního výkonového bodu (MPPT.) Rovněž přijímá signál z jádra senzoru, který mu říká, zda má zapnout nebo vypnout LED, v závislosti na výstupu dne senzoru/ noční žabka.

Když je LED v noci aktivní, monitoruje ATTiny data o napětí baterie, která mu byla zaslána od jeho kamaráda a vlastního teplotního čidla na čipu, aby získal hrubý odhad, kolik energie se do LED tlačí (napětí baterie klesá a teplota čipu roste s proudem odebíraným z jeho kolíků.) Fuzzy-logická síť spojená s LED PWM patchem se pokouší posoudit, kolik energie baterie je stále k dispozici, a snížit intenzitu LED, když je baterie vybitá.

Krok 4: Vytváření vlastních oprav z knihovny XOD Core

Vytváření vlastních oprav z hlavní knihovny XOD
Vytváření vlastních oprav z hlavní knihovny XOD
Vytváření vlastních oprav z hlavní knihovny XOD
Vytváření vlastních oprav z hlavní knihovny XOD

Pro tento návrh bylo použito několik vlastních uzlů opravy, z nichž některé lze snadno konstruovat zcela z zahrnutých uzlů XOD a některé byly implementovány v jazyce C ++.

První ze dvou vlastních uzlů opravy na obrázcích implementace exponenciálního filtru klouzavého průměru. Jedná se o nízkoprůchodový nízkoprůchodový digitální filtr používaný v náčrtu v sérii, jednou k filtrování vstupního napětí solárního panelu pro logické jádro a ještě jednou k napájení spouště, která určuje dlouhodobé okolní osvětlení. Podívejte se na záznam Wikipedie o exponenciálním vyhlazování.

Struktura uzlu na obrázku je pouze přímým grafickým znázorněním přenosové funkce v článku, propojené dohromady pomocí odkazů z příslušných vstupů na výstupy. Z knihovny je odkládací uzel, který umožňuje vytvoření smyčky zpětné vazby (XOD vás upozorní, pokud vytvoříte smyčku zpětné vazby bez vložení zpoždění do smyčky, jak je popsáno v modelu provádění XOD.) S tímto detailem se postaral o patch funguje dobře, je to jednoduché.

Druhým vlastním uzlem opravy je variace na klopném obvodu, který je součástí XOD a který je napájen napětím filtrovaného panelu. Blokuje vysoko nebo nízko v závislosti na tom, zda je vstupní signál nad nebo pod určitou prahovou hodnotou. Castové uzly se používají k převodu booleovských výstupních hodnot na pulzní datový typ ke spuštění klopného obvodu, protože stav přechází z nízkého na vysoký. Design tohoto uzlu opravy by měl být doufejme poněkud samozřejmý ze snímku obrazovky.

Krok 5: Vytváření vlastních oprav pomocí C ++

Vytváření vlastních oprav pomocí C ++
Vytváření vlastních oprav pomocí C ++

U zvláštních požadavků, kde by potřebná funkčnost uzlu byla příliš složitá na to, aby se dala snadno graficky znázornit, nebo která spoléhají na knihovny Arduino, které nejsou původem ze základního prostředí Arduino, XOD usnadňuje těm, kteří mají určité znalosti C/C ++, psát kousky velikosti kousnutí kód, který lze poté integrovat do patche, stejně jako jakýkoli jiný uživatelem vytvořený nebo akciový uzel. Výběrem „vytvořit novou opravu“z nabídky souboru vytvoříte prázdný list, se kterým budete pracovat, a vstupní a výstupní uzly lze přetáhnout z části „uzly“základní knihovny. Poté lze uzel „neimplementovaný v xodu“přetáhnout dovnitř a po kliknutí vyvolá textový editor, kde lze požadovanou funkcionalitu implementovat v C ++. Zde je popsáno, jak zpracovat interní stav a přistupovat ke vstupním a výstupním portům z kódu C ++.

Jako příklad implementace vlastních záplat v C ++ jsou k odhadu napájecího napětí a teploty jádra ovladače použity dvě další vlastní záplaty pro jádro ovladače. Spolu s fuzzy sítí to umožňuje hrubý odhad zbývající energie baterie, která je k dispozici pro napájení LED, když je tma.

Náplast teplotního senzoru je také napájena výstupem snímače napájecího napětí, aby se dosáhlo lepšího odhadu - snímání teploty jádra nám umožňuje získat hrubý odhad, kolik energie se spaluje v LED diodách, a kombinovat s odečtem napájecího napětí, když vybití baterie další hrubý odhad zbývající energie baterie. Nemusí to být super přesné; pokud jádro „ví“, že diody LED odebírají velký proud, ale napětí baterie rychle klesá, je pravděpodobně bezpečné říci, že energie z baterie nebude trvat déle a je načase lampu vypnout.

Krok 6: Konstrukce

Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce

Projekt jsem postavil na malém kousku prototypové desky s měděnými podložkami pro průchozí díry. Použití soketů pro integrované obvody velmi pomáhá při programování/úpravách/testování; USBTiny ISP od Sparkfun má na své desce podobnou zásuvku, takže programování obou čipů spočívá pouze v zapojení programátoru do USB portu počítače, nahrání přeloženého kódu XOD z přiložených souborů Arduino.ino s příslušným nastavením desky a programátoru a poté jemně vyjměte čipy ze zásuvky programátoru a vložte je do zásuvek protoboardu.

Modul boostovacího převodníku na bázi Pololu TPS6120 je dodáván na stoupací desce připájené k protoboardu na vývodkách, takže je možné ušetřit místo montáží některých komponent pod ni. Na svůj prototyp jsem umístil dva 4,7k pullup rezistory pod. Ty jsou nutné pro správnou funkci sběrnice i2c mezi čipy - komunikace bez nich nebude fungovat správně! Na pravé straně desky je vstupní konektor pro zástrčku solárního panelu a vstupní úložný kondenzátor. Nejlepší je zkusit spojit konektor a tento kryt přímo dohromady pomocí „běhů“pájky, nikoli propojovacího drátu, abyste získali co nejmenší odpor cesty. K připojení kladného pólu paměťového kondenzátoru přímo ke svorce vstupního napětí zesilovacího modulu a uzemňovacího kolíku zesilovacího modulu přímo k uzemňovacímu kolíku jacku se pak použijí vývody pevné pájky.

Vpravo a vlevo od zásuvek pro dva ATTinys jsou kondenzátory despike/deglitching 0,1uF. Tyto součásti je také důležité nevynechat a měly by být připojeny k napájecím a zemnicím kolíkům integrovaných obvodů co nejkratší a přímou cestou. Rezistor pro snímání proudu 10 ohmů je vlevo, je zapojen v souladu s výstupem z převodníku zesilovače a každá strana je připojena ke vstupnímu pinu jádra snímače - tyto piny jsou nastaveny tak, aby fungovaly jako diferenciální ADC pro nepřímé měření proud do baterie. Připojení mezi piny IC pro sběrnici i2c a vypínacím kolíkem zesilovače atd. Lze provést pomocí propojovacího drátu na spodní straně protoboardu, velmi tenký propojovací vodič s pevným jádrem k tomu skvěle poslouží. Usnadňuje změny a také vypadá mnohem elegantněji než běhání propojek mezi otvory v horní části.

LED modul, který jsem použil, byl tříbarevný RGB modul, měl jsem v plánu mít aktivní všechny tři LED diody, aby produkovaly bílou barvu, když byla baterie téměř plně nabitá, a pomalu vyblednout z modré LED na žlutou, když se nabíjení vybije. Ale tato funkce musí být ještě implementována. Jedna bílá LED s jedním odporem omezujícím proud bude fungovat také dobře.

Krok 7: Testování, část 1

Testování, část 1
Testování, část 1

Po naprogramování obou integrovaných obvodů ATTiny pomocí přiložených souborů skic přes USB programátor z prostředí Arduino pomáhá otestovat, zda obě jádra na prototypu fungují správně, než se pokusíte nabít baterii ze solárního panelu. V ideálním případě to vyžaduje základní oscillscope, multimetr a stolní napájení.

První věcí, kterou je třeba zkontrolovat, je, že před připojením integrovaných obvodů, baterie a panelu do jejich zásuvek nejsou na desce žádné zkraty, aby nedošlo k poškození! Nejjednodušší způsob, jak to udělat, je použít stolní napájecí zdroj, který může v případě takové situace omezit jeho výstupní proud na bezpečnou hodnotu. Použil jsem svůj stolní zdroj nastavený na 3 volty a limit 100 mA připojený ke svorkám vstupního konektoru solárního panelu na kladné a záporné napájecí kabely. Jelikož není nainstalováno nic jiného než pasivní součásti, nemělo by být v podstatě na aktuálním monitoru napájecího zdroje registrováno odebírání proudu. Pokud dojde k významnému toku proudu nebo dojde k omezení proudu, něco se pokazilo a deska by měla být zkontrolována, aby se ujistil, že neexistují žádná chybně zapojená připojení nebo kondenzátory s obrácenou polaritou.

Dalším krokem je zajistit, aby posilovač převodu fungoval správně. Na desce je šroubový potenciometr, přičemž napájení je stále připojeno a čtyři piny převodníku připojeny přiměřeně, potenciometr by měl být otočen malým hrotem šroubováku, dokud napětí na výstupní svorce modulu nebude činit přibližně 3,8 až 3,9 voltů. Tato hodnota DC se během provozu nezmění, jádro budiče bude řídit průměrné výstupní napětí pulzováním vypínacího kolíku modulu.

Krok 8: Testování, část 2

Testování, část 2
Testování, část 2
Testování, část 2
Testování, část 2

Další věcí, kterou je třeba zkontrolovat, je, že i2c communicaton funguje dobře, s deskou, která běží mimo stolní napájení, lze nainstalovat jádro senzoru IC. Na osciloskopu by měly být pulzní signály jak na pinu 5, tak na pinu 7 fyzického čipu, tento ovladač i2c na čipu se pokouší odeslat data svému kamarádovi. Po vypnutí lze nainstalovat jádro ovladače a znovu zkontrolovat připojení osciloskopem, na obou linkách by měla být viditelná větší sekvence pulzů. To znamená, že čipy komunikují správně.

Pomáhá mít baterii mírně nabitou pro závěrečný úplný test. K tomu lze také použít stolní napájení, přičemž proudový limit je nastaven na přibližně 50 mA a napětí je stále na 3,8 voltu, takže baterie LiPo je připojena přímo na několik minut.

Posledním krokem je otestování celého systému - se vším připojeným, pokud je panel zakrytý na deset nebo 15 sekund, by se světlo mělo rozsvítit a být poháněno prostřednictvím výstupu PWM jádra ovladače. Když je panel na jasném slunečním světle, baterie by se měla nabíjet z výstupu zesilovače. Fuzzy logickou síť lze nepřímo kontrolovat, abyste zjistili, zda funguje správně, a to pohledem na linku PWM pohánějící vypínací pin převodníku zesilovače; jak se osvětlení zvyšuje s baterií s nízkým stavem nabití, šířka pulsu by se měla zvětšit, což ukazuje, že čím více energie bude k dispozici ze slunečního světla, tím jádro ovladače signalizuje, že do baterie by mělo být odesláno více energie!

Krok 9: Dodatek k Fuzzy Logic

Dodatek k Fuzzy logice
Dodatek k Fuzzy logice

Fuzzy logic je technika strojového učení, kterou lze použít při řízení hardwarových systémů, kde existuje nejistota v mnoha parametrech systému, který je řízen, takže je explicitní řešení vstupu a výstupu pro cíl obtížně matematicky zapisovatelné. Toho je dosaženo použitím logických hodnot, které spadají někam mezi 0 (nepravda) a 1 (pravda), vyjádřením nejistoty v hodnotě, která by se více podobala způsobu, jakým by to udělal člověk („většinou pravdivý“nebo „opravdu ne pravdivý“), a umožněním šedé oblasti mezi výroky, které jsou 100% pravdivé a 100% nepravdivé. Toho se dosáhne tak, že se nejprve odeberou vzorky vstupních proměnných, na nichž musí být založeno rozhodnutí, a jejich „zmatení“.

Srdcem každého fuzzy logického systému je „fuzzy asociativní paměť“. To připomíná matici, kde je v případě nabíjecího obvodu baterie uložena sada hodnot 3x3 v rozmezí 0 až 1. Hodnoty v matici lze zhruba spojit s tím, jak by člověk uvažoval o tom, jaký by měl být faktor PWM ovládající pin SHTDN zesilovače převodu, v závislosti na tom, jak výše uvedená funkce členství kvalifikuje danou sadu vstupů. Pokud je například vstupní napětí panelu vysoké, ale proud odebíraný do baterie je nízký, pravděpodobně to znamená, že lze odebírat více energie a nastavení PWM není optimální a mělo by být zvýšeno. Naopak, pokud napětí panelu klesne, ale nabíječka se stále pokouší zatlačit velký proud do napájení baterie, bude také zbytečné, takže by bylo nejlepší snížit signál PWM do posilovače. Jakmile jsou vstupní signály „fuzzifikovány“do fuzzy množiny, jsou vynásobeny těmito hodnotami, podobně jako je způsob násobení vektoru maticí, aby se vytvořila transformovaná množina, která je reprezentativní pro to, jak silně buňka „znalostí“obsahovala matice by mělo být započítáno do konečné kombinační funkce.

Použití uzlu „neimplementováno v xod“, který umožňuje uzlům XOD, které implementují vlastní funkce, příliš komplikované na to, aby bylo rozumné je vytvářet ze stavebních bloků, a trochu Arduino C ++, asociativní paměť, funkce vážení a „ fuzzifier “podobné blokům popsaným v tomto odkazu: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 se snadno vyrábějí a je mnohem snazší s nimi experimentovat.

Doporučuje: