Dobra wiadomość jest taka, że postawiony cel można zrealizować za pomocą Arduino. Wiele wskazówek można znaleźć na stronie: https://openenergymonitor.org/ Firma utrzymująca tę stronę prowadzi sklep internetowy oferujący kilka rodzajów monitorów energii do różnych zastosowań. Co ważne dla hobbysty, na tej stronie przedstawiono mnóstwo wartościowych informacji także o realizacji monitorów energii za pomocą Arduino.
Ale jest też zła wiadomość: prosta i tania realizacja miernika energii za pomocą Arduino z zasady nie może zapewnić dobrej dokładności i precyzji w zakresie małych prądów i mocy. Duża objętość przedstawionego na stronie materiału jest zaletą, ale konieczność rozumienia pewnych specjalistycznych pojęć i zagadnień dla polskiego czytelnika jest okolicznością niesprzyjającą, a automatyczny tłumacz Google w przypadku określeń technicznych niewiele pomaga, a często nawet przeszkadza.
Zasadniczo sprawa jest prosta, ponieważ na stronie: https://learn.openenergymonitor.org/electricity-monitoring/ct-sensors/interface-with-arduino
można znaleźć schemat podłączenia przekładnika prądowego do wejścia analogowego Arduino (rysunek A).
Na tej stronie w zakładce Learn można znaleźć szereg dalszych wartościowych informacji. Między innymi opisane są przekładniki prądowe, ich właściwości, zastosowanie i ograniczenia. Oprócz rozwiązań sprzętowych dostępne są też rozwiązania programowe, między innymi zobrazowanie mocy i zużycia energii na ekranie smartfona (fotografia B).
Jeżeli chodzi o Arduino, to na stronie podany jest też link do własnej biblioteki i przykładów (EmonLib):
https://github.com/openenergymonitor/EmonLib.
Wykorzystanie rysunku A oraz biblioteki EmonLib pozwala w zaskakująco prosty i zaskakująco tani sposób zrealizować jednofazowy „arduinowy” monitor energii. Niezbyt duża modyfikacja programu umożliwi wykonanie monitora trójfazowego. Informacje podane na stronie https://openenergymonitor.org/ są bezpośrednią odpowiedzią na prośbę Czytelnika i być może w pełni zaspokoją jego oczekiwania.
Wszystkie osoby zainteresowane pomiarem wartości skutecznej napięcia i prądu sieci energetycznej oraz sposobami pomiaru mocy pozornej i czynnej powinny uważnie przeanalizować pliki biblioteczne EmonLib.h i EmonLib. cpp, ponieważ skutecznie i w zaskakujący sposób rozwiązują kluczowe problemy, związane z pomiarem i przeliczaniem tych wielkości w sposób cyfrowy.
Idea jest zaskakująco prosta, ponieważ strona sprzętowa jest bardzo skromna, jak pokazuje rysunek A, a można mierzyć nie tylko prawdziwą wartość skuteczną (RMS) prądu (i napięcia), ale także moc czynną, pozorną i współczynnik mocy (kosinus fi). Niewielkie napięcie zmienne uzyskiwane z przekładnika, odpowiadające mierzonemu prądowi obciążenia, zazwyczaj o kształcie daleko odbiegającym od sinusoidy, jest podane na wejście analogowe Arduino, gdzie zostaje przetworzone na postać cyfrową.
Dla umożliwienia pomiaru napięcia przemiennego, na wejściu przetwornika ADC dodany jest dzielnik R1, R2, przesuwający „zera” do poziomu połowy napięcia zasilania. Uzyskiwane z 10-bitowego przetwornika liczby w zakresie 0...1023 są poddawane obróbce, która pozwala na obliczenie wartości skutecznej i mocy.
Aby obliczyć moc pozorną, czyli „całkowitą”, chwilowe wartości napięcia i prądu są mnożone, a uzyskane wartości chwilowe są uśredniane.
Aby obliczyć „rzeczywistą” moc czynną, najpierw obliczane są wartości skuteczne prądu (i napięcia). Zgodnie ze skrótem RMS i matematyczną definicją wartości skutecznej, kolejne próbki są podnoszone do kwadratu (S – square), uzyskane wartości uśredniane (M – mean), a z uśrednionego wyniku wyciągany jest pierwiastek kwadratowy (R – root). Pomnożenie wartości skutecznych prądu i napięcia daje moc czynną. Mając moc czynną i pozorną, można obliczyć współczynnik mocy.
Do obliczeń potrzebne są chwilowe wartości ujemne i dodatnie, a pochodzące z przetwornika ADC wartości są dodatnie i co ważne, „niedokładnie przesunięte” z uwagi na tolerancje rezystorów R1, R2. Dla odzyskania „poziomu zerowego” wykorzystywany jest prosty filtr cyfrowy. Można wykorzystać albo cyfrowy filtr górnoprzepustowy, który usunie składową stałą, albo uśredniający filtr dolnoprzepustowy, który odwrotnie: obliczy aktualną składową stałą, która będzie odejmowana od wartości kolejnych próbek. W sumie w pliku EmonLib.cpp wszystkie te procedury są zrealizowane zaskakująco prosto.
Koniecznie trzeba jednak mieć świadomość ograniczeń. Otóż w wersji prostszej monitor energii oblicza tylko wartość skuteczną prądu i mnoży ją przez nominalną wartość napięcia sieci (230V). W wersji bogatszej mierzone jest też napięcie sieci, a wtedy z uwagi na bezpieczeństwo i wymaganą izolację galwaniczną konieczne jest zastosowanie do tego jakiegoś małego klasycznego transformatorka, pełniącego funkcję przekładnika napięciowego.
Podstawowy problem wynika jednak z małej, bo tylko 10-bitowej rozdzielczości przetwornika ADC procesora ATmega328P i Arduino. Po przesunięciu o połowę napięcia zasilania daje to maksymalnie 511 poziomów na próbkowanie amplitudy mierzonego przebiegu. Na omawianej stronie proponuje się wykorzystanie wygodnego w obsłudze i instalacji przekładnika 100-amperowego.
Z jednej strony daje to bardzo szeroki zakres mierzonych prądów (w tym prądów przeciążeniowych) i mocy do 23kW, jednak przy małej rozdzielczości przetwornika ADC poważnie ogranicza pomiar małych prądów i mocy. Zarówno działanie cyfrowego filtru usuwającego składową stałą, jak i niedokładności przetwornika ADC powodują, że przy zerowym prądzie obliczone próbki mogą mieć nie wartość zero, tylko wartość 1, co da wskazanie około 30 watów. W wielu przypadkach może to być nieakceptowalne i wtedy należałoby zmodyfikować układ i zastosować zewnętrzny przetwornik ADC, co jednak nie jest zadaniem łatwym.