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

[ATtiny44][C] - ADC nie działa przy zewnętrznym AREF

Futrzaczek 03 Gru 2020 14:13 528 3
REKLAMA
  • #1 19086702
    Futrzaczek
    VIP Zasłużony dla elektroda
    Witajcie,
    mam do zrobienia bardzo prosty woltomierz na ATtiny44. Zasilanie z baterii napięciem 3V, chcę wykorzystać napięcie referencyjne 1,25V.

    Taktowanie wewnętrznym oscylatorem RC 8MHz + BOD 1,8V.

    Układ połączeń nie jest skomplikowany:
    PA0 - ADC0 - wejście napięcia referencyjnego
    PA1 - załączenie napięcie referencyjnego (układ TS432BCX-RFG zasilany przez rezystor 15k)
    PA2 - ADC2 - wejście napięcia mierzonego (posiada rezystor pull-down)

    Fragmenty kodu testowego, odpowiedzialne za odczyt i konwersję:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Na innych wyprowadzeniach mam podłączony wyświetlacz LCD, ale jest obsługa jest już dobrze działająca, a do tego bardzo rozbudowana, dlatego nie ma potrzeby cytowania całości.

    Problem: w zmiennej adc mam wynik 1023 niezależnie od wartości napięcia na wejściu ADC2. Zmierzone napięcie zasilania wynosi 3,18V, na wejściu ADC0 1,22V, zaś na wejściu ADC2 0V - wynik przetwarzania wynosi 1023. Podając jakieś napięcie na ADC2, sytuacja nie zmienia się.

    Przestawiając ADMUX na wewnętrzną referencję 1,1V albo VCC, nie dokonując przy tym jakichkolwiek innych zmian w kodzie ani w układzie, działa prawidłowo.

    Próbowałem:
    - podać inne napięcie na ADC0 z zasilacza
    - użyć innego wejścia do pomiaru napięcia
    - zmieniać szybkość taktowania ADC
    - użyć trybu różnicowego
    - wymienić sam układ scalony na nowy
    - pewnie całą masę innych rzeczy, niekiedy mało sensownych ;)
    i nic. 1023 jak było, tak jest.

    Ktoś miał do czynienia z podobnym problemem?
  • REKLAMA
  • #2 19086834
    StaryVirus_e_Wiarus
    Poziom 21  
    Cześć
    Nota techniczna źródła referencyjnego zaleca trochę większy prąd katody. 15k jest stanowczo za duży. Zacznij od 1k i w dół. Zasilanie masz 3V. Prawo Ohma.
  • REKLAMA
  • #3 19086928
    excray
    Poziom 41  
    Uruchomiłeś zasilanie i niespełna mikrosekundę później wystartowałeś pomiar. Trochę mało czasu na ustabilizowanie się napięcia na układzie, który ma rozbudowaną strukturę z wzmacniaczem operacyjnym wewnątrz. Sam ADC też potrzebuje kilku uS na naładowanie kondensatora samplującego po ustawieniu kanału ADMUX.
  • #4 19087490
    Futrzaczek
    VIP Zasłużony dla elektroda
    StaryVirus_e_Wiarus napisał:
    trochę większy prąd katody.

    Nie po to wziąłem źródło potrzebujące małego prądu, aby pchać w nie ponad 1mA.

    (3V - 1,24V) / 15k = 117uA. Wystarczy w zupełności.

    excray napisał:
    Trochę mało czasu na ustabilizowanie się napięcia na układzie, który ma rozbudowaną strukturę z wzmacniaczem operacyjnym wewnątrz.

    Nie wyłączam go, więc następny pomiar (bo jest to w pętli wile(1)) byłby już poprawny.

    excray napisał:
    Sam ADC też potrzebuje kilku uS na naładowanie kondensatora samplującego po ustawieniu kanału ADMUX.

    To pokazywałby głupoty również na wewnętrznym napięciu referencyjnym.

    ---

    Problem rozwiązany.
    Otóż nikt (włącznie ze mną) nie spojrzał na koniec noty katalogowej ATtiny44.
    Wewnętrzne napięcie referencyjne ma od 1 do 1,2V.
    A zewnętrzne musi mieć od 2V do VCC.
    Podałem 1,1V z zasilacza - nie działa.
    Podałem już 1,3V - już działa. (podłączając poprzednim razem zasilacz też miałem koło 1,4V)
    Przy 2V oczywiście też działa.
    Muszę zatem zmienić źródło napięcia referencyjnego.

    Dziękuję za porady, poradziłem sobie sam.
REKLAMA