- Odabir pravih komponenti za Solar Power Monitor s omogućenim IoT-om
- Kružni dijagram za nadzor solarne energije temeljen na IoT-u
- Postavljanje ThingSpeak-a
- Arduino kod za nadzor solarne energije pomoću ESP32
- Podaci o ispitivanju i praćenju
Na području obnovljive energije prednjači sunčeva energija, jer je proizvodnja energije korištenjem sunčeve snage najlakši i komercijalno održivi način obnovljive energije. Govoreći o solarnim pločama, izlaznu snagu izlaznog solarnog panela potrebno je nadzirati kako bi se postigla optimalna snaga iz panela. Zbog toga postaje potreban sustav praćenja u stvarnom vremenu. U velikoj solarnoj elektrani može se koristiti i za nadzor izlazne snage sa svake ploče što pomaže u prepoznavanju nakupljanja prašine. Također sprječava bilo kakve kvarove za vrijeme rada. U nekim od naših prethodnih članaka izgradili smo nekoliko projekata povezanih sa solarnom energijom poput punjača za mobitele na solarnu energiju, kruga solarnog pretvarača itd. To možete provjeriti ako tražite još projekata o solarnoj energiji.
U ovom ćemo projektu izraditi sustav za nadzor solarne energije zasnovan na IoT- u, ugrađujući tehniku punjenja baterija zasnovanu na MPPT (Maximum Power Point Tracker), što će pomoći smanjiti vrijeme punjenja i poboljšati učinkovitost. Također ćemo izmjeriti temperaturu ploče, izlazni napon i struju kako bismo poboljšali sigurnosni aspekt kruga. Konačno, na vrh svega, koristit ćemo ThingSpeak cloud usluge za nadgledanje izlaznih podataka s bilo kojeg mjesta u svijetu. Imajte na umu da je ovaj projekt nastavak projekta MPPT Solar Charge Controller, koji smo napravili ranije. Ovdje ćemo pratiti izlazni napon, struju i snagu ploče pomoću razvojne ploče ESP32 IoT.
Odabir pravih komponenti za Solar Power Monitor s omogućenim IoT-om
Sa solarnim monitorom postaje vrlo lako nadgledati i otkrivati kvarove u bilo kojem solarnom sustavu. Zbog toga odabir komponenata postaje vrlo važan dio prilikom dizajniranja takvog sustava. Dolje je dan popis dijelova koje smo koristili.
- ESP32 razvojna ploča
- MPPT krug (može biti bilo koji solarni krug)
- Rutašni otpornik (na primjer 1 Ohm 1 vata - pogodan za do 1A struje)
- Litijeva baterija (poželjno 7,4 v).
- Aktivna Wi-Fi veza
- Senzor temperature za solarnu ploču
- Krug razdjelnika napona (vidi opis)
Esp32 razvojna ploča:
Za aplikaciju s omogućenim IoT-om bitno je odabrati odgovarajuću vrstu razvojne ploče koja će moći obrađivati podatke sa svojih analognih pinova i slati podatke putem bilo koje vrste protokola veze, poput Wi-Fi-ja ili u oblak poslužitelju. Posebno smo odabrali ESP32 jer je to jeftini mikrokontroler s mnoštvom značajki. Također, ima ugrađeni Wi-Fi radio putem kojeg se vrlo lako možemo povezati s internetom.
Solarni krug:
Solarni krug za punjenje je krug koji dobiva veći napon od solarne ploče i pretvara ga u napon za punjenje tako da može učinkovito napuniti bateriju. Za ovaj projekt koristit ćemo LTP-ploču zasnovanu na LTPP62 Charge Controller, koju smo već napravili u jednom od naših prethodnih projekata. Ali ako želite ugraditi ovo praćenje IoT-a, možete koristiti bilo koji solarni krug. Odabrali smo ovu ploču jer je krug opremljen praćenjem maksimalne snage (MPPT), što je korisno za projekte solarnih panela male snage. To je učinkovit način punjenja male litijeve baterije od solarne ploče.

Shunt otpornik:
Bilo koji otpornik slijedi ohmov zakon što znači da ako određena količina struje teče kroz otpornik, pojavit će se određena količina pada napona. Uzlazni otpornici nisu iznimka od toga i on se posebno koristi za mjerenje protoka struje. Međutim, ovisno o nominalnom protoku struje kroz solarnu ploču, odaberite ranžirni otpornik koji će proizvesti odgovarajuću količinu napona koji može izmjeriti jedinica mikrokontrolera. Ali, istodobno je i važna snaga otpornika. Također je važan odabir snage razvodnog otpornika.
Pad napona može se izračunati pomoću dolje navedene formule. Ovo je poznato kao Ohmov zakon -
V = I x R
V je napon koji će nastati tijekom 'I', tj. Količina struje kroz iznos otpora 'R'. Na primjer, 1-omski otpor će proizvesti 1V pada napona kad kroz njega teče 1A struje.
Za snagu otpora može se koristiti dolje navedena formula -
P = I 2 R
Gdje je I maksimalni protok struje, a R vrijednost otpora. Za 1A struje s otpornikom od 1 ohma, 1 vati je dovoljan za rasipanje snage. Međutim, ovo je korisno za male projekte solarnih panela, ali uopće nije prikladno za primjenu solarnih mreža. U takvom je slučaju zapravo potrebna neinvazivna tehnika mjerenja struje. U takvom slučaju protok struje može se točno izmjeriti gdje se može izmjeriti vrlo mala količina struje, kao i vrlo velika količina struje.
Litijska baterija:
Izbor litijeve baterije važan je dio svakog projekta koji uključuje solarne panele. Budući da jedinici mikrokontrolera koja ostaje uvijek uključena i neprestano provjerava i predaje podatke potrebno je najmanje stotinu miliampera struje za stabilan rad.
Kapacitet baterije trebao bi biti nešto što može napajati mikrokontroler barem 4-5 dana kada sunce ne sija zbog monsuna. Također je važno da struja punjenja mora biti veća od struje opterećenja iz perspektive baterije. Sasvim je neobično ako netko bateriju spoji 100 mA tereta i osigura struju punjenja, koja je manja od te. Da bismo bili na sigurnijoj strani, trebali bismo imati najmanje 5 puta veću struju punjenja od struje opterećenja.
S druge strane, napon baterije mora biti veći od bilo kojeg uobičajenog ulaznog napona regulatora napona koji je potreban za mikrokontroler. Na primjer, litijeva baterija od 7,4 V mogla bi se spojiti i na linearni regulator napona od 3,3 V i 5,0 V (jer linearni regulator zahtijeva veći napon ispadanja više od LDO i prekidača.)
U našem projektu koristili smo bateriju od 4000mAH s ocjenom 7,4V. Koristili smo regulator od 5,0V koji osigurava dovoljnu struju i napon za ESP32.
Razdjelnik napona:
Razdjelnik napona važan je dio mjerenja napona solarne ploče. Treba odabrati razdjelnik napona koji će podijeliti napon prema ulaznom / izlaznom naponu mikrokontrolera.

Odaberite gornje otpore na takav način da izlazni napon djelitelja napona ne smije premašiti maksimalan I / O napon mikrokontrolera (3,3 V za ESP32). Međutim, savjetuje se upotreba potenciometra jer će pružiti fleksibilnost pri odabiru bilo koje solarne ploče višeg ili nižeg napona i lako može podesiti napon pomoću multimetra.
U našem slučaju imamo potenciometar u krugu ploče MPPT koji djeluje kao razdjelnik napona. Dijelnik napona postavili smo s faktorom podjele 6V. Spojili smo dva višemetara, jedan na ulazu i drugi na izlazu lonca, i postavili smo vrijednost da će, kada je ulazni napon 18V, izlaz biti 3V, jer je nominalni izlazni napon solarne ploče 18V.
Osjetnik temperature za solarnu ploču:
Izlazna snaga solarne ploče ima izravnu vezu s temperaturom solarne ploče. Zašto? Budući da temperatura solarne ploče počinje povećavati izlaznu struju solarne ploče, eksponencijalno raste, dok se izlazni napon počinje linearno smanjivati.
Prema formuli snage, snaga je jednaka naponu pomnoženom sa strujom (W = V x A), smanjenje izlaznog napona također smanjuje izlaznu snagu solarne ploče čak i nakon povećanja protoka struje. Sada je sljedeće pitanje koje nam pada na pamet, kako izmjeriti solarnu temperaturu? Pa, prilično je zanimljivo jer su solarni paneli uglavnom izloženi toplinskom okruženju jer je izložen izravnoj sunčevoj svjetlosti i iz očitih razloga. Najbolji način za mjerenje temperature solarne ploče je pomoću senzora temperature ravne površine. Također se predlaže uporaba termoelementa tipa K smještenog izravno u solarnu ploču.
Za našu primjenu koristili smo modul osjetnika temperature temeljenog na termistorima, koji je prikazan u nastavku.

Kružni dijagram za nadzor solarne energije temeljen na IoT-u
Kompletna shema sklopa za IoT omogućeni solarni monitor prikazana je u nastavku. Shema je jednostavna. Daska s crvenim crticama je MPPT ploča koju smo koristili za ovaj projekt.

Postavljanje ThingSpeak-a
Otvorite račun s ThingSpeak i idite na opciju "moj kanal", a zatim kliknite na Novi kanal.
Stvorite novi kanal s imenima polja.

Sada nakon postavljanja polja, idite na polje API Keys gdje je dostupan API API Key. Ovaj ključ mora biti naveden u kodu, kao i ID kanala.

Adresa ThingSpeak može se naći na istoj stranici.

S gornjim koracima možete vrlo jednostavno postaviti ThingSpeak. Ako želite saznati više o ThingSpeak-u i njegovom postupku postavljanja, možete pogledati naše prethodne članke na tu temu.
Arduino kod za nadzor solarne energije pomoću ESP32
Kompletni ESP32 kod za nadzor solarne energije nalazi se na dnu ove stranice. Kôd započinje definiranjem vašeg SSID-a, lozinke i nekoliko drugih stalnih parametara kao što je prikazano u nastavku.
// definiramo WiFi SSID i PWD za uplink. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// otpor na 25 stupnjeva C #define THERMISTORNOMINAL 10000 // temp. za nominalni otpor (gotovo uvijek 25 C) #define TEMPERATURENOMINAL 25 // Beta koeficijent termistora (obično 3000-4000) #define BCOEFFICIENT 3950 // vrijednost 'drugog' otpornika #define SERIESRESISTOR 10000
Nominalni omi termistora daju se na nazivnoj temperaturi. Postavite ovu vrijednost ovisno o tehničkom listu termistora. Stavite Beta koeficijent i vrijednost otpornika serijskog otpornika.
// definiranje analognog za struju i napon const int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
PIN-ovi su ovdje definirani.
#define thingSpeakAddress "xxxxxxxxx" #define ChannelId xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Stavite thingSpeakAddress, channelID, Write Feed API Key. Ostalo nije potrebno, ali je i dalje korisno ako podatke trebate primati s weba.
void setup () { // ovdje stavite svoj kod za postavljanje, da se jednom pokrene: // postavite serijski port na 115200 Serial.begin (115200); // Inicijalizacija serijskog kašnjenja (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (klijent); // Inicijalizirajte ThingSpeak // todo: stvorite zadatak za očitavanje pin-a za dobivanje struje i napona i izračunajte vat i temperaturu solarne ploče xTaskCreate ( wifi_task, / * funkcija zadatka. * / "Wifi_task", / * Niz s imenom zadatak. * / 1024 * 2, / * Veličina steka u bajtovima. * / NULL, / * Parametar je proslijeđen kao ulaz u zadatak * / 5, / * Prioritet zadatka. * / NULL); / * Ručka zadatka. * / Serial.print ("Čitanje podataka."); }
U gornjem kodu ThingSpeak poslužitelj se inicijalizira i kreira se zadatak koji će dobiti podatke koji se odnose na solarnu ploču.
U glavnoj petlji solarna struja i napon se prepoznaju putem analognog pina i izračunava se prosjek.
plutajuće solar_curr_adc_val = 0; plutaju solarni_volt_adc_val = 0; for (i = 0; i <NUMSAMPLES; i ++) { curr_samples = analogRead (curr_an_pin); volt_samples = analogRead (volt_an_pin); temp_samples = analogRead (ntc_temp_an_pin); kašnjenje (10); } // // prosjek svih uzoraka ispliva curr_avg = 0; plutajuće volt_avg = 0; plutajuće temp_avg = 0; za (i = 0; i <NUMSAMPLES; i ++) { curr_avg + = curr_samples; volt_avg + = volt_uzorci; temp_avg + = temp_samples; } curr_avg / = NUMSAMPLES; volt_avg / = NUMSAMPLES; temp_avg / = NUMSAMPLES; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // pretvaranje vrijednosti adc u napone za dobivanje stvarne struje i napona. plutaju solarni_curr = (curr_avg * 3.3) / (4095); plutaju solarni_volt = (volt_avg * 3,3) / (4095); // pomoću razdjelnika napona spuštamo stvarni napon. // iz tog razloga množimo 6 sa prosječnim naponom da bismo dobili stvarni napon solarne ploče. solarni_volt * = 6;
Sunčev se napon predaje množenjem sa 6 jer smo stvorili djelitelj napona koji će podijeliti ulazni napon za 6 puta.
Temperatura se generira iz termistora pomoću logaritamske tvorbe.
// pretvorimo vrijednost u otpor temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print(" Otpor termistora "); //Serial.println(temp_avg); plutajući steinhart; steinhart = temp_avg / TERMISTORNOMINALNI; // (R / Ro) steinhart = log (steinhart); // ln (R / Ro) steinhart / = BCOEFFICIENT; // 1 / B * ln (R / Ro) steinhart + = 1,0 / (TEMPERATURENOMINAL + 273,15); // + (1 / Za) steinhart = 1,0 / steinhart; // Obrni steinhart - = 273,15; // pretvoriti apsolutnu temp u C
Podaci se čitaju svakih 15 sekundi.
kašnjenje (1000); brojati ++; Serial.print ("."); if (count> = 15) { count = 0; Serial.println ("=============================================== ============================ "); Serial.print ("Solar Voltage ="); Serial.println (solarni_volt); Serial.print ("Solarna struja ="); Serial.println (solar_curr); plutaju solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solarni_vat); Serial.print ("Solar Temperature ="); Serial.println (steinhart); Serial.println ("=============================================== ============================ ");
Podaci za odgovarajuća polja prenose se pomoću funkcije Thing.Speak.setField (); kada je WiFi povezan.
if (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, solar_volt); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solarni_vat); ThingSpeak.setField (4, steinhart); // zapisivanje na ThingSpeak kanal int x = ThingSpeak.writeFields (channelID, writeFeedAPIKey); if (x == 200) { Serial.println ("Ažuriranje kanala uspješno."); } else { Serial.println ("Problem s ažuriranjem kanala. HTTP kôd pogreške" + Niz (x)); } } else { Serial.println ("\ r \ n ###################################### ######################## "); Serial.println ("Ažuriranje podataka na thingSpeak Server nije uspjelo."); Serial.println ("WiFi nije povezan…"); Serial.println ("############################################### ############### \ r \ n "); } Serial.print ("Čitanje podataka."); } }
Wi-Fi zadatak izrađen u donjem isječku koda-
void wifi_task (void * parametar) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Pokušaj povezivanja na SSID:"); Serial.println (WLAN_SSID); dok (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Povezivanje s WPA / WPA2 mrežom. Promijenite ovaj redak ako koristite otvorenu ili WEP mrežu Serial.print ("."); kašnjenje (5000); } Serial.println ("\ nPovezano."); Serial.println (); Serial.println ("WiFi povezan"); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Podaci o ispitivanju i praćenju
Solarna ploča povezana je s krugom i postavljena na sunčevu svjetlost radi testiranja, kao što je prikazano dolje.

Kompletan rad prikazan je u videu ispod. Naš je krug uspio očitati izlazni napon, struju i snagu s ploče i ažurirati ga uživo na thingspeak kanalu kao što je prikazano dolje.

Kao što vidimo, 15-minutni podaci prikazani su na gornjem grafikonu. Budući da je ovo projekt rada na otvorenom, treba koristiti odgovarajuću PCB zajedno sa priloženom kutijom. Ograda mora biti izrađena na takav način da krug ostane vodootporan na kiši. Da biste modificirali ovaj sklop ili razgovarali o daljnjim aspektima ovog projekta, poslužite se aktivnim forumom Circuit Digest. Nadam se da ste uživali u vodiču i naučili nešto korisno.
