Electriciteitsmeter uitlezen

Deze keer wat meer over de details hoe ik zelf mijn energiemeter digitaal heb gemaakt. In ons huis zit nog een ouderwetse draaischijf- of ferraris-meter. Helaas geen modernere meter met een een knipperende led waardoor het wat moeilijker is om de meter digitaal uit te lezen. Hier beschrijf ik hoe dat toch kan met behulp van een zgn. ‘reflective optical sensor’ zoals de QRD1114 of de CNY70. Dit soort sensoren meet de reflectie van het onderliggende oppervlak doormiddel van het meten van lichtweerkaatsing van een infrarood ledlampje. Omdat draaischijven doorgaans zijn voorzien van een zwart of rood streepje kan de sensor deze detecteren door een wijziging in de reflectie. De sensor wordt daarvoor op het glas van de draaischijfmeter geplakt, precies tegenover de draaischijf zodat deze altijd in zicht is. Zie bijvoorbeeld in het plaatje hieronder. Daar zit een CNY70 in een behuizing die met een stukje zelfklevend plakband op het ruitje van een draaischijfmeter is geplakt.

Een leuk aspect van de draaischijfmeter is dat deze terug draait als er bijvoorbeeld zonnepanelen aan hangen en er stroom wordt geleverd aan het net. Dit is met een enkele reflective optical sensor niet detecteerbaar want die detecteert af en toe het streepje, maar ziet niet de draairichting van de schijf. Dit wordt opgelost door twee in plaats van een sensor te gebruiken. De volgorde waarin het streepje op de draaischijf wordt gedetecteerd bepaald nu de draairichting. Normaal (rechtsdraaiend) detecteert de linkersensor als eerste het streepje, en wordt stroom afgenomen. Als de rechtersensor als eerste het streepje detecteert draait de schijf naar links en wordt stroom teruggeleverd aan het electriciteitsnet.

Hieronder het schema dat ik heb gebruikt om de sensoren aan te sluiten. De beide CNY70 sensoren zijn ieder aangesloten aan een eigen poort van een JeeNode: een op de Arduino gebaseerde microcontroller. De weerstanden heb ik gekozen op basis van wat testen en varieren totdat er een mooi signaal uit leek te komen.

Na het in elkaar zetten heb ik eerst maar eens een grafiekje van het signaal gemaakt. Daarvoor heb ik een klein programmaatje gemaakt dat regelmatig (om de 250ms) de linker- en rechter-sensor uitleest. Na plotten in een grafiekje ziet het signaal er uit als is weergegeven in onderstaande figuur. De detectie van het lijntje is goed te zien, en ook dat de linker sensor eerst een piek geeft, en dan pas de rechter. Voor de rest varieert het signaal meer dan ik had verwacht, dat is minder. Hier gaat vast iets niet goed, maar wat? De output van beide sensoren is ook nog van een verschillend niveau. Dat komt waarschijnlijk door de plek waar ze op de meter zijn geplakt.

In de code die ik gebruik volg ik per sensor het minimum en maximum zodat ik dit niet hoef in te stellen. De piekdetectie vindt plaats op het moment dat het signaal binnen een kleine marge van het maximum komt. Daarbij heb ik een soort softwarematige Schmitt-Trigger toegevoegd om te voorkomen dat dezelfde piek meerdere keren wordt gedetecteerd: na iedere piek moet eerst een dal komen voordat een nieuwe piek wordt gedetecteerd. Afhankelijk van de volgorde pieken links/rechts wordt de rotatie bepaald, en dus het eventuele (-) teken voor het berekende wattage. Wattage wordt berekend door de afstand tussen twee opeenvolgende pieken te berekenen. In dit geval ruim 23 seconden wat overeenstemt met 250watt. Een voorbeeld van de door mij gebruikte code is hier beschikbaar.