danye
| 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
| Inviato il: 12/03/2014 16:35:02
|
CITAZIONE (jackie2_it, 11/03/2014 22:00:02 )
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
| 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:
quindi consiglio per ora di allegare anche il codice zippato o in file testo.
Ciao grandi
ElettroshockNow | | | | jackie2_it
| 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]
| | | | | | | jackie2_it
| 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
| Inviato il: 12/03/2014 20:06:50
|
CITAZIONE (jackie2_it, 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?
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
| 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
| 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
| Inviato il: 12/03/2014 20:14:13
|
CITAZIONE (jackie2_it, 12/03/2014 20:10:55 )
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
| 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
| Inviato il: 12/03/2014 20:22:19
|
CITAZIONE (jackie2_it, 12/03/2014 20:14:13 )
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
| 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]
| |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|