Se sei già registrato           oppure    

Orario: 19/10/2019 09:41:49  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (5)   1   [2]   3   4   5    (Ultimo Msg)


Datalogger Arduino per regolatore EP Solar
FinePagina

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 11/03/2014 20:19:15

Stò già lavorando anche per far funzionare il tutto via rete in modo da poter controllare l'on/off e cambiare le impostazioni via rete.
Proprio adesso stò facendo dei test con un arduino uno appena è stabile il codice lo posto.



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 11/03/2014 20:47:52

Puoi postare il tuo sketch modificato così lo posso testare per verificarne il problema?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 11/03/2014 22:00:02

Scusami per stasera non ce la faccio a postare il codice. Domani in serata lo posto.
Grazie di tutto, buon test!



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 12/03/2014 16:35:02

CITAZIONE (jackie2_it, 11/03/2014 22:00:02 ) Discussione.php?211451&2#MSG16

Puoi postare il tuo sketch modificato così lo posso testare per verificarne il problema?


Questo è quello che ho provato, ma non funziona, in pratica ho sostituito Serial1 con mySerial e aggiunto in testa al codice

#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4); // RX, TX


Inoltre ho modificato questa riga altrimenti non sò perchè l'IDE di arduino da errore


mySerial.write(0x01); // Lunghezza dei dati sostituito da: mySerial.write(0x01)



#include 
SoftwareSerial mySerial(3, 4); // RX, TX


#define SER_SIZE 256 //dimensione massima del buffer 
static uint8_t bufferRegolatore[SER_SIZE + 1] = ""; //buffer che conterrà i byte letti dalla seriale. 
int serind; //indice per il buffer. 

//variabili d'appoggio per i valori letti dal regolatore. 
int tensioneBatteria = 0; 
int tensionePannello = 0; 
int correnteCarico = 0; 
int tensioneBatteriaScarica = 0; 
int tensioneBatteriaCarica = 0; 
int caricoOnOff = 0; 
int sovraccarico = 0; 
int cortoCircuitoCarico = 0; 
int soc = 0; 
int batteriaSovraccarica = 0; 
int indicatoreSottoScarica = 0; 
int indicatoreBatteriaCarica = 0; 
int indicatoreCarica = 0; 
int temperaturaBatteria = 0; 
int correnteCarica = 0; 

int contasecondi = 0; 

void setup() { 
// initialize serial communication at 9600 bits per second: 
Serial.begin(9600); 
mySerial.begin(9600); //comunica con il regolatore a 9600. 
} 

void parser() { 
//elabora il buffer ed estrae i valori. 
tensioneBatteria = (bufferRegolatore[10] << 8) | bufferRegolatore[9]; 
tensionePannello = (bufferRegolatore[12] << 8) | bufferRegolatore[11]; 
correnteCarico = (bufferRegolatore[16] << 8) | bufferRegolatore[15]; 
tensioneBatteriaScarica = (bufferRegolatore[18] << 8) | bufferRegolatore[17]; 
tensioneBatteriaCarica = (bufferRegolatore[20] << 8) | bufferRegolatore[19]; 
caricoOnOff = bufferRegolatore[21]; 
sovraccarico = bufferRegolatore[22]; 
cortoCircuitoCarico = bufferRegolatore[23]; 
soc = bufferRegolatore[24]; 
batteriaSovraccarica = bufferRegolatore[25]; 
indicatoreSottoScarica = bufferRegolatore[26]; 
indicatoreBatteriaCarica = bufferRegolatore[27]; 
indicatoreCarica = bufferRegolatore[28]; 
temperaturaBatteria = bufferRegolatore[29] - 30; // come indicato nella documentazione bisogna sottrarre 30 al valore rilevato. 
correnteCarica = (bufferRegolatore[31] << 8) | bufferRegolatore[30]; 

//invio sull'usb i dati rilevati in modo da poterli leggere dal pc. 
Serial.print("Tensione Batteria: "); 
Serial.println(tensioneBatteria); 

Serial.print("Tensione Pannello: "); 
Serial.println(tensionePannello); 

Serial.print("Corrente Carico: "); 
Serial.println(correnteCarico); 

Serial.print("Tensione Batteria Scarica: "); 
Serial.println(tensioneBatteriaScarica); 

Serial.print("Tensione Batteria Carica: "); 
Serial.println(tensioneBatteriaCarica); 

Serial.print("Carico Acceso/Spento: "); 
Serial.println(caricoOnOff); 

Serial.print("C'è stato un sovraccarico: "); 
Serial.println(sovraccarico); 

Serial.print("Cortocircuito del carico: "); 
Serial.println(cortoCircuitoCarico); 

Serial.print("SOC: "); 
Serial.println(soc); 

Serial.print("Batteria sovraccarica: "); 
Serial.println(batteriaSovraccarica); 

Serial.print("Batteria scarica: "); 
Serial.println(indicatoreSottoScarica); 

Serial.print("Batteria completamente carica: "); 
Serial.println(indicatoreBatteriaCarica); 

Serial.print("Batteria in carica: "); 
Serial.println(indicatoreCarica); 

Serial.print("Temperatura della batteria: "); 
Serial.println(temperaturaBatteria); 

Serial.print("Corrente di carica: "); 
Serial.println(correnteCarica); 
Serial.println("--------------------------------"); 
} 

void loop() { 

if (contasecondi == 0) { 
//inizio inviando il synchronous head (preso paro paro dalla documentazione) 
mySerial.write(0xEB); 
mySerial.write(0x90); 
mySerial.write(0xEB); 
mySerial.write(0x90); 
mySerial.write(0xEB); 
mySerial.write(0x90); 

mySerial.write(0x01); // versione indico 1 
mySerial.write(0xA0); // Richiedo al regolatore i dati in tempo reale. 
mySerial.write(0x01); // Lunghezza dei dati sostituito da: mySerial.write(0x01) altrimenti non compila
mySerial.write(0x6F); // Check sum 
mySerial.write(0x52); // Check sum 
mySerial.write(0x7F); 

contasecondi=30; 
serind=0; 
//Serial.println("Inviato comando"); 
} 

// leggo la risposta del regolatore. 
while (mySerial.available() > 0) { 
/*Serial.print("ricezione"); 
Serial.print(serind);*/ 
char *ptr; //puntatore al buffer in memoria. 
ptr = (char *) &bufferRegolatore; 
ptr = ptr + serind; 
if (mySerial.readBytes(ptr, 1) == 1) { 
serind++; 
} 
if ((serind == 36) && (bufferRegolatore[35] == 0x7F)) parser(); 
} 

delay(1000); 
contasecondi -=1; 

//Serial.println(contasecondi); 

}



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 12/03/2014 17:23:52

Stà venendo su un bel lavoro di collaborazione .
Volevo sottolineare che se postate i codici ,essi non vengono visualizzati correttamente.
In particolare l'include delle librerie e tutti i comandi html
es:
http://www.energialternativa.info/public/newforum/ForumEA/Visuali.jpg
quindi consiglio per ora di allegare anche il codice zippato o in file testo.

Ciao grandi
ElettroshockNow

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 19:36:31

Purtroppo la libreria SoftwareSerial ha dei problemi quando deve attendere dei dati con l'istruzione available. Se hai a disposizione uno ethernet shield posso provare a mettere su uno sketch che utilizzi la seriale di Arduino (non potrai più utilizzarla per vedere i dati sul PC) ma li potrai vedere su un browser web fammi sapere.

@elettro grazie per l'indicazione per il prossimo sketch seguo le indicazioni di allevarlo. Se vedi qualche strafalcione fammi sapere ok?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 12/03/2014 19:48:10

Ciao jackie2_it ho risolto nel mio caso con Arduino uno in questo modo:


  Serial.write(0xAA); 
  Serial.write(0x55); 
  Serial.write(0xAA); 
  Serial.write(0x55); 
  Serial.write(0xAA); 
  Serial.write(0x55);
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0x16); // versione indico 1 
  Serial.write(0xA0); // Richiedo al regolatore i dati in tempo reale. 
  Serial.write(0x00); // Lunghezza dei dati 
  Serial.write(0xB1); // Check sum 
  Serial.write(0xA7); // Check sum 
  Serial.write(0x7F);
 delay(500); 
  if (Serial.available() > 40) {
    digitalWrite(5, HIGH);// accende il led se ricevo i dati dal regolatore
    data_long = Serial.available();
    for (int n=0; n < data_long; n++){       
      data[n] = Serial.read();
    } 
  }

  tensione_pannello = (data[12]<<8)|data[11];
  corrente_pannello = 0;
  tensione_batteria = (data[10]<<8)|data[9];
  corrente_batteria = (data[31]<<8)|data[30];
  tensione_carico = tensione_batteria;
  corrente_carico = (data[16]<<8)|data[15];


Come puoi vedere dalla pagina webi valori sono aggiornati.
Ho aggiunto in testa anche la sequenza "AA55AA55AA55" come da documento ufficiale. Manca la lettura della corrente del pannello da implementare con un sensore esterno.
Prossimo step per quanto mi riguarda è il miglioramento della pagina web, per mettere poi a disposizione di tutti il codice.
Il tuo lavoro è stato preziosissimo!!!



Modificato da danye - 12/03/2014, 19:54:07


---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 19:58:40

Prova a fare questo test togli quella sequenza aggiuntiva in testa e lascia solo quella che avevo messo io cosi per capire che cosa cambia?

Ma per inviare i dati verso il sito usi un interfaccia di rete su arduino o usi il pc?



Modificato da jackie2_it - 12/03/2014, 20:07:03


---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 12/03/2014 20:06:50

CITAZIONE (jackie2_it, 12/03/2014 19:58:40 ) Discussione.php?211451&2#MSG22

Prova a fare questo test togli quella sequenza aggiuntiva in testa e lascia solo quella che avevo messo io cosi per capire che cosa cambia?

Fatto, nel mio caso il regolatore non risponde, me ne accorgo anche dal fatto che il led che ho collegato sul pin 5 non si accende



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 20:07:49

Mi sa che non risponde perché dipende dal fatto che hai quel available a 40?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 20:10:55

Ma che modello è il tuo epsolar?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 12/03/2014 20:14:13

CITAZIONE (jackie2_it, 12/03/2014 20:10:55 ) Discussione.php?211451&2#MSG25

Ma che modello è il tuo epsolar?

Si 3215



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 20:21:25

Uguale al mio. Non capisco come mi fa a funzionare.
In effetti dalla documentazione i byte sono 12 per il syncronous header provo a modificarlo anche io e riprovò.
Il passaggio successivo se hai la ethernet shield potrebbe essere quello di controllare le funzioni del sensore via rete e se non sai come fare posso mostrare come aggiungere la possibilità di misurare la corrente del pannello solare?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 12/03/2014 20:22:19

CITAZIONE (jackie2_it, 12/03/2014 20:14:13 ) Discussione.php?211451&2#MSG24

Mi sa che non risponde perché dipende dal fatto che hai quel available a 40?

Mmmmh in realtà mi aspettavo che il regolatore rispondesse con una lunghezza di byte 43, perchè li ho contati dal doc ufficiale, In realtà però mi risponde partendo dalla sequenza EB90EB90EB90 tralasciando AA55AA55AA55, quindi ho sbagliato in teoria il conteggio dei byte di risposta che dovrebbero essere 37... Ora la seriale riceve sicuramente + di 40 byte, mi sfugge qualcosa... ma senza un debug sulla seriale è complicato per me capire.



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 12/03/2014 20:27:04

Quel software che avevo messo nel link del cavo non invia i primi 6 byte che hai indicato e funziona lo stesso molto strano. Ma come fai a leggere i valori se la seriale è già occupata a comunicare con il regolatore?



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 
 InizioPagina
 

Pagine: (5)   1   [2]   3   4   5    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum