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

[ATmega8] [ATmega8][C] - Zakłócenia przy pomiarze z dwóch kanałów ADC

MaX.J 29 Lip 2016 17:42 1416 17
  • #1 15837503
    MaX.J
    Poziom 12  
    Witam,

    Przy pomiarze tylko jednego kanału jest ok. Nie przekłamuje wartości, wynik poprawnie wyświetlany na LCD.
    Jeżeli chce zmierzyć z 2 kanałów, zaczynają się cyrki. Jeden kanał przekłamuje wskazania drugiego. Jednego zewrę do masy, maxymalny wynik na drugim to polowa zakresu, zewrę do VREF, na końcówce pomiarowej wynik minimalny to polowa zakresu. Kombinowałem z wprowadzeniem opóźnień pomiędzy pomiarami, jednak nic to nie dało.
    ATmega podłączona wg. p.Kardasia(minimalne podłączenie z ADC), taktowana zewnętrznym kwarcem 16MHz, calość polutowana na płytce uniwersalnej. Końcówki pomiarowe jak i LCD na płytce stykowej.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 15837515
    Konto nie istnieje
    Konto nie istnieje  
  • #3 15837666
    MaX.J
    Poziom 12  
    Podłączenie się nie zmienia. Usuwam tylko jedna linijkę w której robię pomiar z 2 kanału.
  • #4 15837673
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15837682
    MaX.J
    Poziom 12  
    Zasilacz stabilizowany daje ciągle 5V. AREF ma filtrowanie przez kondensator 100nF i cewkę 0,1uH.
  • #6 15837687
    Konto nie istnieje
    Konto nie istnieje  
  • #7 15837719
    excray
    Poziom 41  
    W funkcji pomiar masz ADMUX |=.. co powoduje, że wszystko co tam wrzucisz zawsze się dodaje. Nic nie zostaje wyłączone. A przecież jak zmieniasz kanał, to musisz wyłączyć poprzednio używany. Zmień na ADMUX =
  • #8 15837794
    MaX.J
    Poziom 12  
    excray napisał:
    W funkcji pomiar masz ADMUX |=.. co powoduje, że wszystko co tam wrzucisz zawsze się dodaje. Nic nie zostaje wyłączone. A przecież jak zmieniasz kanał, to musisz wyłączyć poprzednio używany. Zmień na ADMUX =

    Po zmianie w kanale 0 pomiar wychodzi w pełnym wymiarze. Na kanale 2 tylko do polowy zakresu(na drugim potencjometrze). Przy użyciu tego samego potencjometru pomiary są ok. Jeżeli na 0 kanale zmniejszę napięcie to i na 2 odczyt się zmniejszy.
    Ogólnie pomiary bardzo skaczą. Przy jednym kanale pomiar jest stały. Na innym zasilaczu to samo. Tak samo przy zasilaniu ze stabilizatora.
  • #10 15837857
    excray
    Poziom 41  
    MaX.J napisał:
    Zasilacz stabilizowany daje ciągle 5V. AREF ma filtrowanie przez kondensator 100nF i cewkę 0,1uH.

    Coś namieszałeś. Do AREF poza kondensatorem nic więcej nie podpinamy.
  • #11 15837907
    MaX.J
    Poziom 12  
    Zewnętrzne napięcie referencyjne. Przy wewnętrznym dajemy tylko kondensator.
  • Pomocny post
    #12 15837995
    excray
    Poziom 41  
    Do AREF zbliżonego do Vcc stosujemy odpowiedni tryb w ADMUX. Takie podłączenie jakie zastosowałeś jest nie wskazane.
  • #13 15838330
    Konto nie istnieje
    Konto nie istnieje  
  • #14 15838531
    Konto nie istnieje
    Konto nie istnieje  
  • #15 15838562
    tronics
    Poziom 38  
    @Albert B.
    Cytat:

    Whenever the input MUX setting or reference voltage selection is modified, it is recommended to discard the first conversion result
    When switching to a differential channel (with gain settings), the first conversion result may have a poor accuracy due to the required settling time for the automatic offset cancellation circuitry. Thus it is better to discard the first sample result.

    Co prawda zalecane jest odrzucenie pierwszego wyniku po zmianie kanału/ustawień multipleksera , a nie kilku, co nie zmienia faktu, że w tym przypadku kolega Piotrus_999 nie napisał nic szkodliwego ani wyssanego z palca. FYI zacytowany fragment pochodzi z AVR126
  • #16 15838649
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #17 15838721
    jez2000
    Poziom 9  
    Spróbuj zwiększyć preskaler ADC.
  • #18 15838896
    MaX.J
    Poziom 12  
    Pomogła zmiana preskalera. Dodatkowo AREF podłączyłem kondensatorem 100nF, AVCC jest filtrowane przez cewkę i kondensator. Pomiary są stałe.

    Poniżej finalna funkcja i inicjalizacja pomiarów.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA