Go Down

Topic: Lettura sballata sensore acs (Read 724 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.

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy