Budując „inteligentny dom” zawsze chciałem wiedzieć, jak wygląda pobór prądu. Jest to o tyle istotne, że cały dom – z ogrzewaniem łącznie – jest oparty o prąd. Dodatkowo postanowiłem zainstalować panele PV i chciałem wiedzieć, ile energii wprowadzam i pobieram z sieci. Jest to mój pierwszy tego rodzaju układ. Wiedziałem, że napięcie i prąd są często przesunięte w fazie, ale na forum elektrody dowiedziałem się też, że ich przebiegi są dalekie od matematycznego sinusa. Niezależnie od kształtu przebiegu napięcia i prądu moc określa się jednak wzorem P=U*I, przy czym wynik może być zarówno dodatni jak i ujemny. Aby określić wymianę energii (pobór lub oddawanie) wystarczy tylko zsumować dE=P*I*dt. Przy odpowiednio krótkim czasie dt (szybkim próbkowaniu) otrzymujemy całkiem dokładny wynik. Układ, który prezentuję, wymaga podłączenia do trójfazowej instalacji sieciowej, a przekładniki prądowe należy założyć na główne przewody doprowadzające energię. Pomimo prostoty stanowczo odradzam wykonanie tego układu przez osoby nieposiadające doświadczenia z pracą z napięciami 400V.
Schemat układu
Najbardziej rozbudowana jest sekcja zasilania – dostarcza ona prąd do ESP12, MCP3208 oraz napięć referencyjnych VREF i VREF2. VREF2 to połowa napięcia VREF i umożliwia przesunięcie przebiegów z dzielnika i przekładnika w zakres napięć dodatnich. Jak widać, układ nie ma separacji galwanicznej od sieci. Napięcie sieci jest mierzone przez dzielnik 660k (dwa rezystory 330k) i rezystor 3.9k. Prąd jest mierzony poprzez pomiar napięcia na rezystorze 33R zwierającego przekładnik prądowy. Wszystkie rezystory oznaczone na schemacie jako 1% to rezystory metalizowane. Rezystory z dzielnika powinny być o mocy 1W – nie chodzi o moc rozpraszaną, a o możliwość pracy przy większych napięciach. Zastosowane kondensatory elektrolityczne to kondensatory tantalowe. Dioda „D” to dowolna dioda prostownicza. Na schemacie jest AMS1117 – w rzeczywistości jest to mały chiński układ oparty o AMS1117 do montażu przewlekanego z dodatkową diodą LED. ESP12 ma dopisek „board”, gdyż jest on umieszczony na adapterze do montażu przewlekanego, na którym są dwa rezystory polaryzujące GPIO15 oraz CH_PD (tych rezystorów brak na schemacie). W necie znalazłem prosty rysunek tego adaptera:
Oprogramowanie ESP
Kod: C / C++
Cały program to niewiele ponad 100 linii kodu. Został napisany w Arduino. Chciałem zwrócić uwagę na zastosowaną bibliotekę WiFiManager. Działanie biblioteki polega na tym, że w przypadku pierwszego uruchomienia lub w przypadku braku sieci WiFi program przechodzi w tryb AP i uruchamia swój serwer WWW. Wystarczy połączyć się z tym AP (najlepiej z komórki) i uruchomić stronę konfiguracyjną z ESP (adres: 192.168.4.1). Na stronie wybieramy naszą sieć WiFi i podajemy hasło. Po tej konfiguracji następuje restart ESP, który już normalnie połączy się do naszej sieci. Fantastyczna rzecz, która wymaga dodania kilku linii w setup(). Biblioteka stworzona jest przez tzapu. Biblioteka do MCP320x została stworzona przez Patricka Rogalla.
W moich układach staram się wykorzystać wbudowane w ESP diody do sygnalizacji stanu. Jak widać, przy starcie następuje zapalenie diody na 1 s, co oznacza, że start przebiegł prawidłowo. Po połączeniu z siecią WiFi są dwa krótkie błyski – od tego momentu układ powinien pracować już prawidłowo. Błyskami sygnalizowane są także wysyłki informacji na serwer. Polecam to rozwiązanie, gdyż nic nie kosztuje (dioda i tak jest na ESP) a my mamy dobrą wizualną informację działania naszego programu.
W procedurze loop() jest właściwy pomiar i okresowa wysyłka danych.
Postanowiłem, że będę sumował wymianę energii w cyklach 5 s, po których nastąpi przesłanie średniej mocy w tym okresie na serwer. Można mierzyć w krótszych interwałach, ale uznałem, że 5 s jest optymalne ze względu na częstotliwość wysyłki danych. Dane te muszą być nie tylko wysłane ale i zapisane przez serwer. Jak widać, w pierwszym kroku następuje pomiar napięcia referencyjnego VREF2. Wartość ta będzie następnie odejmowana od zmierzonych napięć. Ponieważ jedną z mierzonych wartości jest napięcie sieci postanowiłem mierzyć także wartość napięcia skutecznego. Mierzę także maksymalną odchyłkę napięcia referencyjnego od teoretycznego VREF2 – ułatwia to analizę działania układu i było przydatne podczas uruchamiania. Na serwer wysyłana jest liczba pomiarów, odchyłka VREF2, czas pomiaru i oczywiście średnie moce w każdej fazie oraz średnie napięcia skuteczne. Przeciętna liczba pomiarów w okresie 5 s to 28500, co daje 114 pomiarów wszystkich wartości na jeden okres. Aby uzyskać taki wynik zmieniłem szybkość taktowania ESP z 80MHz na 160MHz. ESP nie oblicza bezpośrednio mocy w watach i napięcia w woltach. Robi to serwer, który oprogramowałem w PHP. Można to zrobić w dowolnym języku. Poniżej algorytm przeliczania:
Kod: PHP
Wszystkie wyniki są zapisywane po stronie serwera wraz z czasem. Ponieważ mierzona jest moc średnia, obliczanie wymiany energii (przyjęcia/oddania) następuje na podstawie tych czasów. Istnieje możliwość obliczania w taryfach - skrypt PHP może ustalić taryfę na podstawie czasu, dnia tygodnia i daty. Mam taryfę G12 i skrypt PHP osobno liczy energię dla taryfy dziennej i nocnej. Ze względu na pewność i szybkość działania serwer powinien pracować w sieci lokalnej.
Budowa układu
Układ zbudowałem na płytce uniwersalnej. Pomiędzy fazami L1, L2, L3 oraz N zostały usunięte złącza, aby zwiększyć odległości. Od spodu usunąłem także cześć punktów lutowniczych, co ilustruje poniższe zdjęcie:
Ponieważ chciałem zmieścić układ w skrzynce bezpiecznikowej, a na szynie DIN nie mam już miejsca, budowa układu rozpoczęła się od znalezienia właściwej obudowy. Wybór padł na Z51U, z której odciąłem „uszy” i dodatkowo wewnątrz usunąłem słupki montażowe. Wieczko wchodzi do wewnątrz i nawet nieprzykręcone dobrze siedzi – wystarczy je zabezpieczyć taśmą izolacyjną. Zdecydowałem się także na wprowadzanie przewodów bezpośrednio z zewnątrz, stąd złącza są przy samej krawędzi:
Dobór elementów podyktowany był dostępnością wersji przewlekanej – dotyczy to zwłaszcza MCP3208. Początkowo zamiast tego układu chciałem użyć ATMEGA8, ale jego przetwornik A/C jest stanowczo za wolny. Kluczowe elementy: MCP3208, MCP1541, przekładniki AZ-1000 nabyłem w TME. Reszta jest znacznie łatwiej dostępna. Sporo czasu spędziłem na szukaniu przekładników – musiały być minimum na 40A i być małe. Rozmiar ma znaczenie, gdyż przewody doprowadzające prąd są podłączone bezpośrednio do wyłącznika różnicowo-prądowego, co pozostawia mało miejsca pomiędzy tymi przewodami. Szukałem także w miarę możliwości przekładnika z wyprowadzonymi przewodami, a nie do druku. Przewody doprowadzające prąd mają 16 mm2 – a więc otwór w przekładniku musiał być odpowiednio duży. Wszystkie te warunki spełnił przekładnik AZ-1000. Warto wspomnieć, że istnieją także wersje o przełożeniu 750 i 500, a więc można wykonać urządzenie dla mniejszych mocy. Podczas podłączania układu należy zwrócić szczególną uwagę na miejsce podłączenia przewodu „N”. Ważna jest także identyczna kolejność przewodów doprowadzających napięcia i przekładników – inaczej nastąpi pomiar napięcia jednej fazy, a pomiar prądu z innej.
Uzyskane wyniki
Od początku pisałem o „mierniku”, a nie „liczniku”, gdyż zadaniem układu miało być uzyskanie bieżącej informacji o bilansie energetycznym. Dane są jednak przesyłane na serwer, a więc można wykonać obliczenia i porównać z odczytem z licznika. Dla licznika jednokierunkowego mój układ pokazywał mniejsze zużycie o ok. 3-4%. Jak dla mnie wynik był przyzwoity, tym bardziej, że błąd był systematyczny i po wprowadzeniu korekty w kodzie PHP można uzyskać wyniki zbieżne ze wskazaniem licznika. Należy jednak pamiętać, że jeżeli główny serwer nie pracuje np. z powodu awarii, to dane nie są przesyłane i są tracone.
Po montażu paneli PV otrzymałem licznik dwukierunkowy i jakie było moje zdziwienie, gdy wyniki znacznie się różniły. Co mnie zastanowiło - suma energii oddanej i pobranej się jednak zgadzała. Zagłębiłem się w temat (jest szeroko opisywany na „elektrodzie”) i odkryłem przyczynę – licznik powinien bilansować energię międzyfazowo (tak przynajmniej wynika z przepisów), a mój licznik tego nie robi! Jest to problem wielu osób i podobno ma być kiedyś uregulowany. Wyłączyłem zatem w moich obliczeniach bilansowanie i wyniki się znowu zgadzały z dokładnością jak poprzednio. Mogę dokonać dowolnych obliczeń (z bilansowaniem lub bez), gdyż zapisywane są moce w każdej fazie, a nie moc łączna.
Koszty
Podstawowe elementy (ceny orientacyjne):
• Przekładniki AZ-1000 (3 sztuki): 60zł
• MCP3208: 20zł
• MCP1541: 3zł
• IRM-02-5: 23zł
• ESP12 z adapterem 12zł
• Obudowa: 7zł
Co daje 125zł. Do ceny należy jednak doliczyć koszt płytki, rezystorów i kondensatorów. Nie jest to może szczególnie niska cena za cały układ, ale w przeciwieństwie do prostych podliczników, dane wysyłam bezpośrednio na serwer, mam wyniki z każdej fazy i układ mierzy przepływ energii w obu kierunkach (moc może być dodatnia i ujemna) i dodatkowo w wielu taryfach.
Licencja
Możesz wykorzystywać wszystkie informacje oraz kod programu w celach niekomercyjnych. Jeśli chcesz wykorzystać układ komercyjnie skontaktuj się ze mną na PW.
Fajne? Ranking DIY