Przejdź do treści

Moduł do pomiaru parametrów pracy silnika BLDC

Urządzenie do pomiaru i wizualizacji parametrów pracy silnika bezszczotkowego DC (BLDC) zostało wykonane w 2013 roku. Moduł jest częścią stanowiska do badania jakości sterowania silników BLDC i strojenia regulatorów, po to, aby uzyskać jak największą efektywność napędów.

Funkcjonalności

Urządzenie spełnia rolę jednostki pomiarowej parametrów pracy silnika BLDC, a także sterującej pracą tego silnika. Postawowe funkcjonalności urządzenia są następujące.

  • Wizualizacja na wyświetlaczu LCD:
    • Temperatury silnika zmierzonej sensorem DS18B20
    • Prędkości obrotowej silnika zmierzonej enkoderem magnetycznym AS5040
    • Prądu pobieranego przez silnik
    • Wartości napięć fazowych, a także napięcia zasilania silnika
  • Sygnalizacja za pomocą diod LED:
    • Stanu zasilania urządzenia
    • Stanu komunikacji z regulatorem przez I2C
    • Stanu komunikacji z komputerem przez UART
  • Działanie jako serwer w komunikacji z komputerem (architektura klient-serwer)
    • Wysyłanie wyników pomiarów do komputera
    • Wysyłanie zadanych parametrów do regulatora BLDC
    • Komunikacja z użytkownikiem za pomocą klawiatury składającej się z czterech przycisków

Opis projektu

Jednostka mierząca parametry pracy silnika została wyposażona w dedykowane czujniki, ale również pobiera dane z regulatora. Kolejnym zadaniem urządzenia pomiarowego jest pośredniczenie w transmisji między regulatorem silnika, a komputerem. Jednym z etapów projektu jest stworzenie aplikacji komputerowej do wizualizacji danych sensorycznych pobranych z jednostki badającej parametry pracy silnika. Zakłada się wykorzystanie zestawu bibliotek Qt, a także asynchronicznej transmisji szeregowej (UART). Wizualizowane będą takie parametry jak prędkość obrotowa wału, temperatura silnika, pobierany prąd, czy aktualny poziom wysterowania układu wykonawczego. Aplikacja powinna umożliwiać pośrednie przesyłanie wartości zadanej do regulatora. Struktura blokowa projektu przedstawiona została na poniższym rysunku.

Podstawowe informacje związane ze sterowaniem silnikami bezszczotkowymi zostały przedstawione w następującym wpisie: Wprowadzenie do sterowania silnikami BLDC. Regulator, który jest integralną częścią projektu opisano w artykule: Bezczujnikowy regulator silnika BLDC w oparciu o mikrokontroler Freescale. Kolejną częścią projektu jest aplikacja do wizualizacji danych pobranych z jednostki pomiarowej, opisana w artykule: Aplikacja do wizualizacji danych w Qt. Natomiast w dalszej części znajduje się opis urządzenia pomiarowego.

 

Jednostka pomiarowa


Jak już wspomniano, jednostka badająca parametry pracy silnika została wyposażona w czujniki, a także pobiera dane z regulatora. Jej kolejnym zadaniem jest wysyłanie danych do aplikacji komputerowej, z którą komunikuje się za pomocą interfejsu UART. Poniżej zamieszczono wizualizacje projektu części sprzętowej urządzenia pomiarowego.

bldc_station_top_vis

bldc_station_bottom_vis

 

Część sprzętowa urządzenia pomiarowego


Układ zasilania

W celu poprawnej pracy, urządzenie wymaga dostarczenia stałego napięcia zasilania (DC) mieszczącego się w granicach od 8 do 15 V. Przewidziano miejsce na dodatkowe złącze wysoko prądowe, aby umożliwić zasilanie z niego regulatora silnika BLDC. Należy jednak zapewnić odpowiednią wydajność prądową. Schemat ideowy układu zasilania znajduje się poniżej.

bldc_station_supply_circuit

Schemat ideowy układu zasilania

Obwód wyposażono w zabezpieczenie przed odwrotną polaryzacją napięcia zasilającego. Składa się ono z tranzystora MOSFET z kanałem typu N (Q1) i rezystora podłączonego do jego bramki (R1). W przypadku prawidłowej polaryzacji prąd płynie przez diodę pasożytniczą tranzystora, a następnie przez złącze źródło-dren, ponieważ napięcie na bramce jest znacznie wyższe niż na źródle. Natomiast w przypadku niepoprawnej polaryzacji napięcia prąd nie przepływa przez tranzystor i zabezpiecza układ. Dodatkowo, wykorzystano dwukierunkową diodę zabezpieczającą transil, której zadaniem jest tłumienie przepięć i wysokonapięciowych impulsów.

Jako magazyn energii dla stabilizatora wykorzystano kondensator elektrolityczny C1. Jego dodatkowym zadaniem jest również filtrowanie zakłóceń o niskich częstotliwościach. Zakłócenia o wysokich częstotliwościach filtrowane są przez kondensator ceramiczny C2. Na wyjściu stabilizatora zastosowano kondensator tantalowy C3 ze względu na wyższej jakości parametry, a szczególnie ze względu na mniejszą rezystancję szeregową ESR (Equivalent Series Resistance). Zastosowany stabilizator liniowy LDO (Low DropOut) pozwala uzyskać na wyjściu napięcie 5V, które zasila większość podzespołów urządzenia.

Układ mikrokontrolera

Zdecydowano się na wykorzystanie mikrokontrolera AVR ATmega32A ze względu na stosunkowo rozbudowane peryferia, dostępność, a przede wszystkim ze względu na wcześniejsze doświadczenia z mikrokontrolerami tej rodziny. Na schemacie można zauważyć, że zasilanie części analogowej zostało podłączone przez odpowiedni filtr. Ponadto, układ wyposażono w trzy diody LED (D2-D4) w celu wizualizacji parametrów pracy urządzenia, a także w przełączniki (S1-S4), aby umożliwić komunikację z użytkownikiem.

bldc_station_uC_circuit

Schemat ideowy podłączenia mikrokontrolera AVR

Układ źródła napięcia odniesienia

W celu zapewnienia stabilności wykonywanych pomiarów przez przetwornik analogowo-cyfrowy w który wyposażony jest mikrokontroler Atmega32 zdecydowano się wykorzystać zewnętrzne źródło napięcia referencyjnego. Schemat widoczny na rysunku zaczerpnięto z noty katalogowej układu LM336D-5.0 i po modyfikacjach wartości niektórych elementów zdecydowano się wykorzystać w projektowanym urządzeniu. Dołączone elementy dyskretne pozwalają uzyskać większą stabilność temperaturową napięcia, a także regulować jego wartość w nieznacznym zakresie.

Schemat ideowy układu źródła napięcia odniesienia

Schemat ideowy układu źródła napięcia odniesienia

 
Układ wejściowy analogowych torów pomiarowych

W celu dostosowania mierzonych napięć fazowych i napięcia zasilania silnika zdecydowano się na wykorzystanie układów składających się z dzielników napięciowych i filtrów dolnoprzepustowych RC. Wartości rezystorów dobrano tak, aby napięcia wyjściowe dzielników nie przekraczały poziomu 5V. Natomiast parametry filtrów dla napięć fazowych dobrano tak, aby odcinane były częstotliwości związane z sygnałem PWM sterującym tranzystorami w module wykonawczym, które wynoszą 20kHz.

 

bldc_station_sample_circuit

Schemat ideowy układu wejściowego analogowych torów pomiarowych

Układ wyświetlacza alfanumerycznego LCD

W celu wizualizacji parametrów pracy urządzenia i komunikacji z użytkownikiem zdecydowano się na wyposażenie urządzenia w wyświetlacz alfanumeryczny LCD ze sterownikiem HD4470. O wyborze takiego wyświetlacza zdecydował jego niewielki koszt, dostępność obszernej dokumentacji, a także dostępność bibliotek napisanych w języku C. Ponadto wybrany model umożliwia wyświetlanie dwóch linii, gdzie w każdej znajduje się 16 znaków.

Do sterowania wyświetlaczem z poziomu mikrokontrolera potrzebne są cztery porty dla danych (tryb 4-bitowy), a także trzy do sterowania operacjami, czyli łącznie wymaganych jest 7 linii mikrokontrolera w takiej konfiguracji. Dodatkowo zdecydowano się na programowe sterowanie podświetleniem wyświetlacza. Do tego celu wykorzystano generowany przez mikrokontroler sygnał PWM, który wysterowuje tranzystor Q2 przez który zasilany jest moduł podświetlenia. Tym samym uzyskano wartość podświetlenia zależną od wartości wypełnienia generowanego sygnału PWM. Natomiast regulacja kontrastu wyświetlacza zrealizowana została z wykorzystaniem potencjometru PR1.

Schemat podłączenia wyświetlacza alfanumerycznego LCD

Schemat podłączenia wyświetlacza alfanumerycznego LCD

Złącza

 

Urządzenie wyposażono w złącza umożliwiające połączenie z sensorami, czy dodatkowymi modułami. W dalszej części opisano poszczególne złącza i wyprowadzone sygnały.

Złącze interfejsu UART

W celu komunikacji z komputerem przez interfejs UART, przewidziane zostało złącze posiadające trzy linie: TXD, RXD i masę. Umożliwia ono podłączenie odpowiedniej przejściówki, aby przeprowadzić komunikację. Schemat tego złącza widoczny jest przy układzie mikrokontrolera.

Złącze KANDA

Złącze to jest wykorzystywane do programowania mikrokontrolera. Umożliwia podłączenie wielu standardowych programatorów szeregowych. Warto zauważyć, że do programowania wykorzystywany jest interfejs SPI (Serial Peripheral Interface), którego linie: MOSI, MISO, SCK zostały wyprowadzone. Na rysunku przedstawiono kolejność wyprowadzonych sygnałów.

 

Schemat złącza KANDA wykorzystywanego do programowania mikrokontrolera

Schemat złącza KANDA wykorzystywanego do programowania mikrokontrolera

Złącze sensora DS18B20

Wykorzystany sensor temperatury DS18B20 komunikuje się z mikrokontrolerem przez interfejs 1-Wire. Oprócz linii sygnałowej z mikrokontrolera sensor wymaga napięcia zasilania 5V, które również zostało doprowadzone do złącza. Ponadto linia interfejsu 1-Wire została podciągnięta do VCC przez rezystor R17.

 

bldc_station_DS18B20

Złącze modułu enkodera magnetycznego AS5040

W celu pomiaru prędkości obrotowej wału silnika zdecydowano się wykorzystać enkoder magnetyczny AS5040. Do złącza doprowadzono zasilanie 5V, ponadto doprowadzono trzy porty mikrokontrolera w celu odczytywania sygnałów z enkodera. Wystarczyły jedynie trzy linie, ponieważ wykorzystywany będzie jedynie wyjście inkrementalne w trybie kwadraturowym. Dlatego też na liniach oznaczonych A_LSB_U i B_Dir_V w tym trybie pojawią się sygnały kwadraturowe przesunięte względem siebie, aby umożliwić odczytanie kierunku obrotów.

bldc_station_encoder_connector

Złącze regulatora silnika BLDC

W celu komunikacji jednostki pomiarowej z regulatorem BLDC wykorzystano złącze na którym wyprowadzono dwie linie interfejsu I2C. Ponadto linie: U_PHASE, V_PHASE i W_PHASE doprowadzone zostały do układu wejściowego toru pomiarowego. Sygnały te są napięciami na poszczególnych fazach trójfazowego silnika BLDC. Ponadto do złącza doprowadzony zostanie sygnał analogowy z sensora pomiaru prądu pobieranego przez silnik. Sygnał ten będzie mieścił się w przedziale 0-5V, aby umożliwić bezpośredni pomiar przetwornikiem ADC mikrokontrolera. Dodatkowo na złączu można zauważyć doprowadzony sygnał A_LSB_U, który jest wyjściem kwadraturowym z enkodera magnetycznego. Został on dołączony na wypadek, gdyby okazało się problematyczne sterowanie silnikiem na podstawie obrotów obliczonych z czasu między poszczególnymi komutacjami.

bldc_station_regulator_connector

Część sprzętowa modułu enkodera


 

W celu zmierzenia prędkości obrotowej wału silnika BLDC zdecydowano się wykorzystać enkoder magnetyczny AS5040 wykonywany przez firmę Austriamicrosystems. Odczytywane są dwa wyjścia kwadraturowe, których sygnały są przesunięte względem siebie w celu umożliwienia odczytu kierunku obrotów wału silnika. Układ wyposażony został w dwie diody, które informują o tym, czy magnes został umieszczony w odpowiedniej odległości od układu scalonego.

bldc_station_scheme_encoder

Schemat ideowy modułu z enkoderem magnetycznym AS5040

 

Tory pomiarowe


 

Pomiar prędkości obrotowej

Pomiar prędkości obrotowej wału silnika BLDC zrealizowano z wykorzystaniem enkodera magnetycznego AS5040. Zasadę działania modułu opisano w dalszej części. Rozwinięta zostanie natomiast część dotycząca sposobu pomiaru prędkości obrotowej przez mikrokontroler na podstawie wejścia kwadraturowego. W celu obliczenia prędkości obrotowej wymagana jest znajomość częstotliwości sygnału z wyjścia kwadraturowego. Zostanie ona obliczona z wykorzystaniem dwóch timerów mikrokontrolera Atmega32. Zdecydowano się na metodę pomiaru w której jeden timer odmierza podstawę czasu, natomiast drugi zlicza impulsy wejściowe. Ponieważ Atmega32 posiada tylko jeden timer 16 bitowy (TIMER1), zdecydowano, że będzie on liczył impulsy wejściowe, natomiast 8 bitowy TIMER0 będzie odmierzał podstawę czasu w której zliczane będą impulsy. Odpowiednie obliczenia pozwolą uzyskać częstotliwość sygnału i jednocześnie prędkość obrotową. Długość podstawy czasu dobrana zostanie doświadczalnie tak, aby uzyskać zadowalający kompromis między szybkością pomiaru i jego dokładnością. Zmierzone wartości wizualizowane będą za pomocą aplikacji, lub na wyświetlaczu LCD.

Pomiar temperatury

W celu wykonania pomiaru temperatury wykorzystano sensor DS18B20. Jego dokładność do +/- 0.5 oC dla zakresu temperatur od -10oC do +85 oC. Sensor ten umożliwia wybranie rozdzielczości wyniku pomiaru. Wybrano najwyższą możliwą rozdzielczość, czyli 12 bitów. W takim trybie jednak sporym ograniczeniem wydaje się czas pomiaru, który maksymalnie może wynieść 750ms.

Pomiar pobieranego prądu

Pomiar pobieranego prądu wykonywany jest na podstawie napięcia dostarczanego z regulatora BLDC, w którym zastosowano odpowiedni układ pomiaru prądu składający się z rezystora pomiarowego o rezystancji R = 0,003 Ω, a także wzmacniacza pomiarowego o wzmocnieniu równym K=200. Wykorzystany przetwornik analogowo-cyfrowy działa w trybie 10 bitowym, a jego napięcie referencyjne wynosi V_REF = 5V. Można łatwo obliczyć rozdzielczość mierzonego napięcia.

V_RES = V_REF / 210  = 4,88 mV

Aby obliczyć rozdzielczość mierzonego prądu należy skorzystać z poniższego wzoru.

I_RES = V_RES / (K*R) = 0,00488 / (200 * 0,003)  = 8,13 mA

Otrzymana rozdzielczość wydaje się wystarczająca, aczkolwiek należy wziąć pod uwagę, że na dokładność pomiaru wpływ ma szereg czynników, takich jak niedokładność przetwornika A/C, niedokładność rezystora pomiarowego, niedokładność źródła napięcia odniesienia, niedokładność wzmacniacza pomiarowego, czy zakłócenia toru pomiarowego.

Pomiar napięć fazowych i zasilającego silnika BLDC

Wykorzystane układy wejściowe torów pomiarowych zostały już opisane wcześniej. W celu obliczenia rozdzielczości pomiarów napięć wejściowych dzielników należy najpierw obliczyć rozdzielczość pomiaru dla przetwornika 10 bitowego.

V_RES = V_REF / 210  = 4,88 mV

Wykorzystując wzór na napięcie wyjściowe dzielnika U_wy = U_we * R_2 /(R_1 + R_2) można obliczyć rozdzielczość pomiaru na wejściu dzielnika.

V_RES2 = V_RES *(R_1+R_2) / R2

Przyjmując wartości rezystorów R_1 = 2,2k Ω i R_2 = 4,7k Ω otrzymujemy następującą wartość.

V_RES2 =0,00488 * (4700 + 2200) / 2200 = 15 mV

Należy jednak jak w przypadku pomiaru prądu wziąć pod uwagę poszczególne niedokładności. W tym przypadku znaczny wpływ na wyniki pomiarów będą dodatkowo miały wartości rezystorów, które mają określoną tolerancję.

 

Protokół komunikacji z komputerem


W celu umożliwienia komunikacji urządzenia z komputerem konieczne było zaprojektowanie odpowiedniego protokołu komunikacyjnego. Warto zaznaczyć, że do omawianej komunikacji wykorzystuje się interfejs szeregowy UART ze strony mikrokontrolera. Natomiast w celu przeprowadzenia transmisji ze strony komputera wymagana jest przejściówka UART → USB, która pozwala symulować port szeregowy COM. Przejściówka wykorzystywana w pracy oparta była na układzie FTDI232. Główną ideą zaprojektowanego protokołu komunikacji jednostki pomiarowej z komputerem jest wykorzystanie architektury klient-serwer. Rolę klienta pełni aplikacja komputerowa, która wysyła odpowiednio zakodowane rozkazy. Natomiast rolę serwera pełni jednostka pomiarowa, która dekoduje i realizuje otrzymywane rozkazy.

Protokół komunikacji

W pierwszym odebranym bajcie danych przez jednostkę pomiarową, dwa najstarsze bity są bitami kontrolnymi o wartościach wysokiego stanu logicznego (11). Kolejne 6 bitów określa rozkaz, który należy wykonać. Łatwo obliczyć, że w ten sposób możemy zakodować do 64 różnych rozkazów, co wydaje się być wartością zupełnie wystarczającą. Drugi bajt zawiera sumę kontrolną rozkazu i dopiero po weryfikacji rozpoczyna się wykonywanie rozkazu. Zaimplementowany protokół zakłada przesyłanie bardziej znaczących bajtów przed mniej znaczącymi (Big endian). Każdy dodatkowo przesyłany ciąg danych jest weryfikowany sumą kontrolną, której algorytm został przedstawiony w poprzednim podrozdziale. Rozkazy podzielono na cztery części w zależności od wartości pierwszych czterech bitów: 0xC (1100) rozkazy przesłania informacji zwrotnej, 0xD (1101) rozkazy wysłania informacji do regulatora, 0xE (1110) rozkazy konfiguracyjne jednostki pomiarowej, 0xF (1111) pozostałe rozkazy.

Protokół komunikacji jednostki pomiarowej z regulatorem BLDC

W celu komunikacji regulatora z dedykowaną jednostką pomiarową wykorzystano magistralę I2C.  W zaprojektowanym protokole komunikacji, regulator działa w trybie SLAVE, natomiast jednostka nadrzędna w trybie MASTER i jest odpowiedzialna za generowanie sygnału zegarowego na SCL, a także rozpoczynanie i kończenie komunikacji. Rozkazy będą formułowane przez jednostkę pomiarową i przesyłane do regulatora.

Protokół komunikacji regulatora z jednostką pomiarową

W pierwszym przesłanym bajcie danych, zaraz po bajcie z adresem odbiornika znajduje się rozkaz. Dwa najstarsze bity są bitami kontrolnymi o wartościach wysokiego stanu logicznego (11). Kolejne 6 bitów określa rozkaz, który należy wykonać. Łatwo obliczyć, że w ten sposób możemy zakodować do 64 różnych rozkazów, co wydaje się być wartością zupełnie wystarczającą. Zaimplementowany protokół zakłada przesyłanie bardziej znaczących bajtów przed mniej znaczącymi (Big endian). W zależności od rozkazu następnie przesyłane są dwa bajty z danymi lub są pomijane. Dodatkowy bajt zawiera obliczoną sumę kontrolną.

 

Oprogramownie


Oprogramowanie mikrokontrolera jest rozwijane w języku C. Wykorzystano gotowe biblioteki do obsługi wyświetlacza alfanumerycznego LCD i do obsługi sensora temperatury DS18B20. Poniżej zamieszczono odnośniki do stron www na których można znaleźć wykorzystane biblioteki.

http://radzio.dxp.pl/hd44780/ http://gandalf.arubi.uni-kl.de/avr\_projects/tempsensor/index.html

Podsumowanie


Przy testowaniu urządzenia wraz ze sterownikiem silnika BLDC zaobserowano kilka problemów. Jednym z nich okazał się pomiar prędkości obrotowej silnika na podstawie czasu między kolejnymi komutacjami. Mierzone czasy były dość niedokładne, co uniemożliwiło obliczenie prędkości obrotowej. Z tego powodu, do pomiaru prędkości obrotowej wykorzystano enkoder magnetyczny. Tak zmierzona wartość podawana jest na wejście regulatora PID.

Testowano trzy metody sterowania kluczami w półmostkach układu wykonawczego regulatora. Pierwsza zakładała kluczowanie górnych tranzystorów (unipolarna +), druga kluczowanie dolnych tranzystorów (unipolarna -), natomiast w trzeciej metodzie kluczowano zarówno górne jak i dolne tranzystory (bipolarna). W pierwszej metodzie straty mocy były spore ze względu na brak możliwości generowania czasów martwych sygnałów sterujących. Natomiast między metodami unipolarnymi nieznacznie efektywniejsza okazała się ta z kluczowaniem dolnych tranzystorów Mosfet z kanałami N, ponieważ miały one mniejsze ładunki bramek, a także mniejszą rezystancję na złączu dren-źródło (R_DS).

bldc_station_1

bldc_station_2

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

This site uses Akismet to reduce spam. Learn how your comment data is processed.