[ATMega8] Przetwornik ADC i UART podczas Noise Reduction

Oct 18, 2008 13 Replies

Witam Czego mogê siê spodziewaæ je¿eli uruchomie prawidlowo skonfigurowany przetwornik ADC, przejde do trybu Noise Reduction a jednoczesnie na liniach UART lub I2C bedzie trwa³a jaka¶ transmisja.



1) Czy informacja z uartu lub I2C bedzie odebrana czy linie TX,RX lub SCL s± odl±czone po wej¶ciu w tryb Noise Reduction?
2) Czy transmisja po RS lub I2C bedzie miala jaki¶ negatywny wp³yw na przetwornik ADC?

I teraz odwrotnie (moze i dla mnie bardziej istotne zagadnienie). Do bufora nadawczego UART wpisuje jak±¶ dan±, uruchamiam ADC i przechodze do Noise Reduction. Czyli jednoczesnie trwa transmisja przez UART lub I2C ale jestem w trybie Noise Reduction.



3) Czy transmisja zostanie dokonczona poprawnie i jaki bedzie miala wp³yw na wynik pomiarowy? Dziêkuje i zapraszam do dyskusji.

Nie wiem, ale ADC w AVR-ach to jest generalnie porażka. Jeśli zależy ci na dokładności pomiaru to zastosuj zewnętrzny ADC.

Możesz rozwinąć? Mam problem z ATmega8 - używam ADC do pomiaru napięcia z przetwornika momentu obrotowego. Czasami pomiar mi "podskakuje" coś jakby szpilka, ponadto szumi niemiłosiernie. Sam już nie wiem czy jestem ślepy i czegoś nie widzę w PDF czy może te przetworniki są faktycznie tak słabe. Potrzebuje około 9 bitów rozdzielczości i myślałem że bez problemów a tu nie :/ Jest jakaś ogólna uzasadniona opinia o wbudowanych ADC w megach?

Sebastian Bialy przemówił ludzkim głosem:

Zależy w jakich zastosowaniach. Ja bez problemu uzyskiwałem niezaszumiony wynik na 9/10 bitach (zarówno w atmega 8 jaki i 128). Większe szumy miałem tylko na dwóch kanałach, które w nocie wyraźnie zostały opisane jako te o gorszej dokładności.

Kiedys robilem miernik sily z rejestracja - wykorzystalem ADC z PIC-a. Dawalo to niby 10 bitow. Ale takie zaszumione, nieladne. Po pewnym czasie zajalem sie tym samym tematem ale na innym procesorze i na zewnetrznym ADC. Wyciagalem 12 ladnych bitow. Generalnie mysle, ze do celow pomiarowych zewnetrzne, a do prostych zastosowan, gdzie jeszcze mozna cos usrednic mozna stosowac wbudowane przetworniki. Ale chyba nie to jest tematem watku.

Nie czytalem pdf-a ale sadze ze jasli wlaczysz Noise-Reduction to wylaczysz to co jest przewidziane do wylaczenia. To jest procesor - wykonuje rozkazy, wchodzi w tryby, zapisuje do rejestrow. Nie mysli - to pozostawia programistom.

Generalnie na grupie panuje opinia, że ten ADC jest bardzo średni - też potwierdzam. Chociaż póki co nie potrzebowałem od niego dużej dokładności. No ale próby wykazały swoje.

Witam,

Dnia 18.10.08 (sobota), 'Bogdan G' napisał(a):

Albo zastosować mikrokontrolery z lepszym ADC - np. ADuC. Tylko nie wiem, czy to jeszcze uC z ADC, czy też ADC z uC... ;)

Pewne znaczenie ma tez czestotliwosc probkowania. Zmniejsz zegar taktujacy ADC to powinno zmniejszyc szumy.

Użytkownik T.M.F. napisał:

Taktowanie rejestru przetwornika (a nie częstotliwość próbkowania) ma w AVR-ach duży wpływ na szumy. O ile czas przetwarzania nie jest bezwzględnym priorytetem zawsze stosuję największy dzielnik częstotliwości (CK/128). Przy dobrze zaprojektowanej płytce (prowadzenie mas analogowych i cyfrowych) i prawidłowym odsprzęgnięciu zasilania części analogowej uzyskiwałem te

10bitów (tzn. sporadycznie "banglał" tylko najmłodszy bit). Pewien problem pojawiał się w ATmega8. Mają one wadę produkcyjną polegającą na wewnętrznym połączeniu zasilania części cyfrowej VCC z zasilaniem części analogowej AVCC (rezystancja przejścia ok 5om). W tym przypadku odsprzęgnięcie zasilania części analogowej za pomocą dławika jest w zasadzie nieskuteczne. Przypadłości tej nie ma seria ATmega48/88 i tam gdzie zależy mi na trochę mniejszych szumach wolę stosować 48/88. Ale we wszystkich AVR-ach przy wysokich częstotliwościach taktowania ADC trudno jest mówić o 6..7 bitach bo pozostałe to już generator losowy ;-)

Pozdrawiam Grzegorz

W AVR taktowanie rejestru przetwornika odbija sie na czestotliwosci probkowania. Im szybciej probkujesz tym wieksze musisz zapodac taktowanie.

Jest jeszcze oversampling jako metoda zwiekszenia precyzji ADC. Bawilem sie tak z samplowaniem napiecia z LM35 i stabilne 10 bitow dawalo sie uzyskac bez problemow na ATMega8, przy oversamplingu 256x dawalo rade wyciagnac stabilne 12 bitow. Polecam note AVR121: Enhancing ADC resolution by oversampling.

"Grzegorz Kurczyk" snipped-for-privacy@control.slupsk.pl> schrieb

Mnie wychodzi 10 przy taktowaniu ADC wg zalecen Atmela tzn 50~200kHz.

Na pewno maja zasilanie portu C z AVCC, przy czym niekoniecznie to jest wada.

Co rozumiesz przez 'wysokich'?

hej

Użytkownik mw158979 napisał:

Czyli przy CLK=16MHz będzie to właśnie maksymalny podział przez 128 co da 125kHz. Przy kwarcu 8MHz można sobie pozwolić na podział przez 64 (choć i w tym przypadku podział /128 daje stabilniejsze wyniki).

Wada polega na zmniejszeniu skuteczności dławika filtrującego zasilanie części analogowej.

No fakt trochę nieprecyzyjnie się wyraziłem. Chodzi mi o taktowanie na poziomie 2..8MHz (dzielnik CLK/8..CLK/2 przy kwarcu 16MHz).

Pozdrawiam Grzegorz

Użytkownik T.M.F. napisał:

Ale przy szybkim taktowaniu wcale nie muszę szybko próbkować. Nieporozumienie powstało z powodu nomenklatury. Dla mnie próbkowanie jest związane z działaniem układu sample&hold na wejściu przetwornika. Oczywiście czas pobierania próbki (zamknięcia klucza próbkującego) jest związany z częstotliwością taktowania przetwornika (trwa jeden okres zegara taktującego ADC). Jednak czas pobierania próbki prze układ SH nie ma aż takiego wpływu na szumy. Natomiast samo przetworzenie tej próbki w rejestrze aproksymacyjnym jest już wrażliwe na czestotliwość taktowania. Wydaje mi się, ze będzie to związane z jakością komparatora.

Metoda ta jest mi znana i daje całkiem niezłe rezultaty, ale niestety kosztem znacznego spadku prędkosci przetwarzania.

Pozdrawiam Grzegorz

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required