Re: AVR i ADC

Apr 28, 2008 14 Replies

Hi, też tak miałem, przyczyną było ciągłe włączanie i wyłączanie ADC w pętli; wtedy napięcie na REF też się włącza-wyłącza. Dodatkowo zanim napięcie na kondensatorku REF dojdzie do swojej wartości 2,56V (zwłaszcza gdy kondensatorek jest o większej pojemności, potrzebuje nieco czasu aby się naładować), ADC już mierzy - stąd błędy. Po prostu trzeba włączyć ADC na początku programu i tak zostawić; nię wyłączać po każdym pomiarze.


Użytkownik DHQ napisał:

Ale problemem jest również sama dokładność źródła referencyjnego. Miewałem Atmelki, w których miało ono poniżej 2,3V, a zdarzały się takie co miały ponad 2,7V. Nawet w nocie aplikacyjnej Atmel przyznaje się do "widełek" między 2,3 a 2,7V. Samo źródło jest dość stabilne w czasie i temperaturze, tylko ma "kiepskie warunki początkowe" :-) W 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.

Pozdrawiam Grzegorz

To nie tylko atmelki - widac kwestia technologii, ale sporo ukladow ma precyzyjny ADC, ale bez zrodla odniesienia ..

J.

Grzegorz Kurczyk pisze:

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?

Użytkownik BartekK napisał:

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.

Pozdrawiam Grzegorz

Witam,

Dnia 28.04.08 (poniedziałek), 'Grzegorz Kurczyk' napisał(a):

A potrafi ktoś podać, na ile stabilne jest to źródło? Sam jeszcze takich pomiarów nie robiłem, ale być może przy jakieś okazji coś tam pomierzę. Ciekawi mnie, czy w zakresie 0..40*C da się uzyskać stabilność 1LSB lub 2LSB (zasilając uC z typowego stabilizatora). To daje dla Vref=2.5V różnicę ~5mV. Jeśli tak, to byłoby bardzo dobrze. :)

Wystarczy zerknąć na tabele 66 w pdf-e aby się przekonać - Atmel częścią analowową się nie przejmuje! Dryft Vref nawet nie jest badany. Miernika to z "tego" lepiej nie robić. K.

Witam,

Dnia 28.04.08 (poniedziałek), 'John Smith' napisał(a):

Ano właśnie, dlatego pytam, czy ktoś ma z tym jakieś doświadczenia.

Całe szczęście, że błędy samego przetwornika podają. Ciekawe, czy Vref nie opisują, bo jest takie słabe, ma żadną stabilność i się wstydzą...? :) Dla mnie byłoby lepiej, gdyby nawet podali 10mV/*C, niż nic. :)

No chyba, że dołączymy zewnętrzne źródło. Fakt jest faktem, że takie w SOT-23 dużo miejsca nie zajmuje, no ale...

Grzegorz Kurczyk pisze:

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...

Użytkownik BartekK napisał:

Takie powiększenie rozdzielczości ADC było chyba opisywane w jakiejś nocie Atmela. Polegało to właśnie na podłączeniu "szumofonu" do wejścia AREF i uśrednianiu pomiarów.

Pozdrawiam Grzegorz

Doświadczeń z ADC już trochę jest...

Zasada jest taka, jak nie podają parametru to znaczy, że go nie testują w czasie produkcji i z tego powodu jest lepszy uzysk.

Coś za coś, albo tanio albo dobrze. Dołączenie zewnętrznego źródła referencyjnego może nie pomóc. Część cyfrowa mikrokontrolera może zakłócać ADC. K.

Grzegorz Kurczyk pisze:

Cholera, czyli znów wyszło że własnoręcznie odkryłem koło i wyprowadziłem wzór na jego obwód, gdy ludzie na świecie już produkują opony... Ale znaczy że dobrze kombinowałem :)

Grzegorz Kurczyk pisze:

Ano podobne rozrzuty widziałem u siebie. Chciałem uniknąć kalibracji każdej sztuki indywidualnie i zamiast tego program na starcie sam mierzy jakie rzeczywiście Vref dostaje. Tzn najpierw, gdy prawie wszystko jest wyłączone, ustawiam ref na Vcc (pochodzi z precyzyjnego stabilizatora, w tym momencie układ prawie prądu nie ciągnie więc nawet przy prawie rozładowanej baterii mam tam dość dobre 5V) i robię pomiar wejścia 14 (wewn. 1.30V). Potem mierzę to samo wejście już przy włączonym 2.56V Vref. Z prostej matematyki wychodzi jak trzeba przeskalować pomiary, i to nie jest zależne od rozrzutów 1.30V. WP

W dniu 2008-04-29 00:37, BartekK pisze:

Noo, dithering wynalazłeś. To nie takie byle co znowu :-)

Dykus pisze:

A znasz jakiś dobre, tanie źródło w SOT-23? Ja właśnie zamierzam dać REF198 (10ppm/C SOIC-8) do Atmega32.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required