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.

[Rozwiązano] Odczyt napięcia z zasilacza impulsowego prez ADC z AVR

ble___ 14 Mar 2018 14:04 768 13
  • #1 14 Mar 2018 14:04
    ble___
    Poziom 10  

    Celem było uzyskanie woltomierza.
    ADC z attiny44 skonfigurowane jest tak że wejście jest różnicowe a wynik jest z zakresu od -3.3V do 3.3V.
    Dzielnik napięcia wygląda mniej więcej tak:
    wejście1--- R 20K---ADC1--- R 4K---ADC2--- R 20K---wejście2

    Odczyty są oczekiwane i dość dokładne przy sprawdzaniu baterii albo niektórych zasilaczy.

    Czego nie rozumiem:
    1) dlaczego jak zmierzę napięcie 12V pewnego zasilacza ATX to uzyskuję dość stabilny wynik 6V?
    - nic nie zmienia podłączenie obciążenia
    - jak naładuję tym napięciem kondensator, odłączę i zmierzę sam kondensator to odczytuję około 12V
    - podłączenie zasilacza wraz z kondensatorem nie zmienia odczytu
    - pomiar napięcia 5V tego samego zasilacza daje wynik 5V
    - inny miernik (KT830-BUZ) wskazuje niecałe 12V
    - zmieniałem kod dla AVR tak żeby wysyłać tylko najwyższy odczyt, podejrzewając że pomiary pomijają chwilowo wyższe napięcie - bez efektu (sytuacja wciąż bardzo mało ale chyba możliwa)
    2) dlaczego część pomiarów pewnego innego zasilacza impulsowego daje zaniżony wynik?
    - próbowałem podłączać różne elementy przed ADC (diody, kondensatory, cewki) i nie dało to praktycznie żadnej zmiany
    - dla źródeł zasilania innych niż zasilacz impulsowy nie zauważyłem zaniżonych wyników

    Na obrazku odczyty napięcia 8V zasilacza impulsowego.

    Odczyt napięcia z zasilacza impulsowego prez ADC z AVR

    0 13
  • #2 14 Mar 2018 17:25
    Freddy
    Poziom 43  

    Zasilacz bardzo sieje i kiepską ma stabilizację :) i to prawdopodobnie jest wina.
    Multimetr dokonuje kilku pomiarów na sekundę i "uśrednia" ten wynik.
    Musiałbyś dokonać tego samego - np. odczytać 10 pomiarów i wyliczyć średnią.

    0
  • #3 14 Mar 2018 17:45
    ble___
    Poziom 10  

    Najbliższy prawdzie(?) nie jest wynik średni tylko maksymalny (o czym pisałem i wykres 8V to pokazuje).
    To "sianie" jest całkiem odporne na moje pomysły, nawet zasłanianie układu blachą czy wspomniane elementy elektroniczne.

    Częstotliwość próbkowania to zalecane w dokumentacji około 100kHz ale tylko około 15 próbek na sekundę jest wysyłanych przez USB.

    Przypominam też o wspomnianej modyfikacji kodu w celu odczytu maksimum - nawet wtedy odczyt jest dla opisanego przykładu zaniżony około 50%. Dokumentacja wspomina o mechanizmie "sample and hold" wykorzystanym w ADC więc czas którego dotyczy pomiar jest chyba krótszy od samego pomiaru.
    Trudno uwierzyć (chociaż może nie niemożliwe) żeby wszystkie odczyty były wykonywane w momencie jak napięcie jest niższe od znamionowego - musiałaby zupełnie żadna ze 100 000 próbek na sekundę nie przekroczyć 6V kiedy jednocześnie podłączony inny miernik odczytywał około 12V.

    0
  • #4 14 Mar 2018 18:55
    Marek_Skalski
    Moderator Projektowanie

    Najpierw narysuj schemat. Jest do tego darmowe narzędzie. Patrząc na to co napisałeś, to nadal nie wiem do czego te dzielniki są przypięte i gdzie jest masa.
    Rezystor 20k w szeregu, to zdecydowanie za dużo, ponieważ manual mówi o 10 k max. Jeżeli nie chcesz obciążać bardziej obwodu mierzonego, to daj wtórniki napięciowe.
    Wiesz, że ADC w Tiny44 może przetwarzać z maksymalną prędkością 15 k sampli? Ty próbujesz wyzwalać konwersję 7x częściej. To nie ma prawa działać. Dodatkowo, pierwsza konwersja trwa dłużej, jeżeli zmieniasz kanał. Polecam przeczytać sekcje 16.1 oraz 16.5
    Tutaj

    0
  • #5 14 Mar 2018 19:21
    ble___
    Poziom 10  

    Słabo znam się na elektronice i nie chciałem zbędnych materiałów zamieszczać, podejrzewałem że może ktoś rozpozna problem od razu.

    Schemat powstał później niż urządzenie więc jest mała szansa że zawiera błędy.

    Odczyt napięcia z zasilacza impulsowego prez ADC z AVR

    Tak wygląda realizacja:

    Odczyt napięcia z zasilacza impulsowego prez ADC z AVR

    Prawda 20k to 2x więcej niż to maksimum jak dokumentacja opisuje - sprawdzę mniejsze oporniki**.
    Prawda też że pomyliłem częstotliwość konwertera z częstotliwością konwersji, konwersja w użytym trybie "Free Running" zajmuje 14 cykli więc próbkowanie to chyba 7142x na sekundę.

    Uwaga o pierwszej konwersji raczej nieistotna w tym przypadku.
    Tak samo nie wiem skąd pomysł o zmienianiu kanałów.

    Fragment (i tak krótkiego) kodu dla AVR który jest istotny (nigdzie indziej ADC nie jest wykorzystywane).
    Używa biblioteki VUSB a próbka jest wysyłana gdy biblioteka sygnalizuje że USB jest dostępne (średnio 15x na sekundę).

    Kod: c
    Zaloguj się, aby zobaczyć kod


    **Wymieniłem oporniki na 10k i 1k i nie zauważam różnicy ani w równomiernie zaniżonym odczycie (12V ATX) ani w częściowo zaniżonym (jak na wykresie).

    0
  • #6 14 Mar 2018 19:56
    Marek_Skalski
    Moderator Projektowanie

    0. Kolego, jeżeli chcesz uzyskać pomoc, to podawaj informacje kompletne i dokładne.
    1. W pierwszym poście napisałeś "attiny44", na schemacie jest ATTINY441. To nie są te same układy.
    2. Brak większości wartości elementów na schemacie. Piszesz o rezystorach wejściowych 20k, ale na zdjęciu są 22k. Piszesz o R=4k, a na schemacie jest jeszcze potencjometr. W jakim celu?
    3. Sygnał wejściowy podłączony w sposób, który jest moim zdaniem bez sensu. Tam brakuje odniesienia do masy, przez co ADC mierzy jakieś przypadkowe wartości. Jaki jest wynik konwersji przy napięciu <0?
    4. Sygnał podłączony do wejść ADC2 i ADC3, ale w programie ustawiasz multiplexer na pomiar różnicowy ADC0(+) i ADC1(-).
    5. ADC powinien być taktowany zegarem >1 MHz, a w programie dzielnik jest ustawiony na 128, co przy 16 MHz daje tylko 125 kHz. To z kolei daje 8333 wyniki na sekundę. Ty piszesz o 7142.
    W takiej sytuacji nie można pomóc :|

    0
  • #7 14 Mar 2018 22:03
    ble___
    Poziom 10  

    Cytat:

    0. Kolego, jeżeli chcesz uzyskać pomoc, to podawaj informacje kompletne i dokładne.
    1. W pierwszym poście napisałeś "attiny44", na schemacie jest ATTINY441. To nie są te same układy.
    2. Brak większości wartości elementów na schemacie. Piszesz o rezystorach wejściowych 20k, ale na zdjęciu są 22k. Piszesz o R=4k, a na schemacie jest jeszcze potencjometr. W jakim celu?
    3. Sygnał wejściowy podłączony w sposób, który jest moim zdaniem bez sensu. Tam brakuje odniesienia do masy, przez co ADC mierzy jakieś przypadkowe wartości. Jaki jest wynik konwersji przy napięciu <0?


    Użyto attiny44. Poprawiony schemat jak niżej, jak coś więcej wydaje się istotne to proszę pytać.

    Odczyt napięcia z zasilacza impulsowego prez ADC z AVR
    *Regulator napięcia jest oznaczony LT 72103 152133 - nie wiem czemu się nie zapisało.

    Używałem symulatora z tej strony do zaprojektowania dzielnika.
    Poniżej model do wczytania tym symulatorem który wydaje się spełniać oczekiwania. Tutaj szczególnie proszę o pomoc bo słabo znam temat. Model powinien odpowiedzieć na część pytań.

    Potencjometr zwiera oba sygnały - reguluje dzielnik.
    Odniesieniem dla sygnału jest drugi sygnał - wydaje się być logiczne i działać ( w wielu przypadkach...). I chyba nie ma wtedy problemu z tym że masy mogły by mieć różny potencjał.
    Odczyt jest jak pisałem z zakresu od -3.3V do 3.3V (referencyjne 3.3V to też zasilanie). Rozdzielczość maksymalna 10 bit (1024) wyniki dla ujemnych różnic są ujemne (rozdział 16.11.3 dokumentacji).

    Cytat:

    $ 1 0.000005 10.20027730826997 50 5 43
    r 240 144 320 144 0 1000
    r 240 192 320 192 0 1000
    r 240 240 320 240 0 1000
    r 240 288 320 288 0 1000
    r 240 192 240 240 0 0.1
    R 240 144 192 144 0 0 40 5 0 0 0.5
    R 240 288 192 288 0 0 40 -2 0 0 0.5
    w 320 144 320 192 0
    w 320 240 320 288 0
    p 320 192 320 240 1 0


    Cytat:

    4. Sygnał podłączony do wejść ADC2 i ADC3, ale w programie ustawiasz multiplexer na pomiar różnicowy ADC0(+) i ADC1(-).

    Piny nie są pomylone a kod skopiowany oraz urządzenie mierzy napięcie - raczej źle sprawdzone i nieistotne jeśli nie ma z tym problemu.
    Cytat:

    5. ADC powinien być taktowany zegarem >1 MHz, a w programie dzielnik jest ustawiony na 128, co przy 16 MHz daje tylko 125 kHz. To z kolei daje 8333 wyniki na sekundę. Ty piszesz o 7142.

    A nie 50-200kHz (s.135 dokumentacji)? 12000000/128 = 93750 | 93750/14=6696 próbek na sekundę.
    Cytat:

    W takiej sytuacji nie można pomóc :|

    0
  • #8 14 Mar 2018 22:57
    Marek_Skalski
    Moderator Projektowanie

    Zobacz wynik symulacji dla takiego układu, który jest bliższy rzeczywistemu. Zwróć uwagę na napięcia jakie występują na wejściach ADC. Trochę dużo, prawda?

    Cytat:
    $ 1 0.000005 10.20027730826997 50 5 43
    r 240 144 320 144 0 10000
    r 240 192 320 192 0 1000
    r 240 240 320 240 0 1000
    r 240 288 320 288 0 10000
    r 240 192 240 240 0 1
    R 240 144 192 144 0 0 40 12 0 0 0.5
    R 240 288 192 288 0 0 40 0 0 0 0.5
    w 320 144 320 192 0
    w 320 240 320 288 0
    p 320 192 320 240 1 0
    r 320 192 384 192 0 100000
    g 384 192 384 208 0
    r 320 240 384 240 0 100000
    g 384 240 384 256 0
    p 320 144 384 144 1 0
    g 384 144 384 160 0
    p 320 288 384 288 1 0
    g 384 288 384 304 0

    Jak chcesz zabezpieczyć port, to na pewno nie zenerkami na 5V6 + dodatkowe 0,6 V.
    Prawdopodobnie już w okolicy 8..9 V wychodzisz poza zakres dopuszczalnych napięć na wejściu układu, przez co zaczyna płynąć dodatkowy prąd przez diody pasożytnicze w strukturze portu, a to powoduje spadek napięcia na rezystorach szeregowych 10k, co w efekcie objawia się jako zaniżone napięcie. Nie wiem jeszcze dlaczego efekt nie występuje przy pomiarze baterii.
    Jakie jest napięcie odniesienia dla ADC?
    Jeżeli to jest TINY44, to ustawienie MPX jest dobre do pomiaru ADC2(+) i ADC3(-). Dlatego tak ważne jest, aby podawać dokładne informacje.
    Przy okazji, rezystor 22k w linii D+ na USB to zdecydowanie za dużo. Chyba powinno być 22R na obu liniach i dodatkowo 1,5k na D-.

    0
  • #9 14 Mar 2018 23:36
    ble___
    Poziom 10  

    Cytat:

    Jak chcesz zabezpieczyć port, to na pewno nie zenerkami na 5V6 + dodatkowe 0,6 V.
    Prawdopodobnie już w okolicy 8..9 V wychodzisz poza zakres dopuszczalnych napięć na wejściu układu, przez co zaczyna płynąć dodatkowy prąd przez diody pasożytnicze w strukturze portu, a to powoduje spadek napięcia na rezystorach szeregowych 10k, co w efekcie objawia się jako zaniżone napięcie. Nie wiem jeszcze dlaczego efekt nie występuje przy pomiarze baterii.

    Hmm nie bardzo rozumiem (np. co to "diody pasożytnicze") , jeszcze sobie to raz przeczytam posprawdzam i ewentualnie odpiszę.
    Diody zenera teraz dla testu usunąłem i też bez różnicy.
    Cytat:

    Jakie jest napięcie odniesienia dla ADC?

    3.3V i jest to też zasilanie.
    Cytat:

    Jeżeli to jest TINY44, to ustawienie MPX jest dobre do pomiaru ADC2(+) i ADC3(-). Dlatego tak ważne jest, aby podawać dokładne informacje.

    Co to MPX? Nie znajduję takiego napisu w dokumentacji.
    Cytat:

    Przy okazji, rezystor 22k w linii D+ na USB to zdecydowanie za dużo. Chyba powinno być 22R na obu liniach i dodatkowo 1,5k na D-.


    Ok błąd - na obu liniach jest 100 a D- jest podłączone do napięcia przez 22k i to o ile rozumiem żadnego wpływu na pomiary mieć nie powinno.

    Wybacz ale poprawiłem wcześniejszy post.
    Dodano po 21 [minuty]:
    Te wysokie napięcia to się wydaje być odpowiedź.
    Dokumentacja wyznacza max napięcie pinu na VCC+0.5V czyli tutaj 3.8V (ale pewnie zaniżone).
    Pomiar 4 ogniw li-ion daje odczyt około 16V co się zgadza ( bez diod zenera i brak awarii).

    0
  • #10 15 Mar 2018 08:28
    BlueDraco
    Specjalista - Mikrokontrolery

    Koledzy powyżej wskazali sporo błędów (i słusznie), ale moim zdaniem problem z pomiarem zasilacza ATX leży w tym, że masz (o czym nie wiesz) połączone masy i nie mierzysz w tym przypadu różnicowo.

    0
  • #11 15 Mar 2018 13:11
    ble___
    Poziom 10  

    Uwaga z napięciami ważna i projekt mniej atrakcyjny - raczej nie ma tu kruczków i powinno się trzymać limitów napięć (ale działa...).
    Wracam do urządzenia jakie miałem na początku. Oporniki wejściowe w tej sytuacji wydają się lepsze większej wartości ze względu na przekraczanie limitów napięć a nie zauważam problemów (dokumentacja też nie zabrania większych tylko opisuje ich wpływ).

    Dzięki za pomoc w próbach szukania problemu.

    Jakoś wątpiłem co do tych połączonych mas.
    Miernik znajduje "ciągłość przewodu" pomiędzy masą ATX'a a masą z USB laptopa.
    Po odłączeniu laptopa od wszystkiego co jest podłączone do gniazdek pomiar 12V daje 12V.

    Nie rozumiem ani czemu to jest połączone ani czemu to ma jakieś znaczenie.
    Ten problem/zjawisko się jakoś specjalnie nazywa?

    0
  • #12 15 Mar 2018 20:58
    krisRaba
    Poziom 24  

    ble___ napisał:
    Nie rozumiem ani czemu to jest połączone ani czemu to ma jakieś znaczenie.
    Ten problem/zjawisko się jakoś specjalnie nazywa?

    https://www.youtube.com/watch?v=xaELqAo4kkQ
    To o oscyloskopach, ale generalnie w wielu innych przypadkach jest podobnie... no i w 15:30 masz Twój przypadek :) Tak naprawdę zamiast oscyloskopu łączysz 2 przypadki, czyli uziemione USB i omawiane chwilę wcześniej "mains earth referenced power supply"

    0
  • #13 16 Mar 2018 08:23
    ble___
    Poziom 10  

    Żeby uzyskać woltomierz chyba jednak prostsze/lepsze byłoby wspominane wcześniej połączenie mas i pomiar względem niej zamiast różnicowy (i pewnie nie będę wtedy potrzebował pomocy w zrozumieniu sposobu działania) czego efektem będzie:
    - nie przekraczanie limitów napięć układu scalonego co jak opisuje dokumentacja może "wpłynąć na jego niezawodność" [ rozwiązaniem pewnie byłoby "coś" zmieniające napięcia na wejściu i pewnie okaże się niebanalne]
    - brak zafałszowanych odczytów spowodowanych "połączeniem mas" [wciąż nie do końca rozumiem gdzie powstaje problem, chyba w określaniu różnicy mierzonych napięć wewnątrz układu scalonego, tutaj pewnie pomogłaby izolacja zasilania z USB która też zabezpieczyłaby komputer]

    Oba problemy wskazano mi tutaj i aktualnie zniechęcają mnie one do poprawiania urządzenia bez istotnych zmian.
    Pytanie o częściowo zaniżone pomiary bez wyjaśnienia ale podejrzewam że to może się przy okazji zmian urządzenia samo rozwiązać.

    Dziękuję za pomoc, to dla mnie w tym momencie wystarczające.

    0
  • #14 16 Mar 2018 17:03
    ble___
    Poziom 10  

    Żeby uzyskać woltomierz chyba jednak prostsze/lepsze byłoby wspominane wcześniej połączenie mas i pomiar względem niej zamiast różnicowy (i pewnie nie będę wtedy potrzebował pomocy w zrozumieniu sposobu działania) czego efektem będzie:
    - nie przekraczanie limitów napięć układu scalonego co jak opisuje dokumentacja może "wpłynąć na jego niezawodność" [ rozwiązaniem pewnie byłoby "coś" zmieniające napięcia na wejściu i pewnie okaże się niebanalne]
    - brak zafałszowanych odczytów spowodowanych "połączeniem mas" [wciąż nie do końca rozumiem gdzie powstaje problem, chyba w określaniu różnicy mierzonych napięć wewnątrz układu scalonego, tutaj pewnie pomogłaby izolacja zasilania z USB która też zabezpieczyłaby komputer]

    Oba problemy wskazano mi tutaj i aktualnie zniechęcają mnie one do poprawiania urządzenia bez istotnych zmian.
    Pytanie o częściowo zaniżone pomiary bez wyjaśnienia ale podejrzewam że to może się przy okazji zmian urządzenia samo rozwiązać.

    Dziękuję za pomoc, to dla mnie w tym momencie wystarczające.

    Dodano po 8 [godziny] 39 [minuty]:

    ---------------

    0