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

Finalmente e' arrivato anche a me il misuratore di corrente.
Moduletto basato su ACS712T tarato per 30A. Come microcontroller uso un Atmega8 con clock di 8MHz.

Immagino che per la calibrazione devo agire su questa riga:
-current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F;

  1. Ma che fondoscala ha il misuratore che hai usato tu ? (mi serve per sapere come variare i valori)
  2. Avendo cambiato la frequenza del micro, devo agire nella parte che legge dall' ADC ?
  3. Leggendo lo sketch mi viene un dubbio... Se metto una lampada da 100W, verra' rilevato un consumo di 100W..... ma se poi con un dimmer regolo a meta' la potenza, non e' che con il tuo sistema mi verra' rilevato comunque un consumo di 100W ? (Imax dovrebbe restare invariato...)
  1. Me la spieghi sta cosa ? current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F

Finalmente e' arrivato anche a me il misuratore di corrente.

acik, sono contento per te, e devo dirti che posso distintamente avvertire anche una certa "impazienza" nel volerlo utilizzare :slight_smile:

Ma veniamo alle tue domande:

  1. Ma che fondoscala ha il misuratore che hai usato tu ? (mi serve per sapere come variare i valori)

Quello del sensore, ovviamente, con 80A si avrebbe in uscita la max escursione tensione compresa tra 0,5V e 4,5V.

  1. Avendo cambiato la frequenza del micro, devo agire nella parte che legge dall' ADC ?

Si, devi calcolare opportunamente la tempistica per un numero sufficiente di campionamenti.

  1. Leggendo lo sketch mi viene un dubbio... Se metto una lampada da 100W, verra' rilevato un consumo di 100W..... ma se poi con un dimmer regolo a meta' la potenza, non e' che con il tuo sistema mi verra' rilevato comunque un consumo di 100W ? (Imax dovrebbe restare invariato...)

In TEORIA si, in pratica 100W sono molto vicini al limite minimo di rilevamento per il mio misuratore; esso è dimensionato per stare a monte di una utenza elettrica per misurare e monitorare gli assorbimenti di una certa consistenza.

Immagino che per la calibrazione devo agire su questa riga:
-current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F;

No, quella è la formula per il calcolo della corrente efficace.

  1. Me la spieghi sta cosa ? current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F

Non è difficile, guardare il codice avrebbe aiutato non poco.
IP è una macro definita all'inizio dello sketch che ottiene il valore della corrente prendendo come input la tensione di uscita del sensore, ed è ricavata come formula inversa dalla relazione dichiarata dal costruttore (vedi datasheet).

#define IP(V_out)  ((V_out - LTSR_REFERENCE) * 25.0F) / 0.75F // conversione da Vout a corrente Ip; formula inversa. (vedi nota sulla costante 0.75F)
current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F;

int(...*10) / 10.0F è un semplice modo aritmetico per ottenere l'azzeramento della seconda cifra decimale del numero ottenuto, dato che in questo contesto non sarebbe significativa.

Quello del sensore, ovviamente, con 80A si avrebbe in uscita la max escursione tensione compresa tra 0,5V e 4,5V.

Ho deciso di farmi la taratura a mano, faro' scorrere 10A precisi nel sensore e poi mi faccio la lettura con l' Atmega. Cosi' compenso anche eventuali errori del'ADC e dell ACS.

  1. Me la spieghi sta cosa ? current = int((IP(LTSR_Vout) / SQRT2)*10) / 10.0F

Non è difficile, guardare il codice avrebbe aiutato non poco.

Io ho guardato il codice, ma pensavo che quell' IP fosse un qualcosa di esistente nell' IDE... Ho cercato e non ne ho trovato traccia. Stessa cosa per quel 10.0F

Grazie delle spiegazioni.

Di niente :wink:

Salve , sono un neofita e vorrei realizzare il misuratore in questione ......
Complimenti comunque per il progetto ....
Il mio problema e' come programmare l'ATTINY84 con l'IDE .... avete uno schema per il programmatore ????????, Ho L'arduino uno R3 ma credo che serve un adattatore usb-seriale a parte per la programmazione ..
Aspetto vostre info
grazie anticipate

Ti rimando a questa discussione:
http://arduino.cc/forum/index.php/topic,56772.0.html
nel 1° post trovi il link per scaricarti la mia guida per la programmazione dei chip Attiny. E' per l'IDE 0022 ma puoi adattarla abbastanza bene anche per l'IDE 1.0 (l'unica cosa che resta da provare è la libreria per la gestione dell'I2C).

Ciao, ispirato dal progetto ho acquistato un misuratore simile (nella fattispecie questo: http://it.rs-online.com/web/p/products/666-8198/ ) ma utilizzando il codice del progetto non riesco a far rilevare nulla al sensore. I collegamenti sembrano a posto ho provato a lasciare scollegato il pin Ref ma non rileva nulla, quindi guardando il datasheet ho provato a fargli arrivare come riferimeno 1.65 v mettendo un partitore di tensione tra i 3.3 v di arduino e il pin (Ho utilizzato due resistenze da 10K) ma nenanche così ho ottenuto il risultato sperato, paraticamente nessun carico viene rilevato (Solo attorno ai 2000W mi rileva un piccolo carico) e con il pin ref collegato adesso quando elimino il carico arduino si blocca... accidentaccio! Fin'ora non ho trovato soluzione qualcuno ha qualche idea?

Ciao

Aiuto !!!
Allora il problema e' la compilazione del programma ... .. utilizzo IDE 1.01 (ultima versione) ... ho fatto tutto secondo la guida ma quando vado a selezionare il tipo di decice ATTINY ........ e lancio la compilazione mi va tutto in errore ... mentre lo stesso programma compilato con l'hardware ARDUINO UNO Tutto OK ... dove sbaglio ?????
aspetto info

@giangi:
Aiuto!!! Non ti capisco!!! :stuck_out_tongue:

Scherzi a parte, inizia col dire cos'hai scaricato, cos'hai fatto, che SO usi, qual è l'esatto errore che ti viene dato ecc

Ciao Leo
Allora il package e' quello della tua guida ed ho inserito i file nella cartella dei sorgenti ..... fin qui tutto ok
carico il programma dopo aver selezionato dal menu' tools il device attiny84 (p.e.) ... pigio io tasto verifica e inizia subito una sbarcata di errori ... inizialmente di variabili non definite e poi delle librerie che non conosce
....
sono stato chiaro ????????? spero ....

mi Dimenticavo ....... uso WINDOWS 7/ 64 bit

La mia guida è per la versione 0022 dell'IDE. Ho detto che può essere facilmente adattata ma non che gira così com'è il software allegato :stuck_out_tongue:
Quindi, se nella guida leggi che con l'IDE 0022 devi scaricare il core Tiny 0022 oppure usare quello contenuto nell'archivio allegato, significa che quello contenuto nell'archivio allegato è per l'IDE 0022. :wink:
Quindi devi andare sul sito del progetto del core Tiny e scaricarti quello per l'IDE 1.0:
http://code.google.com/p/arduino-tiny/

Poi ti ho chiesto:

leo72:
qual è l'esatto errore che ti viene dato ecc

Se per favore ne fai un copia-e-incolla e lo metti qui perché altrimenti non posso sapere che errore è (il computer ce l'hai tu davanti, non io :sweat_smile:)

Allora ho disinstallato l'IDE ... reinstallato e ho inserito l'ultima versione del core dell'attiny per l'IDE 1.01
ora i tuoi programmi di test si compilano senza problemi mentre ho un errore per quanto riguarda il misuratore di corrente dell'amico
Dalubar ora ti posto l'errore

In file included from LTSR1_84_SCATTI_3.cpp:23:
C:\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal.h:82: error: conflicting return type specified for 'virtual size_t LiquidCrystal::write(uint8_t)'
C:\arduino-1.0.1\hardware\tiny\cores\tiny/Print.h:71: error: overriding 'virtual void Print::write(uint8_t)'

siamo quasi in direttiva di arrivo domani mi arriva il sensore e l'ATTINY84

fammi sapere

Perdonate la mia intrusione tra voi guru :fearful:
Premesso che l'idea di monitorare i consumi e soprattutto evitare di scendere continuamente nel locale contatori per riamare il contatore dell'enel è un mio cruccio da diversi mesi e, non avendo basi concrete di elettronica (mi limito solitamente a "copiare" i progetti e riprodurli su pcb) :P, tutto ciò premesso gentilmente qualche anima pia potrebbe gentilmente fare un elenco dei componenti necessari ed uno schema di montaggio lato componenti a prova di "deficiente " come me? :grin: :stuck_out_tongue_closed_eyes:
Grazie mille ]:smiley:

giangi2:
In file included from LTSR1_84_SCATTI_3.cpp:23:
C:\arduino-1.0.1\libraries\LiquidCrystal/LiquidCrystal.h:82: error: conflicting return type specified for 'virtual size_t LiquidCrystal::write(uint8_t)'
C:\arduino-1.0.1\hardware\tiny\cores\tiny/Print.h:71: error: overriding 'virtual void Print::write(uint8_t)'

Stai usando una libreria scritta per l'IDE 1.0.1 con uno sketch scritto per la 022/023?
Con la 1.0 e la 1.0.1 è cambiato il metodo write che adesso restituisce l'errore. Dovresti recuperarti la vecchia libreria o cambiare lo sketch aggiornandolo.

ziopippo:
Perdonate la mia intrusione tra voi guru :fearful:
Premesso che l'idea di monitorare i consumi e soprattutto evitare di scendere continuamente nel locale contatori per riamare il contatore dell'enel è un mio cruccio da diversi mesi e, non avendo basi concrete di elettronica (mi limito solitamente a "copiare" i progetti e riprodurli su pcb) :P, tutto ciò premesso gentilmente qualche anima pia potrebbe gentilmente fare un elenco dei componenti necessari ed uno schema di montaggio lato componenti a prova di "deficiente " come me? :grin: :stuck_out_tongue_closed_eyes:
Grazie mille ]:smiley:

Ciao. Il Topic lo hai letto tutto? sei sicuro che non ci siano le info che ti servono? Mi pareva che Dalubar (l'autore del Topic e del Progetto) avesse messo tutto a disposizione.

Gli errori vengono se scelgo come hardware la voce ATTiNY84 dal menu' strumenti , se invece seleziono ARDUINO UNO tutto ok senza problemi .... il software deve essere caricato su un ATTINY84

@giangi:
lo sketch è stato scritto da dalubar. Avendo l'estensione .ino penso che lo abbia salvato con la 1.0. Però compilando con la 1.0.1 anche a me da i tuoi errori mentre con la 0022 fila tutto liscio.

A me viene quindi da pensare che dalubar abbia modificato lo sketch con la 1.0.1 e salvata con questa versione. Però dobbiamo aspettare lui per i chiarimenti del caso :wink:

Dalabur ci sei ????????
MI aiutate a capire dove sta il problema ..... se non risolvo non posso caricare l'ATTINY84 e provare il misuratore .....
dove sbaglio ???????

Grazie a tutta la comunita'