Forside ligger i andet dokument



Relaterede dokumenter
J. Christian Andersen DTU Electrical Engineering Automation and Control 326/008. DTU Electrical Engineering, Technical University of Denmark

Indhold. Figur 1: Blokdiagram over regulatorprincip

ELCANIC A/S. ENERGY METER Type ENG110. Version Inkl. PC program: ENG110. Version Betjeningsvejledning

Litium-ion batterimanual. Ebike Elcykler

DC-Motor Controller. Brugermanual

Elektroniske Kredsløb og Dynamiske Systemer

Figur 1.1: Blokdiagram over regulatorprincip

WEA-Base Brugervejledning til vejetransmitter

SPEED-Commander Frekvensomformer. Program nr. 1 Software version PI-regulering

Intelligent Solar Charge Controller Solar30 User s Manual

Alle dip 1 7 sættes til On for at opnå stand-alone operation fra PC.

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER

2/3 Akset digital tæller

KOMPONENT BESKRIVELSE

SPEED-Commander frekvensomformer. Program nr. 04 Software version 5.12c. Synkron Kontrol

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang

S26 MOTOR Original brugermanual

Impuls og kinetisk energi

ESKY LAMA Tillykke med din nye helikopter

Mean Well, LCM-serie installations vejledning.

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER GA 1000

Kronback tracers P4+

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

MJPower engineering Ecu Link.

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

Brugervejledning & instruktion MTW 12/1. Varenr MTW 12/2. Varenr MTW12/1101-1

MEN-001-B GARAGEPORTÅBNER MONTERINGSVEJLEDNING

Dansk El-montage manual Portautomatik

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Skråplan. Esben Bork Hansen Amanda Larssen Martin Sven Qvistgaard Christensen. 2. december 2008

Husk altid at have strøm på batteriet. Ved vinteropbevaring oplad batteriet en time hver 2. måned

ESKY LAMA 2. Tillykke med din nye helikopter. 1. Justering

Mean Well, LCM-serie installations vejledning.

RPM-K. Gældende fra: 25/5/2013

Opsætning af DEVO F12E Sender Quick Start Guide og Diagram.

Pædagogisk vejledning til. Materialesæt. Sphero.

Indholdsfortegnelse:

Bluetooth højttaler BABHCK811_1

1. Bluetooth Speakerphone

BRUGER VEJLEDNING DK 8MP wildview ir / KAMERA JK 020 / Åtelkamera 801/Albecom Justerbar 3 / 5 eller 8 mp.

AGV Kursus August 1999

DiSEqC-Positioner. Best. nr. HN4892 (Brugsanvisnings nr. 361)

BETJENINGSVEJLEDNING VERSION 19.1 DATO PR9V19.DA TAST FOR AT FÅ FORSKELLIGE UDLÆSNINGER I DISPLAY

KONSTANT REGN 6 BETJENINGSVEJLEDNING VERSION 18 DATO UDLÆSNING I DISPLAY. - Indtrækshastighed. - Total vandingstid

Hurtigbrugsanvisning til Dynomet 6.31 for Windows 7

Hurtigbrugsanvisning til Dynomet 6.66 for Windows 7-10

Dæmpet harmonisk oscillator

Installations tips & anbefalinger... side 3 M9000 Ledningsdiagram... side 4 CN 1... side 5 CN 2... side 7 CN 3... side 8 CN 4... side 9 CN 5...

Tilslutning- og programmeringseksempler

Undersøgelse teknologi og resurser: Eleverne skal lære om enkel produktudvikling fra ide til implementering.

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Bestemmelse af kroppens fysiske tilstand

Kasteparabler i din idræt øvelse 1

Svendeprøve Projekt Tyveri alarm

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning

SunFlux Varenr.: 03104

Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK AC Motor Controller 370W. Brugermanual

Humantechnik. BRUGERVEJLEDNING Lisa Vækkeur RF Time A-3240

Ohms lov. Formål. Princip. Apparatur. Brug af multimetre. Vi undersøger sammenhængen mellem spænding og strøm for en metaltråd.

OPBEVAR ALTID DENNE INSTRUK- TIONSMANUAL SAMMEN MED VÅBEN- ET, OG VIDEREGIV DEN SAMMEN MED VÅBENET, HVIS VÅBENET VIDERE- SÆLGES.

15. Digital kode vælger (hvid DIP switch) 16. Kanal vælger (gul DIP switch) 17. Batteri hus

Revision (sidste opdatering) Software Version 8:29

Kom godt i gang med Fable-robotten

Fable Kom godt i gang

Nervefysiologi - Excitable membraner

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

FØR BRUG Indstilling af tid. Indstilling af dato

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Maskinanlæg, opsætning af frekvensomformer

UniLock System 10. Manual til T550 Secure Radiomodtager og håndsender. Version 2.0 Revision

Installationsmanual Trådløs Bevægelsessensor

Digital positioner type RE 3446

Oversigts billedet: Statistik siden:

Instruktion. SEEDER+ unit. Revision (last update) Software Version 8:32. Indhold

Projekt. Analog Effektforstærker.

Tillykke, du er nu ejer af en Gloworm X2. Forbered dig på at opleve revolutionen inden for LED lys

Harmonisk oscillator. Thorbjørn Serritslev Nieslen Erik Warren Tindall

CANSAT & ARDUINO step by step

Sennheiser DW 800 Guide. 1 Installation & Tilslutning

Monteringsvejledning. Markise Elektrisk. MoreLand A/S Knullen 22 DK 5260 Odense S Denmark 11.1 Tel post@moreland.

Installationsmanual Trådløs Bevægelsessensor

A LED Santiago 16W HF sensor og Master / Slave

Brugermanual til System 2000

DAN TWINCA EASY. Brugervejledning

Patent nummer: J.nr. US JK7343I. Tlf

Knapper og kontroller: 1. DRONE 2. Fjernbetjening

Faldmaskine. , får vi da sammenhængen mellem registreringen af hullerne : t = 2 r 6 v

- Forøg værdien i SETUP tilstand og Alarm funktionen

Fjernbetjening Flex Teknisk manual

Indhold Problemstilling... 2 Solceller... 2 Lysets brydning... 3 Forsøg... 3 Påvirker vandet solcellernes ydelse?... 3 Gør det en forskel, hvor meget

Testsignaler til kontrol af en målekæde

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

Transkript:

Forside ligger i andet dokument 1

Side 2 ligger i andet dokument 2

Indholdsfortegnelse Resume / Abstrakt... 5 Indledning... 6 Baggrund... 7 Krav til system... 8 4 rotor helikopter teori... 9 Hardware... 10 Gyro... 10 Sender / Modtager... 11 Forsyning... 11 Microkoptor regulering:... 12 LQR regulator (Linear Quadratic Regulation)... 13 Teori... 13 Implementering... 14 Ground Test... 16 First flight... 17 Flight test... 20 Virkeligheden vs modellen.... 20 Sensor... 24 Teori... 24 Eget design... 25 Købt... 25 Implementering... 26 Test... 28 Design af højde regulator... 31 Måling af fysisk system... 31 Respons til impuls... 31 Trust målinger over jord i forskellige højder... 33 Design af regulator... 35 Første test af PD med ledning... 41 Første test af PD med batteri... 44 Første test af PID med ledning... 56 Autonom landing og letning... 60 Software... 61 Overordnet... 61 Højde regulator... 63 Autonom landing og letning... 65 Data indsamling... 66 Flight controller... 68 Kalibrering / Nulstilling... 70 Modtager decodning... 71 Driftskompensering... 71 Matrix udregningen... 72 Debugging... 73 Konklusion... 74 Referencer/ Litteratur... 75 3

Appendiks A Hardware diagram... 76 Appendiks B Nick Roll Yaw... 77 Appendiks C Ultralydsafstandsmåler... 78 Ide og teori... 78 Spredning... 78 Detektering af signal... 80 Design... 81 Indgangs trin... 81 Båndpas filtre... 82 Oscillator... 83 Ensretter... 84 Software... 84 Appendiks D Hvordan bruger man systemet?... 85 Appendiks E Microkopter regulator flowchart... 86 Bilag... 92 4

Resume / Abstrakt En 4 rotors helikopter har 4 inputs, som brugeren skal kontrollere: Thrust, Nick, Roll og Yaw. Når en landing skal fortages, skal brugeren tage højde for at når helikopteren kommer tættere på jorden, skabes der mere løft, som brugeren skal kompensere for. For derfor at lette brugerens arbejde, har helikopteren fået monteret sensorer, der muliggør autonom landing og autonom letning. Brugeren skal kun styre Nick, Roll og Yaw. Systemet vil selv styre mængden af thrust, der er nødvendig for at lette, svæve eller lande. Systemet virker ved, at sensorer måler den relative højde over landingsstedet, ved hjælp af en PID regulator reguleres thrusten, som helikopteren skal bruge for at holde sig flyvende i en bestemt højde. Ved ønske fra brugerens side, kan systemet fortage en kontrolleret landing eller letning. Abstract A 4 rotor helicopter has 4 inputs to be controlled by the user: Thrust, Nick, Roll and Yaw. Before a landing, the user has to be aware that the helicopter will create more lift, when close to the ground, which he will have to compensate for. To ease the pilot s workload, the helicopter has some sensors, which make autonomous landing and take-off possible. Just Nick, Roll and Yaw have to be controlled by the user. The system itself will regulate the amount of thrust, which is necessary for performing take-off, floating or landing. This is possible as sensors are measuring the relative height above ground, while a PID regulator adjusts the Thrust, which is used by the helicopter to be able to fly in a certain height. If wanted, the system is able to perform a controlled landing or take-off. 5

Indledning Da jeg selv flyver med fjernstyret helikopter, ved jeg hvor svært det er at lære, og hvor lidt der skal til for at helikopteren styrter eller på anden måde kommer galt af sted. Ideen til dette projekt kom efter samtale med et andet master projekt, som omhandlede horisontal drift kompensering og stabilisering af 4 rotors helikopter. Det var derfor en lille personlig vision at lave noget, som muliggjorde at hvem som helst kunne hurtigt lære at flyve samt manøvrere en helikopter. Systemet skulle derfor være stabilt og være tolerant over for brugerens inputs. Et system til at fastholde højden, samt lande og lette, ville aflaste brugeren til kun at kontrollere Nick, Roll og Yaw. Brugeren ville ikke skulle bekymre sig om Thrust, kun den ønskede højde, brugeren ønsker at flyve i. Systemet skal primært bruges til indendørs flyvning og ikke højere end 2 meter, da højden til loftet i de fleste rum ikke er meget mere end 3 meter. Selve ideen er en af grundstenene til at fuldautomatisere en 4 rotors helikopter, som andre studerende kan bygge videre på samt arbejde på at forbedre. Dette kunne være at montere et kamera til at søge efter en streg på gulvet, som helikopteren så kunne følge eller bruge et kamera til finde et markeret kryds og derefter fortage en landing på krydset. Kun fantasi og vægt sætter grænsen for mulighederne. Der skal her rettes en tak til Bertil Morelli for lån af værksted, uden denne mulighed ville det have været meget svært at lave de praktiske ændringer på helikopteren. 6

Baggrund Et tidligere master projekt lavede en LQR regulator til en helikopter i matlab, og efterfølgende implementerede den i en selvbygget helikopter. Figure 1: Original helikopter Denne helikopter fløj fortrinlig godt, og kunne flyves af hvem som helst på under 5 minutters oplæring. Desværre var denne helikopter ikke dokumenteret eller dokumentation ikke tilgængelig, dog fandtes matlab model samt SW kildekode. Men hvis kildekoden blev kompileret og lagt i helikopteren, kunne den ikke flyve. Der var altså et hul mellem kildekode og virkelig helikopter. Denne helikopter vil blive nævnt som helikopter original version 1. I sommeren 2008 besluttede én af de 2 personer bag den originale helikopter version 1, at der skulle laves en videre udvikling på den, der skulle laves nogle forbedringer, der skulle være AC motorer i stedet for DC motorer og den skulle have rettet andre fejl. Denne helikopter vil blive nævnt som helikopter original version 2 Samtidig starter et projekt, som skal kompensere for den drift, den originale version 1 helikopter havde, dette skulle opnås med et lodret monteret kamera, lidt ligesom en optisk mus virker. Da de ikke kunne bruge den originale helikopter, fordi dens kildekode ikke var komplet og de ikke kunne bruge helikopter original version 2, da den ikke virkede på 7

det tidspunkt, besluttede de at købe en færdig udgave fra et tysk open source projekt ved navn www.microkoptor.de, denne helikopter vil blive nævnt som microkoptor version 1. Denne helikopter baserede sig på en PD regulator med input fra gyro og accelerometer. September 2008 starter et projekt, som skal lave en ny kontrol matrice til helikopter original version 2 modellen, samt få den til at flyve. De fysiske parametre minder meget om microkoptor version 1, der bliver også brugt de samme rotorblade og motorer + motorkontroller. Denne helikopter har arvet det bedste fra begge. Den bygger på microkoptor version 1, men har fået en større ombygning. Krav til system Til helikoptersystemet stilles følgende krav: Systemet skal kunne fortage en autonom landing og letning uden at skade helikopteren. Dette skal foretages med rimelig hastighed og ske kontrolleret. Systemet skal endvidere kunne holde helikopteren i en specificeret højde. Helikopteren skal kunne flyve stabilt i luften samt være selvoprettende og altid søge til vandret flyveposition. Det vil senere under konklusion blive valideret, om disse krav er opfyldt. 8

4 rotor helikopter teori Figure 2: 4 rotor helikopter set fra oven 4 roter helikoptere er ikke nogen ny ide, den stammer fra 1920, men uden moderne computer regnekraft var det nogle meget svære helikoptere at flyve. I modsætning til andre helikoptere har 4 rotor helikoptere fast pitch på rotorerne. Rotorerne er fast monteret på motoren, derfor er der næsten ingen mekanik i en 4 rotor helikopter, hvor en normal helikopter har et større mekanisk behov for at kunne flyve. Samtidig bliver al energi brugt på løft at helikopteren, hvor en normal 1 rotor helikopter bruger energi på halerotoren for ikke at spinde om sig selv. Princippet som vist på Figure 2, 2 rotorer drejer mod uret og 2 med uret rundt. Hvis alle motorer øger hastigheden lige meget, vil der skabes lige meget thrust (forudsat at rotor og motor er ens på alle 4) og helikopteren vil stige vertikalt til vejrs. Figure 3: 4 rotor helikopter set fra siden For at få helikopteren til at flyve i en bestemt retning, ændres thrust vektoren, se Figure 3. Hvis eks. motor 3 og motor 4 øges i kraft, vil helikopteren vippes og flyve i pilens retning. 9

For at holde Yaw konstant, skal momentet fra alle rotorer være lige stort. For at dreje helikopteren om Yaw, sænkes motorkræfterne til 1 og 3, det vil forårsage at momentet ikke længere er lige stort og ikke i balance, hvilket vil gøre at helikopteren drejer. Hardware Selve helikopteren er købt som byggesæt fra www.mikrokopter.de uden sender, ligesom normale modelfly. Med i pakken var 4 motorer (Robbe ROXXY BL-Outrunner 2824-34 ) + 4 motorcontrollere, rotorer, et mikroprocessor board, en ramme, nogle ledninger og en modtager. På mikroprocessor boardet sidder 3 ENC-03J gyroskoper fra Murata, samt et 3 axis LIS344AL accelerometer fra ST. Gyro Gyroerne fra Microcopter er meget dårlige, driver meget og giver meget lille signal output. Derfor ændres de i første omgang til ADRX150 fra Analog Devices, de er analoge og skal derfor have en AD konverter. Mikroprocessorens interne AD konverter har ikke mere end 10bit og laver en del støj, derfor skiftes de 3 single gyroer til et samlet gyro modul ADIS16354. Modulet har 3 gyroer, som kan konfigureres forskelligt med forskellige følsomheder og filtre, samtidig har det intern 14bit ADC på hver gyro og 3 axis accelerometer. Dog det, der gør det speciel godt, er at alt er kalibreret fra fabrikken og er temperaturkompenseret. Alt i alt meget bedre end de andre. Interfacet er SPI og kan køre med 2 Mbit som maksimal hastighed. De 3 interne gyroer konfigureres til at være 150 o / sec og have 8 filterstave, sample tiden sættes til 1.83105ms. For få vinkelen, integreres vinkelhastigheden op; - for på en simpel måde at teste om resultatet passer, blev helikopteren placeret på en kontorstol, hvorefter en rotation på 360 o også skulle fremkomme af den integrerede vinkelhastighed. En anden metode ville være at bruge et turntable, en roterende plade hvor rotationshastigheden er kendt, men den mere simple metode var hurtig og krævede intet turntable. Indstillingerne i gyromodulet gemmes i dens interne flash, derfor er en konfiguration ikke nødvendig ved power on. Accelerometer værdierne bliver ikke brugt i regulatoren, men da de er tilgængelige, hentes de ud, og kan evt. bruges til billedstabilisering eller udregning af jordens gravitions vector og dermed hældningen af helikopteren. 10

Sender / Modtager Til at styre helikopteren bruges en Futaba FC9 professionel sender til model fly, den har 8 kanaler, som kan konfigureres individuelt til forskellige udslag og evt. mixe en kanal med en anden. Dette bruges til normale model fly og normal model helikopteren, hvor eksempelvis krængeror og haleror forbindes sammen eller motorhastighed blandes med collective pitch, dog ikke brugt her. Senderen er af beyond range klassen, hvilket betyder, at senderen rækker længere end man har visuel kontakt med modelflyet / helikopteren. Modtageren er en ACT DSL-4Top 35Mhz, en lille kompakt PPM modtager. Den har 4 servo udgange, men kan også levere et sumsignal. Senderen sender 8 kanaler multiplexet sammen i et signal, hvor en normal modtager decoder disse enkelte signaler og sender dem til de respektive servos. Sumsignalet er det multiplexede signal, ved at bruge capture compare timeren i mikroprocessoren, decodes signalet ud til de 8 kanaler, som senderen transmitterede. En anden fordel ved at bruge sumsignalet, er at der kun bruges et port bit til at få alle signaler ind. På helikopteren er monteret et F2M03GX Free2move Bluetooth modul, dette er konfigureret til at være et serielt link, modulet holder sammen med en PC selv styr på flow kontrol samt retransmission. I dette projekt er dette serielle link kun brugt til at modtage informationer fra helikopteren under flyvning. Producenten skiver, at det har en rækkevidde på 100meter, dette er dog ikke efter prøvet. Forsyning Helikopteren flyver på 3 celles litium polymer (LiPo) batterier, men under udvikling er en reguleret strømforsyning på 11V 20A brugt for at få mere flyvetid. Til fri flyvning er brugt et 2Ah batteri fra Graupner, som vejer 156g, dette giver ca. 10 minutters effektiv flyvetid. For at lade LiPo batterierne, er en Graupner Ultramat 10 multilader sammen med en Robbe 8446 LiPo balancer brugt. LiPo batteri celler tåler ikke at bliver ladet over 4,2V eller komme under 2,5V. For at sikre, at en celle i en 3 cellet pakke ikke overstiger 4,2V bruges balanceren, som tilsluttes mellem laderen og batteri pakken, på batteri pakken er der et stik med ledninger fra hver celle, så balanceren sørger for, at hver celle bliver ladet lige meget. Bruges ikke en balancer, risikeres at én af cellerne at blive overladet, hvilket ødelægger cellen, i værste tilfælde eksploderer cellen. 11

Microkoptor regulering: Microcoptor helikoptere har deres aksler anbragt således, at front er en motor og hver side er en motor, dette gør at de kan simplificere deres outputs. Deres flyveregulator baserer sig på en PID regulator, men de har en række forskellige inputs, de bruger gyroer til at bestemme hældningen og rotationshastigenheden. Da deres gyroer meget dårlige, driver meget samt giver lille udslag, er deres regulatorer startet med at være simple, men der er bygget flere og mere forskellige ad-hoc løsninger i systemet. For at kompensere for drift og for at kompensere for at outputtet fra gyroerne er meget små, ændres offset spændingen til gyroerne hele tiden. Et flowchart af en del af regulatoren kan ses i appendiks, der findes ikke noget officielt flowchart af hele systemet. Deres helikopter virker så længe at piloten hele tiden kompenserer for fejl, - hvis piloten giver slip på styrepinden, vil helikopteren styrte ukontrolleret ned til jorden. Derfor anbefaler de også, at man skal øve og øve i en simulator, inden man forsøger sig i virkeligheden. Et landings system til denne helikopter vil være svært at lave, da helikopteren selv med en dygtig pilot svinger +/- 2m i alle retninger. Et landings system ville skulle være stabilt og det skulle kunne være selvoprettende, forstået på den måde, at hvis brugen giver 0 ændring (styrepinden er i midten), skal helikopteren stå stille i luften. Deres flyveregulator dur ikke til dette formål og udskiftes med en bedre. 12

LQR regulator (Linear Quadratic Regulation) Teori Det er muligt at stille en overføringsfunktion op for et dynamisk system, som fortæller hvordan input omsættes til output, men den fortæller ikke noget om hvad der sker internt i systemet. Når kontrollerne skal justeres, er det ofte et kompromis mellem oversving, steady state fejl og stige tider. Dette kan til tider være svært og bliver ikke nemmere hvis der er flere inputs og flere outputs. Men hvis der kendes en model for systemet, er det muligt at lave en bedst mulig regulator til modellen. Til at opbygge modellen bygges en tilstandsmodel af systemet. Hvor: A matricen er system matricen B matricen er input C matricen er output Figure 4: Tilstands model Jo større forstærkning man har i systemet, jo hurtigere reagerer systemet på sensorernes output, men er derfor også mere følsomt overfor input på sensorerne. Ved at have en model af input på sensorerne og en tilstandsmodel af systemet, afbalanceres vægten af input i systemet, op imod hastigheden af reguleringen. Dette beskrives som en ligning man så forsøger at minimere og får derved den mest optimale regulering ud fra de vægtninger, man har givet på forhånd. Den dynamiske LQR måler så hele tiden på støjbilledet og udregner konstant en ny regulator, hvis støjen ændrer sig, så i stedet for at definere en fast PID regulator finder LQR systemet selv den optimale PID ud fra nogle vægtninger. 13

Figure 5: Regulator matrice sat uden på tilstandsmodel Disse vægtninger er motor gain, vinkel gain og vinkel hastighed gain. Ved derfor at tune dem, kan systemet blive stabilt. Implementering Regulatoren får vinkel og vinkelhastighed ind i en matrix, og ud kommer motor hastighederne, i forhold til hinanden. De ganges så sammen med den totale gain af regulatoren og trækkes fra det ønskede thrust. Det totale gain sættes til 1 til at starte med, og senere justering vil vise, om det skal gøres mindre eller større. For at påvirke helikopteren sådan, at den vil flyve i en bestemt retning, lægges der støj i form af signal fra brugerens styre pind. Piloten har 3 retninger, Nick (Y retning), Roll (X retning), Yaw (Z retning), som kan påvirkes se Figure 6: LQR flowchart. Mængden af vinkelhastighed og vinkel kan også justeres i form af et gain, til at starte med sættes disse til 1. Indbyrdes kan støjsignalerne skaleres i faktor, dette vil senere test afgøre. 14

Figure 6: LQR flowchart 15

Regulatoren skal køre med fast interval, ellers vil den ikke fungere optimalt, reguleringen vil blive ujævn. Mere om det under software. For at kunne nulstille regulatoren, reset variabler samt starte og stoppe helikopteren, bruges én af de 4 ekstra kanaler på senderen. En kanal med 3 forskellige positioner bruges til dette, én er kalibrering, én er motor stoppet og én er motor start. For at justere vinkel hastighed, gain, vinkel gain og motor gain, bruges de sidste 3 kanaler. På senderen forefindes 3 dreje knapper, som bliver skaleret i området 0-5, til at kunne justere gain, mens helikopteren flyver. Ground Test Da regulatoren vil forsøge at holde sig vandret, er den første test til at afgøre, om der reageres korrekt på forskellige ændringer. Vippes helikopteren til den ene side, skal rotorerne i den side køre lidt hurtigere for at give mere thrust for at få helikopteren tilbage til sin udgangs position. Og vise versa. Til at begynde med sættes alle stik inputs til 0 for ikke at justere på alt for mange parametre ad gangen. For at finde nogle parametre til motor gain, anglespeed gain og angle gain, blev helikopteren holdt i hånden, mens rotorerne drejede langsomt rundt. Motor gainet var alt for højt og regulatoren oscillerede, hvilket hurtigt blev klart, gainet blev dæmpet til 0,6 for at stoppe oscilleringerne helt. Vinkel hastighed gain og vinkel gain så ud til at virke fint med en værdi på 1. Når alt virker hensigtsmæssigt, kontrolleres det, at input fra styre pindene Nick, Roll og Yaw giver den ønskede effekt. Trykkes styre pinden til venstre, skal helikopteren også vippe til venstre (forudset at det er set bag fra). Dette var dog ikke tilfældet i starten, fordi de 4 motorer var alle vendt forkert, de kørte den forkerte vej rundt. Regulatoren regulerede fint og havde et respons, som passede med input. Dog så stick inputs Nick og Roll ud til og være forbyttet og Yaw var omvendt. Efter længere tid blev problemerne dog løst og fejlene rettet. For at finde parametrene til at skalere stick inputtene, blev der kigget i noget af den første helikopters source kode for at få et indtryk af, hvilken størrelse de kunne ligge i. Senere vil der blive indført ændringer, men til at begynde med bliver Vinkel hastighed ratio, Vinkel hastighed vs Vinkel ratio og Vinkel integrale ratio sat til 0,22. Stick gain bliver sat til 1. 16

First flight For ikke at skade helikopteren og forhindre den i at lave alt for mange ukontrollerede bevægelser, blev der monteret en snor i bunden, som gik ned til gulvet gennem en krog og hen til piloten. Ved at holde fast i snoren, enten ved at holde den med hånden eller træde på den med foden, kunne helikopteren fastholdes lige over jorden, mens at regulator parametrene blev justerede. Denne teknik var primitiv, men sikrede at helikopteren ikke vippede om på siden og blev beskadiget. Da helikopteren blev mere stabil, fik den også lov til at flyve lidt højere, se Figure 7. Figure 7: en snor muliggør hurtig redning at ustabil helikopter Første observation var, at helikopteren ikke reagerede meget på stick inputs, samt at den var noget ustabil. Angle gain blev forøget mens at motor gain blev sænket på grund af begyndende oscilleringer. 17

Vinkel gain er et udtryk for, hvor meget helikopteren skal reagere vinkel ændringer. Det kan anskues lidt om en art badebold effekt, se Figure 8. Figure 8: Badebold effekt Altså ændringer som om at helikopteren er på en stor badebold og vipper fra den ene side til den anden. Højere gain og helikopteren reagerer kraftigere på ændringer, dette er typisk drift og påvirkninger fra omgivelserne i form at konstant vind. Vinkel hastighed gain er et udtryk for, hvor meget helikopteren skal reagere på vinkel hastighed, dette kommer af turbulenser, som dannes rundt om helikopteren samt hurtige påvirkninger eks. vindstød og rystelser. For meget vil give oscillerende tendens omkring Yaw, se Figure 9 Figure 9: Vinkel hastigheds effekt For lidt giver en ikke-helikopter, som ikke flyver, den falder ud til den ene side fordi der ikke reageres på vinkel ændringen i den retning. Da regulatoren er en multiinput/multioutput regulator, vil ændring i en parameter have indflydelse på de andre parametre også, så hver gang en parameter ændres, skal de andre også ændres lidt. En forøgelse af vinkel gain medfører, at motor gain skal formindskes, og vise versa. Ved at prøve og ud fra observationer af handling, justeres de forskellige parametre ind, til en nogenlunde flyvende helikopter er fundet. En langsommelig proces, men lærerig. Ved de første flyvninger viste det sig, at en lille ændring på fjernbetjeningen resulterede i en stor ændring på helikopteren, hvilket ikke ville være tilfredsstillende til en evt. nybegynder. En nybegynder pilot ville hive meget i styrepinden, som derefter ville forårsage, at helikopteren forulykkede. For at mindske udslaget, blev stick gainet for Nick, Roll og Yaw nedsat til 0,3. 18

Derefter skulle der store udslag på fjernbetjeningen til at flytte helikopteren. Desværre var helikopteren stadig for følsom, og i en paniksituation, hvor eks. et objekt var i vejen, ville en normal bruger instinktivt rive modsat i styrepinden, hvilket ville resultere i at helikopteren reagerer kraftigt, men brugeren ville så bevæge styrepinden modsat for at korrigere. Dette vil resultere i, at brugeren har mistet kontrollen over helikopteren. For at modvirke dette, blev vinkel speed ratio sat ned til 0,64 i Nick og Roll retning, det samme blev gjort for vinkel integral ratio. Yaw forblev uændret på 1, men stick gainet blev sat op til 4 for at helikopteren drejede hurtigere rundt om sig selv. 19

Flight test Alle tidlige tests er fortaget med en fast strømforsyning og en ledning til helikopteren, mest fordi at dette gav mere flyvetid, men også fordi bluetooth modulet krævede strøm hele tiden for at fungere. Samt når en bluetooth forbindelse var lavet med PCen, måtte den ikke afbrydes uden at PCen afbrød den; hvis ikke dette skete i den korrekte rækkefølge, var Windows PCen meget lidt samarbejdsvillig før en genstart. Efter at have opnået en flyvende helikopter, kriblede det lidt med at se, hvad den kunne med et batteri og rigeligt med plads. Det første oplagte sted til at teste den, var en sportshal, dog var halbestyreren ikke meget positiv over for ideen, så et andet sted måtte findes. Heldigvis har DTU mange bygninger og forhallen til bygning 116 viste sig at være passende, 50 meter lang, 5 meter bred og 8-9 meter høj. Første forventning til helikopteren var, at den ville være mere responsiv uden en snor og at den ville skulle have lidt mere gain på vinkel gain. Denne forventning viste sig at holde stik, ændringen var dog meget lille, men alt tæller. Vinkel gain blev fundet til 1,439, vinkel hastighed gain 0,873 og motor gain blev fundet til 0,349. Nu var helikopteren klar til montering af højdesensor. Virkeligheden vs modellen. For at bevise, at helikopteren opfører sig som modellen og er stabil, påvirkes helikopteren i luften med et kraftigt vindpust. Dette virker som et step input, men der er ingen fysisk kontakt til helikopteren, under testen må brugeren ikke berøre styre sticks ne, da dette vil påvirke regulatoren. Alle data bliver logget, ved at plotte dem vælges et top punkt ud fra hvor helikopteren svinger mest. Data fra det punkt lægges ind i modellen som start betingelser, modellen har også vinkel gain, vinkel hastigheds gain og motor gain lagt ind. Sample nummer 36 bliver valgt som start punkt, og indsat i modellen, se Figure 10. 20

Radian / sekund 1,5 1 0,5 0-0,5-1 Vinkelhastighed ved step påvirkning Roll Nick Yaw v 0 10 20 30 40 50 60 70 80-1,5 Sampel nummer ( rate = 127ms ) Figure 10: Step påvirkning 21

Figure 11: Simulering og målte data 22

Ved at holde modellen op imod hvad den virkelige helikopter gjorde, kan det ses om de opfører sig ens. Hvis de er helt ens, er modellen og helikopteren helt ens, dog vil der altid være ting, som ikke er modelleret. Det ses på Figure 11, at simulation og den virkelige helikopter følges godt af, efter 1,5 sek. er simulationen stabil set på Nick og Roll, dog er helikopteren det ikke, den svinger lidt med en frekvens på omkring 2Hz. Selve step påvirkningen er dæmpet, men oscillationerne kan ikke dæmpes, de menes at stamme fra motorkontrollerne og rotorbladene. Rotorbladene er modelleret som stive, hvilket de ikke er.. Yaw reagerer langsommere end modellen, udsvinget er også 10 gange mindre end Roll, ved step response testen, helikopteren yder dog en tilfredsstillende ydelse og derfor har der ikke været gjort mere i at få model og virkelighed til at ligne. Simulations målingerne ser meget finere ud, dette skyldes at matlab simulerer med 10ms opløsning, mens helikopteren dumper data med 127ms opløsning, så den kommer til at se lidt hakket ud. 23

Sensor Teori For at bestemme højden af noget flyvende, kan forskellige teknologier bruges, lufttryk er den mest oplagte, da den ikke har nogen højde begrænsning, som andre teknologier har. De fysiske love beskriver, hvordan lufttryk falder alt efter den højde man befinder sig over jordens overflade. En lufttryksmåler til at lande efter medfører dog nogle problemer. Et problem er at landingen skal fortages i samme højde som starten blev fortaget i for det er i den højde, offsettet er lavet. Man skal også måle trykket meget præcist og de bedre højde målesystemer, der er fundet på nettet, har en højde difference på en 30-40cm, hvilket betyder at helikopteren vil kunne ramme jorden hårdt. Et andet problem er, at jo tættere på jorden man kommer, jo mere stiger trykket på grund af luftstrømmen fra rotorerne, de kunne dog modelleres, men hvis der lettes og landes i et rum med f.eks. en mur tæt på, ville dette forårsage en anden luftstrøm, hvilket vil give et andet tryk ved forskellige højder. Derfor vil en højdesensor til landingssystemet baseret på lufttryk ikke egne sig godt, dog vil den være god til at holde højden, når helikopteren er i luften. Ultralyd eller ekko afstandsbedømmelse er en anden kendt metode, send en burst ud og mål tiden til den reflekteres og når tilbage, ved at kende udbredelseshastigheden, kan afstanden udregnes. Ultralyd har dog den ulempe, at det kræver at der kommer tilstrækkelig lyd tilbage til at den kan detekteres samt at refleksions fladen er flad. Lyd udbredes som en kegle, derfor vil der på større afstande være mindre lyd at opfange. Mellem hver afstandsmåling skal man sikre sig, at evt. lyd fra refleksioner er døet ud for ikke at forstyrre næste måling. Da lydens udbredelseshastighed afhænger af luftens temperatur, er det også nødvendigt at kende temperaturen. IR og fase detektering er også en metode, samme princip som lyd, her sendes en lysstråle ud og afstandsdetekteringen forgår ved at måle faseforskydningen af lysstrålen. Ved at kende faseforskydningen mellem det afsendte og det modtagne signal, kan afstanden udregnes ud fra kendskab til lysets hastighed og bølgelængde. Ulempen ved lys er, at det er punktafstandsmåling, så hvis man flyver over en lille forhøjning, vil det give en falsk måling af den egentlige højde. Fælles for både ultralyd og IR er, at en relativ højde kan bestemmes, men det kan ikke verificeres om landingsområdet er egnet til at lande på. Hvis der evt. skulle landes på et bord, kunne noget af landingsstellet rage uden for bordet og helikopteren ville derefter styrte til jorden. Det antages derfor, at der landes og lettes fra et stabilt gulv. 24

Eget design For at få det bedste ud af de 2 teknologier, ville en ultralydsafstandsmåler og en IR sensor tilsammen bringe en stabil indikation af den relative højde. IR god til bløde (tæpper) overflader, men fejler ved blanke overflader, mens ultralyd var god til blanke overflader, men havde problemer med bløde overflader (dæmper lyd). Samtidig kunne en ultralydsafstandsmåler række længere end en IR, - IR havde forskellige rækkevidder, men ultralyd havde kun en. Så for at dække behovet, skulle flere IR afstandsmålere bruges for at dække samme rækkevidde. Da færdigdesignede ultralydsmålere ikke havde en præcision bedre end +/-2.56cm som var inden for en størrelse, som var mulig at bruge til at flyvning, (her tænkes på vægt), blev en ultralydsafstandsmåler designet af mig, mere om det i appendiks. Den blev senere fravalgt, da det viste sig, at der var en række uhensigtsmæssigheder ved ultralyd. Da ultralyd bliver lavet af en lille højttaler, som er mekanisk og kan blive forstyrret af vibrationer, giver det støj og fejl målinger. Det viser sig også, at mængden af elektronik vejer meget, samt at der skal skærmes godt mod senderens forstyrrelser, er dette med til at fravælge den løsning. Færdigkøbte ultralydsafstandsmålere kan dog godt bruges til at holde en flyvehøjde, men til at lande efter, er de ikke ideelle. Købt Der findes mange forskellige afstandsmålere, de mere præcise er dog også større og dermed også tungere. Sharp er et af de førende firmaer inden for små IR afstands sensorer. Der skal dog 2 til for at dække kravet, derfor blev en 10-80cm og en 30-240cm afstands sensor købt. Begge har en analog spænding som output som er proportional med afstanden. 25

Implementering For ikke at flytte batteriet fra helikopterens center, monteres de 2 højde sensorer uden for center mod bagenden af helikopteren. De forsynes med 5V fra hovedprintet, og har påmonteret nogle forsynings kondensatorer for at mindske støj. Den kortrækkende afstandssensors output går ind i mikroprocessorens analoge indgang, som har en opløsning på 10bit. Den langtrækkende afstandssensor går ind på en 12bit AD indgang, som sidder på gyro modulet, fordi at det har det største højdespring pr. bit. En anden løsning kunne have været at montere en 16bit AD, men dette ville medføre ekstra vægt og komponenter, så denne løsning vælges ikke. Ved at se på om den kortrækkende sensor er under 0,4meter, afgøres det om den aktuelle højde skal baseres på en kortrækkende eller langtrækkende sensor. Den langtrækkende sensor er ikke pålidelig under 0,3meter, derfor 2 sensorer. For at finde omregningsformlerne for de 2 sensorer, blev bit måleværdier målt på kendte afstande, hvor efter tendens kurven blev lagt ind over. Resultatet ses i Figure 12 for en kortrækkende IR sensor. meter*100000 450000 400000 350000 300000 250000 200000 150000 100000 50000 0 y = -0,0013x 3 + 3,0845x 2-2680,7x + 948705 kortrækkende IR Poly. (kortrækkende IR) 0 500 1000 1500 Bit måle værdi Figure 12: Omregnings formel for kortrækkende sensor 26

Afstanden er gjort 100.000 gange større for at mindske polynomiums størrelse, meget små værdier så som 10-5 kan ikke regnes præcist i C uden at tage forholdsregler. Derfor er afstanden større og bagefter divideres resultatet således at det vises som meter. 3 2,5 2 Meter 1,5 1 0,5 0 Langt rækkende IR Potens (Langt rækkende IR) y = 1584,4x -1,0141 0 1000 2000 3000 4000 5000 Bit værdi Figure 13: Omregningsformel for langtrækkende sensor Den langtrækkende sensor har en god præcision fra 40cm til 1,2meter, derefter ligger måleværdierne for forskellige afstande tættere. Her er ekspotentialfunktionen den funktion, som passede bedst til at dække kurven. Den er ikke modificeret i højde, hvilket forenkler omregningen meget. Måleværdier kan ses som tabel under Bilag. 27

Test For at verificere, at højden registreres korrekt, holdes helikopteren i forskellige højder, hvorefter højden måles fysisk og sammenlignes med sensorens højde registrering. Derefter plottes fejlen for forskellige højder. Fejl i cm 10 8 6 4 2 0-2 -4-6 Fejl på højdesensor 5 25 45 65 85 105 125 Højde i cm Figure 14: Fejlvisning på højdesensorer Det ses på Figure 14, at fejlen stiger i takt med højden, og der er et spring i fejl ved 40cm, dette er fordi at her sker springet mellem de 2 sensorer. Fejlen er heller ikke væsentlig, bare output er det samme fra måling til måling. Højdepræcisionen er mest kritisk ved højder under 40cm, det er her at helikopteren skal lande, og her får ground effekten indflydelse. For at se, hvor meget støj på højdemålingen der var, monteredes helikopteren i en fast højde (35cm og 75cm) se Figure 15 og Figure 16, hvorefter en række målinger blev lavet, hvorfra man kan se differencen. 28

Højde i mm 350 340 330 320 310 300 290 280 270 260 250 0 100 200 300 400 500 600 700 Samples Figure 15: Støj på kortrækkende sensor ved 35cm Højde i mm 770 760 750 740 730 720 710 700 690 680 670 660 0 100 200 300 400 500 600 700 Samples Figure 16: Støj på langtrækkende sensor ved 75cm Som det ses, er de 2 sensorer forskellige i støj, den langtrækkende er fordelt pænt omkring et middel, og den kortrækkende sensor er meget spredt. Dette kan have noget at gøre med at den konverteres i den interne AD i mikroprocessoren, samt at afstand pr. bit er høj i 25cm og op efter. For at efter vise dette, laves et lignende forsøg, hvor afstanden er 13cm, se Figure 17. 29

Højde i mm 134 133 132 131 130 129 128 127 126 0 100 200 300 400 500 600 700 Sample Figure 17: Støj på kortrækkende sensor 13cm Det ses, at støjen er meget mindre, og det skyldes, at der er flere bit pr. afstand på så kort afstand. Det er også i dette område, at det er mest vigtigt at kende højden, da groundeffekten samt turbulenser har stor indflydelse. Et filter i form af midling af målinger ville gøre målingerne mindre støjfyldte, men test i virkeligheden vil vise, om der er behov for dette. Hvis det viser sig, at der er behov for det, kan det implementeres eller en bedre AD konverter kan påmonteres. 30

Design af højde regulator Måling af fysisk system Respons til impuls For at få en ide om, hvor hurtigt systemet reagerer på trust ændringer, blev der givet en kendt øgning af motortrust, når helikopteren var i luften. Samtidig med blev den relative højde logget, derved er det muligt at se responset ved en kendt ændring, og derved fortælles noget om systemets dynamik. 2500 gas boost højde 2000 højde i mm 1500 1000 500 0 650 660 670 680 690 700 710 720 sample nummer Figure 18 : Højdemåling 1 (127ms sample tid) 31

2500 gas boost højde 2000 højde i mm 1500 1000 500 0 530 540 550 560 570 580 590 600 sample nummer Figure 19 : Højdemåling 2 (127ms sample tid) Det ses på Figure 18 og Figure 19, at kurverne ligner en parabel, og det passer med en konstant acceleration af systemet. Der er nogen fejlmålinger imellem, dette skyldes at forsyningsledningen har hængt ind over sensoren. Steppet, som tilføres, er på 15 digital thrust enheder (den digitale værdi, som skrives til motorkontrollerne for at få motorerne til at køre hurtigere), som tilføres til den thrust, som kommer fra fjernkontrolleren. For ikke at ramme loftet, stoppes steppet hurtigt efter udførelse. Begge tests er udført med 127ms sample rate, og thrust forøgelsen stod på i 1,27 sekunder. 32

Trust målinger over jord i forskellige højder For at få et indtryk af, hvordan helikopteren arbejder i de forskellige højder over jorden, testes den ydede trust ved forskellige inputs. Dette er gjort ved at placere helikopteren på en vægt, med en ekstra masse sådan at den ikke forlader vægten, hvorefter alle motorer blev sat til samme hastighed; den trust hvormed helikopteren så løftede sig, ville fremkomme på vægten i gram. Ved at gentage testen i forskellige højder over jorden, kan ground effekten observeres. For at sikre sig, at man ikke påvirker luftstrømmen alt for meget, måtte der bygges en art tårn for at få højde. Opstillingen ses i Figure 20:Test af trust i forskellige højder, og resultat ses i Figure 21: Resultat af trust målinger i forskellige højde. Figure 20:Test af trust i forskellige højder 33

trust i digital input 180 160 140 120 100 80 60 40 20 81,3cm over jord 70,2cm over jord 58,7cm over jord 47,3cm over jord 36,3cm over jord 24,5cm over jord 13cm over jord 0 0 200 400 600 800 1000 Gram løft Figure 21: Resultat af trust målinger i forskellige højder 34

Det ses ud fra grafen, at løfteevnen stiger desto nærmere helikopteren er på jorden. Selve helikopteren vejer omkring 600gram og et batteri vejer 156gram, på grafen ses det at omkring 700grams løft er hældningen af de 7 kurver næsten ens. Derved skulle en regulator kun skulle ændre offset og ikke forstærkning. Regulatoren skulle ændre forstærkning (mens helikopteren fløj gennem groundeffect området) hvis ikke kurvernes hældning var ens, men varierede meget. Design af regulator En P regulator ville være den simpleste regulator, men ville kunne give en stort overshoot, hvilket ikke ville være hensigtsmæssigt hvis der er et loft i det rum, man flyver i indendørs, hvor helikopteren ville risikere at ramme loftet hvis overshootet var for stort. Derfor laves en PD regulator med overføringsfunktionen nedenfor for at dæmpe overshoot. τ ds + 1 Gc ( s) = K P *, α < 1 ατ s + 1 Da der ønskes en forholdsvis langsom regulator, som har en setling time på omkring 2 sekunder samt et oversving på ikke mere 50%, vælges alfa til 0.1 og omega bestemmes til at være 2 Hz. 1 1 τ d = = = 0,2516 α * ω 0.1 * 2 * 2π Så kommer overførings funktionen til at se sådan ud: G c Tilhørende Bodeplot hvor Kp er 1. 0,2516s + 1 ( s) = 0,1* 0,2516s + 1 d 35

20 Bode Diagram Magnitude (db) 15 10 5 System: pd Frequency (rad/sec): 12.9 Magnitude (db): 10.2 Phase (deg) 0 60 30 System: pd Frequency (rad/sec): 13.2 Phase (deg): 54.8 0 10-1 10 0 10 1 10 2 10 3 Frequency (rad/sec) Figure 22: Bode plot at systemet 36

Mere thrust til motorerne vil forøge accelerationen af helikopteren, som så vil give mere hastighed, som vil give positions ændring og derved mere højde. En simpel model med 2 integrationer og tilbageføring kan derfor beskrive helikopterens Z aksel. For at helikopteren kan lette, lægges der et offset ind, som giver noget thrust indtil at helikopteren er fri fra jorden. Thrust Hastighed 1 ønsket højde ( meter ) 1 kp 0.2516s+1 0.1*0.2516s+1 Transfer Fcn 1 s hastighed 1 s Integrator1 610 Thrust(gram ) for at kunne lette højde Der gives et step på 1 og højden plottes. Figure 23: PD regulator på model 37

Figure 24: Steprespons, Kp=1 Det ses at indsvingningstiden er over 10sekunder, samt at oversvinget er ca. 70%. Kp øges til 5. Figure 25: Steprespons, Kp=5 Et øget Kp har mindsket oversving og forøget respons tiden. 38

Den samlede åbenloop sløjfefunktion G ( s) = K å p * G c ( s) * 1 * s 1 0,2516s + 1 = 5* * s 0,1* 0,2516s + 1 1 * s 1 = s 50s + 198,72 3 s + 39,74* s 2 Bodeplottet for åbensløjfe funktionen ses nedenfor. Figure 26: Bodeplot af åbensløjfe systemet kp=5 39

Fase margen for systemet er 180-152 = 28grader. PD regulatoren ser ud til at kunne opfylde kravene og implementeres derfor. Regulatoren diskritiseres efter Tustin metoden i matlab med en sample time på 10ms, da det er gennemløbstiden for hele flight controlleren, der ønskes. 8,508* z 8,177 G ( z) = z 0,6685 Implementering i C kode kan gøres ved direkte realisering. Overføringsfunktionen for denne realisering er: G output( z) Error( z) b0 * z + b1 z + a1 b0 + b1* z 1+ a1* z 1 ( z) = = = 1 Hvor: b 0 = 8,508 b 1 = 8,177 a 1 = 0.6685 Dette skrives om. output ( z) 1 1 = error( z) * ( b0 + b1* z ) output( z) * a1* z En funktions diagram ses her: 1 Error b0 1 output -1 Z -1 Z b1 a1 Figure 27 Dette kan derefter skrives om til C kode, hvor z -1 forsinkelsen laves ved at gemme en variabel til næste cycle. 40

output=8.508*error+dummy; output_old=output; error_old=error; dummy=(-8.177*error_old)+(output_old*0.6685); For at være sikker på, at regulatoren i C koden regner rigtigt, laves en test, hvor kendte værdier bliver indført og output af regulatoren holdes op mod matlabs resultater. Første test af PD med ledning Selve højderegulatorens udregninger udføres hele tiden, men dens output bliver kun koblet til ved kommando, derfor kan helikopteren flyve i en normal mode og skiftes om til en mode, hvor regulatoren holder en ønsket højde. Dette gøres af hensyn til sikkerhed, og et ønske om stadig at have fuld kontrol over helikopteren, hvis uventede situationer skulle forekomme. Alle data sendes tilbage til en PC og man kan live se, hvad der forgår i helikopteren. Inden rotorerne sættes i gang, holdes helikopteren i hånden og løftes op og ned, for at simulere stigning og fald. Hvorefter regulatorens output kan observeres, og det kan afgøres om regulatoren giver et fornuftigt output i tilfælde af fortegnsfejl. Efter at det er verificeret, kan en egentlig test begynde, helikopteren bringes til svævning lige over jorden og den ønskede højde er 0meter, herefter sættes regulatoren ind. Da den ønskede højde er opnået, er output 0. Derefter ændres den ønskede højde til 1meter, outputtet af regulatoren vil stige positivt og helikopteren vil lette. Ved første test blev det opdaget, at regulatoren er meget langsom og oversvinget er ikke synligt stort, dette kan skyldes, at der er monteret en ledning på helikopteren til strømforsyningen, der virker som en dæmper ved at ændre helikopterens vægt alt efter højde. Ledningen beholdes på, da der er begrænset højde til loftet, og et batteri ville medføre mulig interaktion med loftet, men senere tests bliver udført med batteri og højere til loftet. For at imødekomme hurtig regulering, øges Kp gradvist til 17,6 fra 5, dette medfører det ønskede resultat. Kp = 17,6 indsættes i matlab modellen for at se, hvordan oversvinget kunne se ud, hvis der var batteri på helikopteren. 41

Figure 28: Steprespons med Kp=17,6 42

1350 1250 1150 1050 950 850 750 650 550 450 350 højde i mm ønsket højde i mm 0 20 40 60 80 Figure 29: Step response med ledning Overshoot = Max Slut slut 1035 850 = 850 = 21,7% Som det ses på Figure 29 fra matlab, er oversvinget på ca. 32%, hvor testen viser et overshoot på 21,7%. Dette skyldes, at helikopteren hænger i en ledning, som vil virke som en dæmper, da helikopteren vil veje mere og mere jo højere den flyver fordi mere og mere ledning skal løftes fra jorden. Testen viser, at teori og praksis har en sammenhæng og ledningen kan fjernes, uden at helikopteren rammer loftet. 43

Første test af PD med batteri Som udgangs punkt blev den fundne gain værdi brugt på 17,6. Ved forskellige starthøjder blev et step på 0.5meter ind sat for at afprøve responset. mm 1400 0.5m step, med 17,6 i gain 1200 1000 800 600 400 ønsket højde i mm højde i mm 200 551 571 591 611 631 Figure 30 Tidsindex Ved at aflæse måleresultaterne kan Overshoot, Rise time og Tpeak aflæses. Slutværdi = 850mm Maximum = 1200 Overshoot = Max Slut slut 1200 850 = 850 = 41,17% T Peak = 10x0,127sek= 1,27sek T rise = 3,5x0,127sek= 0,4445sek Det viser sig dog, at ved højder over 1,4 meter, bliver højdesignalet fra sensoren mere støjfyldt på grund af quantaserings støj, der fremkommer tydeligere, når måleren måler længere afstande. Dette medfører, at regulatoren laver mere støj, som forårsager at helikopteren foretager mange små hurtige ændringer til thrusten, der igen bevirker at den bliver svær at styre. Problemet har ikke været observeret tidligere, da tests med ledning blev foretaget og at ledningen virkede som en dæmper mod helikopterens ændringer, da helikopteren kom til at veje mere jo højere den fløj på grund af ledningens vægt, og derved blev trukket ned. 44

Omvendt, hvis helikopteren falder, kommer den til at veje mindre og derved kræves mindre thrust for at få den til at holde sin højde. For at imødekomme dette problem, sænkes gainet en smule til 14. mm 1600 0.5m step, med 14 i gain 1400 1200 1000 800 600 400 200 ønsket højde i mm højde i mm 0 510 530 550 570 590 610 tidsindex Slutværdi = 900mm Maximum = 1307 Figure 31 Overshoot = Max Slut slut 1307 900 = 900 = 45,22% T Peak = 14x0,127sek= 1,778sek T rise = 4x0,127sek= 0,508sek Som forventet stiger risetime og peaktime, ved lavere Kp bliver regulatoren langsommere og derved vil risetime og peaktime stige. For yderlige at se hvordan helikopteren reagerer ved mindre gains, sættes det ned til 5, resultatet ses her. 45

2500 mm 0.5m step med 5 i gain 2000 1500 ønsket højde i mm højde i mm 1000 500 0 670 690 710 730 750 770 tidsindex Figure 32 Slutværdi = 750mm Maximum = 1066 Overshoot = Max Slut slut 1066 750 = 750 = 42% T Peak = 22x0,127sek= 2,794sek T rise = 12x0,127sek= 1,524sek Som det ses på kurven og på udregningerne, giver et gain på 5 en meget langsom regulator, og den reagerer næsten ikke på step impulsen. Ved at forsøge, viser det sig, at et gain på 12 giver en tilpas regulator, ikke for langsom, ikke for hurtig. Men stadig en kontrollerbar helikopter 46

mm 1600 1400 1200 1000 800 600 400 200 0 0.5m step med gain på 12 ønsket højde i mm højde i mm Tidsindex 620 640 660 680 700 720 740 Figure 33 Slutværdi = 920mm Maximum = 1199 Overshoot = Max Slut slut 1199 920 = 920 = 30,32% T Peak = 18x0,127sek= 2,286sek T rise = 6x0,127sek= 0,762sek PD regulatoren er ikke i stand til at kompensere for steady state fejl i form af faldende batterispænding. Mens helikopteren flyver, falder batterispændingen langsomt og systemet holder derfor ikke højden. Ved at måle mængden af thrust ved forskellige spændinger, kan en bedre beskrivende model laves. 47

650 Thrust vs spændning 600 Gram 550 500 450 9,5 10 10,5 11 11,5 Volt Figure 34: Thrust i 81,3cm højde ved forskellige spændinger Som det ses i Figure 34, falder thrust med ca. 100g eller ca. 16% i forhold til fuldt batteri med et halvtomt batteri. Der er omkring 10mins flyvetid i et 2Ah batteri, men spændingen på et litium polymer batteri falder ikke lineært. Figure 35: Aflade kurve for et Litium polymer batteri 2Ah På Figure 35 ses spændingen ved forskellige afladestrømme. Den sorte 10A kurve er den, som har interesse, da helikopteren bruger mellem 10A og 12A for at flyve ved 10,9V. På 48

et stort stykke af vejen er kurven lineær, og der ses bort fra det hurtige drop i starten af afladekurven. Fra fuld opladning 11,1V (3,7V pr celle) til 9,6V (3,2V pr celle) går der 10minutter (600sekunder), ud fra det kan spændingsfaldet over tid findes. Fuldt Tomt tid 11,1 V 9,6V = afladningsrate = 600sek = 0,0025 V sek Dette er dog for et nyt batteri, med konstant afladning og ved konstant temperatur. Ved 10A afladning bliver batteriet varmt og efter mange oplade cycles falder den samlede kapacitet af batteriet. For at finde tab af thrust pr. sekund, findes thrust forskellen over et kendt stykke tid. Det vides at helikopteren kan flyve 10min på et fuldt batteri, hvorefter batteriet er tomt. Så formlen ser sådan ud. Thrust tid 630g 500g = 600sek = 0,22 g sek Til modellen tilføjes en rampe, som trækker thrust fra over tid. Thrust 610 Thrust(gram ) for at kunne lette Hastighed 1 ønsket højde ( meter ) 12 kp 0.2516s+1 0.1*0.2516s+1 Transfer Fcn1 1 s hastighed 1 s Integrator1 Ramp Scope højde Figure 36: Model fald i batteri spænding 49

Figure 37: Højde output over tid med rampe Det ses på simuleringen af thrust falder, dette er også observeret ved test i virkeligheden. 50

1600 1400 1200 1000 mm 800 600 400 200 0 ønsket højde i mm højde i mm 204 404 604 804 Sample nummer ( 127ms ) Figure 38: Step response test med kp=12 Det ses på Figure 38 hvor 3 step responses er blevet udført med PD regulator. Inputtet er det samme, men den reelle højde starter med at være 600mm, og efter 600 samples (76 sekunder) er helikopteren faldet 200mm. Til at kompensere for dette, udbygges PD regulatoren til PID med overføringsfunktionen: G ( s) = K c p 1 τ d s + 1 * (1 + ) * τ s ατ s + 1 i d 51

Figure 39: Bode plot for system kp=12 52

Til at finde τ i laves bodeplottet for systemet med kp=12. På Figure 39 ses at krydsfrekvensen er 4,17 rad/sekund, integrator leddets knækfrekvens placeres 5 gange under. ω k 1 = 0,2* ωc = 0,2 * 4,17 = 0,834 τ = 1,199 τ = i i Dette giver: 2 1 τ d s + 1 1 0,2516s + 1 10* s + 48,09s + 33,14 Gc ( s) = K p * (1 + ) * = K p *(1 + ) * = 2 τ s ατ s + 1 1,199 s 0,1* 0,2516s + 1 s + 39,745s i d Denne overføringsfunktion indsættes i matlab modellen Figure 40 og plottes over 15sekunder, se Figure 41. Thrust 610 Thrust(gram ) for at kunne lette Hastighed 1 ønsket højde ( meter ) 12 kp 10s 2+48.09s+33.14 s 2+39.745s Transfer Fcn 1 s hastighed 1 s Integrator1 Ramp højde Figure 40: PID regulator model 53

Figure 41: Step response af PID regulator kp=12 Ved første simulering er setling time lang, derfor øges kp til 30, se Figure 42. Figure 42: Step response af PID regulator kp=30 54

Det tustin diskritiseres i matlab: 2 8.543z 16,68z + 8,142 D ( z) = 2 z 1.668z + 0,6684 1 Error b0 1 output -1 Z -1 Z b1 a1-1 Z -1 Z b2 a2 Figure 43: 2. ordens direkte realisering af overførings funktion Implementering er som PD regulatoren blot tilføjet et ekstra led. Hvor: b 0 = 8,543 b 1 = 16,682 b 2 = 8,142 a 1 = 1,668 a 2 = 0.6684 55

Første test af PID med ledning Det viser sig hurtigt at systemet oscillerer, helikopteren flyver op og ned, se Figure 44. Den var meget svært at styre samt at helikopteren ikke har godt at blive banket i gulvet, som skete ved sample 470. 1200 1000 800 Højde ønsket højde PID Kp=25 mm 600 400 200 0 0 100 200 300 400 500 Sample Figure 44: Oscillationer på regulator Modellen og virkeligheden passer ikke sammen, for at dæmpe integralet flyttes knækfrekvensen 10 gange under PD regulatorens. ω k 1 = 0,1* ωc = 0,1* 4,17 = 0,417 τ = 2,398 τ = i i Dette giver: G s) = K 1 τ d s + 1 * (1 + ) * = K τ s ατ s + 1 1 0,2516s + 1 10* s *(1 + ) * = 2,398s 0,1* 0,2516s + 1 c ( p p 2 i d Diskritiseret: 2 8,526z 16,68z + 8,159 D ( z) = 2 z 1,668 z + 0,6684 Kp mindskes også for yderligere at forhindre oscillation. Som det ses på Figure 45, hjalp dette ikke meget. 2 + 43,9157s + 16,5744 s + 39,745s 56

mm 1400 1200 1000 800 600 400 200 0 Højde Ønsket højde PID Kp=12 0 200 400 600 800 1000 Sample ( 127ms ) Figure 45 Matlab modellen afspejler ikke virkeligheden godt nok, andre tunings metoder må tages i brug. Ziegler-Nichols metoden består i at Td og Ti sættes til 0, hvorefter Kp øges til at systemet oscillerer, ud fra oscilleringerne og Kp størrelsen, kan en PID regulators Kp, Td, Ti skønnes. Men at bringe helikopteren til at oscillere er ikke en god ide, da dette vil gøre den svær at styre, og det er ikke er tilladt at påvirke systemet ude fra, hvilket kan resultere i, at helikopteren smadres mod jorden. En lidt anden, men mere sikker metode, er hånd tunings reglerne beskrevet i Foundations of Fuzzy Control side 81, skrevet af Jan Janzen. Metoden: 1. Fjern alle Ti og Td 2. Forøg Kp til det ønsket respons 3. Forøg Kp mere og dæmp med Td 4. Forøg Ti til at fjerne offset 5. Gentag fra punkt 3 indtil Kp er så stor så mulig Og tommelfinger reglerne: Aktion Stige tid Oversving Stabilitet Forøg Kp Stiger Stiger Falder Forøg Td Falder Falder Stiger Forøg 1/Ti Stiger Stiger Falder Med disse regler håndtunes PID regulatoren, som er baseret ud fra PD regulatoren. Ved at øge Td for at få mere stabilitet, og dæmpe 1/Ti for yderlige at få stabilitet fremkommer: 57

2 1 0,65s + 1 10 * s + 15,4263s + 0,06415 Gc ( s) = K p *(1 + ) * = K p 2 239.808s 0,1* 0,65s + 1 s + 15,3846s Diskritiseret: 2 9,357z 18,57 z + 9,214 D ( z) = 2 z 1,857 z + 0,8571 mm 800 700 600 500 400 300 200 100 0 PID regulator kp=7 højde ønsket højde 0 200 400 600 800 Sample ( 127ms ) Figure 46 Resultatet ses i Figure 46, Kp er sænket lidt for yderligere at stabilisere helikopteren. Denne test er udført med batteri og det bemærkes, at der er nogen svingninger i højden, men de dæmpes. For at bevise at integratoren kan kompensere for faldende batterispænding, udføres en 10min lang flyvning, hvor helikopteren svæver inden for 1m 2. mm 1400 1200 1000 800 600 400 200 0 10min flyvning Højde 0 1000 2000 3000 4000 5000 Sample ( 127ms ) Figure 47 Ønsket Højde 58

Digital værdi 200 150 100 50 0-50 -100-150 Nick og Roll i 10min flyvning 0 1000 2000 3000 4000 5000 Sample (127ms) Roll Nick Figure 48: Stick inputs Thrust i digital værdi 15 10 5 0-5 -10-15 10min flyvning output fra regulator Regulator output 0 1000 2000 3000 4000 5000 Sample ( 127ms ) Figure 49: Regulator output 59

På Figure 47 ses, at helikopteren holder højden pænt i gennemsnit, forstyrrelserne skyldes ustabilitet i selve LQR regulatoren, turbulenser fra omkringliggende objekter og at der kompenseres med stick påvirkninger for drift. Stick påvirkningerne ses i Figure 48. I takt med at batteriet bliver afladet, falder udgangsspændingen, der ville forårsage tab i thrust, men kompenseres af regulatoren, dette ses på Figure 49, hvor outputtet stiger i takt med at batteriet bliver afladet. Ved opladning af batteriet er det muligt at se, hvor meget strøm der er brugt, ved de 10minuters flyvning blev der brugt 2/3 af batteriets samlede kapacitet. Autonom landing og letning Hidtil har brugeren selv reguleret højden, der ønskes at flyve i. Brugeren er startet med at give en lav højde og så ændre den til den ønskede højde, hvorefter at regulatoren regulerede sig ind til højden. Ved at lave en rampe, hvor højde input til regulatoren langsomt øges indtil den når den ønskede højde, brugeren har specificeret. Hvis brugeren ønsker at lande, trækkes højde inputtet til regulatoren langsomt fra indtil det når 0, for at sikre sig at helikopteren bliver på jorden og ikke driver svagt rundt, skal der fjernes ekstra motorkraft, når helikopteren er lige ved jorden resultatet ses i Figure 50. Helikopteren svinger lidt i højden, dette er fordi at brugeren retter på helikopterens kurs. Men alt thrust regulering er overladt til regulatoren. mm 1200 1000 800 600 400 Ønsket højde Højde Autonom landing og letning 200 0 0 100 200 300 400 500 Sample ( 127ms ) Figure 50: Autonom landing og letning 60

Software Overordnet Helikopter softwaren er omskrevet fra Microcopters software, hele flight controller delen er skrevet om, kalibrering samt data inputs. Grunden til at arve deres software er den gode ide om at beholde nogle færdige komponenter: Modtager dekoder og demuxer sumsignalet fra modtageren. PPM udgange til servos, disse kunne bruges til at styre et kamera, disse er dog ikke brugt, men kunne bruges til fremtidige projekter. Debugnings delen muliggør logning af data fra helikopteren. Dette tillader også at sende data til helikopteren og opsætning af forskellige parametre. Manuel styring af motor hastighed. I2C kommunikation til motorkontrollere, køre på interrupt og skriver motorhastighederne til de 4 motorer med fast mellemrum. Stoppes transmissionen til en motorkontroller stopper motoren, dette er en sikkerhedsfunktion bygget ind i motorkontrolleren. En anden fordel er at beholde muligheden for at kunne integrere Microcopters andre produkter sammen, dette inkluderer et GPS modul, et kompas, navigations enheden samt komponenter der bruges til at lade microkoptoren flyve en bestemt rute udenfor. Ideen er, at brugeren sender helikopteren op og lader en lufttrykssensor holde højden hvorefter helikopteren flyver mod destinationen forud programmeret, det skal dog som notits siges, at dette kun kan lade sig gøre udendørs og der skal være plads omkring den - gerne +/- 5meter til alle sider. Og at helikopteren skal være i god højde (+ 7meter) for at det er forsvarligt. Hele softwaren er bygget op omkring en time slot afhandling af forskellige programelementer, timer 0 laver 1ms pulser som tælles op til 10. Sammen med en række IF sætninger i main rutinen, kommer hver 1ms til at virker som et timeslot, hvori forskellige subrutiner køres. Hver subrutine skal være færdig inden næste startes, ellers vil den ikke blive startet til den rette tid. En art simplificeret switched multitasking, med en cycle time på 10ms. Ud over dette, køres sideløbende en række forskellige interrupts, dette er til transmission af debug data, decodning af modtager signal, PPM signal generator til servos og AD konverter. Ved at have flightcontrolleren i et bestemt timeslot, sikres det at den bliver eksekveret med konstant frekvens, hvilket er essentielt for korrekt regulering. 61

Ved at skifte et port bit i main rutinen, er det muligt at se, hvor meget ekstra tid mellem hver cycle, processoren har til overs, samt hjælpe til at bestemme hvor lang tid et programstykke bruger i det afsatte time slot. Initalisering af data Skal der hentes nye måleværdier fra gyro modul Nej Ja Hent måleværdier Skal der hentes nye analog måleværdier Ja Start intern ADC Nej Er højderegulator flag sat? Ja Beregn ny Thrust Nej Skal der beregnes nye motorværdier? Nej Ja Beregn ny motorværdier og send dem til motor Figure 51: Main løkke 62

Der er lavet 2 flight modes i helikopteren: 1. Regulator mode, hvor en regulator styrer Thrust for at holde en bestem højde. 2. Free flight, hvor helikopteren opfører sig som en normal helikopter og alt styres af brugeren. I begge modes bruges LQR regulatoren til at stabilisere helikopteren og brugeren styrer Nick, Roll og Yaw. Højde regulator Er placeret i en time slot for sig selv og regner en ny thrust ud, som vil blive brugt i flight regulatoren. Først aflæses hvilken højde brugeren har ønsket, brugeren justerer værdien på kanal 5 der omregnes til en positiv højde. Ellers er PD overførings funktionen fundet fra matlab implementeret som følgende. reg_gain= 12; e=(oensket_hoejde-hojde)*reg_gain; thrust=8.508*e+dummy; thrust_old=thrust; e_old=e; dummy=(-8.177*e_old)+(thrust_old*0.6685); if(thrust>=40) // begrændser { thrust=40; } if(thrust<=-40) { thrust=-40; } For at sikre sig at en evt. regne fejl ikke sender helikopteren til vejrs, lægges en begrænser ind, der forhindre at regulatoren kan ændre mere end +/- 40. 63

PID regulatorens implementering kræver et par linier kode mere. reg_gain= 7; e=( oensket_hoejde-hojde)*reg_gain; thrust=9.357*e+dummy; thrust_old_old = thrust_old; thrust_old=thrust; e_old_old = e_old; e_old=e; dummy=((-18.57*e_old) +( 9.214*e_old_old))-((-1.857*thrust_old)+ ( 0.8571*thrust_old_old)); if(thrust>=40) // begrændser { thrust=40; } if(thrust<=-40) { thrust=-40; } Til at bestemme om højde regulatoren skal have nogen indvirkning, bruges kanal 6. if((ppm_in[ee_parameter.kanalbelegung[k_poti2]])<0) { samlet_thrust=stickgas; //thrust er som på normal } else // thrust er nu offset mellem -75 og +75 { samlet_thrust = StickGas +thrust+killmotor; } Hvis brugeren ønsker at flyve free flight uden at højde regulatoren har nogen indvirkning, føres stick værdien videre. Skal regulatoren styre højden, tilføjes regulatorens output sammen med stick værdien, hvor brugeren har stillet stick værdien sådan at helikopteren er ved at lette. Mere om brug og flyvningen i appendiks. 64

Autonom landing og letning Til at lave rampen bruges kanal 7 til at bestemme handling. Hvis den er i bund, trækkes referencen til PID højde regulatoren langsomt ned, og hvis den skal op, tælles den langsomt op. if((ppm_in[ee_parameter.kanalbelegung[k_poti3]])<0) // lande { if ( 0 < regulator_hoejde ) { regulator_hoejde=regulator_hoejde-0.003; } else if ( regulator_hoejde < 0 && hojde< 0.134 )// er landet kill motor { killmotor= -20; } } else // flyve { killmotor=0; if( oensket_hoejde >= regulator_hoejde ) { regulator_hoejde=0.003 + regulator_hoejde; } else { regulator_hoejde=regulator_hoejde - 0.003; } } Når helikopteren er på vej ned og kommer til en vis højde, tages ekstra kraft fra motorerne for at få helikopteren til at blive på jorden. 65

Data indsamling Der bliver brugt SPI til at kommunikere med Gyromodulet, dette forgår i 16bit pakker. Selve udlæsningen er lidt tricky, adressen på det register, som ønskes læst, sendes. Derefter sendes det næste register man ønsker modtaget, samtidigt med at man sender en anden adresse komme dataene for den første adresse, men som requestet værdi. SPI er duplex transmission, hvor masteren laver clock pulsen for at clocke data ind og ud af slaverne. Ved hele tiden at sende en kommando for få data, hentes de forskellige registre ud af gyromodulet. Figure 52: læsning og skrivning til gyromodulet Alt dette bliver udført uden om interrupts, ved en transmission ventes i en while løkke på at transmissionen er færdig. Mens der ventes, bruges nogen tid på at behandle de modtaget data. Gyroskop værdierne kommer ud i 2s kompliment 14bit så for at lave det om til 16bit, dette gøres ved at se på det 14bit, er det 1 skal bit 15 og 16 være 1 ellers 0. Gyroskop værdier, analogindgang samt accelerometer aflæses alt sammen inden for 1ms så der er afsat 1 timeslot til dette modul. Dette skyldes at SPI transmissionen kører ved 1,25Mhz. Til at aflæse den kortrækkende IR sensor, er den interne AD konverter brugt, den startes i et separat time slot og ved færdiggørelsen kommer et interrupt, hvor omregning fra bitværdi til højde fortages. 66

Hent måleværdier Træk CS lav Send adressen for at få Gyro X Send adressen for at få Gyro Y Færdig med at sende? Færdig med at sende? ja ja De højeste 4bit skal være 0 Gem modtaget data, hvis det 3. sidste bit er 1 skal de sidste 2 være 1 også Send adressen på gyro X igen for at lave 8 pulser Send adressen på gyro Y igen for at lave 8 pulser Færdig med at sende? Færdig med at sende? Sæt den ny modtaget data sammen med tidligere pakke og Gyro X er modtaget Sæt den ny modtaget data sammen med tidligere pakke og AD ingangen på gyromodulet er aflæst Træk CS høj Modtagelse af Gyro Y, Gyro Z, accelatometer End Function Figure 53: Flow chart for gyro kommunikation 67

Flight controller For at styre om motorerne skal startes eller stoppes bruges kanal 8, hvis den er mellem 0 og 20 i værdi skal motorerne være stoppet, hvis under -10 må motorerne startes (dette er fixed værdier fra senderen fordi det er en kontakt på senderen). Selve regulator udregningen kører altid, men resultatet skrives ikke ud til motorkontrollerne før at motorerne må starte. Som ekstra kontrol måles signal styrken, hvis signal styrken er under et vis niveau stoppes motorerne, bipperen startes (som er fjernet fordi den larmede) og alt efter om modellen flyver eller om den står på jorden, kan der foretages forskellige handlinger. Her kunne en kontrolleret nedstigning indbygges eller en mere avanceret form for nødlanding placeres. 68

Beregn ny motorværdier og send dem til motor Er modtage forhold gode? Nej Fejl til bruger 160 < Kanal 8 Hvad ønsker brugeren af handling? Calibreing, stop motor eller start. Ved input fra kanal 8 Kanal 8 < -10 Calibreing, nulstil vinke intergrale, find stick offsets 0<kanal 8 <20 Stoppe motorer ved at altid skive 0 til motorkontrollerene Starte motorer ved at tillade at resultatet fra flight controlleren skrives ud til motorkontrollerene Ned skalere stick værdier Omregn heltal til double vinkelhastighed Integrer vinkel hastighed til vinkel Gang Vinkel hastighed, vinkel og stick imputs sammen med kontroller matricen Læg resultat i debug array og i motor array End function Figure 54: Flowchart af flight controller 69

Kalibrering / Nulstilling Da den aktuelle vinkel ikke kendes ved power on, nulstilles vinkelen efter brugerens ønske, dette gøres altid før en flyvning ved at bruge kanal 8, og fra senderen have 3 forskellige værdier defineret. Hvis denne kanal værdi er over 160, nulstilles vinkelen da det antages helikopteren nu er placeret på en vandret flade. Samtidig sættes alle variabler i højderegulatoren til 0, i tilfælde af at der i forvejen har stået en glitch værdi fra power up. Når brugeren giver slip på Nick og Roll (samme styre pind) trækker en fjeder i fjernbetjeningen dem tilbage til midten; da det er lidt forskelligt hvor midten er på forskellige fjernbetjeninger, måles samtidig værdien som offset og trækkes fra som konstant for at stick værdien giver 0, ved midterposition. For at give brugen en fysisk indikation af en kalibrering, blinkes der på lysdioderne på motorkontrollerne. Dette gøres ved at lade være med at sende data til dem i et kort øjeblik, derpå vil de lyse rødt, men lyse grønt igen når data transmissionen genoptages. 70

Modtager decodning Til at omdanne det modtagne stick signal til værdier mellem +/- ½, fordi det er de inputs som regulatoren er designet med, skaleres signalet ned med en faktor 256 efter af offset er blevet trukket fra. Offsettet kommer fra kalibreringen, og er nødvendig for at sørge for at stick værdien bliver 0 når sticken står i midten. Da transmissions udstyret kun sender data hvert 50ms og regulatoren kører hvert 10ms, genbruges stick værdierne og opdatering sker kun hvis der er modtaget nye data. For at få en fin inddeling af thrust området, skaleres det i passende forhold, sådan at det er muligt at afbalancere helikopteren således at den kan stå stille i luften. Denne skalering er dog kun aktiv i free flight mode. StickNick=(float)(0.4*((float)(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]- StickRoll_offset)/256)); StickRoll = (float)(0.4 *((float)(ppm_in[ee_parameter.kanalbelegung[k_nick]]- StickNick_offset)/256)); StickGier = (float)(4*((float)(ppm_in[ee_parameter.kanalbelegung[k_gier]]- StickGier_offset)/256)); StickGas = (PPM_in[EE_Parameter.Kanalbelegung[K_GAS]]+300)/3; Driftskompensering Gyromodulet leverer gradændring/sekund, dette skal dog først omregnes fra 2s komponent bitværdi samt have plus eller minus foran for at få retningen til at passe. Gyroens Y (Nick) og Z (Yaw) har omvendt rotation i forhold til den matematiske model, der danner baggrund til regulatoren. Hvis helikopteren roteres højre omkring Yaw, giver det en positiv output, men LQR regulatoren er lavet sådan at en højre rotation skal give negativ, derfor ændres fortegnet. Gyromodulet er fra fabrikken blevet kalibreret, dog kan man selv kalibrere det og man kan selv tilføje offset justering. Alle disse data kan programmeres ind i gyromodulet, men da gyromodulet kun har mulighed for at blive flashet 1000gange(ifølge datablad) er offset justering lavet i softwaren. Værdierne er fundet ved at lade gyromodulet stå stille i 20min mens at integratoren integrerer op, derefter fordeles fejlen over antallet af samples, hvoraf fejlen pr. sample fremkommer, som så trækkes fra hver gang. Gyromodulet har en temperaturføler indbygget, som kan udlæses og man så kan bruge temperaturen til at yderligere at kompensere for drift, dette er dog ikke implementeret her. GyroX_Value=(float)gyro_x_temp*0.03663*(3.141592/180)-0.0029; GyroY_Value=(float)gyro_y_temp*-0.03663*(3.141592/180)-0.0026; GyroZ_Value=(float)gyro_z_temp*-0.03663*(3.141592/180)-0.00013; 71

Matrix udregningen Matrix udregningen er lavet som en for løkke, der køres 4 gange, hvor vinkel og vinkel hastighed bliver ganget sammen ind i matrixen for at få motor hastigheden. For at sikre sig, at motor hastigheden ikke overstiger maxium for motorkontrollerne, er der sat en begrænsning ind. for (i = 0; i < 4; i++) { servo_data[i] = K[i][0] * (GyroX_Value + AngleStikRatio*StickRoll*PRStikG) + K[i][1] * (GyroY_Value + AngleStikRatio*StickNick*PRStikG) + K[i][2] * (GyroZ_Value + AngleStikRatio*StickGier); servo_data[i] *= AngleSpeedGain; // temp = K[i][3] * (INT_GyroX + StickRoll*PRStikG) + K[i][4] * (INT_GyroY + StickNick*PRStikG) + K[i][5] * (INT_GyroZ + StickGier); temp *= AngleGain; // servo_data[i] += temp; servo_data[i] *= motorgain;// servo_data[i] = (samlet_thrust - servo_data[i]); if (servo_data[i] > 255) servo_data[i] = 255; if (servo_data[i] < 0) servo_data[i] = 0.0; } Selve udregningerne forgår i doubles, men bliver sendt i heltal til motorkontrollerne. 72

Debugging Microkoptor har 32 integer variabler som bliver kontinueret sendt tilbage til PC softwaren. Deres PC sofware, kaldt kopter tool, tillader at se og logge data efter ønske. Ved at skrive i et constan char array, bestemmes teksten i PC softwarens vindue, ved at lægge variabler over i et debug array, søger debug interrupt rutinen at sende datatene til PC en. Dette sker med 127ms interval. Figure 55: Koptortool Værktøjet kan gemme loggede data i komma separerede filer, der kan læses i enten Matlab eller Excel. Dette tool er desværre ikke opensource, så omskrivning og ændring er ikke muligt. Dog er den serielle protokol tilgængelig, så et selvskrevet software program var en mulighed, dette kunne evt. være tilslutning af et joystick til at styre helikopteren efter eller billede feedback. 73

Konklusion Projektet har været et lærerigt projekt, som har spændt vidt over mange emner, og noget man kan se virke, har da også været med til at gøre projekt ekstra spændende. Ikke kun for mig, men også for andre på instituttet. Dog er det ikke alle på DTU, der er lige så imponerede over en selvflyvende larmende helikopter, så større flyvetests har måttet blive udført uden for normal undervisningstid. Det har vist sig muligt at bruge nogle færdigkøbte komponenter, og skabe en stabil selvflyvende helikopter. Helikopteren er i stand til at kunne flyve stabilt indendørs i små rum med inventar, men også i større rum. Ingen komponenter er special fremstillet, derfor kan helikopteren reproduceres, dog skiftes der rotor og motor til andre typer samt til større ændringer i den fysiske konstruktion, skal der udregnes ny LQR regulator matrice. Platformen er helt åben og videreudvikling af andre projekter er muligt. Dette kunne være montage af kamera der muliggør at følge en bestemt streg i gulvet, eller følge en person eller GPS til at følge en bestemt flyvevej eller til absolut positionering. For at gøre flyvning nemmere for brugeren, har det vist sig muligt at lave et autonomt system til at holde højde, lette og lande. Det har også været muligt at overholde kravene stillet det autonome system. Selv efter lang tids flyvning holder systemet selv højden, selv om batterispændingen falder. Helikopteren skader ikke sig selv ved letning eller landing, dog hvis brugeren vælger et dårligt landingssted eller flyver dårligt, kan dette ikke tilskrives systemet fordi systemet har ikke nogen mulighed for at se, hvad der er omkring det såsom vægge, stoleben og borde, der er alle skadelige, men ikke detekterbare for systemet. Fremtidige projekter kunne bygge videre på ideen og lave nogle forbedringer, der muliggør at helikopteren kan blive mere intelligent og få informationer om omgivelserne. Evt. selv tage beslutning om brugerens handling er forsvarlig, og hvis den ikke er, skal den ikke udføres, hvis det vil skade helikopteren. 74

Referencer/ Litteratur Foundations of Fuzzy Control skrevet af Jan Jantzen ISBN: 978-0-470-02963-3 Reguleringsteknik skrevet af Ole Jannerup og Paul Haase Sørensen ISBN: 87-502-0982-5 Construction of a 4 rotor Helikoptor Master projekt lavet af Tomas Buchholz og Dagur Gretarsson 75

Appendiks A Hardware diagram VCC C8 22pF VBAT R8 10K Voltage R9 1K GND GND MISO SCK Reset Y1 20Mhz 2 1 1 2 GND C13 100nF Voltage LED_red LED_Green MOSI MISO SCK 1 2 3 4 5 6 C7 22pF GND Programmer VCC C9 100nF MOSI Programmer GND Reset GND plus minus U2 PortA_0 37 PA0 (ADC0/PCINT0) PortA_1 36 PA1 (ADC1/PCINT1) PortA_2 35 PA2 (ADC2/PCINT2) PortA_3 34 PA3 (ADC3/PCINT3) PortA_4 33 PA4 (ADC4/PCINT4) PortA_5 32 PA5 (ADC5/PCINT5) PortA_6 31 PA6 (ADC6/PCINT6) PortA_7 30 PA7 (ADC7/PCINT7) PortB_0 PortB_1 40 41 PortB_2 PortB_3 42 43 PortB_4 PortB_5 44 1 PortB_6 2 PortB_7 3 VCC C14 100nF VBAT D3 1 1 8 7 29 4 R5 10K L1 Inductor 10uH AVCC GND GND ATMEGA644-20AU VCC Reset PB0 (PCINT8/XCK0/T0) PB1 (PCINT9/CLKO/T1) PB2 (PCINT10/INT2/AIN0) PB3 (PCINT11/OC0A/AIN1) PB4 (PCINT12/OC0B/SS) PB5 (PCINT13/MOSI) PB6 (PCINT14/MISO) PB7 (PCINT15/SCK) XTAL1 XTAL2 AREF RESET Diode C15 1uF Jtag_TCK Jtag VCC VCC Jtag_TDO Jtag_TMS 2 1 Jtag_TDI Header 2 C16 100pF PD0 (PCINT24/RXD0) PD1 (PCINT25/TXD0) PD2 (PCINT26/INT0) PD3 (PCINT27/INT1) PD4 (PCINT28/OC1B) PD5 (PCINT29/OC1A) PD6 (PCINT30/OC2B/ICP) PD7 (OC2A/PCINT31) 1 C18 100pF PC0 (SCL/PCINT16) PC1 (SDA/PCINT17) PC2 (TCK/PCINT18) PC3 (TMS/PCINT19) PC4 (TDO/PCINT20) PC5 (TDI/PCINT21) PC6 (TOSC1/PCINT22) PC7 (TOSC2/PCINT23) U6 L7805CV IN OUT GND 3 GND VCC VCC AVCC VCC GND GND GND GND Jtag 1 2 3 4 5 6 7 8 9 10 Jtag 2 9 10 11 12 13 14 15 16 17 VCC 5 27 38 18 6 28 39 PortD_0 PortD_1 PortD_2 PortD_3 PortD_4 PortD_5 PortD_6 PortD_7 19 PortC_0 20 PortC_1 21 PortC_2 22 PortC_3 23 PortC_4 24 PortC_5 25 PortC_6 26 PortC_7 GND AVCC Reset C17 100pF VCC RXD TXD RXDI TXDI VCC ICP(PPM) Jtag_TCK Jtag_TMS PC4 Jtag_TDI PC5 Jtag_TDO C21 100nF GND Speaker VCC C19 100pF R1 1K D1 LED_red LED2 D2 LED_Green SCK MISO MOSI VCC R2 1K LED2 Modtager 3 2 1 Header 3 R3 100R R4 100R R6 1K R7 1K ICP(PPM) GND VCC VCC Microkopter program port 1 3 2 4 Reset VCC 5 6 Header 3X2 SCL SDA GND C20 100nF Figure 56: Diagram over microprocessor boardet GND Speaker RXD RXDI PC4 TXD GND C12 100nF Udvidelses port VCC 1 2 3 4 5 6 7 8 9 10 Header 5X2 VCC NM Speaker TXDI PC5 SDA SCL C? 100nF GND C? 1uF RXD TXD Reset ADC in ADIS16354 GP2Y3A003K0F ( langt rækkende IR ) Vcc Vcc TX RX Gnd Gnd Vcc GND GND C? 100nF Data Out Data In Data Clock CS Aout GP2D12J000F ( kort rækkende IR ) Bluetooth Gnd GND GND Aout Vcc Gnd MISO MOSI SCK PortB_2 PortA_2 VCC GND 76

Appendiks B Nick Roll Yaw For at forstå, hvad Nick Roll og Yaw på en flyvemaskine er, kan det ses på Figure 57 Figure 57: Nick Roll Yaw 77

Appendiks C Ultralydsafstandsmåler Ide og teori Princippet er at sende et antal pulser ud og måle tiden til at reflektionen kommer tilbage. Der vil komme andre reflektioner fra objekter i nærheden. Figure 58 Spredning En punktformig kilde sender lyden ud i alle retninger. Lydudbredelsen har form som en kugle, men en punktformig kilde kan man kun tale om, når udbredelsen af kilden er meget mindre end bølgelængden, den udsender. En bashøjttaler på 30 cm. i diameter kan derfor sagtens være en punktformig kilde, hvis den f.eks. gengiver 30 Hz, svarende til en bølgelængde på ca. 11 meter. Så længe bølgelængden er stor i forhold til omkredsen af lydgiveren (Ca. 3 gange diameteren), vil udstrålingen være sfærisk, altså brede sig i en kuglefacon omkring lydgiveren. Ved bølgelængder mindre end omkredsen af membranen, vil udstrålingen blive mere og mere retningsbestemt og ende med at ligne lyskeglen fra en lommelygte. Lamda = Lydhastighed / frekvens = 343m/s / 40300 = 8,6mm Den piezo der er fundet til dette projekt, har en diameter på 7mm, en omkreds på 22mm. 78

Den skal gengive en frekvens med en bølgelængde på 8,6 mm og er derfor stærkt på vej til at antage form som en lyskegle, som det ses herunder. Dette er meget ønskeligt, men hjemme i stuen ønsker man jo som oftest det modsatte, altså stor spredning. Figure 59 Ved evt. at montere et horn på piezoerne, vil det være muligt at fokusere keglen endnu mere, dette vil dog forårsage mere plads samt mere vægt. Derfor tilstræbes det, at denne løsning ikke realiseres. Lydens hastighed afhænger af densiteten og elasticieten af rummet, som lyden bevæger sig i. I atmosfærisk luft er den største faktor temperaturen af luften, og en tilnærmet formel kan udledes: Hastighed = 331,3+(0,606*temperatur i celsius ) Da helikopteren primært skal flyve indendørs, sættes temperaturen til 20grader, og afstandsmåleren monteres på helikopteren i kendt højde, vil det være muligt ved start at offset kan kalibreres. 79

Detektering af signal Til at detektere, hvornår det reflekterede signal modtages laves en detektor, dette er dog sværere end ligeså. Modtageren oscillerer (ringer) nemlig blot man slår den fysisk, derfor er nulgennemgangs detektering ikke en optimal løsning fordi det er svært at lave præcis detektering af fasen.. En anden løsning kunne være at finde toppunkt af det modtagne signal og derefter finde indhyldnings kurven for signalet, og derefter regne tilbage til hvornår signalet teoretisk blev modtaget. Desværre afhænger det modtagne signal meget af omgivelserne. Derfor satses der ikke på denne ide. Den mest nærliggende løsning vil være at lave niveau trigning, forstærke det modtagne signal og detektere den første puls. Problemet er bare, at detekteringen skal ske samme sted og ved samme puls. Hvis der trigges på en puls senere, vil det resultere i en fejl på ca. 8.5mm ved stuetemperatur, da bølgelængden er: Lamda = (331,3+(0,606*20 ) ) / 40300 = 8,5216mm pr. periode. Ved at dobbelt ensrette signalet, vil denne fejl halveres, fordi der så også kan detekteres på de negative flanker. Dette er også den nemmeste metode umiddelbart at realisere, derfor vælges denne. 80

Design Indgangs trin 33K GND Speaker 1K 10K 2 3 1 12V 7 4 LF356N8 8 6 5 33K 330pF 330pF 120 680K 2 3 1 12V 7 4 LF356N8 8 6 5 GND -12V GND Figure 60: Indgangs trin GND -12V Der er over hele linien valgt LF 356 der har en slew rate på 5 V/µs. Det er nok til at selv et niveau der nærmer sig klipning, kun tager 3 µs at nå. R6 er lig indgangsimpedansen og valgt til 10k. Piezo ens udgangsimpedans er ca. 30k (ifølge datablad), så det er en hård belastning. Dette er gjort bevidst for at dæmpe ringningen. Den samlede forstærkning er fundet ved forsøg. Der er indgået et kompromis imellem følsomhed og støjimmunitet under hensyntagen til, at effekten der udsendes, skal minimeres mest muligt. Forstærkningen er størst igennem U5 med 34 gange = 30,6 db. Den maksimale forstærkning med LF 356 ved 40 khz er ca. 45 db eller 177 gange. En form for buffer imellem piezo en og båndpasfilteret er i øvrigt essentiel. Hvis man forbinder piezo en direkte til filteret, svinger kredsløbet med ca. 40 khz. 81

Båndpas filtre Man kan realisere et båndpasfilter ved at koble et lavpas og et høj pasfilter sammen. I dette tilfælde ønskes et båndpas filter med højt Q, altså lille båndbredde omkring centerfrekvensen. Det valgte kredsløb hedder et Delyiannis-Friend båndpas filter, det er et 2. ordens filter med følgende karakteristik. Centerfrekvens f0: f 0 = 2* π * C * 1 R ( R // R ) 3 1 2 C1 330pF 12V R1 33K C2 R2 120 330pF R3 680K 2 3 1 7 4 LF356N8 8 6 5 GND GND -12V Figure 61 82

Oscillator Det viste sig i praksis at være helt unødvendigt at påvirke piezo elementet med en forvrængningsfattig sinus. Faktisk fik man akkurat lige så pænt et signal fra modtageren, hvis transmitteren blev påtrykt en firkant! Umiddelbart lidt overraskende, men vel meget logisk efter nærmere overvejelse. Piezo ens resonansfrekvens bliver anslået og Q et er meget højt. Det mest interessante ved at skifte fra sinus til firkant er faktisk, at retur signalet bliver væsentligt kraftigere. Der kommer flere pulser tilbage p.g.a. ringning, men samtidig også mere niveau (energi). Derfor kunne en simpel CMOS oscillator opfylde kravene, den ville også være nemmere at justere ind til den rette frekvens. Men da pizeoen virker bedst på firkant pulser, kan microprocessoren lave signalet. Dette løser også et helt andet problem. Hvis der bruges en analog switch til at styre, hvornår oscillatorens signal skal tilføres transmitteren, så det er nødvendig at have fuldstændig styr på fasen af signalet. Det nytter ikke at lukke op for det på et tilfældigt tidspunkt. Det kan være lige når det går igennem nul, men det kan lige så godt være på alle mulige andre tidspunkter. Microprocessoren laver derfor et pulstog af firkant pulser til pizeoen på 40,3khz, gennem en forstærker bro af CMOS kredse. Der er valgt en 4069UB til at trække transmitteren som foreslået i databladet og vi har forbundet dem i en brokobling. Dette svarer fuldstændigt til princippet, man anvender i bilradioer, hvor forsyningsspændingen også er begrænset. 3 gates pr. side sikrer, at den fornødne strøm kan leveres. Der er ikke bygget en decideret fasevender. Det inverterede signal tages direkte fra det ene sæt gates og vendes en gang til i det andet sæt. Alle gates i pakningen er dermed udnyttet. Transmitter 100nF 2 1 HCC4069UBF 4 3 HCC4069UBF 7 6 12V 14 VDD GND 5 I C HCC4069UBF 22uF 12V 100nF 8 9 10 11 12 13 18K HCC4069UBF HCC4069UBF HCC4069UBF BC547B 10K 4K7 Figure 62: Udgangs trin 83

Ensretter For at kunne detektere på både positive og negative perioder, bruges en såkaldt full wave ensretter. 12V 6K2 2 3 1 4 7-12V LF356N8 8 6 5 1N4448 51 2 3 1 12V 4 7 LF356N8 8 6 5 4v7 470pF 5V 1 14 74AC14M 2 A Y 7 GND VCC 10K 10K 4k7 4n7 1K -12V 12V GND 2 3 1 7 4 LF356N8 8 6 5 1N4448 GND GND -12V Figure 63 FullWave ensretter er vist her, til sidst er der monteret en inverter med smith trigger, som går til microprocessoren. Software Microprocessoren laver et pulstog på 40khz, og måler tiden til at det kommer tilbage. Ved at kende hastigheden af lyden, regnes den tilbagelagte afstand ud, hvorefter der ventes et stykke tid for at alle lydbølger er uddøet, hvorefter en ny måling kan fortages. 84

Appendiks D Hvordan bruger man systemet? Det anbefales, at første flyvning fortages et sted, hvor der er meget plads og frit. Helikopteren styres som en normal fjernstyret helikopter, Nick og Roll er på højre styre stick. Thrust og Yaw er på venstre. 1. Tænd først for senderen, vær sikker på at kanal 8 sender, når helikopteren er stoppet og at thrust er i bund. 2. Tænd for helikopteren, kalibrer helikopteren ved at bruge kanal 8, vent til motorkontrollerlamperne har lyst rødt. 3. Vælg om, der skal flyves med regulator eller free flight, hvis free flight så start motorerne med kanal 8 og flyv. 4. Indstil den ønskede flyvehøjde med kanal 5. 5. Vælg, at helikopteren er i landings mode med kanal 7. 6. Vælg, at der skal flyves med regulator med kanal 6. 7. Start motorerne med kanal 8. 8. Forøg thrust lige inden at helikopteren letter (ca. 70 digital enheder) 9. Ændr kanal 7 sådan at helikopteren er i flyve mode. Og helikopteren vil lette til den ønskede højde. 10. For at lande, ændres kanal 7 til landings mode og helikopteren vil lande. Sluk derefter for motorerne med kanal 8. Tips: Flyv kun, hvor der er plads. Hold bagenden af helikopteren mod dig hele tiden. KUN professionelle kan vende alle aksler hurtigt nok, prøv ikke. Start i en simulator. 85

Appendiks E Microkopter regulator flowchart AD_ACC_Nick ACC_amplify 1/2 MittelWert_ACC_Nick ACC_amplify GyroACCfaktor/256 Intergral_ACC_Nick AD_ACC_Roll ACC_amplify 1/2 MittelWert_ACC_Roll ACC_amplify GyroACCfaktor/256 Intergral_ACC_Roll Figure 64 AD_ACC_Yaw 1/2 MittelWert_ACC_Yaw AD_ACC_Yaw_Neutral 1/256 AD_ACC_Yaw IntegralAccZ AD_ACC_Yaw_Neutral Figure 65 86

MittelIntegralRoll2 1/256 Intergral_Roll2 AD_Roll Hvis ændringen mellem gennemløb er mere eller mindre end 20000 MessWert_Roll IntegralFehlerRoll Mess_IntegralRollk2 Hvis intergrale fejlen er over 8000 AD_Roll_Neutral Mess_intergral_Roll Intergral_Roll 1/256 MittelIntegralRoll Lagekorrektur_Roll Intergral_Nick2 1/256 MittelIntegralNick2 AD_Nick MessWert_Nick IntegralFehlerNick Mess_IntergralNick2 AD_Nick_Neutral Mess_intergral_Nick Intergral_Nick 1/256 MittelIntegralNick Lagekorrektur_Nick Hvis ændringen mellem gennemløb er mere eller mindre end 20000 Hvis intergrale fejlen er over 1000 Figure 66 Fortsættelsen af Figure 64,Figure 65 og Figure 66 87

Intergral_ACC_Nick GyroACCfaktor/256 GyroACCfaktor/256 Intergral_ACC_Roll IntegralFehlerNick 1/GyroAccAbgleich ausgleichnick 1/256 Lagekorrektur_Nick IntegralFehlerRoll 1/2048 Hvis intergrale fejlen er over 8000 1/GyroAccAbgleich ausgleichroll 1/256 Lagekorrektur_Roll 1/256 MittelIntegralRoll 1/2048 1/256 MittelIntegralNick Hvis intergrale fejlen er over 1000 Figure 67 88

AD_Yaw MessWert_Yaw Mess_intergral_yaw Intergral_Yaw AD_Yaw_Neutral MessWert_Yaw_bias AD_Neutral_Yaw_bias Figure 68 89

GasMischanteil 1/Stick_gain Motor Venstre Mess_wert_yaw Yaw_Mischanteil begrænser Stick_yaw Stick_gain GasMischanteil 1/Stick_gain begrænser1 Motor Højre Intergrale_Roll Intergrale_factor 1 s Summe_roll Ki PD_ergbnis_Roll Mess_wert_roll Stick_Roll Figure 69: Udregning af motor hastighed 90

GasMischanteil 1/Stick_gain Motor Front Mess_wert_yaw Yaw_Mischanteil begrænser2 Soll_yaw Stick_gain GasMischanteil 1/Stick_gain begrænser3 Motor Bag PD_ergbnis_Nick Intergrale_Nick Intergrale_factor 1 s Summe_Nick Ki Mess_wert_Nick Stick_Nick Figure 70: Udregning af motor hastighed 91

Bilag Måle data for Thrust målinger ligger i thrust malinger.xls Thrust vs spænding ligger i thrust malinger.xls Data til grundlag for IR kalibrerings formel ligger i calibreing.xls Måledata for IR sensor støj ligger i calibreing.xls Måledata for 10min test ligger i 10min test.xls Måledata for PID regulator som er implanteret ligger i Pid_regulator_virker_kp7.xls Måledata for oscillerende PID regulator ligger i pid_regulator_oscilere_kp12.xls Måledata for step response tests ligger i 0_5_meter_step_response_gain_5.xls 0_5_meter_step_response_gain_12.xls 0_5_meter_step_response_gain_14.xls 0_5_meter_step_response_gain_17_6.xls 92