- Výběr správných komponent pro monitor solární energie s povoleným IoT
- Schéma zapojení pro monitorování solární energie založené na IoT
- Nastavení ThingSpeak
- Arduino kód pro monitorování solární energie pomocí ESP32
- Testování a monitorování dat
V oblasti obnovitelné energie je solární energie v popředí, protože výroba energie pomocí sluneční energie je nejjednodušší a komerčně životaschopný způsob obnovitelné energie. Když už mluvíme o solárních panelech, je třeba sledovat výstupní výkon solárních panelů, aby se získal optimální výkon z panelů. Proto je nezbytný monitorovací systém v reálném čase. Ve velké solární elektrárně lze také použít ke sledování výstupního výkonu z každého panelu, což pomáhá identifikovat nahromadění prachu. Rovněž zabrání jakýmkoli poruchovým stavům během provozu. V některých našich předchozích článcích jsme vytvořili několik projektů souvisejících se solární energií, jako je solární nabíječka mobilního telefonu a solární invertorový obvod atd. Tyto projekty můžete zkontrolovat, pokud hledáte další projekty solární energie.
V tomto projektu budeme vyrábět solární monitorovací systém založený na IoT začleněním techniky nabíjení baterie založené na MPPT (Maximum Power Point Tracker), která pomůže zkrátit dobu nabíjení a zlepšit účinnost. Budeme také měřit teplotu panelu, výstupní napětí a proud, abychom zlepšili bezpečnostní aspekt obvodu. Nakonec k tomu všemu použijeme cloudové služby ThingSpeak ke sledování výstupních dat z celého světa. Všimněte si, že tento projekt je pokračováním projektu MPPT Solar Charge Controller, který jsme postavili dříve. Zde budeme monitorovat výstupní napětí, proud a výkon panelu pomocí vývojové desky ESP32 IoT.
Výběr správných komponent pro monitor solární energie s povoleným IoT
Se solárním monitorem je velmi snadné sledovat a detekovat poruchy v jakékoli solární soustavě. To je důvod, proč se při navrhování takového systému stává výběr komponent velmi důležitou součástí. Níže je uveden seznam dílů, které jsme použili.
- Deska ESP32 dev
- Obvod MPPT (může to být jakýkoli solární okruh)
- Bočníkový odpor (například 1 Ohm 1 watt - vhodný pro proud až 1 A)
- Lithiová baterie (přednostně 7,4 V).
- Aktivní připojení Wi-Fi
- Teplotní senzor pro solární panel
- Obvod děliče napětí (viz popis)
Deska Esp32 Dev:
U aplikace s podporou IoT je nezbytné zvolit správný typ vývojové desky, která bude schopna zpracovávat data z analogových pinů a odesílat data prostřednictvím jakéhokoli protokolu připojení, jako je Wi-Fi nebo do cloudu serveru. Speciálně jsme vybrali ESP32, protože se jedná o nízkonákladový mikrokontrolér se spoustou funkcí. Má také vestavěné Wi-Fi rádio, pomocí kterého se můžeme velmi snadno připojit k internetu.
Solární okruh:
Solární nabíjecí obvod je obvod, který získává vyšší napětí ze solárního panelu a převádí ho na nabíjecí napětí, aby mohl účinně nabíjet baterii. Pro tento projekt budeme používat obvodovou desku MPPT Charge Controller Circuit založenou na LT3562, kterou jsme již vyrobili v jednom z našich předchozích projektů. Pokud však chcete vložit toto monitorování IoT, můžete použít jakýkoli druh solárního okruhu. Tuto desku jsme si vybrali, protože obvod je vybaven sledováním maximálního bodu výkonu (MPPT), což je výhodné pro projekty solárních panelů s nízkým výkonem. Jedná se o efektivní způsob nabíjení malé lithiové baterie ze solárního panelu.
Bočníkový rezistor:
Jakýkoli odpor se řídí ohmovým zákonem, což znamená, že pokud určitým množstvím proudu protéká odpor, objeví se určité množství poklesu napětí. Bočníkové rezistory nejsou výjimkou a používají se konkrétně k měření proudu. V závislosti na jmenovitém proudu protékajícím solárním panelem však zvolte bočníkový odpor, který bude produkovat odpovídající množství napětí, které lze měřit jednotkou mikrokontroléru. Zároveň je však důležitá také příkon rezistoru. Důležitý je také výběr příkonu bočníku.
Pokles napětí lze vypočítat pomocí vzorce uvedeného níže. Toto je známé jako Ohmův zákon
V = I x R
V je napětí, které bude produkováno během „I“, tj. Množství proudu protékajícího množstvím odporu „R“. Například 1-ohmový rezistor vytvoří pokles napětí 1 V, když jím protéká 1 A proudu.
Pro výkon rezistoru lze použít vzorec uvedený níže -
P = I 2 R
Kde I je maximální tok proudu a R je hodnota rezistoru. Pro proud 1 A s odporem 1 Ohm je 1 Watt dostatečný pro ztrátový výkon. To je však užitečné pro malé projekty solárních panelů, ale vůbec ne vhodné pro aplikace související se solární sítí. V takovém případě je skutečně třeba použít neinvazivní techniku měření proudu. V takovém případě lze přesně měřit tok proudu, kde lze měřit velmi malé množství proudu i velmi vysoké množství proudu.
Lithiová baterie:
Výběr lithiové baterie je podstatnou součástí každého projektu zahrnujícího solární panely. Protože jednotka mikrokontroléru, která vždy zůstává zapnutá a neustále kontroluje a odesílá data, vyžaduje pro stabilní provoz alespoň sto miliampérů proudu.
Kapacita baterie by měla být něco, co může napájet mikrokontrolér po dobu nejméně 4-5 dní, když kvůli monzunu nesvítí slunce. Je také důležité, aby nabíjecí proud musel být větší než proud zátěže z pohledu baterie. Je docela neobvyklé, když někdo připojí zátěž 100 mA k baterii a poskytne nabíjecí proud, který je menší. Abychom byli na bezpečnější straně, měli bychom mít alespoň 5krát větší nabíjecí proud než proud zátěže.
Naproti tomu napětí baterie musí být vyšší než jakékoli běžné vstupní napětí regulátoru napětí, které vyžaduje mikrokontrolér. Například lithiová baterie 7,4 V by mohla být připojena k lineárnímu regulátoru napětí 3,3 V i 5,0 V (protože lineární regulátor vyžaduje vyšší výpadkové napětí více než LDO a přepínání.)
V našem projektu jsme použili 4000mAH baterii s hodnocením 7,4V. Použili jsme regulátor 5,0 V, který poskytuje dostatečný proudový a napěťový výstup pro ESP32.
Dělič napětí:
Dělič napětí je nezbytnou součástí měření napětí solárního panelu. Jeden by měl zvolit dělič napětí, který rozdělí napětí podle vstupního / výstupního napětí mikrokontroléru.
Vyberte výše uvedené rezistory tak, aby výstupní napětí děliče napětí nemělo překročit maximální I / O napětí mikrokontroléru (3,3 V pro ESP32). Doporučuje se však použít potenciometr, protože poskytne flexibilitu při výběru jakéhokoli vyššího nebo nižšího jmenovitého napětí jakéhokoli solárního panelu a může snadno nastavit napětí pomocí multimetru.
V našem případě máme v obvodu desky MPPT potenciometr, který funguje jako dělič napětí. Nastavili jsme dělič napětí s dělicím faktorem 6V. Připojili jsme dva multi-metry, jeden na vstupu a druhý na výstupu hrnce, a nastavili jsme hodnotu, že když je vstupní napětí 18V, bude výstup 3V, protože jmenovité výstupní napětí solárního panelu je 18V.
Teplotní senzor pro solární panel:
Výkon solárního panelu má přímou souvislost s teplotou solárního panelu. Proč? Protože jak teplota solárního panelu začíná zvyšovat výstupní proud ze solárního panelu exponenciálně roste, zatímco výstup napětí se začíná lineárně snižovat.
Podle výkonového vzorce se příkon rovná napětí krát proudu (W = V x A), snížení výstupního napětí také snižuje výstupní výkon solárního panelu i po zvýšení toku proudu. Další otázkou, která nás napadne, je, jak měřit sluneční teplotu? Je to docela zajímavé, protože solární panely jsou obecně vystaveny tepelnému prostředí, protože jsou vystaveny přímému slunečnímu záření, a to ze zřejmých důvodů. Nejlepším způsobem, jak měřit teplotu solárního panelu, je použití snímače teploty na plochém povrchu. Rovněž se doporučuje použít termočlánek typu K umístěný přímo v solárním panelu.
Pro naši aplikaci jsme použili modul teplotního senzoru založený na termistoru, který je zobrazen níže.
Schéma zapojení pro monitorování solární energie založené na IoT
Kompletní schéma zapojení pro IoT Enabled Solar Power Monitor je uvedeno níže. Schéma je jednoduché. Deska s červenými čárkami je deska MPPT, kterou jsme použili pro tento projekt.
Nastavení ThingSpeak
Vytvořte si účet pomocí ThingSpeak, přejděte na možnost „můj kanál“ a klikněte na Nový kanál.
Vytvořte nový kanál s názvy polí.
Nyní po nastavení pole přejděte do pole API Keys, kde je k dispozici klíč API pro zápis. Tento klíč je třeba uvést v kódu i v ID kanálu.
Adresu ThingSpeak najdete na stejné stránce.
Pomocí výše uvedených kroků můžete ThingSpeak nastavit velmi snadno. Pokud se chcete dozvědět více o ThingSpeak a jeho procesu nastavení, můžete se podívat na naše předchozí články k tomuto tématu.
Arduino kód pro monitorování solární energie pomocí ESP32
Celý kód pro sledování solární energie ESP32 najdete ve spodní části této stránky. Kód začíná definováním vašeho SSID, hesla a několika dalších stálých parametrů, jak je uvedeno níže.
// definujte WiFi SSID a PWD pro uplink. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// odpor při 25 stupních C # definovat TERMISTORNOMINÁLNÍ 10 000 // tepl. pro jmenovitý odpor (téměř vždy 25 ° C) #define TEMPERATURENOMINAL 25 // Koeficient beta termistoru (obvykle 3000-4000) #define BCOEFFICIENT 3950 // hodnota „jiného“ rezistoru #define SERIESRESISTOR 10000
Jmenovité ohmy termistoru jsou poskytovány při jmenovité teplotě. Tuto hodnotu nastavte v závislosti na datovém listu termistoru. Vložte koeficient beta a hodnotu sériového odporu termistoru.
// definovat analogový pro proud a napětí const int current_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
PINy jsou definovány zde.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Vložte the thingSpeakAddress, channelID, Write Feed API Key. Zbytek věcí není vyžadován, ale stále jsou užitečné, pokud je třeba data přijímat z webu.
void setup () { // vložte svůj instalační kód, aby se spustil jednou: // nastavte sériový port na 115200 Serial.begin (115200); // Inicializace sériového zpoždění (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (klient); // Initialize ThingSpeak // todo: create a task to read an pin for get current & voltage and count watt and temperature of the solar panel xTaskCreate ( wifi_task, / * Task function. * / "Wifi_task", / * String with name of task. * / 1024 * 2, / * Stack size in bytes. * / NULL, / * Parametr předán jako vstup úlohy * / 5, / * Priorita úkolu. * / NULL); / * Popisovač úlohy. * / Serial.print ("Čtení dat."); }
Ve výše uvedeném kódu je inicializován server ThingSpeak a je vytvořena úloha, která získá data týkající se solárního panelu.
V hlavní smyčce jsou solární proud a napětí snímány analogovým kolíkem a průměr je hotový.
float solar_curr_adc_val = 0; float solar_volt_adc_val = 0; for (i = 0; i <NUMSAMPLES; i ++) { current_samples = analogRead (current_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); zpoždění (10); } // průměr všech vzorků z float current_avg = 0; float volt_avg = 0; float temp_avg = 0; for (i = 0; i <NUMSAMPLES; i ++) { current_avg + = current_samples; volt_avg + = volt_samples; temp_avg + = temp_samples; } current_avg / = NUMSAMPLES; volt_avg / = NUMSAMPLES; temp_avg / = NUMSAMPLES; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // převést hodnotu adc na napětí pro získání skutečného proudu a napětí. float solar_curr = (current_avg * 3,3) / (4095); float solar_volt = (volt_avg * 3,3) / (4095); // pomocí děliče napětí snižujeme skutečné napětí. // z tohoto důvodu vynásobíme 6 s průměrným napětím, abychom získali skutečné napětí solárního panelu. solar_volt * = 6;
Sluneční napětí je zadáno vynásobením 6, když jsme vytvořili dělič napětí, který vydělí vstupní napětí 6krát.
Teplota je generována z termistoru pomocí logaritmické formace.
// převést hodnotu na odpor temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("Thermistor odpor "); //Serial.println(temp_avg); float steinhart; steinhart = temp_avg / THERMISTORNOMINAL; // (R / Ro) steinhart = log (steinhart); // ln (R / Ro) steinhart / = BCOEFFICIENT; // 1 / B * ln (R / Ro) steinhart + = 1,0 / (TEMPERATURENOMINAL + 273,15); // + (1 / To) steinhart = 1,0 / steinhart; // Invertovat steinhart - = 273,15; // převést absolutní teplotu na C.
Data se načítají každých 15 sekund.
zpoždění (1000); count ++; Serial.print ("."); if (počet> = 15) { počet = 0; Serial.println ("============================================= ============================= "); Serial.print ("Solární napětí ="); Serial.println (solar_volt); Serial.print ("Sluneční proud ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Sluneční teplota ="); Serial.println (steinhart); Serial.println ("============================================= ============================= ");
Data pro příslušná pole se přenášejí pomocí funkce Thing.Speak.setField (); když je připojeno WiFi.
if (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // zápis do kanálu ThingSpeak int x = ThingSpeak.writeFields (ID kanálu, writeFeedAPIKey); if (x == 200) { Serial.println ("Aktualizace kanálů úspěšná."); } else { Serial.println ("Problém s aktualizací kanálu. Chybový kód HTTP" + String (x)); } } else { Serial.println ("\ r \ n ############################################ ######################### "); Serial.println ("Nepodařilo se aktualizovat data na server thingSpeak."); Serial.println ("WiFi není připojeno…"); Serial.println ("################################################################ ################ \ r \ n "); } Serial.print ("Čtení dat."); } }
Úloha Wi-Fi vytvořená v níže uvedeném fragmentu kódu
void wifi_task (void * parametr) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Pokus o připojení k SSID:"); Serial.println (WLAN_SSID); while (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Připojení k síti WPA / WPA2. Změňte tento řádek, pokud používáte otevřenou síť nebo síť WEP Serial.print ("."); zpoždění (5 000); } Serial.println ("\ nPřipojeno."); Serial.println (); Serial.println ("WiFi připojeno"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Testování a monitorování dat
Solární panel je spojen s obvodem a umístěn na slunci pro testování, jak je uvedeno níže.
Kompletní fungování je ukázáno ve videu níže. Náš obvod byl schopen číst výstupní napětí, proud a výkon z panelu a aktualizovat jej živě na kanálu věci, jak je uvedeno níže.
Jak vidíme, ve výše uvedeném grafu jsou uvedena 15minutová data. Jelikož se jedná o projekt venkovního provozu, je třeba použít vlastní desku plošných spojů spolu s uzavřenou krabicí. Kryt musí být vyroben tak, aby obvod zůstal vodotěsný za deště. Chcete-li tento okruh upravit nebo prodiskutovat další aspekty tohoto projektu, použijte aktivní fórum Circuit Digest. Doufám, že se vám výukový program líbil a naučili jste se něco užitečného.