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

ATmega16 - Jak skalibrować ADC dla zakresu 1.25V do 3.5V?

klukjerzy 25 Lut 2012 19:13 1349 9
  • #1 10597981
    klukjerzy
    Poziom 10  
    Witam jestem początkujący w programowaniu dopiero się uczę mam pytanie jak ustawie w programie napięcie odniesienia avcc to jak na wejściu adc0 mam 5 wolt program wyświetla wartość 1023 jak mam 0v to wartość jest 0. Czy jest taka możliwość aby ustawić napięcie tak aby przy napięciu 1.25v na wejściu wartość licznika była 0 a przy np 3,5v wartość ta była 1023?
  • #2 10597998
    gaskoin
    Poziom 38  
    Samymi ustawieniami uC się tego nie da zrobić.
  • #3 10598116
    klukjerzy
    Poziom 10  
    A jakoś programowo da się?
  • #4 10598249
    gaskoin
    Poziom 38  
    Na samym przetworniku otrzymasz dane "normalnie" czyli Twoje 1.25V otrzymasz jako 256 a 3.5 jako 716 i te wartości możesz sobie przeskalować do czego tam chcesz, coś w stylu:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Można też sygnał, zanim wejdzie do przetwornika, potraktować wzmacniaczem operacyjnym i przeskalować sobie napięcia i poprzesuwać o offsety, tak, żeby z 1,25-3,5 otrzymać 0-5
  • #5 10598846
    klukjerzy
    Poziom 10  
    Też myślałem nad wzmacniaczem ale nie wiem jak go wysterować aby właśnie takie wartości otrzymać może kolega pomoże z tym wzmacniaczem?
  • #6 10598855
    aaadamw
    Poziom 16  
    A jeżeli uC i układ w którym będziesz mierzyć napięcie nie będą połączone masami, to można do masy uC podłączyć 1,25V z układu w którym mierzysz napięcie, a jako napięcie odniesienia 3,5V też z tego mierzonego układu. Wydaje mi sie, że powinno działać. Różnica potencjałów dla uC będize 2,25V.
  • #7 10599137
    klukjerzy
    Poziom 10  
    Układy będą połączone masami dokładnie chodzi mi o to. uC ma odczytywać położenie pływaka w zbiorniki paliwa problem w tym że pływak ma rezystancję w zakresie od 40 do 280Ω wpinając pływak jako dzielnik rezystancyjny nie mogę regulować napięcia 0-5v tylko np od 240mv do 1,43v a ja potrzebuję od 0-5v.
  • #8 10599827
    dondu
    Moderator na urlopie...
    50litrów / 1024 ≈ 0,05 litra/działkę

    Po co Ci taka dokładność?
    Przy ruszającym się w czasie jazdy pływaku - taka dokładność nic Ci nie da, bo będziesz "szum pomiarowy". Nie na darmo wskaźniki paliwa działają jak bardzo wolne żółwie.

    Ty potrzebujesz maks 0,5litra/działkę, czyli 100 działek ADC, a inaczej 7bitów.
    Czyli spokojnie 8 bitów z ADC załatwia Twój problem z podłączeniem dzielnika.
    Nie musisz nic przesuwać, a osiągniesz dokładność pomiaru rzędu 0,5 litra.
  • #9 10600196
    klukjerzy
    Poziom 10  
    To będzie zamontowane w samochodzie ciężarowym tam zbiornik ma 600l z adc odczytuję 8 bitów a uC robi 100 pomiarów w ciągu określonego czasu i wylicza średnią więc pomiar wychodzi stabilny. Tylko teraz potrzebuję regulację 0-5v aby odczytywać pełen zakres.
  • #10 10600692
    dondu
    Moderator na urlopie...
    klukjerzy napisał:
    To będzie zamontowane w samochodzie ciężarowym tam zbiornik ma 600l z adc odczytuję 8 bitów ...

    Wartość 1023, którą podajesz w pierwszym poście to 10 bitów - zdecyduj się.


    klukjerzy napisał:
    Tylko teraz potrzebuję regulację 0-5v aby odczytywać pełen zakres.

    Nie zrozumiałeś mnie, więc napisze może inaczej.

    Skoro masz 40-280Ω, to robisz dzielnik z rezystorem np. 330Ω i podłączasz (330Ω) do 5V, a czujnik do GND.

    Przyjmuję, że 280Ω oznacza pełny zbiornik, a 40Ω pusty.

    Liczymy skrajne napięcia na dzielniku (wejście pomiarowe ADC):
    1. jeżeli pływak daje 280Ω
    5V * 280Ω / (330Ω+280Ω) = 2,29V

    2. jeżeli pływak daje 40Ω
    5V * 40Ω / (330Ω+40Ω) = 0,54V

    Czyli spokojnie możesz ustawić ADC na wewnętrzne napięcie odniesienia 2,54V.
    Wtedy jedna działka ADC przy 8 bitach daje:

    2,54V / 256 ≈ 0,01V/działkę

    stąd zakres pomiarowy w działkach będzie następujący:
    max: 2,29V / 0,01V/działkę = 229 działki
    min: 0,54V / 0,01V/działkę = 54 działki

    Innymi słowy, przyjmując tylko 8 bitów pełny zbiornik to odczyt z ADC = 229
    pusty zbiornik to odczyt z ADC = 54

    rozdzielczość przy 8 bitach: 229-54 = 175
    600litrów / 175 = 3,42 litra/działkę ADC.

    Oczywiście pomiary możesz robić z 9 lub 10 bitów, ale z zastrzeżeniem, które opisałem wcześniej .

    Mam nadzieję, że się nie pomyliłem.
REKLAMA