Arduino Energy Monitor
A fogyasztás (hatásos teljesítmény) méréséhez szükségem volt egy árammérő és egy feszültségmérő modulra. Közvetlenül a készülékházba beérkező hálózati áramot és feszültséget mérik, hasonlóan mintha egy külső fogyasztásmérőt alkalmaznánk. Kimenetükön a mérendő mennyiséggel arányos feszültség esik. A modulok, és az Arduino Nano is Ebay-ről, vagy Aliexpress-ről szerezhető be legolcsóbban.
Arduino Nano-hoz csatlakoztatott feszültségmérő modul
A modulok kimenete az Arduinohoz csatlakozik, ez dolgozza fel a beérkező jeleket, a mikrokontrollernek hála a mintavételezés elég sűrű. Mivel mindkét mennyiség mérése valós időben történik, meg lehet határozni a fáziseltolódást, vagyis az áram és a feszültség időbeni eltérését (ez a hatásos teljesítmény számításához szükséges). Ehhez szoftver oldalon az EmonLib-et alkalmaztam, ami felfogható az Open Energy Monitor kistestvéreként. Komplex műveleteket tud elvégezni, ha megfelelően kalibrált, pontos feszültség és áramerősség adatokat kap.
A szükséges programot gyorsan megírtam, a szenzorok kalibrálása már több időbe telt. Visszaellenőrzéshez egy hagyományos fogyasztásmérőt használtam. Mikor az értékek egyenlőek lettek alacsony- és magas teljesítmény tartományban is, Arduino serial monitorra továbbítottam a számított hatásos teljesítményt.
#include <EmonLib.h>
EnergyMonitor emon1; //Egy példány létrehozása
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
emon1.current(A0, 1); //Analog0 pin, árammérő modul (pin, kalibrálás)
emon1.voltage(A1, 171, 1.7); //Analog1 pin, feszültségmérő modul (pin, kalibrálás, kalibrálás)
}
void loop()
{
emon1.calcVI(50,2000); //Összes érték számolása (mintavétel száma, timeout)
float real_power = emon1.realPower;
Serial.println(real_power,3); //Hatásos teljesítmény kiírása serial monitorra
delay(500);
}
A programot már nem volt ilyen egyszerű flashelni az Arduinora, hiszen Ubuntu Serveren nem volt grafikus fejlesztőkörnyezetem. Erre az arduino-mk csomag kínált megoldást. A csomagot telepítve, SSH-n keresztül sikerült az elkészült sketchet, (és sok-sok módosítását) feltöltenem a Nanóra.
Serial monitor megtekintésére a picocom-ot vetettem be, ami soros kommunikációra az egyik legegyszerűbb alternatíva.
picocom -b 9600 -r -l /dev/ttyUSB0
Persze a serial port manuális inicializálása után ki is lehet cat-olni fájlba az adatokat:
stty -F /dev/ttyUSB0 cs8 9600 igncr -hupcl
cat /dev/ttyUSB0 > arduino_serial_monitor.csv
Tehát született egy kis rendszer, ami folyamatosan vizsgálja a szerver által felvett teljesítményt, és az eredményről soros kommunikációval tájékoztat. Ez az adat bármikor olvasható.
A cikk még nem ért véget, kérlek, lapozz!