Uit Hack42
Ga naar: navigatie, zoeken
(1e Projectbeschrijving meterkastlogging met Arduino en OpenWRT.)
 
Regel 6: Regel 6:
 
|Samenvatting=Electriciteitsverbruik volgens de 'slimme meter' opvangen en omzetten in grafieken
 
|Samenvatting=Electriciteitsverbruik volgens de 'slimme meter' opvangen en omzetten in grafieken
 
}}
 
}}
Ik ben vrij geïnteresseerd in het terugbrengen van mijn energieverbruik.  
+
Ik ben geïnteresseerd in het terugbrengen van mijn energieverbruik.  
 
+
 
Maar daarvoor wil je meten wat er verbruikt wordt.
 
Maar daarvoor wil je meten wat er verbruikt wordt.
 
Enige google-actie leert dat het mogelijk is om een grafiek te genereren die zó nauwkeurig is, dat je individuele apparaten aan- en uit kunt zien schakelen.
 
Enige google-actie leert dat het mogelijk is om een grafiek te genereren die zó nauwkeurig is, dat je individuele apparaten aan- en uit kunt zien schakelen.
Dit project gaat dus om het meten van het totale verbruik en wel zeer nauwkeurig.
+
Dit project gaat dus om het meten van het totale verbruik via de electriciteitsmeter en wel zeer nauwkeurig.
  
Ik gebruik daarvoor de digitale meter die in Arnhem als proef is geïnstalleerd toen je nog naar de gevangenis kon worden gestuurd als je het ding weigerde.
 
  
Hardware:
+
== Onderdelen ==
  
 +
=== Huis electriciteitsmeter ===
 +
Ik gebruik de digitale meter die in Arnhem als proef is geïnstalleerd toen je nog naar de gevangenis kon worden gestuurd als je het ding weigerde.
 
De meter heeft twee lampjes die een korte puls geven: 1000 impulsen per kilowattuur. Het ene lampje meet reactief vermogen, het andere het echte vermogen. Ik ben geinteresseerd in het echte vermogen. Ik wil dus lichtflitsjes tellen.
 
De meter heeft twee lampjes die een korte puls geven: 1000 impulsen per kilowattuur. Het ene lampje meet reactief vermogen, het andere het echte vermogen. Ik ben geinteresseerd in het echte vermogen. Ik wil dus lichtflitsjes tellen.
  
Als pulsensensor kon ik een LDR gebruiken. Die kan echter traag zijn en ik wilde zeker zijn dat mijn sensor snel genoeg was. Ik heb deze fotodiode gebruikt:  
+
=== Sensor op de meter ===
 +
Ik wilde zeker weten dat de sensor snel genoeg was. Ik heb deze fotodiode gebruikt:  
 
http://dx.com/p/diy-photosensitive-diode-module-blue-black-200148
 
http://dx.com/p/diy-photosensitive-diode-module-blue-black-200148
 
Er is een digitale en een anloge uitgang. De digitale klapt om als de sensor een - met de blauwe potmeter - instelbare waarde overschrijdt.
 
Er is een digitale en een anloge uitgang. De digitale klapt om als de sensor een - met de blauwe potmeter - instelbare waarde overschrijdt.
Regel 24: Regel 25:
 
Het lichtje brandt zwak, maar deze sensor pikt het goed op. Donker geeft waarde 1023; en tijdens een puls gaat de waarde omlaag tot rond de 740. In fel licht daalt hij tot vlak boven de 20.
 
Het lichtje brandt zwak, maar deze sensor pikt het goed op. Donker geeft waarde 1023; en tijdens een puls gaat de waarde omlaag tot rond de 740. In fel licht daalt hij tot vlak boven de 20.
  
De Arduino
+
=== De Arduino ===
 
Ik gebruik een gekloonde Arduino Nano.
 
Ik gebruik een gekloonde Arduino Nano.
 
Dit is de kleinste Arduino die ook een USB poort aan boord heeft.
 
Dit is de kleinste Arduino die ook een USB poort aan boord heeft.
Regel 31: Regel 32:
 
Voor de compleetheid zit er wat fout-detectie in de pulsdetector: Korter dan 5ms, dan telt hij geen puls maar een storing ('fluke') en langer dan 20, dan telt hij geen puls maar 'teveel omgevingslicht'.
 
Voor de compleetheid zit er wat fout-detectie in de pulsdetector: Korter dan 5ms, dan telt hij geen puls maar een storing ('fluke') en langer dan 20, dan telt hij geen puls maar 'teveel omgevingslicht'.
  
Rapportage
+
=== Rapportage ===
 
De Arduino rekent het vermogen als volgt uit: 1000 pulsen per KWh, dat is 1 puls per 1Wh, is 1 puls per 3600 Joule. Elke puls is dus 3600 Joule verbruikt.  
 
De Arduino rekent het vermogen als volgt uit: 1000 pulsen per KWh, dat is 1 puls per 1Wh, is 1 puls per 3600 Joule. Elke puls is dus 3600 Joule verbruikt.  
 
Dus (aantal pulsen) x 3600 Joule / (tijdsinterval 5 minuten) = vermogen in Watt.
 
Dus (aantal pulsen) x 3600 Joule / (tijdsinterval 5 minuten) = vermogen in Watt.
Regel 37: Regel 38:
 
Dit doet hij één keer per 5 minuten.  
 
Dit doet hij één keer per 5 minuten.  
  
OpenWRT Router
+
=== OpenWRT Router ===
 
De Arduino kan aan een miniPC gekoppeld worden maar die kost me veel te veel stroom.
 
De Arduino kan aan een miniPC gekoppeld worden maar die kost me veel te veel stroom.
 
In de meterkast bevindt zich ook mijn router, die een USB poort heeft én OpenWRT draait.
 
In de meterkast bevindt zich ook mijn router, die een USB poort heeft én OpenWRT draait.
Regel 43: Regel 44:
 
De router draait OpenWRT 12.09.
 
De router draait OpenWRT 12.09.
  
Seriële verbinding
+
=== Seriële verbinding ===
 
De volgende pakketten zijn geinstalleerd om het mogelijk te maken:
 
De volgende pakketten zijn geinstalleerd om het mogelijk te maken:
 
kmod-usb-acm
 
kmod-usb-acm
Regel 52: Regel 53:
 
Als je de juiste module hebt geïnstalleerd, staat in de /dev een device dat /dev/ACM0 (Arduino Uno) of /dev/ttyUSB0 (Arduino Nano) heet. Als dit ontbreekt is de juiste kernelmodule nog niet geïnstalleerd.
 
Als je de juiste module hebt geïnstalleerd, staat in de /dev een device dat /dev/ACM0 (Arduino Uno) of /dev/ttyUSB0 (Arduino Nano) heet. Als dit ontbreekt is de juiste kernelmodule nog niet geïnstalleerd.
  
Grafieken:
+
=== Grafieken: ===
 
Hiervoor ga ik RRDTOOL gebruiken. Dit is in progress.
 
Hiervoor ga ik RRDTOOL gebruiken. Dit is in progress.
 
Een grafiek van 600 pixels met één meetpunt per pixel gaat 600x5 = 3000 minuten omvatten. Da's genoeg voor ruim twee dagen.
 
Een grafiek van 600 pixels met één meetpunt per pixel gaat 600x5 = 3000 minuten omvatten. Da's genoeg voor ruim twee dagen.

Versie van 19 nov 2013 om 11:29

Project: Electriciteitsmeter loggen
Schroefje24.png
Schroefje24.png
Schroefje24.png
Schroefje24.png
Snel en simpele meterkast logging Picture.jpg

Electriciteitsmeter loggen

Naam Electriciteitsmeter loggen
Door Erin
Status Uitvoer
Madskillz Arduino, Openwrt, grafieken genereren, rrdtool
Doel / Omschrijving
Electriciteitsverbruik volgens de 'slimme meter' opvangen en omzetten in grafieken
Alle Projecten - Project Toevoegen
File:Snel en simpele meterkast logging_Picture.jpg noez

Ik ben geïnteresseerd in het terugbrengen van mijn energieverbruik. Maar daarvoor wil je meten wat er verbruikt wordt. Enige google-actie leert dat het mogelijk is om een grafiek te genereren die zó nauwkeurig is, dat je individuele apparaten aan- en uit kunt zien schakelen. Dit project gaat dus om het meten van het totale verbruik via de electriciteitsmeter en wel zeer nauwkeurig.


Onderdelen

Huis electriciteitsmeter

Ik gebruik de digitale meter die in Arnhem als proef is geïnstalleerd toen je nog naar de gevangenis kon worden gestuurd als je het ding weigerde. De meter heeft twee lampjes die een korte puls geven: 1000 impulsen per kilowattuur. Het ene lampje meet reactief vermogen, het andere het echte vermogen. Ik ben geinteresseerd in het echte vermogen. Ik wil dus lichtflitsjes tellen.

Sensor op de meter

Ik wilde zeker weten dat de sensor snel genoeg was. Ik heb deze fotodiode gebruikt: http://dx.com/p/diy-photosensitive-diode-module-blue-black-200148 Er is een digitale en een anloge uitgang. De digitale klapt om als de sensor een - met de blauwe potmeter - instelbare waarde overschrijdt. Ik gebruik echter de analoge output, en ik detecteer de puls in de Arduino. Het lichtje brandt zwak, maar deze sensor pikt het goed op. Donker geeft waarde 1023; en tijdens een puls gaat de waarde omlaag tot rond de 740. In fel licht daalt hij tot vlak boven de 20.

De Arduino

Ik gebruik een gekloonde Arduino Nano. Dit is de kleinste Arduino die ook een USB poort aan boord heeft. Deze detecteert en telt de lichtflitsjes. Met wat proefcode bleken de flitsjes 9-12ms te duren; hij telt een puls als een flitsje tussen de 5 en 20ms duurt. Voor de compleetheid zit er wat fout-detectie in de pulsdetector: Korter dan 5ms, dan telt hij geen puls maar een storing ('fluke') en langer dan 20, dan telt hij geen puls maar 'teveel omgevingslicht'.

Rapportage

De Arduino rekent het vermogen als volgt uit: 1000 pulsen per KWh, dat is 1 puls per 1Wh, is 1 puls per 3600 Joule. Elke puls is dus 3600 Joule verbruikt. Dus (aantal pulsen) x 3600 Joule / (tijdsinterval 5 minuten) = vermogen in Watt. De Arduino rapporteert via de seriële poort wat het verbruikte vermogen is, een truc die ik van de Space heb afgekeken. Dit doet hij één keer per 5 minuten.

OpenWRT Router

De Arduino kan aan een miniPC gekoppeld worden maar die kost me veel te veel stroom. In de meterkast bevindt zich ook mijn router, die een USB poort heeft én OpenWRT draait. Die blijkt naar de Arduino te kunnen luisteren. De router draait OpenWRT 12.09.

Seriële verbinding

De volgende pakketten zijn geinstalleerd om het mogelijk te maken: kmod-usb-acm kmod-usb-ftdi kmod-usb-ohci

Ik kwam er achter dat een Arduino Uno de module kmod-usb-acm nodig heeft, maar de Arduino Nano een andere seriële chip heeft; die heeft kmod-usb-ftdi nodig. Als je de juiste module hebt geïnstalleerd, staat in de /dev een device dat /dev/ACM0 (Arduino Uno) of /dev/ttyUSB0 (Arduino Nano) heet. Als dit ontbreekt is de juiste kernelmodule nog niet geïnstalleerd.

Grafieken:

Hiervoor ga ik RRDTOOL gebruiken. Dit is in progress. Een grafiek van 600 pixels met één meetpunt per pixel gaat 600x5 = 3000 minuten omvatten. Da's genoeg voor ruim twee dagen.