VoltReader-400 podaje 2 i 3/4 cyfry znaczącej napięcia, teoretycznie nie jest więc bardzo precyzyjny, ale w zdecydowanej większości przypadków zupełnie adekwatny. Mierzy napięcie stałe, jest w stanie również podać wartość skuteczną przebiegów zmiennych o częstotliwościach do 1kHz. Dostępne są zakresy 400mV, 4V, 40V oraz 400V, przełączane automatycznie lub ręcznie.
Opis układu mówiącego woltomierza
Schemat układu przedstawia rysunek 1. Jest na nim widoczny mikrokontroler (ATmega328P) oraz kilka bloków funkcyjnych:
- frontend, czyli układ wstępnie obrabiający mierzone napięcie przed podaniem go na wejście przetwornika analogowo-cyfrowego,
- blok zasilania, wyświetlacz, karta SD, z której odtwarzane są pliki dźwiękowe,
- wzmacniacz.
Omówmy je po kolei.
Frontend woltomierza - zabezpieczenie wejścia
Frontend (rysunek 2) to część układu, do której są podłączone sondy pomiarowe:
- jedna z nich do masy (oznaczona jako „LO”),
- natomiast druga („HI”) do wejścia nieodwracającego wzmacniacza operacyjnego U3 poprzez układ zabezpieczający oraz dzielnik napięcia.
Zabezpieczenie wejścia jest dwupoziomowe. Po pierwsze występują tutaj diody Zenera D1 i D2, które ograniczają napięcie wejściowe wzmacniacza do bezpiecznych dla niego wartości. Prąd płynący przed diody jest ograniczony przez połączone szeregowo rezystory R1, R2, R3 oraz R4 o sumarycznej wartości około 1MΩ. Rezystancja ta stanowi również górną połowę dzielnika i w zależności od wybranego zakresu może się na niej odłożyć prawie całe mierzone napięcie, czyli nawet 400V.
Napięcie znamionowe zastosowanych rezystorów SMD w rozmiarze 1206 typowo wynosi ponad 100V (w tych zastosowanych przeze mnie 150V), dlatego dla napięć do 400V ani im, ani reszcie miernika nie powinno zagrażać niebezpieczeństwo.
Ponieważ chciałem mieć również możliwość sprawdzania obecności napięcia w gniazdku, konieczne były dodatkowe środki bezpieczeństwa. Wiadomo bowiem, że w sieci energetycznej zdarzają się z różnych powodów przepięcia. W takich warunkach powinien zadziałać układ składający się z rezystora R35, bezpiecznika PTC F1 oraz warystora MOV1. Warystor dla napięć ponad 430V stanowi zwarcie, co spowoduje przepływ prądu ograniczonego głównie przez wartość R35 (1kΩ), a w konsekwencji zadziałanie bezpiecznika.
Woltomierz - dzielnik napięcia
Wracając do wspomnianego już dzielnika napięcia, jego dolna rezystancja jest przełączana przez multiplekser analogowy U4 (CD4052). Ponieważ na wejściu mogą występować zarówno napięcia dodatnie, jak i ujemne, pin 7 układu (VEE) został podłączony do napięcia –5V. Przełączana rezystancja dla zakresu 400V wynosi ok. 5,4kΩ (1:200), dla 40V jest to 57kΩ (1:20), a dla 4V i 400mV – 1MΩ (1:2). Każda z rezystancji składa się z szeregowo połączonych rezystora i trymera do regulacji. Rezystory R1–R7 powinny cechować się tolerancją 1%, inaczej bowiem w skrajnych przypadkach może nie być możliwe poprawne skalibrowanie miernika.
Wzmacniacz U3B ma wzmocnienie albo 1 (zakresy 400V, 40V i 4V) albo 10 (zakres 400mV). Jest ono modyfikowane przez podłączenie lub odłączenie rezystora R9 tym samym multiplekserem U4. Jak widać, zakresy 4V i 400mV nie mogą być kalibrowane niezależne. Dlatego dobrze jest użyć rezystorów R9 i R10 o możliwie dobrej tolerancji lub dobrać je ręcznie. Ja zastosowałem tutaj oporniki 0,1%.
Wzmacniacz U3A funkcjonuje jako filtr dolnoprzepustowy ograniczający składowe zmienne, z którymi przetwornik A/C i tak by sobie nie poradził. Jego wyjście jest podłączone do dzielnika R11/ R12, którego zadaniem jest dostosowanie poziomu napięcia ze wzmacniacza zasilanego symetrycznie do mikrokontrolera zasilanego napięciem pojedynczym. Drugi „koniec” dzielnika jest podłączony do napięcia odniesienia 2,5V, którego funkcję pełni układ U5 (LM4040B) o tolerancji 0,2%. Na wyjściu napięcie będzie podzielone przez 2 oraz przesunięte o 1,25V. Dla pełnego zakresu napięć wejściowych da to ostatecznie między 0,25V a 2,25V na wejściu przetwornika.
Obwody zasilania woltomierza
Obwody zasilania przedstawia rysunek 3. Ponieważ cały układ podczas pracy pobiera prąd ok. 50–60mA, zdecydowałem się na zasilanie z akumulatora litowo-jonowego. Jest on podłączony do głównej płytki PCB za pośrednictwem gotowego modułu B1, który zawiera wszystkie właściwe zabezpieczenia oraz pozwala na ładowanie przy użyciu ładowarki ze złączem microUSB.
Napięcie akumulatora jest podwyższane do 5V przez przetwornicę opartą na układzie U1 (MT3608), natomiast napięcie ujemne –5V jest wytwarzane przez przetwornicę U6 (ICL7660). Oba obwody odzwierciedlają noty aplikacyjne kostek. Od siebie dodałem tylko dodatkowe filtry L2/ C11 oraz L3/C12, poprzez które podłączone jest zasilanie frontendu. Do zasilania karty SD został wykorzystany stabilizator LDO MCP1703-3302 o napięciu wyjściowym 3.3V.
Włączanie i wyłączanie zasilania odbywa się przez wciśnięcie przycisku chwilowego SW3. Pomiędzy płytką B1 a wejściem przetwornicy znajduje się tranzystor Q3 (IRLML6402, MOSFET z kanałem typu P o małej rezystancji RDS(on)). Jego bramka jest normalnie podciągnięta do drenu, co powoduje, że całe urządzenie nie jest zasilane. Naciśnięcie przycisku SW3 powoduje ściągnięcie bramki do masy, otwarcie tranzystora i uruchomienie układu. Chwilę później mikrokontroler podaje napięcie wysokie na bazę tranzystora Q1 (BC817), przez co zasilanie zostaje zachowane po puszczeniu przycisku. Wyłączenie układu następuje przez podanie stanu niskiego na bazę Q1.
W trakcie działania miernika przycisk SW3 jest wykorzystywany również do innych celów, dlatego jest on podłączony do wejścia mikrokontrolera za pośrednictwem diody D4. Diody D4 i D5 są konieczne, aby opisane wejście i wyjście nie wpływały na siebie wzajemnie. Kondensator C30 wraz z rezystorem podciągającym wewnątrz ATmegi służy do debouncingu – odkłócania (mają go również pozostałe przyciski).
Schemat wyświetlacza woltomierza
Na rysunku 4 widzimy typowy wyświetlacz alfanumeryczny ze sterownikiem HD44780 podłączony do mikrokontrolera za pośrednictwem rejestru U2 (74HC595). Poza 6 liniami sterującymi rejestr obsługuje również podświetlanie poprzez tranzystor Q2 (BC817).
Karta microSD jest na stałe umieszczona w gnieździe i podłączona za pośrednictwem prostego translatora poziomów logicznych, złożonego z trzech dzielników napięcia, co pokazuje rysunek 5. Od strony mikrokontrolera jest obsługiwana przez sprzętowy interfejs SPI.
Schemat wzmacniacza audio woltomierza
Ostatecznie wzmacniacz audio (rysunek 6) składa się z 12-bitowego przetwornika cyfrowo-analogowego z interfejsem SPI U10 (MCP4921) oraz wzmacniacza klasy D U7 (PAM8403). Ponieważ miernik jest monofoniczny, wykorzystano tylko połowę układu U7. Przetwornik CA jest podłączony do sprzętowego interfejsu USART ATmegi, działającego w trybie SPI.
Jest to nieprzypadkowe, pozwala bowiem na pewną optymalizację programu. Pojedynczy rozkaz przetwornika składa się z 2 bajtów, a szczęśliwie wspomniany interfejs USART jest podwójnie buforowany. Oznacza to, że po wpisaniu pierwszego bajtu do rejestru UDR zostaje on natychmiastowo przepisany do bufora nadawczego i możliwy jest natychmiastowy ponowny zapis do UDR. Oznacza to redukcję przerwań generowanych na potrzeby odtwarzania dźwięku o połowę, co stanowi duży zysk i poważnie wpływa na rodzaj plików dźwiękowych, jakie miernik może odtwarzać.
Skoro już mowa o programie, to został on napisany w języku C++ z wykorzystaniem kompilatora avr-gcc i systemu budowania CMake. Za odczyt plików z karty SD odpowiada otwartoźródłowa biblioteka FatFs. Aby pomieścić się w 2kB pamięci, konieczne było użycie opcji FF_FS_TINY, która redukuje użycie RAMu kosztem gorszej wydajności przy korzystaniu z wielu plików (lub partycji) jednocześnie. Miernik zawsze otwiera tylko jeden plik (aktualnie odtwarzany), nie ma to więc większego znaczenia. Wyłączono również możliwość zapisu na kartę, obsługę systemów plików innych niż FAT16, a także długich nazw plików – opcje te nie są do niczego wykorzystywane.
Miernik odtwarza wyłącznie monofoniczne 16-bitowe pliki WAV. Układ testowałem z plikami o częstotliwości próbkowania 22050Hz (chociaż prawdopodobnie może być ona wyższa) – zastosowany malutki głośnik i tak nie pozwala usłyszeć różnicy. Na karcie SD znajdują się one w katalogu sounds i mają nazwy będące liczbami z zakresu 0–255, odpowiadające wartościom typu Voltmeter::Reader::File. Są to krótkie klipy zawierające pojedyncze słowa lub krótkie wyrażenia, głównie liczby.
Po pełną listę odsyłam do kodu źródłowego (plik reader.hpp). Dźwięki nagrałem, korzystając z syntezatora mowy online, a ponieważ jego ton skojarzył mi się z komputerem ze Star Treka, dodałem trochę efektów dźwiękowych z tego serialu.
Pomiar napięcia odbywa się bezustannie z częstotliwością 10kHz. Odczyt jest wyliczany co 3600 próbek, a zatem prawie 3 razy na sekundę. Jest to również wielokrotność okresu przebiegu sieciowego 50Hz, co pomaga przy pomiarze napięcia w gniazdku. Za każdym razem wyliczana jest zarówno składowa stała, jak i zmienna napięcia. Składowa stała to po prostu średnia wszystkich próbek. Jeśli chodzi o składową zmienną, to wyliczana jest wartość skuteczna ze wzoru:
Wartość skuteczna składowej stałej to wspomniana już średnia, natomiast wartość skuteczna sumy składowych jest wyznaczana bezpośrednio z próbek. Ponieważ urządzenie de facto nie ma funkcji sprzężenia AC, obie składowe są prezentowane użytkownikowi jednocześnie, bez konieczności przełączania trybów.
Jeśli chodzi o dokładność uzyskiwanych pomiarów, to należy tutaj wspomnieć o dwóch rodzajach błędów, które na tę dokładność będą wpływać: błąd względny, czyli zależący od mierzonej wartości, oraz błąd systematyczny. W tym przypadku błąd względny wynika z niewłaściwego tłumienia sygnału wejściowego oraz niedokładności napięcia odniesienia. Ten błąd podlega kalibracji za pomocą trymerów P1, P2 oraz P3. Ograniczeniem będzie tutaj głównie nieliniowość multiplekserów analogowych (ich rezystancja zmienia się w zależności od napięcia) oraz wpływ diod D1 i D2.
Błąd systematyczny, czyli stała różnica między wartością zmierzoną a rzeczywistą, pojawi się przede wszystkim w wyniku napięcia niezrównoważenia wzmacniacza operacyjnego U3. Dodatkowo prąd polaryzujący jego wejścia spowoduje powstanie napięcia na rezystancjach wejściowego dzielnika. Napięcie to będzie zależało od zakresu pomiarowego.
Wreszcie różnica pomiędzy wartościami oporników R11 i R12 również wprowadzi pewien stały błąd. Ten rodzaj błędu można ograniczyć poprzez odjęcie go od wartości zmierzonej. A zmierzyć go można, podając na wejście zerowe napięcie i sprawdzając otrzymany wynik dla każdego zakresu. Taki sposób kalibracji jest obsługiwany przez program miernika.
Ostatecznie pozostaje największe źródło błędu, na który niestety nie mamy większego wpływu, czyli przetwornik analogowo-cyfrowy. Ten w ATmedze jest 10-bitowy, czyli dzieli napięcie odniesienia na 1024 przedziały, ale w rzeczywistości wykorzystane jest 80% z tego zakresu, co daje ok. 819 przedziałów. Jeżeli mierzone napięcie wynosi od –4 do 4 woltów, daje to rozdzielczość ok. 10mV. Wydaje się więc, że jest to dokładnie tyle, ile potrzeba, aby wyświetlić 3 cyfry na ekranie, ale trzeba pamiętać, że sam przetwornik również nie jest idealny. Nota katalogowa podaje sumaryczny błąd na poziomie 2 LSB, przy czym zawiera on zarówno składniki względne, jak i systematyczne.
Podsumowując: cokolwiek byśmy robili, ostatniej cyfrze wyświetlanej na ekranie nie można w pełni ufać. W praktyce w moim prototypie objawia się to np. tym, że czasem gdy zamieni się miejscami sondy pomiarowe, otrzymany wynik różni się o 1–2 na ostatniej pozycji.
Montaż i uruchomienie woltomierza
Projekt płytki drukowanej przedstawiono na rysunkach 7 (góra) i 8 (dół), a wygląd mojego prototypu można zobaczyć na fotografiach zamieszczonych w artykule. Mozaikę ścieżek zaprojektowano tak, aby możliwe było wykonanie płytki z laminatu jednostronnego. Wytrawiona jest wtedy tylko warstwa górna, gdzie montowane są elementy SMD, natomiast połączenia w warstwie dolnej trzeba zrealizować, wykorzystując odcinki drutu.
Wszystkie elementy przewlekane znajdują się po stronie przeciwnej do elementów SMD. Jeśli jest możliwość wykonania płytki dwustronnej, ma to zdecydowaną zaletę lepszego ekranowania części analogowej. W wykonanym przeze mnie egzemplarzu dodałem dodatkowy ekran między głośnikiem a właśnie częścią analogową.
Przy programowaniu układu należy zawsze zasilać go z programatora. Jest to ważne, ponieważ mikrokontroler w stanie resetu (a zatem kiedy jest programowany) odłącza zasilanie z akumulatora (patrz opisany wcześniej układ z tranzystorem Q3).
Po wgraniu programu oraz umieszczeniu karty SD w gnieździe można uruchomić miernik, wciskając przycisk SW3 na co najmniej sekundę. W pierwszej kolejności trzeba wykonać kalibrację zera. W tym celu łączymy wejścia miernika możliwie krótkim przewodem i wciskamy jednocześnie przyciski SW1 i SW2. Kalibracja trwa kilkanaście sekund.
Następnie możemy przystąpić do kalibracji poszczególnych zakresów pomiarowych. Proponuję to zrobić, wykorzystując źródła napięcia stałego oraz dowolny inny woltomierz o większej dokładności (czyli praktycznie każdy). Zakresy 4V i 40V ustawiamy, dobierając źródła w okolicach ich górnej granicy i manipulując trymerami P1 i P2. Zakres 400mV jest kalibrowany wspólnie z 4V. Nieco kłopotliwe może być ustawienie zakresu 400V, ale jako że zwykle nie oczekujemy tam wielkiej dokładności, można i tutaj posłużyć się bezpiecznym napięciem ok. 40V.
W trakcie wykonywania tych czynności VoltReader powinien już do nas mówić. Jeśli tak jest, można zacząć go używać!
Oczywiście jeśli chcemy korzystać z niego do sprawdzania napięć niebezpiecznych, należy jeszcze umieścić go w obudowie i zaopatrzyć się w odpowiednie sondy. Obudowa nie może eksponować żadnych metalowych elementów konstrukcji, ponieważ może na nich występować wysokie napięcie. Ponadto należy pamiętać, aby nigdy nie ładować urządzenia w trakcie wykonywania takich pomiarów.
Mój egzemplarz umieściłem w specjalnie zaprojektowanej (w programie FreeCAD) obudowie, wydrukowanej na drukarce 3D, którą można oglądać na fotografiach.
Obsługa woltomierza VoltReader-400
Wygląd gotowego urządzenia przedstawia rysunek 9.
Przycisk (8) służy do włączania/wyłączania urządzenia oraz podświetlenia wyświetlacza. Aby włączyć lub wyłączyć miernik, należy go przycisnąć na ok. 1s. Kiedy VoltReader jest włączony, krótkie wciśnięcie włącza podświetlenie na 3s. Jeśli podświetlenie jest włączone, ponowne kliknięcie powoduje włączenie go na stałe. Jest to sygnalizowane pojawieniemsię symbolu P (7) na ekranie. Kolejne kliknięcie wyłącza podświetlenie.
Przycisk (9) to przełącznik zakresów. Krótkie wciśnięcie zmienia zakresy w sekwencji 400mV → 4V → 40V → 400V. Wciśnięcie długie (1s) włącza tryb automatyczny, a na ekranie pojawia się wtedy symbol A (6). Ręczne przełączanie zakresów jest również oznajmiane na głos.
Przycisk (10) pozwala wymusić odczytanie wyniku pomiaru w dowolnym momencie. Długie wciśnięcie zmienia poziom głośności w 4-stopniowej skali (jeśli liczyć również całkowite wyciszenie). Aktualnie ustawiona głośność jest reprezentowana na ekranie przez symbol głośnika (5).
W centralnej części u góry znajduje się odczyt składowej stałej (1), a bezpośrednio poniżej – wartości skutecznej składowej zmiennej (3). Po lewej widnieje zawsze jeszcze symbol (2), który zmienia się w zależności od wyniku pomiaru. Może to być znak: a) oznaczający napięcie stałe, b) oznaczający napięcie stałe ze składową zmienną (pulsujące) oraz c) czyli napięcie zmienne.
Pojawienie się symbolu wykrzyknika (4) oznacza brak opisanej wcześniej kalibracji zera. Na dole mamy jeszcze oczywiście gniazda sond pomiarowych, po prawej dodatniej (11), a po lewej ujemnej (12).
VoltReader odczytuje wynik pomiaru automatycznie, bez konieczności wciskania jakichkolwiek przycisków, jeśli utrzymuje się on na stałym poziomie przez ok. 1,5s (4 takie same odczyty, z dokładnością do +/–2 na ostatniej pozycji). Wartość napięcia stałego lub zmiennego może zostać pominięta, jeśli jest bliska zeru (znowu +/–2 na ostatniej pozycji). Aby skrócić czas czytania, przed napięciem stałym i zmiennym jest odtwarzany charakterystyczny dźwięk, który szybko powinien wpaść w ucho i pozwolić na rozróżnienie, o które napięcie chodzi.
Jeśli ktoś chciałby lepiej poznać sposób działania urządzenia, zapraszam jeszcze do obejrzenia krótkiego filmiku.