Ny AMS strømmåler – følg med i sann tid

Du har kanskje fått deg ny strømmåler? Innen 1. januar 2019 skal alle norske husstander få nye målere i sikringsskapet. Det påstås at dette vil gi oss en mer presis strømregning basert på hva strømmen kostet akkurat da du brukte den (https://www.nymaler.no/).

Dette betyr med all sannsynlighet at strømmen blir dyrere. Til en slags trøst sies det at automatiske løsninger vil gjøre det mulig å spare penger uten at det går ut over sikkerhet eller komfort. Men jeg tror at jeg enten må pusse opp eller kjøpe nytt for å få tak i automatiseringen og de moderne hvitevarene som skal til. Så hva gjør jeg i mellomtiden?

Kjøpe mine egne data tilbake fra nettleverandøren

Et sted å starte er å kunne følge med på strømforbruket i sann tid. På «Min side» hos min nettleverandør blir forbruket tilgjengelig dagen etter. Det kan altså ikke brukes i øyeblikket for å forstå hva som skjer eller ta aksjon. Derimot kan jeg betale ekstra for en tjeneste fra nettleverandøren min, men er det riktig da? Det er jo mine data!!!

Hvordan følge med på strømforbruket i sann tid

Så da får jeg lage noe selv, da. Kretsen under viser hvordan jeg bruker en fototransistor (T1) til å registrere blinkene på måleren. En ekstra NPN transistor forsterker signalet før det sendes gjennom en lang kabel. I enden av kabelen sitter en Arduino-kompatibel mikrokontroller jeg hadde liggende. Dette er en Xboard Relay med ethernet og 2 reléer. Nettopp ethernettet er interessant, for da blir det enkelt å kringkaste avlesingen på nettet hjemme.

Klokkeavbrudd 41 ganger i sekundet

Av forskjellige grunner tok jeg i bruk klokkeavbrudd for å sample signalet fra sikringsskapet. Jeg har hovedsikringer på 63 A og en måler som blinker 1000 ganger pr. kWh. Det skulle tilsi at jeg maksimalt kan få ca 7 blink i sekundet. Miks så dette med Nyquists samplingsteorem og litt ekstra margin, og jeg endte opp med å sample på 41Hz. En oppskrift for å konfigurere klokkeavbrudd på Arduino fant jeg på instructables.com. Resultatet ser du nedenfor.

 
 cli(); //slå av avbrudd
 //setter timer1 til å generere avbrudd 41 ganger i sekundet
 // setter TCCR1A til 0 
 TCCR1A = 0; 
 // setter TCCR1B til 0
 TCCR1B = 0; 
 // nullstiller avbruddstelleren
 TCNT1 = 0; 
 // setter opp compare match registeret for 41hz
 // (16*10^6) / (41*1024) - 1 (må være <65536) 
 OCR1A = 380;
 // aktiverer CTC mode
 TCCR1B |= (1 << WGM12); 
 // Setter CS12 og CS10 for neddeling med 1024
 TCCR1B |= (1 << CS12) | (1 << CS10); 
 // aktiverer avbrudd på timer-compare
 TIMSK1 |= (1 << OCIE1A); 
 sei(); //slå på avbrudd
 

Denne koden skal være del av setup().

Lese av signalet fra sikringsskapet

For å få pålitelig avlesing av signalet fra sikringsskapet valgte jeg å simulere litt digital elektronikk i avbruddsrutinen. Dette består av to deler;

  1. stabilisering av signalet
  2. En vippe for å sikre tilstansoverganger
ISR(TIMER1_COMPA_vect){ //timer1 genererer avbrudd 41 ganger i sekundet (41Hz)
neste = digitalRead(fotoTransistorPinne); //leser inn ny tilstand
// når to verdier etter hverandre er like så er signalet stabilt
if ( neste == forje )
   { // to like verdier etter hverandre
   if ( neste == 1 )
      {
      nyTilstand = HIGH; // to høye
      }
   else // neste == 0
      {
      nyTilstand = LOW; // to lave
      }
   }
else // to forskjellige verdier etter hverandre
   {
   forje = neste; // lagrer verdi frem til neste avbrudd
   }

// bruker siste stabile signal for å lete etter endringer i signalet
if ( tilstand == LOW && nyTilstand == HIGH )
   { // AMS-dioden gikk på (lyser)
   digitalWrite( ledPinne, HIGH ); // kopierer til lokal lysdiode
   teller ++; // teller opp antall blink, dvs. en watt-time brukt
   }
else if ( tilstand == HIGH && nyTilstand == LOW )
   { // AMS-dioden gikk av (lyser ikke)
   digitalWrite( ledPinne, LOW ); // lokal lysdiode av
   }
else
   {
   digitalWrite( ledPinne, LOW ); // LED bare på i 1/41 sekund
   }
tilstand = nyTilstand; // tar vare på ny tilstand 
}

Kallene på digitalWrite er for å drive en lysdiode slik at den blinker i takt med måleren.

Implementasjon

Implementasjonen består av tre deler;

  1. Sensor i sikringsskapet som detekterer blink på AMS-måleren
  2. Mikrokontroller med webside
  3. Visning på nettlesere innenfor husets fire vegger

I sikringsskapet

Bildet til høyre viser hvordan det ser ut i sikringsskapet mitt. Jeg har laget en holder for fototransistoren ved hjelp av en kulepenn, lokket på en eske pepperkaker og litt Sugru. Resultatet kan lett løsnes hvis noen trenger å jobbe i skapet. Fra fototransistoren går det to ledninger til et lite kretskort med T2 og en kontakt der ledningen plugges inn. Fra tidligere arbeider var det et ledig trekkerør ned til kjelleren slik at jeg kom gjennom etasjeskillet.

Prosessering

Nede i kjelleren, ute av syne i det daglige har jeg plassert en apparatboks med mikrokontrolleren, R1 og C1 fra skjemaet øverst i artikkelen, og lysdioden (LED) som drives av digitalWrite().

Strøm og ethernett kommer fra husets trådløse ruter. Den har en USB-kontakt tiltenkt en disk og noen trådfaste kontakter. Ganske praktisk.

Bildet ser litt kaotisk ut med prototypekortet og litt for lange ledninger. Men det virker, så inntil videre …

Vising av resultat

Ethernettkontrolleren drives av kortets Arduino og vedlikeholder en triviell webside. Her kan interesserte som er innenfor rekkevidde av det trådløse nettet følge med på husets strømforbruk.

Med litt ekstra prosessering kan det løpende forbruket for eksempel presenteres minutt for minutt.

Da blir det litt mer realistisk å ta kontroll over strømforbruket enn om man bare er prisgitt nettleverandørens registreringer fra dagen før.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *