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

[amtmega16][winavr] pływające odcztyty ADC

kiuba 13 Cze 2010 13:28 1214 5
  • #1 8185376
    kiuba
    Poziom 10  
    Cześć wszystkim!
    Otóż pierwszy raz mam taki problem z odczytem napięcia...

    Po uruchomieniu czegoś takiego:
    while(1){
    ADC_set_channel(2);
    ADC_start_convert();
    if(ADC_is_complete())voltage=(ADC_convert_10bit(2));
    
    LCD_GoTo(0,0);
    LCD_writeU16(voltage);
    
    delayms(30);
    }
    

    Wyświetlane napięcie pływa w zakresie 100%X...90%X,
    gdzie X to poprawna wartość odczytu.
    [amtmega16][winavr] pływające odcztyty ADC

    Pomiar miernikiem mówi, że odczytywane napięcie jest stabilne jak skała,
    napięcie referencyjne również (używam ADC_REFERENCE_AVCC).

    Zmiana prescalera w zakresach PRESCALE_DIV2...ADC_PRESCALE_DIV128
    nic nie zmienia w kwestii głębokości tętnień.

    Co ciekawe zmiana ów prescalera bądź wartości delaya w pętli zmienia częstotliwość tętnień.
    Wygląda więc to na jakąś interferencję - tak jakby zaniżone wartosci przypadały na określone cykle pracy procesora...

    Wiecie co może być przyczyną? ;)
    Ja już powoli wymiękam :|
  • #2 8185427
    AVRowiec
    Poziom 18  
    Uśrednij pomiar z większej ilości próbek (przy 128 wzór bardzo się upraszcza...)
  • #3 8185444
    kiuba
    Poziom 10  
    Nie zdaje to egzaminu.
    Odczytywaną wartością sterowany jest timerowy PWM.
    Przy uśrednianiu spada czas reakcji, a ze względu na głębokość tętnień stabilny odczyt jest dopiero przy braniu średniej z powiedzmy 1000 próbek.

    Chciałbym jednak poznać i usunąć przyczynę ;)
  • Pomocny post
    #4 8185506
    hotdog
    Poziom 26  
    No avry mają takie coś jak pomiar adc w uśpieniu, żeby zmniejszyć poziom zakłóceń.

    pozatym masz filtr(dławik + kondensator) na AVCC?

    To że miernik pokazuje stabilne napięcie nie znaczy że ono takie jest. Miernik ma jakiś tam czas próbkowania i przetwornik (zapewne podwójnie całkujący) uśrednia wyniki. Np jak podasz sygnał o częstotliwości 1kHz, wypełnieniu prostokątnym i poziomach ttl, to na wyświetlaczu otrzymasz wynik równy 5V*X, gdzie X to wypełnienie sygnału (0-1). Czyli jak masz wypełnienie 50% to otrzymasz coś koło 2.5V.

    Żeby sprawdzić takie coś musiał byś dysponować oscyloskopem. Wtedy możesz napisać że jest napięcie stabilne.

    Reasumując albo to napięcie rzeczywiście pływa, albo sam avr się zakłóca (wtedy możesz go uśpić na czas pomiaru). Chyba że napięcie referencyjne pływa. Bez oscyloskopu ciężko takie rzeczy badać.

    Pozdrawiam
  • #5 8185587
    kiuba
    Poziom 10  
    No dobra, byłem leniwym niedowiarkiem ;)
    Myślałem, że coś takiego zostanie wykazane przez miernik, ale grubo się myliłem.
    Oscyloskop pokazał tętnienia 10% na własnej roboty małym zasilaczu - podobne do tych co narysowałem, o częstotliwości około 75Hz, niezależne od tego czy podłączymy układ elektroniczny czy nie.
    Nie wiem czemu akurat taka częstotliwość - może stabilizator się wzbudza.
    Może też trafo zasilacza jest za małe... bo tętnienia pogłębiają się przy wzroście obciążenia...

    Tak czy siak problem rozwiązany, dzięki :)
  • #6 8186676
    janbernat
    Poziom 38  
    "No dobra, byłem leniwym niedowiarkiem"
    Nie, byłeś leniwym "wierzącym".
    Jak czegoś jesteś pewien- to należy to sprawdzić.
REKLAMA