- Selecció dels components adequats per al monitor d’energia solar habilitat per IoT
- Diagrama de circuits per a la monitorització d'energia solar basada en l'IoT
- Configuració de ThingSpeak
- Codi Arduino per a la monitorització d'energia solar mitjançant ESP32
- Proves i seguiment de dades
En l’àmbit de les energies renovables, l’energia solar es troba al capdavant, perquè la producció d’energia mitjançant l’ús del sol és la forma més fàcil i comercialment viable d’energies renovables. Parlant de panells solars, s’ha de controlar la potència de sortida d’una sortida de panells solars per tal d’obtenir una potència òptima de sortida dels panells. És per això que es fa necessari un sistema de monitorització en temps real. En una gran planta d'energia solar, també es pot utilitzar per controlar la potència de sortida de cada panell que ajuda a identificar l'acumulació de pols. També prevé qualsevol condició de fallada durant el temps de funcionament. En alguns dels nostres articles anteriors, hem construït alguns projectes relacionats amb l'energia solar, com ara un carregador de telèfon mòbil amb energia solar i un circuit d'inversors solars, etc. Podeu comprovar-los si esteu cercant més projectes sobre energia solar.
En aquest projecte, farem un sistema de monitorització d’energia solar basat en IoT incorporant la tècnica de càrrega de la bateria basada en MPPT (Maximum Power Point Tracker), que ajudarà a reduir el temps de càrrega i millorar l’eficiència. A més, mesurarem la temperatura del panell, la tensió de sortida i el corrent per millorar l’aspecte de seguretat del circuit. Finalment, per acabar-ho d’adobar, utilitzarem els serveis de núvol de ThingSpeak per controlar les dades de sortida des de qualsevol part del món. Tingueu en compte que aquest projecte és una continuació del projecte MPPT Solar Charge Controller Project que vam construir anteriorment. Aquí supervisarem el voltatge de sortida, el corrent i la potència del panell mitjançant la placa de desenvolupament ESP32 IoT.
Selecció dels components adequats per al monitor d’energia solar habilitat per IoT
Amb un monitor solar, es fa molt fàcil controlar i detectar falles en qualsevol sistema solar. Per això, la selecció de components esdevé una part molt important a l’hora de dissenyar aquest sistema. A continuació es mostra la llista de parts que hem utilitzat.
- Taula de desenvolupament ESP32
- Circuit MPPT (pot ser qualsevol circuit solar)
- Una resistència de derivació (per exemple 1 Ohm 1 watt - adequada per a fins a 1 A de corrent)
- Una bateria de liti (preferida de 7,4 v).
- Connexió Wi-Fi activa
- Sensor de temperatura per al panell solar
- Circuit divisor de tensió (vegeu la descripció)
Esp32 Dev Board:
Per a una aplicació habilitada per a l'IoT, és essencial triar el tipus de placa de desenvolupament adequada que sigui capaç de processar les dades dels seus pins analògics i enviar-les mitjançant qualsevol tipus de protocol de connexió, com ara Wi-Fi o al núvol. servidor. Hem seleccionat específicament ESP32, ja que és un microcontrolador de baix cost amb moltes funcions. A més, té una ràdio Wi-Fi integrada a través de la qual ens podem connectar a Internet molt fàcilment.
Circuit solar:
Un circuit de càrrega solar és un circuit que obté un voltatge més alt del panell solar i el converteix en un voltatge de càrrega perquè pugui carregar la bateria de manera eficient. Per a aquest projecte, utilitzarem la placa de circuit de controladors de càrrega MPPT basada en LT3562 que ja hem realitzat en un dels nostres projectes anteriors. Però si voleu incrustar aquest monitoratge d’activació de l’IoT, podeu utilitzar qualsevol tipus de circuit solar. Hem escollit aquesta placa perquè el circuit està equipat amb un seguiment de punts de màxima potència (MPPT), que és beneficiós per a projectes de panells solars de baixa potència. És una manera eficient de carregar una petita bateria de liti des d’un panell solar.

Resistència de derivació:
Qualsevol resistència segueix la llei de l'ohm, el que significa que si una determinada quantitat de corrent flueix a través de la resistència, apareixerà una certa quantitat de caiguda de tensió. Les resistències de derivació no en són una excepció i s’utilitzen específicament per mesurar el flux de corrent. No obstant això, en funció del flux de corrent nominal a través del panell solar, trieu una resistència de derivació que produeixi una quantitat adequada de voltatge que la mesura del microcontrolador pugui mesurar. Però, al mateix temps, la potència de la resistència també és important. La selecció de la potència de la resistència de derivació també és important.
La caiguda de tensió es pot calcular mitjançant la fórmula que es mostra a continuació. Això es coneix com la llei d’Ohm.
V = I x R
V és el voltatge que es produirà durant 'I', és a dir, la quantitat de flux de corrent a través de la quantitat de resistència 'R'. Per exemple, la resistència d'1 ohm produirà 1V de caiguda de tensió quan hi circuli 1A de corrent.
Per a la potència de la resistència, es pot utilitzar la fórmula donada a continuació:
P = I 2 R
On I és el flux de corrent màxim i R és el valor de la resistència. Per a 1A de corrent amb resistència d'1 ohms, 1 watt és adequat per a la dissipació de potència. Tanmateix, això és útil per a petits projectes de panells solars, però no és gens adequat per a aplicacions relacionades amb la xarxa solar. En aquest cas, la tècnica de mesura de corrent no invasiva és en realitat el que cal utilitzar. En aquest cas, es pot mesurar amb precisió el flux de corrent on es pot mesurar una quantitat molt baixa de corrent, així com una quantitat molt alta de corrent.
Bateria de liti:
La selecció de la bateria de liti és una part essencial de qualsevol projecte que impliqui plaques solars. Com que la unitat de microcontrolador que sempre està encesa i comprova i envia les dades constantment, requereix almenys cent miliamperis de corrent per a un funcionament estable.
La capacitat de la bateria pot alimentar el microcontrolador durant almenys 4-5 dies quan el sol no brilla a causa del monsó. També és important que el corrent de càrrega sigui superior al corrent de càrrega des de la perspectiva de la bateria. És bastant inusual si algú connecta 100 mA de càrrega amb una bateria i proporciona una intensitat de càrrega inferior a aquesta. Per estar al costat més segur, hauríem de tenir almenys 5 vegades més de corrent de càrrega que el de càrrega.
D'altra banda, la tensió de la bateria ha de ser superior a qualsevol voltatge d'entrada habitual del regulador de voltatge que requereixi el microcontrolador. Per exemple, es podria connectar una bateria de liti de 7,4 V a través del regulador de tensió lineal tant de 3,3 V com de 5,0 V (ja que el regulador lineal requereix un voltatge de caiguda més alt que el LDO i el commutador).
Al nostre projecte, hem utilitzat una bateria de 4000 mAH amb una qualificació de 7,4 V. Hem utilitzat un regulador de 5,0 V que proporciona suficient intensitat de corrent i tensió per a l’ESP32.
Divisor de tensió:
Un divisor de tensió és una part essencial de la mesura de tensió del panell solar. S’ha d’escollir un divisor de tensió que dividirà la tensió segons l’entrada de voltatge d’E / S del microcontrolador.

Trieu les resistències anteriors de manera que la tensió de sortida del divisor de tensió no superi la tensió màxima d'E / S del microcontrolador (3,3 V per ESP32). No obstant això, es recomana utilitzar un potenciòmetre perquè proporcionarà flexibilitat per triar qualsevol tipus de panell solar de tensió superior o inferior i es pot configurar fàcilment el voltatge mitjançant un multímetre.
En el nostre cas, tenim un potenciòmetre al circuit de la placa MPPT que actua com a divisor de tensió. Establim el divisor de tensió amb un factor de divisió de 6V. Hem connectat dos multímetres, un a l’entrada i un altre a la sortida de l’olla, i hem establert el valor que quan la tensió d’entrada és de 18V la sortida serà de 3V, ja que la tensió de sortida nominal del panell solar és de 18V.
Sensor de temperatura per al panell solar:
La potència del panell solar té una connexió directa amb la temperatura del panell solar. Per què? Perquè a mesura que la temperatura d’un panell solar comença a augmentar, el corrent de sortida del panell solar augmenta exponencialment, mentre que el voltatge de sortida comença a reduir-se linealment.
Segons la fórmula de potència, la potència és igual al voltatge vegades el corrent (W = V x A), la disminució del voltatge de sortida també disminueix la potència de sortida del panell solar fins i tot després de l’augment del flux de corrent. Ara, la següent pregunta que ens ve al cap és: com mesurar la temperatura solar? Bé, és força interessant, ja que els panells solars solen estar exposats a l’entorn tèrmic, ja que s’exposen a la llum solar directa i per raons òbvies. La millor manera de mesurar la temperatura del panell solar és mitjançant un sensor de temperatura de superfície plana. També es recomana utilitzar un termoparell tipus K situat directament al panell solar.
Per a la nostra aplicació, hem utilitzat un mòdul de sensor de temperatura basat en termistor, que es mostra a continuació.

Diagrama de circuits per a la monitorització d'energia solar basada en l'IoT
A continuació es mostra l’ esquema de circuits complet del monitor d’energia solar habilitat per IoT. L’esquema és senzill. El tauler de punts vermell és el tauler MPPT que hem utilitzat per a aquest projecte.

Configuració de ThingSpeak
Creeu un compte amb ThingSpeak i aneu a l'opció "el meu canal" i, a continuació, feu clic al canal nou.
Creeu un canal nou amb els noms dels camps.

Ara, després d’establir el camp, aneu al camp Claus API on hi ha disponible la clau API API. Aquesta clau s'ha de proporcionar al codi, així com a l'identificador del canal.

L'adreça de ThingSpeak es pot trobar a la mateixa pàgina.

Amb els passos anteriors, podeu configurar ThingSpeak molt fàcilment. Si voleu obtenir més informació sobre ThingSpeak i el seu procés de configuració, podeu consultar els nostres articles anteriors sobre el tema.
Codi Arduino per a la monitorització d'energia solar mitjançant ESP32
El codi complet de control de l’energia solar ESP32 es troba a la part inferior d’aquesta pàgina. El codi comença definint el vostre SSID, la vostra contrasenya i alguns altres paràmetres constants, tal com es mostra a continuació.
// defineix el SSID i el PWD WiFi per a l'enllaç ascendent. #define WLAN_SSID "xxxx" #define WLAN_PASS "xxxxxxxxxx"
// resistència a 25 graus C # definició TERMISTORNOMINAL 10000 // temp. per a resistència nominal (gairebé sempre 25 C) # definir TEMPERATURENOMINAL 25 // El coeficient beta del termistor (normalment 3000-4000) # definir BCOEFFICIENT 3950 // el valor de l’altra resistència # definir SERIESRESISTOR 10000
L'ohm nominal del termistor es proporciona a la temperatura nominal. Definiu aquest valor en funció del full de dades del termistor. Poseu el coeficient beta i el valor de la resistència en sèrie del termistor.
// defineix Analog for Current and Voltage const int curr_an_pin = 35; const int volt_an_pin = 34; const int ntc_temp_an_pin = 33;
Els PIN es defineixen aquí.
#define thingSpeakAddress "xxxxxxxxx" #define channelID xxxxx #define writeFeedAPIKey "xxxxxxx" #define readFeedAPIKey "xxxxxxx" #define readFieldAPIKey "xxxxxxxx" #define readStatusAPIKey "xxxxxxx"
Poseu la cosa thingSpeakAddress, channelID, Write Feed API Key. La resta de coses no són necessàries, però continuen sent útils si cal rebre dades del web.
void setup () { // poseu aquí el vostre codi de configuració per executar-lo una vegada: // configureu el port sèrie a 115200 Serial.begin (115200); // Inicialitzar el retard en sèrie (1000); WiFi.mode (WIFI_STA); ThingSpeak.begin (client); // Inicialitzar ThingSpeak // tot: creeu una tasca per llegir un pin per obtenir corrent i tensió i calcular el watt i la temperatura del panell solar xTaskCreate ( wifi_task, / * Funció de tasca. * / "Wifi_task", / * Cadena amb el nom de task. * / 1024 * 2, / * Mida de la pila en bytes. * / NULL, / * Paràmetre passat com a entrada de la tasca * / 5, / * Prioritat de la tasca. * / NULL); / * Mànec de tasques. * / Serial.print ("Lectura de dades"); }
Al codi anterior, s’inicialitza el servidor ThingSpeak i es crea una tasca que obtindrà les dades relacionades amb el panell solar.
Al bucle principal, el corrent i el voltatge solar es detecten mitjançant un pin analògic i es fa la mitjana.
float solar_curr_adc_val = 0; flotador solar_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); retard (10); } // mitjana de totes les mostres a la flotació curr_avg = 0; flotador volt_avg = 0; flo_ temp_avg = 0; per a (i = 0; i <NUMSAMPLES; i ++) { curr_avg + = curr_samples; volt_avg + = volt_samples; temp_avg + = temp_samples; } curr_avg / = NUMSAMPLES; volt_avg / = NUMSAMPLES; temp_avg / = NUMSAMPLES; //Serial.print("ADC VALUE = "); //Serial.println(ADC_VALUE); // converteix el valor adc en tensions per obtenir el corrent i el voltatge reals. float solar_curr = (curr_avg * 3.3) / (4095); float solar_volt = (volt_avg * 3.3) / (4095); // mitjançant un divisor de tensió reduïm la tensió real. // per aquest motiu, multipliquem el 6 amb tensió mitjana per obtenir el voltatge real del panell solar. volt_ solar * = 6;
La tensió solar s’envia multiplicant per 6 a mesura que hem creat el divisor de tensió que dividirà la tensió d’entrada per 6 vegades.
La temperatura es genera a partir del termistor mitjançant una formació logarítmica.
// converteix el valor en resistència temp_avg = 4095 / temp_avg - 1; temp_avg = SERIESRESISTOR / temp_avg; //Serial.print("Resistència del termistor "); //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; // Inverteix steinhart - = 273,15; // converteix la temperatura absoluta en C.
Les dades es llegeixen cada 15 segons.
retard (1000); comptar ++; Serial.print ("."); if (recompte> = 15) { recompte = 0; Serial.println ("============================================== ============================ "); Serial.print ("Voltatge solar ="); Serial.println (volt_solar); Serial.print ("Corrent solar ="); Serial.println (solar_curr); float solar_watt = solar_volt * solar_curr; Serial.print ("Solar Watt ="); Serial.println (solar_watt); Serial.print ("Temperatura solar ="); Serial.println (steinhart); Serial.println ("============================================== ============================ ");
Les dades dels camps respectius es transmeten mitjançant la funció Thing.Speak.setField (); quan el WiFi està connectat.
if (WiFi.status () == WL_CONNECTED) { ThingSpeak.setField (1, volt_solar); ThingSpeak.setField (2, solar_curr); ThingSpeak.setField (3, solar_watt); ThingSpeak.setField (4, steinhart); // escriviu al canal ThingSpeak int x = ThingSpeak.writeFields (canalID, writeFeedAPIKey); if (x == 200) { Serial.println ("Canals actualitzats correctament."); } else { Serial.println ("Problema en actualitzar el canal. Codi d'error HTTP" + Cadena (x)); } } else { Serial.println ("\ r \ n ######################################### ######################## "); Serial.println ("No s'ha pogut actualitzar les dades al servidor thingSpeak."); Serial.println ("WiFi no connectat…"); Serial.println ("################################################# ############### \ r \ n "); } Serial.print ("Lectura de dades"); } }
La tasca Wi-Fi creada al fragment de codi següent:
void wifi_task (paràmetre void *) { while (1) { if (WiFi.status ()! = WL_CONNECTED) { Serial.print ("Intentant connectar-vos a SSID:"); Serial.println (WLAN_SSID); mentre que (WiFi.status ()! = WL_CONNECTED) { WiFi.begin (WLAN_SSID, WLAN_PASS); // Connecteu-vos a la xarxa WPA / WPA2. Canvieu aquesta línia si utilitzeu la xarxa oberta o WEP Serial.print ("."); retard (5000); } Serial.println ("\ nConnectat"); Serial.println (); Serial.println ("WiFi connectat"); Serial.println ("adreça IP:"); Serial.println (WiFi.localIP ()); } vTaskDelay (1000 / portTICK_PERIOD_MS); } vTaskDelete (NULL); }
Proves i seguiment de dades
El panell solar es connecta amb el circuit i es col·loca a la llum del sol per provar-lo, tal com es mostra a continuació.

El funcionament complet es mostra al vídeo següent. El nostre circuit va ser capaç de llegir el voltatge, el corrent i la potència de sortida del tauler i actualitzar-lo en directe al canal Thingspeak, com es mostra a continuació.

Com podem veure, les dades de 15 minuts es mostren al gràfic anterior. Com que es tracta d’un projecte d’explotació a l’exterior, cal utilitzar un PCB adequat juntament amb una caixa tancada. El recinte s’ha de fer de manera que el circuit quedi impermeable a la pluja. Per modificar aquest circuit o discutir altres aspectes d’aquest projecte, utilitzeu el fòrum actiu de Circuit Digest. Espero que us hagi agradat el tutorial i hàgiu après alguna cosa útil.
