Misuratore di corrente AC con ATtiny84. (ora SO quanto mi costi!)

Anche un interruttore differenziale messo in casa con corrente nominale leggermente più bassa di quella di intervento del contatore risolve il problema. :smiley:

@pablos: ovvio che si, ma vuoi mettere la soddisfazione di risolvere il problema da vero "smanettone"? ]:smiley: E poi leggendo direttamente il consumo si possono fare scoperte interessanti...ad esempio il mio phon "cinese" che riporta "1000W power" sulla confezione, in realtà ne consuma solo 500W :wink:

pablos:
Anche un interruttore differenziale messo in casa con corrente nominale leggermente più bassa di quella di intervento del contatore risolve il problema. :smiley:

e il divertimento ed il gusto di riusolversi i problemi con un po' di sana elettronica dove li metti?
Peraltro così puoi vedere i consumi effettivi, troppo bello!
Complimentoni Dalubar, davvero un gran bel lavoro; immagino che con qualche modifica software si possa adattare a "contatore", o sbaglio?

dalubar:
@leo: certo che si può :slight_smile: Pubblico sia lo schema che la consueta "board". Notare che il sensore LTSR25-NP ha una piedinatura alquanto singolare, ovvero la parte elettronica ha i pin con passo 1.905 piuttosto che i canonici 2.54, cosa che mi ha obbligato a creare una impronta ad hoc.

Grazie :wink:

Grazie dei complimenti Mike.
Certo, il vantaggio principale di impiegare una MCU nei circuiti sta proprio nel fatto che può essere (ri)programmata a piacimento, magari raffinando il software nel tempo sulla base dell'esperienza acquisita sul campo. Il codice, attualmente, occupa circa 6K, ne rimangono quasi altri 2K per nuovi calcoli e/o features.

dalubar:
Grazie dei complimenti Mike.
Certo, il vantaggio principale di impiegare una MCU nei circuiti sta proprio nel fatto che può essere (ri)programmata a piacimento, magari raffinando il software nel tempo sulla base dell'esperienza acquisita sul campo. Il codice, attualmente, occupa circa 6K, ne rimangono quasi altri 2K per nuovi calcoli e/o features.

Ottimo $) Ti spiego: amministro il mio Condominio, classica gabbia di matti; è nata una querelle riguardo l'attribuzione dei consumi di due diverse zone del cortile. poiché c'è un contatore unico e farne mettere un altro all'Enel significa dissasnguarci. Sono ragionevolmente convinto che nei pressi del contatore ci sia la linea specifica del cortile da "separare"; se così fosse mi basterebbe aggiungere il tuo progetto, modificato a fare il contatore, e risolverei il problema. A dire il vero mi risulta che vendano dei contatori già fatti, a prezzi abbordabili, ma non ho cercato. Appena possibile faccio il controllo con l'elettricista e ti faccio sapere se ne facciamo qualcosa. :slight_smile:

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 :slight_smile:
se ti fa piacere condividerlo fai la felicita' di molti :slight_smile:

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

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 :stuck_out_tongue_closed_eyes:
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'

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.

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.

@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)

Si era un altro utente :slight_smile: Grazie per la delucidazione

ciao

dalubar:
@Testato: eh eh mi hai anticipato.

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

Prima di pubblicare il software preferisco testarlo ancora un po'

Ok, grazie

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

Testato:
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

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

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!!! ]:smiley:

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.

/***************************************************************************************************
 * 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à :sweat_smile:

Buon 1° maggio a tutti.

LTSR1_84_AC_4_HW.ino (15.7 KB)

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 :slight_smile:

...ma grazie!!! Troppo buono. :stuck_out_tongue_closed_eyes:
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'è :wink:

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.