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

Atmega8 ADC Bascom - Niewłaściwe Odczyty Napięcia przez Dzielnik 47k/100k

Xenom 13 Sie 2012 22:17 3201 16
REKLAMA
  • #1 11205885
    Xenom
    Poziom 10  
    Witam

    Problem jest taki że nie wiem co zrobić. przystawiam do adc 11V (przez dzielnik: od strony masy 47k a od drugiej 100k) a na wyświetlaczu pokazuje mi 717. gdy przystawię do masy to pokazuje 623.
    AREF do masy przez 100nF
    AvCC +5V i przez 100nF do masy

    czytałem że ma pokazywać od 0 do 1023 i jak to zrobić ?? czy błąd mam w kodzie ?

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 11205981
    mickpr
    Poziom 39  
    Xenom napisał:
    ...przystawiam do adc 11V (przez dzielnik: od strony masy 47k a od drugiej 100k) a na wyświetlaczu pokazuje mi 717. gdy przystawię do masy to pokazuje 623.
    Xenom napisał:
    ..czytałem że ma pokazywać od 0 do 1023 i jak to zrobić ?? czy błąd mam w kodzie ?

    717 - pierwsza wartość jest ok. Ja z wyliczeń mam około 720 (3,517V na pinie).
    623 - druga wartość powinna być w zasadzie 0 (w obojętnie jakim dzielniku powinno dać 0). Dlaczego tak nie jest?
    Tego nie uda mi się wydedukować bez schematu.
    Narysuj schemat - http://www.digikey.com/schemeit
    Daj zrzut ekranu.
  • REKLAMA
  • #3 11206123
    Xenom
    Poziom 10  
    gdy nie mam podłączonego adc lub jest do masy, to na pinie jest 2,68V

    Atmega8 ADC Bascom - Niewłaściwe Odczyty Napięcia przez Dzielnik 47k/100k [/img]
  • #4 11206203
    mickpr
    Poziom 39  
    No i dlatego masz te 623.
    Dzielnik masz źle policzony.
    To nie jest proporcja 100/47 tylko 147/47 - stąd ten błąd (dla pierwszej wartości).
    Proporcja napięcia mniejszego jest odwrotna = 47/147 = ~0,32 --> (0.32*11V=3,52V --> (3,52*1024(wartosci ADC)/5V) --> ~720 (wartość z ADC).

    Co do drugiej wartości : Nie znam się na BASCOM-ie... ale czasem na tym pinie nie jest załączony pull-up (wewnętrzny)?
    https://www.elektroda.pl/rtvforum/topic549828.html

    A to się przyda:
    http://elportal.pl/ea/prog001.html
  • #5 11206307
    Xenom
    Poziom 10  
    a ten pull-up to po prostu przypisać do portu jedynki ??
  • REKLAMA
  • #7 11206463
    Xenom
    Poziom 10  
    poprawiłem układ o ten dzielnik. do kodu też dołożyłem te zera a wynik nic praktycznie się nie poprawił (jedynie o ten dzielnik)

    Kod: text
    Zaloguj się, aby zobaczyć kod


    kod obciety.
  • #8 11206465
    mickpr
    Poziom 39  
    Chyba tak w BASCOMie
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #9 11206474
    Xenom
    Poziom 10  
    tak się nie kompiluje

    jakieś pomysły jeszcze ?
  • #10 11206484
    mickpr
    Poziom 39  
    Jak to się nie kompiluje?
    Mi się kompiluje :)
    Specjalnie zainstalowałem BASCOM.
  • #11 11206490
    Xenom
    Poziom 10  
    racja, jednak się kompiluje ;) ale dalej nie działa poprawnie
  • #12 11206493
    mickpr
    Poziom 39  
    A możesz sprawdzić na innym pinie - może tego "upaliłeś".
  • #13 11206495
    Xenom
    Poziom 10  
    sprawdzałem
  • #14 11206502
    mickpr
    Poziom 39  
    Sprawdziłem przed chwilą na mojej ATMEGA32
    kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Zwieram do masy - 0
    Zwieram do VCC (przez rezystor 100ohm) - 1023 (około)
    Jedynie gdy zostawię pin odpięty od wszystkiego pomiar "lata" (normalne).
  • #15 11208706
    Xenom
    Poziom 10  
    wymieniłem procesor i zamieniłem kolejność kodu
    z:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    na:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    coś pomogło :) chyba zmiana kodu :) teraz chcę ten woltomierz podłączyć do czujnika temperatury w samochodzie. narazie wiem że gdy mam jakieś 6,6V to otwiera się termostat :)

    mam jeszcze problem po przerobieniu na volty wyświetla mi np. 345 a powinno 3.45

    stosuje:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    w3, x są single
  • #16 11210250
    Konto nie istnieje
    Poziom 1  
  • #17 11210284
    mickpr
    Poziom 39  
    emarcus napisał:
    Config Portc = Input ' ten wpis nie jest potrzebny - by default- port jest input
    DDRC = &B0000000 ' ten wpis jest to samo co wyżej (nie potrzebny)
    PORTC = 0 ' by default wszystkie piny portu mają stan niski (0), więc nie jest konieczne

    Pozwolę sobie nie zgodzić się z takim podejściem (nie z faktem).
    "Kiedy coś jest niepewne, jest pewne" (cytat z filmu Ronin)
    Lepiej, jeśli w kodzie jasno widać co jest jak ustawione,
    zamiast snucia domysłów.

    emarcus napisał:
    Raczej pomogła zmiana processora...

    Z tym się zgodzę. :) To najbardziej logiczne wytłumaczenie.
REKLAMA