TEST SISTEMA PANNELLO FOTOVOLTAICO
Test per verificare i vari assorbimenti dei componenti elettronici collegati ad ELEGOO Mega 2560.
Verificare che durante il periodo notturno la batteria sia in grado di alimentare correttamente tutti i vari componenti elettronici.
Pannello fotovoltaico SOLAR Leading SLM5-36P-24W Mono-si 17 volt 1.39A
Regolatore di carica VELLEMAN SOL10UC max 10A 160W(12Vdc)
Batteria AGM FIAMM FG22703 12V 27 Ah
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#include <Servo.h> // ARDUINO 022 6 GIUGNO 2019 TEST_ELEGOO_LCD4X20
Servo myservo; // crea l’oggetto di tipo Servo
int pos = 0; // inizializza una variabile di tipo intero pos il cui valore sarà la posizione da impartire al servo
const int sensor=A9; // Assegno al pin analogico A9 la variabile sensor LM35DZ
float tempc; //Variabile di temperatura Celsius
float tempf; //Variabile di temperatura Fahreinheit
float vout; //Variabile temporanea vout di temperatura
void setup()
{
pinMode(sensor,INPUT); // Configuro il pin A9 come input
pinMode(42, OUTPUT);// Configuro il pin 42 come OUTPUT collegato LED VERDE
pinMode(50, OUTPUT);// Configuro il pin 50 come OUTPUT collegato LED ROSSO
Serial.begin(9600);
lcd.begin(20, 4); //lcd.begin(colonne, righe)
myservo.attach(8); // lega l’oggetto myservo al pin a cui abbiamo collegato il nostro servo, in questo caso il pin 8
}
void loop()
{
lcd.clear();// cancello il video dell'LCD
lcd.setCursor(0,0); //Colonna 2 riga 2
lcd.print("DISPLAY LCD 4 x 20"); // Stampa del messaggio
lcd.setCursor(1,1); //Colonna 2 riga 2
lcd.print("I.T.I.S. G. RIVA"); // Stampa del messaggio
lcd.setCursor(1,2); //Colonna 2 riga 3
lcd.print("21047 SARONNO (VA)");// Stampa del messaggio
lcd.setCursor(3,3); //Colonna 4 riga 4
lcd.print("ARDUINO rev. 3");// Stampa del messaggio
delay(3000);// ATTENDO 3 SECONDI LCD compaiono i messaggi
lcd.clear();// cancello il video dell'LCD
digitalWrite(50, 0);// SPENGO IL LED ROSSO
digitalWrite(42, HIGH);//Accendo il LED VERDE
delay(3000);// ATTENDO 3 SECONDI IL led sempre acceso
lcd.setCursor(1,2); //Colonna 2 riga 3
lcd.print("STO RUOTANDO ");// Stampa del messaggio
for(pos = 0; pos < 180; pos += 1) // imposta un ciclo con valori che vanno da 0 a 180, sarano i gradi di spostamento del nostro servo
{
myservo.write(pos); // con il metodo write() passi all’oggetto myservo la posizione che deve raggiungere,
// il servo si sposterà gradualmente dalla sua posizione 0° alla posizione 180°
delay(15); // imposta un ritardo di 15 millesimi di secondo per ogni ciclo del for.
// Più sarà alto il ritardo più il servo sarà lento.
}
for(pos = 180; pos>=1; pos-=1) // In questo caso imposta un ciclo con valori che vanno da 180 a 0
{
myservo.write(pos);
delay(15);
}
lcd.clear();// cancello il video dell'LCD
delay(3000); //ATTENDO 3 SECONDI
digitalWrite(42, 0);//SPENGO il LED VERDE
vout=analogRead(sensor);
vout=(vout*500)/1023;
tempc=vout; // Memorizzo il valore dei gradi nella variabile
tempf=(vout*1.8)+32; // Conversione in gradi Fareneit
lcd.setCursor(0,1);
lcd.print("TEMPERATURA C= ");
lcd.print(tempc);
lcd.setCursor(0,2);
lcd.print("TEMP. FAREN. F=");
lcd.print(tempf);
delay(4000); //ATTENDO 4 SECONDI sull'lcd rimangono LE SCRITTE
digitalWrite(50, HIGH);//Accendo il LED ROSSO
}
ARDUINO 022 SERIAL1 di ELEGOO XBEE TEMP per XCUT
Collegato PIN 1 XBEE al pin GND di Elegoo
Collegato PIN 7 XBEE al pin 3.3 Volt di Elegoo
Collegato PIN 3 XBEE al pin TX1 di Elegoo PIN 18
Programma:
const int sensor=A9; // Assegno al pin analogico A9 la variabile sensor LM35DZ
float tempc; //Variabile di temperatura Celsius
float tempf; //Variabile di temperatura Fahreinheit
float vout; //Variabile temporanea vout di temperatura
void setup()
{
pinMode(sensor,INPUT); // Configuro il pin A9 come input
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
Serial1.println("DISPLAY LCD 4 x 20"); // Stampa del messaggio
Serial1.println("I.T.I.S. G. RIVA"); // Stampa del messaggio
Serial1.println("21047 SARONNO (VA)");// Stampa del messaggio
Serial1.println("ARDUINO rev. 3");// Stampa del messaggio
delay(3000);
Serial1.println("STO RUOTANDO ");// Stampa del messaggio
vout=analogRead(sensor);
vout=(vout*500)/1023;
tempc=vout; // Memorizzo il valore dei gradi nella variabile
tempf=(vout*1.8)+32; // Conversione in gradi Fareneit
Serial1.print("TEMPERATURA C= ");
Serial1.print(tempc);
Serial1.println("");
Serial1.println("");
delay(4000);
}
Onde evitare la trascrizione manuale dei Volt( pannello-batteria) per un eventuale grafico:
Realizziamo un partitore di tensione.
L'uscita in Volt dal partitore di tensione sarà analizzata e memorizzata da Arduino (in questo caso Elegoo)
Arduino può leggere in ingresso un massimo di 5 Volt.
Con il partitore posso adattare in modo proporzionale la tensione del pannello/batteria secondo la seguente legge di proporzionalità:
max 12 Volt ==> max 4.8 Volt in ingresso ad un pin di Arduino.
Ecco il nostro partitore di tensione con le rispettive Resistenze(un esempio con Excel):
Valori commerciali delle resistenze:
I valori in blu sono inseriti manualmente all'interno della tabella di Excel.
Ho fissato una intensità di corrente I pari a 4,6 mA. (si procede per tentativi fino a quando compaiono le resistenze desiderate).
Occorrono due partitori di tensione.
Si collegano ai morsetti posti sul retro del regolatore di carica.
Sul morsetto positivo + del morsetto SOLAR PANEL è stato inserito un diodo.
CONTINUA........