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.

[ATMEGA8A][C] - Pomiar natężenia prądu (ADC)

maciek134 23 Mar 2015 23:09 1098 8
  • #1 23 Mar 2015 23:09
    maciek134
    Poziom 8  

    Witam!
    Mam obwód jak na poniższym schemacie (na razie na płytce stykowej):
    [ATMEGA8A][C] - Pomiar natężenia prądu (ADC)

    W miejsce grzałki na razie wstawiłem czerwoną diodę LED i opornik 100Ω, a obwód jest zasilany z 5V. Problem jest taki, że wartość na ADC2 (pomiar spadku napięcia na R2) jest taka sama jak na ADC1. Tak wygląda kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I teraz pytanie - winą jest problem ze schematem czy ADC nie odczyta tak małego spadku napięcia (multimetr pokazał że dioda przez opornik 100Ω ciągnie około 3mA, czyli ma prawo, bo dla opornika 0.1Ω spadek 1mV = 10mA, a dla Vref = 2.64V mam dokładność do 2.5mV na ADC). Jeśli to drugie to nie ma problemu, bo potrzebuję dokładności na poziomie 0.1A, ale wolę się upewnić.

    A przy okazji, dzielnik z oporników R6 i R7 ma służyć do pomiaru stanu baterii, dobrze jest podłączony?

    P.S. Szukałem, jedyne co znalazłem to ten temat: https://www.elektroda.pl/rtvforum/viewtopic.php?p=12249485..

    0 8
  • Pomocny post
    #2 23 Mar 2015 23:23
    Robewit
    Poziom 25  

    Ze schematem chyba coś nie tak. Grzałka ma być zasilona przez potencjometr R5? Rezystor pomiarowy raczej powinien być między minusem a tranzystorem.

    0
  • Pomocny post
    #3 23 Mar 2015 23:26
    Sobota
    Poziom 26  

    Nie jestem w tej materii specjalistą jednak z doświadczenia wiem że S2 powinien być podciągnięty przez rezystor do masy..

    0
  • #4 23 Mar 2015 23:39
    maciek134
    Poziom 8  

    Robewit napisał:
    Grzałka ma być zasilona przez potencjometr R5?

    Tak.

    Robewit napisał:
    Rezystor pomiarowy raczej powinien być między minusem a tranzystorem.

    Fail, faktycznie, patrzyłem na schemat samego pomiaru odwrotnie... zaraz sprawdzę i edytuję.

    Sobota napisał:
    Nie jestem w tej materii specjalistą jednak z doświadczenia wiem że S2 powinien być podciągnięty przez rezystor do masy..

    Fakt, nie pomyślałem o tym, ale zalecany jest pull-down ~1kΩ. Dzięki!

    #EDIT:
    Zmiana nic nie dała (poza poprawnym schematem) - wywaliłem opornik i ustawiłem R5 tak, że dioda pobiera około 200mA prądu (sprawdzone multimetrem) - więc powinienem zobaczyć spadek napięcia około 20mV. Problem chyba jest z czytaniem ADC, bo niezależnie od tego czy mam do pinu ADC2 coś podłączone czy nie i tak dostaję taką samą wartość jak na ADC1.

    #EDIT2:
    Ustawiłem też wszystkie nieużywane piny na 1, ale to też nic nie dało.

    0
  • #5 24 Mar 2015 00:21
    EuroGenio
    Poziom 17  

    S2 (od strony uC) chyba powinno w tym układzie być podciągnięte przez rezystor do Vcc, przełącznik wymusi na nim LOW.

    Jeśli szeregowo z LED masz rezystor 100 ohm to jak tam może popłynąć 200mA.
    Przy zwarciu w LED było by ok. 37mA, chyba że tego rezystora też już nie ma.
    Pomijam już fakt co na to LED (jeszcze świeci?)

    0
  • #6 24 Mar 2015 00:47
    Robewit
    Poziom 25  

    Wydaje mi się, że prądy płynące w takim obwodzie są poniżej rozdzielczości przetwornika. Zmień rezystor pomiarowy na 10 Ohm i wtedy sprawdź. Jesteś precyzyjny jak ustawiłeś 17,5 Ohm na 5 kOhm potencjometrze. Ten LED chyba to jakiś Power LED, bo zwykła by tylko błysnęła przy takim prądzie. Narysuj schemat odpowiadający rzeczywistym połączeniom i będzie łatwiej analizować układ.

    0
  • #7 24 Mar 2015 00:48
    maciek134
    Poziom 8  

    EuroGenio napisał:
    Jeśli szeregowo z LED masz rezystor 100 ohm to jak tam może popłynąć 200mA.

    maciek134 napisał:
    Zmiana nic nie dała (poza poprawnym schematem) - wywaliłem opornik (...)


    Chyba już przysypiam, bo źle przeczytałem drugą część Twojego posta. LED dalej świeci, ew. nie umiem odczytać wyniku z miernika i to wcale nie było 200mA - skala na 200m, wynik skakał między ~199 a 1 po lewej (poza skalą).

    #EDIT:
    Tak wygląda to na płytce stykowej:
    [ATMEGA8A][C] - Pomiar natężenia prądu (ADC)
    Nie wiem czy to na pewno bardziej czytelne, bo mam mało miejsca na płytce.
    Aha, to między R2 i R4 to LED, jakoś zapomniałem podpisać.

    EuroGenio napisał:
    Dioda LED musi mieć rezystor! Inaczej działa trochę jak stabilizator napięcia (dioda Zenera, ale akurat w kierunku przewodzenia).
    Wtedy bierze tyle prądu ile udźwignie ona lub zasilanie (co pierwsze "padnie").

    Tak, wiem, podstawy znam. Zasilanie idzie z portu USB w komputerze, które ma zabezpieczenie gdyby dioda chciała pociągnąć za dużo, a diody mi nie szkoda (chociaż twarda z niej sztuka).

    #EDIT2:
    Zmiana opornika z 0.1Ω na 100Ω (nie mam 10Ω pod ręką) nic nie dała, obstawiam złe podłączenie albo błąd w kodzie dot. ADC, bo chyba dobrze go zabezpieczyłem przed zakłóceniami.

    #EDIT3:
    EuroGenio napisał:
    Ten potencjometr to podstawowe nieporozumienie, wskazywali Ci już to inni...

    Ok, tego nie rozumiem. Co z nim nie tak? Potrzebuję go, bo chcę mieć możliwość regulowania napięcia prądu za nim, a chciałem to zrobić w najprostszy sposób.

    0
  • #8 24 Mar 2015 01:16
    EuroGenio
    Poziom 17  

    Dioda LED musi mieć rezystor! Inaczej działa trochę jak stabilizator napięcia (dioda Zenera, ale akurat w kierunku przewodzenia).
    Wtedy bierze tyle prądu ile udźwignie ona lub zasilanie (co pierwsze "padnie").

    Dodano po 19 [minuty]:

    maciek134 napisał:
    Tak, wiem, podstawy znam.
    To tylko jeszcze musisz je zrozumieć ;) Ten potencjometr to podstawowe nieporozumienie, wskazywali Ci już to inni...

    0
  • #9 24 Mar 2015 01:34
    maciek134
    Poziom 8  

    Ok, problem jest na 100% z kodem odpowiedzialnym za odczyt ADC. Trochę go nazmieniałem (teraz używa przerwań):

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jak ustawię na stałe kanał na 3 albo 2 to wartość jest inna (1.804688 na kanale 3, 0.118594 na kanale 2 z opornikiem 100Ω).

    #EDIT:
    Jak dam delay 1000ms po ustawieniu kanału i zacznę od 2 to przez sekundę jest dobra wartość, a potem cały czas ta sama - z kanału 3.
    W nocie katalogowej nie mogę nic znaleźć na ten temat, albo nie umiem czytać...

    #EDIT2:
    Problem może być też z biblioteką od wyświetlacza - bo wynik pierwszej konwersji zawsze pokazuje się w pierwszym rzędzie, niezależnie od kanału.

    #EDIT3:
    No i oczywiście chodziło o czytanie ADC. Błąd był dokładnie tu:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Bo przecież jeśli ustawię ADMUX na binarne 11000011 (0xC3 - ADC3), to przy ORowaniu tego z 2 (00000010) nie dostanę 2 na końcu:
    Code:

       11000011
    OR 00000010
       --------
       11000011

    Od prawie 12 lat programuję i taki błąd...
    Oczywiście ADMUX musi zostać ustawiony na wartość początkową przed ustawianiem nowej - w tym przypadku 0b11000000 lub po prostu 0xC0.

    Teraz wszystko pięknie działa, trzeba tylko wykalibrować:
    [ATMEGA8A][C] - Pomiar natężenia prądu (ADC)

    Dzięki wszystkim za pomoc!

    0