Afgelopen weken ben ik iedere vrijdag bezig geweest met een nieuw hardware project. Met het nieuwe project ben ik bezig een slimme stroometer te bouwen die via ethernet uitleesbaar is. Ideaal voor het datacenter (Interdc) om het stroomgebruik per rack bij te kunnen houden.
Ik was eerst begonnen met ampère meters die je op over de kabel heen klemt en op basis van magnetische inductie kunnen bepalen hoeveel ampère stroom erdoor heen ging. Deze ampère meters waren moeilijk verkrijgbaar dus keek ik naar een alternatieve oplossing. Op internet las ik hoe veel hobbyisten heel creatief een pulsenteller hadden gemaakt die werkt aan de hand van het lampje dat knippert op de stroommeter. Ik heb weliswaar geen hoofdmeter per rack zitten, maar ik had wel een kleine kWh teller al laten aansluiten. Bleek dat die meter zelfs een eigen uitgang had om de pulsen door te geven. Het was dus een kwestie van een kabeltje eraan hangen en de microcontroller laten tellen. Tenminste dat dacht ik.
De microcontroller was de grootste obstakel, de microcontroller loopt op 32mhz singlecore en moet 10 meters gelijktijdig in de gaten houden of er een signaal (pulse) binnenkomt. Een buzzywait constructie werkte niet, als op meter 1 en 10 tegelijk een pulse binnenkomt, was de pulse signaal al verdwenen voordat de while-loop bij poort 10 aankwam. Daarnaast moest dezelfde microcontroller ook nog een communicatie via ethernet opzetten.
Uiteindelijk heb ik het dan ook opgelost door op basis van interrupts te gaan werken. Het systeem wordt tijdelijk onderbroken zodra een status van een kWh meter wordt veranderd. Doet zijn tel actie en gaat vervolgens verder waar hij was gebleven. Het resultaat; precieze kWh stroommeting waarbij ik nauwkeurig terug kan rekenen naar Ampères.