Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[AVR] ADC. Jak skonfigurować pin? Przetwornik A/C.

01 Maj 2009 23:49 2810 21
  • Poziom 20  
    Witam

    Kiedy chce korzystać z pinu np PC0(ADC) jako przetwornika analogowo cyfrowego jak należy skonfigurować pin? Ma być wejściem? Ma być wewnętrznie podciągany do masy czy zasilania?

    Zauważyłem że ma to wpływ na pomiar ADC ale żadne rozwiązaie nie daje idealnych wyników. Dla napięć równych 0V uzyskuje wynik 60mV a napięcia około 1,2V są już dokładne
  • Poziom 34  
    Zostaw ten pin w spokoju. Po włączeniu zasilania piny są wejściami o wysokiej impedancji i tak ma zostać.
  • Poziom 32  
    Wydaje mi się że ustawia się jedynie rejestry przetwornika bez ustawiania DDRx.
  • Poziom 36  
    Petros napisał:
    Witam

    Kiedy chce korzystać z pinu np PC0(ADC) jako przetwornika analogowo cyfrowego jak należy skonfigurować pin? Ma być wejściem? Ma być wewnętrznie podciągany do masy czy zasilania?



    Code:

    ------
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'config ADC

    Start Adc

    Do
      W = Getadc(0)

      'twoj program
      .................
      .................

    loop


    to wszystko co potrzebujesz odnosnie ADC dla PC0

    Sygnal o napieciu 0V - VCC podlaczony do PC0
    Patrz przyklad:
    http://www.avrprojects.net/index.php?option=c...:ad-convertor&catid=34:avr-learning&Itemid=54

    e marcus
  • Poziom 38  
    A nieliniowość i błąd na poziomie +/-2LSB samego przetwornika kolega wogóle bierze pod uwagę?
  • Poziom 23  
    Tak się podepnę do tematu bo nie miałem z ADC w AVR do czynienia. Czy mogę użyć dwóch pinów (np PC0 i PC1) jednocześnie do pomiaru napięcia?
  • Poziom 25  
    A dał kolega filtr na wejściu przetwornika? Zakładam że napięcie zasilania jest dobrze odfiltrowane. Ja kiedyś budowałem termometr na AVR z LM35 z dokładnością 1st. Dla lm35 współczynnik przetwarzania wynosi 10mV/st i nic mi nie skakało. ;)

    Jeżeli chodzi o problem kolegi wilk125, nie możesz. :) AVRy maja jeden przetwornik (no chyba ze są jakieś wyjątki ;) ). Napięcie do przetworzenia kierowane jest do niego za pomocą multipleksera z różnych pinów procka.
  • Poziom 23  
    Rozumiem, że stosując szybkie przełączanie miedzy PC0 i PC1 uzyskam efekt pseudo równoległego pomiaru, zwłaszcza, że w projekcie który wymyśliłem obydwa mierzone napięcia są od siebie niezależne i wystarczy ze ich pomiaru dokonam co 0,01 s.
  • Poziom 25  
    oczywiście, należy tylko po przełączeniu multipleksera odczekać kilkaset us przez konwersją ADC. Taka praktyczna rada. ;) Chodzi o ustabilizowanie napięć w obwodach ADC :)
  • Użytkownik usunął konto  
  • Poziom 25  
    tak, AVCC dajesz tez VCC, ale dobrze jest to napięcie dodatkowo odfiltrować, np za pomocą filtru LC. Stosowanie filtru nie ma sensu tylko w przypadku ATmega8 - wynika to z błędu konstruktorów, ale sam przetwornik sprawuje się dobrze mimo tego. :)
    Jeżeli czegoś nie wiecie Panowie to odsyłam do noty katalogowej. Jest wszystko wyjaśnione.
    Pozdrawiam
  • Poziom 20  
    mama jeszcze takie pytanie...
    w nocie katalogowej piszą: "13 - 260 μs Conversion Time"
    13us odpowiada cześtotliwości poróbkowania 77kHz !! komuś udało sie tyle wycisnąć? mi udaje sie 15kHz przy 8 bit
  • Poziom 25  
    Prawdę mówiąc ja nie potrzebowałem szybkich przetwarzań - kilka na kilka sekund starczyło.

    W czym piszesz program? Może program nie nadążą pobierać przetworzone wartości? Masz ustawiony tryb tzw. samobieżny? Być może jednak masz za mała częstotliwość zegara, a być może złe nastawy preskalera częstotliwości zegara ADC?
  • VIP Zasłużony dla elektroda
    Petros napisał:
    mam atmege8 na 16 Mhz i w trybie Free Runing Mode i wynik wyrównany do lewej (odczytuje tylko ADCH 8 bitów) kiedy dałem około 20kHz przestał próbkować całkowicie


    Zapewniam Cię że nie przestał - tylko Twój program się nie wyrabiał.
  • Użytkownik usunął konto  
  • Poziom 33  
    Wydaje mi sie ze uzywanie filtru LC jest bez sensu, bo czysci wszystkie czestotliwosci poza f0.
  • Użytkownik usunął konto  
  • VIP Zasłużony dla elektroda
    g_06 napisał:
    r06ert napisał:
    tak, AVCC dajesz tez VCC, ale dobrze jest to napięcie dodatkowo odfiltrować, np za pomocą filtru LC.


    A ten filtr LC wygląd tak:

    [AVR] ADC. Jak skonfigurować pin? Przetwornik A/C.



    g_06 napisał:
    Bo u mnie jak podłącze zasilanie do avcc to procesor nawet nie ruszy... programator też go nie wykrywa..


    Jeśli powyższy filtr jest na zasilaniu to się nie dziw że procesor się nie zgłasza - cewka to "zwarcie" dla napięcia stałego.