Arduino: lettura consumi elettrici

Tutto sull'Arduino e la sua grande famiglia... Atmel AVR, Microchip PIC, ecc...

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Arduino: lettura consumi elettrici

Messaggio da ragno »

Visto che siamo in diversi ad essere arduinizzati: un classico per arduino.

Ci sono molte realizzazioni in rete, per chi fosse interessato posto un po' di link, graditi scambi di idee e dritte.

N.B. non vorrei effettuare la lettura diretta sul contatore tramite fototransistor, ma utilizzare un misuratore di consumo con interfaccia SO. Con il misuratore un impulso equivale a 0,5W/h, mentre col contatore enel un lampeggio equivale a 1W/h.

Pensavo di utilizzare gli interrupt per gestire la lettura senza interferire sul main loop(), visto che vorrei uilizzare l'arduino anche per gestire una flotta di ds1820 (sensori di temperatura 1-wire) e una gestione in polling potrebbe far saltare qualche impulso: un consumo di 3kWh, corrisponde a 3000 o 6000 impulsi ogni ora (quindi anche un paio di impulsi ogni secondo).
Tutto ovviamente solo a livello di "desiderio"....
Le soluzioni data logger, IMHO, appesantiscono ancora di piu' il lavoro che deve effettuare l'atmega e preferirei un lettura dei dati a comando tramite seriale per poi collezionare il tutto con rrdtool (magari da una dockstar).

Interfacciare modulo SO con arduino:
http://it.emcelettronica.com/forum/help ... a-digitale

Progetti e sketch similari:
http://enerduino.blogspot.com/2009/12/e ... liano.html
http://www.viadellaluna2.it/cuoredilegno/?page_id=1661
http://arduino.cc/forum/index.php/topic,69907

Sistema di controllo completo per la casa e casalingo :)
http://pluggy.is-a-geek.com/arduino/index.html

Utilizzare gli interrupt:
http://www.arduino.cc/cgi-bin/yabb2/YaB ... 1288131711
http://www.arduino.cc/playground/Main/PcInt

ciao
Ultima modifica di ragno il 01 feb 2012, 13:40, modificato 2 volte in totale.
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: Arduino: lettura contatore enel

Messaggio da zulu »

Moooooolto interessante .... :-)
... soprattutto per chi come me (così come un altro del forum ;) ) ha installato i pannelli fotovoltaici.
Leggerò con la dovuta calma i link che hai inserito ...

Attualmente come hobby con Arduino sto realizzando un segnapunti per il basket utilizzando la libreria TVOut ...
A prezzi barboni, recuperando uno o più televisori dalla discarica potrò dotare la squadra di minibasket di un tabellone segnapunti di tutto rispetto ;-) ...

INTERRUPT:
.. proprio in questo progetto però ho imparato che gli interrupt sono amici di chi scrive le librerie, ma diventano "nemici" di chi deve usare insieme a quella libreria qualche cosa d'altro ...

.. nella documentazione TVOut c'è esplicitamente scritto che non non è compatibile con niente altro che usi interrupt ... il problema è che la funzione mills(), se si usa TvOut è del tutto inaffidabile e ho penato parecchio per trovare una libreria RTC che non usasse gli interrupt.

saluti
zulu
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino: lettura consumi elettrici

Messaggio da ragno »

@zulu: molte librerie che devono garantire funzionamenti realtime utilizzano gli interrupt, la tvout poi deve generare segnali video, figuriamoci...bella la tua idea, utile e molto green...

A proposito dei pannelli fotovoltaici, stavo parlando con Stefano di realizzare qualcosa home made, visto che qui a Roma, vendono i moduli fotovoltaici da assemblare in stringhe da 36, per fare un pannello. Costi -50/60% rispetto al pannello completo.

ps. aggiunto altro link.... :)
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: Arduino: lettura consumi elettrici

Messaggio da zulu »

@zulu: molte librerie che devono garantire funzionamenti realtime utilizzano gli interrupt, la tvout poi deve generare segnali video, figuriamoci...bella la tua idea, utile e molto green...
Certo ... la mia non voleva essere una critica alla libreria ... anzi ... tvOut è uno spettacolo: con due resistenze hai video e audio!

Era solo un contributo sui problemi derivanti dall'uso degli interrupt ... e del fatto che mettere insieme diversi progetti arduino che funzionano bene separatamente può creare problemi non di facile soluzione ...
.. ma probabillemte sta anche lì il bello :-)

saluti
zulu
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino: lettura consumi elettrici

Messaggio da ragno »

Dovrei avere trovato una soluzione abbastanza semplice utilizzando la funzione attachInterrupt, ed utilizzando il digital pin 2.
Appena posso posto uno sketch che dovrebbe simulare la pulsazione ed incrementare un contatore
Tuttavia la soluzione a basso livello m'interessa alquanto...

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino: lettura consumi elettrici

Messaggio da ragno »

Prendendo spunto qua e la dalla rete, ho realizzato uno sketch di prova che simula sullo stesso arduino un impulso (20 mS) e lo gestisce in lettura tramite un interrupt simulando la lettura da contatore elettrico...

Per testare tutto, sul pin 13 genero un'onda quadra (utilizzando la modalita' digitale bit banging) che dovrebbe simulare un impulso...

Poi, basta collegare il pin 13 (led interno dell'arduino) al pin 2 (quello d'ingresso per l'impulso) per vedere magicamente incrementata la lettura del contatore.

Codice: Seleziona tutto

volatile double contatore =0; // Totale degli impulsi: volatile perche deve essere forzata in memoria e non nei registri della cpu. 

// scatta solo quando su PD2 (INT0) sale il fronte dell'onda quadra
void customISR()
{
contatore++;
}

void setup()
{
  // bit banging sul pin 13 (led interno dell'arduino)
  pinMode(13, OUTPUT);

  //nuova impostazione interrupt per usare INT0 sul fronte di salita
  attachInterrupt(0, customISR, RISING); //aggancia INT0 alla ISR "customISR" )

  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);

}

void loop()
{
  digitalWrite(13, HIGH);
  delay (20); // l'impulso dura 20 mS 
  digitalWrite(13, LOW);
  delay (1000-20); //attende circa un secondo: simula lampeggio consumo 1 kW/h
 
    Serial.print("Impulsi: ");
    Serial.println(contatore);
}
saluti
ragno

p.s. in attesa dell'area rasberrypi, sarebbe gradita l'apertura di una sezione "arduino (atmega) fun club" :lol: :lol: :lol:
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Rispondi