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........