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

Atmega 8 - Nieprawidłowy pomiar napięcia ADC przy zmianie z 12V na 9V

MICHAŁ6201 18 Sty 2014 17:57 5007 22
REKLAMA
  • #1 13191269
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Witam

    Zrobiłem sobie prosty woltomierz na Atmega 8, taktowane wewnętrzne 1MHz.

    Pomiar napięcie na ADC0, dzielnik rezystancyjny zrobiłem na precyzyjnym potencjometrze 100K.

    Problem polega na tym, iż oszukuje ten woltomierz przy pomiarze napięcia. Np. dołączam napięcie stabilizowane 12V i ustawiam potencjometrem precyzyjnym taką samą wartość na LCD. Następnie podłączam 9V stabilizowane do pomiaru i na LCD wartość mierzonego napięcia to 9,44V.

    Dlaczego tak się dzieje?
    Kod znalazłem gdzieś na necie.

    W załączeniu wsad:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13191664
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Do czego masz podłączone AREF?
    Skąd mamy wiedzieć jaki dzielnik masz na wejściu i jakie napięcie referencyjne.
    Pokaż schemat.
  • REKLAMA
  • #4 13191866
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Dzielnik mam zrobiony z potencjometru precyzyjnego 100Kohm. AREF podłączone przez kondensator ceramiczny 100nF do masy.

    Tu jest schemat:
    Załączniki:
    • Atmega 8 - Nieprawidłowy pomiar napięcia ADC przy zmianie z 12V na 9V SCHEM.png (26.71 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 13191991
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Podajesz na ADC0 napięcie większe niż 5V ?????
    Tragedia. Poczytaj datasheet.
    Prawdopodobnie upalisz sobie (jeśli jeszcze tego nie zrobiłeś) ADC.
    Wiesz co to "napięcie referencyjne"?
  • REKLAMA
  • #6 13192009
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Dać opornik np 10Kohm między zasilanie a nogę potencjometru, tak żeby nie była podpięta bezpośrednio do mierzonego napięcia?

    Teraz zmierzyłem napięcie na ADC0 i wynosi 1,57V. Napięcie zasilania czyli to mierzone nie przekroczy 15V, a dzielnik zrobiony jest z potencjometru 100Kohm, ale dam jeszcze opornik między napięcie mierzone a nogę potencjometru,tylko czy to wyeliminuje błąd w pomiarze napięć?
    Załączniki:
    • Atmega 8 - Nieprawidłowy pomiar napięcia ADC przy zmianie z 12V na 9V SCHEMA.png (55.93 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 13192048
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Teraz oblicz sobie jakie napięcie będzie na ADC0 w maksymalnym i minimalnym ustawieniu potencjometru (bo z pewnością będzie nadal złe w maksymalnym) ... a potem popraw wartość tego rezystora.

    Podałeś:
    MICHAŁ6201 napisał:
    Reference = Avcc
    więc maksymalne napięcie na ADC0 może wynieść (w przybliżeniu) 5V.
    Dzielnikiem (rezystor/potencjometr)musisz zmienić napięcie które masz na wejściu stablizatora (np. 12V) na owe 5V - aby zachować pełną skalę działania ADC.
    W przypadku 10k na potencjometrze odłoży się 12*100/110 V =około 10,9V.

    Rezystor który dodałeś (ale o odpowiedniej wartości) powinien zabezpieczać pin ADC0 przed wyższym napięciem - jeśli podkręcisz potencjometr na maks.
  • #8 13192096
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Zakładając że napięcie mierzone będzie 12V, to w jednym ze skrajnych położeń będzie 12V, a w drugim skrajnym 10,99V (mierzone miernikiem)
    Ale ten potencjometr służy tylko do kalibracji, a nie do kręcenia nim do skrajnych położeń.

    Tylko powiedz mi, co jest powodem błędów w pomiarze. Jak ustawię dla 12Vodpowiednią wartość wyświetlaną na LCD, to jak chcę zmierzyć 9V, to na LCD podaje 9,44V.
  • #9 13192105
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    MICHAŁ6201 napisał:
    Zakładając że napięcie mierzone będzie 12V, to w jednym ze skrajnych położeń będzie 12V, a w drugim skrajnym 10,99V (mierzone miernikiem)
    Na pewno? A nie 0V i 10,9?
  • #10 13192111
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Masz rację. Pokręciło mi się:)
    Może ten wsad jest jakiś nieudany?
  • #11 13192135
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Myślę, że wiesz co masz zrobić.
    Nie jestem pewny - czy nie upaliłeś sobie ADC0.

    Zerknij na http://mikrokontrolery.blogspot.com/2011/03/avr-adc-podlaczenie.html - to się wyjaśni wszystko.

    W twoim programie masz instrukcję :
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ona dokonuje przeliczenia wartości odczytanej z ADC - być może inaczej - niż sobie to zakładałeś.
    Wstaw poprawny dzielnik.
  • #12 13192503
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Tylko jaki ten dzielnik ma być i z jakiego to wzoru obliczyć?
    Ten kod znalazłem w necie. Tam były dwie wartości podane tego podzielnika, dla napięć do 5V i do 30V.

    Przecież aż tak dużej rozbieżności nie ma w mierzonym zakresie napięć, w sumie między 9V a 15V, i jak na zadanym napięciu dokonam kalibraji, to na innym jest różnica w pomiarze około 0,5V. To duży błąd.
  • #14 13192651
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    MICHAŁ6201 napisał:
    Pomiar napięcie na ADC0, dzielnik rezystancyjny zrobiłem na precyzyjnym potencjometrze 100K.

    W jakim celu potencjometr precyzyjny?
    W jaki celu w ogóle chcesz bardzo dokładne pomiary napięcia zasilania wykonywać?
    Do czego ma służyć ten projekt?

    Ustawiasz tak dzielnik za pomocą rezystorów (potencjometr jest zbędny), by dla 15V mieć na wejściu ADC 5V lub nieco mniej. Reszta to kwestia programu i ewentualnej programowej korekty wyniku na bazie porównania do pomiarów wzorcowym multimetrem.
  • #15 13192760
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Źle się wyraziłem, nie chodziło mi o dzielnik, tylko o tą wartość 34,1.

    Po to potencjometr precyzyjny, żeby dokładnie ustawić sobie mierzone napięcie bez zbędnych kombinacji programowych, bo aż taki zaawansowany programista to ja nie jestem, nawet elektronikiem nie jestem, tylko samoukiem:)

    Kod woltomierza znalazłem na necie. To jest część większego mojego projektu do samochodu, więc aż taka dokładność mi nie jest potrzebna, ale uważam za niedopuszczalne błędy w pomiarze rzędu około 0,5V

    Jeszcze jedną rzecz teraz wyłapałem, a mianowicie, ten dzielnik odłączam podczas uśpienia układu tranzystorem od masy, aby układ pobierał jak najmniej prądu, tylko że jak procek odłączy potencjometr od masy, to wzrasta napięcie na ADC0 i może to uszkodziło ADC0, jutro podmienię procka i zobaczę czy też będą takie błędy w pomiarze.
  • #16 13193054
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    MICHAŁ6201 napisał:
    Po to potencjometr precyzyjny, żeby dokładnie ustawić sobie mierzone napięcie bez zbędnych kombinacji programowych, bo aż taki zaawansowany programista to ja nie jestem, nawet elektronikiem nie jestem, tylko samoukiem:)

    Ja też nim byłem, a dopiero później dyplom zrobiłem. Jednakże ta kalibracja, której się boisz, to prosta sprawa wynikająca z matematyki, a konkretnie proporcji. Można oczywiście kalibrować bardzo precyzyjnie, ale Tobie nawet i bez kalibracji pomiar wyjdzie właściwy by podjąć decyzję, że napięcie zanika ... gdybam sobie, ponieważ nie odpowiedziałeś na pytanie:

    dondu napisał:
    Do czego ma służyć ten projekt?




    MICHAŁ6201 napisał:
    Jeszcze jedną rzecz teraz wyłapałem, a mianowicie, ten dzielnik odłączam podczas uśpienia układu tranzystorem od masy, aby układ pobierał jak najmniej prądu, tylko że jak procek odłączy potencjometr od masy, to wzrasta napięcie na ADC0 i może to uszkodziło ADC0, ...

    No to zrobiłeś sobie problem.
    Ale istotne jest to, dlaczego pokazujesz nam inny schemat niż jest faktycznie?
  • #17 13193156
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Załączam poprawiony schemat. Tak jak pisałem, ten woltomierz to część większego projektu, dlatego nie załączałem oryginalnego schematu, tylko zrobiłem wycinek tego co jest tu teraz najważniejsze, tak aby wszystko było jasne.
    Tu zamieszczam poprawiony schemat z tranzystorem:

    Tutaj chodzi tylko o pomiar napięcia w samochodzie i nawet nie musi być to dokładność do 2 miejsc po przecinku.

    Już chyba znalazłem winowajcę. Po wyeliminowaniu diody D1, oraz tranzystora załączającego dzielnik, pomiar napięcia jest OK. Natomiast jeśli zostawię diodę D1, to woltomierz przekłamuje wynik, nawet jeśli nie ma tranzystora.
    Dlaczego tak się dzieje?

    Tu jest najnowszy wsad woltomierza:
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • Atmega 8 - Nieprawidłowy pomiar napięcia ADC przy zmianie z 12V na 9V SCHEMAT.png (28.42 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #18 13193261
    bobeer
    Poziom 28  
    Posty: 1497
    Pomógł: 57
    Ocena: 642
    MICHAŁ6201 napisał:
    Już chyba znalazłem winowajcę. Po wyeliminowaniu diody D1, oraz tranzystora załączającego dzielnik, pomiar napięcia jest OK. Natomiast jeśli zostawię diodę D1, to woltomierz przekłamuje wynik, nawet jeśli nie ma tranzystora.


    A jak sobie inaczej wyobrażałeś skoro napięcie do pomiaru wyciągasz zza tej diody, której spadek napięcia zależy raz od temperatury, a dwa od prądu jaki ciągnie reszta elektroniki ?

    Dobrze Ci koledzy radzą żebyś wywalił ten potencjometr. Nie rób dziadostwa, tylko wstaw zwykły dzielnik na rezystorach obliczony na maksymalne napięcie dla adc może być 1/10, będziesz miał wtedy zakres 0-25V. Resztę sobie dopasujesz w programie.
    Wracając do odłączania dzielnika od masy w celu oszczędzania energii, to użyj tranzystora mosfet (oczywiście w układzie ze źródłem podłączonym do masy, a nie wtórnik emiterowy jak na tym wesołym schemacie). Chociaż w tym przypadku to wydaje się bezcelowe. Używając dzielnika 100k/10k uzyskujesz tak mały pobór prądu przez dzielnik, że prąd marnowany na stabilizatorze jest 10x większy.
    I nie martw się, że podasz 12V na wejście procesora, przez odpowiednio duży rezystor, możesz podać nawet 50, ale najlepiej użyć dodatkowej diody żeby nie stresować procesora ;)
  • #19 13193333
    krru
    Poziom 33  
    Posty: 1819
    Pomógł: 230
    Ocena: 214
    Obiawiam się o ten układ oszczędzania prądu - przecież jeśli odetniemy dzielnik od masy na wejściu będzie chciało się pojawić się pełne napięcie zasilania. Oczywiście przez spory rezystor, więc raczej niczego nie zniszczy, ale to napięcie przez diody zabezpieczające wejścia pójdzie na linie zasilające i układ dalej będzie ciągnął prąd z tego wejścia, praktycznie taki sam jak w czasie pracy.

    I jeszcze w sprawię błednych wyników - dioda i tranzystor zmieniają zależność napięcia mierzonego od napięcia na wejściu. Nie będzie ona taka prosta jak zakłada twój program,
    V = ADC * współczynnik.
    Tranzystor bipolarny posiada coś co się nazywa napięcie nasycenia, a dioda ma spadek napięcia w kierunku przewodzenia. Jeśli chcesz użyć tych elementów (jak już koledzy wcześniej wspomnieli wyłączanie dzielnika nie ma większego sensu w takim układzie) to musisz uwzględnić odpowiednią zależność w programie, bo inaczej będzie właśnie taki efekt - po skalibrowaniu układu w jednym punkcie w innych punktach masz rozjazd.

    Będziesz potrzebował zależności typu

    V = ((ADC - Usat) * współczynnik.) + Uf

    Gdzie Usat - napięcie nasycenia tranzystora a Uf - spadek napięcia na diodzie.

    Tak się w ogole zastanawiam, skoro potrzebujesz pomiar nie od zera, a od 9 V, czy nie warto by wprowadzić większego, stałego spadku napięcia mierzonego - np. dioda zenera na wejściu.
  • REKLAMA
  • #20 13193380
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 424
    Witam
    Ten tranzystor jest bez sensu, to on jest źródłem błędu.
    Po co w aucie "oszczędzać" prąd ?
    Gdyby policzyć wszystkie świecące kontrolki to przekroczysz pobór 1A, jeździsz na światłach to koło 10A, nawet jak zrobisz normalny dzielnik to pobór prądu będzie pomijalny z całą resztą.
    W aucie masz pełno punktów w których zasilanie pojawia się po włączeniu kluczyka więc odcinanie zasilania dzielnika jest bez sensu.
    I żadnych diod zenera w szereg z dzielnikiem to jest głupi pomysł, to się raczej nadaje na czujnik temperatury a nie na element dzielnika.
    Piotr
  • #21 13193499
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Ok, wywalę ten tranzystor. Macie rację.
    Odłączanie tego dzielnika zrobiłem dlatego, że to jest zasilane cały czas z akumulatora, a nie po stacyjce, dlatego chciałem oszczędzić pobór prądu przez ten dzielnik.

    Co do diody, to i tak skorygowałem tą różnicę spadku napięcia na niej i ustawiłem napięcie odczytywane takie samo jak przed diodą.

    Usunąłem tranzystor, niestety nadal oszukuje pomiar. Omijając diodę D1, pomiar jest prawidłowy przy każdym napięciu.

    Proszę, pomóżcie mi dopisać do tego ostatniego wsadu korektę, tak aby pomiar napięcia korygowany był o spadek napięcia na tej diodzie.

    Spadek napięcia na tej diodzie to 0,7 - 0,8V (mierzone multimetrem).

    Już poradziłem sobie, Utworzyłem dodatkowo dwie zmienne, przy czym jedna z nich to wartość 0,8 czyli spadek napięcia na diodzie. I działa teraz prawidłowo:)

    Oto kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #22 13194560
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    MICHAŁ6201 napisał:
    Tutaj chodzi tylko o pomiar napięcia w samochodzie i nawet nie musi być to dokładność do 2 miejsc po przecinku.
    ...
    Spadek napięcia na tej diodzie to 0,7 - 0,8V (mierzone)

    No widzisz - dlatego zastosowanie potencjometru precyzyjnego jest całkowicie zbędne, a w środowisku samochodu wręcz niewskazane (drgania, itp). Dlatego wystarczy dzielnik na rezystorach, tak jak pisałem powyżej, a reszta to program którego się bałeś a jednak napisałeś :) (nie sprawdzałem, bo BASCOM to nie moja działka).
  • #23 13194707
    MICHAŁ6201
    Poziom 16  
    Posty: 832
    Pomógł: 3
    Ocena: 177
    Dziękuję bardzo Wszystkim za cenne wskazówki.

    Ten tranzystor odłączający dzielnik rezystancyjny zmniejszał pobór prądu tylko o 0,5mA, czyli nie warto było. Teraz jest bez tranzystora i wszystko działa tak jak należy:)

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik stworzył woltomierz oparty na mikrokontrolerze Atmega 8, jednak napotkał problem z nieprawidłowym pomiarem napięcia na ADC0, gdzie przy 9V na wyświetlaczu LCD pokazywało 9,44V. Dyskusja skupiła się na przyczynach błędów pomiarowych, takich jak niewłaściwe podłączenie AREF, zbyt wysoka rezystancja dzielnika napięcia oraz wpływ diody i tranzystora na pomiar. Użytkownik usunął tranzystor, co poprawiło dokładność pomiarów, a także wprowadził korektę w kodzie, uwzględniając spadek napięcia na diodzie. Ostatecznie, po wprowadzeniu poprawek, woltomierz działał prawidłowo.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA