Złożoność algorytmów wynika z tego, że drivery muszą w czasie rzeczywistym dostarczać 3 różne prądy fazowe. Dodatkowo w algorytmach regulacji PID ze sprzężeniem zwrotnym bardzo trudno jest przetwarzać trójfazowe sygnały sinusoidalne. Jedną z metod zaradczych jest sterowanie wektorowe. Przy sterowaniu wektorowym 3-fazowe zmienne prądy stojana są matematycznie przekształcone na pojedynczy wirujący w czasie wektor prądowy. Do obliczeń stosuje się zmierzoną wartość dwu prądów fazowych i wyliczenie trzeciego (suma 3 prądów fazowych jest równa zero). Te wartości są poddane transformacjom Clarke’a i Parka.
Istotną cechą sterowania wektorowego jest to, że przetransformowany wektor prądowy ma 2 składowe: jedna z nich wyznacza wielkość momentu obrotowego, a druga pole magnetyczne wirnika. Możliwość wyizolowania i regulacji składowej odpowiadającej za składową momentu umożliwia sterowanie silnikiem BLDC sterowanym trójfazowym prądem przemiennym tak jak silnikiem stałoprądowym. W praktyce można ustawić stałe pole magnetyczne i w pętli PID regulować wektor momentu tak, by prędkość obrotowa silnika była stała. Sterowanie wektorowe wymaga precyzyjnej informacji o położeniu wału silnika z czujników optycznych.
Zastosowanie sterowania wektorowego pociąga za sobą konieczność wykonywania szybkich obliczeń „on line” za pomocą szybkich mikrokontrolerów z wbudowanymi jednostkami zmiennoprzecinkowymi i procesorami DSP. Mikrokontrolery zorientowane na sterowanie silnikami mają wbudowany szereg specjalizowanych układów peryferyjnych, które bardzo ułatwiają kontrolowanie silnika. Wiele czynności sterowniczych i kontrolnych jest wykonywanych przez zaawansowane układy peryferyjne. Odciąża to rdzeń mikrokontrolera i upraszcza tworzenie i testowanie oprogramowania sterowników.
Jednym z przykładów silnego zorientowania na sterowanie silnikami BLDC są mikrokontrolery rodziny RX66T produkowane przez firmę Renesas. Jednym z podstawowych układów peryferyjnych jest bardzo uniwersalny układ licznikowy MTU3d. Jest zbudowany z 8 konfigurowalnych kanałów z 16-bitowymi licznikami MTU0, MTU1, MTU2, MTU3, MTU4, MTU5, MTU6, MTU7 i MTU9.
W trapezowym, najprostszym rodzaju sterowania drivery dostarczające napięcia zasilającego fazy silnika są sterowane w sposób pokazany na rysunku 7 w pierwszej części cyklu artykułów. Moment przełączania faz jest określany przez czujniki Halla umieszczone na wale wirnika lub przez algorytmy wykrywania położenia w układach bezczujnikowych. Jedna z konfiguracji kanałów licznikowych MTU3d (tryb Complementary Mode) umożliwia całkowicie sprzętowe sterowanie komutacją zasilania faz na podstawie sygnałów z czujników Halla. Na trzy wydzielone wejścia mikrokontrolera podawane są sygnały z czujników Halla, a na 6 wyjściach są „gotowe” sygnały sterujące tranzystorami drivera. Na rysunku 16 pokazano 2 konfiguracje pracy MTU3d w trybie Complementary Mode wykorzystującym kanały MTU3 i MTU4.
Czas martwy
Jednym z typowych problemów sterowania komplementarnymi sygnałami PWM driverami silnika z wykorzystaniem układów mostkowych z tranzystorami MOS jest możliwość krótkotrwałego wprowadzenia w przewodzenie obu tranzystorów zasilania fazy. Pojemności pasożytnicze w układach bramek powodują, że przy szybkich przełączeniach jeden tranzystor jest jeszcze załączony, mimo że sygnał bramki go wyłącza, a drugi tranzystor jest już włączony. W wyniku powstaje krótkotrwałe zwarcie źródła zasilania przez oba tranzystory. Może tak się zdarzyć na przykład przy sterowaniu pokazanym na rysunku 16. Żeby tego uniknąć, w układach PWM wprowadza się pojęcie czasu martwego (dead time). Układy licznikowe generujące komplementarne przebiegi PWM często mają możliwość programowania czasu martwego zależnie od częstotliwości przełączania i użytych tranzystorów.
Na rysunku 17 pokazano przebieg PWM z czasami dead time, a na rysunku 18 sposób generowania trzech przebiegów komplementarnych z czasami dead time do sterowania trzema fazami silnika BLDC z wykorzystaniem dwu kanałów modułu MTU3d. Wartość współczynnika wypełnienia dla kolejnych faz określają wartości wpisane do rejestrów TGR3B, TGR4A i TGR4B.
Prędkość i kierunek
Do określania prędkości obrotowej i kierunku wirowania wirnika mogą być wykorzystywane enkodery. Moduły MTU1 i MTU2 mogą niezależnie pracować jako 16-bitowe liczniki zliczające różnicę faz pomiędzy dwoma zewnętrznymi sygnałami zegarowymi podawanymi na wejścia mikrokontrolera. MTU1 i MTU2 można połączyć kaskadowo i powstanie wtedy jeden 32-bitowy licznik.
W 16-bitowym trybie zliczania różnicy faz licznik TCNT jest inkrementowany lub dekrementowany zależnie od różnicy faz dwu zewnętrznych sygnałów zegarowych. Tymi sygnałami zewnętrznymi mogą być wyjścia dwufazowego enkodera określającego prędkość i kierunek wirowania wału silnika BLDC. Kiedy licznik TCNT się przepełni, to zależnie od tego, czy licznik zliczał w dół, czy w górę, ustawiane są dwie różne flagi przerwania i zgłaszane są przerwania.
Dostępnych jest 5 różnych trybów zliczania. W przypadku użycia klasycznego enkodera do pomiaru kierunku obrotu i prędkości obrotowej może być użyty tryb 1. Na rysunku 19 pokazano zliczanie w trybie 1 i pokazano blokową zasadę określania kierunku wirowania i prędkości obrotowej.
Do pomiaru szerokości impulsu z enkodera i w konsekwencji prędkości obrotowej używa się licznika pracującego w trybie capture. Przykład takiego zastosowania został pokazany na rysunku 20.
Zabezpieczenie przed przeciążeniem
Sterowniki do sterowania silnikami BLDC powinny być wyposażone w układy zabezpieczające przed mechanicznym przeciążeniem silnika i w konsekwencji jego uszkodzeniem. Układy zabezpieczające chronią również obwody mocy układu sterowania oraz zasilacz. Stan przeciążenia najłatwiej jest wykryć, mierząc prąd pobierany w obwodach uzwojeń stojana. Technicznie jest to realizowane przez dołączenie szeregowych rezystorów pomiarowych (shunt resistor) w obwód zasilania mostka tranzystorowego drivera silnika.
Na rysunku 21 pokazano przykładowy układ pomiaru prądu i sygnalizacji jego przekroczenia w trzech fazach (materiały firmy Renesas). Spadek napięcia na rezystorze Rs, proporcjonalny do płynącego prądu w obwodzie zasilania fazy, jest wzmacniany przez wzmacniacz operacyjny i poddawany konwersji przez przetworniki analogowo-cyfrowe.
Pomiar poboru prądu w każdej z faz osobno jest potrzebny w układach sterowania wektorowego. Spotykane jest też uproszczone rozwiązanie z jednym wspólnym rezystorem Rs dla wszystkich faz. Potrójny układ pomiarowy pokazany na rysunku 21 wymaga trzech torów wzmacniaczy i trzech przetworników ADC. W przypadku, kiedy do pomiaru napięć BEMF w układach bezczujnikowych wykorzystujemy przetwornik ADC zamiast komparatorów, również musimy użyć 3 modułów ADC. Dostępne są rozwiązania, które pozwalają użyć do jednoczesnego pomiaru napięcia w trzech fazach jednego przetwornika ADC (rysunek 22).
W mikrokontrolerach rodziny RX66T firmy Renesas moduł przetwornika ma na trzech liniach wejściowych zabudowane wzmacniacze o programowanym wzmocnieniu PGA. Napięcia z wyjścia PGA są również podawane na wejścia komparatorów. W torze tych linii wejściowych są umieszczone wyzwalane układy Sample and Hold. Próbki napięcia zapamiętane w układach Sample and Hold są po zakończeniu czasu próbkowania Thold kolejno konwertowane na postać cyfrową przez jeden moduł konwertera ADC (rysunek 23).
Zasilanie silnika sygnałem PWM powoduje, że nie można wykonać pomiaru prądu w dowolnym momencie cyklu i musi być wykonany w fazie duty cycle. Układ przetwornika ADC mikrokontrolerów RX66T ma możliwość wyzwalania pomiaru w połowie fazy duty cycle każdego z sygnałów komplementarnych PWM, tak jak to zostało pokazane na rysunku 24.
Przekroczenie dopuszczalnego prądu powoduje reakcję układu generującego przebieg PWM. Zmniejszana jest długość cyklu pracy (duty cycle) lub wyjścia PWM przechodzą w stan wysokiej impedancji. Wiele modułów PWM ma sprzętowe wejście sygnalizacji awarii. Wymuszenie na nim stanu aktywnego powoduje przejście w stan wysokiej impedancji wszystkich wyjść modułu PWM. Układy RX66T mają wbudowany specjalny moduł POE blokujący sygnały PWM z modułu MTU3d (rysunek 25).
Podsumowanie
Zastosowanie sprzętowych modułów peryferyjnych znacznie upraszcza układy sterowanie silnikiem. Kiedy mamy do dyspozycji układ PWM z wejściem kontrolującym stany awaryjne, przetwornik ADC i kilka liczników można zbudować prosty i prawidłowo działający układ stepowania nawet przy zastosowaniu 8-bitowego rdzenia.
W sprzyjających warunkach możliwe jest zaimplementowanie algorytmu sterowania PI. Jednak przy większych wymaganiach może się to okazać niewystarczające.
W układach sterowania trójfazowymi sinusoidalnymi napięciami zasilającymi może być wymagane sterowanie wektorowe. Wtedy potrzebna będzie wydajna jednostka z modułem sprzętowego wykonywania szybkich obliczeń zmiennoprzecinkowych FPU i jednostka DSP. Stosuje się wówczas wydajne 16-bitowe lub 32-bitowe mikrokontrolery potrafiące wykonywać wyliczenia niezbędne do sterowania wektorowego w trybie on line.
Sterowanie silnikami BLDC nie jest banalne. Wymaga określonych zasobów sprzętowych i programowych. W wielu zastosowaniach zalety BLDC na tyle przeważają nad silnikami szczotkowymi, że ich stosowanie nawet za cenę konieczności użycia skomplikowanego sterownika jest celowe i opłacalne.
Tomasz Jabłoński, EP