Académique Documents
Professionnel Documents
Culture Documents
Tytuł
1. Opis technologii i urządzeń współpracujących.
1.1. Cele i zakres projektu.
1.2. Komunikacja między urządzeniami.
1.3. Sterowanie quadrokopterem.
1.4. Obsługa silników.
1.5. Wizualizacja oraz kontrola za pośrednictwem Matlab'a.
1.6. Standardy komunikacji.
2. Opis przyjętych rozwiązań projektowych.
2.1. Komunikacja przy pomocy Matlaba za pośrednictwem USART i portu RS232.
2.2. Wizualizacja stanu rzeczywistego quadrokoptera przy pomocy panelu
operatorskiego.
2.3. Regulator położenia.
2.4. Modelowanie sterowania.
3. Założenia projektu.
3.1. Opis funkcji komunikacyjnych Matlaba oraz protokołu USART dla portu RS232.
3.2. Wizualizacja danych z czujników. Wprowadzenie do środowiska graficznego
Matlaba.
3.3. Regulator PID.
3.4. Teoretyczne rozważania sterowania quadrokopterem.
4. Dokumentacja użytkownika.
4.1. Obsługa urządzenie przy pomocy panelu operatorskiego.
4.2. Obsługa urządzenia korzystając z funkcji użytkowych.
4.3. Odczyt charakterystyk.
4.4. Dobór parametrów regulatora.
5. Dokumentacja serwisowa.
5.1. Instalacja pakietu Matlab.
5.2. Instalacja pakietu WinAvr.
5.3. Instalacja sterowników programatora.
5.4. Program testów komunikacji.
5.5. Program symulacji kinematyki quadrokoptera.
6. Literatura.
1.Opis technologii i urządzeń współpracujących.
Rys.2 pokazuje gdzie został umiejscowiony przewód zasilający oraz akumulator litowo-
polimerowy służący do zasilania quadrokoptera, jego podzespołów elektronicznych oraz
silników. [1]
3.Założenia projektu.
pobrany = fread(SerPIC,1);
fclose(SerPIC); % zamkniecie portu po skonczonej transmisji
delete(SerPIC);
clear SerPIC
Kod 1. Komunikacja stacji z komputerem pokładowym. [2]
Komunikacja zwrotna między mikroprocesorem, a Matlabem odbywa się przez protokól
transmisji USART dla komunikacji za pośrednictwem portu RS232. Wykorzystując
transmicje USART należy skonfigurować parametry komunikacji w ten sam sposób w jaki
zostały one sprecyzowane przy konfiguracji portu w Matlabie. W przypadku, gdy programy
nie miałyby tych samych ustawień komunikacja między tymi urządzeniami nie była by
możliwa. Koniguracja poszczególnych rejestrów mikroprocesora oraz szczegółowa instrukcja
obsługi protokołu transmisji USART jest opisana w instrukcji mikroprocesora Atmega 32.
Obsługa elementów panelu od strony programistycznej odbywa się przy pomocy tak
zwanych uchwytów (handles). Uchwyty są to parametry każdego obiektu w środowisku
panelu. Każdy obiekt na panelu posiada swoją indywidualną nazwę dzięki czemu
odwoływanie się do obiektów przy właściwym zastosowaniu nazewnictwa jest uproszczone.
Zmiany w obiektach przeprowadza się za pośrednictwem wcześniej wspomnianych
uchwytów. Chcąc zmienić parametr jakiegoś obiektu wystarczy go wywołać powołując się na
dany uchwyt.
set(handles.uitabela1,'data',tableData);
Kod 3 zmiana parametru obiektu
tableData = get(handles.uitable1,'data');
Kod 4 pobranie danych z parametru obiektu
function slider_callback;
a = get(gcbo, 'Value');
Kod 6 wywołanie suwaka, oraz pobranie jego wartości.
(1)
t
u t = k r [ e t
T i
∫
0
e t d
t T d d
e
dt
]
(2)
u t k = u t k −1 K p [ 1 e t k
T i t
start:
blad = pozycja_zadana - aktualna_pozycja
I = I + (blad*dt)
D = (blad - blad_wczesniejszy)/dt
wyj = (Kp*blad) + (Ki*I) + (Kd*D)
blad_wczesniejszy = blad
wait(dt)
goto start
I ṗ =− I
q
r l T −T
(3)
4 2
I q̇ =− I
p
r l T −T
(4)
1 3
2
I ṙ = K T T −T −T
(5)
r 1 3 2 4
][ ]
T 1
(6)
[ ][ ] [
l 00 ṗ 0 −l 0 −l
= T 2
0 l 0 q̇ l 0 −l 0
00 l ṙ K r −K r K r − K r T 3
T 4
T =T T T T
(7)
1 2 3 4
[ ] [ ] [ ] (8)
ẍ 0 0
m ÿ =R p Rq Rr 0 0
z̈ −T m
g
[ ] (9)
1 0 0
R X , p = 0cos p−s in p
0 s
in p c
os p
[ ] (10)
co
s q 0 s
in q
R Y , q = 0 1 0
−sin q 0 c
osq
2
I ṙ = K T T −T −T
(11)
r 1 3 2 4
Wymnożona macierz Rp Rq Rr =
[ (12) ]
c1 c 2 c1 s 2 s3 − s1 c3 s1 s3 c1 s 2 c3
R p Rq Rr = s1 c 2 s 1 s 2 s 3 c 1 c 3 s 1 s 2 c 3− c 1 s 3
− s2 c2 s3 c2 c3
b) Regulacja położenia odbywa się przy pomocy regulatora PID. Aby wyznaczyć
równania, wykonane zostały przekształcenia na podstawowych prawach fizyki. Zgodnie
z 2 prawem dynamiki Newtona.
(13)
F [ N ]= g [ ]
⋅ o
d
c
z
y
t w
a
r
t
o
ś
c
i [ k
g ]− w
a
r
t
o
ś
ć
s 2
(14)
F s s =
s1
(15)
d
v F −ma
(16)
=
dt m
F −mg
(17)
s 2 h=
m
(18)
h s = 2
F m s
m
s
ẋ 1
x
x 1 u
(19)
= 01 0 1
ẋ 2 00 2
x1
(20)
y = 1 0
x2
Regulacja z zastosowaniem kąta nachylenia śmigieł. To tego rodzaju regulacji należy
zastosować równania ruchu obrotowego. Ten typ regulacji jest wskazany w związku ze
specyficznym sposobem sterowania czterema śmigłami. Dzięki zastosowaniu tego rodzaju
regulacji można uniknąć przekształceń związanych z zamianą wysokości lotu na nachylenie
do płaszczyzny. [7]
d
(21)
T =J =F
l
d
t
(22)
s = 2
F s
J
s
xx
0
ẋ 1 =
ẋ 2
01
00
1
2
1
J
u
(23)
y = 1 0 x 1
x2
(24)
4.Dokumentacja użytkownika.
Funkcja_4(2,[1 0 1 0 1 0 1 0])
Kod 5 Wywołanie funkcji zmieniającej moce wszystkich silników na 10%.
Stosowanie funkcji jest opisane w helpie funkcji. Wywołanie pomocy jest takie samo
jak wywołanie pomocy dla każdej innej funkcji Matlaba.
Help funkcja_4
Kod 6 Wywołanie pomocy funkcji obsługujących quadrokopter.
Każdy plik pomocy posiada informacje odnośnie zadania jakie ma wykonywać dana
funkcja. Sposób wywołania funkcji. Dane zwrotne otrzymywane z komputera pokładowego
quadrokoptera. Ramke wysyłaną do komputera pokładowego. Dane zwrotne oraz nadawcze
są przechowywane w wektorach o długości równej ilości bajtów przesyłanych między
urządzeniami.
Badanie szybkości transmisji, przeprowadzono dla prędkości: 2400 b/s, 4800 b/s, 9600
b/s. Komunikacja za pośrednictwem RS-232 jest możliwa również przy prędkości 15600 b/s,
jednak środowisko MatLab'a nie obsługuję tej prędkości, w związku z czym ta prędkość
została pominięta.
[ ][
− ṗ (25)
l
]
Tx
q̇ =
Ty
l
ṙ −T x T y
K
Gdzie siły ciągu są sumowane na każdej z osi. Korzystając z takiego zabiegu możliwe
jest rozwiązanie równania przy znajomości oczekiwanych prędkości kątowych zważywszy, że
oczekujemy, aby quadrokopter stabilizował się powoli wystarczy prędkość mniejsza niż
5 [cm/s]. Należy zwrócić uwagę na występujące minusy w tym układzie równań. Oznacza to,
że silnik pracuje w przeciwnym kierunku. Wnika to z tego, że silniki na osi x pracują w
przeciwnym kierunku by zminimalizować wirowanie quadrokoptera dookoła środka swojej
osi obrotu.
dT = 0.01;
p = 0.05;
q = 0;
r = 0;
katy = [(p/l);(q/l);(r/(2*l))];
T2 = dT + katy(1)/2
T4 = -T2
T1 = dT + katy(2)/2
T3 = -T1
Kod 8. Przykładowe uruchomienie skryptu obliczającego siłę ciągu silników.
Wyznaczenie charakterystyki siły ciągu jest istotna dla prawidłowej pracy całego
układu. Posiadając charakterystyki rzeczywistych silników możemy je aproksymować do
obiektu 1 rzędu (kod 9).
Motor = (motor1+motor2+motor3+motor4)/4;
a = [ones(length(Motor),1) Motor(:,1)];
Kod 9. Aproksymacja charakterystyki siły ciągu silników motor1-4 do liniowej charakterystyki
siły ciągu całego obiektu.