Solar Tracker



Strumentazione

Instrumentation



L'energia prodotta dal pannello viene immagazzinata in una batteria Lead-Acid 12V - 44Ah.
La capienza totale della batteria sarebbe di 528Wh ma per non pregiudicarne la capacità di ricarica serve un controllore di carica che interrompe l'utilizzo della batteria una volta scesi sotto al 50% di capacità.
La caratteristica delle batterie Lead-Acid infatti non permette un utilizzo ripetuto del 100% dell'energia immagazzinata per non avere conseguenze negative sulla capacità di ricarica.
Il controllo del livello della batteria viene eseguito tramite l'osservazione del livello di tensione fornita: quando la tensione fornita scende sotto gli 11V viene sospesa l'erogazione di corrente in attesa della ricarica solare.
Un simile controllo avviene per non sovraccaricare la batteria interrompendo il fluire della corrente dal pannello solare: il controllore alza la tensione al livello di Open Circuit caratteristico del pannello.








Due convertitori di tensione Buck permettono di modulare la tensione della batteria alle tensioni di esercizio dell'elettronica utilizzata: 5V e 3.3V.
Il modello di convertitore Buck utilizzato è il MP1584EN che permette di convertire un range di tensione 4,5V-28V in 0,8V-20V.
La corrente massima sopportata dal dispositivo è di 3A, più che sufficienti per l'alimentazione dell'elettronica di controllo.
L'efficienza energetica del MP1584EN si è rilevata superiore rispetto al convertitore di tensione interno alla scheda Arduino. Quest'ultimo infatti perde nella conversione costantemente circa 2V assorbiti dal componente. Il Buck converter MP1584EN invece riesce a specchiare le tensioni sui due lati con un'efficienza del 96%.








Il codice di controllo viene implementato tramite una scheda Arduino Mega 2560 alimentata sul Pin 5V tramite un Buck-converter impostato a 12V-5V.
I sensori comunicano attraverso i diversi protocolli di Input/Output supportati da Arduino: porte seriali, pin analogici e digitali, I2C.







L'alimentazione del motore viene fornita da un driver di tipo L298N con regolatore di tensione. La scheda del driver è formata da un Dual H-bridge L298N che permette di pilotare motori fino a 35V.
Il driver riceve la tensione direttamente dalla batteria a 12V e tramite il suo regolatore di tensione alimenta il motore DC da 6V che aziona la rotazione del pannello. Questa scheda permette di controllare il motore in velocità e senso di rotazione tramite 3 pin collegati alla scheda Arduino. Un pin controlla la velocità tramite un segnale PWM generato da una porta digitale di Arduino, gli altri 2 modificano la direzione di rotazione secondo una tabella di verità binaria (tensione nulla o 5V).











Il modulo ESP8266 (utilizzato nella variante ESP01) deve essere alimentato a 3.3V ma permette di ricevere segnali fino a 5V sulle porte seriali. La comunicazione Arduino-ESP8266 avviene tramite la porta seriale 1 presente nella scheda Arduino Mega. Il modulo viene controllato tramite la libreria di comandi AT nativa dei moduli ESP.











Il modulo ACS712 permette di misurare la corrente elettrica generata dal pannello fotovoltaico. Ci sono 3 tipi di ACS712 con intervalli di misurazione differente: 5A, 10A, 30A. La principale differenza tra le diverse taglie di sensore risiede nella risoluzione della misurazione effettuata. Il range di valori disponibili dipende sia da Arduino sia dal segnale che riesce ad emettere il modulo ACS712.
La scheda ACS712 è collegata ad arduino tramite un Pin analogico quindi il segnale da elaborare rientra nell'intervallo 0-5V. Il segnale deve essere convertito nel dominio digitale per essere elaborato da Arduino, quindi interviene il convertitore Analogico-Digitale interno di Arduino. Questa conversione trasforma il segnale analogico in un segnale digitale di 10 bit (0-1024).
Il fattore caratterizzante i moduli ACS712 è la risoluzione con cui convertono il valore di corrente in valore di tensione analogica. Il massimo valore si ottiene con il modulo da 5A che traduce un intervallo di 1A in unintervallo di tensione di 185mV.
Considerando il lato arduino lo step minimo in lettura è rappresentato da 5V/1024 = 4,91mV. In questo progetto viene utilizzato il modulo da 5A per avere una maggiore risoluzione nella lettura della corrente. La misurazione della tensione viene effettuata tramite un partitore resistivo 1:6. La tensione misurata rientra in questo modo nel range 0-5V supportato dai pin analogici di Arduino.










Come sensore di luminosità per il tracciamento del Sole nel corso della giornata viene usata una matrice 2x2 di LDR (Light-Dependent Resistor o fotoresistori).
Ogni LDR è separato dagli altri attraverso una parete che permette di proiettare l'ombra dovuta allo spostamento del Sole e percepire quindi la differenza di luminosità tra i sensori in piena luce e quelli in penombra.
Un LDR varia la sua resistenza in base alla luce incidente, se si impone una corrente costante la tensione osservata varierà con la luminosità.
Questi valori vengono letti dalle porte analogiche della scheda Arduino e convertiti in segnali digitali a 10 bit (0-1024): la tensione minima di 0V avrà valore 0 mentre la tensione massima di 5V corrisponderà a 1024.







Il modulo BME280 permette di effettuare una misurazione delle condizioni ambientali in tempo reale.
Questo sensore fornisce 3 tipologie di dato: temperatura, umidità e pressione atmosferica.
I dati del sensore vengono letti dalla scheda Arduino tramite il protocollo seriale I2C utilizzando apposite librerie software.
A differenza di altri sensori (come il DHT11) la lettura dei dati è immediata senza bisogno di un tempo di preparazione del dato da parte del sensore. Questo aspetto diminuisce le possibili problematiche di interfacciamento e temporizzazione degli accessi alle letture.





The energy produced by the solar panel is stored in a 12V - 44Ah Lead-Acid battery .
The total capacity of the battery would be 528Wh but in order not to jeopardize its charging capacity, a charge controller is needed which stops the use of the battery once it has fallen below 50% of capacity.
The characteristic of Lead-Acid batteries in fact does not allow a repeated use of 100% of the stored energy in order not to have negative consequences on the recharge capacity.
The battery level check is performed by observing the voltage level supplied: when the voltage supplied falls below 11V, the power supply is suspended pending solar charging.
A similar control takes place in order not to overcharge the battery, when the voltage is too high, by interrupting the flow of current from the solar panel: the controller raises the voltage to the panel's characteristic Open Circuit level.









Two Buck voltage converters allow you to modulate the battery voltage to the operating voltages of the electronics used: 5V and 3.3V.
The Buck converter used is the MP1584EN which allows you to convert a voltage range from 4.5V-28V to 0.8V-20V.
The maximum current supported by the device is 3A, more than enough for the power supply requirements of the control electronics.
The energy efficiency of the MP1584EN is higher than the voltage converter inside the Arduino board. In fact, the latter constantly loses about 2V in any voltage conversion.
The Buck converter MP1584EN instead manages to mirror the tensions on both sides with an efficiency of 96%.









The control code is implemented via an Arduino Mega 2560 board powered on Pin 5V via a Buck-converter set to 12V-5V.
The sensors communicate through the various Input/Output protocols supported by Arduino: serial ports, analog and digital pins, I2C.








Motor power is supplied by an L298N type driver with voltage regulator . The driver board is made up of a Dual H-bridge L298N which allows to drive motors up to 35V .
The driver receives the voltage directly from the 12V battery and via its voltage regulator feeds the 6V DC motor which activates the rotation of the panel.
This board allows to control the motor in speed and direction of rotation through 3 pins connected to the Arduino board. One pin controls the speed via a PWM signal generated by an Arduino digital port , the other 2 modify the rotation direction according to a binary truth table (zero voltage or 5V).












The ESP8266 (ESP01 type) module must be powered at 3.3V but allows to receive signals up to 5V on the serial ports.
Arduino-ESP8266 communication takes place via serial port 1 on the Arduino Mega board. The module is controlled through the native AT command library of the ESP modules.











The ACS712 module allows to measure the electric current generated by the photovoltaic panel. There are 3 types of ACS712 with different measuring ranges: 5A, 10A, 30A.
The main difference between the different sensor sizes lies in the resolution of the measurement made. The range of available values ​​depends both on Arduino and on the signal that the ACS712 module can issue.
The ACS712 board is connected to arduino through an analog Pin therefore the signal to be processed falls within the 0-5V range.
The signal must be converted into the digital domain in order to be processed by Arduino, then the Arduino internal Analog-Digital converter intervenes. This conversion transforms the analog signal into a 10 bit digital signal (0-1024).
The characterizing factor of the ACS712 modules is the resolution with which they convert the current value into an analog voltage value. The maximum resolution value is obtained with the 5A module which translates a 1A range into a 185mV voltage range.
Considering the Arduino side, the minimum reading step is represented by 5V / 1024 = 4.91mV .
In this project the 5A module is used to have a higher resolution in the current reading. The voltage measurement is performed via a 1: 6 resistive divider. The measured voltage thus falls within the 0-5V range supported by the Arduino analog pins.











A 2x2 matrix of LDR (Light-Dependent Resistor or photoresistors) is used as a light sensor for tracking the Sun during the day. Each LDR is separated from the others through a wall that allows to project the shadow due to the displacement of the Sun and therefore perceive the difference in brightness between the sensors in full light and those in half-light. An LDR varies its resistance according to the incident light, if a constant current is imposed the observed voltage will vary with the brightness.
These values ​​are read from the analog ports of the Arduino board and converted into 10-bit digital signals (0-1024): the minimum voltage of 0V will have a value of 0 while the maximum voltage of 5V will correspond to 1024.







The BME280 module allows to measure the environmental conditions in real time.
This sensor provides 3 types of data: temperature, humidity and atmospheric pressure.
The sensor data are read from the Arduino board via the I2C serial protocol using specific software libraries.
Unlike other sensors (such as DHT11) the reading of the data is immediate without the need for a time of preparation of the data by the sensor. This aspect reduces the possible problems of interfacing and timing of accesses to the readings.