EnergiAlternativa

Page Index Toggle Pages: [1] 2  Send TopicPrint
Normal Topic Arduino & ACS712 (Read 21928 times)
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Arduino & ACS712
28.11.16 at 23:20:29
Print Post  
tempo fa avevo preso un Arduino che e rimasto nel cassetto per molto tempo xche non ne so niente
guardando qua e la, ho trovato una semplice guida per fare un amperometro da QUI
una cosa semplice senza display e altro, giusto per non lasciarlo nel cassetto......pero ho notato che non va molto bene, il valore a vuoto e di 0.03-0.06A e cambia di continuo
ce qualche trucco o ho sbagliato io?  Huh
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #1 - 29.11.16 at 09:08:21
Print Post  
Non hai sbagliato .
I sensori ACS712 (che adoro) hanno i loro limiti e bisogna conoscerli per farli lavorare correttamente.

Partiamo dallo zero.
Quando non scorre corrente nel sensore ,la tensione in uscita sarà uguale a metà dell'alimentazione.
Questo significa che se alimentato a 5V troverai sul Vout 2.5V .

Bé è giusto ,ma bisogna tenere in considerazione delle possibili differenze .
La soluzione più semplice è far misurare ad Arduino la tensione del sensore senza carico e sfruttare tale valore come zero del sensore .
Si chiama Offset  Wink .

Quindi misurando l'offset prima delle misurazione avrai l'indicazione a 0.

Per le oscillazioni invece dipendono da tanti fattori.

Esistono due metodi per ridurli e eliminarli ,uno hardware ed uno software.
L'hardware è un semplice filtro passa basso composto da una resistenza e un condensatore.
In molui casi risolve completamente le fastidiose oscillazioni .
Una R da 22K e un condensatore da 100nF dovrebbero essere sufficienti .

Il metodo software è far eseguire al Micro diverse letture e calcolarne la media.

Vabbe' questa è la teoria ...
Appena posso ti posto un codice di esempio

Un saluto
Elettro
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #2 - 29.11.16 at 09:33:58
Print Post  
grazie Elettro  Wink grosso modo ho capito, anche se non so dove mettere le mani
aspetto un codice di esempio e magari una piccola schema di come e dove viene messo il filtro passa basso
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #3 - 29.11.16 at 13:42:53
Print Post  
Di seguito lo schema del flitro passa basso hardware che serve ad eliminare le fastidiose oscillazioni.
Con questo filtro vengono eliminate tutte le variazioni con frequenza superiore a 70hz ,più che sufficienti per mantenere un'ottima risposta del sensore come monitor di correnti continue.
Calcola che di fabbrica con i filtri interni stiamo sui 7Khz ...che sono ottimi se dobbiamo usare il sensore come protezione Spike ,ma troppi per un semplice monitor.

Oltre a questo filtro il codice eseguirà diverse letture e ne farà la media ,in maniera tale che un eventuale picco venga addolcito sul display.

Attualmente mi trovo solo con il cellulare ,quindi tenterò di buttare due righe ...
  

2016-11-29_13_36_41.png ( 61 KB | Downloads )
2016-11-29_13_36_41.png

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #4 - 29.11.16 at 19:01:17
Print Post  
ho fatto il filtro usando una R da 20 invece che 22...altro non avevo, la cosa e molto migliorata, ora rimane fisso su 0.03A usando questo codice

Code
Select All
void setup() {
  Serial.begin(9600);
}

void loop() {
 float average = 0;
 for(int i = 0; i < 1000; i++) {
     average = average + (.0264 * analogRead(A0) -13.51);//for the 5A mode, 
//   average = average + (.049 * analogRead(A0) -25);// for 20A mode
// average = average + (.742 * analogRead(A0) -37.8);// for 30A mode
   delay(1);
 }
 Serial.print("Current :");
 Serial.print(average/1000);
 Serial.println("A");
}

 



confrontando i valori con un altro amperometro l'errore e minimo pero aumenta parecchio se aumenta la corrente
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #5 - 29.11.16 at 20:16:14
Print Post  
L'errore è nel modo di eliminare l'offset .
Prima di tutto hai usato la linea dedicata al tuo acs712 ?
5 ...20  ...o 30A  Wink

Puoi rimuovere quel fastidioso 0.03 aumentando il valore da -13.51 a 13.54
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #6 - 29.11.16 at 20:20:32
Print Post  
Il codice non è male e calcola l'integrale della corrente anche se non elabora l'offset ,ma lo puoi tarare variando i valori sottratti

Noterai sempre delle differenze con altri strumenti perché ci sono diversi metodi per misurarla, anche se dovrebbero essere molto simili.
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #7 - 29.11.16 at 23:35:45
Print Post  
caspita 0.00A  Cheesy

pero per avvicinarmi il più possibile a un valore di lettura giusto cosa bisogna fare?
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #8 - 30.11.16 at 06:45:52
Print Post  
bodo81 wrote on 29.11.16 at 23:35:45:
caspita 0.00A  Cheesy

pero per avvicinarmi il più possibile a un valore di lettura giusto cosa bisogna fare?

Correggere il fattore di conversione che nel tuo caso .0264
Nuovo fattore= vecchio fattore / valore letto Arduino * valore letto strumento

Esempio :
Poni un carico per avere il massimo assorbimento ad esempio 4 Ampere letti su un amperometro di riferimento
-Arduino invece leggerà ad esempio 3.6A

Nuovo fattore = 0.0264 / 3.6  * 4 = 0.0293

Correggi il valore e ricarichi il codice.
Successivamente noterai che avrai perso lo zero.
Per recuperarlo ti basterà leggere il valore senza carico e sottrarlo o sommarlo come hai fatto in precedenza.

Personalmente non mi piace molto come metodo di taratura ,ma per quel codice è così.

Appena posso ti posto il mio.
Implemnetiamo un pulsante che regola lo zero  Wink come i strumenti professionali
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #9 - 01.12.16 at 19:24:15
Print Post  
bel trucchetto  Wink funziona, ho giocato un po' e  si avvicina parecchio al valore reale
aspetto il tuo codice per approfondire e fare una cosa definitiva
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #10 - 01.12.16 at 19:50:24
Print Post  
Smiley  fantastico.
Effettivamente è laborioso con quel codice ,però regala esperienza.

Appena ho un secondo metto il codice  Wink
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #11 - 06.12.16 at 23:02:05
Print Post  
ma con Questo andrebbe meglio?
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #12 - 07.12.16 at 07:16:01
Print Post  
bodo81 wrote on 06.12.16 at 23:02:05:
ma con Questo andrebbe meglio?

Gran bel schema.
Hanno introdotto un filtro come il tuo per eliminare le oscillazioni e due trimmer per aumentare la sensibilità  (si riduce però  il fondo scala) e per l'offset ,consentendo di tarare lo zero senza il software .
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
bodo81
Junior Member
**
Offline


--------

Posts: 52
Location: roma
Gender: Male
Zodiac sign: Aries
Re: Arduino & ACS712
Reply #13 - 12.12.16 at 14:29:00
Print Post  
ElettroshockNow wrote on 01.12.16 at 19:50:24:
Appena ho un secondo metto il codice  Wink


Smiley
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re: Arduino & ACS712
Reply #14 - 12.12.16 at 14:34:04
Print Post  
Cheesy ....cavolo ... son proprio fuso  ...
Oggi pomeriggio rimedio  Wink
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
https://www.romeoegiuliettaeventi.com
Back to top
YouTube  
IP Logged
 
Page Index Toggle Pages: [1] 2 
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa