logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8A - ADC pokazuje 1 przy zmasowaniu, różnice z Atmega8, uszkodzenie?

Ture11 18 Wrz 2013 22:51 1863 7
REKLAMA
  • #1 12752254
    Ture11
    Poziom 39  
    Witajcie.
    Mam do Was dwa małe pytanka.
    Pierwsze jest takie, że napisałem program do odczytu wartości ADC, i przy zmasowaniu nogi mierzonej, wartość ADC jest równa 1. Mikroprocesor to Atmega8A, umieszczona w płytce testowej ZL2AVR. Jeśli umieszczę tam Atmegę8 (bez A w nazwie), wartość przy zwarciu do masy jest równa 0, czyli w porządku.

    Pytanie moje - czy wartość ADC=1 jest defektem każdego mikroprocesora ATMEGA8A, czy mogła powstać na przykład poprzez podanie na ADC napięcia 5.1V bez rezystora (troszkę wyższe, niż dozwolone 5V zasilania). Czy w ten sposób da się uszkodzić ADC, by przekłamywał o 1? Każdy port ma tą samą wartość 1, więc multiplekser jest sprawny..

    Drugie, przy okazji pytanie - z tej samej serii mam dwie Atmegi8A, nowe. Wczoraj próbowałem je podmienić, by sprawdzić czy zadziała ADC, no i programator nie chcę się z nimi skomunikować... Jak często zdarza się Wam kupić uszkodzone mikroprocesory? Płytka ta sama, ZL2AVR, działa bez problemu z innymi, napięcia okay.

    Pozdrawiam.
  • REKLAMA
  • Pomocny post
    #2 12752797
    BlueDraco
    Specjalista - Mikrokontrolery
    Wartość 1 nie jest żadnym defektem. ADC może "mylić się" o kilka wartości LSB.
  • REKLAMA
  • Pomocny post
    #3 12752908
    Fredy
    Poziom 27  
    Zwarłeś wejście bezpośrednio do nogi procesora AGND?
    I jeszcze jedno - jeśli napięcie referencyjne wynosi 2.5V to wartość 1 na ADC to tylko 0,0025V !!!!
  • REKLAMA
  • Pomocny post
    #4 12752982
    tmf
    VIP Zasłużony dla elektroda
    Jak pisze kolega BlueDraco, jest coś takiego jak offset ADC. Warto zajrzeć do noty procesora, aby sprawdzić jakie są rzeczywiste parametry ADC.
  • REKLAMA
  • Pomocny post
    #5 12753214
    Brutus_gsm
    Poziom 25  
    A teraz odnośnie drugiego pytania. Mi osobiście nie udało się nigdy kupić uszkodzonego mikrokontrolera. Problemy z komunikacją mogą wynikać z fusebitów (fabrycznie ustawiony CKDIV).
  • #6 12753709
    Ture11
    Poziom 39  
    Witam.
    Dziękuję bardzo za odpowiedzi.
    Wartość 1 w ADC przy napięciu odniesienia 5V to wartość ~0.0049V (bo przez tyle mnożę). To nie jest duża wartość, ale w moim zamyśle było mierzenie prądu płynącego przez opornik 3OHM, więc przekłamania są rzędu 1mA, jeśli tylko ta wartość ADC jest zawsze o 1 większa, a nie tylko przy masie. Przyznam, że nie przeszkadza mi to zbytnio, ale utrzymanie stałego prądu diody LED pobierającej 56mA było trudne (skoki prądu od 53mA do 57mA). W szczegóły nie będę wchodził, ale podam, że kable pomiarowe były ekranowane, dioda była sterowana przez PWM, a pomiar spadku napięcia był przez układ całkujący. Co ciekawe, napięcie za rezystorem było bardziej stabilne, niż wejściowe (przed rezystorem). Próba zwarcia ADC do masy dała mi do zrozumienia, że układ ma duży błąd, ale myślałem, że może sam go uszkodziłem.

    Jest jeszcze jedna ciekawostka - kompensacja temperaturowa, tak to nazwijmy - miewam głupie pomysły, więc podgrzałem Atmegę zapalniczką - wartość ADC na ciepłej atmedze wyniosła 0 (Eureka!). Po odpięciu od masy pomiary działały normalnie, czyli ADC nie przegrzał się :-) Oczywiście, po ostygnięciu wartość ADC znów 1...
  • Pomocny post
    #7 12754181
    tmf
    VIP Zasłużony dla elektroda
    ADC ma co najmniej dwa główne rodzaje błędu - błąd offsetu, o którym się przekonałeś, ale także błąd wzmocnienia (gain error). Dodatkowo do tego dochodzą błędy nieliniowości i szumy. Sprawdź w nocie jakie ADC z ATMega8 ma wielkości tych błędów. Z pewnością nie uda ci się dokładny pomiar z precyzją 1 LSB, może uda ci się kilka, kilkanaście LSB. Rozwiązanem jest kondycjonowanie sygnału przed pomiarem - możesz w tym celu np. sygnał wzmocnić. Oczywiście wzmacniacz wprowadza swoje błędy, więc jeśli chcesz naprawdę dokładny pomiar układ staje się niebanalny. Do tego weź pod uwagę źródło referencyjne -jeśli masz jako referencję Vcc to nie spodziewaj się niczego nadzwyczajnego, zakładając nawet, że nic nie generuje zakłóceń i zmiennego obciążenia dla stabilizatora (co jest w każdym realnym układzie założeniem błędnym) sam stabilizator daje ci np. 5V +/-5%. Wiele błędów można łatwo kompensować, nad eliminacją niektórych trzeba się zastanowić.
  • #8 12754596
    Ture11
    Poziom 39  
    tmf napisał:
    Do tego weź pod uwagę źródło referencyjne -jeśli masz jako referencję Vcc to nie spodziewaj się niczego nadzwyczajnego, zakładając nawet, że nic nie generuje zakłóceń i zmiennego obciążenia dla stabilizatora (co jest w każdym realnym układzie założeniem błędnym) sam stabilizator daje ci np. 5V +/-5%.


    No fakt, zauważyłem, że to jest duża przeszkoda w stabilności pomiarów, tym bardziej, że zmierzyłem napięcie VCC na płytce testowej - wynosiło 4.95V, i dopiero po obliczeniu wartości (4.95/1023) wynikADC zaczynał być podobny do wyniku z multimetru.

    Z drugiej strony, temat nie był o dokładności pomiarów, bo na tym mi nie zależy. Zależało mi na tym, by ADC po zwarciu dwóch kanałów do masy pokazał różnicę równą 0 - by pomiar prądu wskazywał także na 0mA. Tymczasem dostałem wynik -1mA. Rozumiem, że jest to przeszkoda być może nie do przeskoczenia na wewnętrznym ADC.
    Nie rozumiem tylko, dlaczego Atmega8 (bez A) pokazywała wynik równy 0, ale chyba muszę zainwestować w nową Atmegę8A. Może i tamta miała większy defekt firmowy (skoro z tej samej serii dwie pozostałe w ogóle nie działały...)

    Pozdrawiam i temat chyba do zamknięcia...
REKLAMA