Go Down

Topic: Misuratore di corrente AC con ATtiny84. (ora SO quanto mi costi!) (Read 39653 times) previous topic - next topic

Testato

bellissimo progetto,

mi aiutera' molto nel mio prossimo "aggeggio" mi e' arrivato anche a me un sensore hall, quelli della allegro da 20A

logicamente per essere aiutato mi servirebbe il codice   :)
se ti fa piacere condividerlo fai la felicita' di molti  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

pablos

Ma certo che è per hobby e soddisfazione, fino qui un po' ci arrivo :), era per aggiungere una soluzione alternativa per chi magari vuole un lavoro più semplice :). Complimenti!!
Ho sempre avuto il dubbio su quale sensore hall usare quando si va a misurare una corrente alternata, domanda che ho fatto più volte qui sul forum senza ottenere risposta. Questi sensori sono bidirezionali in CC in alternata ovviamente no, ma come si comporta l'uscita 0-5v se lo metto su 5A in cc e 5A ca, secondo te otteniamo lo stesso valore? L'affidabilità di misurare una corrente alternata è accettabile? Mi domando non bisognerebbe raddrizzare l'uscita prima di mandarla in Arduino? o se non altro usare mezzo ponte per avvicinarsi a un valore lineare.
Non ho ancora smanettato su questi sensori, quindi chiedo a chi ci ha messo mani.

ciao
no comment

Testato

Se non sbaglio ti ho gia' risposto una volta su questa cosa, ma puo' essere che era per un altro utente, visto che oggi sono in vena ririspondo  :smiley-yell:
0A non e' posizionato su 0V (altrimente non lavorerebbe nemmeno in corrente continua negativa)

0A e' posizionato al centro scala, dipende dal sensore.
Nel sensore usato in questo progetto lo zero centrale e' 2,5V

se poi tu gli applichi tensioni continuo o alternate il sensore non lo sa e non lo vuole sapere.
sarai tu lato sw a fare cioe' che si deve fare, come ad esempio calcolare il RMS della snusoide, mentre se lo usi in continua il dato lo prendi cosi' come e'
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

dalubar

Quote
Questi sensori sono bidirezionali in CC in alternata ovviamente no, ma come si comporta l'uscita 0-5v se lo metto su 5A in cc e 5A ca, secondo te otteniamo lo stesso valore?

Il sensore è "bidirezionale" nel senso che rileva la "direzione" della corrente in entrambi i versi. In CC, a 0A l'uscita è fissa 2.5V e varia linearmente secondo una certa proporzione indicata dal costruttore, per cui si ha un incrememento o decremento della tensione a seconda del "verso" della corrente.
In CA ovviamente la tensione d'uscita segue fedelmente l'andamento della corrente per cui ne segue che essa è alternata con lo "zero" sui 2.5V (la direzione qui è irrilevante). Si evince, quindi, che non si ottiene per niente lo stesso valore, ma tocca poi al programma nell'MCU fare i dovuti calcoli.

Quote
Mi domando non bisognerebbe raddrizzare l'uscita prima di mandarla in Arduino? o se non altro usare mezzo ponte

Non è necessario, per i motivi esposti prima sull'ingresso analogico si ha una tensione che oscilla sul valore 512. Personalmente per trovare il valore di picco Vmax ho eseguito un semplice campionamento estraendo il valore max.

dalubar

@Testato: eh eh mi hai anticipato.

Prima di pubblicare il software preferisco testarlo ancora un po' e vedere come si comporta... dato che questo sensore può leggere correnti fino a 80A (oltre 10.000W) è naturale che, data la bassa risoluzione DAC, è pensato per segnalare consumi di una certa consistenza...in parole povere non pesate che sia possibile rilevare assorbimenti di poche decine di Watt, anzi, a dirla tutta per meno di un 100naio di Watt non si scomoda proprio (o almeno non dà risultati affidabili)

pablos

no comment

Testato


@Testato: eh eh mi hai anticipato.

L'importante e' aver detto le stesse cose  :)

Quote

Prima di pubblicare il software preferisco testarlo ancora un po'

Ok, grazie
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

dalubar

@Menniti: Ok, fammi sapere allora...aspetto tue news in proposito.

brunol949


se poi tu gli applichi tensioni continuo o alternate il sensore non lo sa e non lo vuole sapere.
sarai tu lato sw a fare cioe' che si deve fare,


ValA0 = analogRead(A0) ;
if (ValA0 < 512 ){ValA0 = 512 + (512 - ValA0); }

Cosi' riporti "sopra" la semionda negativa

Quote
come ad esempio calcolare il RMS della snusoide

Le letture diventano 100 anziche' 50
Inoltre io faccio la media di 5000 letture e vi posso assicurare che il dato risultante e' piu' che accettabile
Confrontato con la pinza amperometrica digitale ci si avvicina su qualche decimo di differenza
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

pablos

Un for di 50-100 campionamenti sulle porte analogiche (16 analog input) nel mio progetto è impensabile se tengo conto che ci sono troppi parametri da ricevere, da gestire e inviare in un solo loop, siamo sempre li la precisione implica una maggior frequenza di clock.
Voglio arduino due!!!  ]:D
no comment

dalubar

Come promesso, pubblico il software per il funzionamento della scheda.

Descrivere in dettaglio tutto il funzionamento credo sia inutile; come si vedrà, lo sketch è abbastanza (spero esaurientemente) commentato e quindi si "spiega" quasi da solo. L'applicazione ha diverse caratteristiche e lavora come una macchina a stati finiti.
Code: [Select]

/***************************************************************************************************
* MISURATORE DI CORRENTE  "Quanto mi costi?" (by Dalubar) - MAGGIO 2012
* =======================================================================
* Il software lavora come una macchina a stati finiti. Caratteristiche principali:
* - Preriscaldamento: all'avvio aspetta un tempo (TIME_PRERISC) per ottenere l'assestamento termico
* - Autocalibrazione OFFSET: prima di essere operativo "tara" l'uscita del sensore sullo "zero" logico (2.50V)
* - Calcolo potenza effettiva basato su valore RMS in regime sinusoidale
* - Preallarme: implementazione contro i picchi di consumo transitori e/o oscillazioni intorno alla soglia d'allarme (MINIMUM_TIME_PREALARM)
* - Allarme: mantenimento di un tempo minimo programmato (MINIMUM_TIME_ALARM) per evitare stati di indecisione


Ma dato che un'immagine vale più di 1k parole, mostro il più semplice dei diagrammi UML (state diagram) che dovrebbe dare un'idea quantomeno globale del funzionamento.

La parte relativa agli stati di preallarme e allarme è stata inserita dopo una sperimentazione pratica e serve ad evitare che picchi di assorbimento transitori o oscillazioni del consumo intorno al valore di soglia possano far scattare il relays di allarme (si pensi allo spunto iniziale di motori    presenti in elettrodomestici come aspirapolvere o lavatrici).

Ovviamente poi ognuno è libero di personalizzarsi il programma come vuole...io lo "regalo" alla comunità  :smiley-sweat:

Buon 1° maggio a tutti.

Testato

grazie del codice.

e' un progetto fatto benissimo, il tuo stile sia del progetto in se, che ad esempio della documentazione, e' ai piu' alti livelli.

Complimenti  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

dalubar

...ma grazie!!!  Troppo buono.   :smiley-yell:
Il software, ovviamente, è ancora "giovane" ed è lungi dall'essere esaustivo del problema, quindi può essere senz'altro migliorato...cosa che lascio ampiamente a quanti vogliano approfondire e perfezionare la questione "consumi". Direi, anzi, che tutti i suggerimenti sono ben accetti!

Per quel che mi riguarda, dato che lo scopo iniziale per il quale il progetto è nato è stato raggiunto (ha appagato il mio alto senso della pigrizia nel non dover andare nel gabbiotto dei contatori) posso dire che per me è sufficiente cosi com'è  ;)

dalubar

Qualche delucidazione che penso possa essere utile:

- Il pulsante presente nella scheda serve a "forzare" la calibrazione del sensore al fine di ottenere il riferimento esatto di 2,5V in assenza di carico. Questo significa che dovrebbe essere premuto, appunto, solo quando non c'è nessuna apparecchiatura collegata. Comunque posso dire che in questi giorni nei quali è stato acceso costantemente, il riferimento non è mai cambiato (oscilla talvolta leggermente tra 2.49 e 2.51 max).
La domanda che potrebbe porsi è: "perchè mettere il pulsante se il programma ha l'autocalibrazione?"
Semplice, perchè essa entra in funzione solo nei casi di "deriva" del valore verso il basso, cioè nei casi in cui il rifemento dovesse scendere sotto i 2,48V, e si può affermare di certo che se questo avviene NON c'è sicuramente nessun carico collegato quindi si può fare la calibrazione.
Se, invece, il valore dovesse subire una "deriva" verso l'alto (da 2,52 in poi) il software non attiva l'autocalibrazione dato che non può sapere se il valore dipende da una deriva naturale o perchè c'è un carico collegato.
Per questo motivo ho inserito il pulsante, in questo modo ogni tanto si può controllare (magari shuntando o staccando il carico) che il riferimento sia costante a 2.5V (è il valore Vo del display).
Ripeto nel mio prototipo il riferimento diventa praticamente costante dopo i primi minuti dall'accensione (motivo del preriscaldamento che può anche essere portato, appunto, a 120 o 180 secondi).

- Sulla "board". Le due piste che portano la corrente da misurare (quelle dal sensore alla morsettiera) devono essere ovviamente "rinforzate", dato che devono sopportare almeno 3000W. Io, le ho stagnate e poi ho inserito, per tutta la lunghezza della pista uno spezzone di rame spesso, ricoprendo il tutto di stagno.

Testato

Quando parli di "riscaldamento" lo intendi come sinonimo di "stabilizzazione" oppure lo intendi letteralmente ?
Non capisco cosa dovrebbe riscaldarsi ? Il sensore ? ha una curva di risposta che vria in base alla temperatura ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up