Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega8] Przyczyna zepsutego ADC?

wmortal 20 Cze 2013 02:42 888 2
  • #1 20 Cze 2013 02:42
    wmortal
    Poziom 2  

    Witam,

    Dwa dni temu zakończyłem pierwszy etap swojego projektu - odczytywanie temperatury z czujnika lm35 i poziomu oświetlenia za pomocą fotorezystora (Jest tego więcej ale pominę dla uproszczenia. Tylko te 2 elementy korzystały z ADC).

    Schemat prosty, w internecie jest tego masa. Lm35 bezpośrednio podpięty na wejście analogowe Atmegi8, fotorezystor 1kOhm podobnie ale z wykorzystaniem dzielnika napięcia (z rezystrem 2,2kOhm). Filtrowanie zasilania ADC za pomocą kondensatora 100nF do masy. VREF przez 100nF do masy i przez dławik 10uH do VCC. Jutro postaram się wrzucić schemat.

    Układ działał dobrze, testowałem go przez ostatnie dwa upalne dni. Pomiary były zadowalająco stabilne i dokładne.

    Dzisiaj jednak pomiary z lm35 zaczęły "skakać" w granicach +-2 stopnie C. Zaniepokoiło mnie to więc zacząłem szukać przyczyny. Sprawdziłem pomiary z fotorezystora: te nadal były stabilne, ciężko ocenić czy dokładne bo nie miałem punktu odniesienia - uznałem więc, że są poprawne. Po kilku minutach pomiary z lm35 znacznie się pogorszyły, błąd sięgał +-20 stopni C, ale pomiary z fotorezystora dalej wydawały się być w porządku.

    Podpiąłem LMkę do innej nóżki ADC by sprawdzić czy przyczyną może być uszkodzony port. Od tej zmiany już nic nie działało jak trzeba. LMka oscylowała wokół niestworzonych wartości, a pomiar z fotorezystora zwyczajnie stanął na wartości minimalnej.

    Dodam, że w trakcie rozwoju tych wydarzeń nic nie zmieniałem na płytce (poza zmianą pinu do lm35) ani w kodzie. Zmierzyłem multimetrem napięcie wyjściowe czujnika: 270mV czyli tyle ile faktycznie powinno wyjść w tym upale. Do oscyloskopu niestety nie mam dostępu ale wina zdecydowanie leży po stronie mikrokontrolera. Jedyne co mi przychodzi do głowy to fakt, że w pewnym momencie na płytkę testową spadła kropla wody. Szczęśliwie jednak trafiła na niezagospodarowany obszar, z dala od uC.


    Będę wdzięczny za pomoc w rozwiązaniu tego problemu. Być może ta kropla wody wywołała jednak jakieś zwarcie, które uszkodziło port ADC? Jutro wymienię Atmegę8 na nową ale wolałbym wiedzieć w czym problem zanim ewentualnie zepsuję swój drugi mikrokontroler :)

    0 2
  • #2 20 Cze 2013 07:14
    Steryd3
    Poziom 32  

    A może to jakiś błąd w programie. Z doświadczenia wiem, że to najczęstsza przyczyna kłopotów. Czy program w AVR ciągle jest ten sam czy po drodze uległ on jakimś modyfikacjom? Jeżeli tak to wróć do wersji z okresu kiedy problem jeszcze nie występował. Bo sprawdzić wejście ADC mikrokontrolera możesz zawsze zadać jakieś napięcie na jego wejście i sprawdzić odczyt -np. za pomocą potencjometru.

    0
  • #3 20 Cze 2013 10:24
    Prepond
    Poziom 19  

    Ja jak miewam takie przypadki to winny jestem sam sobie... z mojego niechlujstwa zawsze uszkodzę mikro, albo to zwarcie zrobię, albo przesunę o jedna nóżkę na płytce testowej itp.

    Ale do czego zmierzam - uszkodzony mikro tak się zachowuje - pokazuje bzdury, da się go zaprogramować ale wskazywane wartości są wynikiem jego uszkodzenia

    0