Go Down

Topic: openenergymonitor ottimizzato per l'italia (Read 5 times) previous topic - next topic

AlexP1

Buongiorno.
Da quando ho scoperto arduino vi ho tempestato di domande su decine di progetti diversi... Procedono tutti su binari paralleli, magari lentamente, per motivi lavorativi però piano piano riuscirò... YES I CAN! XD

La mia domanda. Qualcuno ha mai ottimizzato il progetto openenergymonitor.org(tra l'altro gettonatissimo) per quello che potrebbero essere i comuni impianti domestici italiani da 3KWh?
Io leggo molto, partendo dal progetto enerduino, passando per ArdEmon, sono finito per fissarmi su openenergymonitor. Purtroppo molte delle nozioni lette non mi appartengono, soprattutto potenze, sfasamenti, coefficenti... :smiley-eek:

Io pensavo di poter costruire un energymonitor, che desse in uscita i soli valori che poi trovo in bolletta per intenderci, semplice come enerduino ma più preciso e che possa dare il consumo reale di corrente e non quello conteggiato dal contatore.
Magari si potrebbe anche fare un parallelo, tra enerduino e openenergymonitor per rendersi conto delle differenze.
Il primo problema è stato il collegamento del sensore CT, ho trovato due collegamenti, quello "originale" del sito openenergymonitor.org(che credo usi un partitore per rialzare la parte negativa), e un altro metodo letto qui sul forum che usa un amplificatore operazionale.

Qual'è il sistema migliore?

Questo codice potrebbe andare bene con entrambi i metodi(operazionale o partitore)?

Code: [Select]
//Measuring AC mains energy use the non-invasive current transformer method
//Sketch calculates - Irms and Apparent power. Vrms needs to be set below.
//OpenEnergyMonitor.org project licenced under GNU General Public Licence
//Author: Trystan Lea

   //For analog read
   double value;

   //Constants to convert ADC divisions into mains current values.
   double ADCvoltsperdiv = 0.0048;
   double VDoffset = 2.4476; //Initial value (corrected as program runs)

   //Equation of the line calibration values
   double factorA = 15.2; //factorA = CT reduction factor / rsens
   double Ioffset = -0.08;
     
   //Constants set voltage waveform amplitude.
   double SetV = 230.0;

   //Counter
   int i=0;

   int samplenumber = 4000;

   //Used for calculating real, apparent power, Irms and Vrms.
   double sumI=0.0;

   int sum1i=0;
   double sumVadc=0.0;

   double Vadc,Vsens,Isens,Imains,sqI,Irms;
   double apparentPower;
   
void setup()
{
  Serial.begin(115200);
}

void loop()
{
   value = analogRead(0);
   
   //Summing counter
   i++;

   //Voltage at ADC
   Vadc = value * ADCvoltsperdiv;

   //Remove voltage divider offset
   Vsens = Vadc-VDoffset;

   //Current transformer scale to find Imains
   Imains = Vsens;
                 
   //Calculates Voltage divider offset.
   sum1i++; sumVadc = sumVadc + Vadc;
   if (sum1i>=1000) {VDoffset = sumVadc/sum1i; sum1i = 0; sumVadc=0.0;}

   //Root-mean-square method current
   //1) square current values
   sqI = Imains*Imains;
   //2) sum
   sumI=sumI+sqI;

   if (i>=samplenumber)
   { 
      i=0;
      //Calculation of the root of the mean of the current squared (rms)
      Irms = factorA*sqrt(sumI/samplenumber)+Ioffset;

      //Calculation of the root of the mean of the voltage squared (rms)                     
      apparentPower = Irms * SetV;

      Serial.print(apparentPower);
      Serial.print("C");     
      Serial.print(SetV);
      Serial.print("D");
      Serial.print(Irms);
      Serial.print("E");

      //Reset values ready for next sample.
      sumI=0.0;

   }
}

Scusate se mi sono dilungato e grazie.
Alessandro.

CH1980

Il metodo da te postato non è per nulla preciso: il voltaggio della linea e settato nel software e non misurato, così come lo sfasamento. Questo introduce un errore di misura molto pesante specie in presenza di carichi fortemente induttivi (motori / compressori / lampade con reattori) e per misure di consumi relativamente piccoli...
Ho visto altri progetti che misurano anche la tensione (con un trasformatore) e calcolano lo sfasamento via software (anzichè settare un valore arbitrario) che comunque hanno bisogno di essere calibrati con un altro misuratore per essere abbastanza precisi.
Alla fine mi sono affidato a dei misuratori di kWh su barra DIN con uscita S0 (un uscita sulla quale leggi un impulso in tensione ogni 0,5Wh consumato che poi viene semplicemente conteggiato da arduino per darti il consumo istantaneo e totale del periodo che imposti). Purtroppo il mio progetto è un pelo più complesso ed ho dei problemi col software e col tempo a disposizione, perciò è in standby, altrimenti ti avrei passato il tutto gla pronto... Se vuoi dare un'occhiata:
http://arduino.cc/forum/index.php/topic,61547.msg444816.html#msg444816
Altrimenti puoi conteggiare con un fototransistor direttamente gli impulsi del tuo contatore (solitamente un impulso = 1Wh) e procedere in modo analogo a conteggiare e mediare nel tempo con arduino.
Sul forum trovi dei progetti con la funzione cerca.
Ciao

mnicolato

Ciao Alessandro

Ho realizzato con Arduino una cosa simile, sfruttando il lampeggio del led sul contatore ENEL, in cui ogni  1000 flash equivalgono a 1 KW consumato.

http://arduino.cc/forum/index.php/topic,69907.msg519370.html#msg519370


Ciao
Marco Nicolato

Testato

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

AlexP1

#4
Sep 11, 2011, 09:13 am Last Edit: Sep 11, 2011, 09:48 am by AlexP1 Reason: 1
Quando tutto sembrava perso, alla fine del tunnel si udì una voce... XD

Grazie per le risposte, ormai non ci speravo più.
La soluzione di lettura via "lampeggi" è stata quella che mi ha fatto venire l'idea, cercavo di migliorarla, se così si può dire, perchè i lampeggi restano comunque i WH che segna il contatore e non in realtà quelli consumati...Certo, non è che volevo smascherare truffe o robe del genere contro il gestore, però avere consapevolezza di quello che succede è sempre una buona cosa...
In più avrei qualche difficoltà con i cablaggi.

I due progetti nei link postati li avevo letti, molto interessanti e ben strutturati, molto belle anche le finiture del PowerDuino, sembra un prodotto commerciale(che sarebbe un complimento, attenzione... :) )

Valuterò il prodotto da quadro di cui mi hai parlato, per lo più che i miei arduini sono proprio messi lì dentro...
PS: questo modulo din, sarebbe come questo?
http://www.energiacentronord.com/public/documents/MIZManuale.pdf

Grazie. Best regards.
Alessandro.

Go Up