Go Down

Topic: Lettura sballata sensore acs (Read 546 times) previous topic - next topic

Prius2008

Mar 07, 2014, 06:44 pm Last Edit: Mar 07, 2014, 09:51 pm by UweFederer Reason: 1
Ciao a tutti! Ho collegato Arduino UNO al mio impianto fotovoltaico ad isola. Per ora vorrei misurare i watt prodotti e i watt prelevati dalla batteria tramite un inverter. Ho messo un sensore acs758 da 200A bi-direzionale sul cavo che dai pannelli va verso la batteria, e un'altro sensore sul cavo che porta corrente all'inverter. Il sensore sulla produzione funziona bene, metre quello sull'inverter che dista circa 8 metri, mi segnala valori sballati. Va da un 450W a un meno 30w , 1900w....-340w..non so proprio da cosa possa dipendere. incollo li programma che ho creato, forse l'errore è lì.  Grazie della vostra collaborazione!
Code: [Select]
#include <LiquidCrystal.h>
LiquidCrystal schermo(12,11,5,4,3,2);
float corrente;
float voltaggio;
float consumo;

void setup ()
{
 schermo.begin(16,2);
 schermo.setCursor(0,0);
 schermo.print("Imp. STAND-ALONE");
 schermo.setCursor(3,1);
 schermo.print("BY  ANGELO");
 delay(2000);
 schermo.clear();


 
}

void loop()
{
 schermo.setCursor(0,0);
 schermo.print("A"); //Produzione Fotovoltaico
 schermo.setCursor(2,0);
 corrente=analogRead(A2);// Sensore Corrente Campo Fotovoltaico 200A fs.
 corrente=(((corrente-509)*0.004487)*100);
 schermo.print(corrente);
 schermo.setCursor(8,0);
 schermo.print("W");
 voltaggio=analogRead(A0);//Tensione  Banco Batterie
 voltaggio=(((5.0*voltaggio*10.0)/1023+2)*1000);
 schermo.setCursor(10,0);
 schermo.print((voltaggio*corrente)/1000);//ProduzioneCampo Fotovoltaico espresso in Watt

 //Seconda riga dello schermo. Assorbimento espresso in Watt dell'Inverter
 
 schermo.setCursor(0,1);
 schermo.print("A");
 schermo.setCursor(2,1);
 consumo=analogRead(A1);
 consumo=(((consumo-508)*0.004487)*100); //Leggi Sensore Corrente Inverter
 schermo.print(consumo);
 schermo.setCursor(8,1);
 schermo.print("W");
 voltaggio=analogRead(A0);//Tensione  Banco Batterie
 voltaggio=(((5.0*voltaggio*10.0)/1023+2)*1000);//Leggi Tensione Batterie
 schermo.setCursor(10,1);
 schermo.print((voltaggio*consumo)/1000);//ProduzioneCampo Fotovoltaico espresso in Watt
 delay(2000);//Attenti due secondi
}


Saluti!

uwefed

Forse perché la corrente che l' inverter prelieva dalla Batteria non é costante.
Che tensione misuri in continua e in alternata sul uscita del sensore di corrente tra battteria e inverter?

Ciao UWe

Prius2008

Ciao, allora ti posso dire che anche quado il consumo dell'inerter è costante ho degli sbalzi enormi. Per esempio ora sto prelevando dalle batterie 10A in continua (leggo questo valore da un'amperometro analogico), e in uscita dell'inverter ho 223Watt,metre arduino fluttua da 19A  3A 8A   21A 0,009A  4A  9A.......................ho misurato la tensione di ritorno del sensore ed è costante se non ricordo male 2,35v......quindi forse è il mio programma che non và.......

uwefed

leggi 2 volte
consumo=analogRead(A1);
e prendi solo il la seconda lettura.
Sei sicuro che il circuito sia giusto?
Ciao Uwe

Prius2008

Ciao! Grazie della risposta. Come faccio a prendere la seconda lettura? Devo togliere la seconda lettura della tensione?

uwefed

Fai
Code: [Select]

...
consumo=analogRead(A1);
consumo=analogRead(A1);
...

cosí legge 2 volte e la prima lettura viene sovrascritta dalla seconda.
Ciao Uwe

Prius2008

Ok! Grazie! Domani provo e vi tengo informati. Grazie e buonanotte!

Prius2008

Ciao ragazzi! Qualche giono fà ho scambiato i due sensori per vedere se era il sensore difettoso. Risultato? Uguale  =(
Allora mi è venuta l'idea di mettere un piccolo condensatore elettrolitico tra il segnale e il GND, per cortocircuitare eventuali segnali spuri. Visto che il sensore si trova a circa 8 metri dall'arduino, nel locale batterie. Risultato?  XD Funziona!!!!
Il condensatore è un 22microfarad 16v.
Ora devo collegare la scheda SD all'arduino per poter memorizzare i dati provenienti dai due sensori. Ho fatto il partitore di resistenze da mettere tra l'arduino e la scheda SD. Un dubbio, nello schema dice di collegare i pin 12,11,13,10. Il fatto è che i pin 12 e 11 li uso per il display! Come posso fare? Grazie a tutti e buona serata.

PaoloP

#8
Mar 21, 2014, 06:04 pm Last Edit: Mar 21, 2014, 06:06 pm by PaoloP Reason: 1
Sposta i pin del display su pin liberi e modifichi l'inizializzazione. Anche il 6 e 7 se liberi vanno bene.
Code: [Select]
LiquidCrystal schermo(....,....,5,4,3,2);
Controlla per la SD se ti serve il pin 10 o il 4. Nel caso del 4 dei eliminarlo dal display e spostarlo su un'altro pin.

Quelli della SD sono fissi perché dipendono da una periferica interna al micro, quelli del display li puoi cambiare a piacere.
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

icio


Prius2008

Grazie tante. In questi giorni faccio il cambio. Domani di dovrebbe arrivare un display 20x4 con solo 4 connessioni per il collegamento all'arduino. Se ho difficoltà chiederò senz'altro consigli! Grazie mille per ora! :D

Go Up