Skocz do zawartości

Relatywnie dokładny pomiar napięcia z wykorzystaniem napięcia odniesienia


Marooned

Pomocna odpowiedź

Hej

Wspomniałem w wątku o aktualnych projektach na tapecie, że zmontowałem prosty układ, który ma za zadanie siedzieć w aucie, monitorować napięcie akumulatora i wysyłać dane po sieci. Wykorzystałem do tego WeMos D1 mini i wszystko śmiga poza dokładnością pomiaru napięcia.

Wemos bazuje na ESP8266, którego ADC ma zakres 1V. Płytka ma wbudowany podzielnik 100kΩ : 220kΩ by rozszerzyć ten zakres do 3,3V. Do tego podzielnika dorzuciłem szeregowo dwa rezystory o łącznej rezystancji ok. 1,2MΩ by mieć zakres ~16V. To niestety daje dość sporą impedancję. Wolałem nie zmieniać wbudowanych rezystorów, jeśli to nie będzie bardzo konieczne.

Niestety, precyzja pomiaru okazała się na tyle słaba, że postanowiłem poszukać lepszego sposobu. Wystarczyło lekko chuchnąć na płytkę, by natychmiast pomiar zmienił się o ~0,2V. Przy zmianie temperatury również zauważyłem jeszcze większe różnice. Do tego po skalibrowaniu pomiaru dla 12V, dla np. 10V zmierzył 9,6V. Niestety, ESP3266 nie pozwala na podłączenie napięcia odniesienia dlatego pomyślałem o zewnętrznym ADC i tu zaczyna się w końcu pytanie 😉

Czy taki zewnętrzny ADC będzie sensownym podejściem? Jaki układ byście polecili? Przyznam, że nie sprawdzałem jakby poradził sobie AVR z napięciem odniesienia, ale mam tylko 5V pod ręką. Zasilanie biorę z przetwornicy i tu jest ekstremalnie stabilne 3,3V, więc to właśnie zasilanie chciałbym wykorzystać jako napięcie odniesienia. Gdyby ESP miał 2 ADC, to mógłbym tak zrobić. Ewentualnie może jakiś prosty multiplekser na 2 tranzystorach zamiast ADC? Chociaż nie wiem, czy mierzenie swojego Vcc ma tu sens i coś da.

Cały kod mam w funkcji setup(), więc pomiar napięcia jest zaraz po wybudzeniu ESP z głębokiego snu (ale przed włączeniem WiFi, bo na to bardzo zwracano uwagę, że po włączeniu WiFi ADC szaleje). Może to też wina i powinienem dać mu czas na rozruch?

Generalnie nie zależy mi na rozdzielczości pomiaru (0,1V spokojnie wystarczy) co na jego dokładności (by mieć pewność, że jak zmierzył 10,3V to dokładnie tyle jest - powiedzmy +/-0,05V? nie za dokładnie?), więc więcej bitów w ADC nie będzie tu miało kluczowego znaczenia.

Link do komentarza
Share on other sites

Tradycyjnie, skoro się nie znam to się wypowiem. Przetwornik jest tak dobry jak on sam (mówimy o konstrukcji, technologii i błędach w nie "wbudowanych") oraz jak jego napięcie odniesienia (Vref). Po pierwsze w karcie katalogowej układu esp8266ex nie znalazłem słowa o referencji i niewiele więcej o samym przetworniku - to bardzo źle wróźy borąc pod uwagę, że datasheet samego tylko ADC (pewnej dobrej firmy) może mieć 50 stron w tym 30 wykresów i dziesiątki parametrów w tabelkach. Wiemy tylko, że przetwornik to 10-bitowy SAR i że Vref to 1V. Żadnych prędkości, żadnej specyfikacji napięcia odniesienia, żadnych czasów wstawania Vref po wybudzeniu, nic o interfejsie analogowym (prądy wejściowe pinu, pojemność próbkująca, czas samowania, pasmo analogowe itd), ani słowa o błędach przetwarzania, o szumach, ENOBs itd itp, słowem - albo projektując ten scalak wstawili moduł ADC z biblioteki nie mając wielkiego pojęcia o tym co wyjdzie, albo rzeczywiście jest tak źle, że nie ma się czym chwalić. Tak źle i tak niedobrze. Próbując ocenić to co piszesz, to na pewno:

Źródło Vref na pewno ma jakiś czas wstawania i to mogą być milisekundy do uzyskania wymaganego poziomu i czasem setki milisekund do ustabilizowania sytuacji termicznej w okolicach tego elementu

Wiele nowych przetworników ma autokalibrację. Dzięki temu  można trochę uprościć technologię albo w tej samej uzyskać lepsze parametry, ale to wymaga dodatkowych cykli pracy tego bloku. Czasem jest to proste: w AVR pierwszy pomiar po odpaleniu ADC (czyli np. w Arduino każdy, bo tak napisali analogWrite) jest po prostu dwa razy dłuższy a czasem mamy całą procedurę: w STM32 mamy specjalne rejestry, bity i tryby kalibracji. Jak jest tutaj i czy trzeba coś zrobić "ręcznie"? Nie wiadomo.

Wejście analogowe nie ma nieskończonej impedancji wejściowej. Po pierwsze są prądy upływu a po drugie kondensator próbkujący pobiera z wejścia ładunek (czyli przez chwilę prąd), bo przecież musi się naładować aby w czasie samej konwersji napięcie się nie zmieniało. ADC typu SAR są na to bardzo czułe. Prąd wejściowy oznacza, że źródło sygnału powinno mieć małą impedancję. O ile upływności są rzędu pojedynczych nA co w normalnych warunkach nie ma wielkiego znaczenia, o tyle prąd ładowania układu Sample/Hold już spokojnie widać. Dlatego napędzanie wejść przetworników SAR z wysokoomowych dzielników napięcia zawsze źle się kończy. Żeby to działało sensownie, czysty dzielnik powinien być zbudowany z oporników po max. kilka kΩ. Rzecz jasna sprawę załatwia kondensator (nawet 1-10nF) podłączony równolegle do dolnego opornika dzielnika. To co prawda tworzy filtr dolnoprzepustowy i opóźnia odpowiedź, ale w zastosowaniach stałoprądowych nie ma zanczenia. No chyba, że podłączasz napięcie i zaraz chcesz mieć wynik, no ale nie jest to "zastosowanie stałoprądowe" tylko bardziej impulsowe. Wtedy trzeba dobrze to policzyć - ile czasu potrzebuje dany układ RC do dojścia do napięcia wejściowego z dokładnością lepszą niż  np. 0.1% (przypadek 10-bitowego ADC).

Układy z opornikami o dużych wartościach rezystancji są niestabilne. Nie chodzi tu o same oporniki (choć te szumią zgodnie z równaniem Johnson-Nyquist'a), araczej o otoczenie. W typowej palikacji jest jakaś płytka z laminatu, jakieś lutowania, jakieś ślady topnika, jakaś wilgoć itp. O ile w przypadku używania rezystorów do 100k wszystki ete czynniki są pomkijalne, o tyle gdy wchodzisz w zakresy MΩ wszystkie te rzeczy zaczynasz widzieć. Laminat chłonie wilgoć, ślady topnika trochę przewodzą,, para wodna wykrapla się na zimnych elementach itd itp. To wszystko sprawia, że bez specjalnego traktowania (lakierowanie, szczelne obudowy) elektronika raczej nie używa dużych wartości oporników albo przynajmniej bardzo na to uważa. Oczywiście chuchanie może mieć wpływ zarówno "wilgotnościowy" jak i termiczny, ale nawet najgorsze oporniki płyną o 200ppm z temperaturą, a tego nie zauważyłbyś w wynikach 10-bitowego ADC. Także stawiam na wilgoć (albo beznadziejne Vref, ale to zwczajnie musiałoby być uszkodzone).

Nawet z kiepskiego, ale poprawnie działającego SAR o długości 10 bitów powinieneś dostać co najmniej 7-8 bitów znaczących, co oznacza dokładność rzędu 0.5 - 1%. I to tylko "na starcie", w dopiero co zmontowanym układzie. Po kalibracji, gdy pozbywasz się błędów skali i zera i zostają tylko błędy nieliniowości powinieneś mieć jeszcze 2 razy lepiej czyli 0.2 - 0.5%. Jeśli widzisz tak złe zachowanie ADC jak opisujesz, obejrzyj podejrzliwym okiem projekt i spróbuj sprawdzić, czy do czegoś co opisałem powyżej można się przyczepić. Niestety zdzarza się, że moduły tego typu projektują ludzie których jedynym wcześniejszym dokonaniem był projekt PCB do 555. A ponieważ zamówili płytkę w Chinach i zadziałało, to "umieją już w CAD i elektronikę" i zabierają się za rzeczy o których pojęcia nie mają.

Być może jakąś odpowiedź nasunie Ci prosty test: po włączeniu mierz wielokrotnie w tych samych odstępach czasu i zobacz jak "płyną" wyniki. Jeśli są zbieżne do jakiejś wartości, to cały układ działa wolniej niż myślałeś, ale w końcu działa stabilnie. Ważne jest jednak, by środowsiko testowe było "czyste": nie włączaj w tym czasie WiFi (bo to kolejne interferencje RF z anteny a to może bardzo popsuć wyniki pomiarów), zawsze dawaj tyle samo czasu na ochłodzenie płytki i powrót do tych samych warunków termicznych itp. Bardzo niepokojące sa nieliniowości jakie zaobserwowałeś, bo tu  już całkowicie dyskwalifikuje cały tor pomiarowy. Dzielnik (pomijając wpływy środowiska) tak się nie zachowuje, ADC też nie, ale może Vref płynie wraz z zasilaniem? Przyjrzyj się temu próbując ograniczyć wpływ innych czynników (radio, temperatura, wilgotność)..

Napisz jak poszło.

 

 

  • Lubię! 2
Link do komentarza
Share on other sites

Na dniach spróbuję znaleźć czas by do tego znów usiąść. Zbiorę kilka odczytów, potem włączę wifi i znów zbiorę i wyślę wszystko. Spróbuję też zajrzeć oscyloskopem na to wejście i zobaczyć czasy narastania po wybudzeniu. Dam znać jak zbiorę wyniki.

Sama przetwornica cały czas podaje 3,3V, więc układ nie jest odcinany od zasilania i jest ono bardzo stabilne.

Link do komentarza
Share on other sites

Stosując oporniki MΩ nie zapominaj, że sonda oscyloskopu może mieć porównywalną impedancję wejściową - bierz to pod uwagę mierząc napięcia z dzielnika, także multimetrem.

20 minut temu, Marooned napisał:

..i jest ono bardzo stabilne

Rzadko która przetwornica daje czyste (w sensie analogowym) napięcie. Możesz taką mieć, to zależy od konstrukcji pętli sprzężenia zwrotnego i trybu pracy (a ten może zależeć np. od obciążenia i nie jest dany raz na zawsze, choć czasem można to wybrać wymieniając pobór mocy samego scalaka przetwornicy na tętnienia), ale nie zdziw się jeśli oscykloskop w trybie sprzężenia AC pokaże np. piłę 100mV nałożoną na "stabilne" wg multimetru 3.3V. Układ 8266 nie ma o ile wiem osobnego pinu VREF więc jego referencja nie ma teź osobnego filtrowania jak w każdym szanującym się scalaku z ADC. Vref zasilane jest zapewne z nóżek VDDA (zasilanie analogowe), ale jeśli autor modułu podłączył to bezpośrednio do głównego VDDPST (zasilanie cyfrowe) do którego zapięte jest też zasilanie VDD3P3 (stopnia końcowego nadajnika RF) bo tak prościej i taniej, to możesz sobie wyobrazić co tam się dzieje.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Udało mi się w końcu zmierzyć napięcie na wyjściu przetwornicy:

DS1Z_QuickPrint6.thumb.png.6ec000b1c5c216c44857d4aeda139ff5.pngDS1Z_QuickPrint7.thumb.png.ce0159ba12e7194f5e396aeedafdefee.png

Co ciekawe, podobnie sieje też na wejściu nawet jak zasilałem z akumulatora. Ale są to częstotliwości ~11MHz i ~94Mhz, więc szybkozmienne.

Nie przybliża mnie to jednak do dokładnego pomiaru przez ADC...

Link do komentarza
Share on other sites

To nie są sygnały z przetwornicy, a przynajmniej nie te których szukasz. Nie wszystko to co widzisz na ekranie ma sens. Podejrzewam że są to jakieś zakłócenia RF i gdybyś zwarł sondę do masy też byś je widział. To co ma wpływ na działanie pomiarów ADC i co produkuje przetwornica w trybie histerezowym (burst) to piła o częstotliwościach akustycznych. A częstotliwości samego przełączania małych przetwornic z reguły nie przekraczają 1MHz. Te większe to nawet i 70kHz.

Może napisz po prostu na czym zrobiłeś zasilanie. I czy robiłeś pozostałe eksperymenty o których pisałem.

  • Lubię! 1
Link do komentarza
Share on other sites

No ale to jest spora przetwornica boost i jakoś mi tu nie pasuje. Jaki jest w takim razie schemat zasilania? Co jest źródłem, po co podwyższasz napięcie i jak potem schodzisz na wymagane 3.3 czy 5V? Naprawdę muszę Cię ciągnąć za język? Kto jak kto, ale chyba Ty powinienieś doceniać wartość kompletnej informacji.

  • Lubię! 1
Link do komentarza
Share on other sites

Hmm, rzeczywiście w nazwie ma to boost. Przyznam, że sięgnąłem po taką, bo tylko taką miałem pod ręką (🙄). Mimo nazwy daje ona ustawioną wartość napięcia (3,3V) dla napięcia wejściowego od 3,6V wzwyż. Ale rzeczywiście, przyznaję się, że nie analizowałem nazwy i tego, że może ona być nieodpowiednia. Pytanie czy jest, skoro daje wymagane napięcie na wyjściu?

Źródłem docelowo ma być akumulator samochodowy. Do testów korzystałem zarówno z zasilacza (Korad KA3005D) jak i LiPola (1S oraz 3S).

Zgadzam się co do kompletnej informacji. Chyba po prostu nie pomyślałem jakie informacje tutaj mogą się jeszcze przydać i skupiłem się na samym ADC, a nie jego otoczeniu.

  • Lubię! 1
Link do komentarza
Share on other sites

Wiesz, topologia boost ma galwaniczne połączenie wejścia z wyjściem przez dławik i diodę. Jeśli podłączyłeś do wejścia 5V to jest spora szansa, że dostałeś coś w okolicach 3.5V bo spadło na diodzie i trochę na rezystancji dławika. Dobrze, że nie zapodałeś 12V, bo z ESP nie byłoby co zbierać.. W tej konfiguracji przetwornica boost niczego nie stabilizuje a wręcz przeciwnie, wprowadza dodatkową impedancję szeregową.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Ale ja zapodałem 12V... Tak to wygląda:

sketch.jpg

I na wyjściu przetwornicy mam 3,3V (co widać na oscylogramie powyżej, to było przy 12V napięcia wejściowego). Wyszła moja nieznajomość zasady działania przetwornic, ale nie podpinałbym ESP zanim nie sprawdziłem, że na wyjściu mam 3,3V. Zaopatrzę się w przetwornicę step-down w takim przypadku, ale jak pisałem, ten układ działa w obecnej konfiguracji. Ot, wynik ADC wydaje się nie być precyzyjnym (jak znajdę czas, to wykonam kilka odczytów zanim połączę się z WiFi i je prześlę, ale to raczej po weekendzie).

[edited]

Ok, wiem, skąd wynika to całe nieporozumienie. Linkując do przetwornicy wpisałem DC-DC na ebay, zobaczyłem, że wygląda jak moja i podlinkowałem. Dopiero teraz widzę, że step-up i step-down są wizualnie praktycznie nierozróżnialne. Różnica tkwi w zastosowanym układzie. Ja mam , czyli step-down. Uff, czyli prawidłowo. Sorki za zamieszanie. Sam dałem się zrobić w bambuko 🙂

Edytowano przez Marooned
Link do komentarza
Share on other sites

🙂 Przeczytałem pierwsze zdanie i zamarłem.  No ale po edycji tem wszystko się wyjaśniło. Czyli nadal masz potężną przetwornicę, optymalizowaną do kilku amperów obciążenia napędzającą jakąś mikropłytkę. Poszukaj zatem oscyloskopem na 3.3V sygnału o częstotliwości ok. 150kHz bo taką ma wewnętrzny generator tego scalaka i taki PWM generuje na swoim głównym kluczu. Tanie płyteczki przetwornic to nie są ładnie filtrowane zasilacze laboratoryjne tylko najtańsze aplikacje układów. Są optymalne tylko w pewnych zakresach napięć we/wy i pewnych prądach. W zasadzie nie da się zrobić przetwornicy pracującej dobrze, stabilnie i bezpiecznie w szerokim zakresie tego wszystkiego co wymieniłem. Ta tutaj ma np. dławik 47uH (przynajmniejna zdjęciu) i to jest optymalne dla obciążeń w okolicach 2A. Poniżej tego prądu (a w szczególności gdy spada on poniżej kilkuset mA) prąd w cewce przestaje być ciągły tj. w cyklu pracy zaczynają pojawiać się chwile gdy indukcyjność rozładowuje się do zera. To z kolei powoduje znaczny wzrost tętnień na wyjściu. Normalnie, gdybyś obciążył to >1A miałbyś piłę napięcia o amplitudzie rzędu 50mV oczywiście nałożoną na stałe napięcie wyjściowe. W Twoim przypadku może się okazać, że masz już ponad 100mV. Tego typu scalaki mocy nie powinny być używane bezpośrednio do zasilania układów analogowych (w tym ADC/DAC) a jeśli już, to system zasilania powinien być rozproszony: duża DCDC robiąca np. konwersję 12V->6V i lokalne stabilizatory liniowe produkujące coś niższego. Korzystasz wtedy z ich aktywnego PSRR czyli tłumienia zakłóceń wejściowych, choć ten parametr zwykle kapcanieje w okolicach kHz także i tak bez jakiegoś filtrowania obejść się nie da. Ty w ostateczności, jeśli już nie masz wyjścia powinieneś dospawać na wyjście przetwornicy przynajmniej filtr LC. Kondensator który widzisz na płyce to minimalne minimum tego co ona potrzebuje do pracy. To głównie od jego ESR (jakości, ceny) zależy wielkość tętnień napięcia, bo przecież całe wahania prądu w indukcyjności płyną przez niego. W obecnej sytuacji widzisz żywcem ten kondensator pompowany raz na 6.5us impulsem prądu z dławika. To nie może dobrze wyglądać nawet gdyby to był super-polimerowy potwór za 20zł, a przecież chińczyk nie wstawił tam żadnego cuda tylko najtańszy elektrolit przy którym to już działa. A teraz policz sobie układ LC, który na 150kHz ma np. 20dB tłumienia, dokup odpowiedni dławik i kondensator (+profilaktycznie dodatkowe 100nF), wstaw na wyjście a jakość zasilania od razu się poprawi. A jak już masz te kilka mV łagodnych tętnień na 3.3V, to można myśleć o innych przyczynach problemu złych pomiarów 🙂

Być może warto na próbę wywalić DCDC i zasilić całość z jakiegoś liniowego 3.3V, np. najtańszego, skonfigurowanego opornikami LM317 lub LM1117 albo gotowca w rodzaju MCP1825-3302. Masz coś pod ręką?

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Dzięki za kolejną porcję wiedzy. Rzeczywiście jest ona poza znanym mi obszarem (w szczególności cewki, których nigdy sam z siebie nie użyłem, bo nigdy ich nie przyswoiłem). Niestety, nie posiadam żadnego innego układu do regulacji napięcia poza tą przetwornicą (oraz wspomnianym zasilaczem laboratoryjnym, ale ten wykorzystywałem do zadawania mierzonego napięcia). W razie co blok obok otworzył się oddział sporego sklepu elektronicznego, więc jest skąd pozyskiwać drobnicę. Jak znajdę kwant czasu na poszukiwania owych 150kHz to się odezwę.

[edit]
Wróć, znalazłem taki układ na AMS1117, mogę na nim spróbować.

Dzięki

Edytowano przez Marooned
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.