Top Banner
Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Sławomir Niespodziany Platforma sprzętowa dla robota mobilnego typu quad(ro)copter Opiekun pracy Dr inż. Kamil Kompa Ocena: ..................................................... ................................................................ Podpis Przewodniczącego Komisji Egzaminu Dyplomowego
47

SX quad(ro)copter

Feb 22, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SX quad(ro)copter

Rok akademicki 2013/2014

Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych

Instytut Informatyki

PRACA DYPLOMOWA INŻYNIERSKA

Sławomir Niespodziany

Platforma sprzętowa dla robota mobilnego typu

quad(ro)copter

Opiekun pracy

Dr inż. Kamil Kompa

Ocena: .....................................................

................................................................

Podpis Przewodniczącego

Komisji Egzaminu Dyplomowego

Page 2: SX quad(ro)copter

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1991-09-18

Data rozpoczęcia studiów: 2010-10-01

Życiorys

Urodziłem się w mieście Lublin w 1991 roku. Większość swojego życia spędziłem w

Puławach - mieście księżnej Izabeli Czartoryskiej. Tam się wychowałem i uczęszczałem do

szkół: Szkoły Podstawowej nr 3 im. Jana Brzechwy oraz Publicznego Gimnazjum nr 3 w

Puławach.

W roku 2010 ukończyłem I Liceum Ogólnokształcące im. Adama Jerzego ks. Czartoryskiego

w Puławach, po czym przystapiłem do matury.

Dobre wyniki z egzaminu maturalnego umożliwiły mi podjęcie studiów na

Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, gdzie pierwszego

października 2010 roku rozpocząłem studia na kierunku Informatyka.

Do kręgu moich zainteresowań, poza tematyką którą studiuję, należą motocykle i sport. W

wolnych chwilach wraz ze znajomymi organizuję wycieczki motocyklowe.

.......................................................

Podpis studenta

EGZAMIN DYPLOMOWY

Złożył egzamin dyplomowy w dniu .................................................................................. 2014 r

z wynikiem ..................................................................................................................................

Ogólny wynik studiów: ...............................................................................................................

Dodatkowe wnioski i uwagi Komisji: .........................................................................................

......................................................................................................................................................

......................................................................................................................................................

Page 3: SX quad(ro)copter

STRESZCZENIE

Informatyka w dzisiejszych czasach jest bardzo szeroką dziedziną. Jest to nauka

interdyscyplinarna. Przedstawiony poniżej projekt skupia w sobie zagadnienia przede

wszystkim z zakresu informatyki. Niemożliwe jednak byłoby zrealizowanie go bez

podstawowej wiedzy z zakresu automatyki i elekroniki.

Poniższa praca prezentuje proces projektowania pojazdu mobilnego - quad(ro)coptera -

latającego robota, posiadającego cztery wirniki w układzie X.

Pojazd ten jest przeznaczony do użytku zarówno w pomieszczeniach zamkniętych, jak i na

otwartej przestrzeni.

Sterowanie takim pojazdem może odbywac się na różne sposoby. Rozpoczynając od

sterowania za pomocą prostego kontrolera przez człowieka, poprzez sterowanie ciałem(dzieki

urządzeniu Xbox Kinect), kończąc na autonomicznej nawigacji z wykorzystaniem kamery i

analizy obrazu otaczającej przestrzeni.

Tematem poniższej pracy jest projekt elektronicznego układu stabilizacji lotu dla latających

pojazdów wielowirnikowych.

Układ taki musi być zdolny to wykonania algorytmu stabilizacji lotu pojazdu, sterowania

napędem, odczytu danych z niezbędnych czujników, oraz komunikacji z użytkownikiem.

Słowa kluczowe: quadrocopter, stabilizacja lotu, systemy wbudowane

Hardware platform for a quadrocopter type mobile robots

Nowadays, the information technology is a very wide field of science.

The project given below mainly focuses on information technology issues, but it would not be

possible to bring it to life without the basic knowledge of control theory and electronics.

The given thesis describes a project of a mobile vehicle - quadrocopter - flying robot,

consisting of four rotors in an X configuration.

It is designed for being used both in enclosed and open spaces.

Control of such a robot can be achieved in various ways. Starting with controlling by a human

via a simple controller, through the control with a human body(via Xbox Kinect sensor),

finishing on autonomous navigation with use of an on board camera and analysis of the

surrounding space image.

In the given thesis, I have described the construction of an electronic stabilization system for a

multicopter-type flying vehicles.

Such a system must be capable of performing the stabilization algorithm, driving motors,

reading data from sensors and communicating with user.

Keywords: quadrocopter, flight stabilization, embedded systems

Page 4: SX quad(ro)copter

Chciałbym podziękować

Panu dr inż. Kamilowi Kompie

za pomoc oraz cenne uwagi dotyczące przygotowanej pracy.

Page 5: SX quad(ro)copter

Spis treści

1 Wstęp 11.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Motywacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Cel pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 Analiza wymagań 22.1 Elementy bazowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Układ sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2.1 Rozmiar i zasilanie . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2.2 Określanie orientacji w przestrzeni . . . . . . . . . . . . . . . . . 32.2.3 Sterowanie silnikami . . . . . . . . . . . . . . . . . . . . . . . . . 42.2.4 Pomiar odległości od przeszkód . . . . . . . . . . . . . . . . . . . 42.2.5 Komunikacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Architektura projektu 5

4 Wybór elementów bazowych 74.1 Rama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2 Silniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.3 ESC - Sterownik szybkości obrotowej silnika . . . . . . . . . . . . . . . . 94.4 Bateria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 Wybór podzespołów dla sterownika 125.1 Nawigacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.1.1 Akcelerometr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.1.2 Magnetometr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.1.3 Żyroskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.1.4 Układy “hybrydowe” . . . . . . . . . . . . . . . . . . . . . . . . . 145.1.5 Fuzja sensorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155.1.6 Czujnik ciśnienia . . . . . . . . . . . . . . . . . . . . . . . . . . . 165.1.7 Czujniki odległosci . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2 Mikrokontroler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6 Schemat ideowy systemu 226.1 Zasilanie systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2 Pomiar sygnału z sensorów odległości . . . . . . . . . . . . . . . . . . . 246.3 Sterowanie napędem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.4 Czujniki orientacji, sygnalizacja stanu pracy, interfejs systemowy . . . . 256.5 Shemat ideowy sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7 Projekt płytki PCB 27

8 Moduł komunikacyjny 29

9 Oprogramowanie 309.1 Obsługa szyny I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319.2 Komunikacja - obsługa modułu UART . . . . . . . . . . . . . . . . . . . 329.3 Pomiar odległości od przeszkód . . . . . . . . . . . . . . . . . . . . . . . 339.4 Sterowanie napędem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349.5 Zarządzanie energią . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359.6 Protokół i prezentacja działania . . . . . . . . . . . . . . . . . . . . . . . 35

9.6.1 Ramka sterowania diodą LED . . . . . . . . . . . . . . . . . . . . 36

5

Page 6: SX quad(ro)copter

9.6.2 Ramka sterowania silnikami . . . . . . . . . . . . . . . . . . . . . 369.6.3 Ramka odległości . . . . . . . . . . . . . . . . . . . . . . . . . . . 379.6.4 Ramka orientacji . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

10 Osiągnięte efekty 3710.1 Plan rozwoju projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

11 Załączniki do pracy 39

6

Page 7: SX quad(ro)copter

1 Wstęp

1.1 Wprowadzenie

Poniższa praca opisuje konstrukcję systemu sterowania lotem dla pojazdów wielowirniko-wych - multicopterów. Ze względu na specyfikę swojej budowy, pojazdy takie wymagajązastosowania cyfrowego systemu stabilizacji lotu.

Moim celem było przedstawienie procesu projektowego urządzenia zdolnego do wy-konania algorytmu sterowania. Algorytm taki pozwala na precyzyjne kontrolowanie po-łożenia robota. Jednak postawione mu wymagania są rygorytyczne. Musi on działać wczsie rzeczywistym, a jego błędne działanie mogłoby być niebezpieczna dla zdrowia osóbprzebywających w pobliżu.

Niniejsza praca zawiera opis procesu jaki należy przeprowadzić, aby wytworzyć po-dobny system. Na początku przedstawiona jest analiza problemu, nastepnie definicja wy-magań, dobór odpowiednich metod, elementów i podzespołów. Finalnym efektem tegoprocesu jest projekt oraz konstrukcja urządzenia elektronicznego(zdolnego do orientacjiw przestrzeni i sterowania napędem), szkieletu programu obsługującego je oraz aplikacjitestowej prezentującej jego działanie.

1.2 Motywacja

Wybierając temat pracy, chciałem aby ukazywał on, w jaki sposób dziedzina jaką jestInformatyka, przenika się z innymi dziedzinami nauki. W tym przypadku, projekt, któ-rego realizacji się podjąłem, łączy w sobie wiedzę z zakresu fizyki, mechaniki, elektro-niki, informatyki oraz automatyki. Niemożliwe byłoby jego zrealizowanie bez wkładuktórejkolwiek z tych dziedzin nauki. Fizyka i mechanika opisują zjawiska fizyczne orazdefiniują model zachowania pojazdu. Korzystając z tych informacji i używając metodteorii sterowania możliwe jest zaprojektowanie odpowiedniego regulatora stabilizujące-go lot pojazdu. Z kolei, aby wykonać algorytm będący rezultatem poprzedniego procesukonieczne jest użycie komputera, zrealizowanego jako elektroniczny układ sterowania,możliwie jak najmniejszych rozmiarów.

W mojej pracy skupiłem się głównie na projekcie urządzenia elektronicznego, zdol-nego do wykonywania algorytmu stabilizującego lot pojazdu.

Rozpoczynając pracę chciałem, aby ukazywała ona przede wszystkim, iż - jak wieleosób błędnie sądzi - Informatyka nie jest nauką, której efekty widać jedynie na ekraniedomowych pecetów i smartfonów. Jest to nauka której wyniki spotykamy w praktyczniewszystkich miejscach w codziennym życiu.

1.3 Cel pracy

Głównym celem całego projektu jest realizacja latającego pojazdu, do zastosowań we-wnątrz budynków, który wyposarzony w kamerę i odpowiednie czujniki byłby zdolny doautonomicznej nawigacji i poruszania się wewnątrz pomieszczeń.

To co ma go odróżniać od innych rozwiązań, dostepnych już na rynku modelarskim,to własnie jego autonomiczność. Rozwiązania modelarskie nie skupiają się także na ta-kich aspektach jak nakierowanie na użycie w przestrzeniach zamkniętych oraz możliwośćkomunikacji z innymi urządzeniami, które mogą pełnić rolę interfejsu użytkonika(np.komputer, smartfon, konsola do gier).

Realizacja takiego projektu musiała jednak zostać podzielona na etapy.Aby autonomicznie decydować o swoim przemieszczaniu pojazd musi najpierw być w

stanie poruszać się w zadanym kierunku, utrzymywać swoją pozycję, a więc zapewniaćodpowiednią stabilność. Zapewnienie stabilizacji lotu jest zadaniem czasu rzeczywiste-go i wymaga jednostki sterującej, która umożliwi cykliczne wykonywanie algorytmu z

1

Page 8: SX quad(ro)copter

zadanym interwałem. Z kolei algorytm analizy obrazu z kamery, komunikacja z użyt-kownikiem(np. przesyłanie strumienia wideo) jest zadaniem wsadowym, wymagającymdużej mocy obliczeniowej. Do tego celu(obsługa komunikacji z użytkownikiem, anali-za obrazu, kompresja obrazu) wygodnym rozwiązaniem wydaje się być użycie systemuoperacyjnego, który jednak mógłoby niekorzystnie wpłynąć na jakość realizacji zadaniastabilizacji lotu - zadania czasu rzeczywistego. Intuicyjnye w tym przypadku wydaje siębyć zastosowanie dwóch jednostek - jedna o niewielkich zasobach, służąca do nawigacjii stabilizacji pojazdu, a druga do komunikacji z użytkownikiem i przetwarzania danychniekrytycznych pod względem czasu.

Celem niniejszej pracy było stworzenie części większego systemu, realizująccej funk-cjonalność stabilizacji lotu pojazdu typu quadcopter. Podsystem, realizujący własnieto zadanie, będzie w przyszłości elementem większego układu zdolnego do sterowaniapojazdem na wyższym poziomie abstrakcji, poprzez analizę otoczenia i decydowanieo kierunku przemieszczania. Efektem przeprowadzonego projektu miała być platformasprzętowa, składająca się z podstawowych komponentów takich jak rama, silniki, orazgłówny cel niniejszej pracy - układ elektroniczny, który umożliwi wykonanie algorytmustabilizacji lotu.

2 Analiza wymagań

Aby móc rozpocząć pracę nad układem elektronicznym należy mieć bazę - konstrukcję,którą układ ten mógłby sterować. Oczywiście konstrukcja mechaniczna pojazdu nie jestgłównym zagadnieniem tej pracy. Ograniczyłem się więc do zakupu niektórych elemen-tów na rynku modelarskim.

2.1 Elementy bazowe

Pierwszym elementem jaki należy wybrać jest rama pojazdu. Nie może być ona zbytduża gdyż planując zastosowanie wewnątrz pomieszczeń zamkniętych musimy pamie-tać o ograniczeniach na jakie możemy napotkać w przyszłości np. szerokość futryn wdrzwiach, przez które pojazd miałby przelecieć. Konstrukcja nie moze być również zbytlekka, gdyż przy potencjalnym wykorzystaniu na przestrzeni otwartej byłaby bardzopodatna na podmuchy wiatru. Kompromisem wydaje się tu być jednak rama mozli-wie mała, gdyż wyposarzając ją w dodatkowe czujniki, kamerę, baterię jej masę i takzwiększymy.

Rama oczywiście powinna zostać wyposażona w odpowiednie silniki. Powinny to byćsilniki bezszczotkowe, ze względu na to, iż w przeciwnym razie mogłyby ulec szybkiemuzużyciu. Silniki takie wymagają jednak odpowiedniego sterowania. Moc pobierana przeznie jest dosyć duża i może sięgać nawet setek Wat. Bespośrednie wysterowanie napędubyłoby niemożliwe. Z tego względu rozsądnym wydaje się zastosowanie dedykowanychsterowników dla silników, którymi można sterować podając na nie odpowiednie sygna-ły bezpośrednio z układu elektronicznego, tym samym nie obciążając go pobieranymprądem.

Jako żródło zasilania w pojeździe powinno zostać zastosowane ogniwo o dużej po-jemności i stosunkowo niskiej masie. Odpowiednie do tego zastosowania wydają się byćakumulatory litowo-polimerowe, które ze względu na posiadane obudowy wykonane ztworzyw sztucznych mają znacznie niższą masę, w przeciwieństwie do ciężkich odpo-wiedników zamkniętych w obudowach metalowych. Zastosowane źródło musi dostarczaćilość energii wystarczającą na odbycie kilkuminutowego lotu.

2

Page 9: SX quad(ro)copter

Podsumowanie:

1. Rama

(a) Niewielkie rozmiary, odpowiednie do lotu w zamkniętych pomieszczeniach

2. Silniki

(a) Bezszczotkowe

(b) Moc wystarczająca do uniesienia masy całej konstrukcji(z zapasem)

3. Regulatory szybkości obrotowej do silników

4. Bateria

(a) Lekka

(b) Pojemność wystarczająca do zapewnienia kilkuminutowgo lotu

2.2 Układ sterownika

Projektowany układ elektroniczny ma za zadanie wykonywać złożony algorytm stabili-zacji. Jego stopień skomplikowania wyklucza możliwość realizacji za pomocą układówmałej i średniej skali integracji. Z kolei, zadanie to jest raczej sekwencją niezbyt dużejilosci obliczeń i stosowanie układów VLSI, takich jak FPGA, wproadziłoby niepotrzeb-ne komplikacje w projekcie i realizacji samego algorytmu. Odpowiednim podejściem dowykonania tego zadania wydaje się być zastosowanie mikrokontrolera jednoukładowego,który w naturalny sposób umożliwi zaimplementowanie algorytmu, a jednocześnie jegostopień złożoności pozwoli na efektywne wykorzystanie.

2.2.1 Rozmiar i zasilanie

Dosyć istotną rzeczą jest rozmiar projektowanego układu. Powinien on być jak naj-mniejszy, aby mógł zmieścić się wraz z innymi podzespołami w ramie - która, docelowo,również ma być mała. Przy projektowaniu obwodu drukowanego należy położyć szcze-gólny nacisk na jego rozmiary.

Ważną kwestią mógłaby wydawać się konsumpcja energii przez projektowany układ.Jednak przyjmując pobór do maksymalnie kilkudziesięciu miliamperów prądu przezukład sterownika i porównując to do kilkunastu/kilkudziesięciu amperów pobieranychprzez sam napęd, problem ten nie wydaje się mieć dużego znaczenia. Mimo wszyst-ko, chociaż nie jest to bardzo istotnym kryterium, należy zaprojektować układ w takisposób, aby był możliwie energooszczędny.

2.2.2 Określanie orientacji w przestrzeni

Najważniejszym elementem całego sterownika jest układ nawigacji, który pozwala naokreślenie orientacji pojazdu w przestrzeni, a efekcie na doprowadzenie sprzężenia zwrot-nego dla algorytmu stabilizacji. Aby mieć komplet danych pozwalających na określenieorientacji niezbędne sa trzy czujniki - akcelerometr, kompas cyfrowy oraz żyroskop.Zestaw tych czujników można dodatkowo wzbogacić o czujnik ciśnienia - precyzyjny ba-rometr, pozwalający na wyliczenie bezwzględnej wysokości na podstawie analizy warościciśnienia atmosferycznego.

3

Page 10: SX quad(ro)copter

2.2.3 Sterowanie silnikami

Projektowany system musi mieć możliwość wysterowania silników(pośrednio - poprzezregulatory) - do tego celu niezbędna jest możliwość wytworzenia fali PWM, która podanana sterownik determinuje szybkość obrotową silnika, podłączonego do niego. Mikrokon-troler powinien więc posiadać ilość wyjść PWM zgodną z ilością podłączonych silników.Rozwojowym rozwiązaniem byłoby wyposarzyć moduł w możliwość wysterowania więk-szej niż 4 ilości silników. Umożliwiłoby to późniejszą rozbudowę pojazdu i zapewniłouniwesalność sterownika. Ze względu na szeroką dostepność mikrokontrolerów wyposa-rzonych w wiele wyjść PWM, projektowany układ powinien móc wysterować do ośmiusilników.

2.2.4 Pomiar odległości od przeszkód

Założenie wykorzystania projektu wewnątrz pomieszczeń wprowadza potrzebę wyposa-żenia pojazdu w zdolność oceny odległości od przeszkód otaczających go. Koniecznośćtę powinno pokryć zastosowanie kilku ultradźiękowych, bądź podczerwonych czujnikówodległości. Czujniki te powinny być rozmieszczone z różnych stron pojazdu. Aby zapew-nić względnie duży obszar widzenia, nalezy zastosować co najmniej 4 czujniki z czterechstron pojazdu oraz jeden czujnik wysokości względnej na spodzie. Należy również umoż-liwić podłączenie kilku dodatkowych czujników gdyby zaistniała taka konieczność. Za-stosowany mikrokontroler powinien móc odczytać dane ze wszystkich czujników. Jako,że większość czujników odległości dostępnych na rynku posiada wyjście w formie sygnałuanalogowego, to mikrokontroler powinien posiadać przetwornik analogowo cyfrowy doodczytu zmierzonej przez czujnik wartości. Przetwornik ten musi posiadać odpowiedniąliczbę kanałów, tak aby można było podłączyć wszystkie użyte czujniki.

2.2.5 Komunikacja

Jak zostało wspomniane wcześniej, układ ten ma być podsystemem dla większej całości.Względem reszty systemu będzie w przyszłości pracować jako slave. Układ nadrzędnybędzie wydawał polecenia na wyższym poziomie abstrakcji np. wznieś się, leć do przo-du, zawiśnij. Projektowany sterownik będzie wykonywał otrzymane polecenia. Niezbędnestaje się zapewnienie możliwości komunikacji sterownika z nadrzędnym układem master.Wykorzystać można do tego interfejs SPI, w który wyposarzona jest większość dostęp-nych na rynku mikrokontrolerów, a który jednocześnie pozwala na przesyłanie danychz dużą szybkością. Dodatkowo, zanim powstanie układ nadrzędny dla projektowanegosterownika, konieczne będzie zapewnienie możliwości komunikacji z aplikacją testową.Do tego celu można wykorzystać ten sam interfejs - SPI, lub interfejs UART - równieżpopularny wsród większości mikrokontrolerów. Sam mikrokontroler powinien musi byćudostępniać interfejs(np. JTAG) do programowania z zewnętrznego programatora orazdebugowania.

Podsumowanie:

1. Płytka PCB małych rozmiarów

(a) Interfejs do programowania mikokontrolera

(b) Układ zasilania dla mikrokontrolera i czujników

2. Mikrokontroler

(a) Zapas mocy obliczeniowej wystarczający dla wykonania algorytmu sterowania

(b) Tryb pracy energooszczędnej

4

Page 11: SX quad(ro)copter

(c) 8 wyjść sygnału PWM

(d) 8 kanałów przetwornika analogowo-cyfrowego

(e) Interfejs do komunikacji z czujnikami okreslającymi orientację

(f) Interfejs SPI do komunikacji z systemem nadrzędnym

(g) Interfejs do komunikacji z aplikacją testową(SPI lub UART)

3. Sześć czujników odległości

4. Czuniki pozwalające okreslić orientację

(a) Akcelerometr

(b) Kompas cyfrowy

(c) Żyroskop

(d) Czujnik ciśnienia

3 Architektura projektu

Jak już wczesniej wspomniałem tematem mojej pracy była konstrukcja układu sterow-nika, który działając pod kontrolą wiekszego systemu ma za zadanie zbierać dane zczujników i sterować napędem na poziomie prostego mikrokontrolera. Realizowany pod-system zaprojektowałem jako nakładkę, w formie małej płytki PCB, na większy układrealizujący zadania na wyższym poziomie abstrakcji.

Aby przybliżyć architekturę projektu, uwzględniając w niej system nadrzędny, wy-mienię podstawowe, potencjalne i przykładowe funkcje jakie system nadrzędny miałbyrealizować:

1. Obsługa kamery

• Konstrukcja obrazu w trzech wymiarach(niezbędne dwie kamery)

• Analiza otoczenia

• Tworzenie mapy otoczenia

2. Obsługa odbiornika GPS

• Nawigacja na przestrzeni otwartej

3. Obsługa karty SD

• Logowanie parametrów lotu

• Składowanie ujęć z kamery

• Zapamiętywanie mapy otoczenia

4. Obsługa kominikacji z użytkownikiem(np. WiFi)

• Przesyłanie parametrów lotu

• Transmisja strumienia wideo

• Zdalne sterowanie pojazdem

5

Page 12: SX quad(ro)copter

Funjcje te powinny zostać obsłużone przez odrębny układ z prostego powodu. Mia-nowicie - zadanie stabilizacji lotu musi być wykonywane w czasie rzeczywstym. Narzutze strony dodatkowych zadań mógłoby spowodować zaburzenie cyklicznego wykonaniaalgorytmu stabilizacji, co w efekcie mogłoby spowodować destabilizację całego pojazdui niekontrolowane zachowanie. Bardzo istotne jest więc aby algorytm stabilizacji wyko-nywał się na własnej jednostce obliczeniowej, gdzie żadne inne zadania nie wpływałybyna jego działanie.

Rysunek 1: Ogólna architektura projektu

Powyżej przedstawiona jest architektura całego systemu. Część, którą zrealizowałemw ramach pisanej przez mnie pracy jest objeta żółtym tłem na kolejnym rysunku.

Rysunek 2: Część zrealizowana w ramach niniejszej pracy

6

Page 13: SX quad(ro)copter

4 Wybór elementów bazowych

Projektowanie i budowa quadcoptera jest procesem skomplikowanym i zaprojktowaniewszystkich elementów na własną rękę wymaga wiedzy z zakresu wielu dziedzin. Obecnierynek modeli zdalnie sterowanych oferuje wiele elementów do konstrukcji podobnych po-jazdów, o sprawdzonej konstrukcji i wykorzystywanych w wielu aplikacjach. Produkowa-ne są one przez specjalizujące się w tym firmy i samodzielne projektowanie przyniosłobydużo gorszy efekt i prawdopodobnie wyższe koszty.

4.1 Rama

Podstawowym elementem quadocoptera jest jego rama. De facto to ona definiuje czymjest dany pojazd. Storując ramę o sześciu ramionach otrzymalibyśmy hexacopter, oośmiu - octocopter.

W sklepach modelarskich większość dostępnych ram ma rozmiary rzędu 50cm, cowydaje się być zbyt dużym wymiarem do zastosowań wewnątrz budynków.

Spośród przejżanych wariantów ram wziąłem pod uwagę nastepujące opcje:

1. HobbyKing Mini Quadcopter Frame V1 - 539mm

2. Hobbyking X525 V3 Glass Fiber Quadcopter Frame 600mm

3. Hobbyking SK450 Glass Fiber Quadcopter Frame 450mm

4. DJI Innovations F330 Frame - 330mm

5. Turnigy Talon Carbon Fiber Quadcopter Frame - 498mm

6. Turnigy Integrated PCB Mini-Quad - 345mm

7. Micro Integrated PCB with ESCs Quadcopter Frame - 235mm

Wszystkie wymienione ramy zamykały się w podobnych granicach cenowych, wszyst-kie również posiadały takie same mocowania do silników - 13/19mm.Pierwsza różnica na jaką zwróciłem uwagę to rozmiar. Podany rozmiar to długość prze-kątnej pomiędzy środkami montowań silników. Aby wyliczyć przekątną całego pojazdunależy dodać jeszcze dwa promienie śmigieł, które miałyby zostać zamontowane. Zewzględu na przeznaczenie - zastosowanie w pomieszczeniach zamkniętych - ramy o roz-miarach dochodzących do pół metra uznałem za zbyt duże - do ich wymiarów należałobydoliczyć jeszcze około 15[cm] średnicy wirnika.

Rama najmniejsza 7 zawierała zintegrowane już sterowniki prędkości obrotowej sil-ników, jednak w przypadku awarii takiego sterownika należałoby wymienić całą ramę,lub wymieniać poszczególne podzespoły zepsutego sterownika, przez co wybór tej ramynie wydał się najlepszym rozwiązaniem.

Z pozostałych dwóch ram (4, 6), ze względu na zapewnienia producenta oraz opi-nie dotyczące wytrzymałości, wybór padł na ramę firmy DJI. Rama dodatkowo posiadaPDB(ang. Power Distribution Board) - zintegrowany z ramą obwód, pozwalający nadostarczenie znacznych natężeń prądów do silników, bez konieczności ręcznego rozpro-wadzania zasilania od baterii do każdego z silników osobno.

7

Page 14: SX quad(ro)copter

Rysunek 3: Rama DJI F330

4.2 Silniki

Aby pojazd mógł oderwać się od ziemi, należało wyposarzyć go w odpowiedni napęd.Mowa tu o czterech silnikach prądu zmiennego oraz po jednym sterowniku zasilanymprądem stałym dla każdego silnika.

Do wybranej przeze mnie ramy można zakupić dedykowane silniki firmy DJI. Produ-cent nie podaje jednak szczegółów technicznych na ich temat. W związku z tym kupującje na popularnych serwisach internetowych moża trafić na nieoryginalne egzemplarze.Wiąże się z tym również trudność oszacowania ich mocy i sprawności. Zdecydowałem, iżlepszym wyjściem będzie zakup możliwie podobnych silników o znanych parametrach.

Rysunek 4: Silnik DJI 2212

Jedyną wartością jaką producent opisuje swoje silniki jest KV - czyli ilość obrotówwirnika na minutę per 1 Volt napięcia przyłożonego do silnika. W przypadku silnikowrekomendowanych przez DJI wartość ta wynosi 920KV. Pośród potencjalnych kandyda-tów na silniki do projektu pojawiły się więc silniki o wartości KV zbliżonej do podanejprzez firmę DJI.

Silniki stosowane w tego typu pojazdach są silnikami ze stałym uzwojeniem i rucho-mym magnesem - silniki te są bezszczotkowe, cechują się tym, iż obrotowi podlega wałwraz z obudową. Uzwojenia oraz podstawa, poprzez którą silnik jest przykręcony do ra-mienia, są nieruchome - tzw. “outrunner” (w przeciwieństwie do silnika typu “inrunner”

8

Page 15: SX quad(ro)copter

- gdzie obraca się jedynie wał, a obudowa jest nieruchoma). Ważnym kryerium wybo-ru było również mocowanie posiadane przez silnik - 16/19mm - co oznaczało zgodnośćrozstawu otworów w silniku oraz w ramieniu ramy.

Przy wyborze silników kierowałem się ich masą oraz ceną. Jeden z silników o korzyst-nych parametrach został odrzucony ze względu na brak informacji o jego producencie -co negatywnie wpłyneło na wiarygodność jego paraetrów. Po przejżeniu szerszej ofertywybrałem trzy silniki:

1. 2728 Brushless Outrunner Motor 1000kv (odrzucony ze względu na brak informacjio pochodzeniu)

2. NTM Prop Drive Series 28-30S 900kv / 215W

3. D2830-11 1000kv Brushless Motor (firmy Turnigy, moc maksymalna 210W)

Zastosowałem silniki firmy Turnigy 3, ze względu na ich cenę(silnik firmy NTM był o50% droższy, a cechował się porównywalnymi parametrami). Dodatkowo dla wybranegosilnika rekomendowany rozmiar wirnika jest dużo mniejszy od rozmiaru sugerowanegodla pozostałych. Zastosowałem wirniki o profilu dedykowanym przez producenta silni-ków.

Rysunek 5: Silnik Turnigy D2830-11

4.3 ESC - Sterownik szybkości obrotowej silnika

Sterowanie silnikami bezszczotkowymi musi odbywać się z wykorzystaniem odpowied-niego sterownika. Sterownik taki przekształca stały prąd pobierany z baterii, w serięimpulsów podawanych naprzemiennie na poszczeólne uzwojenia silnika, w ten sposóbmoże regulować dostarczaną do niego moc. Sterownik taki nazywany jest przez mo-delarzy ESC (ang. Electronic Speed Controller). Regulacja prędkości obrotowej silnikaodbywa się poprzez podawanie sygnału do jego sterownika. Sygnał ten wykorzystujemodulację PWM (ang. Pulse Width Modulation), jednak w modelarstwie stosuje się jejszczególny przypadek.

W klasycznej modulacji PWM, 100% wartości wysyłanego sygnału jest osiągane jako100% wypełnienia, czyli w praktyce sygnał stały o poziomie wysokim. Dla 25% warościsygnału, wypełnienie wynosi 25%. Analogicznie dla 0% wartości sygnału. Podejście to ma

9

Page 16: SX quad(ro)copter

jedną zasadniczą wadę - jeśli sygnał odbierany z kanału ma 100% wypełnienia, możliwejest że nadajnik np. zablokował się i utrzymuje na wyjściu stały wysoki poziom, niezwiązany z rzeczywistą wartością nadawanego sygnału. Jeszcze gorszą sytuacja jest gdyodbierany sygnał ma stałą wartość zero. Możliwe wtedy, że nadajnik jest wyłączony lubuszkodzony.

Aby zapewnić możliwość detekcji awarii nadajnika lub linii, w modelarstwie stosujesię nastepującą metodę. Nadawane są impulsy o odpowiedniej długości - i tak wysyłającsygnał o wartości 0%, nadajnik wysyła sygnał o czasie trwania 1ms. Wysyłając sygnało wartości 100%, nadajnik emituje impuls o długości 2ms. W przypadku sygnałów owartości poniędzy 0 a 100% wysyłana próbka ma długość z przedziału pomiędzy 1ms, a2ms.

ts = 1 + (x ∗ 1) [ms] (1)

Równanie przedstawia czas trwania wysyłanego impulsu. Próbki wysyłane są okre-sowo, zależnie od częstotliwości z jaką nadawana jest fala PWM. W modelarstwie za-zwyczaj stosuje się falę o częstotliwości 50Hz, jednak przy sterowaniu silnikami, możnają zwiększyć do 400Hz, w celu zwiększenia ich responsywności.

Rysunek 6: Fala PWM Sterująca pracą silników

Przy wybieraniu kontrolerów do wybranych silników należy zwrócić uwagę na ichparametry prądowe. Maksymalny prąd pobierany przez wybrany przeze mnie silnik, przypełnej mocy, może wg producenta dochodzić do 21A. Aby kontroler nie uległ uszkodzeniumusi być w stanie podać na silnik prąd o co najmniej takim natężeniu. Rekomendowanyprzez producenta silnika kontroler powinien mieć wydajność minimum 30A.

Spośród sterowników oferowanych przez sklepy modelarskie wybrałem trzy, z którychjeden miał znaleźć się w pojeździe. Wszystkie oczywiście zostały zaprojektowane z myśląo silnikach bezszczotkowych:

1. Turnigy Pulsh 30A BEC 5V/2A

2. Turnigy Multistar 30A w/o BEC

10

Page 17: SX quad(ro)copter

3. Mystery 30A BEC 5V/3A

BEC - czyli ang. Battery Elimination Circuit - to funkcjonalność sterownika po-legająca na możliwości pobierania z niego zasilania do układu sterującego pojazdem.Wykorzystanie sterownika z BEC eliminuje potrzebę stosowania dodatkowego regulato-ra(który wprowadzałby znaczne straty energii) lub konwertera napięcia(który zajmował-by dodatkową przestrzeń). Z tego względu pozycja 2 została odrzucona. Dwa pozostałesterowniki były zbliżone do siebie parametrami, jak również i masą(odrzucony “Multi-star” był od nich cięższy).

Wybór padł na konstrukcję 1 firmy Turnigy, ze względu na niższą cenę oraz pozytyw-ne rekomendacje modelarzy na jej temat. Obwód BEC posiadany przez ten sterownikjest w stanie dostarczyć do urządzenia elektronicznego prąd o natężeniu 2[A], przy na-pięciu 5[V].

4.4 Bateria

Bateria do wybranych sterowników powinna posiadać dwa do czterech ogniw połączo-nych szeregowo. Oznacza to konfigurację 3S1P (3 - serial - 1 - paralell). W tym przypadkuzastosowanie znalazła bateria o pojemności 2200mAh i napięciu wyjściowym 11.1[V]. Poprzejżeniu ofert i wytypowaniu kilku pozycji:

1. Turnigy 2200mAh 197g 30C

2. B-Grade 2200mAh 190g 20C

3. Turnigy 2200mAh 185g 20C

4. Zippy-FlightMax 2200mAh 173g 25C

5. Rhino 2150mAh 186g 20C

Zdecydowałem się na użycie baterii “Turnigy 2200mAh 185g 20C”. Jest ona jedną zlżejszych oraz tańszych z baterii przedstawionych powyżej. Stała rozładowania 20C jestrównież wystarczająca dla zastosowania w zaprojektowanym quadcopterze (Oznacza onaić baterię można rozładować stałym prądem w ciągu 1/20h - z czego wynika maksymalnyprąd jaki można z niej pobierać bez uszkodzenia: 2.2[Ah] / (1/20)[h] = 44[A]). Istotnącechą był także rozmiar baterii. Wybrana ma wymiary 103x33x24 mm, co czyni jąnajmniejszą z wymienionych.

Szacunkowa masa projektowanego pojazdu miała wynosić około 750g. Z doświadcze-nia i badań modelarzy wynika, iż na utrzymanie w zawisie pół kilograma masy trzebawydzielić 100W mocy. Z przelicznia tych danych wynika, że na utrzymanie w powietrzucałego pojazdu silniki będa musiały generować 150W mocy. Dla lotu dynamicznego war-tość pobieranej mocy może zwięszyć się nawet dwukrotnie, czyli do 300W. Do obliczeńprzyjąłem sprawność silników 85%(pesymistyczny przypadek).

Przy napięciu baterii wyoszącym około 11V, wartość pobieranego prądu będzie do-chodzić do 32A. Z punktu widzenia baterii, jest to wartość akceptowalna. Nawet ciągłypobierany prąd na poziomie 32A, pozwala na (dynamiczny)lot o długości ponad 4 minut.

t =C ∗ U ∗ η

P=

2.2[Ah] ∗ 11[V ] ∗ 85[%]300[W ]

= 4.11[min] (2)

Dla zwykłego zawisu czas ten powinien być dwa razy większy.

Szacunki te potwierdzają kalkulatory modelarskie. Dla wproadzonych szczegółowychdanych takich jak model silników, sterowników, baterii oraz profilu smigieł wyliczają czaslotu:

11

Page 18: SX quad(ro)copter

• na pełnej mocy - 5.3 min

• lot mieszany - 6 min

• zawis - 8.8 min

Wyliczenia zostały wykonane przy pomocy serwisu ecalc.ch

5 Wybór podzespołów dla sterownika

Jednym z ważniejszych kryteriów przy wyborze podzespołów elektronicznych dla pro-jektowanego urządzenia była dostępność części na rynku. Części mało dostępne, byłyprzeze mnie odrzucane, gdyż uszkodzenie którychś z nich w czasie montażu urządzeniawiazałoby się z koniecznością zakupu kolejnych. W przypadku braku dostępności czę-ści(czy to z powodu zaprzestania produkcji, czy ze względu na niedostępność w Polsce,bądż Europie) zaprojektowany układ elektroniczny mógłby nie działać prawidłowo. Rów-nież potencjalna możliwość produkcji masowej urządzenia wiązałaby się z koniecznościąposiadania wielu egzemplarzy tych samych podzespołów.

5.1 Nawigacja

Pierwszym elementem systemu stabilizacji w jaki należy wyposażyć układ jest zastawczujników pozwalających na określenie orientacji pojazdu w przestrzeni trójwymiaro-wej. Jest to niezbędne ze względu na konieczność zapewnienia sprzężenia zwrotnego dlazaprojektowanego w przyszłości regulatora stabilizującego lot.

5.1.1 Akcelerometr

Pierwszym niezbędnym czujnikiem jest akcelerometr. Jest to urządzenie mierzące przy-spieszenie w wybranym kierunku. Akcelerometr może mierzyć przyspieszenie zarównowzdłuż jednej osi, jak i w trzech.

Zasada działania klasycznego akcelerometru opiera się o pomiar wychylenia masyumieszczonej na sprężynie(bądź sprężynach w przypadku pomiaru w kilku wymiarach).W stanie nieważkosci masa znajduje się w pozycji neutrealnej. Pod wpływem działa-nia siły grawitacji, bądż siły bezwładności(w przypadku oddziaływania przyspieszenia)masa wychyla się z położenia równowagi. Zmierzone wychylenie można przekształcićodpowiednio na wartość przyspieszenia jakie oddziałowuje na cały czujnik.

Współczesnie wykorzystywane akcelerometry są urządzeniami typu MEMS(ang. Mi-cro Electro-Mechanical System), gdzie elementy mechaniczne umieszcza się bezpośredniow strukturach krzemowych, w których równocześnie znajduje się część elektroniczna od-powiedzialna za przetwarzanie wielkości fizycznych na sygnały cyfrowe, badź analogowe.Jako ciekawostkę można przytoczyć, iż ze względu na swą budowę, czujniki typu MEMSsą wrażliwe na uszkodzenia mechaniczne. Z tego też powodu urządzeń zawierającychje(m.in. nowoczesnych telefonów komórkowych) nie należy umieszczać w wanienkachultradźwiękowych. Narażone na mechaniczne fale czujniki mogłyby ulec uszokdzeniu.

Wsród akcelerometrów dostępnych w sklepach elektronicznych znalazły się:

1. ADXL326, ADCL225 (Analog Devices, trzyosiowe, zakres pomiaru 2-16[g], wyjściaw postaci sygnałów analogowych)

2. ADXL345 (Analog Devices, trzyosiowy, zakres pomiaru 2-16[g], wyjście w formiecyfrowej poprzez interfejs I2C lub SPI)

12

Page 19: SX quad(ro)copter

3. BMA180 (Bosch, trzyosiowy, zakres pomiaru 1-16[g], wyjście I2C lub SPI)

Wybór czujnika i argumentacja wyboru znajduje się w dalszej części rozdziału.

5.1.2 Magnetometr

Magnetometr jest urządzeniem, które mierzy pole magnetyczne - w tym również po-le magnetyczne Ziemi. Prosty magnetometr może działać wykorzystując efekt Halla.Inna metodą pomiaru pola magnetycznego jest użycie czujnika magnetorezystywnego.Wykorzystuje on folię niklowo-żelazową, która pod wpływem zmiany natężenia polamagnetycznego zmienia swoją rezystację.

Natężenie pola magnetycznego Ziemi - które układ powinien być w stanie zmierzyćma wynosi do 0.5-0.6[gaussa](jeden [gauss] odpowiada jednej tysięcznej Tesli). Dostępneczujniki o zakresie wystarczającym na taki pomiar to:

1. HMC5883L (Honeywell, trzyosiowy, interfejs I2C)

2. MAG3110 FCR1 (Freescale, trzyosiowy, interfejs I2C)

5.1.3 Żyroskop

Żyroskop jest urządzeniem mierzącym prędkość kątową, lub odchylenie kątowe. Zasadadziałania żyroskopu o klasycznej budowie opiera się o zasadę zachowania momentu pędu.W urządzeniu takim dysk wprawiony w ruch obrotowy wokół własnej osi jest zamoco-wany na zestawie przegubów umożliwiających swobodny obrót w trzech płaszczyznach.Inną możliwością mocowania dysku jest umieszczenie go nad strumieniem sprężonegopowietrza, lub w próżni w polu elektrostatycznym lub magnetycznym. Wirujący z dużąprędkością dysk ma tendencję do pozostawania w płaszczyźnie w której się obraca.

Rysunek 7: Schemat klasycznego żyroskopu

Współczesne żyroskopy elektroniczne są wykonywane w technologii MEMS. Układyo takiej budowie składają się zazwyczaj z dwóch przeciwbieżnie poruszających się mas.W trakcie ruchu obrotowego takiego urządzenia na poruszające się masy działa siłaCoriolissa. Pomiar tej siły pozwala na wyliczenie prędkości kątowej urządzenia.

Dostępne na rynku żyroskopy elektroniczne:

1. L3G020 (STMicroelectronics, trzyosiowy, zakres pomiaru do 2000◦/s, interfejsI2C/SPI)

13

Page 20: SX quad(ro)copter

2. IDG500 + ISZ500 (Invensense, dwuosiowy + jednoosiowy, zakres pomiaru do500◦/s, wyjście w postaci analogowej)

3. ITG3200 (Invensense, trzyosiowy, zakres pomiaru do 2000◦/s, interfejs I2C)

5.1.4 Układy “hybrydowe”

Poza wymienionymi powyżej, na rynku elektronicznym oferowane sa jeszcze układy za-wierające w sobie po dwa lub więcej rodzajów sensorów. I tak pozostałe układy którebrałem pod uwagę przy projektowaniu pojazdu to:

1. LSM303DLHC (STMicroelectronics, 3x Magnetometr, 3x Akcelerometr, interfejsI2C)

2. MPU6000 (Invensense, 3x Akcelerometr, 3x Żyroskop, interfejs I2C/SPI)

3. MPU6050 (Invensense, 3x Akcelerometr, 3x Żyroskop, interfejs I2C)

4. MPU9150 (Invensense, 3x Magnetometr, 3x Akcelerometr, 3x Żyroskop, interfejsI2C)

Ponadto układy MPUxxxx firmy Invnsense posiadają sprzętowy procesor do obróbkidanych zbieranych z sensorów(wyjaśnione poniżej).

Pierwszym kryterium jakie należy wziąć pod uwagę przy wyborze odpowiednich czuj-ników, jest ich rozdzielczość i zakres mierzonych wartości. Dla np. kompasu cyfrowegonależy wybrać taki czujnik którego zakres pomiarowy wynosi minimum ±0.6[gauss‘a]gdyż pole magnetyczne ziemi ma natężenie sięgające tej własnie wartości.

Kolejnym kryterium z jakiego należy zdawać sobie sprawę jest fakt, iż przy montażuczęści na płytce PCB przylutowane elementy nie będą zorientowane idealnie względemniej. W takiej sytuacji układ współrzędnych czujnika będzie nieco odchylony od układuwspółrzędnych całego urządzenia elektronicznego. Montując na płytce wiele czujnikównależy mieć na uwadze, że każdy z nich będzie inaczej zoriwntowany względem pozo-stałych. Różna orientacja różnych rodzajów czujników nie powinna powodować dużychproblemów. Dla przykładu jeśli akcelerometr byłby zoriwntowany inaczej niż kompascyfrowy - różnicę tę można skompensować programowo. Jednak mimo tego, że problemmożna rozwiązać, wygodniej i efektywniej byłoby wyeliminować go już na poziomiesprzętu.Dużo gorszym jednak “zagrożeniem” jest sytuacja, w której użyte zostałyby dwie kościczunika tego samego rodzaju np. dwuosiowy żyroskop oraz jednoosiowy żyroskop. Dwu-osiowy czujnik mógłby mierzyć położenie w płaszczyźnie poziomej(XZ), a jednoosiowyazdłuż osi Y. Problem tkwi w tym, iż jeśli czujnik dwuosiowy wyznacza płaszczyznępomiaru, to oś pomiaru drugiego czujnika musi być zorientowana idealnie prostopadledo tej płaszczyzny. W przypadku minimalnego odchylenia od pionu, pomiary wielkościwzdłuż osi pionowej miałyby wpływ na pomiary wzdłuż innych osi - nie byłoby zapew-nionej ortogonalności pomiędzy osiami układu współrzędnych. Jednocześnie, pokryciesię osi układu współrzędnych w jednym mijscu spowodowałoby powstanie martwej strefyw drugim miejscu.

Kryteria te są na tyle istotne, iż przy wyborze czujników skłaniałem się ku wybraniuukładów zawięrających kilka rodzajów sensorów w jednej kości.

Ostatnie kryterium jakie brałem pod uwagę jest na tyle istotne, ze poświęciłem mukolejny podrozdział.

14

Page 21: SX quad(ro)copter

5.1.5 Fuzja sensorów

Aby móc zaprojektować sprawny algorytm stabilizacji dla budowanego pojazdu, trzebazapewnić mozliwość dokładnej orientacji w przestrzeni. Jednak pod pojęciem zapewnie-nia orientacji kryją się algorytmy, które umożliwiają wyliczenie koordynatów w czasierzeczywistym. Zastosowanie znajdują tutaj różne aparaty matematyczne takie jak fil-try Kalmanna, czy filtry komplementarne. Jednak nie zagłębiając się w matematykę,chciałem opisać czym charakteryzuje się działanie poszczególnych czujników.

Akcelerometr jest urządzeniem, które mierzy przyspieszenie. Używając akcelerome-tru mozemy więc odczytać jak względem kości sensora skierowane jest pole grawitacyjne.Pierwszy problem jaki napotykamy używając akcelerometru to nakałdanie się różnychprzyspieszeń. Jeśli sensor porusza się z jakimś przyspieszeniem to przyspieszenie to ulegazsumowaniu z przyspieszeniem ziemskim i w efekcie wartość którą odczytujemy jest su-perpozycją kilku składowych. Z drugiej strony, w trakcie swobodnego spadku urządzenienie wykryje żadnego przyspieszenia. W obu przypadkach określenie orientacji względemZiemi jest niemożliwe. Kolejną wadą akcelerometru jest brak możliwości określenia sta-łego punktu odniesienia na płaszczyźnie poziomej. W momencie gdy sensor wskazujeprawidłowo kierunek grawitacji mozemy z dużą precyzją określić płaszczyznę prostopa-dłą do grawitacji. Niemożliwe jednak jest wykrycie obrotu urządzenia wokół pionowejosi.

Kompas cyfrowy, podobnie jak akcelerometr, zawsze wskazuje bezwzględny kieru-nek, w tym przypadku - kierunek magnetycznej północy. Jednak urządzenie to zbie-ra również zakłócenia magnetyczne pochodzące od otaczającego środowiska. Kolejnymutrudnieniem w obsłudze kompasu jest tzw. magnetyczna inklinacja. Pole magnetyczneZiemi nie jest skierowane równolegle do powierzchni ziemi. Jego kierunek tylko na równi-ku jest zgodny z płaszczyzną poziomą. Składowa pozioma wektora pola magnetycznegoZiemi zawsze wskazuje magnetyczną północ. Jednak wektor ten zawiera również składo-wa pionową. W okolicach równika jest ona równa zeru, jednak w innych miejscach jestniezerowa. Na półkuli północnej, zwrot składowej pionowej tego wektora jest skierowanypod ziemię. Kąt który tworzy wektor pola magnetycznego z poziomem nazywany jestinklinacją magnetyczną. Kierunek pola magnetycznego musi być zawsze korygowany zapomocą wskazań akcelerometru i brana pod uwagę musi być jedynie jego składowa po-zioma. Kolejnym zjawiskiem zwanym deklinacją, jest odchylenie magnetycznej północy,od rzeczywistej północy. Odchylenie to jest zależne od położenia geograficznego, jed-nak w przypadku zastosowania quadrocoptera wewnątrz budynków odchylenie to jestpomijalnie małe gdyż pozycja geograficzna pojazdu nie będzie się znacząco zmieniać.

Oba wyżej wymienione czujniki mają jedną dodatkową wadę. Ich wskazania są zaszu-mione, co wymusza zastosowanie filtra dolnoprzepustowego. Z kolei zastosowanie takiegofiltra wprowadza opóźnienie w odczycie. Jednocześnie nie rozwiązuje to problemu swo-bodnego spadku i działania zewnętrznych sił. Oba powyższe czujniki działają dobrze dlaniskich częstotliwości zmian orientacji, jednak przy gwałtownych ruchach ich wskazaniamogą być obarczone błędem.

Czujnikiem który rozwiązuje te problemy jest żyroskop. Urządzenie to wskazuje pręd-kość kątową swojego obrotu. Problem jaki wiązałby się z użyciem samego żyroskopu jestnastepujący. Aby z prędkości kątowej odczytać bieżące położenie, należy ją scałkować.Jednak sygnał z żyroskopu również jest zaszumiony. Całkowanie zaszumionego sygnałupowoduje tzw. dryft. W momencie gdy urządzenie pozostaje w spoczynku, całkowaniezaszumionego sygnału powoduje powolną zmianę orientacji - pomimo braku faktycznegoruchu. Żyroskop jednak dobrze mierzy gwałtowne ruchy urządzenia.

Tak więc, przy niskich częstotliwościach do ustalenia orientacji używane są akcele-rometr oraz kompas, a przy szybkich zmianach położenia należy wykorzystać żyroskop.Wyliczanie pozycji i orientacji urządzenia na podstawie pomiarów realizowanych przez

15

Page 22: SX quad(ro)copter

Rysunek 8: Inklinacja i deklinacja magnetyczna

wszystkie trzy czujniki nazywane jest fuzją sensorów(ang. Sensor Fusion).Ze względu na konieczność przeprowadzania dokładnych pomiarów i obliczeń w cza-

sie rzeczywistym, firma Invensense wyposarzyła niektóre ze swoich czujników w tzw.DMP(Digital Motion Processor). Jest to jednostka obliczeniowa, która na bieżąco pro-wadzi obliczenia związane z orientacją czujnika w przestrzeni i dzięki zastosowanym wurządzeniu algorytmom przeprowadza fuzję sensorów w czasie rzeczywistym.

Urządzenia które posiadają w/w jednostkę obliczeniową to MPU-6000, MPU-6050,MPU-9150. Ze względu na to, iż kość MPU-9150, posiada zintegrowane wszystkie trzyrodzaje sensorów, które spełniały poprzednie wymagania, oraz ze względu na posiadaniewbudowanej jednostki DMP, zdecydowałem się na użycie tego czujnika w swoim pro-jekcie. Ponadto niewielkie rozmiary kości, oraz konieczność zamontowania tylko jednegoukładu, który zajmuje mniej miejsca, potwierdziły ten wybór.

5.1.6 Czujnik ciśnienia

Dodatkowym elementem w jaki zdecydowałem się wyposarzyć pojazd jest czujnik ci-śnienia atmosferycznego. Układy jakie można bez większych problemów nabyć to:

1. BMP085 (Bosch, dokładność 2.5[mBar], interfejs I2C)

2. LPS331AP (STMicroelectronics, dokładność 0.2[mBar], interfejs I2C)

3. MS5611 (Measurement Specialities, dokładność 1.5[mBar], interfejs I2C/SPI)

Ze względu na najniższa cenę, największą dostępność oraz największą dokładnośćwybrałem układ LPS331AP. Po wykonaniu wstępnych obliczeń podawana dokładnośćpowinna przełożyć się na rozdzielczość pomiaru wysokości wynoszącą kilkadziesiąt [cm].

16

Page 23: SX quad(ro)copter

Gęstość powietrza przyjmowana dla obliczeń w aerostatyce i aerodynamice:

ρ = 1.168[kg

m3] (3)

Mając minimalną różnicę ciśnienia jaką możemy zmierzyć(dokładność czujnika 0.2[mBar]),średnią gęstość powietrza oraz wartość przyspieszenia ziemskiego, można oszacować do-kładność pomiaru wysokości:

p = ρ ∗ g ∗ h (4)

h =p

ρ ∗ g=

0.2[mBar]

1.168[ kgm3 ] ∗ 9.80[ms2 ]= 1.7[m] (5)

Można ponadto przypuszczać, iż ze względu na dziesięciokrotnie większą rozdziel-czość, pomiary z czujnika po odpowiednim przefiltrowaniu będą mogły wykazać niecodokładniejszą różnicę przy pomiarze wysokości. Oczywiście oszacowanie to zakłada, iżw środowisku poruszania się pojazdu nie bedą występować nagłe zmiany ciśnienia. Wy-korzystanie czujnika ciśnienia ma tu charakter dodatkowy i w przypadku gdyby okazałsię on zbędny, kolejna wersja urządzenia nie będzie go zawierać. Dodatkowo, w pojeź-dzie został zainstalowany czujnik odległości mierzący względną wysokość nad poziomemgruntu.

5.1.7 Czujniki odległosci

Pojazd miał się poruszać w przestrzeni zamkniętej, więc kluczowa była możliwość wykry-wania potencjalnych przeszkód, chociażby na podstawowym poziomie. Z tego powoduzdecydowałem się wyposarzyć urządzenie w czujniki odległości. Dostepne czujniki odle-głości dzielą się na dwie grupy. Pierwszymi z nich są czujniki ultadźwiękowe, emitującemechaniczne fale o częstotliwości wyższej niż graniczna częstotliwość słyszalności dlaucha ludzkiego. Drugą grupą czujników są czujniki podczerwone, emitujące podczerwo-ne światło, które odbijając się od przeszkody wraca do czujnika i pozwala na określenieodległości.

Oba rodzaje czujników charakteryzują się tym, że dane pomiarowe są możliwe doodczytu poprzez pomiar wartości analogowego sygnału na wyjściu czujnika. Pozwalato na uniezaleznienie fizycznego interfejsu systemu od rodzaju czujnika, jaki będziezastosowany. Postawione wymaganie dla mikrokontrolera na posiadanie przetwornikaanalogowo-cyfrowego umożliwia wykorzystanie zarówno czujników ultradźwiękowych,jak i podczerwonych.

Poniżej przedstawiłem kilka specyficznych cech jakimi charakteryzują się poszczegól-ne rodzaje czujników.

Czujniki Ultradźwiękowe - Niewątpliwą zaletą czujników ultradżwiękowych jest ni-ski pobór energii. Czujnik w trakcie pracy pobiera od 1 do 2 mA prądu. Pomiar odległościodbywa się poprzez wyemitowanie fali dźwiękowej i pomiarze czasu do powrotu echa.Nastepstwem tego jest fakt, iż pomiar nie nastepuje punktowo. Wiązka fali dźwiękowejzwiększa swoją szerokość w miarę wzrostu odległości. Możliwy jest więc pomiar odległo-sci od przedmiotów ustawionych nie tylko na wprost czujnika, ale także znajdującychsię w pewnym polu wokół osi, wzdłuż której emitowana jest wiązka.

Czujnik, który rozważałem do zastosowania w pojeździe to układ MB1010 firmyMaxbotix. Charakteryzuje się on małymi wymiarami(20x22x16[mm]) oraz masą(4.3[g]).Zakres odległości, jakie potrafi on zmierzyć, wynosi od 0[cm] do 6.45[m], a wiec wię-cej niż wystarczająco do zastosowań wewnątrz budynków. Częstotliwość wykonywania

17

Page 24: SX quad(ro)copter

pomiarów dla wybranego czujnika wynosi 20[Hz]. Jest to wartość dosyć duża, w po-równaniu do innych czujników tego samego rodzaju, których częstotliwości pomiarowewynoszą niekiedy 10[Hz]. Analogowy sygnał wyjściowy jest proporcjonalny do mierzo-nej odległości, więc funkcja odległości jest liniowa. Upraszcza to znacznie programowąobsługę czujnika i przeliczanie wartości napięcia wyjściowego czujnika na odpowiedniąodległość.

Rysunek 9: Ultradźwiękowy sensor odległości MB1010

Niestety, czujniki ultradźwiękowe posiadają jedną zasadniczą wadę, nie wynikającą zich konstrukcji. Aby przetestować zdolności czujnika, sporządziłem protoryp urządzenia,które wykozystywało go do pomiaru odległości. Okazało się, że czujnik doskonale odczy-tuje odległość od preszkód typu regał, czy nawet materiałów miękkich, które - mogłobysię wydawać - mogłyby pochłaniać/rozpraszać fale dźwiękowe.

Niestety, czujnik nie jest w stanie zmierzyć odległości od przeszkody płaskiej, którejpłaszczyzna jest ustawiona do niego pod kątem większym niż około 40◦. Wyemitowanafala odbija się od przeszkody i po napotkaniu kolejnej przeszkody powraca do czujnikatą samą drogą. W zaistniałej sytuacji czujnik odczytuje zawyżoną odległość.

Rysunek 10: Błąd pomiaru przy zbyt dużym kacie nachylenia do płaszczyzny pomiaru(α ­ 40◦ lub β ­ 40◦)

18

Page 25: SX quad(ro)copter

Posiadana właściwość dyskfalifikuje czujnik ultradźwiękowy, jako medium do po-miaru odległości od otaczających przeszkód. Z drugiej jednak strony, zalety tego roz-wiązania(szczególnie duży zakres pomiarowy) sprawiają, ze doskolane nadaje się on dopomiaru względnej wysokości, na której znajduje się pojazd.

Czujniki podczerwone - W przeciwieństwie do czujników ultradźwiękowych, czujni-ki podczerwone pobierają wielokrotnie więcej prądu. Średnia wartość prądu pobierane-go przez pojedyńczy czujnik wynosi 30[mA](maksymalnie 40 wg noty katalogowej). Wpraktyce zmierzone przeze mnie wartości nie przekraczały 20mA. Odpowiada to orien-tacyjnej wartości prądu, który musi przepływać przez diodę podczerwoną, będącą inte-gralną częścią czujnika. Zasadniczo czujniki podczerwone konstruowane są jako binarnewskaźniki, określające czy odległość od obiektu jest większa od ustalonego progu, czymniejsza. Jednak, istnieją również czujniki pozwalające na płynny pomiar odległości wpewnym zakresie.

Rysunek 11: Podczerwony sensor odległości GP2Y0A21YK0F

Wiodącym producentem podczerwonych czujników odległości jest firma Sharp. W jejofercie znalazłem, łatwo dostepny na Polskim rynku czujnik GP2Y0A21YK0F. Pozwalaon dokonać pomiaru odległości na dystansie od 10 do 80[cm] co jest wartością wystar-czającą, aby unikać zderzenia z przeszkodami. Wadą użycia tego czujnika jest jedyniepunktowy pomiar odległości. Jego wybór wyeliminowałby problem odbicia się wiązki odprszeszkód ustawionych pod dużym kątem względem padającego na nie promienia świa-tła, jednak zawęziłby pole widzenia zepołu czujników. Wymiary i masa tego czujnikanie odbiegają znacząco od tych wartosci dla wymienionego wcześniej czujnika ultradź-więkowego. Wynoszą one odpowiednio 44x13x13[mm] i 5[g]. Dodatkową wadą, którejnie posiadał czujnik ultradźwiękowy jest podatność na zakłócenia w silnym oświetleniusłonecznym. Funkcja odległości obiektu od czujnika jest wykładniczą funkcją napięciana wyjściu czujnika. Obliczenie takiej funkcji z użyciem mikrokontrolera wymagałobyużycia odpowiedniej biblioteki dostarczającej funkcje matematyczne. Spowodowałobyznaczący spadek wydajności, gdyż mikrokontrolery nie wspomagają takich obliczeń.Rozwiązanie tego problemu jest jednak dosyć proste - zostało pokazane w kolejnychrozdziałach.

19

Page 26: SX quad(ro)copter

Maxbotix MB1010 Sharp GP2Y0A21YK0FWymiary 20x22x16 [mm] 44x13x13 [mm]Masa 4.3 [g] 5 [g]Napięcie zasilania 2.5 - 5.5 [V] 4.5 - 5.5 [V]Pobór prądu 2 [mA] 30 [mA]Obszar pomiaru Przestrzeń na wprost czuj-

nikaPomiar punktowy

Zakres pomiaru 645 [cm] 80 [cm]Częstotliwość pomiaru 20 [Hz] 20 [Hz]Sygnał wyjściowy analogowy (szeregowy,

PWM)analogowy

Przeliczenie napięcia naodległość

funkcja liniowa funkcja wykładnicza

Pozostałe Błąd pomiaru płaszczyznnachylonych od dużym ką-tem

Zakłócenia spowodowaneoświetleniem słonecznym

Rysunek 12: Porównanie sensora ultradźwiękowego i podczerwonego

W projektowanym przez siebie pojeździe zdecydowałem się użyć czujnika ultradźwię-kowego MB1010 do pomiaru względnej wysokości oraz czterech czujników podczerwo-nych GP2Y0A21YK0F, ustawionych po czterech stronach pojazdu w celu wykrywaniapotencjalnych przeszkód. Dodatkowo, aby mniejszyć obszar martwej strefy, w przyszło-ści, można wyposarzyć pojazd w dodatkowe czujniki. Postawione wczesniej wymaganiena osiem wejść analogowych mikrokontrolera pozwala na swobodne podłączenie jeszczetrzech czujników.

5.2 Mikrokontroler

Podstawowe wymagania dotyczące zastosowanego mikrokontrolera zostały podane wewstępnej analizie. Dla przypomnienia były to:

1. Zapas mocy obliczeniowej wystarczający dla wykonania algorytmu sterowania

2. Tryb pracy energooszczędnej

3. 8 wyjść sygnału PWM

4. 8 kanałów przetwornika analogowo-cyfrowego

5. Interfejs do komunikacji z czujnikami okreslającymi orientację - w tym przypadkuI2C

6. Interfejs SPI do komunikacji z systemem nadrzędnym

7. Interfejs do komunikacji z aplikacją testową(SPI lub UART)

Dodatkowe ograniczenia niefunkcjonalne jakie przyjąłem i o których nie wspomina-łem wcześniej to:

1. Łatwość programowania

2. Łatwość wlutowania na plytkę PCB

20

Page 27: SX quad(ro)copter

Obecna oferta mikrokontrolerów jest bardzo szeroka. Wiele firm produkujących jeoferuje po kilka rodzin, składających się niekiedy z wielu serii, a każda z nich zawie-ra modele o różnych konfiguracjach, z różnymi peryferiami i przystosowanych do róż-nych zastosowań. Z tego względu ograniczyłem poszukiwania mikrokontrolera do rodzinyMSP430 firmy Texas Instruments, głównie ze względu na to, iż daną rodzinę znam le-piej niż inne. Ponadto jest ona popularna i istnieje dla niej szerokie wsparcie. Układynależące do niej znajdują zastosowanie w wielu różnych aplikacjach.

Korzystając z wyszukiwarki na stronie producenta, odszukałem kości spełniające po-stawione wcześniej wymagania. Z uzyskanej listy odrzuciłem układy, których wutowaniena płytkę PCB sprawiałoby trudności - układy w obudowach BGA(Ball Grid Array),których ręczne wlutowanie wymaga precyzji i dużego doświadczenia, a niepowodzeniemoże spowodować trudny do wykrycia błąd, lub uszkodzenie układu.

Wybrany przeze mnie układ to MSP430F5328, którego najważniejsze parametryprzedstawiłem poniżej.

1. Maksymalna częstotliwość pracy 25MHz

2. 10KB pamięci RAM

3. 128KB pamięci programu FLASH

4. Tryby oszczędzania energii

5. 8 wyjść PWM

6. 8-kanałowy przetwornik analogowo-cyfrowy(12-bitowy)

7. 47 sygnałów ogólnego przeznaczenia(GPIO, współdzielone z innymi peryferiami)

8. Interfejs I2C

9. Interfejs SPI/UART

10. Interfejs Spy-bi-wire

11. Obudowa LGA64(Land Grid Array, 64 końcówki)

Podana moc obliczeniowa układu jest wystarczajaca, aby wykonać algorytm sta-bilizacji. Przyjmując częstotliwość jego wykonania f = 50[Hz] i ilość wykonywanychinstrukcji asemblerowych 1 milion per 1[MHz](według noty katalogowej), przy częstotli-wości taktowania 25[MHz] otrzymujemy pół miliona instrukcji asemblerowych na jednowykonanie algorytmu stabilizacji. Przyjmując, iż jedna instrukcja języka C odpowiada3 instrukcjom asemblerowym, pojedyńcza pętla algorytmu stabilizacji mogłaby zawie-rać ponad sto tysięcy linii kodu napisanego w języku C. Jest to ilość o co najmniejkilka rzedów wielkości ponad wystarczajacą. Procesor musi również wykonywać inneczynności, takie jak obsługa przerwań, obsługa komunikacji z urządzeniami podrzęd-nymi(czujnikami), czy obsługa komunikacji z systemem nadrzędnym. Mimo wszystkojednak, jego moc obliczeniowa jest więcej niż wystarczająca dla poprawnego działaniasystemu.

Wbudowane tryby zarządzania energią pozwalają uśpić układ w momencie, gdynie wykonuje on potrzebnych obliczeń. Ilość wyjść PWM, jak i wejść przetwornikaanalogowo-cyfrowego jest zgodna postawionymi wymaganiami. Do komunikacji z czuj-nikami(akcelerometr, kompas cyfrowy, żyroskop, czujnik ciśnienia) układ posiada pe-ryferium obsługujące magistralę I2C. Ponadto specyfikaja modułu I2C, jest zgodna zespecyfikacjami interfejsów wybranych wcześniej czujników. Do komunikacji z urządze-niem nadrzędnym zostanie wykorzystana magistrala SPI, jednak dla celów testowania

21

Page 28: SX quad(ro)copter

wykorzystałem moduł komunikacji UART, który współdzieli końcówki z interfejsem SPImikrokontrolera(dzięki temu nie trzeba wyprowadzać dodatkowych styków na płytcePCB - co zmniejsza zajmowaną powierzchnię).

Obudowa LGA64, wybranego mikorkontrolera, jest stosunkowo mała i prosta doprzylutowania na płytce PCB, nawet dla osoby nie posiadajacej wiele doświadczenia wlutowaniu.

Rysunek 13: MSP430F5328 w obudowie LGA64

Ciekawostką przy wyborze tej kości okazało się wsparcie dla interfejsu Spi-Bi-Wire.Jest to interfejs wykorzystywany do programowania i debugowania układu. Jego zaletąjest wykorzystywanie jedynie dwóch końcówek mikrokontrolera, co w porównaniu z kla-sycznym interfejsem JTAG drastycznie zmniejsza ilość koniecznych do wyprowadzeniasygnałów. Jednocześnie interfejs ten zapewnia pełną funkcjonalność interfejsu JTAG.Dzieki jego wykorzystaniu z płytki PCB wystarczy wyprowadzić tylko dwa sygnały.Do programowania kości można użyć programatora MSP-FET430UIF, który wspieraobsługę w/w interfejsu.

Rysunek 14: Programator/debugger MSP-FET430UIF

6 Schemat ideowy systemu

Projekt płytki drukowanej zdecydowałem się wykonać w oprogramowaniu Eagle. Abywykonać docelowy projekt obwodu drukowanego należy najpierw wykonać schemat ide-

22

Page 29: SX quad(ro)copter

owy projektowanego obwodu. Proces ten rozpocząłem od znlaezienia elementów biblio-tecznych opisujących używane podzespoły. Bibliotekę opisującą wybrany mikrokontrolermożna zlaleźć na stronie producenta. Pliki z opisem układów czujnika ciśnienia oraz ko-ści z akcelerometrem, żyroskopem i kompasem cyfrowym nie są niestety udostępnioneprzez ich producentów. Wbudowane w oprogramowanie Eagle edytory - symboli elemen-tów ideowych oraz footprint‘ów - pozwoliły na samodzielne zaprojektowanie bibliotekdla używanych części. Zaprojektowane przeze mnie elementy umieściłem na rysunkachponiżej.

(a) Element ideowy (b) Footprint

Rysunek 15: Element biblioteczny dla MPU-9150

6.1 Zasilanie systemu

Do zapewnienia zasilania dla systemu zdecydowałem się skorzystać z wbudowanej w ste-rowniki silników przetwornicy. Układ ten zapewnia zasilanie napięciem 5V, bezpośrenio,poprzez złącze używane do transmisji sygnału streującego silnikiem. Jego wydajnośćprądowa wynosi 2A, więz z powodzeniem można nim zasilić projektowany sterownik.

Użyty mikrokontroler oraz układy czujników orientacji wymagają zasilania napię-ciem 3.3V. Ze względu na bardzo niski pobór prądu przez wymienione urządzenia(rzędukilku-kilkunastu [mA]), do obniżenia napięcia zasilania dla nich zdecydowałem się użyćregulatora LDO o niskim spadku napięcia.

Sekcja czujników odległości pobiera znacznie wiekszy prąd. Średnio, jeden podczer-wony czujnik odległości pobiera prąd o natężeniu 30mA. Używając czterech takich czuj-ników oraz czujnika ultradźwiękowego, pobierany prąd może osiągać wartości w gra-nicach 120mA. Użycie w tym przypadku prostego regulatora napięcia wiązałoby się zdużymi stratami energii. Jednak obniżanie napięcia do zasilenia tych czujników nie jestkonieczne. Chcąc mieć możliwość używania zarówno czujników ultradżwiękowych, jaki podczerwonych musiałem zaprojektować układ zasilania w taki sposób aby możliwebyło podłączenie obu rodzajów sensorów. O ile czujniki ultradźwiękowe można by za-silić napięciem 3.3V, to już podczerwone wymagają napięnia zasilania minimum 4.5V.Wspólnym poziomem napięcia - jakim można zasilić oba rodzaje czujników - jest napię-cie 5V. Eliminuje to konieczność obniżania napięcia, a wymaga jedynie prostej filtracji.

23

Page 30: SX quad(ro)copter

Rysunek 16: Zasilanie mikroprocesora +3.3V

Do obniżenia napięcia dla części cyfrowej urządzenia wykorzystałem regulator LDOLM1117, pozwalający na uzyskanie napięcia 3.3V. Oczywiście dla zapewnienia odpo-wiedniej filtracji zasilania wraz z wybranym układem zastosowałem kondensatory filtru-jące. Dodatkowo przy prowadzeniu zasilania dla czujników odległości oraz dla analogo-wej części mikrokontrolera użyłem dławików filtrujących zakłócenia powodowane przezcyfrową część systemu.

6.2 Pomiar sygnału z sensorów odległości

Przetwornik analogowy mikrokontrolera zasilany jest napięciem 3.3V. Z kolei napięciezasilania czujników wynosi 5V. Aby zapewnić możliwość pomiaru analogowych wyjśćczujników, należało obniżyć ich napięcie do poziomu akceptowalnego przez przewornikanalogowo cyfrowy. Z tego powodu pomiedzy wyjściami czujników, a wejściami prze-twornika analogowo-cyfrowego umieściłem dzielniki napięciowe dla każdego z kanałówprzetwornika.

Rysunek 17: Proporcjonalne obniżenie napięcia sygnału analogowego

24

Page 31: SX quad(ro)copter

6.3 Sterowanie napędem

Sterowniki użyte w pojeździe wymagają sygnału PWM o zmiennym wypełnieniu, ge-nerowanego przez mikrokontroler. Ze względu na brak szczegółowej dokumentacji doukładów sterowników silników, nie byłem w stanie określić jaki jest minimalny próg na-pięcia, który interpretują one jako poziom wysoki. Przyjąłem pesymistyczne założenie, iżsygnał sterujący silnikiem powinien osiągać wartość 0V, oraz bliską napięciu 5V - gdyżtakie są poziomy napięć panujące na wyjściu sterownika silnika. Do konwersji napięćwykorzystałem translator poziomów logicznych TXB0108 firmy Texas Instruments.

Rysunek 18: Translacja poziomów logicznych dla sterowania napędem

6.4 Czujniki orientacji, sygnalizacja stanu pracy, interfejs syste-mowy

Czujnik ciśnienia i czujnik orientacji pojazdu, zgodnie z ich notami katalogowymi, zosta-ły połączone z odpowiednimi elementami pasywnymi, a odpowiednie końcówki zostałypołączone do zasilania lub magistrali komunikacyjnej I2C.

W schemacie ideowym została ponadto uwzględniona dioda LED służąca celom de-bugowym oraz w przyszłości do sygnalizacji stanu pracy.

Aby umożliwić komunikację z systemem nadrzędnym, na zewnęrzne złącze wypro-wadziłem interfejs SPI(oraz UART, który obsługiwany jest za pomogą tych samychkońcówek). Skorzystałem tutaj z męskiego złącza kołkowego, które w przyszłości umoż-liwi podłaczenie płytki PCB, jako nakładkę, na wierzch systemu nadrzędnego. Ponadto,na to samo złącze wyprowadziłem zasilanie(+5V, oraz +3.3V) oraz interfejs Spi-Bi-Wiredo programowania mikrokontrolera.

25

Page 32: SX quad(ro)copter

Rysunek 19: Połączenie czujników orientacji oraz diody LED

Rysunek 20: Złącze dla systemu nadrzędnego

26

Page 33: SX quad(ro)copter

6.5 Shemat ideowy sterownika

Rysunek 21: Schemat ideowy

7 Projekt płytki PCB

Płytkę PCB projektowałem przyjąłwszy kilka założeń:

1. Płytka dwuwarstwowa

2. Spodnia warstwa wylana masą, a sygnały rozprowadzone po górnej warstwie

3. Podział na masę cyfrową i masę analogową

4. Rozmiary płytki zmniejszone do niezbędnego minimum

5. Rozmiar używanych elementów 0603 (0.060 x 0.030 [cala])

6. Radiator dla regulatora napięcia

7. Otwór dla zapewnienia możliwości przymocowania płytki

Rozmiar płytki drukowanej jaki udało się osiągnąć to 36 x 34 [mm]. Poniżej kolejnoschemat górnej warstwy(sygnały + zasilanie), dolnej warstwy(masa cyfrowa i analogo-wa) oraz ostateczny schemat całej zaprojektowanej płytki. Dla czytelności na rysunkachwidoczne są jedynie ścieżki, jednak dolna warstwa została w rzeczywistości wylana płasz-czyzną masy.

27

Page 34: SX quad(ro)copter

Rysunek 22: Warstwa TOP płytki PCB

Rysunek 23: Warstwa BOTTOM płytki PCB

28

Page 35: SX quad(ro)copter

Rysunek 24: Płytka PCB w całości

8 Moduł komunikacyjny

Aby uruchomić i przetestować układ, musiałem wyposarzyć go w mozliwość komunikacjize zdalnym użytkownikiem. Jednym z rozwiązań było użycie wyprowadzonego interfejsuUART. Bezpośrednie połączenie systemu z komputerem za pomocą portu szeregowe-go wiązałoby się z utrudnieniami związanymi z użyciem kabla. Rozwiązaniem okazałosię być zrobienie prototypowego modułu, który komunikując się poprzez UART z mi-krokontrolerem transmitowałby dane do i od użytkownika poprzez moduł bluetooth.Ograniczenie zasiegu dla modułu bluetooth do kilku metrów na etapie uruchamiania itestów nie stanowiło przeszkody. Wykorzystany zostałmoduł bluetooth HC-05.

Rysunek 25: Moduł bluetooth HC-05

29

Page 36: SX quad(ro)copter

Po zaprojektowaniu obwodu drukowanego dla modułu bluetooth, zdecydowałem, iżzamówienie płytki w profesjonalnej firmie będzie nieekonomiczne zarówno pod wzglę-dem finansowym jak i czasowym. Z tego powodu zdecydowałem się wykonać płytkędrukowaną samodzielnie - metodą termotransferową. Prostota obwodu i wykorzystanieelementów przewlekanych spowodowało zakończenie pracy nad modułem komunikacyj-nym sukcesem. Moduł posiada dwie diody, jedną sygnalizującą stan pracy, a drugąsygnalizującą sparowanie ze zdalnym kontrolerem.

Rysunek 26: Projekt obwodu drukowanego przeniesiony na laminat

Rysunek 27: Wytrawiony obwód

9 Oprogramowanie

Aby uruchomić i przetestować skonstruowany sterownik należało napisać szkielet opro-gramowania, zdolny do uruchomienia podstawowych funkcjonalności. Miał on za zadanie

30

Page 37: SX quad(ro)copter

obsłużyć sprzętowe moduły oraz zaprezentować ich działanie. W projekcie oprogramo-wania uwzględniłem miejsce, w którym w przyszłości zostanie umieszczony kod odpo-wiedzialny za wykonanie algorytmu stabilizacji.

Aby móc wygodnie korzystać z modułów peryferyjnych mikrokontrolera na poziomiejęzyka C, zdecydowałem się zaprojektować warstwę pośredniczącą HAL(ang. HardwareAbstraction Layer).

9.1 Obsługa szyny I2C

Interfejs do obsługi szyny I2C składa sie z następujących funkcji:

• void msp430 i2c enable(void)

• void msp430 i2c disable(void)

• int msp430 i2c write(unsigned char slave addr, unsigned short reg addr, unsignedshort data size, unsigned char const *data)

• int msp430 i2c read(unsigned char slave addr, unsigned short reg addr, unsignedshort data size, unsigned char *data)

Funkcja msp430 i2c enable() inicjalizuje moduł komunikacyjny, tak aby pracował wtrybie I2C. Ustawiona przez niego prędkość transmisji danych wynosi 400kbit/s i jestjednocześnie maksymalną, jaką moduł oraz podłączone urządzenia są w stanie obsłużyć.

Funkcja msp430 i2c write() transmituje dane do urządzenia slave. Jej parametramisą adres urządzenia odbiorczego, adres pierwszego rejestru do którego nastapi zapis, orazbufor z danymi. Dodatkowym parametrem jest ilość danych jaka ma być przetransmi-towana z bufora.Każdy zapis I2C wykonywany jest w następującym trybie. Pierwszy wysyłany w poje-dyńczej sekwencji bajt jest adresem rejestru w urzadzeniu, do którego zapisujemy dane.Następny bajt zostanie zapisany pod adresem wysłanym w pierwszym bajcie. Każdykolejny bajt zostanie zapisany do rejestru wskazanego przez zinkrementowany adres po-przedniego zapisu. Implikuje to minimalny rozmiar danych jaki należy przetransmitowaćdo urządzenia w trybie zapisu. Wynosi on dwa bajty. Pierwszy - to bajt adresu rejestrudo którego chcemy zapisać daną, drugi - to właśnie dana jaką chcemy do niego wpi-sać. Każda kolejna dana w sekwencji będzie zapisana pod zinkrementowanym adresempoprzedniego zapisu.

Funkcja msp430 i2c read() czyta dane z urządzenia. Jej parametrami są kolejno ad-res urządzenia slave, adres rejestru wewnątrz tego urządzenia, z którego nastąpi odczytpierwszego bajtu, oraz bufor do którego mają trafić dane wraz z ich rozmiarem. Odczytz punktu widzenia programu wołającego funkcję jest atomowy - gwarantuje to inte-gralność przeczytanych danych. Gdyby do przeczytania danych użyć dwóch lub więcejwywołań funkcji, dane mogłyby być niespójne. Konstrukcja użytych podzespołów gwa-rantuje, iż każdy sekwencyjny odczyt danych z rejestrów zamraża ich zawartość, na czastego właśnie odczytu - blokuje to potencjalną możliwość zmiany ich zawartości w trak-cie czytania. Jest to bardzo istotne, gdyż większość odczytywanych wartości ma format16-bitowych liczb kodowanych w U2, a odczyt(i zapis) nastepują oktetami. Odczytaniewięc każdej wartości wymaga przeczytania dwóch bajtów. Niedopuszczalna byłaby sy-tuacja, w której te dwa bajty byłyby elementami dwóch różnych 16-bitowych wartości.W przypadku wykonania dwóch odrębnych odczytów - najpierw jednego bajtu danej, apóźniej drugiego bajtu tej samej danej, mogłaby zdarzyć się sytuacja, w której pomię-dzy odczytami kolejnych bajtów zawartość rejestru uległa zmianie. Odczyt blokowy(ang.burst) zapobiega takiej sytuacji i gwarantuje iż wszystkie przeczytane dane będą spójne.

31

Page 38: SX quad(ro)copter

Minimalna ilość danych jakie można odczytać z zaadresowanego urządzenia wynosi je-den bajt. W takiej sytuacji transmitowana zostanie wartość zapisana w rejestrze podadresem, który w danej chwili jest wskazywany przez wewnętrzny wskaźnik rejestru da-nego urządzenia. Aby zminimalizować ilość transmitowanych danych, napisana nakładkaobsługująca moduł I2C, zapamiętuje adres ostatnio zaadresowanego urządzenia wraz zaktualną pozycją wskaźnika rejestru wewnątrz tego urządzenia. Niweluje to koniecznośćkażdorazowego adresowania rejestrów w urządzeniu. Dla przykładu, jeśli adresowane sąrejestry 0x03, 0x04 w trybie zapisu - wysyłana jest sekwencja [0x03, 0xXX, 0xXX] - na-stępuje zapis dwóch danych pod adresem 0x03, oraz pod adresem zinkrementowanym,czyli 0x04. Gdyby miał nastpąpić odczyt danej spod adresu 0x05 wysłane zostałyby dwiesekwencje: zapis [0x05], odczyt [0xXX]. Pierwsza z nich ustawiłaby wskaźnik rejestru narejestr o adresie 0x05, a kolejna odczytałaby daną z tego rejestru. Po chwili analizy wi-dać, iż sekwencja ustawienia wskaźnika na adres 0x05 jest nadmiarowa, ponieważ po po-przednich operacjach wskaźnik ma właśnie taką wartość. Nawet jeśli raz na kilkadziesiątodczytów wystąpi sytuacja, że będzie możliwe zaoszczędzenie jednego transmitowanegobajtu, to i tak będzie to duży zysk. Ustawienie wskaźnika odczytu (transmisja bitu star-tu, 8 bitów adresu, 8 bitów danych, w sumie dwóch bitów potwierdzenia i bitu stopu -czyli w sumie 20 bitów) przy maksymalnej szybkości transmisji będzie trwać 50[us], jestto czas, w którym procesor mógłby wykonać ponad tysiąc instrukcji assemblerowych.Wydaje się więc, iż porównanie ostatnio adresowanego rejestru, z rejestrem, który mazostać zaadresowany za chwilę, nie jest zbyt kosztowne, gdyż wymaga wykonania jedyniekilku pojedyńczych sztuk instrukcji.

Zarówno funkcja msp430 i2c write(), jak i msp430 i2c read() informują użytkowni-ka o braku odpowiedzi ze strony urządzenia podrzędnego. Obie funkcje są blokujące,jednak nie oczekują one na zakończenie transmisji w trybia aktywnego oczekiwania. Pozainicjalizowaniu komnikacji przechodzą w tryb uśpienia, a komunikacja odbywa się zwykorzystaniem przerwań.

9.2 Komunikacja - obsługa modułu UART

W celu zapewnienia możliwości komunikacji z systemem zewnętrznym układ musi udo-stępniać pewien interfejs. Do przeprowadzenia testów zdecydowałem się wykorzystaćinterfejs UART, który wspóldzieli wyjścia z interfejsem SPI, wyprowadzonym już na ze-wnętrzne złącze układu. Dzięki temu na potrzeby testowania nie powstała koniecznośćużycia dodatkowych końcówek.

Zaimplementowane API do obsługi tego modułu wygląda nastpępująco:

• void msp430 uart enable(void)

• unsigned char msp430 uart write(unsigned char data size, unsigned const char*buffer)

• unsigned char msp430 uart data count(unsigned char *data byte)

• unsigned char msp430 uart read(unsigned char data size, unsigned char *buffer)

• void msp430 uart disable(void)

Funkcje msp430 uart enable() oraz msp430 uart disable() zapewniają możliwość ini-cjalizacji modułu oraz jego wyłączenie.

Do obsługi komunikacji interfejs ten wykorystuje bufory cykliczne, niedostępne bez-pośrednio dla programisty. Ze względu na asynchroniczny charakter wymiany danych,funkcje pisząca oraz czytająca są nieblokujące. Funkcja pisząca msp430 uart write()przyjmuje jako parametry bufor z danymi, oraz liczbę bajtów które mają zostać wysła-ne. Wartość zwracana przez funkcję to ilość bajtów, które udało się przepisać do bufora

32

Page 39: SX quad(ro)copter

wyjściowego. Ograniczona ilość pamięci w urządzeniu wymusiła ustawienie sztywnegoograniczenia na rozmiar buforów nadawczego i odbiorczego, które wynoszą 255 bajtów(ze względu na spójność implementacji buforów jedno pole w buforze zawsze musi po-zostać wolne - rzeczywisty rozmiar tablic wynosi 256). Jednocześnie, typ parametruokreślający ilość danych, które mają zostać przepisane do lub z bufora ogranicza tęwartość do wielkości bufora(typ unsigned char - którego zakres wynosi 0-255).

Funkcja msp430 uart read() czyta dane z bufora odbiorczego. Funkcja czyta ilośćdanych podaną w jednym z parametrów - oczywiście rozmiar tablicy podanej w pa-rametrze musi być odpowiednio duży, aby zmieścić dane. Jeżeli bufor odbiorczy niezawiera wystarczającej ilości danych, przepisane zostaną tylko dane dostepne w danejchwili. Aby okreslić ilość danych możliwych do odczytu z bufora, wykorzystywana jestfunkcja msp430 uart data count(). Zwraca ona ilość danych obecnie znajdujących się wbuforze. Dodatkowo funkcja może pobrać wartość pierwszego bajtu znajdującego się wkolejce bez usuwania go z kolejki. Jest to funkcjonalność pomocna przy parsowaniu ra-mek przesyłanych do i z aplikacji testowej i jest wykorzystywana w programie testowym.

Oczywiście zapewniona jest synchronizacja przesyłania danych tzn. jeśli poprzedniewysyłanie nie zakończyło się jeszcze, a użyjemy funkcji piszącej, najpierw zostanie za-kończone wysyłanie poprzedniej porcji danych, a dopiero później automatycznie wysłanazostanie reszta.

9.3 Pomiar odległości od przeszkód

Przetwarzanie danych z zainstalowanych czujników odległości jest zagadnieniem któremumusiałem poświęcić chwilę uwagi.

Funkcje API do obsługi sensorów odległości:

• void msp430 analog enable(void)

• void msp430 analog read(unsigned short distance[6])

• void msp430 analog disable(void)

Wywołana na początku programu funkcja msp430 analog enable() powoduje zaini-cjalizowanie przetwornika analogowo-cyfrowego oraz ustawienie timera, który z częstotli-wością 1024Hz próbkuje sygnały z czujników odległości. Konstrukcja płytki drukowanejpowoduje, iż wejścia przetwornika, do których nie został dołączony żaden sensor sąutrzymywane na poziomie 0V. Zapobiega to pływaniu wejść mikrokontrolera pomiędzypoziomem masy a zasilania. Wywołane z okresem około 1[ms] przerwanie przetwornikaA/C powoduje uaktualnienie wartości zapisanej w pamięci. Obecnie wartości próbek zprzetwornika dla każdego kanału są uśredniane po 16 sztuk. Rozdzielczość przetwornikawynosi 12 bitów. Zmienne w których trzymane są sumy mają szerokość 16 bitów, więcprzy dodawaniu 16 próbek nie nastąpi przepełnienie(16b -12b = 4b, 24 = 16). Jednocze-śnie, późniejsze dzielenie sumy przez wartość 16, sprowazda się jedynie do przesunięciacałej wartości o 4 bity w prawo. Minimalizuje to ilość instrukcji wykonywanych przezrdzeń mikrokontrolera. W przyszłości planuję zastapić powyższy algorytm bardziej efek-tywnym filtrem. Zastosowany algorytm powoduje uaktualnianie wyników pomiarów zczęstotliwością 64[Hz].

W zależności od tego jaki rodzaj czujnika został podłączony do odpowiedniego wej-ścia przetwornika analogowo-cyfrowego, należy go odpowiednio obsłużyć. Czujniki pod-czerwone mają zdefiniowaną z góry zależność pomiędzy napięciem, a wykrywanym dy-stansem. Czujniki ultradźwiękowe dodatkowo uzależniają poziom wyjścia od wysokościnapięcia zasilania. Oba rodzaje czujników zawsze są zasilane napięciem +5V, więc uza-leżnienie poziomu wyjścia czujników ultradźwiękowych od napięcia zasilania nie stanowiproblemu.

33

Page 40: SX quad(ro)copter

Funkcja msp430 analog read() odpowiada za odczyt wartości próbek z przetwornika,przeliczenie ich na odległość w [cm] i zwrócenie użytkownikowi. Przeliczenie wartości zprzetwornika na odległość musi uwzględniać kilka czynników. Napięcie wyjściowe każ-dego czujnika jest dzielone na pół. Pozwala to zapobiec podaniu na wejście mikrokon-trolera napięcia wyższego niż napięcie zasilania(+3.3V). Nasępnie uwzględnione musibyć przeliczenie uzyskanej wartości z uwzględnieniem napięcia referencyjnego użytegow przetworniku A/C. Uzyskaną w ten sposób wartość napięcia na wyjściu analogowymsensorów należy przeliczyć na odległość. Dla czujnika ultradźwiękowego funkcja ta jestfunkcją liniową. Każde Vcc/512 odpowiada jednemu calowi odległości wykrytej przezsensor. Odległość tę należy jeszcze zamienić na [cm]. Wykorzystany do tego celu zostałsprzętowy układ mnożenia, posiadany przez wybrany mikrokontroler. Wyliczenie odle-głości dla czujnika podczerwonego nie jest możliwe ze względu na charakter zaleznościnapięcia od wykrywanego dystansu. Jest to funkcja wykładnicza i jej obliczenie wiąza-łoby się z dużym spadkiem wydajności procesora. W celu rozwiązania tego problemuwykorzystałem przygotowaną wcześniej tablicę, dzięki której w prosty sposób, mającnapięcie, można odczytać odległość.

Aby wyłączyć przetwornik A/C należy użyć funkcji msp430 analog disable().

9.4 Sterowanie napędem

Sterowniki silników sterowane sa sygnałem PPM, co oznacza, iz można je rónież wyste-rować sygnałem PWM. Do generacji sygnałów użyłem timera z wyjściami PWM.

API dostępne do sterowania napędem:

• void msp430 pwm enable(void)

• void msp430 pwm write(unsigned char throttle setting[4])

• void msp430 pwm disable(void)

Sygnał zaczyna być generowany po inicjalizacji timera funkcją msp430 pwm enable().W celu jego zatrzymania można użyć funkcji msp430 pwm disable().

Aby ustawić konkretną wartość wysterowania należy użyć funkcji msp430 pwm write().Ustawia ona wartość wysterowania dla każdego z czterech używanych silników.

Oprogramowanie zostało napisane w taki sposób, aby aktualizować wartości nastawzawsze na początku cyklu fali PWM. Powoduje to, iż żaden cykl nie zostanie zgubiony.Dodatkowo, aby ustawienie wysterowania nie wprowadzało dodatkowego narzutu, niejest stosowane żadne skalowanie wartości nastaw. Cykl timera został ustawiony w takisposób, aby podając wartość 0 (po zsumowaniu z odpowiednią wartością offsetu) war-tość wysterowania wynosiła 0%, a po podaniu wartości 255(i zsumowaniu z offsetem)była mozliwie bliska 100%. Funkcja nie skaluje wartości nastaw, przez co nie wykonu-je mnożenia, ani dzielenia - zmiana parametrów pracy silników jest wykonywana przyudziale dosłownie kilku instrukcji assemblerowych. Zakres wartości wysterowania 0-255powinien także uprościć przyszłe algorytmy sterowania.

Bardzo ważną rzeczą jaką zastosowałem w tym module jest ograniczenie maksymal-nej mocy silników. Ze względów bezpieczeństwa moc ta została ograniczona do około80%. Jest to poziom wystarczający do oderwania się pojezdu od ziemi, jednoczesnie niepozwalający wyrwać mu się spod kontroli. Brak przetestowanego algorytmu sterujące-go silnikami mógłby spowodować niekontrolowane zachowanie się pojazdu. Ograniczeniejego mocy zwiększa zapas czasu na reakcję ze strony człowieka, w przypadku zaistnie-nia takiej sytuacji. Zabezpieczenie to umiejscowiłem na najniższym możliwym poziomie.Każda nastawa bespośrednio przed wpisaniem do rejestru sterującego pracą silnika jestporównywana z wartością maksymalną i w razie potrzeby zmniejszana.

34

Page 41: SX quad(ro)copter

9.5 Zarządzanie energią

Poza najważniejszymi elementami jakie zostały wymienione powyżej, napisane zostałyfunkcje obsługujące inne peryferia mikrokontrolera.

Główna pętra programu wykonuje się z okresem 10[ms]. W celu zabezpieczenia pro-gramu przed zablokowaniem się uzyty został układ Watchdog, który przy każdym obiegupętli resetuje licznik watchdog‘a. Niewykonanie się pętli programu przez 32[ms] powo-duje reset mikrokontrolera.

Najważniejszą częścią całego mikrokontrolera jest system zegarów. Dostępne są trzysygnały zegarowe.

• MCLK - Main Clock

• SMCLK - Subsystem Master Clock

• ACLK - Auxillary Clock

MCLK używany jest do taktowania rdzenia procesora. Jego częstotliwość zostałaustawiona na 25MHz. Źródłem sygnału jest zewnętrzny oscylator kwarcowy. Aby jed-nak móc taktować mikorkontroler z taką częstotliwością należy podnieść napięcie na jegordzeniu. Odbywa się to w jednej z funkcji wywoływanych przy inicjalizacji procesora -msp430 clock init(). SMCLK również jest zasilony tym samym oscylatorem. Używanyjest on do taktowania peryferiów odpowiedzialnych za komunikację na szynie I2C, UARToraz timera odpowiedzialnego za generację sygnałów sterujących silnikami. Źródłem sy-gnału ACLK jest wewnętrzny oscyator o niskiej precyzji, o czestotliwości 32kHz. ACLKzostał wykorzystany do taktowania przetwornika A/C, który może działać z niską czę-stotliwością i nie wymaga utrzymywania dokładnego okresu.

Wykorzystywany w wielu miejscach programu tryb niskiego poboru energii to LPM0.W trybie tym wyłączany jest zegar głównego rdzenia. Dzięki czemu spada zużycie ener-gii oraz wydzielanie ciepła w mikrokontrolerze. Wyłączenie pozostałych zegarów jestniemożliwe ze względu na to, iż zasilają one peryferia, które muszą być akywne przezcały czas działania systemu.

9.6 Protokół i prezentacja działania

W celu zaprezentowania działnia projektu zdecydowałem się napisać przykładową apli-kację testową. Ze względu na ograniczony czas i małe wymagania zdecydowałem się dotego celu użyć środowiska Java i technologii JavaFX - jest to najnowszy framework firmyOracle służący do projektowania aplikacji okienkowych.

Napisana aplikacja pozwala na ręczne sterowanie silnikami pojazdu, wizualizację da-nych z akcelerometru, podgląd danych z czujników odległości oraz sterowanie wbudo-waną diodą LED.

Do wymiany informacji pomiędzy komputerem PC, a pojazdem wykorzystałem za-projektowany wcześniej protokół. Ramki sterujące składają się z kilku bajtów informacji.Zależnie od typu ramki przesyłanie jej oznacza wysłanie pewnych informacji lub żądanieodesłania określonych informacji. Każda ramka składa się z:

• Rozmiaru ramki - Pierwszy bajt ramki określa z ilu bajtów składa się przesyłanaramka

• Typu ramki - Drugi bajt określa typ przesyłanej ramki(wykorzystane typy i ichznaczenie zostały opisane poniżej)

• Danych - Znaczenie przesyłanych danych zależne jest od typu ranki i kierunku jejprzesyłania

35

Page 42: SX quad(ro)copter

Rysunek 28: Aplikacja testowa

Przyjąłem jako masymalny rozmiar każdej ramki 32 bajty. Na chwilę obecną wydajesię to być w pełni wystarczające ograniczenie, jednak gdyby w przyszłości okazało sięinaczej, kolejne wejsje protokołu będą zezwalać na większe ramki.

9.6.1 Ramka sterowania diodą LED

Typ ramki : 0x00

Ramka jest wysyłana tylko w kierunku do pojazdu. Jej zawartość stanowi jeden bajt.Wartość przesyłanej danej wyznacza okres, z jakim migocze dioda LED na płytce ste-rownika. Wartość 0 oznacza wygaszenie diody, wartość większa niż 100 oznacza stałeświecenie, a wartość z tego zakresu pomnożona przez 20[ms] wyznacza okres z jakimdioda migocze.

9.6.2 Ramka sterowania silnikami

Typ ramki: 0x01

Ramka ta wysyłana jest tylko do pojazdu. Wyznacza ona wartość mocy podawanejna silniki. Zawiera cztery bajty z nastawami, po jednym na każdy silnik. Dodatkowo zewzględów bezpieczeństwa dodany jest piąty bajt zawierający sumę kontrolną. Programsterujący mikorkontrolerem został napisany tak, że ramki sterowania silnikami musząprzychodzić cyklicznie, aby silniki działały. W praktyce oznacza to, iż jeśli przez 100[ms]od otrzymania ostatniej ramki tego typu, nie przyjdzie kolejna, nastawy wszystkich sil-

36

Page 43: SX quad(ro)copter

ników zostaną wyzerowane, w konsekwencji czego silniki się zatrzymają. Celem takiegozabiegu jest poprawa bezpieczeństwa.

9.6.3 Ramka odległości

Typ ramki: 0x02

Ramka jest przesyłana w dwóch kierunkach. Przesłanie tej ramki do pojazdu oznaczażądanie przesłania danych pomiarowych ze wszystkich czujników odległości. Przesyłanaw tę stronę ramka nie zawiera danych. Odbierając ramkę żądania, program sterowni-ka odpowiada ramką o tym samym typie. Ramka odpowiedzi zawiera dane zebrane zczujników odległości. Jest to osiem 16-bitowych liczb, zawierających wyniki pomiaruodległości w centymetrach.

9.6.4 Ramka orientacji

Typ ramki: 0x03

Ramka wysyłana do pojazdu również ma charakter żądania przesłania danych. Ana-logicznie jak w przypadku ramki odległości, na ramkę żądania przesłania parametrówdotyczących orientacji, pojazd odpowiada ramką o tym samym typie co żądanie. Odpo-wiedź pojazdu zawiera 6 bajtów - trzy liczby w kodzie U2 - oznaczające zmierzone przezakcelerometr wartości przyspieszeń w trzech osiach.

10 Osiągnięte efekty

Cel jaki na początku stawiała praca został osiągnięty. Skonstruowany został pojazdzdolny do uniesienia się w powietrze. Złożona konstrukcja pozwala na realizację dal-szych planów. Zaprojektowany i skonstruowany został również układ elektronicznegosterowania i stabilizacji pojazdu. Jest on, zgodnie z założeniami, zdolny do pomiaruwartości z czujników odległości, odczytu danych z czujnika orientacji, sterowania napę-dem oraz komunikacji z systemem zewnętrznym. Rzecz jaka nie została osiagnięta touruchomienie czujnika ciśnienia, ze względu na brak czasu. Wybrany czujnik ciśnieniauległ uszkodzeniu w trakcie montażu. Kolejna sztuka została przeze mnie zamówiona,jednak nie dotarła na czas ze względu na problemy logistyczne.

Wykonene przeze mnie testy wskazują, iż po uruchomieniu aplikacji testowej i na-wiązaniu intensywnej komunikacji pomiędzy pojazdem, a komputerem PC, moc obli-czeniowa procesora nie została wykorzystana w przynajmniej 90%. Pozwala to sądzić,iż uruchomienie nawet wielu skomplikowanych algorytmów regulacji będzie możliwe nawybranym mikorkontrolerze z dużym zapasem mocy obliczeniowej.

10.1 Plan rozwoju projektu

• Uruchomienie DMP - procesora przetwarzającego dane z czuników orientacji

• Fuzja sensorów - zintegrowanie odczytów z wielu sensorów w celu uzyskania pełnejorientacji w przestrzeni

• Montaż czujnika ciśnienia

• Implementacja filtrów do pomiarów z czujników odległości i czujnika ciśnienia

• Implementacja regulatorów PID oraz dobór odpowiednich parametrów do pełnejstabilizacji pojazdu

37

Page 44: SX quad(ro)copter

Po wykonaniu powyższych zadań będzie można stwierdzić, czy użyty mikrokontrolernie został wybrany na wyrost. Jeżeli po zaimplementowaniu wszystkich niezbędnychfunkcjonalności okaże się, iż wybrany mikrokontroler jest dużo bardziej wydajny niż tokonieczne, rozważona zostanie jego wymiana na bardziej energooszczędny odpowiedniko słabszych parametrach.

Po otrzymaniu sprawnego systemu stabilizacji i nawigacji, kolejnymi zadaniami bę-dzie zaprojektowanie systemu nadrzędnego, na który otrzymany obecnie system sta-bilizacji będzie nakładką, lub zostanie potraktowany jako prototyp i zintegrowany zwiększym systemem na wspólnej płytce PCB. Potencjalne funkcjonalności systemu nad-rzędnego:

• Analiza obrazu z kamery

• Autonomiczna nawigacja w przestrzeni

• Tworzenie mapy otoczenia

• Transmisja strumienia wideo do użytkownika

• Komunikacja poprzez Wi-Fi

• Zdalne sterowanie pojazdem poprzez XBox Kinect lub Google Glass

Rysunek 29: Urządzenie Google Glass

Możliwości rozwoju jest wiele, zaprojektowany sterownik ma dużo potencjalnychzastosowań. Już dziś pojazdy typu multicopter są używane w codziennym życiu. Dlaprzykładu można podać sklep Amazon, który pracuje nad wykorzystaniem ich do do-starczania paczek. Na chwilę obecną uważam, iż postęp prac nad projektem możnanazwać sukcesem i w najbliższym czasie zamierzam go rozwijać.

38

Page 45: SX quad(ro)copter

11 Załączniki do pracy

1. Aplikacja testowa na komputer PC

(a) Plik .jar

(b) Projekt Eclipse z kodem żródłowym

2. Projekt programu Code Composer Studio - Program mikorkontrolera

(a) main.c

(b) util/msp430 clock.h

(c) util/msp430 clock.c

(d) util/msp430 watchdog.h

(e) util/msp430 watchdog.c

(f) util/msp430 analog.h

(g) util/msp430 analog.c

(h) util/msp430 pwm.h

(i) util/msp430 pwm.c

(j) util/msp430 i2c.h

(k) util/msp430 i2c.c

(l) util/msp430 uart.h

(m) util/msp430 uart.c

39

Page 46: SX quad(ro)copter

Spis rysunków

1 Ogólna architektura projektu . . . . . . . . . . . . . . . . . . . . . . . . 62 Część zrealizowana w ramach niniejszej pracy . . . . . . . . . . . . . . . 63 Rama DJI F330 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Silnik DJI 2212 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Silnik Turnigy D2830-11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Fala PWM Sterująca pracą silników . . . . . . . . . . . . . . . . . . . . 107 Schemat klasycznego żyroskopu . . . . . . . . . . . . . . . . . . . . . . . 138 Inklinacja i deklinacja magnetyczna . . . . . . . . . . . . . . . . . . . . . 169 Ultradźwiękowy sensor odległości MB1010 . . . . . . . . . . . . . . . . . 1810 Błąd pomiaru przy zbyt dużym kacie nachylenia do płaszczyzny pomiaru

(α ­ 40◦ lub β ­ 40◦) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1811 Podczerwony sensor odległości GP2Y0A21YK0F . . . . . . . . . . . . . 1912 Porównanie sensora ultradźwiękowego i podczerwonego . . . . . . . . . . 2013 MSP430F5328 w obudowie LGA64 . . . . . . . . . . . . . . . . . . . . . 2214 Programator/debugger MSP-FET430UIF . . . . . . . . . . . . . . . . . 2215 Element biblioteczny dla MPU-9150 . . . . . . . . . . . . . . . . . . . . 2316 Zasilanie mikroprocesora +3.3V . . . . . . . . . . . . . . . . . . . . . . . 2417 Proporcjonalne obniżenie napięcia sygnału analogowego . . . . . . . . . 2418 Translacja poziomów logicznych dla sterowania napędem . . . . . . . . . 2519 Połączenie czujników orientacji oraz diody LED . . . . . . . . . . . . . . 2620 Złącze dla systemu nadrzędnego . . . . . . . . . . . . . . . . . . . . . . . 2621 Schemat ideowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2722 Warstwa TOP płytki PCB . . . . . . . . . . . . . . . . . . . . . . . . . . 2823 Warstwa BOTTOM płytki PCB . . . . . . . . . . . . . . . . . . . . . . 2824 Płytka PCB w całości . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2925 Moduł bluetooth HC-05 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2926 Projekt obwodu drukowanego przeniesiony na laminat . . . . . . . . . . 3027 Wytrawiony obwód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3028 Aplikacja testowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3629 Urządzenie Google Glass . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

40

Page 47: SX quad(ro)copter

Literatura

[1] Paul Horowitz, Winfield Hill. Sztuka Elektroniki. Wydawnictwa Komunikacji iŁączności sp.z o.o. Warszawa 1995.

[2] Krzysztof Sacha. Inżynieria Oprogramowania. Wydawnictwo Naukowe PWN. War-szawa 2010.

[3] Michael J. Caruso - Honeywell Inc. Applications of Magnetoresistive Sensors inNavigation Systems.

[4] Michael J. Caruso - Honeywell SSEC. Applications of Magnetic Sensors for LowCost Compass Systems.

[5] Texas Instruments. Mixed Signal Microcontroller - MSP430F532x. SLAS678C -2011.

[6] Texas Instruments. MSP430x5xx and MSP430x6xx Family User‘s Guide.SLAU208M - 2013.

[7] Invensense. MPU-9150 Product Specification Revision 4.0. 2012.

[8] Invensense. MPU-9150 Register Map and Descriptions Revision 4.0. 2012.

[9] STMicroelectronics. MEMS pressure sensor - LPS331AP. 2012.

[10] Maxbotix. LV-MaxSonar-EZ1 High Performance Sonar Range Finder - MB1010.2012.

[11] Sharp. General Purpose Type Distance Measuring Sensors -GP2Y0A21YK/GP2Y0D21YK.

[12] Texas Instruments. 8-bit Bidirectional Voltage-Level Translator - TXB0108. 2012.

[13] HC-03/05 Embedded Bluetooth Serial Communication Module.

[14] Texas Instruments. LM1117/LM1117I 800mA Low-Dropout Linear Regulator.2012.

41