Post by Grzegorz KurczykPost by BartekKPost by Grzegorz KurczykW aplikacjach, w których potrzebuję pomiaru trochę dokładniejszego od
miernika LAVO-1 stosuję programową kalibrację pomiaru. Załatwia to
przy okazji problem doboru ewentualnego dzielnika napięcia na wejściu.
No tak, ale to powoduje iż zależnie od Uref zastanego i zastanego
dzielnika R/R na wejściu - dobierasz inną kalibrację/podział/mnożnik
wartości zmierzonej, czyli dostajesz bliżej nie określoną kwantyzację
i błąd pomiaru... Chyba że mierzysz na 10 bitach a realnie używasz
7-8, resztę zaokrąglając?
Ma Kolega całkowitą rację. Dlatego pisałem o pomiarze trochę
dokładniejszym od LAVO-1 ;-) Np. stosowanie do dzielnika rezystorów 0,1%
przy tak niedokładnym Uref wydaje mi się lekkim przerostem formy nad
treścią. Jak potrzebny mi jest dokładniejszy pomiar to i tak nie
obejdzie się bez zewnętrznego Uref czy wręcz porządniejszego ADC.
Dlatego gdy potrzebuję mierzyć dokładniej to robię przeważnie to
inaczej. Wręcz "od drugiej strony" - wkładam stabilne Uref które wcale
nie zasila mi Uref Atmegi, tylko jest mierzone na jednym z wejść ADC
(albo częściej podłączane przez ten sam dzielnik który ma mierzyć U
docelowe). A Uref atmegi generuję ... atmegą z PWM 16bit z ładnym
filtrem typu TT.
Przy włączeniu lub okresowo dokonuję kalibracji - przełączam pomiar na
źródło o znanym napięciu i tak soft "kręci" pwm by uzyskać zakładany
pomiar ze źródła odniesienia. Trwa to chwilkę ale jest zdecydowanie
dokładniejsze, np:
- chcę mierzyć napięcie 0-10v przy adc 10bit czyli 1024 kroki, najlepiej
z prostą kwantyzacją "0.01v", czyli pomiar (przed dzielnikiem) 0.00v -
10.23v
- ADC może mierzyć tylko 0-Uref (a Uref powinno być od 2v do Ucc) więc
wstawiam dzielnik "jakiś", mniejwięcej 1/3, przy rezystorach 2% lub 5%
to i tak loteria.
- źródło odniesienia podłączam (przeważnie mikroprzekaźnikiem, ale
czasem coś typu 4066 też wystarcza) np 2.55 lub 2.56v - gdy je mierzę z
moim nieznanym podziałem - powinno wyjść binarnie 1/4 zakresu ADC, czyli
wynik z ADC = 0x00FF (przy dokładności 10bit). Tak kręcę PWM
(oczywiście z zachowaniem czasu na ustabilizowanie się napięcia) żeby
tyle uzyskać - i mamy kalibrację z głowy, teraz (niezależnie od Uref i
dzielnika) mam dokładny pomiar z kwantyzacją taką jak chciałem.
Jedynie stabilność Ucc ma wpływ na stabilność wartości wyfiltrowanej z
PWM, ale wystarczy albo raz-na-jakiś-czas robić kalibrację, albo wsadzać
sensowny stabilizator +5v :)
A przy okazji można tą metodą dokonać "automatycznej zmiany zakresu"
ustawiając pełne Uref (z kalibracji) oraz np połówkowe lub jeszcze
mniejsze itp, byle nie zchodzić poniżej 2V. Raz sprawdzić i ustawić
algorytm przeliczania PWM z pełnego na 'zaniżone' i zawsze to większa
dokładność przy pomiarach małych napięć, przy paru ostatnich bitach...
Swoją drogą (i całkiem nie w temacie chyba) to ciekawą sprawę zauważyłem
z tym Uref. Gdy Uref jest słabo filtrowane (ma szumy z pwm naniesione) a
pomiar jest dokonywany cyklicznie, wyniki z pomiarów sumowane i potem
dzielone przez liczbę pomiarów (przeważnie robię np 64 pomiary a wynik
przesuwałbym w prawo o 6 bitów, przesunę tylko o 5 i mam "bit po
przecinku") to uzyskuję dużo lepszą dokładność niż przy stałym Uref.
Tzn każdy z pomiarów jest dokonywany z pewnym błędem wynikającym z
oscylowania wokoło Uref, ale jak się je uśredni - to wychodzi dokładność
większa niż 1bit/kwantyzacja. Zmiana napięcia wejściowego o wartość
mniejszą niż kwantyzacja (np w podanym przykładzie o mniej niż 0.01v)
już powoduje że wartość średnia z tych 64pomiarów jest już inna.
Taki "oversampling" ? Jak będę miał chwilę to zrobię jakieś pomiary
laboratoryjne takich metod na ADC atmegi, co by wyznaczyć _realne_ błędy
i osiągane dokładności...
--
| Bartlomiej Kuzniewski
| ***@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173