Zwykły potencjometr:
Aby maksymalnie uprościć nasze rozważania załóżmy że posługujemy się dwoma przykładami, jeden gdy chcielibyśmy skorzystać z napięcia odniesienia VCC = 5 V, oraz drugi wariant, gdy wybierzemy programowo (ustawiając odpowiednie bity w rejestrze ADMUX), wewnętrzne źródło 2,56 V. W pierwszym przypadku gdy skorzystamy z AREF=5V i zaczniemy kręcić potencjometrem zamontowanym jak na schemacie (widocznym po lewej stronie), okaże się że wartość pary rejestrów ADCH oraz ADCL, którą można w AVR GCC odczytywać w postaci ADCW (łącznie gdy korzystamy z rozdzielczości 10-bit), będzie wynosiła: 0 ( 0 V gdy suwak będzie na samym dole), 512 ( 2,5 V gdy suwak ustawimy pośrodku) oraz 1023 ( 5V gdy suwak ustawimy na górze ). Mowa o schemacie po lewej stronie. W takim razie teraz rozważmy jakie uzyskamy wartości ADCW gdy wybierzemy wewn. napięcie odniesienia 2,56 V. Okaże się, że wartość będzie wynosiła: 0 ( 0 V gdy suwak będzie na samym dole), ok 1023 ( 2,5 V gdy suwak ustawimy pośrodku) oraz 1023 ( 5V gdy suwak ustawimy na górze ). Cóż się stało ? Okazuje się, że kręcąc suwakiem od połowy do góry (do VCC) wartość ADC nie będzie się zmieniać i będzie równa maksymalnej wartości związanej z 10-bitową rozdzielczością = 1023. I to byłoby tylko TYLE ile możemy skorzystać z dydaktycznej wartości zamontowanego jednego czy nawet dwóch potencjometrów w taki sposób. Nie jesteśmy w stanie nawet wykonać prób pomiaru napięć zewnętrznych, pomiaru napięcia bateryjek, które mamy pod ręką czy nawet napięcia zmieniającego się w zakresie od 0 do 32V z regulowanego zasilacza laboratoryjnego. Aby mieć więcej możliwości należałoby skorzystać z dzielnika rezystorowego. Ale takiego nie ma zwykle w zestawie, więc trzeba dokładać go na zewnątrz np na płytce stykowej. |
Dwa dzielniki napięcia:
Zabiegów tych dokonujemy po to aby móc za pomocą odczytów ADC sprawdzać wartość rejestrów ADCH i ADCL (ADCW) .... i chcemy uzyskać taki efekt aby przy wybranym napięciu odniesienia wartość ta zmieniała się w pełnym zakresie od 0 do 1023, a nie tak jak w drugim przypadku opisanym przy schemacie wyżej. Byłoby to już dużo lepsze rozwiązanie, jednak nadal posiadałoby istotną wadę, otóż dzielniki byłyby przygotowane do pomiaru konkretnej i stałej maksymalnej wartości napięcia +32 V. Tymczasem mogłoby się okazać, że już po okresie nauki ADC mielibyśmy potrzebę zbudowania błyskawicznie prostego układu pomiarowego dla całkiem innego zakresu napięć. W takim wypadku znowu trzeba by było sięgać po płytkę stykową i korzystać z wątpliwej przyjemności podłączania wielu przewodów połączeniowych. Inną wadą byłby fakt, że nawet w przypadku doboru droższych rezystorów o dużo lepszej tolerancji np 1 % wciąż taki 1 % wpływałby na niedokładność obliczeń napięcia już w samym programie. Zakładamy, że jednak wymogiem byłoby stworzenie woltomierza na wyświetlaczu LCD lub LED. |
Aby wyeliminować wady wyżej opisanych rozwiązań a przy okazji znamiennie udoskonalić możliwość kalibracji sprzętowej takiego woltomierza, po to aby mniej kłopotów było od strony programowej, firma Atnel wprowadziła dosyć nietypowy dzielnik napięcia. Jest on bowiem regulowany w pełnym zakresie co pozwala tak dobrać elementy (jeden rezystor jest wymienny), aby uzyskać możliwość pomiaru napięć w praktycznie dowolnym zakresie. Dodatkowym i nieocenionym atutem tego rozwiązania jest możliwość bardzo precyzyjnej kalibracji dzielnika a w efekcie końcowym uzyskanie o wiele dokładniejszych pomiarów ale także wyświetlanych wartości mierzonych napięć. Proszę zwrócić uwagę dokładnie na schemat. Tym razem naszym rezystorem R będzie wartość rezystora, którego możemy dodatkowo zmieniać wg własnego uznania, poszerzając lub zawężając zakres mierzonych napięć, plus wartość rezystancji potencjometru od jego suwaka do nóżki podłączonej do wymiennego rezystora. Należy zatem wziąć omomierz i zmierzyć wartość rezystancji oznaczonej na schemacie jako Rb oraz Ra. Nie wyobrażam sobie, żeby osoba stykająca się z elektroniką, nie miała "pod ręką" miernika uniwersalnego do pomiarów co najmniej napięcia oraz rezystancji. A wystarczy tutaj najprostszy miernik. Wystarczy zatem przyłożyć jedną sondę miernika do suwaka potencjometru a drugą do końcówki pomiarowej oznaczonej jako VOLT ! To bardzo ważne a zarazem bardzo proste zadanie. W wyniku pomiaru, posługując się nawet kiepskiej jakości miernikiem, zwykle uzyskamy o wiele dokładniejszą wartość tej rezystancji, niż wynikałaby ona z faktu zastosowania rezystorów o tolerancji 1 %. W tym momencie uzyskujemy potrzebną nam wartość rezystora oznaczonego jako R w naszym dzielniku. Każdy się domyśla, że kolejnym krokiem będzie pomiar rezystancji pomiędzy suwakiem potencjometru a GND i to będzie wartość rezystora R1, potrzebna do wzoru. Uzyskamy zatem w wyniku tych dwóch prostych pomiarów, dokładne wartości obydwu rezystorów dzielnika. Należy dodać, że dokonujemy tego zanim podłączymy suwak potencjometru do mikrokontrolera, dlaczego ? Dlatego, że musimy ustawić na wejściu maksymalne pożądane napięcie, które chcemy mierzyć, następnie suwakiem potencjometru ustawić napięcie WYJŚCIOWE do takiej wartości, jakie wybraliśmy źródło odniesienia. Możemy się zatem (jak widać) dostosować płynnie do dowolnego źródła odniesienia! Jeśli wybierzemy programowo 2,56 V to suwakiem pokręcamy aż uzyskamy na suwaku (mierząc tym razem naszym miernikiem - woltomierzem) napięcie 2,56V. Jeśli mamy zamiar korzystać z napięcia odniesienia 5 V to ustawiamy suwakiem napięcie na +5V. Przy czym ten drugi przypadek jest mniej zalecany z uwagi na to że napięcie zasilania VCC jest po pierwsze o wiele mniej stabilne niż wewnętrzne źródło odniesienia 2,56V a często ma większe odchyłki wartości niż +5V w związku z czym o wiele trudniej później dobrać wartość do obliczeń. Zdecydowanie w tym momencie polecam korzystanie z wewnętrznego źródła odniesienia. To co teraz napiszę wprowadzić może w pewną konsternację początkujące osoby, jednak okazuje się, że wewnętrzne źródło odniesienia rzadko kiedy posiada iedalnie wartość napięcia 2,56 V lub dokładnie 1,1 V. W związku z tym, jak widać, to jest powodem nerwów a nawet zniechęcenia, przy próbach z pomiarami ADC, gdyż jest wiele czynników wpływających na dokładność pomiarów i wydaje się początkującej osobie, że trudno nad nimi zapanować. Tymczasem opisuję tutaj jak krok po kroku można postępować i eliminować sporą część takich błędów. W takim razie zakładając, że napięcie 2,56 V wcale nie musi tyle wynosić - to jak to sprawdzić ? Na szczęście jest to bardzo proste, wystarczy bowiem przyłożyć tym razem miernik "woltomierz" do pinu AREF mikrokontrolera i GND. W tym momencie zobaczymy dokładnie jakie jest to napięcie a podkreślam że może się ono różnić nawet pomiędzy różnymi egzemplarzami takiego samego rodzaju mikrokontrolera. Na szczęście jeśli je zmierzymy i okaże się, że zamiast 2,56 V ujrzymy wartość 2,48 V to żaden kłopot mając do dyspozycji regulowany dzielnik w zestawie ATB! Wystarczy teraz suwakiem ustawić przy maksymalnym napięciu wejściowym - napięcie wyjściowe = 2,48 V ! I koniec, to wszystko - to koniec regulacji. Mając to na uwadze można już w programie skorzystać z wzoru podanego na dole rysunku widocznego po lewej stronie. Dzięki temu uzyskamy po obliczeniach tego wzoru bardzo precyzyjne pomiary, i po raz pierwszy okaże się, że w końcu udaje się wykorzystać tak proste 8-bitowe mikrokontrolery do budowy własnego dość precyzyjnego woltomierza. Proponuję to sprawdzić empirycznie posługując się teraz przykładami ADC zamieszczonymi w książce pt. "Mikrokontrolery AVR Język C Podstawy programowania". Tyle że tym razem skorzystamy z najnowszych rozwiązań zastosowanych w zestawach uruchomieniowych ATB 1.03 oraz 1.04. |