You are on page 1of 87

STANBUL TEKNK NVERSTES FEN BLMLER ENSTTS

SABT KANATLI NSANSIZ HAVA ARACININ DKEY UU KONTROL

YKSEK LSANS TEZ Kadir AKIN

Anabilim Dal : Kontrol ve Kumanda Sistemleri Program : Kontrol ve Otomasyon Mhendislii

Tez Danman: Do. Dr. M. Turan SYLEMEZ

Mays 2011

Aileme ve dostlarma,

ii

NSZ Bu almada bana yol gsteren, zamann ayran, deerli grlerini benimle paylaan hocam sayn Doc. Dr. M. Turan SYLEMEZe teekkr ederim. Ayrca almamn her evresinde bana yardmc olan Tubal Altana, Fatih ekeroluna Bahadr Takrana teekkr ederim. Tm eitim hayatm boyunca beni destekleyen, bugnlere gelmemi salayan anneme, babama ve kardelerime almam sresince bana sabr gsterdikleri ve moral verdikleri iin sevgi ve teekkrlerimi sunarm.

ubat 2008

Kadir Akn (Kontrol Mhendisi)

iii

iv

NDEKLER Sayfa NSZ ....................................................................................................................... iii NDEKLER .......................................................................................................... v KISALTMALAR ..................................................................................................... vii ZELGE LSTES .................................................................................................. ix EKL LSTES ........................................................................................................ xi ZET........................................................................................................................ xiii SUMMARY .............................................................................................................. xv 1. GR ...................................................................................................................... 1 1.1 Tezin Amac ....................................................................................................... 3 1.2 Literatr zeti .............................................Hata! Yer iareti tanmlanmam. 1.3 Hipotez ............................................................................................................... 3 2. TERS SARKA SSTEMNN MODELLENMES VE KONTROL ........... 5 2.1 Ama .................................................................................................................. 5 2.2 Ters Sarka Sisteminin Modellenmesi ............................................................... 5 2.3 Ters Sarkacn LQR le Kontrol ...................................................................... 10 2.3.1 Durum Denklemlerinin Lineerletirilmesi ve Durum Uzay Modeli ........ 10 2.3.2 Sistemin kotroledilebilirlii ve gzlenebilirlii ........................................ 12 2.3.3 Sistemin kotrol ........................................................................................ 13 2.4 Simlasyon Sonular ....................................................................................... 15 3. SABT KANATLI NSANSIZ HAVA ARACI TASARIMI ............................ 19 3.1 SKHAnn Gvde Tasarm ............................................................................ 19 3.1.1 Servo Motorlar .......................................................................................... 19 3.1.2 Frasz DC Motor ve Pervane .................................................................. 20 3.1.3 Elekrik Hz Kontrolr ............................................................................. 21 3.2 Src ve Haberleme Kart .......................Hata! Yer iareti tanmlanmam. 3.3 Ataletsel lm Birimi .................................................................................... 23 4. SABT KANATLI NSANSIZ HAVA ARACININ MODELLENMES ....... 27 4.1 Kuaternion Ynelim Tanm ............................................................................ 27 4.2 SKHAnn Dikey Denge Modeli .................................................................... 30 5. SABT KANATLI NSANSIZ HAVA ARACININ KONTROL .................. 37 5.1 Uak Eksenleri ................................................................................................. 37 5.1.1 Roll Kontrol .............................................................................................. 37 5.1.2 Pitch Kontrol ............................................................................................. 39 5.1.3 Yaw Kontrol .............................................................................................. 39 5.2 LQR ile Dikey Denge Uu Kontrol .............................................................. 39 5.3 Simlasyon Sonular ..................................Hata! Yer iareti tanmlanmam. 6. SONULAR ......................................................................................................... 41 KAYNAKLAR ......................................................................................................... 43

KISALTMALAR AB HA T EHK LQR PWM SKHA UAV : Ataletsel lm Birimi : nsansz Hava Arac : stanbul Teknik niversitesi : Elektronik Hz Kontrolr : Linear Quadratic Regulator : Pulse Width Modulation : Sabit Kanatl nsansz Hava Arac : Unmanned Aerial Vehicle

vii

viii

ZELGE LSTES Sayfa izelge 2.1 : Quanser IP02 Sistemi Parametrelerinin Deerleri. ................................ 5 izelge 3.1 : Sbach 342nin zellikleri..................................................................... 19 izelge 3.2 : Gerilim Akm ve tme Kuvveti likisi ................................................ 21 izelge 3.3 : Kullanlan Elemanlarn Yaklak Arlklar ....................................... 26

ix

EKL LSTES Sayfa ekil 1.1 : General Atomics Aeronautical Systems Predator ...................................... 2 ekil 1.2 : AeroVironment Raven. .............................................................................. 2 ekil 1.3 : Ters sarka ve Dikey dengede sabit kanatl HA. ...................................... 4 ekil 2.1 : Quanser IP02 Ters Sarka Sistemi ............................................................. 5 ekil 2.2 : Ters Sarka Serbest Cisim Diyagram........................................................ 6 ekil 2.3 : Non-Lineer Model .................................................................................... 15 ekil 2.4 : Matlab Virtual Reality Toolbox ile hazrlanan arayz ............................. 16 ekil 2.5 : Bozucusuz Konum Kontrol .................................................................... 16 ekil 2.6 : Bozucusuz Konum Kontrol Srasnda Sarka Asnn Deiimi .......... 16 ekil 2.7 : Bozuculu Komun Kontrol ...................................................................... 17 ekil 2.8 : Bozuculu Konum Kontrol Srasnda Sarka Asnn Deiimi ............ 17 ekil 3.1 : Hextronix HXT900 9g Servo ................................................................... 19 ekil 3.2 : Turnigy 3.7g 1370 Servo .......................................................................... 20 ekil 3.3 : PWM Kontrol Sinyali Servo As ........................................................... 20 ekil 3.4 : TowerPro Brushless Outrunner 2410-08T 890kv .................................... 21 ekil 3.5 : APC marka Pervaneler ............................................................................. 21 ekil 3.6 : HobbyKing 25-30A ESC ......................................................................... 22 ekil 3.7 : Turnigy 1000mAh 3S Lityun Polimer Batarya ........................................ 22 ekil 3.8 : Src ve Haberleme Kart..................................................................... 23 ekil 3.9 : Haberleme Arayz ................................................................................ 23 ekil 3.10 : Analog Devices ADIS16365 AB......................................................... 24 ekil 3.11 : dsPIC33FJ128MC804 Kontroll AB .................................................. 24 ekil 3.12 : dsPIC33FJ128MC804 Balant emas ................................................. 25 ekil 3.13 : Gereklenen Model Uak ....................................................................... 26 ekil 4.1 : Refertans ve gvde eksenleri... 29 ekil 5.1 : Uu Eksenleri.......................................................................................... 37

xi

SABT KANATLI, KONTROLU ZET

NSANSIZ

HAVA

ARACININ

DKEY

UU

nsansz hava aralarnn (HA) snrl kapal mekanlarda kontrol ve uu planlamas baz spesifik zorluklar iermektedir. Bu almada, HAlarn kapal mekn otonom uularn deneysel ve teorik olarak incelenecektir. Kk lekli bir kanatl bir HA tasarlanm ve kablolu bir bilgisayar haberlemesi ile kapal mekan uular yapabilecek donanma ulamas salanmtr. ncelikle dikey denge uu modelini daha iyi anlamak iin, genel bir kontrol problemi olan Ters Sarka zerinde allmtr. Serbest cisim diyagram kullanlarak ters sarkacn matematiksel modeli hesaplanm ve ters sarkac kontrol etmek zere bir optimal kontrol yntemi olan Lineer Kuadratik Reglatr kullanlmtr. Ayn zamanda bozuculu ve bozucusuz modellere ait sonular Matlab Virtual Realty Toolbox kullanlarak gzlemlenmitir. Ters sarka sisteminden elde edilen bilgi ile tasarlanan kapal ortam uann dikey denge uu modeli elde edilimtir. Burada geribesleme alarnda oluacak tekillik problemini ortadan kaldrmak amacyla kuaternion yaklam kullanlmtr. Sonu olarak, HA iin kontrolr optimizasyon kriterleri tanmlanm ve ara iin LQR kontrol yaps tasarlanmtr.

xiii

xiv

NGLZCE TEZ BALII BURAYA YAZILIR SUMMARY The operation of unmanned aerial vehicles (UAVs) in constrained indoor environments presents many unique challenges in control and planning. This thesis investigates modeling and control methods as applied to indoor autonomous flight vehicles in both a theoretical and experimental context. A small-scale UAV, including a custom-built three-wing tailsitter is combined with wired computer network to form a testbed capable of indoor autonomous flight. First of all a general control problem Inverted Pendulum is studied to understand the hover flight model better. By using free body diagram of Inverted Pendulum mathematical model is computed. And Linear Quadratic Regulator which is an optimal control algoritm aplied to our sytem. Also results are observed in Matlab Virtual Realty world for with and without disturbances. By using knowledge of Inverted Pendulum, mathematical model of our indoor plane in hower is obtained. Quaternion axis set is used to avoid singularty in feedback angles. Finally, controller optimization criterias are defined for UAV. By using LQR control technique an optimal linear controller is designed for the vehicle.

xv

1. GR Gnmzde insansz hava aralar (HA) arama ve kurtarma, haritalama, jeolojik keif, askeri keif akll bilgi toplama gibi birok zorlayc grevde kullanlmaktadr. Bu aralarn insansz uabilmeleri sayesinde tehlikeli grevler yapabilmeleri yannda retim maliyetlerinin de insanl hava aralarna nazaran dk olmas yaygnlamalarn salamaktadr. Genellikle uzaktan kontroll ve otonom olmak zere iki tip HA retilmektedir. Uzaktan kontroll HAlar bir pilot tarafndan uzaktan konrol edilirken otonom HAlar ise uu ncesi programlandklar grevi yaparlar. Otonom HAlarn yaplar uzaktan kontroll HAlara nazaran daha karmaktr. ekil 1de grlmekte olan resim 2000 ylnda retilmi olan General Atomics Aeronautical Systems Predator a aittir. oka terih edilen bu HA 20 m kanat aklna, 4536 kg arla sahip, 50000 ft ykseklik iin tasarlanm 30 saatten fazla uabilen, askeri standartlar salayan bir aratr. ekil 2de grlmekte olan AeroVironment Raven isimli ara ise daha alak uu yapan hafif ve kk bir modeldir. Bu ara hem uzaktan kontroll olarak hemde programlanabilir otonom olarak alabilmektedir.

ekil 1.1 : General Atomics Aeronautical Systems Predator

ekil 1.2 : AeroVironment Raven. Sabit kanatl HAlarrn normal uu ve dikey dengede durma modlar arasnda gei yapabilmeleri dner kanatl HAlara gre avantaj salamaktadr. Sabit kanatl HAlar ak ortamda normal uu sayesinde hzl hareket ederlerken, kapal ortamlarda dikey denge durumuna geerek hasas grevleri yerine getirebilirler. Ayrca dikey denge modu, dikey kalk inie olanak salar bylece kalk ve inite geni alanlara ihtiya duyulmaz.[13] Sabit kanatl HAlarn normal uu - dikey denge aras gei yetenekleri kullanm alanlarn ve faydalarn arttrmtr. lk baarl manuel kontroll geiler 1954 ylnda Convair XFY-1 isimli ara ile yapld. Sonraki yllarda da ara gelitirmek iin alan pek ok aratrma gruplar vardr. Drexel niversitesinde gelitirilmi olan radyo sinyalleri ile haberleen insan kontroll ara yatay uu yapabildii gibi zerindeki ilemci ve ataletsel lm nitesi sayesinde dikey dengede de durabilmektedir.[18] Aracn genel anlamda ilevselliinin artmas iin yksek seviyede uu ve dikey salnm yapmas gerekmektedir. Yaplan almalar genelikle kapal alan uu

denemeleri ile snrl kalmtr. Ayrca yaplan denemler de kalklar ve iniler iin ya zel tasarlanm bir platform tasarlanm yada el ile salanmtr bu da deiik fiziksel evrelerde meydana gelebilecek ini kalk sorunlarn kapsamamaktadr.[15] 1.1 Tezin Amac Bu almada kontrol mhendisliinin temel problemlerinden biri olan ters sarkacn dikey dengede durmasndan ilham alnarak bir sabit kanatl insansz hava aracnn dikey olarak dengede durmas salayacak kontrolr tasarlanm ve gereklenmitir. HAnn yatay olarak dengede durabilmesi iin uygun bir kontrolr tasarlamak amacyla ters sarkan modeli elde edilmi ve elde edilen modele ynelik kontrolrler tasarlanmtr. Daha sonra kapal ortamlarda uabilecek bir HA retilmi ve yatay uu ve dikey denge modelleri elde edilmi, ters sarkan kontrolnde kullanlan kontrolr yaplar uygulanmtr. 1.2 Hipotez Ters sarka dzenei lineer olmayan bir sistemdir ve bu sistemin kontrol kontrol mhendisliinin temel problemlerinden biridir. zellikle robotik sistemlerde eklemlerin modellenmesi ve kontrol srasnda karlan non-lineerlie benzer nonlineer terimler iermesi ters sarka sistemini gnmzde de zerinde konulardan biri haline getirmektedir. Sabit kanatl bir HAnn dikey denge modeli temel anlamda ters sarka modeliyle paralellik gstermektedir. ekil 3te de grld gibi en basit anlamda denge durumundaki HA st ucuna yay balanm iki eksenli bir ters sarka gibi dnlebilir. Bu durumda ters sarkan dikey dengede tutulmas iin tasarlanan kontrolr yaplar SKHA iin de kullanlabilir. allan

Thrust uprop

Faileron F Felivator

Faileron

Frudder

ekil 1.3 : Ters sarka ve Dikey dengede sabit kanatl HA.

2. TERS SARKA SSTEMNN MODELLENMES VE KONTROL 2.1 Ama Bir aracn zerine monte edilmi ters sarkac serbest konumdan yukar denge konumu civarna getirmek ve sarkac dik olarak dengede tutmak amalanmtr. Sarkacn kararsz denge konumunda dik olarak tutulabilmesi iin srekli aktif olarak kontrol edilmesi gerekmektedir.[3] 2.2 Ters Sarka Sisteminin Modellenmesi ekil 2.1 de grlmekte olan Quanser firmasn IP02 ters sarka deney setinin donanmsal yaps ve parametreleri gz nnde bulundurularak sistem modellenmitir.

ekil 2.1 : Quanser IP02 Ters Sarka Sistemi IP02 ters sarka sistemine ilikin parametreler ve deerleri izelge 2.1de verilmitir. izelge 2.1 : Quanser IP02 Sistemi Parametrelerinin Deerleri. Sembol Vnom Tanm Motor Nominal Giri Gerilimi Maksimum Motor Giri Frekans Motor Armatr Direnci Motor Armatr Endktans Motor Tork Sabiti Deer 6.0 50 2.6 0.18 0.00767 Birim V Hz Ohm mH N.m/A

fV max Rm Lm Kt

m
Km

Motor Kazan Oran Ters EMK Sabiti Rotor Eylemsizlik Momenti Dili Kutusu Oran Dili Kutusu Kazan Oran IP02 Ara Ktlesi IP02 Ara Ek Arlnn Ktlesi Motor Dilisinin Yarap Motor dilisi iin edeer viskos srtnme katsays Sarka Ktlesi Sarkan Tm Uzunluu Sarkan Arlk Merkezi Uzunluu Sarka Atalet Momenti Sarka Srtnmesi

100 0.00767 3.9E-007 3.71 100 0.57 0.37 0.0063 5.4 0.127 0.3365 0.1778 0.0012 0.0024

% V.s/rad kg. m 2 % kg kg m

Jm
Kg

g
M c2 Mw
rmp
Beq

kg m m kg. m 2 N.m.s/rad

Sistem dinamiklerini tanmlayan denklemleri bulabilmek iin enerji tabanl lagrangian yntemi kullanlmtr.[6,11] ncelikle sistemdeki kinetik ve potansiyel enerji hesaplanarak lagrangian bulunur. Lagrangian kullanlarak sistemin hareket denklemleri elde edilebilir.

ekil 2.2 : Ters Sarka Serbest Cisim Diyagram Ters sarka sistemin serbest cisim diyagram ekil 2.2de grlmektedir. Ters sarka sisteminin bileenleri ara ve sarka eklinde ayrtrlrsa model daha anlalr olacaktr. ncelikle araca ait teleme ve dnme kinetik enerjileri aadaki gibidir.

( ))

(2.1)

( ))

(2.2)

)(

( ))

(2.3)

Denkelm 2.3 basitletirmek amacyla teleme ve dnme kinetik enerjileri ise aada verilmitir.

yazlabilir. Sarkaca ait

((

( ))

( )) )

(2.4)

( )

( )

( ) ;

( )

( )

( )

( )

(2.5)

( )

( ) ;

( )

( )

( )

(2.6)

( ))

(2.7)

( (

( )) )( ( ))

( )

( )

( ) (2.8)

Sonu olarak sistemin toplam kinetik enerjisi verilmitir.

denklem 2.9da

)(

( ))

( )

( )

( ) (2.9)

)(

( ))

ekil 2.2de grld zere aracn arlk merkezi x-ekseni zerinde seilmitir bu durumda sistemin toplam potansiyel enerjisi sarkan potansiyel enerjisine eit olacaktr. ( ) (2.10)

Sistemin toplam kinetik ve potansiyel enerjisi kullanlarak lagrangian denklemi elde edilir. (2.11)

)(

( ))

( )

( )

( ) (2.11)

)(

( ))

( )

Lagrangian denklemi kullanlarak sistemin durum denklemleri aadaki gibi hesaplanr.

(2.12)

Sistemin durumlar

] aracn konumu

ve sarkacn as

olarak

seilmesi durumunda 2.12deki genel lagrangian eitlii kullanlarak durum denklemleri 2.13 ve 2.14te grld gibi heasaplanr.

)(

( ))

( )(

( )) (2.13)

( )(

( ))

( )( ( )

( ))

)(

( )) (2.14)

Yukardaki denklemlerde grlmekte olan

ve

deerleri sisteme uygulanan sisteme motor dan aktarlan ise boyunca

kuvvet ve tork deerlerini gstermektedir. Burada

yatay kuvvetten oluan yatay srtnmelerin kartlm halini

herhangi bir d tork etkilemedii iin yalnzca sarkata oluan dnme srtnmelerini ifade etmektedir. Bu kuvvet ve tork ifadeleri aadaki gibi formlize edilebilir.

( ))

(2.15)

( ))

(2.16)

2.13 ile 2.15 ve 2.14 ile 2.16 denkelemleri eitlenip dzenlenirse aadaki non-lineer durum denklemleri elde edilir. ( ( ( ) ) ( ) ) ( ) ( ) ( )( ) ( ) (2.17) ( ) ( ) ( )

( ) ( ( ) ( ) ( )

( )

( )( ) ( ) (2.18)

( ) ( )

( )

2.3 Ters Sarkacn LQR le Kontrol 2.3.1 Durum Denklemlerinin Lineerletirilmesi ve Durum Uzay Modeli Lineer kontrol yntemlerinin uygulanabilmesi iin ncelikle (2.16) ve (2.17)de bulunan ifadelerin lineerletirilmesi gerekmektedir. Sarkacn alma blgesi olan iin: civarnda sistem lineerletirilmelidir. ( ) ( ) ( ( )) , , ,

yazlabilir. Bu yaklaklklar kullanlarak (2.16) ve (2.17) eitlikleri yeniden dzenlenirse lineerletirilmi hareket denklemleri ( ) ( ( ( ) ) ) ( ) ( ) (2.19)

(2.20)

olarak elde edilir. Sisteme ait durumlar lineerletirildikten sonra aadaki ifadeler kullanlarak durum uzaynda gsterime geilebilir:

(2.20)

10

(2.21)

(2.18) ve (2.19)dan grlecei zere sistemin durumlar olarak aracn konumu, sarkacn as, aracn hz ve sarkacn asal hz alnmas gerekmektedir. Bu durumda Durum vektr X (2.22) de gsterilmitir.

[ ( )

( )

( )

( )]

(2.22)

(2.18) ve (2.19) ifadeleri kullanlarak A,B,C ve D matrisleri aadaki gibi bulunur.

( ( [ ( ) ( ) ) ( ) ( )

) ( ( ( ) ) ) ]

(2.23)

( [(

) ) ]

(2.24)

(2.25)

(2.26) [ ]

11

2.3.2 Sistemin kotroledilebilirlii ve gzlenebilirlii Bir sistemi herhangi bir baalang durumundan son durumuna

sonlu bir T sresinde getirebilecek bir kontrol iareti kontrol edilebilirdir.[14]

( ) bulunabiliyorsa sistem

(2.27) ( )

(2.28) de ifade edilen kontrol edilebilirlik matrisinin ranknn durum vektrnn boyutu olan ne eit olmas sistemin kontrol edilebir olduu anlamna gelmektedir. [ ] (2.28)

Sisteme belli bir zaman aralnda etki eden u(t) kontrol iareti ve y(t) k iaretine baklarak balang durumu hesaplanabiliyor ise bu sistem gzlenebilirdir denir.[8] ( ) ( )
( )

( )

( )

(2.29)

Bir sistemin gzlenebilirliini belirlemek iin (2.30) da verilen gzlenebilirlik matrisinin rankna baklr, rankn durum vektrnn boyutu olan ne eit olmas sistemin gzlenebilir olduu anlamna gelir. (2.30)

Sistemin durum matrislerinin saysal deerleri aada verilmitir.

(2.31)

12

(2.32)

(2.33)

(2.34) [ ]

Sonu olarak sistem kontrol edilebilirdir. Sistem durumlarndan ara konumu xc gzlenebilir, sarka as p ise gzlenebilir deildir. 2.3.3 Sistemin kotrol Sarkacn dik konumda tutulmas olduka hassas bir kontrol gerektirmektedir. Sistem yaps gerei kararsz olduundan dolay ters sarka sistemi tasarlanan yeni kontrolr yaplarnn ne kadar etkili olduunu denemek amacyla sklkla kullanlr. Sarkacn a deiimlerine gerektiinden fazla tepki vermesi ok kk bozucu etkilerinde bile sarkacn konumunun deimesine neden olacaktr. A deiimlerine ok yava cevap verildiinde ise sarka dik konumda tutulamayacaktr. Bu nedenlerden dolay bu blmde sarkac yukar denge konumunda tutabilmek ve bu noktada oluacak bozucu etkilerini bastrabilmek iin bir optimal kontrol yntemi olan Linear Quadratic Regulator kontrol yaps kullanlacaktr. LQR yntemi ile yaplmak istenen aslnda belirlenen bir performans ltn minimize eden kontrolr belirlemektir.[5] rnein performans lt olarak (2.35)

( )

( )

seilebilir. Bu performans lt ile kontrol edilen durumlarn karesel integrali ( ) ve sisteme uygulanan kontrol iaretinin karesel integrali

13

( ) bir anlamda

nin arlklandrlm toplam minimize edilmek istemektedir. Burada ( ) ifadesi kontrol edilen durumlarn enerjisini,

( )

ifadesi de kontrol iaretinin enerjisini gstermektedir. Dier bir

deyile bu tarz bir kontrol yaps ile sistem durumlarnn minimum enerji ile istenen deerlerine ulamas amalanmaktadr. Tasarmda LQR iin daha genel bir performans lt olan (2.35) ifadesini kullanacaz. (2.36) ( ) ( ) ( ) ( )

En genel halde Q simetrik negatif olmayan tanml ve R simetik pozitif tanml matrislerdir. Bu matrislerin belirlenmesi iin Bryson kuraln kullanacamzdan dolay Q matrisi diagonal matris olarak elde edilecektir. R ise sistem bir girii olduu iin skaler olacaktr. Burada

u Kx olarak seilecektir. Bylece amacmz performans ltn

minimize elden K kazan vektrn belirleme problemine indirgenmi olur. K vektrnn analitik yolla hesaplanabilmesi iin Matris Riccati Denklemi zlmedir. K kazan vektrnn belirlenebilmesi iin ncelikle Q ve R nin belirlenmesi gerekir. Yukarda da deinildii gibi burada Bryson kural uygulanacaktr. Bu kural baz durumlarda iyi sonu verse de genellikle yeterli deildir ancak bir balang noktas bulma grevi grr. Bu kurala gre (2.29)

(2.30)

ifadeleriyle Q ve R matrisleri belirlenebilir.[4,10] Bu aamada hangi durumun ve kontrol iaretinin maksimum deiim araln belirlememiz gerekir. Sistemimizde

14

sarkacn zerinde hareket ettii dili sistemin uzunluu yaklak olarak 1mdir. Yine sistemin lineerletirme hatalarnn kabul edilebilir olmas iin sarka asnn arasnda olmas ngrlmtr. 1m

50V; Bu deerler kullanlarak Q ve R matrisleri

olarak belirlenebilir. Bu deerler belirlendikten sonra K kazan vektrnn belirlenebilmesi iin matris Riccati denklemi zlmelidir. Matlab program kullanlarak hesaplanan kazn deeri aada verilmitir. K = [-50.0000 157.4838 -44.9575 15.4461] 2.4 Simlasyon Sonular

ekil 2.3 : Non-Lineer Model

15

ekil 2.4 : Matlab Virtual Reality Toolbox ile hazrlanan arayz

ekil 2.5 : Bozucusuz Konum Kontrol

ekil 2.6 : Bozucusuz Konum Kontrol Srasnda Sarka Asnn Deiimi

16

ekil 2.7 : Bozuculu Komun Kontrol

ekil 2.8 : Bozuculu Konum Kontrol Srasnda Sarka Asnn Deiimi

17

3. SABT KANATLI NSANSIZ HAVA ARACI TASARIMI 3.1 SKHAnn Gvde Tasarm Tasarm amacyla bir ok kapal ortam uak modeli incelenmitir. Sonu olarak genel olarak depron kpk ile gereklenen hobi uaklarn balang dzeyinde kontrol yapsn denemeye uygun olaca grlmtr. SKHAda gvde tasarmnda daha nce uu denemeleri yaplm olan bir model olan Sbach 342 kullanlmtr.[16] Bu model 6mmlik eppron ile gereklenmitir. Modele ait zellikler izelge 3.1de verilmitir. izelge 3.1 : Sbach 342nin zellikleri Sembol Kanat Akl Uzunluk Arlk 3.1.1 Servo Motorlar Eppron kpk kullanarak retilen uak modelinde kanatk aklklarn kontrol etmesi amacyla drt adet servo motor kullanlmtr. Bu servo motorlarn ikisi eleronlarn kontrolnde kullanlmtr. Hextronix firmasn 9 glk HXT900 model numaral bu motorlar ekil 3.1de grlmektedir. Uan kuyruk ksmnda bulunan kaldrc ve dmen kanatklarnn kontrolnde ise ekil 3.2de grlmekte olan Turnigy firmasnn 3.7glk 1370A servolar kullanlmtr. Tanm Deer 90 95 0.127 Birim cm cm kg

ekil 3.1 : Hextronix HXT900 9g Servo

19

ekil 3.2 : Turnigy 3.7g 1370 Servo

Bu servo motorlarn her ikisi de DC 3.6V-6V ile alabilen 50Hzlik PWM sinyali ile kontrol edilen servolardr. Kontrol sinyali ile servonun as arasndaki lineer ilki ekil 3.3te grlmektedir.[17]

ekil 3.3 : PWM Kontrol Sinyali Servo As 3.1.2 Frasz DC Motor ve Pervane Frasz DC motor ua uuracak ve yatay denge durumunda tutacak olan iti kuvvetini oluturacak ana motordur. Seilmi olan frasz DC motor ekil 3.4te grlmekte olan TowerPro Brushless Outrunner 2410-08T 890kv motorudur. Bu motorun gerilim akm ve oluturduu itme kuvvetine ait veriler izelge 3.2de grlmektedir.

20

ekil 3.4 : TowerPro Brushless Outrunner 2410-08T 890kv izelge 3.2 : Gerilim Akm ve tme Kuvveti likisi Pevane Tipi 1047 1047 1047 1047 Gerilim 7.4V 8.4V 9.6V 11.1V Akm 6.0A 7.3A 8.6A 10.9A tme Kuvveti 344.4 g 411.6 g 492.8 g 602 g

izelge 3.2de grlen itme kuvveti deerini arttrmak amacyla 20 cm apnda pervane kullanmak yerine 30 cmlik APC marka pervane kullanlmtr.

ekil 3.5 : APC marka Pervaneler 3.1.3 Elekrik Hz Kontrolr Frasz DC motorun kontrol edilmesi iin 25-30Alik HobbyKing firmasndan ekil 3.6da grlen elektrik hz kontrolr (EHK) kullanlmtr. Bu elemann da kontrol iareti servo motorlarda olduu gibi 50Hzlik PWMdir. Servo motorlardan farkl olarak bu eleman kontrol edilirken gvenlii salamak adna ncelikle EHKya minimum PWM verilir. Bu durumda EHK zerindeki bir buzzer uzun bir bip sesi kararak hazr olduunu bildirir. Daha sonra PWM alma oran arttrlarak motorun hzlanmas salanr.

21

ekil 3.6 : HobbyKing 25-30A ESC 3.2 Batarya HAda bulunan tm elektronik ekipman ve motorlar beslemek iin 1000mAhlik hcreli lityum polimer batarya kullanlmtr. hcreli bataryada k gerilimi 11.1Vtur.

ekil 3.7 : Turnigy 1000mAh 3S Lityun Polimer Batarya 3.3 Src ve Haberleme Kart Sistemdeki servo motorlar srmek ve bilgisayar ile haberlemek amacyla ekil 3.7de grlen kart tasarlanmtr. Pertinaks zerinde hazrlanan bu devrede bulunan PIC16F628A mikrodenetleyicisi zerinden 20 ms periyotla 5 adet PWM retilmektedir. Bu 5 PWM iareti ile drt servo ve EHK kontrol srlmektedir. Ayn zamanda RS232 seri iletiim ile servo ve frasz motorlar hazrlanan arayz zerinden manuel olarak kontrol edilebilmektedir. Matlabda hazrlanan arayze ait bir grnm ekil 3.8de verilmitir ayrca arayze ve mikro denetliyiciye ait kaynak

22

kod EK.Ada mevcuttur.

ekil 3.8 : Src ve Haberleme Kart

ekil 3.9 : Haberleme Arayz 3.4 Ataletsel lm Birimi Ataletsel lm birimi (AB) ierdii 3 eksenli dorusal ivme sensr ve eksendeki jiroskop sayesinde lineer ivmelenmeleri ve asal deiimleri alglar. Yine ierdii ilemci birimi sayesinde sensrlerden alnan analog deerleri filtreleyip seilen bir referans sistemine gre verebilir. eksenli pozisyon ve ynelim deerlerini

23

stanbul Teknik niversitesi (T) Kontrol Mhendislii Robotik Labarotuarnda kullanlmakta olan Analog Devicesa ait AB ekil 3.9da grlmektedir. Bu AB balant kablosunun kopmas sonucu bozulmu ve bir lisans bitirme projesi kapsamnda ierdii ivme sensrleri ve jireskoplar kullanlarak yeni bir yap oluturulmutur. ABnin ierdii ilemci birimi Analog Devicesa ait zel bir yap olduu iin bunun yerine Microchip firmasnn dsPIC serisinden dsPIC33FJ128MC804 mikrodenetleyicisi kullanlmtr. Yeni tasarlanan devreye ait mikrodenetleyici balant emas ekil 3.10da grlmektedir. Yeni tasarlanan devreye elektronik komponentler lehimlendikten sonra komponentlerin zarar grmemesi iin zerleri scak silikon ile kaplanmtr. Yapnn son hali ekil 3.11de grlmektedir.[9]

ekil 3.10 : Analog Devices ADIS16365 AB

ekil 3.11 : dsPIC33FJ128MC804 Kontroll AB

24

ekil 3.12 : dsPIC33FJ128MC804 Balant emas Bu devrede sensrlerden okunan 6 deer dsPICin analog kanallarndan okunmakta bu deerler dsPICte ilenmekte ve elde edilen ynelim deerleri Euler alar olarak hesaplanmaktadr. dsPICe ait kaynak kod EK.Bde verilmitir. Sonu olarak ekil 3.13te grlen uak gereklenmitir. Uan tm elmanlar zerinde iken yaplan manuel uu denemesinde frasz motor %40 orannda altrldnda ua kaldrmaya yetecek kadar thrust olutuu grlmtr.

25

ekil 3.13 : Gereklenen Model Uak Modelde kullanlan elemanlarn arlklar izelge 3.3te verilmitir. izelge 3.3 : Kullanlan Elemanlarn Yaklak Arlklar Eleman Depron Kpk Servo Motorlar Frasz DC Motor Frasz DC Motor Src Ataletsel lm Birimi Haberleme Kontrol Kart Kablo ve Balant Elemanlar TOPLAM Arlk 137 g 25.4g 66g 87g 24g 18g 50g 407g

26

4. SABT KANATLI NSANSIZ HAVA ARACININ MODELLENMES 4.1 Kuaternion Ynelim Tanm Kuaternion karmak saylar cisminin deimesiz geniletmesidir. lk defa rlanda'l matematiki Sir William Rowan Hamilton tarafndan 1843 ylnda tanmlanm, ve 3 boyutlu uzaydaki matematie uygulanmtr. lk bata, kuaterniyonlar deime kuralna (ab = ba) uymadklar iin sorunlu kabul edilmilerdir. Her ne kadar pek ok uygulamada vektrler yerlerini alm olsa da, hala kuramsal ve uygulamal matematikte kullanlmaktadrlar. Balca kullanm alanlar, 3 boyutlu uzayda dnme hareketinin hesaplanmasdr. Yatay uu ve dikey denge konumlar arasnda geilerin olaca bir HAnn yneliminin tanmlanmas srasnda tekil durumlarn olumamasn salanmaldr. Bir hava aracnn ynelimini tanmlayan birka yntem vardr. Bunlardan en yaygn euler alardr. Euler alar HAnn yalpalama (roll), yunuslama (pitch) ve dmen (yaw) alarn olaca iin kullanm kolaydr. Fakat, uu durumlar arasndaki gei srasnda yunuslama as dmen alarn ayrt edemez. HAnn yatay uuu srasnda yer dzlemi yaklak olarak yunuslamaya paralel olaca iin tekillik olumaz. Bu almada dikey dengede durma kontrol yaplaca iin yunuslama ekseni yer dzlemine dik olacak ve euler alar iin tekillik problemi ortaya kacaktr. Bu nedenle tekillik iermeyen bir ynelim tanmna ihtiya vardr. Euler alar yaklamnda oluan tekillii gidermek adna global bir ynelim yaklam olarak kuaternion yaklam kullanlabilir. Tanmlanan global ynelim referans zerine yerel ynelim tekillik olmakszn euler alar olarak belirlenebilir. Kuaternion 3 serbestlik derecesine sahip 4 reel saydan oluan bir birim vektrdr. Daha aklayc olmak gerekirse kuaternion,denklem 4.1de grld gibi boyutlu bir tanmlanabilir. birim vektrnde oluan /2 radyanlk bir rotasyon olarak civarnda iken euler a tanm yalpalama ve

27

( (

) ] )

[ ]

(4.1)

Buna ek olarak sfr kuaternionu durum euler alarnn

( )
o

olarak tanmlananr, bu

= ve = 0 olduu ynelimi ifade eder. Bu almada sfr

kuaternionunun ifade ettii ynelim yatay uuta ucunun kuzeye bakt andaki durum olarak kabul edilmitir. Kuaternion arpm deimeyen bir sfr kuaternionu referansna gre ynelimleri ifade eder ve matris arpm kurallarna uyar. Kuaternion arpm denklem 4.2. de tanmlanmtr, burada p ve q kuaternionlar M(p) ve M(q) ise denklem 4.3te tanmlanm olan olan kuaternion matrislerini ifade etmektedir.

( )

( )

( ) [ ]

(4.2)

( )

(4.3)

Kuaternion matrisi, matris ilemleri kurallarna uyar. Kuaternionlar birim vektrler olduu iin kuaternion matristeri iin eitlii geerlidir. ok istenen referans daha nemlidir. Kuaternion

HAnn kontrol srasnda aracn anlk yneliminden yneliminde oluan deiim ynelimi arpm tanm gereince aadaki gibi ifade edilebilir.

(4.4) Ayn zamanda aadaki gibi paralanabilir. (4.5) Denkelm (4.5) te tanmlanan aadaki bileenleri vardr. kuaternionlar ekil 4.1de grlen xB, yB, zB

eksenlerinde oluan rotasyonlardr. Bu kuaternionlarn euler alar cinsinden

28

] ( ( ] ( ) ( ) ( ] ( ( ( ( ) ) ) ) ( ) ) ( ( ) ) ) )

(4.6)

( )

(4.7)

( )

(4.8)

(4.9)

(4.10)

(4.11)

(4.12)

( )

(4.13)

( )

(4.14)

ekil 4.1 : Refertans ve gvde eksenleri Denklem (4.5) gsterilen ayrtrmaya tekil olma durumlarn ortadan

kaldrmamtr. Tekillii ortadan kaldrmak iin yatay uutan dikey uua geildii

29

srada yunuslama as 90oe yaklarken kuaternion referans dzlemi deitirilerek tekillikten kurtarlm olur. 4.2 SKHAnn Dikey Denge Modeli ekil 4.1de de grld zere yeryz xE, yE, zE vektrleri ile tanmlanan eksen sistemi ile ifade edilirken rijit olarak tanmlanan uak eksen sistemi ise xB, yB, zB vektrleri ile tanmlanmtr. Tasarlanan HA tek pervaneli bir uaktr. Pervanede dn hznn deitirilmesi hem xB ynnde iti kuvvetinin hem de yalpalama eksenindeki momentin deimesine neden olacaktr. Pervanenin oluturduu momentin iki temel bileeni vardr. Bunlardan biri pervane dn hznn deimesidir. Pervane ivmesinden kaynaklanan moment (4.15)te verilmitir. (4.15)

ve

, pervane ve hava erevesinin xB ynndeki atalet momentleri iken

pervanenin dn hzdr. Pervane srkleme momenti ise toplam pervane momentinin ikinci temel bileenidir. NACA tarafndan standardilize edilen iti (thrust) ve g (power) katsaylar CT ve CP.[7] (4.16)

(4.17)

Dikey uu modunda uan denge kalmas hedeflendii iin Newtonun ikinci yasas gerei T = mug olmaldr. Burada mu uan ktlesini g ise yerekimi ivmesini ifade etmektedir. Bu karmda oluan itme kuvvetinin (T) sadece yerekimine kar i yapt kabul edilmitir. Ayrca pervaneden geen havann sktrlamad ve hava younluu nun sabit olduu kabul edilmitir. Yukardaki denklemlerde geen dier parametreler d ve n ise pervane ap ve pervanenin bir saniyedeki dn

30

saysdr. Pervane srkleme momenti ile g arasndaki bant (4.18) de verilmitir. Bu durumda srkleme momenti (4.19) daki gibi olur. (4.18) (4.19)

Dikey denge uuu srasnda kontrol yzeylerinin sadece bir ksm hava akna maruz kalr. Pervanenin oluturduu hava ak uperv (4.20) de verilmitir. Burada aktatr disk alan Adisk = d2/4 olarak kullanlabilir. (4.20)

Kontrol yzeylerindeki itme katsaylar

eleron, kuyruk ve dmen iin

olarak tanmlanmtr. Kanatklarda oluacak olan itme kuvvetleri aadaki gibi genelletirilebilir. (4.21) Pervanenin oluturduu rzgarn kapakklara etki as kk a yaklamyla

eklinde ifade edilebilir. Eleronlarda oluan srklenme kuvveti (4.22)

ki gibi formlize edilebilir. (4.22)

) ve

Yunuslama ve dmen itme momenteri ve ve katsaylardr.

aada verilmitir.

pervane ile kuyruk ve dmen arasndaki uzakl, pervane rzgarnn etki alarn, ve ise moment

(4.23)

31

(4.24)

(4.25)

(4.26)

(4.27)

(4.28)

Kuaternion ynelim tanmna gre genel hareket denklemleri aadaki gibi olacaktr.[2] ( [ ( ( ) )] ) ( [ ( ) ( )] ) [ ( ( ( ) ) )] (4.29)

(4.30) ( ) [ ( ) )] ( ) (

) )

32

) ( )

(4.31)

) ( )

( ( ( ( ) )

(4.32)
)

Bu denklemlerde geen [ etmektedir. , ,

vektr kuaternion ynelimi ifade pervanenin oluturduu hava , , , , d hava ,

aknn tarad kontrol kapakklar alanlarn, aklarndan etkilenen kontrol kapakklar alanlarn,

ise eitli momen kolu uzunluklarn ifade etmektedir. Uakta oluacak srklenmenin temel iki bileeni vardr. Endklenen srklenme ve parazit srklenme. Bu srklenmelerin hesaplanmas endklenen srklenme katsats ve parazit srklenme katsays kullanlr. Burada

rzgarn kaldrma katsaysn, e rzgar verimini GO ise rzarn gr orann ifade etmektedir. HA dikey denge uuu yaparken etki eden srklenme ihmal edilebilir. Bunun nedeni dikey denge uuunda yatay uuta olduu gibi gvde erevesinin gibi yksek hava akn etkilememesidir. Yine yanal eksenlerden gelecek evresel rzgarlarn az olmas nedeniyle yB ve zB eksenlerinde oluacak kuvvet ifadeleri ihmal edilebilir. Pervaneye ait atalet momenti Iperv uan x esenindeki atalet momenti Ixden ok kk olduu iin ihmal edilebilir. Uak gvdesi dengede olaca iin aal hzlar p,

33

q ve r kk deerlerde kalaca iin bunlarn kareleri ve arpmlar ok kk olur ve ihmal edilebilir. Yatay denge uuunda pervanenin sabit hzla dnd dnlebilir. Bu durumda hava ak sabit olacaktr, uanda sabit durmas nedeniyle

olacaktr. (4.33)

(4.34) te geen

(4.34)

ifadesi HA dengede durduu andaki pervane kaldrma aileronlarn oluturduu srklenme

kuvvetinde oluacak kk deiimlerdir.

kuvvetidir. Bu kuvvet uan arlndan kktr ve uamzn yanal hareketlerinde ihmal edilebilir. Uan kontrol srasnda oluacak sapmalar kuaternionlar ifade edilmitir. Denge durumunda oluacak sapma kuaternionu (qdev) anlk kuaternionun (qcurret), ynelme kuaternionuna ( qhdg = [cos(hdg),sin(hdg),0,0] T = [c*, s*, 0, 0] T ; hdg: ynelme referans) ve dikey kuaterniona ( qv=[ , 0,

, 0] ) iz dm olarak hesaplanabilir.

Burada sapma kuaternionu yatay quaterniondan oluacak sapma miktarlarn ifade eden bir vektr olacaktr.

(4.35)

Sonu olarak sapma quaternonlar kullanlarak aadaki kuaternion modeli elde edilir.

(4.36)

34

(4.37)

(4.38)

[ ]
Basitletirilmi model iki adet drdnc iki adet ikinci mertebeden lineer zamanla deimeyen sisteme ayrtrlabilir. Drnc dereceden sistemlerden biri yunuslama as ve zB konumunun dieri ise dmen asnn ve yB konumunu dinamik modellerini ifade eder. kinci mertebeden sistemler ise ayr ayr xB konumu ve yuvarlanma asnn dinamik modellerini ifade eder.

35

5. SABT KANATLI NSANSIZ HAVA ARACININ KONTROL 5.1 Uak Eksenleri Bir uak; uu esnasnda; tm hareketlerini ayr eksen zerinde yapar. Bu eksenler birbirlerine 90 a yaparlar ve longitudinal eksen, lateral eksen, vertical eksen olarak isimlendirilirler. Longitudinal (Roll hareketlerinin yapld) eksen : Uan burnu ile kuyruk konisini birletiren hayali hattr. Uan saa ve sola yat hareketleri bu eksen zerinde olur. Lateral (Pitch hareketlerinin yapld) eksen : Uan iki kanat ucunu birletiren hayali hattr. Uan burun aa ve yukar hareketleri bu eksen zerinde olur. Vertical (Yaw hareketlerinin yapld) eksen : Yukarda bahsedilen bu iki eksene 90 dik, ua stlen alta doru delen eksendir. Uan ynnn belirlenmesini salayan saa ve sola dn hareketleri bu eksen zerinde olur.

ekil 5.1 : Uu Eksenleri 5.1.1 Roll Kontrol Uan roll kontrol; yani saa ve sola yatlar her bir kanadn firar kenarnda bulunan eleron (aileron) ile salanr. eleron 'lara; pilot kabininde bulunan her iki pilot kumanda volanlarnn saa veya sola dndrlmesi ile kumanda edilir. Aileron kumanda volannn saa dndrlmesinde; sa aileronun firar kenar yukar, sol aileron'un firar kenar ise

37

aa doru hareket eder. Sa eleron 'un firar kenarnn yukar hareketi; kanat ile beraber alt tarafta bir kamburluk oluturur. Dier bir deyimle kanat airfoil ekli deitirilmi olur. Airfoil zerinde kaldrma kuvvetinin elde ediliinden hatrlayacamz gibi; kamburluk kanat altndan akan hava filelerinin hzn arttracak, dolaysyla basn decektir. Kanat zerinde ise; hava hznda bir deime olmayacandan; basn; yaklak ortam basncna eit olacaktr. te aileron ile kanadn beraberce oluturacaklar alanda meydana gelen bu basn fark ile oluan kuvvet; kanat zerinde meydana gelen kaldrma kuvvetine kar bir g oluturur. Bu nedenle kanat kaldrma kuvveti azalr. Azalan kanat kaldrma kuvveti nedeniyle kanadn roll ekseni etrafnda hareket balar ve sa kanat aa doru hareket eder. Ksacas; kumanda volan ile verilen yat kumandas; her iki kanattaki aileron'larn birbirlerine ters olarak almalarn salar. Bu alma da kanatlarn kaldrma kuvvetlerini etkileyerek uan roll ekseni etrafnda saa ve sola yatlarn salar. Bylece roll kontrol elde edilmi olur. Baz uaklarda i ve d olmak zere her bir kanatta iki adet aileron bulunur. Uan dk hzlarnda her iki aileron birlikte kullanlarak uan roll kontrol etkin olarak salanr. Uan yksek hzlarnda ise; d aileron'lar kilitlenerek ntr pozisyonunda kalrlar. Bu durumda uan roll kontrol sadece i aileronlar ile salanr. Uaklarn roll kontrol kanatlarn kaldrma kuvvetlerinin arttrlmas veya azaltlmas ile salandna gre; yat yaplacak taraftaki kanat kaldrma kuvveti ne kadar azaltlrsa yat o kadar abuk ve etkili olur. Uaklarn kanatlarndaki kaldrma kuvvetlerini azaltmak iin spoiler'ler kullanlr. Normal durumlarda kanat st yzeyini oluturan spoiler'lerin almalar ile oluturduklar asal pozisyon; kanat zerinden akan hava filelerinin akn bozarlar ve kanat kaldrma kuvvetinin azalmasna neden olur. Aileron'larla uaa yat kumandas verildii zaman; yat yaplan taraftaki kanat zerinde bulunan spoiler'ler alr, dier kanattakiler kapal kalrlar. Spoiler'i alan kanattaki bozulan kaldrma kuvveti uan yatna yardmc olur.

38

5.1.2 Pitch Kontrol Uan pitch ekseni etrafndaki burun aa ve yukar hareketleri elevatorler ile salanr. Elevatorler; uan yatay stabililizer'inin firar kenarndadr. Pilot kabininde bulunan her bir levyenin ileri ve geri hareket ettirilmesi ile elevatorlerin firar kenarlarnn aa ve yukar hareket eder. Elevator'lerin yatay stabilizemle a yapmas; altta ve stte kamburluk oluumuna neden olur. Daha nceden rendiimiz gibi hava filelerinin hz; kamburluun olduu tarafta daha fazla, basnc ise; daha azdr Bu basn farkll ile yatay stabilizer zerinde meydana gelen kuvvet"' ua burun aa ve yukar hareket ettirir. 5.1.3 Yaw Kontrol Uan yaw ekseni etrafndaki saa ve sola dn hareketleri; dikey stabilizenin firar kenarnda bulunan rudder ile salanr. Rudder'in saa ve sola hareketleri; pilot kabininde bulunan her bir pilota ait birer ift pedal ile salanr. ki pedal iftinden birini kullanarak kumanda edildiinde; pedaln birinin ileri gittii, dierinin ise; geri geldii grlr. Rudderin dikey stabilizer ile yapm olduu kamburluk; iki tarafta basn farkll yaratr. Bu basn farkll uan saa veya sola dnmesini salar. Bylece uan yn deiir. 5.2 Dikey Denge Uu Kontrol Dikey denge uu kontrolnn tm durum geri besleme ile yaplabilmesi iin yksek frekansta veri salayan sensre ihtiya vardr.[1] Tasarlanan kontrolr Lineeer Quadratik (LQ) kontrol teknikleri ile optimize edilecektir. Uan dikey denge kontrolnn hassas salanmas adna yalpalama, yunuslama ve dmen alarna byk penalt katsaylar atanmaldr. Bunun yannda uan dikey konumunun kontrolnde ani hareketler yapmamas iin kk penalt katsays atanacaktr. Burada dikkat edilmesi gereken dier bir husus kpkten yaplm gvde erevesine sahip uaklarda servo motorlarn ok hzl hareket etmesi kpkte ani kvrlmalara ve hassas lm aletinin yanl deerler okumasna neden olabilir.

39

1. SONULAR Bu almada sabit kanatl insansz hava aracnn dikey konumda dengede uu modeli elde edilmitir. Matematiksel yap olarak bu sistemin daha basit bir benzeri olan ters sarka probleminden faydalanlarak sisteme ait kontrolr tasarlanmtr. LQR yaps kullanlarak tasarlanan kontrolre ait sonu matlab ortamnda gzlemlenmitir. Kontrolr gerek sistemde denemek amacylar bir model uak yaplm. Bu modele uygun motor, sensr seilip elektronik kart tasarlanarak uabilecek duruma getirilmitir.

41

KAYNAKLAR [1] ADIS16360/ADIS16365, Analog Devices Six Degrees of Freedom Inertial Sensor Datasheet [2] Adrian Frank, James McGrew, Mario Valenti, Daniel Levine, Jonathan P. How,2007, Hover, Transition, and Level Flight Control Design for a Single-Propeller Indoor Airplane,Technical Report Aerospace Controls Laboratory Department of Aeronautics and Astronautics Massachusetts Institute of Technology [3] Ahmad Nor Kasruddin Bin Nasir, 2007, Modeling and Controller Design for an Inverted Pendulum System, Master Theses of Electrical Engineering [4] Boris J. Lurie, Paul J. Enright, 2000, Classical Feedback Control with Matlab, Marcel Dekker, Inc. New York -Basel [5] Brian D. O. Anderson, John B. Moore, 1971, Linear Optimal Control Prentice-Hall, Inc., New Jersey [6] Christopher Mayhew, 2003, Robust Control of an Inverted Pendulum, Department of Electrical and Computer Engineering University of California, Santa Barbara [7] D. Biermann and R. N. Conway., 1942, Propeller Charts for the Determination of the Rotational Speed for the Maximum Ratio of the Propeller Efficiency to the Specific Fuel Consumption., Technical report, National Advisory Committee on Aeronautics, 1942 [8] G. Basile, G.Marro, 1969, On the Observability of Linear, Time-Invariant Systems with Unknown Inputs, Journal Of Optimization Theory and Applications, Vol.3 No. 6, June 1969, Belgium [9] Gkhan Ernl, 2010, Sensor Data Fusion With Kalman Filter, Undergraduate Thesis, stanbul Teknik niversitesi 2010 [10] Karl Johan Astrm,Richard M. Murray,2008, Feedback Systems An Introduction For Scientists And Engineers, Princeton University Press Princeton And Oxford [11] Khalil Sultan, 2003, Inverted Pendulum Analysis, design and Implemantation, IEEE Visionaries [12] MEGEP, 2006, Uak Bakm Otomatik Uu, Ankara 2006

43

[13] R Hugh Stone, 2004, Control Architecture for a Tail-Sitter Unmanned Air Vehicle, School of Aerospace, Mechanical and Mechatronic Engineering, University of Sydney, NSW, Australia [14] Roger W. Brockett, 1970, Finite Dimentional Lineer Systems, Jhon Willey and Sons, Inc. New York - London Sydney - Toronto [15] Takaaki Matsumoto, Koichi Kita, Ren Suzuki, Atsushi Oosedo, 2010, A Hovering Control Strategy for a Tail-Sitter VTOL UAV that Increases Stability Against Large Disturbance, 2010 IEEE International Conference on Robotics and Automation Anchorage Convention District May 3-8, 2010, Anchorage, Alaska, USA [16] Url-1 <http://www.rcgroups.com/forums/attachment.php?attachmentid=30116 85>, alnd tarih 01.05.2011 [17] Url-2 <http://www.pitt.edu/~sorc/robotics/handbook/ServoControl.htm>, alnd tarih 01.05.2011 [18] William E. Green and Paul Y. Oh, 2005, A MAV That Flies Like an Airplane and Hovers Like a Helicopter, International Conference on Advanced Intelligent Mechatronics Monterey, California, USA, 24-28 July, 2005

44

EKLER

EK A : Src ve Haberleme Kart Arayz ve Mikro Denetleyici Kodlar EK B : AB dsPICinine Ait Kaynak Kod

45

EK A. Seri Haberleme ile bilgisayardan kontrol edilebilen haberleme ve motor src kartna ilikin kaynak kod aada verilmitir.
#include <pic.h> #include "delay.h" __CONFIG(0x3F0A); bank1 unsigned char counter=0, i=0, j=0, s1_ters = 0, s2_ters = 0, servo_aci[8] = {0,0,0,0,0,0,0,0}, gelen_veri = 0; bank1 unsigned int servo_sureler[16]; void main(void){ TRISA = 0xFF; TRISB = 0b00000111; TXSTA = 0b00100100; RCSTA = 0b10010000; SPBRG = 64; GIE=1; PEIE=1; TMR1IE=1; TMR1ON=1; RCIE = 1; while(1) { for(i=0;i<8;i++){ servo_sureler[2*i] = (60536 - (servo_aci[i]*50) + 33); servo_sureler[2*i+1] = (48036 + (servo_aci[i]*50) + 33); } } } void interrupt abc(void){ // Timer Interrupt if(TMR1IF){ TMR1IF=0; TMR1H=(servo_sureler[counter])>>8; TMR1L=servo_sureler[counter]; if(counter == 0) RB3 = 1; else if(counter == 1) RB3 else if(counter == 2) RB4 else if(counter == 3) RB4 else if(counter == 4) RB5 else if(counter == 5) RB5 else if(counter == 6) RB6 else if(counter == 7) RB6 else if(counter == 8) RB7 else if(counter == 9) RB7

= = = = = = = = =

0; 1; 0; 1; 0; 1; 0; 1; 0;

46

if(++counter == 16) counter = 0; } if(RCIF){ gelen_veri = RCREG; if(gelen_veri>=100){ if(j == 10){ servo_aci[0] = gelen_veri - 100; }else if(j == 20){ servo_aci[1] = gelen_veri - 100; if(s1_ters==0) servo_aci[2] = gelen_veri - 100; else servo_aci[2] = 200 - gelen_veri; }else if(j == 30){ servo_aci[3] = gelen_veri - 100; if(s2_ters==0) servo_aci[4] = gelen_veri - 100; else servo_aci[4] = 200 - gelen_veri; } j = 0; }else if(gelen_veri == 10){ j = 10; }else if(gelen_veri == 20){ j = 20; }else if(gelen_veri == 30){ j = 30; }else if(gelen_veri == 21){ s1_ters = 0; servo_aci[2] = servo_aci[1]; j = 0; }else if(gelen_veri == 22){ s1_ters = 1; servo_aci[2] = 100 - servo_aci[1]; j = 0; }else if(gelen_veri == 31){ s2_ters = 0; servo_aci[4] = servo_aci[3]; j = 0; }else if(gelen_veri == 32){ s2_ters = 1; servo_aci[4] = 100 - servo_aci[3]; j = 0; } i = 50; while(--i); while(!TXIF); TXREG = gelen_veri; }

47

Bilgisayarda Matlab zrinden PIC ile haberleen arayze ait kaynak kod aadaki gibidir.
function varargout = arayuz(varargin) % ARAYUZ M-file for arayuz.fig % ARAYUZ, by itself, creates a new ARAYUZ or raises the existing % singleton*. % % H = ARAYUZ returns the handle to a new ARAYUZ or the handle to % the existing singleton*. % % ARAYUZ('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in ARAYUZ.M with the given input arguments. % % ARAYUZ('Property','Value',...) creates a new ARAYUZ or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before arayuz_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to arayuz_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help arayuz % Last Modified by GUIDE v2.5 19-Apr-2011 03:13:19 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @arayuz_OpeningFcn, ... 'gui_OutputFcn', @arayuz_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before arayuz is made visible. function arayuz_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to arayuz (see VARARGIN)

48

% Choose default command line output for arayuz handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes arayuz wait for user response (see UIRESUME) % uiwait(handles.figure1); handles.com = serial('COM5','BaudRate',19200); set(handles.com,'TimeOut',5); set(handles.com,'InputBufferSize',1); % get(handles.com) fopen(handles.com); fprintf('Port Ald\n') veri_gonder(handles.com,22); veri_gonder(handles.com,32); veri_gonder(handles.com,20); veri_gonder(handles.com,150); veri_gonder(handles.com,30); veri_gonder(handles.com,150); % fprintf(handles.com, '*IDN?') % idn = fscanf(handles.com); guidata(hObject, handles);

% --- Outputs from this function are returned to the command line. function varargout = arayuz_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; function veri_gonder(file,value) % Veri gnderme fonksiyonu fwrite(file,value); read_val = fread(file); if(read_val ~= value) fprintf('ERROR\n'); else fprintf('%d\n',value); end

% --- Executes on slider movement. function S1_slider_Callback(hObject, eventdata, handles) % hObject handle to S1_slider (see GCBO)

49

% eventdata % handles

reserved - to be defined in a future version of MATLAB structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider v = get(handles.S1_slider,'Value'); v = round(v); set(handles.S1_edit,'String',v); veri_gonder(handles.com,20); veri_gonder(handles.com,100+v); guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function S1_slider_CreateFcn(hObject, eventdata, handles) % hObject handle to S1_slider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

% --- Executes on slider movement. function S2_slider_Callback(hObject, eventdata, handles) % hObject handle to S2_slider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider v = get(handles.S2_slider,'Value'); v = round(v); set(handles.S2_edit,'String',v); veri_gonder(handles.com,30); veri_gonder(handles.com,100+v); guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function S2_slider_CreateFcn(hObject, eventdata, handles) % hObject handle to S2_slider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

50

% --- Executes on slider movement. function FDC_slider_Callback(hObject, eventdata, handles) % hObject handle to FDC_slider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider v = get(handles.FDC_slider,'Value'); v = round(v); set(handles.FDC_edit,'String',v); veri_gonder(handles.com,10); veri_gonder(handles.com,100+v); guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function FDC_slider_CreateFcn(hObject, eventdata, handles) % hObject handle to FDC_slider (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end

function S1_edit_Callback(hObject, eventdata, handles) % hObject handle to S1_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of S1_edit as text % str2double(get(hObject,'String')) returns contents of S1_edit as a double v = str2double(get(handles.S1_edit,'String')); if(isnan(v)) v = get(handles.S1_slider,'Value'); elseif(v>100) v = 100; elseif v<0 v = 0; end v = round(v); set(handles.S1_slider,'Value',v); set(handles.S1_edit,'String',v); veri_gonder(handles.com,20) veri_gonder(handles.com,100+v) guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function S1_edit_CreateFcn(hObject, eventdata, handles)

51

% hObject % eventdata % handles

handle to S1_edit (see GCBO) reserved - to be defined in a future version of MATLAB empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function S2_edit_Callback(hObject, eventdata, handles) % hObject handle to S2_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of S2_edit as text % str2double(get(hObject,'String')) returns contents of S2_edit as a double v = str2double(get(handles.S2_edit,'String')); if(isnan(v)) v = get(handles.S2_slider,'Value'); elseif(v>100) v = 100; elseif v<0 v = 0; end v = round(v); set(handles.S2_slider,'Value',v); set(handles.S2_edit,'String',v); veri_gonder(handles.com,30); veri_gonder(handles.com,100+v); guidata(hObject, handles);

% --- Executes during object creation, after setting all properties. function S2_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to S2_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function FDC_edit_Callback(hObject, eventdata, handles) % hObject handle to FDC_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB

52

% handles

structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of FDC_edit as text % str2double(get(hObject,'String')) returns contents of FDC_edit as a double v = str2double(get(handles.FDC_edit,'String')); if(isnan(v)) v = get(handles.FDC_slider,'Value'); elseif(v>100) v = 100; elseif v<0 v = 0; end v = round(v); set(handles.FDC_slider,'Value',v); set(handles.FDC_edit,'String',v); veri_gonder(handles.com,10); veri_gonder(handles.com,100+v); guidata(hObject, handles); % --- Executes during object creation, after setting all properties. function FDC_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to FDC_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on button press in S1_togglebutton. function S1_togglebutton_Callback(hObject, eventdata, handles) % hObject handle to S1_togglebutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of S1_togglebutton button_state = get(hObject,'Value'); if button_state == get(hObject,'Max') veri_gonder(handles.com,21); set(hObject,'String', 'Grup Dz'); elseif button_state == get(hObject,'Min') veri_gonder(handles.com,22); set(hObject,'String', 'Grup Ters'); end % --- Executes on button press in S2_togglebutton. function S2_togglebutton_Callback(hObject, eventdata, handles) % hObject handle to S2_togglebutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

53

% Hint: get(hObject,'Value') returns toggle state of S2_togglebutton button_state = get(hObject,'Value'); if button_state == get(hObject,'Max') veri_gonder(handles.com,31); set(hObject,'String', 'Grup Dz'); elseif button_state == get(hObject,'Min') veri_gonder(handles.com,32); set(hObject,'String', 'Grup Ters'); end % --- Executes on button press in S1_radiobutton. function S1_radiobutton_Callback(hObject, eventdata, handles) % hObject handle to S1_radiobutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of S1_radiobutton

% --- Executes on button press in S2_radiobutton. function S2_radiobutton_Callback(hObject, eventdata, handles) % hObject handle to S2_radiobutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of S2_radiobutton

% --- Executes on button press in FDC_radiobutton. function FDC_radiobutton_Callback(hObject, eventdata, handles) % hObject handle to FDC_radiobutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of FDC_radiobutton

% --- Executes on button press in S1_pushbutton. function S1_pushbutton_Callback(hObject, eventdata, handles) % hObject handle to S1_pushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) v = get(handles.S1_slider,'Value'); v = round(100 - v); set(handles.S1_slider,'Value',v); set(handles.S1_edit,'String',v); veri_gonder(handles.com,20); veri_gonder(handles.com,100+v); guidata(hObject, handles);

% --- Executes on button press in S2_pushbutton.

54

function S2_pushbutton_Callback(hObject, eventdata, handles) % hObject handle to S2_pushbutton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) v = get(handles.S2_slider,'Value'); v = round(100 - v); set(handles.S2_slider,'Value',v); set(handles.S2_edit,'String',v); veri_gonder(handles.com,30); veri_gonder(handles.com,100+v); guidata(hObject, handles); % --- Executes when user attempts to close figure1. function figure1_CloseRequestFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB fclose(handles.com); delete(handles.com); guidata(hObject, handles); fprintf('Port Kapatld') delete(hObject);

55

EK B.

#include "p33FJ128MC804.h" #include "dsp.h" #include <stdio.h> #define UART_BUFFER_SIZE 100 //UART verilerini yollamak iin kullanlan fonksiyonun ka veri tutabilecei #define TO 0.02 //sampling time #define TOTAL_SIMULATION_TIME 4 //total simulation time #define pi 3.14 //Radyan cinsinden kalibre edicen. 10mv 1 dereceye karlk gelse, 1 derece de 3.14/180.0 = 0.01744 radyana denk geldiinden //1mv da 0.001744 radyana denk gelir, 1 bit yaklak 1mV olsa; #define GYRO_X_CALIBRATION 0.003314 //DKKAT! bu deer atmasyon! #define GYRO_Y_CALIBRATION 0.003314 //DKKAT! bu deer atmasyon! #define GYRO_Z_CALIBRATION 0.003314 //DKKAT! bu deer atmasyon! #define OPERATION_TIME_STEP 0.001 #define ACCUMULATION_COUNT 100 #define #define #define #define #define TIMER1_PERIOD_R TIMER2_PERIOD_R TIMER3_PERIOD_R TIMER4_PERIOD_R TIMER5_PERIOD_R 156 1000 1000 1000 1000

int MEASUREMENT__ACCELEROMETER_X = 1; int MEASUREMENT__ACCELEROMETER_Y = 2; int MEASUREMENT__ACCELEROMETER_Z = 3; int MEASUREMENT__GYRO_X = 4; int MEASUREMENT__GYRO_Y = 5; int MEASUREMENT__GYRO_Z = 6; unsigned char GL_Thraed_1Hz = 0; unsigned char GL_Thraed_50Hz = 0; unsigned char GL_UART_Buffer[UART_BUFFER_SIZE] = {0}; unsigned char GL_UART_Buffer_Finish = 0; unsigned char GL_UART_Buffer_Start = 0; unsigned char GL_UART_Ek_Veri[50] = {0}; unsigned char GL_UART_Ek_Veri_Size = 0; unsigned int GL_ADC_Olcum_UI16[8] __attribute__((space(dma),aligned(16))); //Allocate 32 word (64 byte) from the DMA area unsigned int BufferA[4][8] __attribute__((space(dma),aligned(64))); unsigned int BufferB[4][8] __attribute__((space(dma),aligned(64))); unsigned int GL_Switch__Velocity_Calculate_UI16 = 0; //EU_CASE__WAIT unsigned int GL_Accumulator_Counter_UI16 = 0; float GL_ADC_Olcum_Milivolt_Offset[8] = {0}; float GL_ADC_Olcum_Milivolt_Accumulator[8] = {0}; // float GL_ADC_Olcum_Milivolt[8] = {0}; // float GL_Operation_Time = 0; // Hassasiyet: Operation_Time_Step = 0.001 saniye

56

//if Simulation_Time == TOTAL_SIMULATION_TIME -> Simulation ends //else -> Simulation_Time += TO float Simulation_Time = 0.0; //recent simulation time //arrays of angular velocity measurements float measurements_w_alfa[] = {0.1, 0.0, 0.0, 0.0, 0.0}; float measurements_w_beta[] = {0.0, 0.1, 0.0, 0.0, 0.0}; float measurements_w_gama[] = {0.0, 0.0, 0.4, 0.7, 0.2}; //angular velocities float GL_W_alfa; float GL_W_beta; float GL_W_gama; //angular rotations (angular pozition change) per sempling float GL_R_alfa; float GL_R_beta; float GL_R_gama; //new Rotation matrix float R_zyx[4][4] = {{0}}; //we do not use the firtst elements of the rotation matrix //matrix of total rotations, starting value is identity matrix float R[4][4] = {{0,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}}; float R_ex[4][4] = {{0}}; //estimation of Euler angles float GL_alfa_Estimation[3]; float GL_beta_Estimation[3]; float GL_gama_Estimation[3]; //**************************** void ADC_Ayarlarini_Yap( void ); void DMA0_Ayarlarini_Yap(void); void Portlari_Ayarla( void ); void SPI_Ayarlarini_Yap( void ); void Timer1_Ayarlarini_Yap( void ); void UART_Ayarlarini_Yap( void ); void Calculate_New_Angular_Velocities(); void Take_New_Angular_Velocities(); void Calculate_Rotation_Matrix_Rzyx(); void Calculate_Euler_Angles_From_Rotation_Matrix(); void Multiply_3_3_Matrix(float M1[4][4],float M2[4][4],float M_[4][4]);

57

void Copy_3_3_Matrix(float M1[4][4], float M2[4][4]); void Print_3_3_Matrix(float M[4][4]); void UART_Veri_Depola_Ve_Yolla( void ); _FOSCSEL(FNOSC_FRC); // Internal FRC Oscillator _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF enabled _FWDT(FWDTEN_OFF); & POSCMD_XT); // Clock Switching is

// Watchdog Timer Enabled/disabled by user software

int main(void) { unsigned long Baslangic_Sayaci_UI32 = 2000000; //for dngs ile kullanldnda yaklak yarm saniye beklemek iin 2milyona kadar say unsigned int i = 0; unsigned int j = 0; PLLFBD=237; CLKDIVbits.PLLPOST = 0; CLKDIVbits.PLLPRE = 9; __builtin_write_OSCCONH(0x01); // Clock switch to incorporate PLL // Initiate Clock Switch to __builtin_write_OSCCONL(0x01); // FRC with PLL (NOSC=0b001) // Start clock switching while (OSCCONbits.COSC != 0b001); // Wait for Clock switch to occur while(OSCCONbits.LOCK!=1) {}; // Wait for PLL to lock OSCCONL = 0x46; OSCCONL = 0x57; OSCCONbits.IOLOCK = 0; Portlari_Ayarla(); OSCCONL = 0x46; OSCCONL = 0x57; OSCCONbits.IOLOCK = 1; ADC_Ayarlarini_Yap(); DMA0_Ayarlarini_Yap(); Timer1_Ayarlarini_Yap(); UART_Ayarlarini_Yap(); IPC0bits.T1IP = 1; IPC1bits.T2IP = 2; IPC2bits.T3IP = 3; IPC6bits.T4IP = 4; IPC7bits.T5IP = 5; IPC3bits.U1TXIP = 1; IFS0bits.T1IF = 0; IFS0bits.T2IF = 0; IFS0bits.T3IF = 0; IFS1bits.T4IF = 0; IFS1bits.T5IF = 0; IFS0bits.DMA0IF = 0; IEC0bits.T1IE = 1;

58

IEC0bits.T2IE = IEC0bits.T3IE = IEC1bits.T4IE = IEC1bits.T5IE = IEC0bits.U1TXIE IEC0bits.DMA0IE

0; 0; 0; 0; = 1; = 1;

//Baslang deerlerini ata LATCbits.LATC7 = 1;//== LATCbits.LATC6 = 0;//== while(1) { if( GL_Thraed_50Hz == 1 ) { LATCbits.LATC7 ^= 1;//== LATCbits.LATC6 ^= 1;//== Take_New_Angular_Velocities(); GL_R_alfa = GL_W_alfa * TO; GL_R_beta = GL_W_beta * TO; GL_R_gama = GL_W_gama * TO; Calculate_Rotation_Matrix_Rzyx(); Copy_3_3_Matrix(R_ex,R); Multiply_3_3_Matrix(R_ex,R_zyx,R);//R=R_ex*R_zyx; Simulation_Time = Simulation_Time + TO; GL_Thraed_50Hz = 0; }//endif thread 50Hz if((GL_Thraed_1Hz == 1) && (GL_Operation_Time >= 5.0)) { Calculate_Euler_Angles_From_Rotation_Matrix(); GL_UART_Ek_Veri_Size = sprintf( GL_UART_Ek_Veri, "\n %.2f %.2f %.4f\r\n",GL_alfa_Estimation[1],GL_beta_Estimation[1],GL_gama_Estimation[1]*57 .32); UART_Veri_Depola_Ve_Yolla(); GL_Thraed_1Hz = 0; } } return 0; }

//ADC_Ayarlarini_Yap---------------------------------------------------------------ADC_Ayarlarini_Yap---------------

59

void ADC_Ayarlarini_Yap( void ) { AD1CON1bits.ADON = 0; AD1CON1bits.ADSIDL = 0; AD1CON1bits.ADDMABM = 0; AD1CON1bits.AD12B = 1; AD1CON1bits.FORM = 0b00; AD1CON1bits.SSRC = 0b111; AD1CON1bits.ASAM = 1; AD1CON2bits.VCFG = 0b000; AD1CON2bits.CSCNA = 1; AD1CON2bits.SMPI = 3; AD1CON2bits.BUFM = 0; AD1CON2bits.ALTS = 0; AD1CON3bits.ADRC = 0; AD1CON3bits.SAMC = 0b00011; AD1CON3bits.ADCS = 0b00111111; AD1CON4bits.DMABL = 0b011; AD1CHS0bits.CH0NA = 0; //Bizim kullandklarmz: AN1,4,5,6,7,8 AD1CSSLbits.CSS0 = 0; AD1CSSLbits.CSS1 = 0; AD1CSSLbits.CSS2 = 0; AD1CSSLbits.CSS3 = 0; AD1CSSLbits.CSS4 = 0; AD1CSSLbits.CSS5 = 0; AD1CSSLbits.CSS6 = 0; AD1CSSLbits.CSS7 = 0; AD1CSSLbits.CSS8 = 1; AD1PCFGLbits.PCFG0 = 0; AD1PCFGLbits.PCFG1 = 0; AD1PCFGLbits.PCFG2 = 0; AD1PCFGLbits.PCFG3 = 0; AD1PCFGLbits.PCFG4 = 0; AD1PCFGLbits.PCFG5 = 0; AD1PCFGLbits.PCFG6 = 0; AD1PCFGLbits.PCFG7 = 0; AD1PCFGLbits.PCFG8 = 0; IFS0bits.AD1IF = 0; // Clear the A/D interrupt flag bit IEC0bits.AD1IE = 0; // Do Not Enable A/D interrupt AD1CON1bits.ADON = 1; //ADC modln aktif et } void DMA0_Ayarlarini_Yap(void) { DMA0CONbits.AMODE = 2; // Configure DMA for Peripheral indirect mode //== DMA0CONbits.MODE = 2; // Configure DMA for Continuous Ping-Pong mode DMA0PAD = 0x0300; // Point DMA to ADC1BUF0 DMA0CNT = 31; // 32 DMA request DMA0REQ = 13; // Select ADC1 as DMA Request source DMA0STA = __builtin_dmaoffset(&BufferA); DMA0STB = __builtin_dmaoffset(&BufferB);

60

//CHEN: Channel Enable bit //1 = Channel enabled //0 = Channel disabled DMA0CONbits.CHEN=1; // Enable DMA Channel } //Portlari_Ayarla---------------------------------------------------------------Portlari_Ayarla-----------------------void Portlari_Ayarla( ) { TRISA = 0; TRISB = 0; TRISC = 0; LATA = 0; LATB = 0; LATC = 0; //Input-Output Settings******************************************************* //Bizim kullandklarmz: AN1,4,5,6,7,8 _TRISA0 = 1; _TRISA1 = 1; _TRISB0 = 1; _TRISB1 = 1; _TRISB2 = 1; _TRISB3 = 1; _TRISC0 = 1; _TRISC1 = 1; _TRISC2 = 1; //pin41:RB5:RP5: UART_TX (output) //_LATB5 = 0; //output //RPn tied to UART1 Transmit RPOR0bits.RP0R0 = 0b1; RPOR0bits.RP0R1 = 0b1; RPOR0bits.RP0R2 = 0b0; RPOR0bits.RP0R3 = 0b0; RPOR0bits.RP0R4 = 0b0; } //Timer1_Ayarlarini_Yap---------------------------------------------------------------Timer1_Ayarlarini_Yap-----------------------void Timer1_Ayarlarini_Yap( ) { T1CONbits.TON = T1CONbits.TSIDL T1CONbits.TGATE T1CONbits.TCKPS T1CONbits.TSYNC T1CONbits.TCS = TMR1 = 0x00; 1; = 0; = 0; = 0b11; = 0; 0;

61

PR1 = TIMER1_PERIOD_R; // } //UART_Ayarlarini_Yap---------------------------------------------------------------UART_Ayarlarini_Yap-----------------------void UART_Ayarlarini_Yap( ) { U1MODEbits.UARTEN = 1; U1MODEbits.UEN = 0b00;//bu ayar sonradan ekledim U1MODEbits.ABAUD = 0; U1MODEbits.BRGH = 0; U1MODEbits.PDSEL = 0b00; //no parity U1MODEbits.STSEL = 0; //one stop bit U1STAbits.UTXISEL0 = 0b0; U1STAbits.UTXISEL1 = 0b0; U1STAbits.UTXEN = 1; //U1TXIF'i set eder U1BRG = ((40000000/38400)/16) - 1; //baud rate is 38400 } //Fonksiyonlar**************************************************************** **************************************************** void Calculate_New_Angular_Velocities() { GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_X] = 0.0; //== Sensrden okunan deerler GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_Y] = 0.0; //== GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_Z] = ADC1BUF0; //==ADC1BUF0 switch( GL_Switch__Velocity_Calculate_UI16 ) { case 0: { //Gyronun kendine gelmesini bekle if(GL_Operation_Time >= 2.0) { GL_Switch__Velocity_Calculate_UI16 = 1; } break; } case 1: { GL_ADC_Olcum_Milivolt_Accumulator[MEASUREMENT__GYRO_Z] += GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_Z]; //Eer sonuncu lmn akmlasyon ilemiyse GL_Accumulator_Counter_UI16++; if( GL_Accumulator_Counter_UI16 == ACCUMULATION_COUNT) { GL_Switch__Velocity_Calculate_UI16 = 2; }

62

break; } case 2: { GL_ADC_Olcum_Milivolt_Offset[MEASUREMENT__GYRO_Z] = GL_ADC_Olcum_Milivolt_Accumulator[MEASUREMENT__GYRO_Z]/ACCUMULATION_COUNT; GL_Switch__Velocity_Calculate_UI16 = 3; break; } case 3: { GL_W_alfa = (GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_X] GL_ADC_Olcum_Milivolt_Offset[MEASUREMENT__GYRO_X])*GYRO_X_CALIBRATION; GL_W_beta = (GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_Y] GL_ADC_Olcum_Milivolt_Offset[MEASUREMENT__GYRO_Y])*GYRO_Y_CALIBRATION; GL_W_gama = (GL_ADC_Olcum_UI16[MEASUREMENT__GYRO_Z] GL_ADC_Olcum_Milivolt_Offset[MEASUREMENT__GYRO_Z])*GYRO_Z_CALIBRATION; break; } default: { break; } }//end_switch } void Take_New_Angular_Velocities() { int Measurement_No = (int)(Simulation_Time/TO); Calculate_New_Angular_Velocities(); //GL_W_alfa = measurements_w_alfa[Measurement_No]; //== //GL_W_beta = measurements_w_beta[Measurement_No]; //== //GL_W_gama = measurements_w_gama[Measurement_No]; //== } void Calculate_Rotation_Matrix_Rzyx() { float Ca,Sa,Cb,Sb,Cg,Sg; Ca Sa Cb Sb Cg Sg = = = = = = cos(GL_R_alfa); sin(GL_R_alfa); cos(GL_R_beta); sin(GL_R_beta); cos(GL_R_gama); sin(GL_R_gama);

63

R_zyx[1][1] R_zyx[1][2] R_zyx[1][3] R_zyx[2][1] R_zyx[2][2] R_zyx[2][3] R_zyx[3][1] R_zyx[3][2] R_zyx[3][3] }

= = = = = = = = =

Cb*Cg; Cg*Sa*Sb-Ca*Sg; Ca*Cg*Sb+Sa*Sg; Cb*Sg; Ca*Cg+Sa*Sb*Sg; -Cg*Sa+Ca*Sb*Sg; -Sb; Cb*Sa; Ca*Cb;

void Calculate_Euler_Angles_From_Rotation_Matrix() { //Find Euler Angles from given Rotation Matrix //Given rotation marix is R //if cos(beta)!=0 //if((R[3][1] != 1) && (R[3][1] != -1)) if((R[3][1] <= 0.99) && (R[3][1] >= -0.99)) { //calculation of beta GL_beta_Estimation[1] = -asin(R[3][1]); GL_beta_Estimation[2] = pi - GL_beta_Estimation[1]; //calculation of alfa if(cos(GL_beta_Estimation[1]) > 0) { GL_alfa_Estimation[1] = atan2(R[3][2],R[3][3]); } else { GL_alfa_Estimation[1] = atan2(-R[3][2],-R[3][3]); } if(cos(GL_beta_Estimation[2]) > 0) { GL_alfa_Estimation[2] = atan2(R[3][2],R[3][3]); } else { GL_alfa_Estimation[2] = atan2(-R[3][2],-R[3][3]); } //calculation of gama if(cos(GL_beta_Estimation[1]) > 0) { GL_gama_Estimation[1] = atan2(R[2][1],R[1][1]); } else { GL_gama_Estimation[1] = atan2(-R[2][1],-R[1][1]); }

64

if(cos(GL_beta_Estimation[2]) > 0) { GL_gama_Estimation[2] = atan2(R[2][1],R[1][1]); } else { GL_gama_Estimation[2] = atan2(-R[2][1],-R[1][1]); } } //if cos(GL_beta_Estimation) = 0 else { GL_gama_Estimation[1] = 0; if (R[3][1] == -1) { GL_beta_Estimation[1] = pi / 2.0; GL_alfa_Estimation[1] = atan2(R[1][2],R[1][3]); } else //R(3,1) == 1 { GL_beta_Estimation[1] = -pi / 2.0; GL_alfa_Estimation[1] = atan2(-R[1][2],-R[1][3]); } GL_alfa_Estimation[2] = GL_alfa_Estimation[1]; GL_beta_Estimation[2] = GL_beta_Estimation[1]; GL_gama_Estimation[2] = GL_gama_Estimation[1]; }

} void Multiply_3_3_Matrix(float M1[][4], float M2[][4], float M_[][4]) { int i, j, k; for(i=1; i<4; i++)//next row of M1 { for(j=1; j<4; j++)//next column of M2 { M_[i][j] = 0; //Clear the ex content of matrix elemnt for(k=1; k<4; k++)//row_of_M1*column_of_M2 { M_[i][j] += M1[i][k] * M2[k][j]; } } } } void Copy_3_3_Matrix(float M1[4][4], float M2[4][4]) { int i,j;

65

for(i=1;i<4;i++) { for(j=1;j<4;j++) { M1[i][j] = M2[i][j]; } } } void Print_3_3_Matrix(float M[4][4]) { GL_UART_Ek_Veri_Size = sprintf( GL_UART_Ek_Veri, "\n%.2f %.2f %.2f\r\n",M[1][1],M[1][2],M[1][3]); UART_Veri_Depola_Ve_Yolla(); GL_UART_Ek_Veri_Size = sprintf( GL_UART_Ek_Veri, "%.2f %.2f %.2f\r\n",M[2][1],M[2][2],M[2][3]); UART_Veri_Depola_Ve_Yolla(); GL_UART_Ek_Veri_Size = sprintf( GL_UART_Ek_Veri, "%.2f %.2f %.2f\r\n\n",M[3][1],M[3][2],M[3][3]); UART_Veri_Depola_Ve_Yolla(); } void UART_Veri_Depola_Ve_Yolla( void ) { unsigned char Sayac = 0; //veri depola ve yolla //Yeni verilerin sonuna gelene kadar dng iinde kal //yeni verileri UART buffer'na kalnd yerden itibaren ekle while( GL_UART_Ek_Veri[Sayac] != '\0' ) { GL_UART_Buffer[GL_UART_Buffer_Finish] = GL_UART_Ek_Veri[Sayac]; Sayac++; //GL_UART_Buffer_Finish sayacn artr, tama olmamas iin sona gelindiinde baa dn GL_UART_Buffer_Finish++; if(GL_UART_Buffer_Finish == UART_BUFFER_SIZE) { GL_UART_Buffer_Finish = 0; } } _U1TXIE = 1; _U1TXIF = 1; }

66

//Kesmeler******************************************************************** **************************************************** void __attribute__((interrupt, no_auto_psv)) _ADC1Interrupt(void) { IFS0bits.AD1IF = 0; //Clear Timer1 interrupt Flag } //DMA0_kesmesi----------------------------------------------------DMA0_kesmesi //ADC1 ile tetiklenir void __attribute__((__interrupt__)) _DMA0Interrupt(void) {

IFS0bits.DMA0IF = 0; //Clear the DMA0 Interrupt Flag } //T1Interrupt----------------------------------------------------T1Interrupt //1kHz void __attribute__((interrupt, no_auto_psv)) _T1Interrupt(void) { static unsigned int SC_Sayac_50Hz_UI16 = 0; static unsigned int SC_Sayac_1Hz_UI16 = 0; PR1 = TIMER1_PERIOD_R; GL_Operation_Time = GL_Operation_Time + OPERATION_TIME_STEP; SC_Sayac_50Hz_UI16++; if(SC_Sayac_50Hz_UI16 == 20) { GL_Thraed_50Hz = 1; SC_Sayac_1Hz_UI16++; SC_Sayac_50Hz_UI16 = 0; } if(SC_Sayac_1Hz_UI16 ==50 ) { GL_Thraed_1Hz = 1; SC_Sayac_1Hz_UI16 = 0; } IFS0bits.T1IF = 0; //Clear Timer1 interrupt Flag } //U1TXInterrupt---------------------------------------------------U1TXInterrupt void __attribute__((__interrupt__, no_auto_psv)) _U1TXInterrupt(void) {

67

IFS0bits.U1TXIF = 0; // clear TX interrupt flag //Tampondan sradaki veriyi yolla if(GL_UART_Buffer_Start != GL_UART_Buffer_Finish) { U1TXREG = GL_UART_Buffer[GL_UART_Buffer_Start]; //Transmit one character //GL_UART_Buffer_Start sayacn artr, tama olmamas iin sona gelindiinde baa dn GL_UART_Buffer_Start++; if(GL_UART_Buffer_Start == UART_BUFFER_SIZE) { GL_UART_Buffer_Start = 0; } } else { _U1TXIE = 0; } }

68

ZGEM

Ad Soyad: Kadir Akn Doum Yeri ve Tarihi: Bursa 14.03.1983 Lisans niversite: stanbul Teknik niversitesi Kontrol Mhendislii Blm

69

You might also like