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.

Pomiar napięcia z dzielnikiem przy użyciu ADS1115 - coś z jego wejściami?

_jta_ 13 Cze 2017 07:49 1128 10
  • #1 13 Cze 2017 07:49
    _jta_
    Specjalista elektronik

    Problem wygląda tak: mam ADS1115 i dzielnik o oporności wyjściowej 100kΩ, potrzebuję mierzyć napięcie z możliwie dobrą dokładnością. Okazało się, że już po podłączeniu wejścia ADS1115 do napięcia stałego poprzez opornik wynik jest niestabilny i istotnie różny od tego napięcia, które podłączyłem, do tego przy każdym wzmocnieniu inny (w przeliczeniu na napięcie). Było to zależne od wartości opornika - dla 5M wyniki były całkiem "księżycowe" - potem doczytałem w nocie katalogowej, że oporność wejściowa ADS1115 to kilka M na wyższych zakresach (na każdym inna), a 700k na dwóch najniższych - zmieniłem opornik na 82k, jest wyraźnie lepiej, ale nadal źle. Według noty katalogowej ADS1115 ma na wejściu części analogowej multiplekser, wzmacniacz i przełączany kondensator - podejrzewam, że tak naprawdę jakiś układ, który działa podobnie, ale niezupełnie tak samo, jak opisane połączenie - i opór źródła mierzonego napięcia powoduje zakłócenia i niestabilny wynik pomiaru.

    Potrzebuję mieć stabilny wynik - to ma służyć do oceniania, czy zasilacz daje stabilne napięcie, czy ono nie ma tętnień, nie pływa. Nie zauważyłem w nocie katalogowej wskazówek, co należy podłączać do wejść analogowych, żeby układ działał z dobrą stabilnością. Być może potrzebny jest jakiś filtr RC, ale o jakich parametrach? Dołączenie na wejściu wtórnika na wzmacniaczu operacyjnym - można, jeśli to konieczne, tylko nie na byle jakim, bo typowy wzmacniacz operacyjny wniesie dużo za duży błąd - trzeba by wybrać jakiś łatwo dostępny i łatwy do użycia, żeby zrobienie tego nie zajęło za dużo czasu - to ma być fragment większego systemu i muszę mieć czas na całą resztę, nie tylko na to. Czy ktoś ma jakieś doświadczenia z robieniem pomiarów przy użyciu ADS1115, czy może wskazać, co wpływa na stabilność jego pomiarów?

    0 10
  • #2 13 Cze 2017 08:41
    viayner
    Poziom 34  

    Witam,
    moze podaj schemat twojego rozwiazania, czytales note aplikacyjna i zalecenia ? Poszukaj not aplikacyjnych ogolnych TI dla ADC. Swoja droga kiedys mialem podobne problemy z seria ADC7xxx.
    Ogolnie skoro masz takie wachania to bufor jest dobrym rozwiazaniem, dodatkowa uwaga - jaki zakres czestotliwosci napiecia wejsciowego ? dodaj uklad calkujacy/usredniajacy.
    Pozdrawiam

    0
  • #3 13 Cze 2017 09:18
    _jta_
    Specjalista elektronik

    Schemat? Źródło napięcia, opornik, wejście różnicowe ADC. W nocie aplikacyjnej nie zauważyłem zaleceń, jak podłączać wejścia. Na razie próbowałem mierzyć napięcie stałe, żeby przetestować działanie i już widać, że jest źle. Zauważyłem wpływ wykonywania pomiarów na wyniki - przy ciągłym mierzeniu wyniki są inne, niż przy pojedynczych pomiarach - może wykonywanie konwersji zmienia (zmniejsza) oporność wejściową.

    Zakres częstotliwości - chciałbym, żeby były widoczne tętnienia 100Hz. ADS1115 może teoretycznie robić do 860 konwersji na sekundę, ale wtedy nie mam informacji, kiedy kończy się konwersja, i który odczyt jest z której konwersji, więc trzeba nieco wolniej: start konwersji, ona potrwa np. 1.2 ms, trzeba odczekać tyle z zapasem, odczytać przez I2C status, żeby się upewnić, że się zakończyła, odczytać wynik, wystartować następną.

    A osobna sprawa: ten dzielnik, to dwa oporniki, większy połączony z napięciem mierzonym, mniejszy z masą, no i połączone ze sobą, trzeba to jakoś podłączyć do wejść ADS1115 tak, żeby napięcie na tych wejściach nie wychodziło poza zakres ich działania (a napięcie mierzone może być i dodatnie, i ujemne). Moja koncepcja: zastosować do tego dodatkowy dzielnik - np. wyjście tego połączyć przez opornik z +5V, i zrobić drugi dzielnik między +5V, a masą, do której jest podłączony ten - tak, żeby uzyskać zrównoważony mostek.

    0
  • #4 13 Cze 2017 11:38
    viayner
    Poziom 34  

    Witam.
    Przemyśl dodanie układu całkującego ze stałą czasową tak dobraną abyś zauważył te 100Hz.
    Nie wczytywałem się w notę katalogową, ale czasami jest tak że czytając jedno wejście ADC inne powinny być zwarte do masy, może ten multiplekser wejściowy tego wymaga.
    Czy zmieniasz zakresy podczas pomiaru ?
    Jak możesz pokaż jak komunikujesz się z ADS1115. Może w sofcie masz problem.
    Pozdrawiam

    0
  • #5 13 Cze 2017 17:56
    _jta_
    Specjalista elektronik

    Przykładowa seria pomiarów (dodałem kondensator 47nF na wejściu):

    Code:
     30568 =  1910.500mV
    
     30569 =  1910.562mV
     30569 =  1910.562mV
     30570 =  1910.625mV
     30568 =  1910.500mV
     30570 =  1910.625mV
     30571 =  1910.688mV
     30570 =  1910.625mV
     30566 =  1910.375mV
     30568 =  1910.500mV
     30569 =  1910.562mV
     30571 =  1910.688mV
     30571 =  1910.688mV
     30563 =  1910.188mV
     30569 =  1910.562mV
     30569 =  1910.562mV
     30570 =  1910.625mV
     30570 =  1910.625mV
     30563 =  1910.188mV
     30568 =  1910.500mV

    Ustawienia: szybkość przetwarzania 860/sekundę (d=2), skala +-2048mV.
    Program użyty do mierzenia:
    Kod: python
    Zaloguj się, aby zobaczyć kod

    Bez tego czekania 40ms (może wystarczyłoby mniej) po każdym pomiarze kondensator się rozładowywał i parę pierwszych wyników było znacznie większych od reszty.

    A tu seria pomiarów z dużo większą niestabilnością:
    Code:
     29974 =  1873.375mV
    
     30049 =  1878.062mV
     29977 =  1873.562mV
     30033 =  1877.062mV
     30055 =  1878.438mV
     30000 =  1875.000mV
     30055 =  1878.438mV
     29943 =  1871.438mV
     30034 =  1877.125mV
     30050 =  1878.125mV
     30011 =  1875.688mV
     30061 =  1878.812mV
     29975 =  1873.438mV
     30034 =  1877.125mV
     30003 =  1875.188mV
     30021 =  1876.312mV
     30064 =  1879.000mV
     29990 =  1874.375mV
     30035 =  1877.188mV
     29946 =  1871.625mV

    0
  • #6 13 Cze 2017 18:16
    viayner
    Poziom 34  

    Witam,
    myslalem ze to wyglada gorzej, zobacz tabelke na stronie 12 datasheet'u. Masz wachania rzedu +-250uV troche mi to wyglada na prace w zakresie "szumow wlasnych".
    Dodaj uklad calkujacy na wejsciu to powinno pomoc, powiedzmy do prob 100n-1u + 1-10k.
    Pozdrawiam

    0
  • #7 13 Cze 2017 21:17
    _jta_
    Specjalista elektronik

    To ma układ całkujący (82kΩ. 47nF) na wejściu... (o ile kondensator się nie odlutował, ale wyniki pomiarów wskazują, że on jest)

    Z tymi wahaniami jest różnie, w drugiej serii było około 7.5mVpp.

    0
  • #8 23 Cze 2017 20:46
    _jta_
    Specjalista elektronik

    Tak sobie właśnie policzyłem: ADC ma zakres wyników -32768..+32767 i impedancję wejściową Ri=710k, ale tylko podczas przetwarzania - kiedy nie przetwarza, wejście jest izolowane; jeśli na wejściu ADC jest kondensator o pojemności C, a czas przetwarzania jest T, to na skutek rozładowywania kondensatora prądem impedancji wejściowej ADC napięcie zmieni się o T/(Ri*C); jeśli ta zmiana ma być mniejsza od '1' w wyniku, to potrzebujemy Ri*C>T*32768; powiedzmy, że T=4ms, to potrzeba C>185uF - raczej nie znajdę kondensatora o takiej pojemności, który by nie miał dużej i zmieniającej się upływności, która zafałszuje pomiar. A to oznacza, że mierzone napięcie musi zmieniać się podczas pomiaru, co może powodować błędy w działaniu ADC.

    ADC z układem całkującym 82kΩ 47nF działa w miarę stabilnie przy bardzo wolnym przetwarzaniu, około 125ms na całość - a im szybsze przetwarzanie, tym większy rozrzut wyników (jakkolwiek uśrednienie wyników pomiarów zrobionych np. w ciągu 1 sekundy daje wyniki o podobnym rozrzucie przy różnych szybkościach przetwarzania). Działa też stabilnie z kondensatorem o dużej pojemności - chyba podłączałem 10000uF. Być może źródłem błędów jest prąd zmienny generowany przez wejście ADC, który zmienia napięcie na kondensatorze. Ale mam wrażenie, że średni prąd wejścia ADC podczas przetwarzania jest taki sam i przy wolnym, i przy szybkim przetwarzaniu.

    Wczoraj wykryłem, że ograniczenie częstotliwości odczytów ADC przy szybkim przetwarzaniu do około 320/sekundę wynika z szybkości przesyłania danych magistralą I2C z domyślną szybkością 100kbit/s - ustawienie sterownika I2C na największą szybkość (gówna granica High Speed = 3.4Mbit/s) pozwoliło podwoić częstotliwość odczytów ADC.

    Wygląda na to, że sensowne mogłoby być podłączenie na wejście wtórnika na wzmacniaczu operacyjnym. Problemem jest niskie napięcie zasilania (3.3V), konieczność przenoszenia sygnałów prawie rail-to-rail, i wymaganie małego błędu, a przede wszystkim małego dryfu długoterminowego tego błędu - czy jest jakiś wzmacniacz, który by się do tego nadawał? A może jest jakiś układ pozwalający na uzyskanie małej impedancji źródła sygnału dla ADC bez konieczności użycia wzmacniacza o bardzo dużej stabilności? Np. z wykorzystanie pojemności Millera?

    Nota katalogowa ADS1115 sugeruje użycie OPA335 jako przedwzmacniacza (maksymalny błąd przy 25°C 5µV). Do innego, ale podobnego ADC nota sugeruje OPA2337, ale on ma dużo większy błąd.

    0
  • #9 25 Cze 2017 09:47
    _lazor_
    Moderator Projektowanie

    Zawsze możesz jeszcze zastosować filtry cyfrowe jakiś prosty uśredniający czy FIR. Nie jest to rozwiązanie idealne, ale zawsze poprawi wyniki pomiarów.

    0
  • #10 25 Cze 2017 11:59
    _jta_
    Specjalista elektronik

    Można i będę to robił, ale chciałbym również poprawić co się da filtrem analogowym - czy ktoś tego próbował, z jakim wynikiem?

    Chciałbym też wiedzieć, co w tym układzie się dzieje w większej skali czasowej - mierzę napięcie na kondensatorze i mam wrażenie, że im większa odległość w czasie, tym większe wahania różnic wyników pomiarów - skąd to się bierze?

    W załączniku seria pomiarów z 8 godzin uśrednianych po 3 sekundy (dane to 100*średnia_z_3s - pomnożyłem przez 100, żeby mieć dużą rozdzielczość w liczbach całkowitych) + program, który to wczytuje - trzeba rozpakować i napisać "./tca3al.py -ml < ca8h1.ll", wtedy program policzy logarytmy z przeczytanych danych, dofituje do tego prostą (teoretyczny wzór na rozładowanie kondensatora przez opornik U=U0*exp(-t/τ), czyli ln(U)=ln(U0)-t/τ, do tego powinna pasować prosta) i policzy σ² z różnic danych i dopasowanej prostej. Dla 8h √(σ²) daje wartość kilkanaście razy większą, niż dla 30m.

    0
  • #11 27 Cze 2017 20:32
    _jta_
    Specjalista elektronik

    No, trochę się wyjaśniło - wzrost σ² wynikał z nieliniowości ADC.

    Jako wzmacniacz rail-to-rail mógłby być ISL28133. Niestety SMD - czy jest podobny DIL z rozstawem 2.54mm?

    Jeszcze trochę się wyjaśniło: sporą nieliniowość ADC widać tylko przy dużej impedancji źródła (u mnie 82k) z kondensatorkiem
    - bez niego wynik jest niestabilny, a po uśrednieniu nieliniowości są małe, przy małej impedancji źródła charakterystyka jest liniowa.

    0