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

Atmega32 - błędny pomiar napięcia akumulatora, jak zrobić dzielnik napięcia?

sliver1 26 Gru 2006 18:45 4103 16
REKLAMA
  • #1 3371952
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    Zrobilem prosty komputerek do auta na atmedze32 wg. TEGO SCHEMATU. Jedna z jego funkcji jest miernik pokazujacy napiecie akumulatora. Problem tylko w tym, ze pokazuje on caly czas podobne napiecie typu ok. 8V(+/- 0.5V) nawet jak jest +12Vczy +7V.
    Cos nie tak jest z kodem programu czy ze schematem??
    Z tego co mowil mi znajomy to zeby woltomierz dzialal wg. tego kodu to trzeba podac napiecie z aku poprzez dzielnik napiecia do portu uProcesora (PortA.5). Jak zrobic taki dzielnik napiecia i czy to faktycznie zadziala??
    
    If Item = 6 Then
             Cls
             Lcd "NAPIECIE"
             Start Adc
             U_volt = Getadc(5)
             Volt = U_volt * 0.0205            '0.0173   0.0197142    0,0205  0.0245
             Wart_nap2 = Str(volt)
             Wart_nap2 = Format(wart_nap2 , " 0.0")
             Locate 2 , 2
             Lcd Wart_nap2
             Locate 2 , 6
             Lcd " V "
             Stop Adc
             Waitms 50                                         
             End If
    
  • REKLAMA
  • #2 3372052
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Zacznij od przeszuknia forum, podobny temat (obliczanie wartości mierzonego napięcia) już był i to pewnie nie jeden.
    Dzielnik jet konieczny, do budowy potrzeba dwóch oporników, na temat dzielników napisano już całe hektary i to nie tylko na elektrodzie...
  • #3 3372090
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    szukalem juz wczesniej i z tego co sie zorientowalem to trzeba zbudowac dzielnik na dwoch rezystorach i podlaczyc sygnal do piny 35 atmegi32 - tak?? a czy w programie bedzie trzeba cos zmieniac?? i dalczego teraz uklad wskazuje napiecie skoro do tego pinu nic nie jest podlaczone??
  • REKLAMA
  • #4 3372105
    Andy74
    Poziom 25  
    Posty: 525
    Pomógł: 103
    Ocena: 24
    Podaj jeszcze jakie są ustawienia w linijce
    Config Adc = ...
    - to jest potrzebne by dobrać odpowiednio dzielnik. Z tego co podałeś dotąd można tylko wywnioskować, że zakres pomiarowy ma wynieść ok. 21V
    Musisz też doprowadzić zasilanie 5V do PIN-u AVCC procesora, najlepiej przez odpowiedni filtr LC.

    Czy dobrze zrozumiałem, że podawałeś bezpośrednio na ADC5 procesora napięcie wyższe niż 5V? I procesor żyje?

    Cytat:
    i dalczego teraz uklad wskazuje napiecie skoro do tego pinu nic nie jest podlaczone


    A jak pin jest skonfigurowany?

    Pozdrawiam :)
    Andy
  • #5 3372129
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    To chyba szukałeś i prosiłeś, żeby nie znaleźć.
    Tu masz podaną metodykę wyznaczania wartości napięcia w woltach z wyniku uzyskanego w przetworniku A/C:
    https://www.elektroda.pl/rtvforum/topic188342.html

    Podobnych wątków jest na pęczki (i tyle ich zwraca szukajka), są tam podane wszelkie możliwe rozwiązania, tylko musi się chcieć je przeczytać, a nie wołać po raz setny o to samo.
  • #6 3372445
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    Andy74 napisał:
    Podaj jeszcze jakie są ustawienia w linijce
    Config Adc = ...
    - to jest potrzebne by dobrać odpowiednio dzielnik. Z tego co podałeś dotąd można tylko wywnioskować, że zakres pomiarowy ma wynieść ok. 21V

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    glownie bedzie napiecie mierzone w zakresie 11-15V ale jak to w aucie bywa max moze czasami podskoczyc do tych 20V jak diody na alternatorze padna...

    Andy74 napisał:

    Musisz też doprowadzić zasilanie 5V do PIN-u AVCC procesora, najlepiej przez odpowiedni filtr LC.
    Czy dobrze zrozumiałem, że podawałeś bezpośrednio na ADC5 procesora napięcie wyższe niż 5V? I procesor żyje?

    na adc5 nie podawalem zadnego napiecia - wolalem sie najpierw zapytac:D

    Andy74 napisał:

    Cytat:
    i dalczego teraz uklad wskazuje napiecie skoro do tego pinu nic nie jest podlaczone

    A jak pin jest skonfigurowany?

    adc5

    Pozdrawiam i dziekuje za pomoc:)
  • #7 3372908
    Andy74
    Poziom 25  
    Posty: 525
    Pomógł: 103
    Ocena: 24
    Odpowiem, ale na przyszłość zastosuj się do rad kolegów i używaj przycisku szukaj. W ten sposób naprawdę można znaleźć odpowiedź na prawie każde pytanie odnośnie AVR-ów. Kolega Tdv się zdenerwował i wcale mu się nie dziwię (przy okazji i mnie może się oberwać... :please: proszę mnie nie bić).

    Ja bym to zrobił tak:
    Atmega32 - błędny pomiar napięcia akumulatora, jak zrobić dzielnik napięcia?
    Ponieważ napięcie referencyjne będzie pobierane z Vcc (rozumiem, że 5V), a ono wcale nie musi (i najprawdopodobniej nie będzie) dokładnie równe 5V dobrze będzie mieć możliwość kalibracji - do tego ma służyć właśnie potencjometr R2. Kalibrację możesz zrobić tak: Podłączasz na wejście pomiarowe jakieś napięcie mniejsze od 21V, podłączasz tam też miernik, regulujesz potencjometrem tak, by wskazania miernika i wyświetlacza Twojego układu się zrównały.
    Program zostaw tak jak jest, ale pin PA5 musi być ustawiony jako wejście pływające (bez podciągania do Vcc).
    I jeszcze jedno: Z uwagi na to, że układ ma pracować w samochodzie najlepiej będzie zastosować potencjometr precyzyjny (tzw. helitrim - może być 5kΩ), lub po kalibracji zmierzyć ustawioną wartość rezystancji i wymienić go na odpowiednie oporniki.
    Stabilność pomiaru będzie zależała od stabilności napięcia 5V podawanego na wejście AVCC (filtr).

    Pozdrawiam
    Andy
  • REKLAMA
  • #8 3373703
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    znalazlem w necie schemat innego komputerka do auta na bazie wyswietlacza od noki i tam jest taki dzielnik jak na rys ponizej podlaczony bezposrednio do adc5, a agnd jest podciagniete bezposrednio do masy. Czy cos takiego by przeszlo?? A moe ktos juz na atmedze mial juz taki problem i zna gotowe rozwiazane?? Wdzieczny bede za jakis sprawdzony schemat.
    Załączniki:
    • Atmega32 - błędny pomiar napięcia akumulatora, jak zrobić dzielnik napięcia? dzielnik.jpg (5.34 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 3373723
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    sliver1 napisał:
    znalazlem w necie schemat innego komputerka do auta na bazie wyswietlacza od noki i tam jest taki dzielnik jak na rys ponizej podlaczony bezposrednio do adc5, a agnd jest podciagniete bezposrednio do masy. Czy cos takiego by przeszlo?? A moe ktos juz na atmedze mial juz taki problem i zna gotowe rozwiazane?? Wdzieczny bede za jakis sprawdzony schemat.


    Dalej Cie lenistwo nęka? Użyj wyszukiwarki, takie problemy miało już z pół setki ludzi...

    Na schemacie masz dzielnik 47k do 4,3k, czyli przy 15V na wejściu na wyjściu będziesz miał 1,26V, przy Uref=AVCC, czyli 5V, wykorzystasz 1/4 zakresu pomiarowego przetwornika, przy Uref=2,56V (wewnętrzne źródło) będzie trochę lepiej bo 1/2. W dalszym ciągu to będzie średnio dobrze, to samo tyczy się mieszania masy analogowej i cyfrowej.
    Nie czekaj aż ktoś za Ciebie zrobi wszystko, tylko poczytaj, na elektrodzie ten temat był wielokrotnie walkowany. Po drugie - myśl przy tym co robisz.
  • #10 3374403
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    Tdv napisał:
    Dalej Cie lenistwo nęka? Użyj wyszukiwarki, takie problemy miało już z pół setki ludzi...


    Tdv widze, ze Cie irytuja moje pytania ale chcialem tylko zrobic sobie uklad do auta i majac elementarna wiedze o elektronice oraz mikrokontrolerach myslalem, ze z Wasza pomoca dam sobie rade... Mialem gotowy schemat i kod programu ale po zmontowaniu wszystkiego okazalo sie, ze jest w nim pare bledow. Liczylem, ze na elektrodzie uzyskam konkretne odpowiedzi typu "dodaj na schemacie to i to a w kodziw wpisz taka linijke" a Ty mi piszesz, ze jak chce sobie uruchomic tan uklad to musze teraz pojac cala wiedze o elektronice i programowaniu... Nie chce sie wszystkiego uczyc od podstaw bo czas mi na to nie pozwala a pozatym to prawdopodobnie wiecej mi sie to nie przyda a nawet jesli kiedys to i tak za pare lat zapomne wiekszosc rzeczy.
    Duzo czasu siedze na innym forum zajmujacym sie motoryzacja bo to jest moja mocniejsza strona i jak ktos sie pyta np. co ile wymieniac swiece to nie odpowiadam mu, zeby przeanalizowal skad chemiczny materialu z ktorego jest zrobiona swieca oraz budowe silnika tylko podaje odpowiedz w postac jednej liczby - tak jest szybciej i wygodniej dla wszystkich.


    Tdv napisał:
    Na schemacie masz dzielnik 47k do 4,3k, czyli przy 15V na wejściu na wyjściu będziesz miał 1,26V, przy Uref=AVCC, czyli 5V, wykorzystasz 1/4 zakresu pomiarowego przetwornika, przy Uref=2,56V (wewnętrzne źródło) będzie trochę lepiej bo 1/2. W dalszym ciągu to będzie średnio dobrze, to samo tyczy się mieszania masy analogowej i cyfrowej.
    Nie czekaj aż ktoś za Ciebie zrobi wszystko, tylko poczytaj, na elektrodzie ten temat był wielokrotnie walkowany. Po drugie - myśl przy tym co robisz.


    Wracajac do mojego problemu - przeczytalem wszystkie posty, ktore wyplula mi wyszukiwarka po wpisaniu slow atmega i dzielnik ale nie znalazlem nic konkretnego. co do dzielnika faktycznie dosc czesto sie przewija ten temat, wiem jak obliczyc wartosc rezystorow ale nie ma nigdzie podane jak go podlaczyc do atmegi. w ramach testow czy to zadziala podalem bezposrednio do adc5 i do masy 1.5V z bateryjki ale chyba cos nie tak jest z kodem programu(pierwszy post) bo wtedy pokazalo 7V a z odlaczonym pinem adc5 pokazuje caly czas 9V. zasilanie ukladu to 10V. gdzie tkwi problem??
  • REKLAMA
  • #11 3374454
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Wyjaśnijmy sobie jedno - nikt Ci nie kazał zgłębiać całej wiedzy z elektroniki.
    Zacznę od pytania, czy przeczytałeś wątek do którego podałem linka? Jeżeli tak to wyjaśnij mi to:
    sliver1 napisał:
    Volt = U_volt * 0.0205 '0.0173 0.0197142 0,0205 0.0245

    Skąd ten mnożnik 0.0205 i co on ma robić?

    Kolega Andy74 pytał Cię jak masz skonfigurowany pin proceosora od wejścia A/C. Odpowiedź ADC5 to jakby Ci ktoś na pytanie ile masz rąk, odpowiedział Pafnucy z Welebubek Dolnych.
    Żeby sprawdzić co masz źle zrobione zmień program tak, żeby wyświetlał bezpośrednio liczbę otrzymaną z przetwornika, wtedy znając wartość napięcia odniesienia i przyłożone napięcie możesz sobie przeliczyć, czy to co masz z ADC zgadza się z tym co policzysz.
    Jeżeli nie chcesz wiedzieć jak działa uC i co w nim siedzi to pozostaje jedynie kogoś prosić, żeby zrobił ten układ dla Ciebie, bo sam nie dasz rady, tym bardziej, że nawet nie wiesz co to jest konfiguracja pinu w uC AVR.
  • #12 3374925
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    Tdv napisał:
    Zacznę od pytania, czy przeczytałeś wątek do którego podałem linka? Jeżeli tak to wyjaśnij mi to:
    sliver1 napisał:
    Volt = U_volt * 0.0205 '0.0173 0.0197142 0,0205 0.0245

    Skąd ten mnożnik 0.0205 i co on ma robić?

    Oczywiscie, ze przeczytalem. Kod programu mialem juz gotowy i nie ja go pisalem. Pewnie ktos taki wstawil, zeby mu napiecia sie zgadzaly. Sproboje jeszcze pokompinowac ze wzorem, ktory jest podany w watku do ktorego podales linka.

    Tdv napisał:

    Kolega Andy74 pytał Cię jak masz skonfigurowany pin proceosora od wejścia A/C. Odpowiedź ADC5 to jakby Ci ktoś na pytanie ile masz rąk, odpowiedział Pafnucy z Welebubek Dolnych.

    myslalem, ze to o to chodzilo... jak sprawdzic jak jest skonfigurowany ten pin??

    Edit:
    Podlaczylem zasilanie pod adc5 przez dzielnik wg. rysunku, ktory podalem wyzej z tym, ze dalem rezystory 24k i 4.7k. Zmienilem w kodzie wzor na ten postu podanego przez "Tdv" i teraz wyglada tak:

    
             Cls
             Lcd "NAPIECIE"
             Start Adc
             U_volt = Getadc(5)
             Volt = U_volt * 0.00458           '4,7V/1024=0,00458 (jak osobno
             Volt = Volt * 6                        'obliczalem wynik i tak byl taki sam)
             Wart_nap2 = Str(volt)
             Wart_nap2 = Format(wart_nap2 , " 0.0")
             Locate 2 , 2
             Lcd Wart_nap2
             Locate 2 , 6
             Lcd " V "
             Stop Adc
             Waitms 1000                           
             End If
    


    i jakos dziala ale jest spora niedokladnosc... jest na to jakis sposob??
    moze ktos juz budowal jakis miernik napiecia na atmedze i moze napisac jak u niego wyglada sprawa dokladnosci wskazan i w jaki sposob podal napiecie do procka??
  • #13 3375490
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Możesz wyjaśnić w jaki sposób otrzymałeś te magiczne 0,00458?
    Przy okazji to jakoś nie dziwi mnie, że to nie szczególnie działa. Gdzie masz zasilanie na AVCC i masę analogową? W tym układzie nikt nie planował wykorzystania przetworników A/C z uC.
    Nie wystarczy wziąć schemtu z jednego projektu i programu z drugiego - takie cuda nigdy nie działają.
  • #14 3375914
    sliver1
    Poziom 22  
    Posty: 870
    Pomógł: 2
    Ocena: 122
    Tdv napisał:
    Możesz wyjaśnić w jaki sposób otrzymałeś te magiczne 0,00458?

    napiecie odniesienia jest stale(u mnie 4.7V) wiec podzielilem je wczesniej wg. wzoru abc*(napiecie odniesienia/1024) czyli abc * 4.7/1024 czyli abc* 0.00458

    Tdv napisał:

    Gdzie masz zasilanie na AVCC i masę analogową? W tym układzie nikt nie planował wykorzystania przetworników A/C z uC.
    Nie wystarczy wziąć schemtu z jednego projektu i programu z drugiego - takie cuda nigdy nie działają.


    jak podpinalem zasilanie na AVCC i mase na AGND wyniki byly takie same...

    moze bledem jest to ze mnoze wynik przez 6?? w innych programach tego dzialanie nie widzialem i sam to dodalem... ale bez tego mnozenia sa wyniki rzedu 1.3V....
  • #15 3377350
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    O kurczę pieczone...

    A skąd masz Uref 4,7V? Jeżeli można spytać?
    sliver1 napisał:
    moze bledem jest to ze mnoze wynik przez 6?? w innych programach tego dzialanie nie widzialem i sam to dodalem... ale bez tego mnozenia sa wyniki rzedu 1.3V....

    Gratuluję pomysłowości, może jeszcze to scałkujesz, dokonasz transformaty Laplace'a, po czym całość zlogarytmujesz...

    Dzielnik napięcia masz na wejściu (przy rezystorach 24k i 4,7k) o stopniu podziału 6,1. uC mierzy napięcie 6,1 razy mniejsze niż masz na wejściu. Trzeba myśleć i liczyć co się robi, a nie dodawać przypadkowe mnożniki do wzorów.
    zwróć uwagę, że 6,1 to znamonowa wartość, jeżeli zastosujesz typowe rezystory 5% to w konkretnym przypadku może ona nieco odbiegać - aby to ustalić zmierz miernikiem stopień podziału.
  • #16 8996703
    walus555
    Poziom 18  
    Posty: 249
    Pomógł: 26
    Ocena: 12
    Ma ktoś do tego schemat ? bardzo bym prosił wraz z programem do tego uC
  • #17 9015928
    walus555
    Poziom 18  
    Posty: 249
    Pomógł: 26
    Ocena: 12
    Oczywiście prosząc o schemat chodzi mi o wykaz elementów(ich wartości). I się powtórzę również i program do tego uC ATMega32. Z góry dzięki :)

Podsumowanie tematu

✨ Dyskusja dotyczy problemu błędnego pomiaru napięcia akumulatora samochodowego za pomocą mikrokontrolera Atmega32. Użytkownik zbudował prosty miernik napięcia według schematu, jednak wskazania są nieprawidłowe i oscylują wokół 8V niezależnie od rzeczywistego napięcia (7-12V). Wskazano, że do prawidłowego pomiaru konieczne jest zastosowanie dzielnika napięcia z dwóch rezystorów, który obniży napięcie akumulatora do zakresu dopuszczalnego dla wejścia ADC (0-5V). Podkreślono, że pin ADC5 (PortA.5) musi być skonfigurowany jako wejście analogowe bez podciągania, a zasilanie AVCC i masa analogowa (AGND) muszą być poprawnie podłączone i filtrowane. Wartość mnożnika przeliczeniowego w kodzie powinna odpowiadać rzeczywistemu dzielnikowi i napięciu odniesienia ADC. Zalecane jest kalibrowanie układu za pomocą potencjometru, aby dopasować wskazania do rzeczywistego napięcia mierzonego miernikiem. W dyskusji pojawiły się przykładowe wartości rezystorów (np. 24kΩ i 4,7kΩ) oraz uwagi o konieczności przemyślanego doboru dzielnika i konfiguracji ADC. Użytkownik próbował modyfikować kod, jednak bez pełnej wiedzy o konfiguracji ADC i elektronice trudno uzyskać poprawne wyniki. Wskazano również liczne dostępne na forum i w internecie materiały dotyczące dzielników napięcia i pomiarów ADC w Atmega32. Na koniec pojawiły się prośby o gotowy schemat i program do tego projektu.
Wygenerowane przez model językowy.
REKLAMA