Serwisy partnerskie:
Close icon
Serwisy partnerskie

Budowa sondy – woltomierza (opis, montaż, rozbudowa programu)

Article Image
Elmax
Multimetr jest podstawowym przyrządem pomiarowym elektronika. Niestety, jego gabaryty nie zawsze pozwalają ustawić go w dogodnym miejscu tak, aby nie trzeba było odrywać wzroku od sond miernika. Można kupić małe wskaźniki napięcia, ale najczęściej mają one małą rozdzielczość i sygnalizują obecność kilku napięć albo jak DT-9130 są stosunkowo duże i drogie (150–200zł).

Opisywana sonda jest stosunkowo małym wskaźnikiem napięcia z graficznym wyświetlaczem. Pozwala na pomiar napięć w czterech zakresach, które są automatycznie zmieniane. Tłumik wejściowy pozwala zwiększyć rezystancję wewnętrzną, niwelując wpływ miernika na badany obwód. Sonda zasilana jest z dwóch baterii AAA mieszczących się razem z urządzeniem w obudowie KM-80.

Mały pobór prądu przez mikrokontroler i nowoczesny wyświetlacz OLED oraz automatyczne przechodzenie w tryb uśpienia pozwalają na wydłużenie żywotności baterii. Często przydaje się funkcja pomiaru relatywnego, względnego, rzadko spotykana w tanich miernikach. Dodano też funkcję HOLD, która może się przydać, gdy mierzone napięcie nie jest stabilne.

Aby na granicy napięć automatyczna zmiana zakresu nie powodowała ciągłego przełączania zakresów pomiarowych, wprowadzono histerezę o wartości 10% mierzonego napięcia. Poza automatyczną zmianą zakresu możliwy jest ręczny wybór zakresu. Miernik wyposażony jest w bargraf, co jest opcją rzadko spotykaną w tanich przyrządach pomiarowych, tak samo jak interfejs USB.

Opis układu (sonda – woltomierz)

Schemat ideowy pokazany jest na rysunku 1. Układ zasilany jest z dwóch baterii AAA. Na płytce przewidziano wyłącznik zasilania S1, ale można zastąpić go zworą ze względu na to, że w stanie uśpienia pobór prądu nie przekracza 10uA. U4 wytwarza ujemne napięcie wymagane przez wzmacniacz operacyjny.

Mierzone napięcia podane na J1 może przejść przez tłumik zbudowany z rezystorów R1...R5. Wyboru pracy z tłumikiem lub bez dokonuje się przełącznikiem S2. Styki 4 i 6 przełącznika informują mikrokontroler o fakcie włączenia tłumika, dzięki czemu dobierana jest skala wartości wyświetlanych na wyświetlaczu. Dzielnik wejściowy miernika pracuje w trybie równoległym.

Załączanie poszczególnych zakresów pomiarowych realizuje multiplekser analogowy U1. Bufor na wzmacniaczu U2A zapewnia dużą rezystancję wejściową, małą wyjściową. Niska rezystancja wyjściowa jest wymagana przez dzielnik R10, R11, który przesuwa zakres pomiarowy z –Vcc/2...+Vcc/2 do 0...Vcc. Dzięki temu możliwy jest też pomiar napięć ujemnych. Przesunięte napięcie jest przekazywane na wejście ADC mikrokontrolera U2.

Rys.1 Schemat ideowy (sonda-woltomierz)

Ze względu na to, że w aktualnej wersji oprogramowania interfejs USB nie jest wykorzystany, nie trzeba montować kwarcu i kondensatorów C17, C18, ponieważ wykorzystano wewnętrzny generator RC. U5 jest źródłem napięcia odniesienia. Ma ono lepsze parametry niż to wbudowane w mikrokontroler. Można zauważyć, że U5 oraz wzmacniacz U2 i przetwornica U4 jest zasilana z portów mikrokontrolera. Rozwiązanie to jest konieczne, aby zapewnić mały pobór prądu przez urządzenie w stanie uśpienia.

Przyciski S3...S5 sterują pracą programu. S3 służy także do wybudzania mikrokontrolera ze stanu uśpienia. Wyniki pomiaru są wyświetlane na wyświetlaczu umieszczonym w złączu J4. Przewidziano miejsce na kolorowy wyświetlacz OLED (złącze J6), ale podwyższyłby on znacznie koszt urządzenia. Aktualna wersja oprogramowania nie obsługuje kolorowego wyświetlacza. Jeśli Czytelnicy będą zainteresowani programem obsługującym kolorowy wyświetlacz, proszę o e-maile. J2 służy do zaprogramowania mikrokontrolera. Punkty P2...P6 oraz złącze J5 służą diagnostyce przydatnej w czasie pisania czy modyfikacji programu.

Fot.1 Sonda-woltomierz (model)

Montaż i uruchomienie (sonda – woltomierz)

Układ można zmontować na płytce drukowanej, której projekt pokazany jest na rysunku 2. Standardowo montujemy układ, zaczynając od elementów najmniejszych, a kończąc na największych, rozpoczynając od warstwy bottom. Wyświetlacz montujemy na samym końcu. Należy wlutować go w pola lutownicze na płytce. W prototypie został zamontowany w gnieździe, aby ułatwić uruchamianie, ale taki montaż uniemożliwi zamknięcie obudowy. W pole lutownicze J1 należy wlutować grot sondy wykonany na przykład ze stępionej igły krawieckiej. W prototypie wlutowano gniazdo „bananowe” 2mm. Umożliwia to wymianę sond. Fotografia wstępna oraz fotografia 1 pokazują model.

Rys.2 Projekt płytki drukowanej (sonda-woltomierz)

Układ nie wymaga uruchomienia poza zaprogramowaniem procesora. Osoby niedoświadczone powinny poprosić kogoś o pomoc w jego zaprogramowaniu. Układ zmontowany prawidłowo ze sprawnych elementów powinien od razu pracować. Obsługa sondy jest bardzo prosta. Przycisk „Hold/Wake UP” wybudza mikrokontroler z uśpienia. W czasie pracy sonda pobiera prąd o wartości około 20mA – rysunek 3.

Rys.3 W czasie pracy sonda pobiera prąd o wartości około 20mA

Po podaniu napięcia na J1 rozpocznie się pomiar. W razie konieczności nastąpi zmiana zakresu pomiarowego. Na wyświetlaczu można odczytać (fotografia 2) zmierzone napięcie, jednostki, zakres pomiarowy i tryb pracy.

Fot.2 Na wyświetlaczu -  zmierzone napięcie, jednostki, zakres pomiarowy i tryb pracy

Po 10 minutach bezczynności mikrokontroler przejdzie w stan uśpienia, pobierając w tym czasie z baterii mniej niż 10uA – rysunek 4. Za stan bezczynności przyjęto zmiany napięcia mniejsze niż ±20%. Stan taki występuje, gdy grot sondy nie jest do niczego podłączony. Możliwe jest też wcześniejsze uśpienie mikrokontrolera przez przytrzymanie przycisku „Rel/Sleep” ponad jedną sekundę.

Rys.4 Mikrokontroler w stanie uśpienia pobiera z baterii mniej niż 10uA

Przycisk „Hold/Wake UP”, po wybudzeniu mikrokontrolera, pełni dwie funkcje. Krótki naciśnięcie do 0,5 sekundy włącza/wyłącza funkcję HOLD. Towarzyszy temu pojawienie się stosownego napisu – fotografia 3. Dłuższe przytrzymanie przycisku wyłącza automatyczną zmianę zakresu pomiarowego, co jest sygnalizowane napisem „MAN” na wyświetlaczu – fotografia 4.

Ponowne włączenie następuje po kolejnym krótkim naciśnięciu „Hold/Wake UP”. Gdy automatyczna zmiana zakresu jest wyłączona, przycisk „AC-DC/Range” zmieni a zakres pomiarowy. Miernik ma cztery zakresy: 0–1,1V, 1–11V, 10–110V, 100–1000V. Z włączonym tłumieniem zakresy są inne: 0–6,6V, 6–66V, 60–660V, 600–6600V. W praktyce górna granica napięcia jest ograniczona do 500V przy pracy bez tłumika i zależy od wytrzymałości napięciowej R6 oraz do 1000V przy włączonym tłumiku.

W tym przypadku ważna jest wytrzymałość napięciowa R1...R5 oraz budowa sondy (przebieg ścieżek, odstępy pomiędzy ścieżkami). Zakresy pomiarowe zachodzą na siebie. Spowodowane jest to histerezą przełączania wynoszącą 10% zakresu pomiarowego. Dzięki temu na granicy napięć nie następuje ciągłe przełączanie zakresów.

Przycisk „Rel/Sleep” uruchamia pomiar względny, co sygnalizuje napis „REL”. Towarzyszy temu przejście miernika w tryb ręcznej zmiany zakresu – fotografia 5. Kolejne naciśnięcie „Rel/Sleep” wyłączy tryb względny, a miernik przełączy się z powrotem w tryb automatyczny, jeśli był wcześniej włączony. Warto zaznaczyć, że w trybie manualnej zmiany zakresu jego zmiana przyciskiem „AC-DC/Range” wyłącza tryb względny.

Fot.5 Przejście miernika w tryb ręcznej zmiany zakresu

Przełącznikiem S2 można włączyć tłumik wejściowy zwiększający rezystancję miernika. Ze względu na to, że tryb automatycznej zmiany zakresu jest dostępny tylko dla pracy bez tłumika, włączenie go powoduje przejście w tryb manualny; wyłączenie włączy tryb automatyczny.

Ze względu na niskie napięcie zasilania, wzmacniacz operacyjny musi mieć wejścia i wyjścia rail-to-rail. Popularne wzmacniacze pracują poprawnie przy napięciach wejściowych Vcc –1,5...2V i Vee +1,5...2V. Wydaje się, że ze względu na to, iż przetwornik ADC mikrokontrolera mierzy napięcia do 1,1V, wystarczy, aby wzmacniacz na wyjściu przenosił poprawnie ±550mV, do czego wystarczy popularny TL062. Niestety, trzeba uwzględnić spadek napięcia na portach PC13...15 oraz na wyjściu przetwornicy U4. W takiej sytuacji pomiary są poprawne przy zasilaniu mikrokontrolera napięciem 2,7V–3,6V. Aby wykorzystać całą pojemność baterii i możliwości układów, konieczny jest wzmacniacz rail-to-rail.

Płytka sondy ma wymiary dostosowane do obudowy KM-80. Obudowę należy od środka (poza obszarem, gdzie znajdują się dzielniki napięcia) pokryć grafitem w sprayu lub wykleić samoprzylepną folią aluminiową, dbając o to, aby na słupkach mocujących PCB do obudowy znalazł się grafit czy folia, bo w tym obszarze na PCB znajdują się punkty masy. Brak połączenia ekranu z masą układu nie zapobiegnie przedostawaniu się zakłóceń z zewnątrz. Z sondy należy wyprowadzić przewód masy zakończony krokodylkiem. Do tego celu może posłużyć punkt P1. Płytkę w obszarze dzielników napięcia warto pokryć lakierem w sprayu, na przykład platikiem70.

Rezystory w obwodach dzielników napięcia najlepiej, aby miały tolerancję 0,1%, ostatecznie 1%. Użycie 5% rezystorów mija się z celem, bo sonda nie będzie już miernikiem, ale wskaźnikiem napięcia.

Rozbudowa programu mikrokontrolera (sonda – woltomierz)

Kody wynikowe i źródłowe znajdują się na Elportalu razem z pozostałymi materiałami niezbędnymi do wykonania płytki drukowanej. Ze względu na dostępność kodu omówię najistotniejsze funkcje i zmienne, co może być pomocne przy samodzielnej modyfikacji programu.

W celu obniżenia poboru energii mikrokontroler taktowany jest wewnętrznym generatorem RC 8MHz. Częstotliwość ta nie jest powielana w PLL. Oznacza to, że aby użyć USB, konieczna jest zmiana częstotliwości taktującej, co wiąże się z modyfikacją funkcji czasowych.

Stała „DEF_TIM_SLEEP” definiuje czas w milisekundach do uśpienia mikrokontrolera w przypadku, gdy miernik nie jest używany. W „VREFLM385” wpisujemy napięcie źródła napięcia odniesienia U5. „U_AUTO_MAX” i „U_AUTO_MIN” definiują napięcia, przy których zmieniany będzie zakres pomiarowy w trybie automatycznym. „TLUMIK_1”, „TLUMIK_10”, „TLUMIK_100” i „TLUMIK_1000” określają faktyczny podział dzielnika złożonego z R6 oraz jednego z rezystorów R7...R9. Stałymi „TIM_KEY_SHORT_MIN” i „TIM_KEY_SHORT_MAX” ustala się minimalny i maksymalny czas w milisekundach interpretowany jako krótkie naciśnięcie przycisku, natomiast „TIM_KEY_LONG”, czas interpretowany jako długie naciśnięcie. W funkcji „PrintDC” we fragmencie:

case TLUMIK_10:
sprintf( txt, „%0.1f“, napiecieW * tlumik * 6 ); // 6.6-66V
break;
case TLUMIK_100:
sprintf( txt, „%0.0f“, napiecieW * tlumik * 6.5005500550055 );
// 66-660V
break;
case TLUMIK_1000:
sprintf( txt, „%04.0f“, napiecieW * tlumik * 6.55000555000555 );
// 660-6600V

wpisane są faktyczne stopnie podziału dzielnika utworzonego z R1...R5 i pozostałych rezystorów. Trzeba mieć świadomość, że mimo wpisania 13 cyfr po przecinku, zmienne są typu float i interpretowane jest tylko 7 cyfr znaczących. Można zmienić typ na double (15 cyfr znaczących), ale nie ma to większego znaczenia, biorąc pod uwagę inne niedokładności. W przypadku przeniesienia kodu na AVR, trzeba mieć świadomość, że w popularnym AVR-GCC, typ double ma taką samą dokładność jak float.

W programie użyto watchdoga okienkowego WWDG, ponieważ w przeciwieństwie do IWDG, jest on wyłączany po uśpieniu mikrokontrolera i nie spowoduje jego wybudzenia. WWDG nie może być resetowany zbyt często, dlatego w kodzie znajdziemy fragment:

if( !TimWwdg ){ TimWwdg = TIM_WWDG;
WWDG->CR = WWDG_CR_WDGA | WWDG_CR_T6 |
TIM_WWDG_MAX; }

Przed uśpieniem mikrokontrolera wyłączany jest wyświetlacz OLED:

if( !TimSleep || (Keys & KEY_REL_LONG) ){
HAL_Delay( 30 );
ssd1306_command(SSD1306_DISPLAYOFF);

Opóźnienie (Delay) przed uśpieniem jest konieczne, ponieważ dane do wyświetlacza są wysyłane przez DMA. Po rozpoczęciu procedury usypiania nie ma gwarancji, że nie odbywa się transmisja DMA, dlatego należałoby to sprawdzić lub jak w tym przypadku odczekać maksymalny czas transmisji, który w tym przypadku nie przekracza 20ms.

Mikrokontrolery STM32 w obudowach mniejszych niż 100 pin nie mają wyprowadzonych linii Vref+ i Vref - , są one na stałe podłączone do Vss i Vdd wewnątrz układu. Z tego powodu nie można podać na przetwornik ADC napięcia odniesienia. Połączenie Vref+ z Vdd powoduje, że napięcie odniesienia dla AD C zmienia się wraz ze zużywaniem się baterii.

Także dla dzielnika R10, R11 napięciem odniesienia jest Vdd. Precyzyjny pomiar napięcia wydaje się niemożliwy. Jest to jednak jak najbardziej do zrobienia. W tym celu mierzone jest napięcie zasilające mikrokontroler w stosunku do wewnętrznego lub jak w przypadku sondy, zewnętrznego napięcia odniesienia. Realizuje to sekwencja rozkazów:

VccCpuE = VREFLM385 * 4096 / ExtRefAdc;
VccCpu = VccCpuE;// VccCpuI;

Przy okazji mierzone jest napięcie zasilające

if ( VccCpu < VBAT_MIN ) loBat = true; else
loBat = false;

i w razie gdy jest ono zbyt niskie, wyświetlany jest migający napis „LoBat”.

Dzięki temu, że U2 może zewrzeć R6 do masy, można przeprowadzić procedurę autozerowania niwelującą niedokładność R10 i R11. Aktualne oprogramowanie nie przeprowadza takiej operacji.

Propozycja zmian

Oprogramowanie nie mierzy napięć przemiennych, ale można dodać taką opcję. Bargraf można by wykonać w wersji z zerem na środku skali. Może warto też wykonać wersję dla osób leworęcznych? Może pożądana byłaby wersja z przetwornikiem 16-bit? STM32F373 jest w taki przetwornik wyposażony. W sprawie pomysłów dotyczących rozbudowy oprogramowania proszę pisać na podany adres e-mailowy.

Wykaz elementów
Rezystory 1206:
 
R1-R5
1MΩ 1%
R6
1,8MΩ 1% **napięcie przebicia min. 500V
R8
18kΩ 1%
R9
1,8kΩ 1%
R12
300Ω
R13,R17
20kΩ
R14,R19,R20
1,5kΩ
R15,R16
22R* niewymagane
R18
1kΩ
R7,R10,R11
200kΩ 1%
L1
Kondensatory 1206:
 
C1,C2
4p7
C3
30p trymer 2-30pF
C4-C7,C9,C12,C13,C15,C16,C19
100nF
C8,C17,C18
22pF
C10,C11
10u
C14
1uF
U1
74HC4052
U2
MCP6H02
U3
STM32F103C8T6
U4
ICL7660
U5
LM385-1.2
Q1
8MHz
L2
100uH
BT1,BT2
uchwyt baterii BAT_KEYS82
S1,S2
przełącznik HS S1270R
S3-S5
mikroswitch 5×7 przycisk 15mm
J2
goldpin 3×1
J3
gniazdo USB-B Mini MUSB-B5-S-RA-SMT
J4
modOLED091_I2C ID:564691
J6
OLED RGB 0,95 96×64 KAMAMI ID: 561210 *
Do pobrania
Download icon Budowa sondy – woltomierza (opis, montaż, rozbudowa programu)
Firma:
Tematyka materiału: sonda, woltomierz
AUTOR
Źródło
Elektronika dla Wszystkich sierpień 2020
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Czujniki temperatury
1/10 Temperatura to
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"