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

ATMEGA32 - Odczyt napięcia zasilania z przetwornika ADC - bascom

_clippo_ 29 Mar 2014 21:58 1704 4
  • #1 29 Mar 2014 21:58
    _clippo_
    Poziom 11  

    Witam

    Mam problem z moim układem. Przy pomiarze ADC w moim układzie wyskakuje mi cały czas wartość w okolicach 60 (zakres ADC do 1023). Obojętnie co podaję na wejście cały czas mam tą wartość. Jeżeli jednak dokonuję pomiaru miernikiem to mam odpowiednie napięcie, np 2,5V. Jednak co ciekawe, jeżeli podam te napięcie bezpośrednio na nóżkę w płytce prototypowej EvB (z tak samo zaprogramowanym mikrokontrolerem) napięcie wyświetla się prawidłowo - co świadczy że strona programowa jest ok. Sądzę że jest coś nie tak z kondensatorami jednak to tylko przypuszczenia, ponieważ jak bezpośrednio na układzie mierzę rezystor 4,7k to odczyt na omomierzu zaczyna się od 1k i wzrasta do 4,7k. Układ dodatkowo ma pomiar rezystancji potencjometru i ten pomiar działa prawidłowo (odczyt rezystancji steruje PWM do pozostałej części układu).
    Kondensator 100nF podłączyłem testowo, jednak to nic nie pomogło.

    Poniżej kod programu (wyfiltrowane niepotrzene linie):

    Kod: bascom
    Zaloguj się, aby zobaczyć kod


    Oraz schemat układu:
    ATMEGA32 - Odczyt napięcia zasilania z przetwornika ADC - bascom

    0 4
  • #2 30 Mar 2014 09:08
    MArSTER_1
    Poziom 18  

    W liniach

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    zrób tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Do wyprowadzenia Aref ATmegi dołącz kondensator 100 nF.

    0
  • #3 30 Mar 2014 10:30
    yokoon
    Poziom 28  

    Witam.
    Ja przetwornik ADC ustawiam następująco:

    Config Adc = Single , Prescaler = Auto , Reference = Avcc lub Internal

    0
  • #4 31 Mar 2014 11:43
    _clippo_
    Poziom 11  

    yokoon odczyt single nie wchodzi w grę bo do bierzącego sterowania PWM w zależności od odczytu ADC potrzebuję Free.
    Sposób MArSTER_1 też próbowałem jednak nic to nie dało.
    Jednak udało mi się problem wyeliminować. Okazało się, że jednoczesny odczyt z dwóch kanałów PWM w moim przypadku nie jest możliwy. Odczyt wartości B był skorelowany z odczytem W, który powinien być odczytem z innego kanału, jednak z prób wynika, że odczyty z obu kanałów jednocześnie nie działają. Problem rozwiązałem poprzez wyrzucenie odczytu PWM z głównej pętli i dorzucenie go do miejsc w których odczyt był wymagany. Dodatkowo zauważyłem, że mikrokontroler trzyma jeszcze jakąś wartość z odczytu wcześniejszej wartości, a dopiero drugi odczyt jest prawidłowy. Nie pomagało w tym przypadku dodanie zwłoki czasowej. W tym przypadku komendy zostały zdublowane ze zwłoką 5ms pomiędzy odczytami.
    Dzięki jednak za odpowiedzi.

    0
  • #5 31 Mar 2014 21:48
    yokoon
    Poziom 28  

    Z helpa:
    Funkcja GETADC() działa jedynie na mikrokontrolerach posiadających wbudowany przetwornik A/D (Analog to Digital Converter). Przetwornik musi być skonfigurowany do pracy w trybie SINGLE, gdyż funkcja inicjuje i czeka aż przetwornik wykona konwersję.


    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005

    0