[AD2][Pascal] Model zasilacza na LM723 i MCP41HV51103 | pomiary Iadj w LM317 | SPI - tryptykowe postscriptum

Tutaj umieszczamy tematy związane z językami programowania niepasującymi do innych działów.
Regulamin forum
Temat prosimy poprzedzić nazwą języka umieszczonego w nawiasach kwadratowych np. [Pascal].
Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

[AD2][Pascal] Model zasilacza na LM723 i MCP41HV51103 | pomiary Iadj w LM317 | SPI - tryptykowe postscriptum

Postautor: tasza » niedziela 30 gru 2018, 00:07

♬ ☘ Moja muzyka do kodowania ♬ ♬ ♬ ☘
♫ ♩ ♪ Roman Kostrzewski ⚡ ☘ ⚡ z albumu Woda - Anioły Nocnych Burz♪ ♩ ♫
https://youtu.be/SxtOY-Pt_co



A to w mocnym nawiązaniu do ostatniego odcinka (3-C) wieczornej pisanki o SPI i Analog Discovery 2 - oczywiście, że można sobie wyobrazić zastosowanie kostki potencjometru MCP41HV51103 w układzie kontroli napięcia na bazie jakiegoś popularnego regulatora, zaraz zobaczymy.

Mega offtopic o pomiarze Iadj w LM317

Na pierwszy ogień wzięłam ogólnie znany regulator LM317 niepomna informacji z datasheet, że rezystory w dzielniku konfigurującym napięcie wyjściowe jakby rzędem wielkości odbiegają od tych 10kΩ mojego cyfrowego potencjometru i wszelkie kombinowanie i tak w efekcie da tak zwaną popelinę, a co mi tam!
Ale faktycznie, układ był totalnie nieregulowalny, za to napotkałam ciekawostkę związaną z samą aplikacją LM317 i tytułowym prądem Iadj, no a skoro udało mi się to matematycznie ogarnąć - pokazuję co i jak.

Testowe poletko doświadczalne to fotografia poniżej:

000_lm317_50uA.jpg


I na niej właśnie widzimy pokazywany przez Meratronik V640 (IDC@0.15mA) prąd Iadj w kwocie 50uA, zgodnej z grubsza z dokumentacją kostki. Tylko przy okazji wyszło kwadratowe jajo w postaci takiej, że po włączeniu w nóżkę ADJ mikroamperomierza - zwiększyło mi się napięcie wyjściowe! Nieznacznie i nie jest to w sumie zaskakujące - w końcu rzeczywisty przyrząd pomiarowy w jakiś tam sposób wpływa na prace układu. No ale żeby tak mój cudny V640 zepsuł wyliczony regulator? To do wyjaśnienia zatem.

Schemat układu testowego jak na rysunku:

001_lm317_sch.png


Rezystory zmierzone omomierzem w V543, wartości pewnie niosą błąd samego miernika, ale do obliczeń zawierzam im bezkrytycznie, a wynoszą odpowiednio: R1=284Ω R2=1986Ω

Pomiary ze zwartym i aktywnym amperomierzem widzimy na zdjęciu (dwa od lewej):

002_v640.jpg


No i oczywiście pada pytanie - dlaczego akurat tyle i co to ma wspólnego z parametrami miernika?

Moja teoria spiskowa brzmi następująco - napięcie Uref LM317 zsumowało się ze spadkiem napięcia na rezystancji amperomierza, takie `nowe` napięcie referencyjne, z pasożytniczą wkładką spowodowało zmianę napięcia wyjściowego.
Dla załapania kontekstu wnętrze kostki LM317: :arrow: http://www.ti.com/ds_dgm/images/fbd_slvs044x.gif , a obliczeniowo to będzie tak:

Uout=Uref(1+R2/R1)

Wyliczmy sobie z tego 'hipotetyczne' Uref z jakim pracuje nasz regulator. Tak, w katalogu podają średnią wartość 1.25V, ale ona i tak ma pewien rozrzut, zatem kalkulator w dłoń:

Uref=Uout/(1+R2/R1)

najpierw podstawiamy napięcie wyjściowe przy zwartym mikroamperomierzu i mamy (chwilowo po aptekarsku, zaokrąglać będziemy kiedyś, jak ocenimy skalę wielkości ):

Uref=10.171/(1+1986/284)=1.272V

A teraz wyliczmy Uref` czyli wartość która się zrobiła na skutek włączenia V640 w układ:

Uref`=10.295/(1+1986/284)=1.288V

Oooo, no proszę - rozjechało się jakby, zgodnie z oczekiwaniami, wyliczmy o ile:

ΔUref=Uref`-Uref=0.016V

Ojtam ojtam, raptem jakieś 16 mV i tyle krzyku. No ale zerknijmy teraz na dokumentację V640, co piszą o deklarowanym spadku napięcia na zaciskach miernika w trybie amperomierza i na interesującym nas zakresie. Strona 9, akapit "Pomiar prądów stałych i zmiennych" - dla 150uA jest to 50 mV.
To dla maksymalnego wskazania dla zakresu oczywiście, zatem dla interesującego nas prądu 50uA będzie to 1/3 wartości czyli 50mV/3 czyli ... ~16mV. Tadam!
Taki właśnie spadek napięcia Ua wprowadził nam kolega wskazówkowy i on się jak widać uwikłał w równania. Na zdjęciu wyżej (pierwsze po prawo) mamy wskazywaną przez V543 wartość 15.5mV. To maleńkie wartości, plątanina kabelków też nie pomaga - ale widzimy, że rozumowanie ma chyba jakiś sens.

Aha, możemy przyjąć, że pomiar spadku napięcia na mikroamperomierzu nie wprowadził szkodliwego rozpływy prądów - rezystancja wewnętrzna neonowego V543 skutecznie przed tym broni. No i gdyby tak było, z chwilą pomiaru ruszyła by się wskazówka na V640, a nic takiego nie miało miejsca.

Weryfikacja tego spostrzeżenia już zupełnie dla ciekawości - a weźmy i zmierzmy ten prąd Iadj innym przyrządem. No to wyciągamy UM112 jako amperomierz na zakresie 0.1mA.

003_um112_int.jpg


Jak widać odczyt już nie jest taki okrągły - 48uA, ale to i tak teraz detal - napięcie wyjściowego rozjechane jeszcze bardziej. Liczymy zatem, jak poprzednio:

Uref=10.170/(1+1986/284)=1.272V

a dla zepsutego Uout, z aktywnym miernikiem LM112:

Uref`=10.405/(1+1986/284)=1.302V

Ponownie delta:

ΔUref=Uref`-Uref=0.030V jako nasze hipotetyczne Ua.

I chwila prawdy: :arrow: http://multimetry.tzok.eu/galeria/UM-112_1.jpg dla zakresu DC 0.1mA mamy podane 0.06V, a ponieważ operujemy wartością prądu w połowie zakresu to należy nam się wyliczone powyżej 30mV. Ot i całą filozofia, wszystko się spina idealnie.

A na koniec fotka z pomiarów - pierwsza po prawo to spadek napięcia na zaciskach UM112

004_um112.jpg


Może ktoś zapyta, po jasną choinkę tak się podniecać takimi drobiazgami? W sumie można wzruszyć ramionami i lecieć dalej przez siebie, ale chyba warto wiedzieć jakie skutki uboczne niesie zapięcie przyrządu, szczególnie gdy pracujemy z tak małymi sygnałami. A jak widać konsekwencje podłączenia zupełnie biernego amperomierza typu UM112 są całkiem widoczne, skok napięcia wyjściowego o prawie 200mV w skali 10V daje tu do myślenia, a dziwadła trzeba zawsze sprawdzać. I wracamy do tematu głównego...

UL7523

Głównego bohatera wieczorynki - kostkę UL7523 naszej rodzimej produkcji CEMI widzimy na fotografii poniżej:

005_lm723.jpg


Układzik z wycyrklowanym na 10V napięciem wyjściowym widzimy na schemacie:

006_lm723_sch.png


Kostka pracuje ze zredukowanym przez dzielnik R1/R2 napięciem referencyjnym, ustawiło się na jakieś 3V z grosikami, i to jest minimalne napięcie jakie będzie miał nasz regulator.
Napięcie maksymalne aplikacji wynika ze wzorku:

Uout=Uref*(R6+R4+R5)/R6

gdzie R5 to nasz cyfrowy nibypotencjometr zaszyty w układzie U1.

Łatwo sobie zweryfikować, jakie wartości przyjmie napięcie wyjściowe, zależenie od położenia cyfrowego suwaka, dzielącego nasze 10kΩ na 255 wartości - dla trzech skrajnych zrobimy to przy pomocy aplikacji WaveForms:

100_00.jpg
101_80.jpg
103_FF.jpg


Mając instalację pod ręką można przy okazji zbadać sobie, o ile mV zmieni się napięcie wyjściowe przy zmianie jednego bitu słowa sterującego, zrobimy to także w trzech miejscach, aby nie było dyskusji na temat ewentualnej nieliniowości - tabelka:

Kod: Zaznacz cały

dane  Uout      V/bit
FF    10.506    0.027
FE    10.479   
...
81    6.961     0.028
80    6.933     
...
01    3.396     0.030
00    3.366     


Jak widać, możemy spokojnie przyjąć środkową wartość - 28mV/bit, małe sprawdzenie:

104_FFx.jpg


167*0.028=4.67, to tego dodajemy minimalną wartość regulacji (dla 0h) czyli 3.36 i mamy widoczne powyżej 8V z drobnym okruszkiem. Tu daje się we znaki obecność pasożytniczej rezystancji cyfrowego suwaka, która w sumie wypadałoby uwzględniać w obliczeniach, ale najwięcej złego robi niska rozdzielczość potencjometru - granulacja na poziomie 255 nie pozwoli nam na mega dokładne ustalenie wartości.

wielowątkowość - wszystko na raz

I dlatego demko aplikacji w Pascal będzie zrobione tak, że Analog Discovery 2 będzie nie tylko zadawało cyfrową wartość do potencjometru, ale także będzie mierzyło aktualne napięcie wyjściowe i korygowało nastawę, tak aby uzyskać oczekiwaną wartość.

Cała aplikacja dostępna jest tu: :arrow: https://github.com/bienata/AnalogDiscov ... M723_mtd_1

Chce tu przy okazji zwrócić uwagę na pewną nowość - a mianowicie - jest to programik wielowątkowy, no a dokładnie - dwuwątkowy. Po prostu - proces regulacji napięcia wyjściowego to nieustanne odczyty bieżącej wartości i korekcja ustawień potencjometru, tego nie da się w sensowny sposób wpleść w pętlę główną okienkowej aplikacji. Albo inaczej - obliczenia i komunikacja z Analog Discovery 2 wykonywane w pętli głównej (czyli głównym wątku) spowodują, że program będzie się ciął jak emo po śmierci chomika i okienko zupełnie straci responsywność. Wystarczy jednak całe przetwarzanie zapakować w nadpisaną metodę Execute własnej klasy dziedziczonej z TTHread i sterowanie zasilaczem będziemy mieli jakby w tle. Oczywiście o wątek poboczny trzeba zadbać - w FormCreate okna głównego tworzymy jego egzemplarz, w FormClose - nakazujemy zakończyć pracę i zwalniamy zasoby. Do komunikacji pomiędzy wątkami służy specjalnie oddelegowana metoda UpdateVoltageSettings, która pobiera nastawę suwaka z okna oraz odświeża odczyt napięcia na podstawie tego, co zmierzyło AD2.

Sam algorytm regulacji to pewna wariacja na temat regulacji nadążnej - wartość docelowa jest osiągana na podstawie znaku wartości błędu (różnica zadajnik-pomiar), szybkość regulacji określa kwant, z jakim modyfikujemy wartość potencjometru. Można chwilę poeksperymentować z różnymi ustawieniami podawanymi w Inc/Dec wartości roboczej dla potencjometru - zobaczymy jak osiąga się kompromis pomiędzy dokładnością regulacji i szybkością stabilizacji wyniku, ot - zabawka na zimowy wieczór. Zapraszam na filmik:

https://youtu.be/fAcX33NATAw

Z tradycyjnych wniosków to może takie: nawet z drobiazgu w postaci wpięcia mikroamperomierza można zrobić temat na poemat. Cyfrowy potencjometr nadaje się do pracy w aplikacji LM723, ale aby go opanować numerycznie trzeba się nieco nagimnastykować, to nie jest rasowy przetwornik C/A tylko bez urazy - garść rezystorów. No i po trzecie - WaveForms SDK jak się okazało nie sprawia problemów w aplikacjach wielowątkowych i obsługę AD2 możemy scedować na wątki pracujące w tle. I tym optymistycznym akcentem mówię - dobranoc.

#slowanawiatr
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: [AD2][Pascal] Model zasilacza na LM723 i MCP41HV51103 | pomiary Iadj w LM317 | SPI - tryptykowe postscriptum

Postautor: dambo » niedziela 30 gru 2018, 00:49

tasza pisze:Może ktoś zapyta, po jasną choinkę tak się podniecać takimi drobiazgami?


Nie no chyba wszyscy tu też rozkminialiby takie drobiazgi :)

Nawiasem co do sterowania stabilizatorem - feedback w postaci pomiaru faktycznego napięcia to chyba coś "must have" - z dokumentu DS20005209 dla tych potencjometrów widać, że sobie lubią popłynąć wraz z temperaturą. Jeśli jeszcze nie rozłożyłaś układu - to może sprawdzenie jak to się zachowuje przy zmianie temperatur byłoby ciekawe?
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: [AD2][Pascal] Model zasilacza na LM723 i MCP41HV51103 | pomiary Iadj w LM317 | SPI - tryptykowe postscriptum

Postautor: tasza » niedziela 30 gru 2018, 21:29

Rzeczywiście, warto pochylić się nad aspektami temperaturowymi tych ciekawych układów, choć mam wrażenie, że w amatorskiej konstrukcji te potki termicznie "odpłyną" jako ostatnie.

Nie, nie rozmontowałam układziku zasilacza, ale kontrolowane podgrzewanie całości chyba nie ma sensu, nałożą się współczynniki temperaturowe starego LM7523, rezystorów z Biedry no i w końcu tego potka, lepiej znacznie zrobić teścik w wyizolowanym obwodzie.

Na zdjęciu poniżej poletko doświadczalne, jeżeli komu górne zdjęcia skojarzą się z ołtarzykiem, na którym poganie składali bożkom swym ofiary - to będzie to jak najbardziej słuszne.

podstawka_lokowka.jpg


A na serio - nie chciałam ryzykować przegrzania płytki stykowej, stąd odsunięcie MCP41HV na podstawce, obok siedzi LM35 do zgrubnej kontroli temperatury. Bo tu powstaje trudne zagadnienie - jak określić temperaturę samej kostki potencjometru?
Przyjęłam za dopuszczalne zupełnie zgrubne szacowanie zakładające, że oba układy będą w tym samym strumieniu gorącego powietrza z lokówki, pomijam różnice w termoprzewodnictwie obudów, wpływ ich kształtu, etc/itd. Bo chcąc to zrobić porządnie - pozostaje tylko bezstykowy termometr albo kamerka termowizyjna, tego pod ręką nie mam.

Skrajne wartości rezystancji układu Rab przy zasilaniu +20V i dwóch skrajnych temperaturach:

min_max.jpg


Jak widać rozjazd wartości nie jest aż tak tragiczny, biorąc za odniesienie wartość w temperaturze pokojowej, przy 90°C potek popłynął w dal o raptem 0.6% pierwszej wartości, to jest IMHO całkiem dobry wynik.

Sporo informacji o tym i wykresów jest w osobnym względem d-s dokumencie:
MCP41HVX1 Typical Performance Curves :arrow: http://ww1.microchip.com/downloads/en/D ... 05209A.pdf

A teraz policzmy trochę:

ΔR=R24C-R90C=10159Ω-10097Ω=62Ω

procentowo R%=62/10159=~0.6% - nieźle.

W datasheet w AC/DC CHARACTERISTICS napisali, że Nominal Resistance Temperature Coefficient wyrażony jako ΔRab/ΔT jest 50 ppm/°C w zakresie -40°C...+85°C, u nas zgrubnie szacowane ΔT to 90-24=66°C, zatem szacowana zmiana R powinna być: ΔR=50/1E6*10E3*66=33Ω
No i prawie, prawie z zachowaniem rzędu wielkości - szacowanie pasuje. Pamiętajmy, że mamy inne niż w d-s warunki zasilania i temperaturę określamy "na oko". A na oko, to chłop w szpitalu...

Filmik na koniec, lokówka w tle a WaveForms w roli loggera temperatury:

https://youtu.be/S09AdaVpxto


#slowanawiatr
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: [AD2][Pascal] Model zasilacza na LM723 i MCP41HV51103 | pomiary Iadj w LM317 | SPI - tryptykowe postscriptum

Postautor: dambo » wtorek 01 sty 2019, 21:19

Super teścik, dziękuję bardzo :) Faktycznie dobrze radzą sobie te układziki
Nowy blog o tematyce embedded -> https://www.embedownik.pl/


Wróć do „Inne języki programowania”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości