- Výber správnych komponentov pre monitor solárneho napájania s povoleným IoT
- Schéma zapojenia pre monitorovanie solárnej energie na základe internetu vecí
- Nastavenie funkcie ThingSpeak
- Arduino kód pre sledovanie solárnej energie pomocou ESP32
- Testovanie a monitorovanie údajov
V oblasti obnoviteľnej energie je solárna energia na poprednom mieste, pretože výroba energie pomocou slnečnej energie je najjednoduchší a komerčne životaschopný spôsob obnoviteľnej energie. Keď už hovoríme o solárnych paneloch, je potrebné monitorovať výstupný výkon solárneho panelu, aby sa získal optimálny výstupný výkon z panelov. Z tohto dôvodu je nevyhnutný systém monitorovania v reálnom čase. Vo veľkej solárnej elektrárni sa dá použiť aj na sledovanie výstupného výkonu z každého panelu, čo pomáha identifikovať nahromadenie prachu. Taktiež zabraňuje akýmkoľvek poruchovým stavom počas prevádzky. V niektorých našich predchádzajúcich článkoch sme vytvorili niekoľko projektov týkajúcich sa solárnej energie, ako je solárna nabíjačka mobilných telefónov a solárny invertorový obvod atď. Tieto projekty môžete skontrolovať, ak hľadáte ďalšie projekty týkajúce sa solárnej energie.
V tomto projekte vytvoríme solárny monitorovací systém na báze IoT začlenením techniky nabíjania batérií založenej na MPPT (Maximum Power Point Tracker), ktorá pomôže skrátiť čas nabíjania a zvýšiť efektivitu. Taktiež zmeriame teplotu panelu, výstupné napätie a prúd, aby sme zlepšili bezpečnostný aspekt obvodu. Na záver ešte uvedieme, že pomocou cloudových služieb ThingSpeak budeme monitorovať výstupné údaje z celého sveta. Upozorňujeme, že tento projekt je pokračovaním projektu MPPT Solar Charge Controller, ktorý sme postavili skôr. Tu budeme monitorovať výstupné napätie, prúd a výkon panelu pomocou vývojovej dosky ESP32 IoT.
Výber správnych komponentov pre monitor solárneho napájania s povoleným IoT
So solárnym monitorom je veľmi ľahké monitorovať a detekovať poruchy v ktorejkoľvek solárnej sústave. To je dôvod, prečo sa výber komponentov stáva veľmi dôležitou súčasťou pri navrhovaní takého systému. Ďalej je uvedený zoznam častí, ktoré sme použili.
- ESP32 dev doska
- Obvod MPPT (môže to byť akýkoľvek solárny okruh)
- Bočníkový odpor (napríklad 1 Ohm 1 W - vhodný pre prúd až 1 A)
- Lítiová batéria (uprednostňuje sa 7,4 V).
- Aktívne pripojenie Wi-Fi
- Snímač teploty pre solárny panel
- Obvod deliča napätia (pozri popis)
Doska Esp32 Dev:
Pre aplikáciu s povoleným IoT je nevyhnutné zvoliť správny typ vývojovej dosky, ktorá bude schopná spracovávať údaje z jej analógových pinov a odosielať ich prostredníctvom ľubovoľného protokolu pripojenia, napríklad Wi-Fi alebo do cloudu server. Špeciálne sme vybrali ESP32, pretože sa jedná o nízkonákladový mikrokontrolér s množstvom funkcií. Má tiež zabudované rádio Wi-Fi, cez ktoré sa môžeme veľmi ľahko pripojiť k internetu.
Solárny obvod:
Solárny nabíjací obvod je obvod, ktorý získava zo solárneho panelu vyššie napätie a prevádza ho na nabíjacie napätie, aby mohol efektívne nabíjať batériu. Pre tento projekt budeme používať obvodovú dosku MPPT Charge Controller Circuit založenú na LT3562, ktorú sme už vyrobili v jednom z našich predchádzajúcich projektov. Ak však chcete vložiť toto monitorovanie umožňujúce IoT, môžete použiť akýkoľvek druh solárneho okruhu. Túto dosku sme si vybrali, pretože obvod je vybavený sledovaním maximálneho bodu výkonu (MPPT), čo je výhodné pre projekty solárnych panelov s nízkou spotrebou. Je to efektívny spôsob nabíjania malej lítiovej batérie zo solárneho panelu.
Bočníkový rezistor:
Akýkoľvek rezistor sa riadi ohmovým zákonom, čo znamená, že ak cez rezistor pretečie určité množstvo prúdu, objaví sa určitý pokles napätia. Bočníkové odpory nie sú výnimkou a sú špeciálne používané na meranie prietoku prúdu. Avšak v závislosti od menovitého prúdu, ktorý prechádza solárnym panelom, zvoľte bočníkový odpor, ktorý bude produkovať primerané množstvo napätia, ktoré je možné merať jednotkou mikrokontroléra. Dôležitou vecou je ale zároveň aj výkon rezistora. Dôležitý je tiež výber príkonu bočného odporu.
Pokles napätia je možné vypočítať pomocou vzorca uvedeného nižšie. Toto je známe ako Ohmov zákon
V = I x R
V je napätie, ktoré bude vyrobené počas „I“, tj. Množstvo prúdu, ktoré preteká cez množstvo rezistora „R“. Napríklad 1-ohmový rezistor vytvorí pokles napätia 1 V, keď ním preteká 1 A prúdu.
Pre príkon rezistora možno použiť vzorec uvedený nižšie -
P = I 2 R
Kde I je maximálny prúdový prúd a R je hodnota odporu. Pre prúd 1 A s odporom 1 Ohm postačuje na stratu výkonu 1 watt. To je však užitočné pre malé projekty solárnych panelov, ale vôbec nie vhodné pre aplikácie súvisiace so solárnymi sieťami. V takom prípade je vlastne potrebné použiť techniku neinvazívneho merania prúdu. V takom prípade možno prúdový prúd presne zmerať, kde je možné merať veľmi malé množstvo prúdu, ako aj veľmi vysoké množstvo prúdu.
Lítiová batéria:
Výber lítiovej batérie je podstatnou súčasťou každého projektu, ktorý sa týka solárnych panelov. Pretože jednotka mikrokontroléra, ktorá vždy zostáva zapnutá a neustále kontroluje a odosiela údaje, vyžaduje pre stabilnú prevádzku najmenej sto miliampérov prúdu.
Kapacita batérie by mala byť niečo, čo dokáže napájať mikrokontrolér najmenej 4 - 5 dní, keď kvôli monzúnu nesvieti slnko. Je tiež dôležité, aby nabíjací prúd musel byť z hľadiska batérie väčší ako prúd záťaže. Je dosť neobvyklé, ak niekto spojí 100mA záťaže s batériou a poskytne nabíjací prúd, ktorý je menší ako tento. Aby sme boli na bezpečnejšej strane, mali by sme mať minimálne 5-krát väčší nabíjací prúd ako je prúd záťaže.
Na druhej strane musí byť napätie batérie vyššie ako akékoľvek bežné vstupné napätie regulátora napätia, ktoré vyžaduje pre mikrokontrolér. Napríklad lítiová batéria 7,4 V by mohla byť pripojená k lineárnemu regulátoru napätia 3,3 V aj 5,0 V (pretože lineárny regulátor vyžaduje vyššie vypadávajúce napätie ako LDO a prepínanie.)
V našom projekte sme použili 4000mAH batériu s hodnotením 7,4V. Použili sme regulátor 5,0 V, ktorý poskytuje dostatočný prúdový a napäťový výstup pre ESP32.
Delič napätia:
Delič napätia je podstatnou súčasťou merania napätia solárneho panelu. Jeden by si mal zvoliť rozdeľovač napätia, ktorý rozdelí napätie podľa vstupného / výstupného napätia mikrokontroléra.
Vyššie uvedené odpory zvoľte tak, aby výstupné napätie rozdeľovača napätia neprekročilo maximálne vstupno-výstupné napätie mikrokontroléra (3,3 V pre ESP32). Odporúča sa však použiť potenciometer, pretože poskytne flexibilitu pri výbere solárneho panelu s vyšším alebo nižším menovitým napätím a môže ľahko nastaviť napätie pomocou multimetra.
V našom prípade máme v obvode dosky MPPT potenciometer, ktorý funguje ako delič napätia. Nastavili sme delič napätia s deliacim faktorom 6V. Pripojili sme dva multi-metre, jeden na vstupe a druhý na výstupe z hrnca, a nastavili sme hodnotu, že keď bude vstupné napätie 18V, bude výstup 3V, pretože nominálne výstupné napätie solárneho panelu je 18V.
Snímač teploty pre solárny panel:
Výstupný výkon solárneho panelu má priame spojenie s teplotou solárneho panelu. Prečo? Pretože keď teplota solárneho panelu začína stúpať, výstupný prúd zo solárneho panelu rastie exponenciálne, zatiaľ čo výstup napätia sa začína lineárne znižovať.
Podľa výkonového vzorca sa príkon rovná napätiu krát prúd (W = V x A), zníženie výstupného napätia tiež zníži výstupný výkon solárneho panelu aj po zvýšení prietoku prúdu. Teraz nám príde na myseľ ďalšia otázka, ako merať slnečnú teplotu? Je to dosť zaujímavé, pretože solárne panely sú všeobecne vystavené tepelnému prostrediu, pretože sú vystavené priamemu slnečnému žiareniu, a to zo zrejmých dôvodov. Najlepším spôsobom na meranie teploty solárnych panelov je použitie snímača teploty plochého povrchu. Navrhuje sa tiež použitie termočlánku typu K umiestneného priamo v solárnom paneli.
Pre našu aplikáciu sme použili modul teplotného snímača založený na termistore, ktorý je zobrazený nižšie.
Schéma zapojenia pre monitorovanie solárnej energie na základe internetu vecí
Kompletná schéma zapojenia pre monitor solárneho napájania IoT je uvedená nižšie. Schéma je jednoduchá. Červená doska s prerušovanými bodkami je doska MPPT, ktorú sme použili pre tento projekt.
Nastavenie funkcie ThingSpeak
Vytvorte si účet pomocou služby ThingSpeak, prejdite na možnosť „môj kanál“ a potom kliknite na nový kanál.
Vytvorte nový kanál s názvami polí.
Teraz po nastavení poľa prejdite do poľa API Keys, kde je k dispozícii kľúč API Write. Tento kľúč je potrebné uviesť v kóde aj v ID kanála.
Adresa ThingSpeak sa nachádza na tej istej stránke.
Pomocou vyššie uvedených krokov môžete program ThingSpeak nastaviť veľmi ľahko. Ak sa chcete dozvedieť viac o ThingSpeak a jeho procese nastavenia, môžete si pozrieť naše predchádzajúce články na túto tému.
Arduino kód pre sledovanie solárnej energie pomocou ESP32
Celý kód na sledovanie solárnej energie ESP32 nájdete v spodnej časti tejto stránky. Tento kód začína definovaním vášho SSID, hesla a niekoľkých ďalších konštantných parametrov, ako je uvedené nižšie.
// definujte WiFi SSID a PWD pre uplink. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// odpor pri 25 stupnoch C # definovat TERMISTORNOMINAL 10 000 // temp. pre menovitý odpor (takmer vždy 25 C) #define TEMPERATURENOMINAL 25 // Koeficient beta termistora (zvyčajne 3000-4000) #define BCOEFFICIENT 3950 // hodnota „iného“ rezistora #define SERIESRESISTOR 10 000
Nominálne ohmy termistoru sú poskytované pri menovitej teplote. Túto hodnotu nastavte v závislosti od údajového listu termistora. Dajte koeficient beta a hodnotu sériového odporu termistora.
// definovať analógové pre prúd a napätie const int current_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
PIN sú definované tu.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Dajte the thingSpeakAddress, channelID, Write Feed API Key. Zvyšok nie je potrebný, ale stále je užitočný, ak je potrebné údaje prijímať z webu.
void setup () { // vložte svoj nastavovací kód, aby sa spustil raz: // nastavte sériový port na 115200 Serial.begin (115200); // Inicializácia sériového oneskorenia (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (klient); // Inicializujte ThingSpeak // todo: vytvorte úlohu na načítanie kolíka na získanie prúdu a napätia a na výpočet wattu a teploty solárneho panelu xTaskCreate ( wifi_task, / * funkcia úlohy. * / "Wifi_task", / * reťazec s názvom úloha. * / 1024 * 2, / * Veľkosť zásobníka v bajtoch. * / NULL, / * Parameter odovzdaný ako vstup úlohy * / 5, / * Priorita úlohy. * / NULL); / * Rukoväť úlohy. * / Serial.print („Čítanie údajov.“); }
Vo vyššie uvedenom kóde je inicializovaný server ThingSpeak a je vytvorená úloha, ktorá získa údaje týkajúce sa solárneho panelu.
V hlavnej slučke sú slnečný prúd a napätie snímané pomocou analógového kolíka a je vykonaný priemer.
float solar_curr_adc_val = 0; float solar_volt_adc_val = 0; pre (i = 0; i <NUMSAMPLES; i ++) { current_samples = analogRead (current_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); oneskorenie (10); } // priemer všetkých vzoriek z float current_avg = 0; float volt_avg = 0; float temp_avg = 0; pre (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); // prevedie hodnotu adc na napätie, aby získal skutočný prúd a napätie. float solar_curr = (current_avg * 3,3) / (4095); float solar_volt = (volt_avg * 3,3) / (4095); // pomocou deliča napätia znížime skutočné napätie. // z tohto dôvodu vynásobíme 6 s priemerným napätím, aby sme dostali skutočné napätie solárneho panelu. solar_volt * = 6;
Solárne napätie sa vynásobí číslom 6, keď sme vytvorili delič napätia, ktorý rozdelí vstupné napätie šesťkrát.
Teplota sa generuje z termistora pomocou logaritmickej formácie.
// prevod hodnoty na odpor temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print(""Theristor odpor "); //Serial.println(temp_avg); float steinhart; steinhart = temp_avg / TERMISTORNOMINAL; // (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; // Obrátiť steinhart - = 273,15; // prevod absolútnej teploty na C
Údaje sa načítajú každých 15 sekúnd.
oneskorenie (1 000); počet ++; Serial.print ("."); if (počet> = 15) { počet = 0; Serial.println ("================================================ ============================= "); Serial.print ("Solárne napätie ="); Serial.println (solar_volt); Serial.print ("Solárny prúd ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Solárna teplota ="); Serial.println (steinhart); Serial.println ("============================================= ============================= ");
Dáta pre príslušné polia sa prenášajú pomocou funkcie Thing.Speak.setField (); keď je pripojené 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); // zapis na kanál ThingSpeak int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); if (x == 200) { Serial.println ("Aktualizácia kanálov úspešná."); } else { Serial.println ("Problém s aktualizáciou kanála. Chybový kód HTTP" + String (x)); } } else { Serial.println ("\ r \ n ######################################### ######################## "); Serial.println ("Nepodarilo sa aktualizovať údaje na server thingSpeak."); Serial.println ("WiFi nie je pripojené…"); Serial.println ("############################################################## ################ \ r \ n "); } Serial.print ("Čítanie údajov."); } }
Úloha Wi-Fi vytvorená v nasledujúcom úryvku kódu -
void wifi_task (void * parameter) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Pokus o pripojenie k SSID:"); Serial.println (WLAN_SSID); while (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Pripojenie k sieti WPA / WPA2. Ak používate otvorenú sieť alebo sieť WEP Serial.print ("."), Zmeňte tento riadok ; oneskorenie (5 000); } Serial.println ("\ nPripojene."); Serial.println (); Serial.println ("WiFi pripojené"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Testovanie a monitorovanie údajov
Solárny panel je spojený s obvodom a je umiestnený na slnečnom svetle na testovanie, ako je uvedené nižšie.
Kompletné fungovanie je demonštrované na videu nižšie. Náš obvod dokázal načítať výstupné napätie, prúd a výkon z panela a aktualizovať ho naživo na kanáli vecí, ako je to znázornené nižšie.
Ako vidíme, 15-minútové údaje sú zobrazené na grafe vyššie. Pretože sa jedná o projekt vonkajšej prevádzky, je potrebné použiť správne PCB spolu s priloženou krabicou. Kryt musí byť vyrobený tak, aby okruh zostal vodotesný za dažďa. Ak chcete upraviť tento okruh alebo prediskutovať ďalšie aspekty tohto projektu, využite aktívne fórum Circuit Digest. Dúfam, že sa vám výukový program páčil a dozvedeli ste sa niečo užitočné.