Sterownik modelu helikoptera na STM32 z manipulatorami MEMS
Prezentowany w artykule projekt to zdalny sterownik modelu helikoptera, bazujący na sensorach MEMS, który umożliwia sterowanie lotem modelu helikoptera za pomocą ruchu dłoni. W projekcie wykorzystano model helikoptera elektrycznego o nazwie Syma 107. Część elektroniczną sterowników inercyjnych zaimplementowano w dwóch zestawach STM32F4DISCOVERY. Działanie całego systemu przedstawiamy na filmie poniżej.
Platforma sprzętowa projektu składa się z dwóch zestawów STM32F4DISCOVERY ( fotografia 1 ) oraz zdalnie sterowanego helikoptera Syma 107, którego wygląd pokazano na fotografii 2.
Fot. 1. Wygląd zestawu STM32F4DISCOVERY
Fot. 2. Wygląd modelu helikoptera Syma 107, który został wykorzystany w przykładowym projekcie
W celu poznania charakteru wysyłanego sygnału z nadajnika do helikoptera pozyskano źródła informacji w Internecie (np.: http://www.rcgroups.com/forums/showthread.php?t=1417249&page=3 oraz http://www.avergottini.com/2011/05/arduino-helicopter-infrared-controller.html ). Następnie zweryfikowano zdobyte informacje za pomocą oscyloskopu analizując postać ramki danych. Postać ramki danych otrzymanej na ekranie oscyloskopu przedstawiono na rysunku 3.
Rys. 3. Ramka danych sterujących lotem helikoptera
Ramka danych ma następującą budowę:
START |
0 |
7 bitów YAW |
0 |
7 bitów PITCH |
C |
7 bitów THROTTLE |
0 |
7 bitów ADJUST(YAW) |
STOP |
gdzie:
START – znacznik początku ramki danych;
7 bitów YAW – wartość prędkości kątowej YAW
(0-max prędkość przeciwna do ruchu wskazówek zegara patrząc z góry na helikopter, 63-prędkość zerowa, 255-maksymalna prędkość zgodna z ruchem wskazówek zegara);
7 bitów PITCH – wartość prędkości kątowej PITCH
(0-max prędkość pochyłu do tyłu, 63-prędkość zerowa, 255-maksymalna prędkość pochyłu do przodu);
C – wybrany kanał komunikacyjny;
7 bitów THROTTLE – wartość prędkości obrotowej głównego silnika
(0-prędkość zerowa, 255-prędkość maksymalna);
7 bitów ADJUST(YAW) – wartość dostrojenia prędkości kątowej YAW
(0-max dostrojenie przeciwne do ruchu wskazówek zegara patrząc z góry na helikopter, 63-zerowe dostrojenie, 255-max dostrojenie zgodne z ruchem wskazówek zegara);
STOP – znacznik końca ramki danych;
Każde pole jest kluczowanym przebiegiem prostokątnym o częstotliwości 38 kHz. Poniżej przedstawiono zależności czasowe poszczególnych pól ramki danych:
Nazwa pola |
Czas trwania przebiegu prostokątnego 38 kHz [us] |
Czas trwania przerwy [us] |
START |
2000 |
2000 |
Bit o wartości 0 |
300 |
300 |
Bit o wartości 1 |
300 |
600 |
STOP |
300 |
40000 |