Dziwne skoki na przetworniku ADC w ATmedze.

Mar 17, 2012 8 Replies

Witam.



Jest projekt bez przetwornika. W ostatniej chwili trzeba bylo jednak z niego skorzystać. Ponieważ nie był w zamierzeniach to jedyne co jest to kondensator na Vref i dławik na zasilaniu AVcc. Masy nie są rozdzielone, specjalnej wagi nikt nie przykładał do ich prowadzenia.



Trzeba było jednak użyć ADC i tutaj ciekawostka: ATMega128 podczas pomiaru pojedynczego napięcia, róznicowego, ze wzmocnieniem 1x i 200x ma ciekawy objaw: okresowo, kilka razy na sekundę wynik różni się od prawidłowego o około 20%. To daje gdzieś pi x drzwi 3 bity dokładności...



Pomiar wykonywany jest tak:



a) podawane stałe napięcie z dzielnika, dzielnik zasilany z Vref. b) przetwornik najwolniej jak się da c) odczyt przynajmniej kilkanaście razy wolniej niż podawany w intrukcji. d) procesor podczas pomiaru *musi* coś robić, nie mogę go uśpić e) Vref wewnętrzny, z kondensatorem na pinie.



Bez względu na to jak straszliwie mam zaszumione zasilanie, jak krzywo poprowadzone masy nie chcę mi się wierzyć że przetornik szumi na 7 bitach i to jeszcze jakoś tak impulsowo.



Zmiany są zarówno w + jak i w -.



Oczywiście nie chodzi mi teraz o rady jak to naprawić - płytka jest. Chodzi raczej o pytanie: co powoduje aż tak kolosalne szumy.



Błąd software wykluczam, spędziłem dobę debugując wszystko i nie ma tam miejsca na pomyłkę.


dołóż jeszcze niewielki kondensator do tego dzielnika, choćby 100p...10n.

Podłącz oscyloskop do mierzonego napięcia i wyzwalaj pomiar innym pinem uC, jeśli odchyłka bieżącego pomiaru będzie większa niż x% średniej z poprzednich pomiarów. Może coś jednak włazi na napięcie mierzone.

Trzeba było po kolei wyłączać sterowanie różnymi obciążeniami i zobaczyć, czy pomiary nadal wariują.

W dniu 2012-03-17 21:50, Sebastian Biały pisze:

Kiedy ja mam takie wrażenie to znaczy, że albo nie doczytałem erraty do sprzętu, albo błąd jest zbyt oczywisty, bym go dostrzegł... Weź najprostszy przykład programu obsługi ADC dla tego procesora, zobacz czy on też tak wariuje a potem popraw swój.

Nie pomogo :/

Najzabawniejsze że między innymi podawałem tam napięcie z ... baterii. Dalej podskakuje. Podałem w końcu tą baterię również na Vref ... efekt jak zwykle.

Najlepsze że procesor w zasadzie "nic nie robi" na zewnatrz. Czyta tylko piny, nie zmienia ich stanów, wykonuje obliczenia real-time. Czyli żaden z pinów nie drga.

Ja wiem, "pokaż schemat i kod" ale niestety nie mogę :)

Ale sprawdziłeś oscyloskopem?

No to pozostaje zrobić program minimum czytający tylko adc i zobaczyć czy coś się zmieniło.

Użytkownik "Sebastian Biały" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:jk2te1$faf$ snipped-for-privacy@inews.gazeta.pl...

Podobne problemy z ADC w Xmega rozwiązało pojawienie się kolejnej wersji pdf-a z kolejną listą błędów z której wynikało "nie używać" i problem zniknął ;-) P.G.

Spróbuj użyć oversamplingu. Nie usunie to problemu, ale zamaskuje go.

A czy na piny TEGO SAMEGO PORTU, co ADC wchodzi jakiś sygnał cyfrowy, albo wychodzi jakiś?? Wiem, wiem, nie zmieniasz stanu pinów, ale może masz mimowszystko coś "włączone", jakiś PWM, czy coś na niepodłączonym pinie. Może na tym samym porcie działa JTAG i bruździ?? Generalnie, przy ADC trzeba uważać na cały port, na którym on siedzi... .

"Sebastian Bialy" snipped-for-privacy@poczta.onet.pl> schrieb

Jak to tylko? Tzn nie masz kondensatora na AVCC?

mw

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required