[PROJEKT] STM32 na analogowo – sterowanie zasilacza laboratoryjnego [1]

Konstruowanie zasilaczy sterowanych cyfrowo jest dość popularne wśród elektroników. Użycie mikrokontrolera zwiększa komfort użytkowania przy jednoczesnym zachowaniu dobrych parametrów technicznych. Najczęściej są to układy znane z realizacji analogowych, w których za pomocą przetwornika cyfrowo analogowego zmienia się wartość napięcia odniesienia i tym samym wartość napięcia wyjściowego. Użycie mikrokontrolera pozwala na łatwą regulację, pomiar i wyświetlenie napięcia wyjściowego, pomiar i wyświetlenie prądu wyjściowego i realizację zabezpieczenia nadprądowego. Można też ograniczać moc strat w tranzystorze regulacyjnym poprzez programowe przełączanie odczepów transformatora zasilającego.

Jeszcze do niedawana trzeba było realizować przetwornik cyfrowo analogowy z wykorzystaniem przebiegu PWM ze zmiennym wypełnieniem i dolnoprzepustowego filtra budowanego w oparciu o wzmacniacz operacyjny, lub stosować zewnętrzny scalony przetwornik. Obecnie moduł przetwornika cyfrowo analogowego można spotkać nawet w tanich mikrokontrolerach 8-bitowych. Mikrokontrolery STM32 Value Line maja wbudowane 2 przetworniki analogowo-cyfrowe i 2 cyfrowo-analogowe. Niska cena i bardzo dobre wyposażenie powodują, że są to elementy idealnie nadające się do budowy sterownika zasilacza o regulowanym napięciu wyjściowym.

 

Mały łyk teorii

Jednym z podstawowych elementów zasilaczy stabilizowanych jest źródło napięcia odniesienia. W stabilizatorze to napięcie jest porównywane z napięciem wyjściowym. Im napięcie odniesienia ma lepsze parametry (stabilność temperaturowa, szumy impedancja różniczkowa) tym lepsze będą  parametry napięcia wyjściowego.

Tradycyjnie najczęściej źródłem odniesienia jest dioda Zenera. Na rysunku 1 jest pokazany najprostszy układ stabilizatora. Niestabilizowane napięcie jest podawane przez rezystor R na stabilizator Dz.

Rys. 1. Prosty stabilizator napięcia

Współczynnik stabilizacji napięciowej ma wartość:

∆Uwe/∆Uref=1+R/Rz,

gdzie Rz to rezystancja różniczkowa diody.

Ponieważ zależy nam na jak największym współczynniku stabilizacji, to będziemy dążyć do zwiększenia wartości rezystora R lub zmniejszenia wartości Rz. Rezystancja różniczkowa Rz jest odwrotnie proporcjonalna do prądu płynącego przez diodę. Ale tego prądu nie można zwiększać z powodu ograniczonej mocy start diody. Poza tym zwiększanie prądu diody wiąże się ze zmniejszaniem R i tym samym zmniejszaniem współczynnika stabilizacji.

Zwiększenie rezystancji R powoduje spadek prądu diody Zenera i tym samym wzrost Rz. Dlatego nie można zwiększyć współczynnika stabilizacji zwiększając rezystancję R przy stałym napięciu Uwe.

Diody mogą mieć różne napięcia stabilizacji i wydaje się, że wystarczy dobrać odpowiednią diodę i sprawa napięcia odniesienia jest załatwiona. W rzeczywistości jeżeli stabilizator ma mieć dobre parametry użycie diody Zenera o dowolnym napięciu może być problematyczne. Po pierwsze napięcie stabilizacji dość mocno zależy od temperatury. Poza tym elementy te dość mocno szumią, a napięcie szumów wzrasta z przy małych prądach.

W praktyce diody Zenera maja najlepsze parametry przy napięciu przebicia równym  6…7 V. Żeby uzyskać lepsze parametry dla innych napięć zaczęto stosować „ulepszone” diody zawierające w swojej strukturze dodatkowe elementy (złącza p-n) kompensujące dryft temperaturowy.

Z powodu problemów z parametrami , w scalonych stabilizatorach napięcia zamiast diod Zenera stosuje się odpowiednią ilość szeregowo połączonych skompensowanych temperaturowo w strukturze krzemowej złączą E-B. Problem odpowiedniej jakości napięcia odniesienia dotyczy tez przetworników DAC i ADC. Dlatego dla bardziej wymagających zastosowań stosuje się specjalizowane scalone źródła napięcia o bardzo dokładnej wartości, minimalnych szumach i dokładnie skompensowanych temperaturowo.

Parametry stabilizatora z rysunku 1 można zdecydowanie poprawić dodając element regulacyjny (wtórnik emiterowy) wprowadzający prądowe sprzężenie zwrotne – rysunek 2. W takim układzie można uzyskać zdecydowanie większy prąd wyjściowy stabilizatora.

Rys. 2. Stabilizacja za pomocą wtórnika emiterowego

Jednak tu również parametry diody Zenera maja decydujący wpływ na jakość napięcia wyjściowego. Napięcie wyjściowe ma wartość Uwy = Uref-Ube.

Dalsze polepszenie właściwości stabilizatora jest możliwe przez wprowadzenie dodatkowego ujemnego sprzężenia zwrotnego. Napięcie z wyjścia stabilizatora po podzieleniu (sygnał regulacji) trafia do komparatora, gdzie jest porównywane z napięciem odniesienia Uref. Sygnał błędu z wyjścia komparatora jest wzmacniany i steruje elementem regulacyjnym. Układ próbkuje napięcie wyjściowe i jeżeli nie jest równe zadanemu, to sygnał błędu z wyjścia komparatora tak steruje elementem wykonawczym żeby tą różnicę zniwelować. Poza dobrymi parametrami taki układ pozwala na prostą regulację napięcia wyjściowego w szerokich granicach za pomocą potencjometru.

Rys. 3. Schemat blokowy stabilizatora

Praktyczna realizacja układu z rysunku 3 może wyglądać tak jak na rysunku 4.

Rys. 4. Praktyczna realizacja stabilizatora z regulowanym napięciem wyjściowym

Wzmacniacz operacyjny wraz z tranzystorem T pracuje jako wzmacniacz operacyjny mocy objęty pętlą ujemnego sprzężenia zwrotnego przez dzielnik rezystancyjny złożony z rezystorów R1 i R2. Napięcie na jego wyjściu ma wartość:

Uwy=(1+R2/R1)Uref,

gdzie Uref jest napięciem diody Zenera.

Z tego prostego wzoru wynika, że napięcie wyjściowe Uwy stabilizatora można regulować przez zmianę stopnia podziału R2/R1, lub zmianę napięcia referencyjnego Uref. W klasycznych stabilizatorach napięcie referencyjne jest stałe, a napięcie wyjściowe zmienia się potencjometrem umieszczonym na wyjściu (zmiana podziału R2/R1).

W naszym zasilaczu spróbujemy zastosować odmienne podejście. Załóżmy, że (1+R2/R1)będzie mało stałą wartość równą 10. Napięcie wyjściowe według naszego wzoru Uwy=10Uref. 12-bitowy przetwornik cyfrowo analogowy pracujący jako źródło odniesienia w mikrokontrolerze na płytce STM32Value Line może na wyjściu generować napięcia z zakresu 0V…3V. Jeżeli zatem zamiast źródła napięcia odniesienia o stałej wartości zastosujemy cyfrowo zmieniane w zakresie 0…3V źródło napięcia odniesienia, to przy założeniu, że Uwy=10Uref otrzymamy regulowane napięcie na wyjściu zasilacza w zakresie 0…30V.

Żeby się przekonać w praktyce czy tak jest zmontowałem prosty układ testowy ze wzmacniaczem uA741 (taki miałem pod ręką) i tranzystorem TIP110 (Darlington NPN). Za pomocą potencjometru ustaliłem podział 1/10, a całość zasiliłem napięciem +26V. Zmienna napięcie z wyjścia DAC symulował zasilacz o regulowanym napięciu wyjściowym. Początkowo układ nie chciał działać, bo na wyprowadzenie ujemnego napięcia zasilania podłączyłem masę układu. Jak się okazało w takiej konfiguracji uA741 nie chciał działać. Po zasileniu u wzmacniacza operacyjnego napięciami +Vcc= +26V , i –VCC=-5V układ zaczął działać tak, jak wynika to z teoretycznych rozważań.

 

DAC w STM32

Mamy już układ analogowy regulowanego zasilacza spełniający podstawowy warunek: napięcie wyjściowe Uwy=10Uref. Trzeba teraz za pomocą przetwornika cyfrowo-analogowego DAC programowo ustawiać napięcie w zakresie 0…3V.

Moduł przetwornika cyfrowo analogowego w STM32F100 może być skonfigurowany do pracy w rozdzielczości 12- lub 8-bitowej i ma 2 niezależne konwertery. W praktyce są to 2 niezależne przetworniki. Ich wyjścia są dostępne na wyprowadzeniach PA4 (DAC1) i PA5 (DAC2).

Zależnie od wybranej rozdzielczości cyfrowe dane do konwersji są wpisywane do:

  • 8 najmłodszych bitów rejestru DAC_DHR8Rx[7:0]
  • 12 bitów dosuniętych do lewej w rejestrze DAC_DHR12Lx[15:4]
  • 12 bitów dosuniętych do prawej w rejestrze DAC_DHR12Rx[11:0]
Rys. 5. Umieszczenie danych do konwersji

Dane z zapisywanych rejestrów DAC_DHR są automatycznie zapisywane do rejestrów przetwornika DAC_DOR w czasie jednego cyklu magistrali APB1, ale tylko w przypadku, kiedy użytkownik nie wybrał sprzętowego wyzwalani konwersji. Kiedy takie wyzwalanie zostało wybrane i warunek wyzwalania nastąpił, to przepisanie pomiędzy DAC_DHR i DAC_DOR zajmuje 3 cykle magistrali APB1.

Po zapisaniu DAC_DOR napięcie na wyjściu zmienia się po czasie Tsettling zależnym od napięcia zasilania i obciążenia analogowego wyjścia przetwornika. Warto tu wspomnieć, że na wyjście można dołączyć wbudowany w układ mikrokontrolera bufor analogowy i wyjście to ma wtedy niską impedancję wyjściową.

Napięcie wyjściowe przetwornika pracującego w rozdzielczości 12-bitowej jest określone zależnością:

DACotput=Uref (DOR/4095)[V]

gdzie Uref – napięcie referencyjne przetwornika, DOR – zawartość rejestru DAC_DOR.

Dla napięcia referencyjnego 3V napięcie na wyjściu zmienia się w zakresie 0V…3V. Przetwornik cyfrowo analogowy jest dość rozbudowanym modułem peryferyjnym. Ma możliwość generowania szumu i przebiegu trójkątnego. Połączenie możliwości wyzwalania od liczników i wejścia zewnętrznego w połączeniu z kanałami DMA daje możliwości wykorzystania do generowania zdefiniowanych przebiegów, lub sygnałów audio. W naszym zastosowaniu te zaawansowane właściwości nie będą potrzebne i nie będę ich tutaj opisywał.

 

Konfiguracja

Do konfiguracji przetwornika użyjemy funkcji standardowej biblioteki CMSIS dla mikrokontrolerów STM32. Do sterowania zasilaczem zostanie wykorzystany przetwornik DAC1 z wyjściem napięciowym na wyprowadzeniu PA4. W pierwszym kroku zdefiniujemy PA4 jako wyprowadzenie analogowe – listing 1.

List. 1. Konfiguracja wyjścia PA4

 

Żeby przetwornik pracował tak jak tego od niego oczekujemy musi być skonfigurowany. Najpierw wyłączamy możliwość wyzwalania. Napięcie na wyjściu ma się zmienić po zapisaniu nowej wartości do rejestru przetwornika przez program użytkownika. Procedura konfiguracji jest pokazana na listingu 2.

List. 2. Konfiguracja przetwornika

 

Następnie trzeba zapewnić taktowanie modułowi ADC1 z magistrali APB1, oraz trzeba go włączyć – listing 3.

List. 3. Włączenie taktowania i samego przetwornika ADC1

 

Zapis rejestru DAC_DHR i w rezultacie DAC_DOR wykonuje funkcję DAC_SetChannel1Data. Jej argumentami są:

  • Wielkość i format danych do konwersji. My będziemy wpisywać dane 12-bitowe dosunięte do prawej.
  • Cyfrowa wartość DOR do konwersji na napięcie analogowe według zależności Uwy = Uref (DOR/4095)[V].

List. 4. Zapisanie 12-bitowej danej do konwersji

Mamy teraz program, który pozwala na ustawianie napięcia w zakresie 0…3V na wyjściu PA4. W testowym układzie z rysunku 4 usuwamy diodę Zenera i rezystor R3, a miejsce tych elementów podłączamy wyjście DAC – rysunek 5. Zapisując różne wartości do konwersji w funkcji z listingu 4 ustawiamy różne napięcie wyjściowe zasilacza. Taki układ może pracować w praktycznej realizacji układu stabilizacji. Żeby zabezpieczyć się przed ewentualnym wzbudzaniem na wysokich częstotliwościach można ograniczyć pasmo przenoszenia wzmacniacza przez dołączenie pomiędzy wejściem odwracającym i wyjściem wzmacniacza rezystora 1MΩ i równolegle do niego kondensatora 4,7nF.

Rys. 6. Układ do testowania zasilacza z napięciem referencyjnym z przetwornika DAC

Tomasz Jabłoński

Jest to pierwsza część artykułu, część drugą możesz przeczytać na naszej stronie.