Schemat blokowy systemu, który można zrealizować za pomocą opisanego niżej stabilizatora, pokazano na rysunku 1. Silnik jest elementem wykonawczym, a tarcza z otworami na jego osi oraz transoptor szczelinowy wchodzą w skład pętli sprzężenia zwrotnego. Mikrokontroler mierzy częstotliwość impulsów generowanych przez transoptor i tak steruje wypełnieniem impulsów zasilających silnik, aby uzyskać zadaną (przez użytkownika) prędkość obrotową.
Schemat ideowy
Układ regulatora znajduje się na jednej płytce drukowanej, której schemat ideowy przedstawia rysunek 2. Głównym podzespołem, który steruje pracą urządzenia, jest mikrokontroler ATmega8. Częstotliwość sygnału zegarowego jest ustalona przez zewnętrzny rezonator kwarcowy 16 MHz. Znacząco zmniejsza to wpływ temperatury na funkcjonowanie układu oraz pozwoliło na dużą częstotliwość odświeżania ekranu. Jako wyświetlacz zastosowano czytelny, 7-segmentowy ekran LED o wysokości cyfr 14,2 mm. Sterowanie nim odbywa się w trybie multipleksowym. W celu uzyskania dużej jasności świecenia poszczególne cyfry są załączane przez tranzystory bipolarne o polaryzacji PNP.
Świeceniem segmentów steruje rejestr 74HC595. Jego wejście aktywujące bufory wyjściowe jest stale aktywne (wyprowadzenie 13 zwarte z masą), a wejście zerujące stale nieaktywne (wyprowadzenie 10 na potencjale +5 V). Dlatego do obsługi rejestru są potrzebne tylko trzy wyprowadzenia mikrokontrolera sterujące: linią danych (DS), zegarową (SHCP) i aktualizacji przerzutników wyjściowych po wpisaniu nowej zawartości (STCP). Prąd pojedynczego segmentu jest ograniczony do ok. 6 mA.
Do ustalenia prędkości obrotowej silnika służy zewnętrzny potencjometr przyłączany do złącza J2. Dzieli on napięcie zasilające mikrokontroler, które jest jednocześnie napięciem referencyjnym dla przetwornika A/C. Liczba odczytana z przetwornika stanowi podstawę do obliczenia zadanej prędkości obrotowej. Aby pomiary nie były zafałszowane przez zaburzenia indukujące się w przewodach połączeniowych, na jego wejściu zastosowano dolnoprzepustowy filtr RC o stałej czasowej ok. 1 ms.
Transoptor szczelinowy służący do pomiaru prędkości obrotowej dołącza się do zacisków złączy J4 i J6. Rezystor R15 zapewnia zasilanie diody nadawczej prądem ok. 20 mA. Impulsy światła padające na fototranzystor wprowadzają go w stan nasycenia, co przez mikrokontroler jest odczytywane jako wystąpienie zbocza opadającego. Właśnie na to zbocze reaguje licznik, ponieważ jest ono „szybsze” od narastającego, które powstaje przy wychodzeniu z nasycenia. Wejście kolektora fototranzystora jest zabezpieczone duodiodą Schottky'ego typu BAT54S. Wprawdzie mikrokontroler ma wbudowane takie diody, ale mogą one ulec uszkodzeniu w wypadku indukowania się w przewodach impulsów o dużej energii. Rezystor R16 ogranicza prąd tych diod w razie przepięcia. Potencjometr P1 służy do ustalenia rezystancji obciążenia kolektora fototranzystora, przy której będzie prawidłowo wchodził w nasycenie oraz nie będzie wrażliwy na światło zewnętrzne.
Licznik Timer1 mikrokontrolera generuje sygnał PWM, który jest dostępny na wyjściu OC1B. Ma on amplitudę 5 V, co jest niewystarczające do prawidłowego wysterowania większości tranzystorów MOSFET, dlatego wykonano stopień sterujący z tranzystorami T5 i T6. Funkcją tranzystora T5 z obciążeniem w postaci rezystora R20 jest zwiększenie amplitudy impulsów do 12 V. Sygnał ulega przy tym zanegowaniu, co trzeba uwzględnić na etapie pisania programu. Rezystor R18 ogranicza prąd jego bazy, natomiast kondensator C16, który go bocznikuje, przyśpiesza przeładowywanie bazy. Rezystor R19, połączony szeregowo z C16, ogranicza prąd płynący przez wyprowadzenie mikrokontrolera w trakcie wystąpienia zbocza.
Kolektor T5 ma małą rezystancję przy wchodzeniu w nasycenie, a wielokrotnie wyższą, bo zbliżoną do rezystancji R20, przy wychodzeniu zeń, co jest niepożądane. Takiej sytuacji można zapobiec, stosując tranzystor T6, który pełni funkcję wtórnika napięciowego dla zboczy narastających. Gdy potencjał jego bazy się podnosi, wtedy emiter „wlewa” prąd do obciążenia. Impedancja wyjściowa jest wtedy rzędu pojedynczych omów. Natomiast zbocze opadające jest obsługiwane za pośrednictwem diody D3, która cechuje się dużą odpornością na udary prądowe. Nasycający się T5 „wyciąga” prąd z obciążenia, polaryzując ją w kierunku przewodzenia.
Połączone równolegle rezystory R21 i R22 ograniczają prąd płynący przez bramkę w chwili jej przeładowywania. Rezystorem R23 bramka jest rozładowywana w chwili zaniku sygnału sterującego, polaryzuje również tranzystor T6. Dioda Zenera D4 chroni izolację bramki przed przebiciem wskutek przekroczenia maksymalnego napięcia UGS.
Zasilany silnik powinien być dołączony do zacisków złącza J6. Równolegle do niego włączono obwód zabezpieczający tranzystor MOSFET przed uszkodzeniem wywołanym przez przepięcia pochodzące od uzwojenia. Wartości tych elementów (R24, C18, D5) można dobrać w zależności od potrzeb (np. zmienić stałą czasową), lecz dla większości przypadków wystarczą te przykładowe.
Po włączeniu zasilania mikrokontroler potrzebuje nieco czasu na rozpoczęcie wykonywania programu. Przez ten czas wyprowadzenia portów są w stanie wysokiej impedancji. Tranzystor T5 nie przewodzi, więc bramka tranzystora MOSFET jest spolaryzowana wysokim potencjałem i silnik rusza z szarpnięciem. Dopiero po chwili, kiedy portom zostaną nadane kierunki przepływu oraz poziomy logiczne, silnik zatrzyma się. Dlatego został dodany rezystor R17, który wprowadza T5 w stan przewodzenia, zanim zrobi to mikrokontroler.
Nieużywane wyprowadzenia mikrokontrolera są podciągnięte do dodatniego bieguna zasilania poprzez zewnętrzne rezystory. W ten sposób mamy gwarancję ustalenia ich potencjału, nawet wtedy, gdy w pobliżu pracuje silne źródło zaburzeń. W tym układzie jest to o tyle istotne, że w pobliżu może pracować zasilany impulsowo silnik, zaś na samej płytce znajdują się ścieżki przewodzące prąd impulsowy o dużym natężeniu.
Napięć niezbędnych do prawidłowego działania układu dostarczają dwa stabilizatory liniowe, typu 7812 i 7805, połączone kaskadowo. Rozkłada to pomiędzy nie straty mocy. Dioda D1 doładowuje kondensator C1, z którego pierwszy stabilizator pobiera prąd. W ten sposób, nawet jeżeli napięcie z zasilacza ulega drastycznym zmianom wskutek cyklicznego załączania silnika, stabilizator zawsze ma do dyspozycji zapas napięcia niezbędny do prawidłowego działania.
Na płytce jest wiele kondensatorów o różnych pojemnościach, których rolą jest filtrowanie zasilania układów cyfrowych. Kondensatory C2…C5 zapobiegają wzbudzeniu się stabilizatorów liniowych. Z kolei kondensator C17 stanowi rezerwuar energii dla sterownika bramki tranzystora MOSFET. W miarę możliwości powinien być typu Low-
ESR, ponieważ uzyskiwana szybkość narastania napięcia na bramce jest wysoka.
Układ regulatora zmontowano na dwustronnej płytce drukowanej o wymiarach 105 mm×61 mm. Jej schemat montażowy pokazano na rysunku 3. W odległości 3 mm od krawędzi płytki przewidziano otwory montażowe. Montaż polecam przeprowadzić w typowy sposób – od najniższych elementów, montowanych powierzchniowo, do najwyższych, przewlekanych. Złącza śrubowe J1, J4, J5 i J6 należy przylutować od spodniej strony płytki, aby był do nich swobodny dostęp po dokręceniu jej do płyty czołowej obudowy. Kondensatory przewlekane C1, C17 i C18 należy położyć na powierzchni laminatu – wtedy najwyższymi elementami są wyświetlacz oraz przycisk. Podzespoły w obudowach TO220 można przylutować na płasko od góry (fotografia 4). Jeżeli istnieje obawa, że wydzielana ilość ciepła będzie zbyt duża do rozproszenia dla samej wkładki obudowy, można je przylutować od tyłu i zastosować radiator o odpowiednich gabarytach. W układzie prototypowym zastosowano kątowe złącze goldpin J2, do którego dołączono potencjometr ustalający żądaną prędkość obrotową. Dzięki temu można zastosować typ jedno- lub wieloobrotowy, w zależności od potrzeb. Rezystancja jego ścieżki nie jest krytyczna, lecz nie powinna stanowić znaczącego obciążenia dla stabilizatora 7805.
W mikrokontrolerze należy zmienić ustawienia bitów zabezpieczających na takie, jak podano w tabeli 1. Należy skonfigurować pracę z zewnętrznym rezonatorem kwarcowym 16 MHz z krótkim czasem startu, aktywować detektor Brown-Out i ustawić na 4 V, co zapobiegnie zawieszeniu się mikrokontrolera podczas krótkotrwałego zaniku napięcia. Po dokonaniu tych zmian można zaprogramować układ załączonym programem. Układ nie wymaga innych czynności uruchomieniowych, poza ewentualnym dostrojeniem potencjometru P1, który winien być wyjściowo ustawiony w połowie.
Po zaprogramowaniu, w stanie początkowym, domyślna wartość dzielnika to 1, a częstotliwość wytwarzanego sygnału PWM to 10 Hz. Można, a nawet należy, dostosować je do swoich potrzeb. Częstotliwość sygnału PWM zmienia się przez zwieranie dwóch wyprowadzeń złącza programowania ISP: GND oraz SCK. Są one oznaczone na płytce „f PWM”. Przyjęto założenie, że ten parametr zostanie ustalony raz, dlatego nie trzeba zapewniać użytkownikowi wygodnego dostępu do tej opcji. W razie potrzeby można dołączyć zewnętrzny przycisk zwierny do tych wyprowadzeń. Po każdej zmianie silnik jest zatrzymywany i rusza na nowo, ponieważ aktualizacji wymagają również inne rejestry mikrokontrolera. Ustawiona częstotliwość jest pokazywana przez 1 s na wyświetlaczu. Jeżeli jest mniejsza od 10 kHz, to odczyt jest bezpośrednio w hercach, a jeśli jest równa lub przekracza tę wartość, to w kilohercach z dwoma miejscami po przecinku (rysunek 5). Wybór zostaje zapamiętany w nieulotnej pamięci EEPROM.
Wciskanie przycisku S1 powoduje przełączanie stopnia podziału impulsów. Dzięki temu można dostosować wartość pokazywaną przez wyświetlacz do swoich potrzeb. Trzymanie przycisku powoduje narastanie wartości, po przeskoczeniu piątej czas między kolejnymi wartościami zmniejsza się. Możliwe stopnie podziału są z zakresu 1…99. Ustawiony wybór również jest zapamiętywany w pamięci EEPROM.
Podczas prawidłowej pracy kontrolera na ekranie jest pokazywana liczba impulsów nadchodzących z transoptora podzielona przez zadaną wartość dzielnika. Jeżeli uzyskana prędkość obrotowa nie różni się od zadanej o więcej niż 2%, to załącza się prawa kropka (rysunek 6). Z testów wynika, że przy zbyt małej częstotliwości sygnału PWM utrzymanie stabilnej prędkości obrotowej jest trudne do uzyskania. Silnik bez przerwy rozpędza się i hamuje, co utrudnia prawidłowe sterowanie nim. Sytuację poprawia obciążenie osi silnika – to dodatkowo wyrównuje wszelkie szarpnięcia. Z tego względu przedstawione urządzenie będzie dobrze się sprawowało np. w samodzielnie wykonanym gramofonie.
Możliwości modyfikacji
Zaprezentowany układ regulatora nie został zaprojektowany z myślą o konkretnym urządzeniu, dlatego istnieje szeroki wachlarz możliwości dostosowania go do swoich potrzeb. Oprócz wielu częstotliwości sygnału PWM i swobody w ustaleniu żądanej prędkości istnieją również sprzętowe możliwości przeróbki. W prototypie użyto tranzystora wykonawczego typu BUZ11A. To wytrzymały tranzystor, który dobrze radzi sobie z obciążeniami indukcyjnymi, co zostało potwierdzone przez stosowanie go w wielu podobnych projektach. Jest jednak nieco przestarzały, co sugeruje wysoka rezystancja otwartego kanału (55 mV). Można zastąpić go innym, np. IRF2804, jeżeli moc tracona okaże się nieakceptowalnie duża. Rezystancja ograniczająca prąd przeładowywania bramki tego tranzystora jest w dużej mierze ustalona przez równolegle połączone rezystory R21 i R22. Przy stosowaniu wartości pokazanych na schemacie czas narastania napięcia na bramce to ok. 350 ns. Jeżeli zostanie użyty tranzystor o wyższej pojemności bramki niż BUZ11A, wówczas może zachodzić konieczność zmniejszenia tej rezystancji.
Zasilania dla obwodu sterującego tranzystorem wykonawczym dostarcza stabilizator, który do prawidłowego działania wymaga min. 15 V na wejściu (niektóre egzemplarze 14 V). Jeżeli zajdzie konieczność sterowania silnika pracującego z niższym napięciem, wówczas wystarczy wylutować ten stabilizator, a skrajne wyprowadzenia na płytce drukowanej (wejście i wyjście) zewrzeć zworką. Minimalne napięcie jest jednak ograniczone przez napięcie wymagane do pełnego otwarcia tranzystora MOSFET i wynosi ok. 8…9 V.
Jeżeli napięcie zasilania silnika będzie wyższe od akceptowanego przez stabilizator znajdujący się na wejściu, wtedy należy wykorzystać jedynie zacisk „minus” złącza J6, który prowadzi do drenu tranzystora. Polecam przy tym wymontować elementy obwodu zabezpieczającego dren (D5-C18-R24), ponieważ będzie przez nie płynął prąd po zatkaniu tranzystora. Można go jednak zostawić, jeżeli zostanie przecięta ścieżka (rysunek 7) prowadząca do dodatniego bieguna zasilania, zaś do zacisku „+” złącza J6 będą doprowadzone przewód z silnika oraz jego zasilanie. Należy pamiętać o dostosowaniu elementów tego obwodu do wyższego napięcia zasilania.
Kondensator C1 wyrównuje tętnienia zasilania podawanego na stabilizator, jeżeli źródło ma relatywnie wysoki opór wewnętrzny. Nic nie stoi na przeszkodzie, aby pojemność tego kondensatora zwiększyć, jeżeli zajdzie taka potrzeba, tj. mikrokontroler będzie nieoczekiwanie się restartował wskutek chwilowych zaników napięcia.
Dla ciekawskich
Do sterowania silnikami najlepiej nadaje się tryb licznika, w którym ściśle kontrolowane są faza i częstotliwość wytwarzanych impulsów – Phase and Frequency Correct. Bit WGM13 ma wartość 1, pozostałe WGM1x są równe 0.
Tak szeroki zakres wytwarzanych impulsów wymaga zarówno zmiany dzielnika częstotliwości zegara dla licznika, jak i górnego ograniczenia licznika (tzw. wartość Top). Tabela 2 zawiera wartości dzielnika, ustawiane w rejestrze TCCR1B i wartości rejestru ICR1A, który przechowuje wartość Top. Tutaj ważna uwaga: uzyskana częstotliwość jest dwukrotnie mniejsza, niż wynikałoby to z podziału 16 MHz/(dzielnik·ICR1A), ponieważ licznik w czasie jednego okresu liczy zarówno w górę, jak i w dół, co zapewnia stabilność fazową.
Do tego typu zastosowań, gdzie potrzebna jest stabilizacja danej wartości na określonym poziomie, najczęściej stosuje się sterowniki typu PID. Niestety, do prawidłowego działania wymaga dokładnego dobrania współczynników skalujących wyjście z każdego członu: proporcjonalnego, całkującego i różniczkującego. Bez tego układ może wpadać w oscylacje, bardzo długo dochodzić do zadanej wartości lub wcale jej nie osiągać. Dobór współczynników można wykonać poprzez analizę odpowiedzi jednostkowej układu, lecz jest to zadanie zbyt złożone, aby mogło być stosowane w uniwersalnym sterowniku.
Zaimplementowany algorytm jest bardzo prosty i sprawdził się w przypadku trzech różnych silników, na których prowadzone były testy. Nie zapewnia szybkiego dojścia układu do stanu ustalonego, lecz to jest cena prostoty i uniwersalności. Odpowiedni fragment kodu przedstawia listing 1. Na początku obliczany jest błąd (wraz ze znakiem) oraz jego moduł. Na podstawie znaku błędu układ decyduje, w którą stronę zmienić wypełnienie. Moduł błędu służy do sprawdzenia, z jakiego rzędu odchyleniem ma do czynienia. Pierwszy człon jest wykonywany zawsze, kiedy w ogóle istnieje różnica między prędkością aktualną a zadaną, czyli praktycznie zawsze. Wykonuje bardzo drobne zmiany wypełnienia, dlatego największą rolę odgrywa po ustaleniu się prędkości obrotowej. Następne człony są bardziej „zgrubne” i dokonują regulacji o 1% i 2%. Jeżeli błąd jest bardzo duży, wtedy w jednej iteracji zostaną wykonane wszystkie trzy instrukcje warunkowe, co da zmianę o ponad 3%. Z tego powodu układ zapewnia powolny start silnika. Po włączeniu wypełnienie jest zerowe i stopniowo narasta z krokiem ok. 3%. Po przekroczeniu pewnego progu wypełnienia wał silnika przełamuje opory tarcia i zaczyna się obracać.
Michał Kurzela, EP