Elektronika     Automatyczny woltomierz panelowy LED (ATmega48)        




Jest to automatyczny 2-zakresowy woltomierz panelowy z 4-cyfrowym wyświetlaczem LED, zasilany sta-
bilizowanym napięciem 4.75-5.25V. Umożliwia pomiar dodatniego napięcia stałego, o wartości do 45V
(maksymalnie do 50V przy minimalnym napięciu zasilania równym 5.0V). Sprawdza się dobrze zamon-
towany, np. w regulowanym zasilaczu warsztatowym.
Sercem woltomierza jest popularny mikrokontroler ATmega48 z wbudowanym, wielokanałowym 10-bi-
towym przetwornikiem ADC (Analog to Digital Converter). Można również wykorzystać inne modele z tej
rodziny, czyli ATmega88 i ATmega168 (mają ten sam rdzeń, ale większą ilość pamięci). Przygotowałem
dla nich odrębne wersje programu sterującego, który napisałem w asemblerze dzięki czemu zajmuje on
poniżej 250 bajtów. Reszta pamięci FLASH pozostanie nie wykorzystana, więc lepiej użyć tańszego
mikrokontrolera z mniejszą jej ilością.
Mierzone napięcie wejściowe Vin trafia na dzielnik napięcia, zbudowany z rezystorów R1, R2 i R3. Jest
to fragment typowego dzielnika, stosowanego we wszystkich multimetrach uniwersalnych. Zapewnia
bardzo dobrą dokładność podziału napięcia pod warunkiem, że użyte w nim rezystory mają małą tole-
rancję (1% lub niższą). Rezystory R1/R2+R3 i jednocześnie R1+R2/R3, tworzą napięcia o wartości
Vin/10 i Vin/100, które trafiają bezpośrednio do multipleksera kanałów przetwornika ADC. Napięcie po-
dawane bezpośrednio do wyprowadzeń mikrokontrolera, nie może przekroczyć wartości jego napięcia
zasilania Vcc, aby nie spowodować uszkodzenia portu. Dlatego bezpieczną wartością maksymalną Vin
jest 45V zakładając, że Vcc=4.75V oraz przyjmując niedokładność podziału napięcia przez R1/R2+R3,
wynikającą z 1-procentowej tolerancji tych rezystorów. Natomiast jeśli Vcc wynosi 5.0-5.25V i dzielnik
R1/R2+R3 zapewnia podział dokładnie o stosunku 1:10, to można bezpiecznie mierzyć napięcia do 50-
52.5V, w zależności od konkretnej wartości Vcc.
Fabryczne multimetry uniwersalne mają dzielnik o rezystancji wejściowej Rin=10M. W moim woltomierzu
wynosi ona tylko 100k, ponieważ przetwornik ADC w mikrokontrolerze działa dobrze jedynie ze źródłami
napięcia, o impedancji wyjściowej Zout do 10k. Dzielnik 1:10 ma Zout=R1*(R2+R3)/R1+(R2+R3)=9k,
a dzielnik 1:100 ma Zout=(R1+R2)*R3/(R1+R2)+R3=990, czyli oba spełniają wymagania przetwornika.
Ewentualne zwiększenie Rin (np. do 1M: R1=900k, R2=90k, R3=10k), zwiększy również Zout dzielnika
1:10 powyżej 10k, co może spowodować nieprawidłową pracę przetwornika ADC. Przy napięciu Vin=
45V woltomierz (Rin=100k) pobiera z niego prąd, o wartości ok. 450uA więc nie jest to zbyt duże obcią-
żenie. Z powodu braku rezystorów 9k i 90k zastąpiłem je połączonymi szeregowo, precyzyjnymi rezy-
storami o tolerancji 1% oraz dużo częściej spotykanych wartościach wynoszących, odpowiednio:
2.2k+6.8k i 15k+75k.
Układ U2, czyli popularna regulowana dioda Zenera TL431 pracuje, jako źródło napięcia odniesienia.
Na jego wyjściu otrzymuje się napięcie 2.44-2.55V (w zależności od tolerancji układu), które trafia na
regulowany dzielnik napięcia, zbudowany z wieloobrotowego potencjometru P1 (Helitrim) i rezystora
R13. Potencjometr służy do precyzyjnego ustawienia napięcia referencyjnego Vref na pinie AREF mikro-
kontrolera dla przetwornika ADC. Od wartości Vref zależy maksymalne napięcie Vin, które może mierzyć
przetwornik oraz rozdzielczość pomiaru, która wynosi: Vref/1024 [mV]. Napięcie Vref nie może być niższe
od 1V, ani wyższe od napięcia zasilania Vcc.
Przykład: jeśli Vref=3.072V to przetwornik będzie mierzył napięcie 0-3.072V, które zamieni na wartość
cyfrową $0000-$03FF (10-bitów). Rozdzielczość pomiaru wyniesie 3mV, czyli każda zmiana napięcia o
3mV spowoduje zmianę wartości cyfrowej o 1. Jeśli mierzone napięcie będzie wyższe od Vref, to wartość
cyfrowa będzie zbliżona do maksymalnej, czyli $03FF.
Woltomierz ma 2 zakresy pomiarowe, które przełączają się automatycznie w zależności od wartości mie-
rzonego napięcia. Napięcie z dzielnika 1:10 trafia na pin ADC0. Jest to zakres LOW, który zapewnia po-
miar napięcia do 10.20V z rozdzielczością 10mV lub do 20.40V z rozdzielczością 20mV. Jeśli mierzone
napięcie przekracza podane wartości dla zakresu LOW, to woltomierz przełącza się automatycznie na
pomiar napięcia z dzielnika 1:100 (pin ADC1). Jest to zakres HIGH, który zapewnia pomiar maksymal-
nego dopuszczalnego napięcia (45-52.5V), z rozdzielczością 100 lub 200mV.
Wynik pomiaru jest wyświetlany na poczwórnym, zielonym wyświetlaczu LED1 ze wspólną anodą (zbę-
dne zera nie są pokazywane). Rezystory R4-R11 ograniczają prąd zasilający poszczególne segmenty
każdej z cyfr. Przy napięciu zasilania 4.75-5.25V prąd chwilowy wynosi ok. 13.5-15.5 mA na segment.
Jeżeli jasność świecenia wyświetlacza jest za słaba, to można zmienić ich wartość ze 100 do 68-75
omów. Tranzystory T1-T4 załączają napięcie zasilania dla danej cyfry na wyświetlaczu (powinny mieć
wzmocnienie hfe>130). Każda cyfra jest multipleksowana z częstotliwością ok. 60Hz (4ms świecenia).
Gdy zworka J1 jest zwarta (ON) zostaje włączony test wyświetlacza, który powoduje ciągłe wyświetlanie
wartości "88.88".
Po wlutowaniu wszystkich elementów w typowej kolejności, nie wkładamy jeszcze mikrokontrolera w po-
dstawkę tylko mierzymy rezystancję w następujących miejscach: na złączu CON1 powinna ona wynosić
100k, a pomiędzy pinami 23/24 podstawki - 9k. Podłączamy napięcie zasilania i sprawdzamy, czy poja-
wia się ono na pinach 8/7 i 8/20 podstawki oraz czy ma prawidłową polaryzację.
Jeśli mikrokontroler był już używany, to należy się upewnić że ma odpowiednio ustawione fuse i lock bi-
ty: FL (Fuse Low): $62, FH (Fuse High): $DF, FE (Fuse Extended): $F9 ($FF dla ATmega48), LB (Lock
Bits): $FF. Fabrycznie nowe mikrokontrolery ATmega48/88/168 mają właśnie takie domyślne ustawienia.
Powodują one, że mikrokontroler korzysta z wewnętrznego oscylatora RC, o częstotliwości nominalnej 8
MHz (bity CKSEL3-0=0010); włączony jest dzielnik częstotliwości przez 8, co powoduje taktowanie mik-
rokontrolera zegarem 1 MHz (CKDIV8=0); wydłużony jest czas jego startu do ok. 65ms po włączeniu na-
pięcia zasilania (SUT1-0=10), a także włączona jest możliwość jego zaprogramowania przez interfejs
szeregowy (SPIEN=0).
Następnie przy wyłączonym zasilaniu wkładamy mikrokontroler w podstawkę, włączamy zasilanie i pro-
gramujemy go odpowiednim wsadem przez złącze CON3, przy użyciu dowolnego programatora ISP (In-
System Programming). Złącze CON3 zawiera sygnały rozmieszczone w standardowy sposób zalecany
przez firmę Atmel, a pokazany na schemacie ideowym. Po prawidłowym zaprogramowaniu mikrokontro-
lera, odłączamy programator od woltomierza.
Jeśli wystarczy nam pomiar do 10.20V na zakresie LOW, to potencjometrem P1 ustawiamy napięcie
Vref=1.024V na pinie AREF mikrokontrolera, a zworkę J2 rozwieramy (OFF). Wtedy na zakresie LOW i
HIGH rozdzielczość pomiaru wyniesie, odpowiednio: 10 i 100 mV. Jeśli chcemy "poszerzyć" zakres LOW
tak, aby umożliwiał pomiar do 20.40V, to potencjometrem P1 ustawiamy napięcie Vref=2.048V, a zworkę
J2 zwieramy (ON). Takie "poszerzenie" pogarsza jednak rozdzielczość pomiaru na obu zakresach, która
wynosi w takim wypadku, odpowiednio: 20 i 200 mV.
Gdyby przetwornik ADC i rezystory w dzielnikach były idealne, to samo ustawienie napięcia Vref o war-
tości 1.024V lub 2.048V wystarczyłoby do prawidłowej pracy woltomierza. Niestety sam przetwornik, jak
i dzielniki napięcia wprowadzają błędy pomiaru. Aby je zminimalizować, należy dokonać kalibracji z uży-
ciem fabrycznego multimetru. W tym celu do źródła napięcia o wartości ok. 9V (np. baterii), podłączamy
jednocześnie woltomierz i równolegle do niego fabryczny multimetr, ustawiony na zakres pomiaru napię-
cia stałego do 20V. Następnie regulujemy potencjometrem P1, aż do uzyskania identycznego wskazania
na obu woltomierzach. Po takiej kalibracji woltomierz zapewnia już wystarczającą dokładność pomiarów
i jest gotowy do użytkowania. Przy braku napięcia Vin na złączu CON1, wyświetlacz powinien pokazy-
wać wartość "0.00".
Warto wspomnieć, że mikrokontrolery ATmega48/88/168 nie mają oddzielonej masy cyfrowej (pin 8) od
analogowej (pin 22). Muszą się one ze sobą łączyć na płytce drukowanej, ale tylko w jednym punkcie.
Znacznie zmniejszy to wpływ zakłóceń, generowanych przez część cyfrową mikrokontrolera na jego
część analogową. Ponadto przetwornik ADC wykonuje pomiary tylko wtedy, gdy mikrokontroler jest
"uśpiony", co dodatkowo niweluje wpływ zakłóceń na wynik pomiaru.
Moim celem było zbudowanie woltomierza panelowego, który mógłby zastąpić woltomierz z układem
ICL7107. W pewnym stopniu udało mi się to osiągnąć, ale nie do końca. W porównaniu do ICL7107 mój
woltomierz ma następujące wady: brak pomiaru napięć ujemnych (tylko dodatnie), brak zakresów do
200mV i 2V (nie mierzy z rozdzielczością 0.1 mV i 1 mV), mniejsza rezystancja wejściowa (100k), gorsza
dokładność pomiarów wynikająca z większej nieliniowości i niższej rozdzielczości przetwornika ADC.
Trzeba tu wspomnieć, że układ ICL7107 jest specjalizowanym woltomierzem i posiada dobrej jakości
przetwornik, o rozdzielczości 11-bitów. Natomiast przetwornik wbudowany w mikrokontroler ATmega
jest średniej jakości i ma rozdzielczość tylko 10-bitów.
Do zalet mojego woltomierza można zaliczyć: automatyczne przełączanie zakresów pomiarowych, szyb-
kość wykonywania pomiarów ok. 60x/s (ICL7107 - tylko 3x/s), nie wymaga ujemnego napięcia zasilania,
mniejszy pobór prądu - niestety kosztem jasności świecenia wyświetlacza (przy włączonej funkcji TEST
100-118 mA, dla ICL7107 jest to 160 mA).
Woltomierz zmontowałem na dwóch płytkach jednostronnych: głównej o wymiarach 60x50 mm i wyświe-
tlacza 65x30 mm, które są ze sobą zlutowane pod kątem prostym. W każdej znajdują się dwa otwory
montażowe o średnicy 3 mm, dzięki którym woltomierz może być przykręcony do obudowy. Jako małą
ciekawostkę dodam, że płytki prototypowe wykonałem bez trawienia (mini wiertarką z małym frezem).

ZAKRESVREFJ2MAKSYMALNE
WSKAZANIE
ROZDZIELCZOŚĆ
POMIARU
LOW1.024 VOFF10.20 V10 mV
2.048 VON20.40 V20 mV
HIGH1.024 VOFF52.5 V100 mV
2.048 VON200 mV
Ustawienia dotyczące zakresów pomiarowych.
OFF - zworka J2 rozwarta, ON - zworka J2 zwarta.


Rozkład wyprowadzeń wyświetlacza LED.

UWAGA! Woltomierz nie jest w żaden sposób zabezpieczony przed odwrotnym podłączeniem napięcia
zasilania Vcc, ani mierzonego napięcia wejściowego Vin. Pomylenie polaryzacji tych napięć spowoduje
uszkodzenie mikrokontrolera.

SPIS ELEMENTÓW:

Rezystory:
R1 - 90k/1%
R2 - 9k/1%
R3 - 1k/1%
R4-R11 - 100
R12 - 470
R13-R17 - 1k
R18 - 10k
Potencjometry:
P1 - 5k (Helitrim)

Kondensatory:
C1 - 100n/63V
C2-C4 - 100n
C5 - 100u/10V
Cewki:
L1 - 10uH (dławik)

Tranzystory:
T1-T4 - BC557 (lub inny PNP)

Układy scalone:
U1 - ATmega48, 88 lub 168
U2 - TL431
Wyświetlacze:
LED1 - poczwórny, zielony LED ze
              wspólną anodą (AF-05643FG)

Złącza:
CON1, CON2 - goldpin 2x1 (męskie)
CON3 - goldpin 3x2 (męskie)

Inne:
U1 - podstawka DIP28 zwykła
J1, J2 - zworka 2x1