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

[Rozwiązano] Niestabilne wartości ADC w Atmega przy napięciu 5,057V na ADC6 i ADC7

ZADRYK 22 Paź 2017 11:55 1962 21
  • #1 16771426
    ZADRYK
    Poziom 10  
    Witam,
    Vcc 5,057V na oscyloskopie prosta kreska bez zakłóceń, AVcc 5,057V na oscyloskopie prosta kreska bez zakłóceń, ARef 5,057V na oscyloskopie bez zakłóceń, wszystkie pomiary wykonane bezpośrednio na nóżkach uc. Na ADC6 podaję napięcie zasilania czyli 5,057V na oscyloskopie prosta kreska bez zakłóceń (sonda podłączona bezpośrednio do nóżki ADC6) wartość ADC powinna wynosić 1023 a waha się w przedziale od 1018 do 1023. Pomiar dokonywane też na ADC7 który nie ma kondensatora na wejściu ale nie było żadnej różnicy. Kwarc 16MHz.
    Wybór ADC dokonywany był też za pomocą ustawienia w rejestrze ADMUX bitów MUX0, MUS1, MUX2, pomiary dokonywane były też w przerwaniu ale w każdym przypadku wynik był zawsze taki sam.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W tej chwili jestem głupi i nie mam już pomysłu co można jeszcze zrobić jeśli ktoś spotkał się z podobnym problemem to proszę o podpowiedz czy jest coś nie tak z zasilaniem, połączeniem a może źle ustawiłem parametry ADC w programie. z góry dzięki za pomoc i pozdrawiam :)
    Niestabilne wartości ADC w Atmega przy napięciu 5,057V na ADC6 i ADC7
  • #2 16771447
    excray
    Poziom 41  
    Spróbuj tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 16771480
    ZADRYK
    Poziom 10  
    Niestety nadal skacze od 1018 do 1023, wydaje mi się że z mniejszą intensywnością.
  • #4 16771611
    Konto nie istnieje
    Konto nie istnieje  
  • #6 16771740
    ZADRYK
    Poziom 10  
    Reszta pinów portu A ustawiona jako wejście i podciągnięte do pull-up. Podałem napięcie z dzielnika napięcia o wartości 4,641V i wartość ADC skakała o około 10 dlatego mając sprawdzone napięcie bez zakłóceń podałem Vcc 5,057V aby sprawdzić co będzie i okazuje się że wartość ADC też skacze. Ok błąd jest poniżej 0,5% ale oglądając poradniki na necie gdzie mówią filtrować, filtrować i jeszcze raz filtrować napięcie zasilające a później budują układ pomiarowy na płytce stykowej i wartość ADC jest stabilna zmienia się ewentualnie o jeden. Ja mam płytkę PCB wszystko polutowane napięcie zasilające odfiltrowane, oscyloskop nie pokazuje żadnych pików, sygnał mierzony też nie ma żadnych pików a mimo to wartość ADC się zmienia o 10-12. Teraz to już nie wiem co mogę jeszcze filtrować, nie wiem co mogę jeszcze zrobić.
  • #7 16771830
    Konto nie istnieje
    Konto nie istnieje  
  • #8 16772400
    tmf
    VIP Zasłużony dla elektroda
    ZADRYK napisał:
    Reszta pinów portu A ustawiona jako wejście i podciągnięte do pull-up. Podałem napięcie z dzielnika napięcia o wartości 4,641V i wartość ADC skakała o około 10 dlatego mając sprawdzone napięcie bez zakłóceń podałem Vcc 5,057V aby sprawdzić co będzie i okazuje się że wartość ADC też skacze. Ok błąd jest poniżej 0,5% ale oglądając poradniki na necie gdzie mówią filtrować, filtrować i jeszcze raz filtrować napięcie zasilające a później budują układ pomiarowy na płytce stykowej i wartość ADC jest stabilna zmienia się ewentualnie o jeden. Ja mam płytkę PCB wszystko polutowane napięcie zasilające odfiltrowane, oscyloskop nie pokazuje żadnych pików, sygnał mierzony też nie ma żadnych pików a mimo to wartość ADC się zmienia o 10-12. Teraz to już nie wiem co mogę jeszcze filtrować, nie wiem co mogę jeszcze zrobić.


    No to wiesz co są warte poradniki z netu :)
    Przejrzyj notę procka - tam masz podane błędy i szumy ADC. Idealnie nigdy nie będzie. Jak koledzy sugerowali, można usypiać MCU na czas pomiaru, to powinno zmnieszyć szum ADC lub zastosować programowe uśrednianie kilku odczytów.
    BTW, jeśli oscyloskop pokazuje ci prostą kreskę to zmień sobie skalę. Jakbys nie filtrował to jakiś szum będzie.
  • #9 16772447
    ZADRYK
    Poziom 10  
    Pojedyncze minimalne szpilki się pojawiają ale je można pominąć. Co do poradników z neta się nie zgodzę nie można wszystkich szufladkować razem. Po kilkunastu godzinach czytania for i oglądania filmików znalazłem rozwiązanie :P. Człowiek jest skomplikowaną istotą i jak się na coś uprze to nie zmieni zdania do puki się nie sparzy i tak ja uparłem się że napięcie odniesienia dla ADC będzie AVcc. Przefiltrowałem je tak że nie miało zakłóceń ale dopiero jak trafiłem na filmik który pokazuje jak zachowuje się ADC zależnie od ustawionych parametrów okazało się że dla napięcia odniesienia 5V twórca filmu miał błąd rzędu 14-16 a mnie udało się osiągnąć 10-12 a dopiero po zmianie napięcia odniesienia na 2,56V wartość ADC zmienia się max o 1 :). Łatwiej i szybciej by było polutować dzielniki napięcia niż kombinować jak koń pod górę tylko dlatego że człowiek uparł się na te 5V hehehee. Dzieki wszystkim za pomoc pozdrawiam :).
  • #10 16775663
    Konto nie istnieje
    Konto nie istnieje  
  • #11 16775810
    Konto nie istnieje
    Konto nie istnieje  
  • #12 16776752
    Konto nie istnieje
    Konto nie istnieje  
  • #13 16777020
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16777050
    Konto nie istnieje
    Konto nie istnieje  
  • #15 16796734
    Jacek Rutkowski
    Poziom 28  
    ATMEGA128 przy zasilaniu 5V i zewnętrznym ADCRef 2,048V szumi o ok 8 jednostek przy braku usypiania. Dzięki nadpróbkowaniu 64 x i podziale przez 32 uzyskałem stabilność odczytu ok +-1mV.
  • #16 16797301
    Konto nie istnieje
    Konto nie istnieje  
  • #17 16797441
    Konto nie istnieje
    Konto nie istnieje  
  • #18 16797650
    Jacek Rutkowski
    Poziom 28  
    R-MIK napisał:
    Jacek Rutkowski napisał:
    Dzięki nadpróbkowaniu 64 x i podziale przez 32 uzyskałem

    Nie powinno byc dzielone przez 64? No chyba, ze na wejściu masz dzielnik 1/2.

    Zakres wejściowy ADC 0-2,048V.
    Dzięki nadpróbkowaniu zwiększyłem rozdzielczość do 11 bitów.
    ATMEL ma na to notę. Szybkość mi nie potrzebna była. Mierzyłem napięcie baterii R6/AA. Rzadko kiedy ADC w ATMegi wykorzystuję do pomiarów szybkozmiennych, jeśli potrzebuję szybko i dokładnie to np. MCP3201/MCP3208 itp. stosuję.
    Ale ja jestem amatorem i dla mnie 20zł na ADC dodatkowy nie stanowi żadnych problemów aby uzyskać dokładne pomiary.
  • #19 16797831
    Konto nie istnieje
    Konto nie istnieje  
  • #20 16798156
    Jacek Rutkowski
    Poziom 28  
    R-MIK napisał:
    Nie używałem nadpróbkowania i nie wiem czy warto sie w to bawić.
    Porównywałeś wynik pomiaru z innym przetwornikiem np 12-bit?
    Jakie dałeś źródło szumy i jak doprowadziłeś do badanego sygnału lub Vref?

    REF3120
    Niestabilne wartości ADC w Atmega przy napięciu 5,057V na ADC6 i ADC7
    Przy pomiarze SANWA 500 napięcie baterii i zmierzone przez ADC bez dzielników zgadzało się do ostatniej cyfry +-1 góra 2 jednostki.
  • #21 18681852
    inelar
    Poziom 10  
    Także spotkałem się z problemem niestabilnej pracy wejść analogowych na ATMEGA 328.

    Warunki testu: trzy wejścia połączone galwanicznie, na nich podawane jest stabilne napięcie 2,495V (potwierdzone miernikiem SANWA do 4-tego miejsca po przecinku). Napięcie Aref=4,9908V.
    Zatem połowa mierzonego napięcia powinna teoretycznie na wszystkich trzech wejściach dać wartość 512 (+/-1), ale w praktyce jest tak:

    Nr._ A0_A1_A2
    1 513 511 510
    2 511 511 510
    3 510 511 511
    4 511 513 512
    5 512 510 511
    6 510 511 512
    7 512 508 509
    8 512 509 512
    9 512 513 510
    10 511 511 510
    11 511 511 510
    12 509 511 512
    13 510 514 510
    14 512 511 511
    15 510 511 511
    16 510 510 511
    17 512 509 506
    18 510 511 513
    19 511 510 511
    20 510 511 511
    21 510 511 512
    22 511 511 511
    23 512 510 499
    24 512 509 511
    25 511 512 512
    26 511 511 512
    27 510 500 509
    28 510 510 510
    29 510 509 512
    30 505 511 510
    31 506 517 511
    32 512 512 510
    33 510 510 517
    34 510 510 512
    35 511 513 512
    36 511 511 511
    37 510 511 509
    38 510 510 509
    39 511 509 511
    40 511 511 512
    41 511 511 512
    42 513 509 511
    43 511 509 512

    Rekordem rozbieżności był pomiar nr 23, gdzie najmniejszy wynik to 499 a największy 512.
    Oznacza to 13 jednostek różnicy, a to w porównaniu do średniej daje 2,5% niedokładności.
    Owszem, zdarzały się powtarzalne pomiary - nr. 22, 28 i 36, ale to rzadkość.

    Teoretycznie 10 bitowy przetwornik zapewnia 0,1% rozdzielczości = "dokładności" pomiaru, zaś tu jest coś jakby przetwarzanie 5- bitowe i osiągane wówczas 3,13%.

    Zatem Atmel "ukradł" 5 bitów, bo tak można wnioskować z badań pomiarów. Wbudowany przetwornik nie jest wart swojego 10-bitowego miana, to jakaś pomyłka. Moim zdaniem nie nadaje się on do poważniejszych zastosowań.
  • #22 18682459
    tmf
    VIP Zasłużony dla elektroda
    inelar napisał:
    Teoretycznie 10 bitowy przetwornik zapewnia 0,1% rozdzielczości = "dokładności" pomiaru

    Rozdzielczość pomiaru, a dokładność pomiaru to dwie zupełnie różne rzeczy. Dopóki nie rozkminisz różnicy, będziesz się dziwił, że masz takie wyniki jakie masz.
    W nocie do M328 - str. 265 - tabela 28.8 - Absolute accuracy max 3,5 LSB, Integral non linearity - max 1,5 LSB, Offset error +/-3,5 LSB.
    inelar napisał:
    Zatem Atmel "ukradł" 5 bitów, bo tak można wnioskować z badań pomiarów.

    Raczej można wywnioskować, że powinieneś jeszcze poczytać o ADC, zanim wyciągniesz wnioski, które nie wynikają z przedstawionych danych.
    Do tych parametrów katalogowych dodaj błędy wynikiające z zasilania procka, zakłóceń wynikających z pracy układu cyfrowego. W wątku już wszystko o tyn zostało napisane.
REKLAMA