Oprogramowanie sterujące zasilaczem napisano w języku Bascom-AVR. Zostało ono podzielone na pięć głównych modułów logicznych:
- Konfiguracji programu, portów, przetworników oraz deklaracji zmiennych.
- Deklaracji, prekonfiguracji i warunkowej prezentacji kluczowych parametrów roboczych, zapamiętywanych w pamięci EEPROM.
- Pętli głównej programu.
- Podprogramów podstawowych.
- Podprogramów obsługi menu.
Moduł konfiguracji programu, portów, przetworników i zmiennych, pokazany na listingu 1, rozpoczyna się od podania parametrów dla kompilatora języka. Dalej następuje konfiguracja dwóch portów wyjściowych (D.4 i D.5), które są wyjściami 10-bitowych przetworników cyfrowo-analogowych DAC/PWM, dostarczającymi nieprzetworzonych napięć sterujących (referencyjnych) Us oraz Im dla głównego stabilizatora napięcia wyjściowego oraz dla komparatora ograniczającego prąd wyjściowy. Uruchomienie przetworników DAC/PWM już na początku programu ma na celu umożliwienie bezproblemowej realizacji dalszej części konfiguracyjnego bloku programu (bez ryzyka negatywnych skutków niezerowego napięcia na wyjściu stabilizatora) poprzez ustawienie referencji dla napięcia wyjściowego na minimum (PWM=0, Uo=0V) oraz wartości limitu dla przeciążenia prądowego Im na bezwzględne maksimum (PWM=1023). Teraz następuje konfiguracja wyjściowych portów B.0, B.1, B.3 i B.4, sterujących: przekaźnikiem K1 przełączającym sekcje transformatora, bocznikiem diody Zenera D7 – odpowiedzialnej za zakres regulacji napięcia Uo, wentylatorem radiatora M1 oraz buzzerem SP1, ustawionych (kolejno) na: niższy zakres napięć wyjściowych Uo, wyłączone chłodzenie oraz nieaktywną sygnalizację dźwiękową. Następnie konfigurowane są wyjściowe porty D.0..D.2 i D.6, odpowiedzialne za załączanie sygnalizacji optycznej diodami LED (stany: normalna praca, załączenie wentylatora, przeciążenie prądowe oraz przegrzanie zasilacza). Kolejno konfigurowane są porty wejściowe: przycisków sterujących D.7, C.0, C.1 i B.2 oraz wejście przerwania INT1 (port D.3), wyzwalanego niskim poziomem przez komparator U5B na skutek wykrycia stanu przekroczenia limitu prądowego Im. Za tymi deklaracjami następuje: konfiguracja wyświetlacza LCD 16×2 (U7), używającego portów: C.2…C.7, definicja znaku stopnia oraz wyświetlenie ekranu powitalnego urządzenia. W ostatnim bloku tego modułu są definiowane stałe i zmienne. Należą do nich: Ku (stała wzmocnienia wzmacniacza napięciowego), Fromadc (słowo pomiarowe z przetwornika A/C), Prhi i Prlo (dane pośrednie pomiarów A/C z potencjometrów regulacyjnych POT1…POT4), Upwm i Todacpwm (zmienna pomocnicza do przeliczania napięcia sterującego oraz dana sterująca przetwornikiem DAC/PWM), Uz (główne napięcie zasilania bloku wykonawczego stabilizatora), Us i Us_temp (zadane napięcie wyjściowe zasilacza: aktualne i poprzednie), Uo, Uo_old, Uo_tmp i Uo_lcd (napięcia wyjściowe zasilacza: aktualne, poprzednie, zmienna pomocnicza oraz wartość przeznaczona do wyświetlenia na ekranie LCD w podstawowym trybie BASIC), Im (nastawiany limit prądu wyjściowego), Im_lower (górny próg dla podnoszenia napięcia Us w trakcie obsługi stanu przeciążenia), Io, Io_old, Io_tmp oraz Io_lcd (prądy wyjściowe zasilacza: aktualny i w poprzedniej iteracji, wartość pomocnicza oraz wartość wyświetlana na ekranie LCD w trybie BASIC), Fovl (flaga statusu wystąpienia przeciążenia prądowego), Tr, Tr_old, Tr_tmp oraz Trint (temperatury radiatora: bieżąca i poprzednia na potrzeby filtracji zakłóceń, wartość pomocnicza do obliczeń oraz wersja całkowitoliczbowa do celów wyświetlenia i porównania), Pt i Ptint (moc strat termicznych w głównym bloku wykonawczym zasilacza w wersji zmiennoprzecinkowej i całkowitej – do wyświetlenia na ekranie LCD), Us_chng (krok zmiany napięcia Us w trakcie obsługi stanu przeciążenia), A, B, C, D, E i F (współczynniki proporcjonalności kolejno do: ustawiania napięcia sterującego Us, wyznaczania napięcia Uo, nastawiania limitu prądu Im, pomiaru wyjściowego prądu Io, wyznaczania temperatury radiatora Tr, wyznaczania głównego napięcia Uz bloku wykonawczego stabilizatora), Selitem (wskaźnik pozycji menu, wybranej do wyświetlenia i ewentualnej modyfikacji), Poschanged (flaga zmiany pozycji menu, wymuszająca odświeżenie ekranu) i na koniec Us_hi (zakres obszaru pracy dla głównego napięcia zasilania oraz sterowania stabilizatora).
Moduł pętli głównej pokazano na listingu 3. Wejście do tej pętli zostało poprzedzone wyłączeniem wyświetlania kursora i załączeniem zielonej diody LED (D11), sygnalizującej rozpoczęcie normalnej pracy urządzenia. Została ona zorganizowana w postaci pętli nieskończonej. Na początku tej pętli znajduje się blok inicjowanego naciśnięciem przycisku SW_1 (OPT) wejścia do menu konfiguracyjnego urządzenia. Właściwe uruchomienie podprogramu obsługi menu poprzedzone jest ustawieniem limitu prądowego na maksymalną wartość Im=5 A, wysterowania napięcia wyjściowego Us na 0 V oraz wyłączeniem diod LED sygnalizujących: pracę urządzenia (D11) i ewentualnie stan przeciążenia (D13). Wyłączany jest też profilaktycznie buzzer SP1 oraz gaszona jest flaga stanu przeciążenia Fovl. Po powrocie z podprogramu obsługi menu zapalana jest ponownie dioda LED D11, sygnalizująca normalną pracę urządzenia, a ewentualna aktywacja pozostałych indykatorów i flag następuje już w ramach normalnego cyklu roboczego. W kolejnym bloku głównej pętli programu, za pomocą skoków do odpowiednich podprogramów realizowane są poszczególne pomiary i odczyty nastaw. Najpierw odczytywane są wszelkie parametry napięciowe: głównego napięcia zasilającego Uz (warunkowo – tylko w serwisowym trybie wyświetlania na LCD), nastaw napięcia Us sterującego stabilizatorem (z potencjometrów POT1 i POT2; warunkowo – tylko wówczas, gdy flaga przeciążenia prądowego jest zgaszona) oraz napięcia wyjściowego Uo. Dalej następuje bezwarunkowy odczyt parametrów prądowych: limitu prądowego Im (z potencjometrów POT3 i POT4) oraz prądu wyjściowego Io. Sekcję odczytów kończy pomiar temperatury radiatora Tr. Kolejny, bardzo ważny, blok głównej pętli programu to blok regulacji. Pierwsza jego część dotyczy regulacji napięcia wyjściowego Uo za pomocą napięcia sterującego Us. Jeśli zasilacz nie znajduje się w stanie przeciążenia prądowego (Fovl=0), to wartość Us jest przenoszona do bloku wykonawczego stabilizatora bezpośrednio na podstawie nastaw odczytanych z potencjometrów POT1...POT2. W przeciwnym wypadku sprawdzany jest aktualny stan wejścia przerwania INT1 (aktywowane niskim poziomem, jeśli występuje przeciążenie prądowe z warunkiem Io>=Im) i jeśli nie jest ono aktywne oraz bieżąca wartość prądu wyjściowego Io jest poniżej dopuszczalnego progu prądu Im_lower dla podwyższania napięcia sterującego Us, to realizowane jest działanie mające na celu wyjście ze stanu przeciążenia prądowego. W tym celu w zmiennej Us_temp zapamiętywana jest aktualna wartość napięcia sterującego Us, a następnie realizowany jest odczyt nowej wartości Us (z potencjometrów POT1 i POT2). Jeśli poprzednia wartość nastawy Us jest mniejsza od bieżącej, to jest realizowane podniesienie wartości Us o pojedynczy krok równy Us_chng, po którym następuje realna zmiana Us na odpowiednim wyjściu sterującym zasilacza – jest to działanie mające na celu doprowadzenie do zgodności zredukowanego uprzednio (w stanie przeciążenia prądowego) napięcia Us z aktualną wartością nastawioną. Natomiast jeśli stwierdzono, że napięcie Us przekroczyło już wartość z nastaw na potencjometrach POT1 i POT2 (warunek: Us_temp>=Us), to następuje zakończenie procedury obsługi przeciążenia prądowego poprzez zgaszenie flagi Fovl, wyłączenie diody LED (D13) oraz ewentualne wyłączenie buzzera. Dalej, w bloku regulacji, następuje aktualizacja nastawy limitu prądowego Im, która może wpływać na sposób obsługi przeciążenia prądowego (w trakcie jej trwania) poprzez dalszą redukcję prądu wyjściowego Io (przy obniżeniu wartości Im) lub przyśpieszenie wyjścia z tego stanu (przy zwiększeniu wartości Im). Ostatni fragment bloku regulacji odpowiada za reakcję na bieżącą wartość temperatury radiatora Tr. Jest w nim analizowana przynależność wartości bieżącej Tr do przedziałów wyznaczonych przez zapisane w pamięci EEPROM wartości progów temperaturowych: Tr0<Tr1<Tr2. Chłodzenie radiatora jest załączane (wraz z LED D12) po przekroczeniu progu Tr1, natomiast wyłączane, gdy temperatura Tr spadnie poniżej progu Tr0. Obsługa stanu przegrzania jest realizowana przez odpowiednią procedurę, gdy temperatura Tr przekroczy próg Tr2 i kończy się wówczas, gdy temperatura Tr spadnie poniżej Tr1. Ostatni blok głównej pętli programu to blok wyświetlania. Podzielono go na dwie części, uruchomiane alternatywnie zależnie od parametru Lcd_mode. Jeśli Lcd_mode=0, to następuje prezentacja parametrów w trybie podstawowym (BASIC). Są w nim prezentowane wyłącznie sformatowane wartości parametrów: napięcia wyjściowego Uo, prądu wyjściowego Io, limitu prądowego Im oraz temperatury Tr. Parametry: Uo, Io oraz Im, są prezentowane z dokładnością do dwóch miejsc po przecinku, natomiast parametr Tr jest pokazywany jako liczba całkowita z uwagi na niewielką dynamikę jego zmian, których wartości ułamkowe mają marginalne znaczenie dla prawidłowej pracy przyrządu. W tym miejscu należy podkreślić, że w trybie wyświetlania BASIC parametry: Uo, Io oraz Tr podlegają wstępnej cyfrowej filtracji dolnoprzepustowej prostymi filtrami IIR (Infinite Impulse Response) po to, by poprawić percepcję ich prezentacji na wyświetlaczu LCD – w obecności szybkich fluktuacji ich wartości. Dodatkowo, temperatura Tr jest mierzona czujnikiem półprzewodnikowym narażonym na silne zakłócenia EMC, pochodzące od sąsiednich źródeł napięć i prądów zmiennych, więc jej filtracja jest realizowana w obu trybach wyświetlania. Jeśli parametr Lcd_mode jest równy 1, to następuje prezentacja parametrów w dodatkowym trybie serwisowym (SERVICE), który może okazać się przydatny przy regulacji, strojeniu parametrów oraz diagnostyce pracy zasilacza. W tym trybie, w górnej linijce wyświetlacza LCD prezentowane są wszystkie dostępne parametry napięciowe zasilacza: główne napięcie zasilania Uz, napięcie sterujące napięciem wyjściowym Us oraz zmierzone napięcie wyjściowe Uo. Parametry te, zmienne w czasie, nie są filtrowane dolnoprzepustowo po to, by można było lepiej zaobserwować „surową” pracę zasilacza w różnych warunkach testowych. W dolnej linijce prezentowane są parametry prądowe: limit prądowy Im i prąd wyjściowy Io, a także szacowane straty termiczne w tranzystorze wykonawczym Darlingtona: Q2–Q3 oraz temperatura radiatora Tr. Prezentacja podanych parametrów w trybie serwisowym ma charakter maksymalnie uproszczony: z uwagi na oszczędność miejsca na ekranie LCD kolejno wymienione parametry nie są opisane, a jedynie rozdzielone znakiem „>”. Prezentacja na ekranie LCD w trybie serwisowym może okazać się pomocna nie tylko przy diagnostyce urządzenia, ale także przy doborze jego optymalnych parametrów, np. progów temperaturowych Tr0..Tr2 czy progów napięciowych: Us_hi_on oraz Us_hi_off.
Procedura Odczyt_us ma za zadanie wyznaczenie wartość napięcia sterującego Us na podstawie nastaw potencjometrów POT1 (zgrubny) i POT2 (precyzyjny). Napięcie z potencjometrów jest mierzone za pomocą przetwornika A/C (kanały: 4 i 5), sumowane i odpowiednio skalowane. Funkcją procedury Ustaw_us jest zadanie na wyjściu bloku sterującego z przetwornikiem DAC/PWM #1A, wzmacniaczem operacyjnym U4A oraz filtrami: R23/C23 i R24/C24, takiego poziomu napięciowego, by na wyjściu zasilacza ustaliło się napięcie o wartości Us. Jest to realizowane dwuetapowo.
Kolejna procedura, Pomiar_uo, odpowiada za pomiar napięcia wyjściowego Uo, który jest realizowany przez kanał #0 przetwornika A/C. Zmierzona wartość, w zakresie od 0 do 1023, jest skalowana do tego zakresu, napięcia referencyjnego Vref oraz wzmocnienia bloku pomiarowo-sterującego (około 1/6,3125 V/V). Procedura Filtruj_uo_lcd realizuje filtrowanie cyfrowe napięcia Uo za pomocą filtru IIR opisanego wzorem Uo_lcd(t)=0,8*Uo_lcd(t-1)+0,2*Uo(t). Jego zadaniem jest poprawienie stabilności i czytelności odczytu wartości Uo na ekranie LCD. Odbywa się to kosztem pewnej inercji odczytywanej wartości Uo względem szybkich zmian nastaw potencjometrami POT1 i POT2, co jednak nie wpływa na komfort obsługi.
Procedura Odczyt_im wyznacza wartość górnego limitu prądowego Im na podstawie nastaw potencjometrów POT3 (zgrubny) i POT4 (precyzyjny). Nastawy te są odczytywane za pomocą przetwornika A/C (kanały: 6 i 7) a następnie skalowane. Wartości nastaw, odczytane z obu potencjometrów, są finalnie sumowane, a jeśli rezultat sumowania jest mniejszy od 0,1 A, to wartość wynikowa Im jest podnoszona do tej właśnie minimalnej wartości limitu. Takie podejście poprawia stabilność pracy urządzenia przy skończonej wartości kroku limitu prądowego, równego około 5,4 mA (w zależności od wartości napięcia Vref). W wypadku pracy w podstawowym trybie wyświetlania na wyświetlaczu LCD (BASIC) zadana wartość nastawy Im jest też ograniczona do rastra równego 50 mA, co jest wartością rozsądną dla dozwolonego prądu Im w zakresie od 0,1 do 5,0 A. Na koniec jest liczona wartość parametru Im_lower, który stanowi górną granicę dopuszczalnego prądu wyjściowego Io przy podnoszeniu napięcia sterującego Us podczas wychodzenia ze stanu przeciążenia prądowego. Kolejną procedurą jest Ustaw_im, której zadaniem jest ustawienie elektrycznej wartości progu prądowego Im dla komparatora U5B na wyjściu bloku sterującego z przetwornikiem DAC/PWM #1B, wzmacniaczem operacyjnym U4B oraz filtrami: R25/C25 i R26/C26. Przed podaniem na wejście przetwornika DAC/PWM liczba sterująca jest skalowana względem: szeregowej rezystancji probierczej R9, wzmocnienia bloku pomiarowego (ze wzmacniaczem operacyjnym U4C), napięcia odniesienia Vref oraz zakresu przetwarzania przetwornika DAC/PWM, a na koniec jest zaokrąglana do najbliższej wartości całkowitej. Procedura Pomiar_io odpowiedzialna jest za pomiar prądu wyjściowego Io, realizowany przez kanał #1 przetwornika A/C. Podobnie jak w wypadku procedury Ustaw_im, zmierzona wartość, w zakresie od 0 do 1023, jest skalowana do tego zakresu i napięcia referencyjnego Vref, a także do szeregowej rezystancji próbkującej R9 oraz do wzmocnienia bloku pomiarowego ze wzmacniaczem operacyjnym U4C (jakkolwiek w tych dwóch ostatnich przypadkach skalowanie odbywa się przez odwrotności z uwagi na odwrotny kierunek przekazywania sygnału).
Procedura Filtruj_io_lcd (podobnie, jak procedura Filtruj_uo_lcd) realizuje filtr cyfrowy zmierzonego prądu Io za pomocą filtru IIR opisanego wzorem Io_lcd(t)=0,8*Io_lcd(t-1)+0,2*Io(t). Także w tym wypadku chodziło o uzyskanie jak najlepszej stabilności i czytelności odczytu wartości Io na ekranie LCD.
Przedostatnia z procedur w tym module programowym to Pomiar_tr. Temperatura radiatora Tr jest odczytywana przez ADC (kanał #2) z wyjścia czujnika półprzewodnikowego U8. W dalszej jej części są realizowane obliczenia mające na celu uwzględnienie parametrów liniowego przetwarzania U=f(T) zastosowanego czujnika MCP9700AE: 0°C odpowiada napięciu 500 mV, a zmiana temperatury o 1°C powoduje zmianę napięcia na wyjściu czujnika o 10 mV. Na końcu tej procedury zastosowano filtr dolnoprzepustowy IIR o formule Tr(t)=0,98*Tr(t-1)+0,02*Tr(t). Ogranicza on pasmo przenoszonego sygnału, co wprowadza dość wyraźną inercję czasową, ale za to znakomicie stabilizuje odczyt wartości Tr, zakłócany sąsiednimi silnymi źródłami napięcia i prądu. Ostatnia z procedur podstawowych to Pomiar_uz. W ramach jej działania przetwornik ADC (kanał #3) mierzy główne napięcie Uz, zasilające blok wykonawczy stabilizatora a następnie skaluje je względem zakresu przetwarzania przetwornika, jego napięcia referencyjnego Vref oraz współczynnika podziału zastosowanego dzielnika napięciowego z elementami: R5, R6 i C11.
Przed zaprogramowaniem mikrokontrolera U6 należy ustawić w nim właściwą konfigurację fusebitów, których zalecane wartości przedstawiono na rysunku 16.
Konfiguracja i regulacja zasilacza
W przypadku prawidłowego montażu zasilacza jego regulacja i konfiguracja nie powinny nastręczać większych trudności. Na fotografii wnętrza i schemacie montażowym zasilacza pokazano komplet potencjometrów montażowych, których kolejność (patrząc od lewej strony) jest następująca: PR7, PR6, PR4, PR3, PR2, PR1 i PR5. W pierwszej kolejności dokonujemy regulacji kontrastu wyświetlacza LCD (U7) za pomocą potencjometru PR5. Następnie włączamy zasilacz i obserwujemy to, co jest wyświetlane na LCD.
Na fotografii 17 pokazano kolejne ekrany prezentujące: powitanie, ekrany robocze w trybie podstawowym BASIC oraz w trybie serwisowym SERVICE. Kolejne dziesięć ekranów ujmuje automatyczną prezentację wszystkich konfigurowalnych parametrów, która nastąpi przed przejściem do normalnej pracy zasilacza, jeśli wartość parametru Show_params=1. Natomiast tryb prezentacji parametrów roboczych na LCD zależy od ustawienia wartości parametru Lcd_mode (0 – BASIC, 1 – SERVICE).
Na fotografiach 18 i 19 zaprezentowano kompletny cykl konfiguracji wszystkich dziesięciu parametrów, który będzie dostępny po wejściu do menu urządzenia poprzez naciśnięcie przycisku OPT. W trybie przeglądu parametrów w menu w prawym górnym rogu ekranu LCD jest wyświetlany komunikat „[menu]”, który po naciśnięciu przycisku SET zmienia się na komunikat „[chng]” informujący o tym, że możliwa jest modyfikacja danego parametru. Zmiany pozycji menu, podobnie, jak zmiany wartości poszczególnych parametrów, wykonujemy przyciskami „up/+” (oznaczony strzałką w górę) oraz „down/–” (oznaczony strzałką w dół). Zatwierdzenie i zapisanie w pamięci EEPROM wartości danego parametru następuje po naciśnięciu przycisku SET i jest sygnalizowane poprzez uaktywnienie czasowe (na około 1 s) w prawym donym rogu ekranu LCD napisu „[saved]”. Z kolei za pomocą przycisku OPT możemy opuścić zarówno podmenu modyfikacji danego parametru, jak i (ostatecznie) całego menu konfiguracyjnego. Parametr Show_params można ustawić na wartość 0 po skrystalizowaniu się ostatecznej konfiguracji zasilacza (unikniemy dzięki temu opóźnienia w jego uruchamianiu, spowodowanego wyświetlaniem ustawień konfiguracyjnych). Parametr Lcd_mode normalnie powinien być ustawiony na wartość 0 (tryb wyświetlania podstawowy – BASIC), jednak w trakcie strojenia konfiguracji i diagnostyki zasilacza może być użyteczny tryb serwisowy SERVICE (Lcd_mode=1). Parametr Buzzer_on ustawiamy według własnych preferencji: wartość 0 sprawi, że stany: przekroczenia wyznaczonego limitu prądu Im (stan OVERLOAD) oraz przekroczenia dopuszczalnej temperatury Tr2 (OVERHEATING) nie będą sygnalizowane dodatkowo sygnałem dźwiękowym. Natomiast kluczowe na tym etapie konfiguracji zasilacza jest dokładne ustawienie wartości parametru Vref (napięcie referencyjne dla pomiarów napięć i prądu), którego rzeczywistą wartość należy uprzednio zmierzyć dobrej klasy woltomierzem (na jak najniższym zakresie pomiarowym) na wyjściu (wyprowadzenie 3) stabilizatora U2 (LM7805), który jest łatwo dostępny do pomiaru na górnej krawędzi płytki. Należy tu podkreślić, że o ile stabilność temperaturową napięcia wyjściowego stabilizatorów scalonych z rodziny LM78xx można uznać za całkowicie wystarczającą do uzyskania napięcia odniesienia dla celów pomiarowych w zasilaczu warsztatowym, o tyle trzeba mieć świadomość znacznej tolerancji tego napięcia w różnych egzemplarzach układu (katalogowo jest to aż 4% dla wersji CT i 2% dla wersji ACT kostki).
Kolejne dwa parametry to progi napięciowe Us_hi_on oraz Us_hi_off, których wartości decydują o momentach przełączenia sekcji transformatora sieciowego oraz bloku sterującego stabilizatora D7. Różnica wartości między tymi progami zapewnia odpowiednią histerezę procesu dla dwukierunkowego przełączania, dzięki której dynamiczne zmiany napięcia sterującego Us w okolicach wartości progowych nie powodują częstych przełączeń zakresów zasilania Uz i sterowania napięciem wyjściowym Uo.
W tym miejscu należy podkreślić, że podane wartości progów napięciowych: Us_hi_on =15,2 V oraz Us_hi_off=14,8 V (15,0 V ±0,2 V), są odpowiednie dla zastosowanego transformatora sieciowego typu TST200/006 i diody Zenera D7 (15 V). Natomiast stosując inny transformator sieciowy, może być konieczna zmiana wartości tych progów oraz dobór diody D7 na inne napięcie Zenera (rekomendowana wartość powinna być jak najbardziej zbliżona do połowy maksymalnego osiągalnego napięcia wyjściowego Uo). W wypadku zastosowania innego transformatora sieciowego przydatny może okazać się tryb serwisowy wyświetlania parametrów (Lcd_mode=1), w którym jest możliwa także obserwacja wartości głównego napięcia stałego Uz, zasilającego blok wykonawczy stabilizatora. Napięcie to, pod pełnym możliwym obciążeniem prądowym zasilacza, powinno być wyższe o co najmniej 2 V od uzyskiwanego napięcia wyjściowego Uo i. Kierując się tą wskazówką, należy dobrać ewentualne nowe progi napięć Us_hi_on i Us_hi_off, koniecznie z zachowaniem histerezy napięciowej. Jest to warunek konieczny dla prawidłowej pracy szeregowego elementu regulacyjnego z tranzystorem Darlingtona Q2…Q3 oraz dla minimalizacji przenoszenia się tętnień o częstotliwości 100 Hz z wyprostowanego napięcia zasilającego Uz na napięcie wyjściowe Uo przy dużym obciążeniu zasilacza.
Ostatnim konfigurowalnym programowo parametrem jest opóźnienie czasowe Ovldwait wyrażone w mikrosekundach. Definiuje ono czas trwania jednostkowej reakcji na stan przeciążenia prądowego (przekroczenie limitu Im) wywoływanego przez przerwanie INT1 i realizującego elementarną redukcję napięcia sterującego Us o wartość kroku Us_chng. Możliwe wartości mieszczą się w zakresie od 1 do 10000 ms. Jeśli zależy nam na jak najszybszej reakcji na stan zwarcia na wyjściu zasilacza, to należy ustawić wartość minimalną 1 ms. Zapewni ona błyskawiczną redukcję napięcia wyjściowego Uo, a zatem i prądu wyjściowego Io, jednak kosztem dalszego powolnego powrotu do pożądanego napięcia wyjściowego Uo. Jeśli chcemy uzyskać efekt pracy zasilacza jako źródła prądowego o wydajności zbliżonej do wartości Im, nadążającego z napięciem wyjściowym Uo za zmianami obciążenia, to należy ustawić większe opóźnienie Ovldwait. Optymalnej wartości tego parametru należy wówczas szukać w zakresie od 3000 do 5000 ms. Można też przyjąć strategię modyfikacji wartości opóźnienia Ovldwait w zależności od tego, z jakim rodzajem obciążenia i w jakich warunkach laboratoryjnych zamierzamy pracować. Po zakończeniu konfiguracji ostatniego z omawianych parametrów opuszczamy menu poprzez naciśnięcie przycisku OPT.
Mając skonfigurowany wstępnie komplet parametrów programowalnych, przystępujemy do regulacji pozostałych potencjometrów montażowych: PR1...PR4 oraz PR6 i PR7. Jako punktu odniesienia (masy) dla wszelkich pomiarów napięciowych wygodnie będzie użyć wyprowadzenia „stopki” (radiatora) łatwo dostępnego na górnej krawędzi PCB stabilizatora U2 (LM7805), do której ujemny zacisk woltomierza można dogodnie dopiąć na czas pomiarów za pomocą zacisku typu krokodylek. W pierwszej kolejności należy zweryfikować i ewentualnie skorygować wartość napięcia +20 V, zasilającego wzmacniacz operacyjny U5 i dostępnego na wyjściu (wyprowadzenie 2) stabilizatora scalonego U3 (LM317L). Z uwagi na nieco utrudniony dostęp do potencjalnych punktów pomiarowych (wyjście U3 lub zasilanie U5) pomiar regulacyjny wygodnie jest przeprowadzić metodą pośrednią – poprzez zmierzenie napięcia na suwaku (środkowym wyprowadzeniu) potencjometru PR1, którym regulujemy aż do uzyskania napięcia około +18,75 V we wskazanym punkcie, połączonym jednocześnie z pinem 1 (ADJUST) układu U3 (jego potencjał jest niższy od wyjściowego napięcia stabilizowanego kości LM317L o wartość napięcia odniesienia 1,25V). Kolejna regulacja powinna dotyczyć pętli ujemnego sprzężenia zwrotnego dla kontroli napięcia wyjściowego Uo, opartej o wzmacniacz różnicowy, w którego układzie pracują m.in. wzmacniacz operacyjny U4D oraz potencjometry PR2 i PR3. Poprawna regulacja PR2 i PR3 wymagałaby jednoczesnej manipulacji nastawieniami obu tych elementów – i to z uwzględnieniem niezerowej wartości prądu wyjściowego Io, co w praktyce mogłoby okazać się niezwykle trudne do prawidłowej realizacji także przez bardziej doświadczonych czytelników. Dlatego autor tego projektu proponuje nieco inne, nie mniej skuteczne a znacznie dogodniejsze rozwiązanie. Mianowicie, w założeniach projektu przyjęto, że przy idealnie dokładnych wartościach elementów w gałęziach dzielników: R12–PR2–R13 i R15–PR3–R14, oraz przy ustawieniach suwaków PR2 i PR3 dokładnie w połowach zakresów ich regulacji, ich wzmocnienia napięciowe powinny wynosić odpowiednio: Ku’=(1,5 kV+100 V)/(1,5 kV+200 V+10 kV)=0,136752 V/V i Ku”=(10 kV+100 V)/(1,5 kV+200 V+10 kV)=
0,863248 V/V (podane wartości podziałów dzielników rezystancyjnych zostały oczywiście uwzględnione także w oprogramowaniu sterującym zasilaczem). Zadaniem osoby regulującej jest po prostu ustawienie suwaków potencjometrów PR2 i PR3 tak, by jak najbardziej zbliżyć się do podanych wartości. Przykładowo, proces ten mógłby wyglądać następująco:
Dla Uo=19,50 V wyliczamy napięcie U’=Ku’*Uo=0,136752*19,50 V=2,667 V (dla potencjału suwaka PR2) i regulujemy PR2 tak długo, aż osiągniemy zgodność obu napięć, tzn. przykładowo U’=2,667 V przy Uo=19,50 V.
Mierzymy multimetrem i zapisujemy dokładną wartość napięcia na wyjściu wzmacniacza operacyjnego U4D (pin 14), które w przybliżeniu powinno być równe U(U4D/p.14)=U’/Ku”=2,667/0,863248 V=3,089 V. Mierzenie napięcia U(U4D/p.14) w zmontowanym zasilaczu najwygodniej jest wykonać na pinie 40 mikrokontrolera U6, gdzie jest ono doprowadzane w celu pomiaru przez wewnętrzny przetwornik A/C.
Mając do dyspozycji zmierzoną rzeczywistą wartość napięcia U(U4D/p.14), wyznaczamy wartość napięcia U”=U(U4D/p.14)*Ku” (dla potencjału suwaka PR3), które przykładowo dla U(U4D/p.14)=3,089 V powinno wynosić U”=3,089 V*0,863248 V=2,667 V (takie samo, jak przyjęte wcześniej U’ – z uwagi na pracę ujemnej pętli sprzężenia zwrotnego).
Regulujemy PR3 tak długo, aż osiągniemy odpowiednią proporcjonalność obu napięć, tzn. np.: U”=2,667 V przy U(U4D/p.14)=3,089 V.
Weryfikujemy rezultaty przeprowadzonych regulacji zgodnie z przedstawionym powyżej cyklem i ewentualnie dokonujemy naprzemiennych regulacji potencjometrami PR2 i PR3, aż do spełnienia obu podanych warunków proporcjonalności napięć.
Uwaga: nieprecyzyjne wykonanie opisanych czynności regulacyjnych może skutkować nie tylko niedokładną pracą zasilacza, ale także niestabilnością jego działania (oscylacje na wyjściu), dlatego do tego zadania należy podejść niezwykle starannie!
Regulacja wzmacniacza pomiarowego prądu wyjściowego Io (ze wzmacniaczem operacyjnym U4C i dzielnikiem napięciowym R19/R20/PR4/R21) sprowadza się do ustawienia potencjometru PR4 tak, aby wskazywana na ekranie LCD wartość prądu Io była zgodna z odczytem na odpowiednio dokładnym amperomierzu prądu stałego. Można do tego celu wykorzystać sztuczne obciążenie stałoprądowe o prądzie 5 A lub większym (np. AVT-
-5586, https://goo.gl/uhQVNU) lub rezystor dużej mocy. Przy regulacji egzemplarza prototypowego autor użył zestawu połączonych równolegle pięciu 10-watowych oporników o rezystancji 10 V. W egzemplarzu prototypowym kalibrację pomiaru Io wykonano przy prądzie obciążenia około 4,9 A i nastawionym maksymalnym limicie prądowym Im=5,0 A.
Po załączeniu zasilania i przejściu do normalnego trybu pracy można przystąpić do ustawienia napięcia wyjściowego Uo i limitu prądu Im. Następnie można przyłączyć obciążenie. Prawidłowość wykonania montażu i wszelkich regulacji można sprawdzić z zastosowaniem obciążenia stałoprądowego i impulsowego. Fotografia 20 zawiera oscylogram z testów impulsowych, w których ustawiono Uo=10 V, natomiast obciążeniem były dwa połączone szeregowo oporniki o mocy 10 W i rezystancji 10 V. Jeden z tych rezystorów był zwierany z częstotliwością 100 Hz. Na dole oscylogramu widać przebieg kluczujący, natomiast przebieg górny to składowa zmienna napięcia wyjściowego Uo. Jak widać, pulsacje spowodowane zmiennym obciążeniem nie przekroczyły poziomu 20 mVp-p. Na fotografii 21 pokazano fragment przedniego panelu zasilacza w trakcie pracy z ograniczeniem prądowym z parametrem opóźnienia Ovldwait=5000 ms. Stan ograniczenia prądowego sygnalizuje zaświecony LED OVERLOAD, natomiast rzeczywista wartość prądu Io wynosi 390 mA i (z założenia) jest nieco mniejsza od ustawionego limitu prądowego Im=400 mA.
Na fotografii 23 pokazano komunikat wyświetlany po przekroczeniu przez radiator progu temperatury Tr2 i wejściu urządzenia w stan tzw. przegrzania. Cyklicznie jest powtarzana treść trzech kolejnych komunikatów, przy czym ostatni prezentuje wartość temperatury bieżącej radiatora Tr.
Podsumowanie projektu
W artykule kompleksowo opisano projekt zasilacza laboratoryjno-warsztatowego o parametrach konstrukcyjnych i użytkowych, które pozwalają mu skutecznie konkurować (także cenowo) z gotowymi urządzeniami, dostępnymi „ze sklepowej półki”. Znaczącą wartością dodaną są spore możliwości konfiguracji urządzenia wg osobistych preferencji, a także modyfikacji konstrukcji pod kątem własnych potrzeb. Projekt jest przeznaczony dla osób, które chcą mieć zasilacz warsztatowy o niezłych parametrach, kompaktowej, zwartej konstrukcji i niewygórowanym koszcie realizacji oraz dla osób, które pragną poszerzyć swoją wiedzę konstruktorską w zakresie urządzeń zasilających lub zmodernizować posiadane już przyrządy. Więcej informacji o dalszych losach tego projektu można będzie znaleźć na stronie WWW autora pod adresem https://goo.gl/BKmz4T. Na koniec chciałbym serdecznie podziękować koledze Jerzemu Mroszczakowi SQ7JHM (https://goo.gl/NvfYPC) za podzielenie się dużym praktycznym doświadczeniem w zakresie konstruowania zasilaczy liniowych o znacznej mocy znamionowej.
Adam Sobczyk SQ5RWQ
sq5rwq@gmail.com
http://sq5rwq.pl