W ostatnim poście opisywałem proces integracji urządzeń smart home w Home Assistant. Zdecydowałem, że warto pociągnąć pokrewny temat, związany z dość specyficznym detalem, dotyczącym działania jednego z urządzeń systemu.
Jak zatem policzyć te kilowaty?
Mowa tutaj o module Energy Monitor, który zlicza rotacje tarczy mechanicznego licznika energii elektrycznej. Krótko mówiąc, jest to urządzenie, które zaprojektowałem, by móc śledzić zużycie energii elektrycznej w czasie rzeczywistym i tym samym dodać możliwości znane ze świata IoT, do produktu niemal starszego ode mnie.
Moduł sensora odbiciowego używanego w urządzeniu Energy Montior. |
Na początku szło zbyt łatwo...
Ucząc się nieprzerwanie nowych zagadnień z elektroniki, wpadłem na pomysł liczenia obrotów tarczy licznika elektrycznego. Idea była prosta - bierzemy gotowy czujnik odbiciowy, działający w podczerwieni, który da się ustawić na odpowiedni próg aktywacji i reagujemy na zmianę stanu wyjścia. Liczymy różnicę czasu, podstawiamy pod wzór i po robocie - mamy aktualne użycie w watach. Dodając do siebie zliczone obroty i wiedząc, że 375 obrotów to jedna kilowatogodzina - mamy kilowatogodziny. Dzięki podczerwieni powinno to działać także w nocy, nie oświetlając światłem widzialnym niepotrzebnie pomieszczenia. Proste prawda?
Blask słońca obnażył jednak ponurą prawdę...
Licznik powieszony jest w miejscu, które zwykle nie jest zbyt nasłonecznione - i w pierwszej iteracji projektu, gdy zamocowałem wszyskto na miejscu (a było to na jesieni, gdy praktycznie codziennie jest szaro). Całość działała, tak jak zakładałem. Potem, po zimie, przyszła wiosna i cały misterny plan w... psu na budę poszedł.
Okazało się, że często otworzenie drzwi w słoneczny dzień powoduje przeskoczenie progu aktywacji i wyłapywanie impulsu. To w zasadzie zrozumiałe, gdyż nasza gwiazda emituje również promieniowanie podczerwone. Zdarzało się też, zwykle podczas letniego wieczoru, iż słońce świeciło w taki sposób, że odczyty falowały w okół "granicy" i przeskakiwały raz powyżej, raz poniżej poziomu aktywacji, generując absurdalne wyniki.
A gdyby tak rzucić wszystko?
Pierwsza iteracja projektu działała bodaj przez kilkanaście miesięcy. Po powrocie z wakacji w 2020 r., naładowany pozytywną energią przygotowałem drugą wersję płytki, zaprojektowałem oprogramowanie, które udoskonalam do dziś (o czym w następnym akapicie), złożyłem zamówienie na PCB a po zlutowaniu wrzuciłem informację o projekcie na portal Hackaday. Temat podchwycił zespół redakcyjny magazynu Elektronika Praktyczna - i, gdy przeczytałem w magazynie o swoim projekcie, po raz kolejny złapałem bakcyla do dalszego jego rozwoju.
Zdjęcie notki w magazynie Elektronika Praktyczna. Wkradł się tam mały błąd, gdyż projekt używa ESP8266 a nie ESP32. |
O obrotach tarcz liczników mechanicznych...
Pomysł analizy trendu wartości (wykres stricte poglądowy). |
- Po uruchomieniu urządzenia zbieramy dobraną doświadczalnie ilość odczytów do bufora co dobraną doświadczalnie ilość milisekund. Wyszło, że optymalnym jest pamiętać 400 wartości odczytywanych co 50 milisekund.
- Po wypełnieniu tablicy początkowymi wartościami, cały czas co 50 ms odczytujemy kolejną wartość i zamieniamy z najstarszą próbką. Każdorazowo analizujemy "odchylenie" odczytu względem dominanty, dzieląc odczytaną wartość przez aktualnie wyliczoną dominantę.
- Jeśli obliczona wartość dla kilku próbek z rzędu daje wynik poniżej 1,1 - oznacza to, że "linia wykresu" ustabilizow. Między dwiema górkami, oznaczającymi czarny obszar na tarczy, odczytywana wartość zwykle względem dominanty ani nie spada ani nie rośnie znacząco. Wystarczy odczekać, aż kilka takich wartości wystąpi z rzędu.
- Gdy osiągnęliśmy stabilne odczyty, czekamy na "górkę" - czyli znaczne odchylenie, wzrost wyniku powyżej 1,75. W tym momencie "łapiemy" czarny obszar na tarczy. Różnica czasowa między aktualną a poprzednią "górką" pozwala nam obliczyć zużycie energii a także zarejestrować sam obrót tarczy. Przechodzimy do poprzedniego kroku, tym samym definiując ciągłą pracę urządzenia.
Kod wykonywany po wykryciu obrotu tarczy. |
Na koniec pozostaje cieszyć się odczytanymi wartościami w Home Assistant.
Chwilowe użycie energii. |
Zużycie energii w ujęciu dziennym oraz koszt, na podstawie poglądowej ceny za kWh. |
Super wpis. Warto było tutaj zajrzeć
OdpowiedzUsuńWarto wnikliwie przeczytać wpis
OdpowiedzUsuń