09.07.2015 Views

Bacheloroppgave - Elektra - Linjeforeningen for elektro ved HiST

Bacheloroppgave - Elektra - Linjeforeningen for elektro ved HiST

Bacheloroppgave - Elektra - Linjeforeningen for elektro ved HiST

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

HØGSKOLEN I SØR-TRØNDELAGAvdeling <strong>for</strong> teknologiProgram <strong>for</strong> <strong>elektro</strong>- og datateknikk7004 TRONDHEIM<strong>Bacheloroppgave</strong>Oppgavens tittel:Utvikling av R/C-helikopter (toveis 2.4GHz)Project title:R/C-helicopter development (two-way 2.4GHz)Gitt dato: 08.11.10Innlev.dato: 23.05.11Antall sider/bilag103/18Nettside: http://hekta.org/~hpe1115Gruppedeltakere:Vegard Hella (VH) tlf: 91 81 40 40sjekk_it@hotmail.comØyvind Andre Sandberg (ØAS) tlf: 95 90 58 16oeasand@gmail.comVeileder:Valdemar Finangervaldemar.finanger@hist.notlf: 95 08 94 46Jesper Toftenes (JT) tlf: 99 53 05 63jesper.toftenes@gmail.comChristian Wilhelmsen (CW) tlf: 45 45 98 55christian.wilhelmsen87@gmail.comStudieretning:Elektronikk v/ program <strong>for</strong> <strong>elektro</strong>- og datateknikk.Oppdragsgiver:Nordic Semiconductor ASAProsjektnummer:E1115Kontaktperson hosoppdragsgiver:Runar Skogstad Kjellhaugrunar.kjellhaug@nordicsemi.notlf: 72 89 89 38Fritt tilgjengeligxTilgjengelig etter avtale med oppdragsgiverRapporten frigitt etter


Forord<strong>Bacheloroppgave</strong>n nRFCopter ble gitt av Nordic Semiconductor ASA til gruppen i november 2010. Viskal bygge et fjernstyrt leketøyshelikopter basert på Nordic Semiconductor sin nRF24LE1. Arbeidet påprosjektet startet så vidt i desember, hvor gruppen hadde første møte med oppdragsgiver og opprettethjemmeside. I januar 2011 startet prosjektet <strong>for</strong> fullt og <strong>for</strong>tsatte til innleveringsdato 25. mai 2011. Forgruppen handler oppgaven om å tilegne seg ny og relevant erfaring med <strong>elektro</strong>nikk. Prosjektet utgjør20 studiepoeng.Rapporten skal fungere som dokumentasjon <strong>for</strong> oppgaven. Vi vil henvende oss til <strong>elektro</strong>nikk ogtelekommunikasjon <strong>ved</strong> Høgskolen i Sør-Trøndelag og Nordic Semiconductor, men alle som har interesseav rapporten kan lese og komme med tilbakemeldinger.Gruppen består av 4 tredjeårsstudenter <strong>ved</strong> <strong>elektro</strong>nikk <strong>ved</strong> Høgskolen i Sør-Trøndelag. Gruppenhadde som plan å implementere høydemåler, GPS, PC-oppkobling, approksimasjonssensor ogightassistant. Disse tingene måtte gruppen dessverre gruppen gå bort fra, da gruppen var litt ivrig ihva som skulle være med i prosjektet.Vi vil gjerne rette en stor takk til vår veiledere Valdemar Finanger og Runar S. Kjellhaug, NordicSemiconductor <strong>for</strong> utviklingsverktøy og komponenter, og til alle andre som har bidratt til prosjektet.Vi vil også gjerne takke <strong>Elektra</strong> <strong>for</strong> utlån av nRFgo Starter Kit i begynnelsen av prosjektet, og <strong>for</strong> utlånav verktøy.V


AnsvarsområderRapportVegard Hella Jesper Toftenes Øyvind A. Sandberg Christian Wilhelmsen3. LiPo-batteri 4.5 Gzll og Gzp Forside Sammendrag4.4 ESC 4.7.3 1-Wire Forord 3. Spesikasjoner5.2 ESC 5.1.2 Helikopter 1. Innledning 4.1 Helikopter5.3 PSU 5.4 Kompass 2. Metoder og kilder 4.2 Eksternt minne5.7 Batterimonitoren 5.5 Gyroskop 4.7.2 I2C 4.6 8051-Timere6.4 ESC 5.6 Akselerometer 5.1.1 Fjernkontroller 4.7.1 SPI6.8 Batterimonitoren 6.1 HAL 6.5 Kompass 5.8 Produksjon og...7.5.4 MOSFET 6.2 Trådløs komm... 7.2 Utviklingsverktøy 6.3 Servo7.5.6 Batterimonitor 6.6 Gyroskop 7.4 Modulbasert arbeid 6.9 Display7.5.7 MOSFET-støy 6.7 Akselerometer 7.5.2 Prototyping 6.10 Ekstern ash7.5.8 Sikkerhetsrutiner 6.11 Implementering 7.5.3 Sykdom 7.5.5 Lite minne7.1 Innkjøp 7.5.9 Debug og ISP 8. Resultat7.5.1 Gzll 9 Konklusjon 10. Diskusjon10.1 Videreutvikling BruksanvisningProsjektetVegard Hella Jesper Toftenes Øyvind A. Sandberg Christian WilhelmsenESC Trådløs kommunikasjon Fjernkontroll Eksternt minnePSU 1-Wire Kompass DisplayBatterimonitor Gyroskop Debug og ISP Servostyring1-Wire Akselerometer I2C TimereInnkjøp Implementering SPIInnkjøpMontering helikopterkortGazellReservekretsHelikopterkrets22. mai 2011Vegard HellaØyvind A. SandbergJesper ToftenesChristian WilhelmsenVI


InnholdInnholdVII1 Innledning 11.1 Bakgrunn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Oppgavebeskrivelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Mål . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Oppbyggning av rapporten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Metoder og kilder 43 Spesikasjoner 54 Teori 64.1 Helikopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.1.1 Virkemåte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.1.2 Fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2 Eksternt minne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2.1 Flash eller EEPROM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2.2 Kommunikasjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.3 LiPo-batteri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.4 Electronic Speed Control (ESC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.4.1 Virkemåte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.4.2 MOSFET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.4.3 Shunt-diode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.4.4 PWM-signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.5 Gazell Link Layer og Gazell Pairing Library . . . . . . . . . . . . . . . . . . . . . . . . . 124.5.1 Generell virkemåte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.5.2 Innstillinger <strong>for</strong> kommunikasjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.6 8051-Timere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.6.1 8051-timere og registere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.6.2 Hvordan fungerer en timer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.6.3 Timermoduser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.7 Kommunikasjonsmetoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.7.1 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.7.2 I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.7.3 1-Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17VII


5 Hardware 195.1 Utlegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.1.1 Fjernkontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.1.2 Helikopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.2 Electronic Speed Control (ESC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2.1 Spesikasjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2.2 Utførelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.3 PSU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.3.1 Spesikasjoner BEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.3.2 Spesikasjoner fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.4 Kompass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.5 Gyroskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.6 Akselerometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.7 Batterimonitoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.7.1 Maxim Smart Battery Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.7.2 Utlegget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.8 Produksjon og montering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Firmware 286.1 HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286.2 Trådløs kommunikasjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286.2.1 Virkemåte i fjernkontroller (device) . . . . . . . . . . . . . . . . . . . . . . . . . . 286.2.2 Virkemåte i helikopter (host) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.2.3 Innstillinger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.3 Servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.4 ESC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.4.1 PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.4.2 Rotorhastighet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.4.3 Sikkerhetsfunksjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.5 Kompass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.6 Gyroskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.7 Akselerometer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.8 Batterimonitoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.8.1 Kommunikasjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.8.2 Tilbakemelding av batteristatus og klokke . . . . . . . . . . . . . . . . . . . . . . 366.8.3 Kalibreringsprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.9 Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.9.1 Skrive grakk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.9.2 Animert grakk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.10 Ekstern ash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.10.1 Kommunikasjon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.10.2 Lagring av data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.11 Implementering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39VIII


7 Gjennomføring 407.1 Innkjøp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407.2 Utviklingsverktøy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417.2.1 Arbeid med development kits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417.2.2 Utviklermiljø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.3 Modulbasert arbeid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.4 Problemer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4.1 Gzll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4.2 Programvare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4.3 Sykdom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437.4.4 MOSFET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.4.5 Lite minne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.4.6 Batterimonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.4.7 MOSFET-støy (ringing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.4.8 Sikkerhetsrutiner batterimonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . 467.4.9 Debug og ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Resultat 489 Konklusjon 5010 Diskusjon 5110.1 Videreutvikling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5210.1.1 Trim og sikkerhet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5210.1.2 Flight-assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5210.1.3 Sensorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53ReferanserNomenklaturRegisterTabellerFigurerVedleggiviviviiiixixA Utlegg og kretsskjemaxiA.1 Helikopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiA.1.1 Utlegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiA.1.2 Kretsskjema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiiA.2 Fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivA.2.1 Utlegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xivA.2.2 Kretsskjema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvA.3 Batterimonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviA.3.1 Utlegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviIX


A.3.2 Kretsskjema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiA.4 Reservekrets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiA.4.1 Utlegg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiA.4.2 Kretsskjema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xixB AntennetuningxxB.1 Smith-skjema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiB.2 SWR-plott . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiiC RegnskapxxiiiD DelelisterxxvD.1 Helikopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviD.1.1 Reservekrets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviD.1.2 Prototype revisjon 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviiD.2 Fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviiiD.3 Batterimonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviiiE Innhold CD xxixF Brukermanual xxxF.1 Norsk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiF.2 Engelsk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiiG FagartikkelxxxiiiH TimelisterxxxviH.1 Individuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxviiH.2 Totalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxviiiX


SammendragNordic Semiconductor hadde et ønske om å få laget et leketøyshelikopter som kunne være endemonstrasjon på nRF24LE1 og dens egenskaper til å utnytte mulighetene <strong>ved</strong> to-veis kommunikasjonmed deres 2.4GHz radioteknologi. Dette har betydd at alt av <strong>elektro</strong>nikk, både i fjernkontroll oghelikopter, har blitt byttet ut på helikoptersettet vi kjøpte i starten av oppgaven.Med dette som bakgrunn har vi valgt å sette på så mange relevante sensorer som mulig på helikopteretog vise fram <strong>ved</strong> hjelp av et display på fjernkontrollen at vi får både batteri- og sensordata tilbake frahelikopteret. Denne teknologien nnes allerede på markedet, men disse fjernkontrollene er ekstremt dyre,og det nnes per dags dato ingen helikopteret i lavprisklassen som sender data tilbake til operatøren.Resultatet vårt ble et helikopteret som sender in<strong>for</strong>masjon om egenrotasjon og akselerasjon i x-, y-, ogz-retning, kompasskurs, gjenstående og total yvetid og batteristatus tilbake til brukeren som operererfjernkontrollen.Oppgaven var veldig åpen og vi kk lite begrensninger fra oppdragsgiver om hvilke spesikasjonerhelikopteret skulle ende opp med. Dette var en stor <strong>for</strong>del med tanke på at vi kk satt kreativitetenpå prøve og virkelig lage et produkt vi føler er like mye vårt som oppdragsgiver sitt. Det negative er atsom ambisiøse, lekelystne ungdommer, kan man bli litt vel overambisiøse med tanke på hva vi kunnetenkt oss å ha med i prosjektet. Ideene som kom fram under <strong>for</strong>beredelsene til prosjektet var mange,morsomme og smarte, og vi har vært nødt til å kutte ut veldig mye med tanke på tiden det tar å utviklede <strong>for</strong>skjellige løsningene, og samtidig sørge <strong>for</strong> at demonstrasjon av to-veis kommunikasjon har værtden røde tråden gjennom hele prosjektperioden.Det viste seg raskt at prosjektet gav oss stor glede, og det gikk veldig kort tid før helikopteretvar y<strong>ved</strong>yktig med egen hardware og rmware. Selv om dette var milepælen vi så <strong>for</strong> oss å være detmest krevende, skulle det vise seg at de verste problemene dukket opp når ere sensorer og funksjonerskulle implementeres. Gruppen har hatt lite til ingen erfaring fra før med bruk av sensorer og trådløskommunikasjon, noe som har gjort at lærekurven har vært nokså bratt. Dette har også selvfølgelig ført tilat vi har måttet lære oss å virkelig gjøre research og sette oss inn i emner vi har hatt store vanskelighetermed å <strong>for</strong>stå, men med hardt arbeid og et stort ønske om å komme i mål med et godt resultat, harvi tilegnet oss in<strong>for</strong>masjon fra et bredt spekter innen<strong>for</strong> fagfeltet og sitter igjen med nyttig lærdom oggode erfaringer.XI


AbstractNordic Semiconductor desired a toy helicopter that could function as a demonstration of their nRF24LE1microcontroller, and its abilities to use the opportunities that comes with two-way communication withtheir 2.4GHz radio technology. This means that all of the electronics, both in the remote controllerand the helicopter, has been replaced on the original helicopter-kit we bought in the beginning of theproject.With this background, we have chosen to utilize as many relevant sensors as possible, and showvarious data on a display attached to the remote controller. On the screen, we show that we receiveboth battery status and sensor data from the helicopter. This technology exists on the market already,but these remote controllers are very expensive and there are currently no similar available helicoptersin the low-cost range. The result of the project is a helicopter which sends back in<strong>for</strong>mation on selfrotationand acceleration in the x-, y-, and z-axis, compass heading, estimated and total ight time andbattery status.This assignment was very versatile, and we had few limitations from our client in terms of whatspecications the nished product would have. This was a huge advantage considering that our creativitywas put to the test, and we really got to produce a product we think is as much our product as itis the client's. The negative side is that as overambitious students, it's easy to aim too high whenbrainstorming about functionality. The ideas that came to light while preparing the project were many,funny and smart. We had to cut down on a lot, considering the time it would take to develop thedierent solutions, while also ensuring that demonstration of two-way communication has been thecommon thread throughout the project.The project quickly gave us great joy, and it wasn't long until the helicopter was able to y on itsown, with custom hardware. Although this milestone was assumed to be the most demanding task, itappeared that the biggest problems arose when several sensors and functions was implemented. Thegroup has had little to no experience with work like this be<strong>for</strong>e, which had made the learning curvefairly steep. This meant that we had to learn to do our research thoroughly, and put ourselves intotopics we have had great diculty understanding. With hard work and a great desire to reach the goalwith a good result, we have gained in<strong>for</strong>mation from a wide range in the eld and are left with usefullessons and good experiences.XII


Kapittel 1Innledning1.1 BakgrunnI ere tiår har fjernstyrte leketøy i lav/middelspris-segmentet vært dominert av enkle en-veisradioløsninger som opererer på 27MHz/35MHz/40MHz eller IR, og utviklingen på dette området harvært meget begrenset. Med dagens fjernstyrte leketøy, hvis man skal operere ere enheter innen<strong>for</strong> etbegrenset område, må hver enkelt aktør bestemme frekvenskanal <strong>ved</strong> fysisk å plugge inn et krystall meden bestemt frekvens <strong>for</strong> å på denne måten unngå at leketøyene <strong>for</strong>styrrer hverandre. I tillegg har hveraktør ofte bare 2-4 kontrollkanaler tilgjengelig.Med Nordic Semiconductor sin 2.4GHz to-veis radioteknologi nnes ikke slike begrensninger. Ettilnærmet ubegrenset antall aktører kan operere i samme område og antall kontrollkanaler <strong>for</strong> hvertleketøy er mye høyere. I tillegg åpner to-veis kommunikasjon <strong>for</strong> muligheten <strong>for</strong> feedback fra leketøyet.Dette kan <strong>for</strong> eksempel være in<strong>for</strong>masjon om batteristatus, fart, høyde og generelle data fra innebygdesensorer.Nordic Semiconductor holder til på Valentinlyst i Trondheim og er en verdensledende bedrift pådet trådløse markedet. Nordics produkter nnes i alt fra trådløse tastatur og mus, treningsutstyr,fjernkontrollere, 3D-briller, leketøy og lyskontrolleringssystem.1.2 OppgavebeskrivelseOppgaven gikk ut på å la studentene lage et leketøyshelikopter som fjernstyres <strong>ved</strong> hjelp av 2.4GHzradioteknologi (nRF24LE1) fra Nordic SemiConductor. Det skal tas utgangspunkt i et eksisterendehelikopter/fjernkontrollsett hvor man bytter ut hardwaren med en 2.4GHz radio/mikrokontroller-løsningfra Nordic SemiConductor. Studentene har fått frie tøyler til å gjøre oppgaven slik de vil. Begrensningenligger i prisen på helikopter, som oppdragsgiver vil ha i prisklasse 1000 - 1500 kr. Dette er en oppgavemed muligheter <strong>for</strong> lek og alvor. Studentene gis muligheter til å utfolde seg i en verden med R/C-leker,design og utlegg av kretskort, utvikling av rmware og skru litt mekanikk.1


1.3. MÅL KAPITTEL 1. INNLEDNING1.3 MålVed starten av prosjektet denerte vi følgende mål i <strong>for</strong>prosjektet:Eektmålˆ Lage et fungerende radiostyrt helikopter som styres med Nordic Semiconductors 2.4GHzNRF24LE1+ mikrokontrollere.ˆ Minimalisert batteri<strong>for</strong>bruk.ˆ Lavest mulig pris.ˆ Morsomt og enkelt å bruke.Resultatmålˆ Opprette kommunikasjon til/fra helikopteret Styre helikopteret via kontrolleren <strong>ved</strong> å endre servo og motorverdier. Lage utlegg <strong>for</strong> krets på helikopteret og til kontrolleren.ˆ Batteristatus og andre sensorer til transmitter. Sende gyroskop-, akselerometer- og kompass-avlesninger tilbake til kontroller. Display eller PC-program <strong>for</strong> avlesning og logging av sensordata in-ight.ˆ Flight Assistant. Et automatisert system <strong>for</strong> å gjøre yvningen enklere. Bruke høydemåler, approksimasjonssensor, gyroskop og akselerometer automatisk ikontrolleren.ˆ Ca 450 arbeidstimer per person.ˆ Prosjektet er avsluttet innen 5.Mai 2011.ProsessmålVi <strong>for</strong>venter av oss selv å få et ferdig prototyp av helikopteret yvende. Det må kunne utføre deegenskapene helikopteret hadde før vi startet arbeidet på det. I tillegg ønsker vi selv å få på så myeav sensorer og tilleggsutstyr som mulig <strong>for</strong> å ytterligere øke underholdningsverdien og yveegenskapenetil helikopteret. Personlig utbytte av prosjektet vil være faglige kunnskaper, praktiske erfaringer avprosjektarbeid, en god karakter og selvfølgelig at vi har det gøy under prosjektet.2


KAPITTEL 1. INNLEDNING 1.4. OPPBYGGNING AV RAPPORTEN1.4 Oppbyggning av rapportenHo<strong>ved</strong>prosjektrapporten starter med en innledning hvor leseren blir presentert med oppgavebakgrunn,beskrivelse og oppbygning. Videre går rapporten gjennom kilder og metoder <strong>for</strong> arbeidet gjort iprosjekttiden, deretter spesikasjoner <strong>for</strong> oppgaven.Rapporten er så delt opp i teori, rmware og hardware. Dette er den tekniske delen av oppgaven,hvor leser først får en innføring i de litt spesielle tingene med R/C helikopteret. Hardware tar <strong>for</strong> segutlegg og komponenter, mens rmware tar <strong>for</strong> seg programmeringsbiten.I kapittelet gjennomføring har vi valgt å legge det administrative. Dette vil være innkjøp,utviklingsverktøy som har blitt brukt, prototyping, individuelle arbeidsmetoder og til slutt problemervi har opplevd gjennom prosjektet.Resultater, konklusjon og en diskusjon kommer til slutt. I diskusjonen drøfter vi ulikeproblemstillinger som har oppstått.Vedlegg A har kretsskjema, utlegg og tekniske ting. Vedlegg B har administrative ting.Faguttrykk er <strong>for</strong>klart i nomenklaturen.3


Kapittel 2Metoder og kilderPå Internett har vi funnet det meste av vårt sto, det innebærer datablad, applikasjonsnoter og lignendeprosjekter. Vi var tidlig ute med å ta kontakt med de butikkene her i byen som tilbyr radiostyrte leketøy,her kk vi gode tips og <strong>for</strong>slag.Wikipedia har vært en god kilde, men dette er en kilde som gruppen har vært klar over kan endresav hvem som helst. Det meste av stoet har blitt dobbelsjekket før det har blitt tatt i bruk. Databladerog applikasjonsnoter vi har brukt kan sies å være vår ho<strong>ved</strong>kilde. Vi har også hatt god kontakt medoppdragsgiver <strong>for</strong> in<strong>for</strong>masjon rundt mikrokontroller. Diverse <strong>for</strong>um har blitt brukt når det er ting vier usikre på rundt helikopterbiten eller generell programmering.4


Kapittel 3Spesikasjonerˆ Toveis trådløs kommunikasjon nRF24LE1 (mikrokontroller og sender/mottaker) 2.4GHz radiokommunikasjon 1mbps air datarate 100m rekkevidde ~15cm dynamic proximity pairingˆ Periferienheter 3-akse akselerometer 3-akse gyroskop 2-akse kompass Batterimonitor Displayˆ Helikopter Vingespenn: 340 mm. Lengde: 435 mm. Høyde: 185 mm. Bredde: 95 mm.Det brukes en nRF24LE1 mikrokontroller med innebygd sender/mottaker til å utføre to-veiskommunikasjon mellom fjernkontroll og helikopter. All data fra periferienhetene vises på displayetsom er montert på fjernkontrollen der man får in<strong>for</strong>masjon om helikopterets yvetid, egenrotasjon ogakselerasjon, kompasskurs og batteristatus hos begge enhetene. Batteripakken er et LiPo på 7.4VDC oger beskyttet mot underspenning <strong>ved</strong> hjelp batterimonitoren som er montert som et mellomledd mellombatteri og helikopter. Fjernkontrollen benytter 8 stk AA batterier og har innebygget antenne.Helikopteret må parres med fjernkontrollen før kommunikasjon blir opprettet. Dette gjør at manunngår uønskede <strong>for</strong>styrrelser fra andre kilder, da de parrede enhetene kun kan kommunisere medhverandre. Oppstart av helikopterets motorer før parring vil ikke <strong>for</strong>ekomme.5


Kapittel 4Teori4.1 HelikopterRadiostyrte helikoptere er noe av det mest avanserte man nner i hobbybutikkene, i både funksjonalitetog i bruk. Vanskelighetsgraden i bruken av helikopteret er høyt, da det kan bevege seg i seks retninger:framover, bakover, til venstre, høyre, opp og ned.4.1.1 VirkemåteI de mest vanlige helikoptere er det en ho<strong>ved</strong>rotor og en halerotor. Ho<strong>ved</strong>rotoren sørger <strong>for</strong> oppdrift, oghalerotoren motvirker rotasjonskraften ho<strong>ved</strong>rotoren skaper.Helikopteret vi bruker er et kontraroterende helikopteret. Dette vil si at det har to ho<strong>ved</strong>rotorerover hverandre som roterer i hver sin retning. Dette gjør helikopteret meget stabilt og lett å bruke <strong>for</strong>nybegynnere. Da de kontraroterende bladene motvirker hverandres rotasjonskraft, vil helikopteret ideeltsett hovere perfekt uten å manuelt måtte justere <strong>for</strong> egenrotasjon. I stedet <strong>for</strong> å bruke en halerotor <strong>for</strong>å snu helikopteret rundt sin egen akse, gjøres dette <strong>ved</strong> å skru opp eller ned kraften på en av rotorene.Teoretisk sett har disse helikopterene heller ikke bruk <strong>for</strong> et gyroskop som måler egenrotasjonen. Dettegjør at man slipper unna mye justering av helikopteret før det er klart til å y.Rotorhastighetene styres <strong>ved</strong> hjelp av hver sin motor, og rotorbladenes vinkel justeres <strong>ved</strong> hjelp avto servoer. Når man ønsker å y fram og tilbake eller til sidene gjøres dette <strong>ved</strong> at to servoarmer justererpå en såkalt swash-plate, som tilter rotorbladene i sine respektive retninger.Dessverre er ikke kontraroterende helikoptere helt perfekte. Helikopteret er veldig sensitiv til at beggerotorene må bevege seg i nøyaktig samme hastighet <strong>for</strong> å ikke rotere rundt seg selv. Økt stabilitet gårdessverre på bekostning av helikopterets responstid.6


4.2. EKSTERNT MINNE KAPITTEL 4. TEORI4.2 Eksternt minneNår man har behov <strong>for</strong> ekstra lagringsplass kan man benytte seg av eksternt minne. Dette kan brukestil å lagre loggført data og til grakk som skal brukes til display. Slike minnemoduler nner man gjernei USB-pinner, SSD, minnekort og MP3-spillere.4.2.1 Flash eller EEPROM?Når man skal velge hvilken type eksternt minne man skal bruke, er egenskaper som pris, kapasitet,<strong>for</strong>syningsspenning, strøm<strong>for</strong>bruk og hastighet viktige[24].EEPROM (Electrically Erasable Programmable Read Only Memory) har muligheten til å slette ogskrive individuelle bytes, og mister ikke dataene <strong>ved</strong> strømtap. EEPROM brukes gjerne i applikasjonerder man har behov <strong>for</strong> å lagre mindre data som må ligge lagret selv om strømmen til brikken blir kuttet.Flash-minne er meget lik EEPROM. Forskjellen ligger i at det er delt opp i områder, eller pages, ogkan der<strong>for</strong> kun skrive til hele dataområder. Fordelen med å bruke ash er at det er billigere og tar oppmindre fysisk plass. Flash-minne har også mye større kapasitet til samme pris som en EEPROM. Fraash kan man også lese og skrive til individuelle bits. Problemet er at hvis en bit skal endres individueltmå den være høy, eller '1' <strong>for</strong> å kunne endres. Skal man endre en bit som fra før er '0' er eneste løsningå slette hele området og skrive in<strong>for</strong>masjonen inn på nytt igjen.I vårt tilfelle har vi ikke bruk <strong>for</strong> å endre biter av minnet, men kun ha et statisk område man kanlese in<strong>for</strong>masjon fra. På bakgrunn av dette har vi valgt å bruke ekstern ash til prosjektet, der det ogsåkan brukes til å loggføre eksempelvis ydata.4.2.2 KommunikasjonNår man skal kommunisere med eksterne minnemoduler bruker man gjerne I2C eller SPI. Til ashen vibruker kommuniserer vi <strong>ved</strong> hjelp av SPI. Her må man huske å sjekke hvor høy frekvens slaven støtter,og hvilke SPI-kongurasjoner man kan bruke. Modulen er styrt med en rekke instruksjoner som blirsendt fra masterenheten. Som man kan se i seksjon 6.10.1 på side 38, er brikken delt opp i <strong>for</strong>skjelligeminneområder, og man må der<strong>for</strong> oppgi adressen til området man ønsker å aksessere før man kan leseeller skrive data[3].4.3 LiPo-batteriLitium-ion-Polymer har størst energikapasitet per vektenhet når vi ser på kommersielt tilgjengeligebatteriteknologier. De vanligste batteripakkene kommer med enten 2 eller 3 celler. Èn celle leverernominelt 3,7V, derav kommer batteripakkene på 7,4V og 11,1V. Maksspenning per celle er 4,23V, og <strong>ved</strong>utlading burde ikke cellespenningen falle under 3,0V[45]. Hvis LiPo-celler utlades til mindre enn 3,0V,taper de kapasitet og kan bli ustabile under opplading. LiPo-batteri krever en mer sostiskert lademetodeenn de eldre batteriteknologiene. De er svært følsomme <strong>for</strong> overlading, ladespenning og ladestrøm. LiPokan kun lades med spesielle ladere som begrenser strømmen og beskytter mot overlading. Disse ladernebalanserer også cellene <strong>ved</strong> å tappe strøm fra de cellene som ligger på et høyere potensiale enn de andre.Altså må laderen ha tilgang til hver enkelt celle. Overlades en LiPo-celle kan den eksplodere eller ta8


KAPITTEL 4. TEORI 4.4. ELECTRONIC SPEED CONTROL (ESC)fyr[19]. For å minske eksplosjonsfaren er LiPo-celler pakket i myk plast og ikke metall. Det medførerøkt fare <strong>for</strong> punktering og man burde være obs på bulker i LiPo-pakningen.På en LiPo-batteripakke er det vanlig å angi kapasitet i milliampère timer, nominell spenning ivolt og kontinuerlig utladingskapasitet, C-rating[20]. Mengden strøm som kan trekkes fra batteriet eravhengig av indreresistans på grunn av varmeutviklingen som oppstår. C-ratingen <strong>for</strong>teller oss hvor myeav den totale kapasiteten til batteriet som kan trekkes ut kontinuerlig, uten å skade batteriet. I ampèreblir dette:I[A] = C-rating[C]·Kapasitet[Ah] (4.1)Til sammenligning er vanlige AA-batterier alkaliske, eller laget av sink-karbon. Disse har en nominellcellespenning på 1,5V, der spenningen varierer fra 1,65V fulladet til mellom 0,8V og 1,0V utladet.4.4 Electronic Speed Control (ESC)En ESC har som <strong>for</strong>mål å styre hastigheten på en elektrisk motor <strong>ved</strong> hjelp av et styresignal. Denkan ha revers, brems og ulike sikkerhetsfunksjoner, <strong>for</strong> eksempel strømbegrenser og sikker oppstart. Ensostikert ESC har i tillegg regenerativ brems som lader batteriene, og en reguleringssløyfe som <strong>for</strong>sikrerhastigheten 1 . En ESC kan være laget <strong>for</strong> motorer med og uten børster. Enkelte ESC-er, beregnet påR/C-modeller, inneholder også en BEC 2 . BEC-en er PSU-kretsen mellom driftsbatteri og mottaker.Den har gjerne en sikkerhetsfunksjon som deaktiverer motorene <strong>ved</strong> lavt batterinivå <strong>for</strong> å <strong>for</strong>tsatt kunne<strong>for</strong>syne styringsenhet og servoer.[44] Vi skal <strong>for</strong>holde oss til teorien bak en enkel ESC, der vi kun variererhastigheten over en DC-motor med børster.4.4.1 VirkemåteI en DC-motor er hastigheten proporsjonal med spenningen, og strømmen proporsjonal med lasten[14].For å variere hastigheten ønsker vi da å kontrollere spenningen over motoren. For å unngå unødvendigeeekttap er spenningsdeling uaktuelt. En mer eektiv måte å justere likespenningen er med et PWMsignal.Det er <strong>for</strong>utsatt at frekvensen er høy nok så lasten ser gjennomsnittet av spenningen og oppførerseg tilsynelatene upåvirket. Variasjon i duty-cycle vil da variere gjennomsnittspenningen.Om man vil switche spenningen over en motor må man ta hensyn til at den er induktiv. Spolene ogmomentet i motoren vil drive strøm videre selvom vi kutter spenningen. For at det da ikke skal oppstået destruktivt spenningsfall over bryteren plasser vi en shunt-diode over motoren. Da vil spolen drivestrømmen igjennom dioden og rundt i motoren igjen, se gur 4.3 på neste side[11]. ESCen utfører altsåen DC-DC-konvertering, ikke ulikt prinsippet i en Buck-Converter[43]. For å beskytte mot støy somoppstår i motoren kan en shunt-kondensator tilkobles mellom hver av motorpolene og jord.1 Closed loop ESC.2 BEC-navnet (Battery Eliminator Circuit) kommer opprinnelig fra adaptere som lar deg bruke batteridrevet utstyrrett fra lysnettet.9


Ciss = CGS + CGD, CDS shortedCrss = CGDCoss = CDS + CGDGate-to-drainnonlinearcapacitance, CGD, is aimportant function of voltage and is the mostfeedback parameter because it provides ainput of theloopcircuit.between the output and theCGDMilleris also called thedynamic capacitance because it causes the totalthan the sum input of capacitance the static capacitances. to become greaterFigure circuit. 12 shows a typical switching time testthe rise and Also fall shown times are the components of(a) with Bryter reference på to theVGS and VDS wave<strong>for</strong>ms.Turn-oncharge thedelay,inputtd(on),capacitanceis the timeoftakenthe devicetobe<strong>for</strong>eSimilarly,drainturn-offcurrentdelay,conductiontd(off), iscanthestart.taken to discharge the capacitance aftertimethe after is switched off.4.4. ELECTRONIC SPEED CONTROL (ESC) KAPITTEL 4. TEORI4.4.2 MOSFETFigur 4.3: Strøm<strong>for</strong>yttning(b) Bryter avDL DC GDD'G R GC I Body-drainDC Diode DSS'C GSL SS(a) Symbol (N-kanal)(b) EkvivalentFigur 4.4: Metall-oksid felteekttransistor (MOSFET)En DC-motor krever generelt mye strøm. For at vi skal kunne switche strømmen raskt og eektivt brukervi en N-kanal MOSFET som bryter. Det er en rekke parametre som gjør MOSFET-en attraktiv. Denkan med et lite inngangssignal på gate åpne <strong>for</strong> en stor strømgjennomgang mellom drain og source 3 .I tillegg har den meget lav indremotstand, R DS , i milliohm-området. Indremotstanden er kritisk <strong>for</strong>varmeutviklingen <strong>ved</strong> stor strøm. I en portabel ESC ønsker vi ikke unødvendig vekt som følge avkjøleribber. Transfer-karakteristikken til en MOSFET sier hvor mye strøm som kan trekkes igjennomdrain-source-kanalen. Dette er avhengig av gate-source-spenningen, V GS . Det er viktig at PWM-signaleter kraftig nok til å drive transistoren i metning. En N-kanal MOSFET drives mot metning med positivgate-spenning.Zenerdioden i gur 4.4a, representerer at MOSFET-en kun stopper strøm i en retning, og at denbryter sammen <strong>ved</strong> høyt nok potensiale mellom drain og source, V DSS . I en ESC må break-downspenningentil MOSFET-en være høyere enn batterispenningen siden hele potensialet ligger over brytereni av-tilstand.Switche-hastigheten i en MOSFET ligger langt høyere enn hva som er aktuellt <strong>for</strong> en ESC. Forå begrense switchehastigheten som produserer høyfrekvent støy og ringing, kan en gate-resistor øke3 MOSFET-er som kan lede ere titalls amperè kalles Power-MOSFETs10


KAPITTEL 4. TEORI 4.4. ELECTRONIC SPEED CONTROL (ESC)DIODEMDCMOTORVDCPWMR110kR210 MOSFETC1100nFC2100nFFigur 4.5: En enkel ESCstigetiden (dempingen). Den er typisk 10 til 100 ohm. Siden gaten er kapasitiv (se gur 4.4b på <strong>for</strong>rigeside) må vi ha en gate-source-resistor <strong>for</strong> å sikre oss utlading når PWM-signalet er lavt eller fraværende,<strong>for</strong> eksempel under initialisering av en PWM-generator. Hvis ikke kan kapasitansen trigge MOSFET-enog motoren starte ukontrollert. I tillegg begrenser begge motstandene transienter fra gaten til PWMkilden[14].4.4.3 Shunt-diodeFor å geleide strømmen bort fra MOSFET-en i av-tilstand, plasserer vi en diode over motorpolene.Denne må stå med sperreretning mot batteriet så vi ikke kortslutter det.Det mest energivennlige er å bruke en schottky-diode. En slik diode har et meget lavt nomineltspenningsfall, typisk 0,3V. Den har også høyere switchehastighet enn en tradisjonell diode. Som følgeav dette får vi minst mulig eekttap i dioden og mer kraft til motoren. Den viktigste parameteren <strong>for</strong>dioden er hvor mye strøm den tåler i lederetning. Det må gjenspeile returstrømmen fra motoren. Enulempe med schottky-dioden er at den tåler mindre spenning i revers, typisk 50V. Den må minimumtåle batterispenningen, hvis ikke kan batteriet kortsluttes. En annen ulempe er høy lekkasjestrøm isperreretning i <strong>for</strong>hold til tradisjonelle dioder[48].4.4.4 PWM-signalDet er både positive og negative sider <strong>ved</strong> frekvensen til PWM-signalet. Typiske switche-frekvenser i enESC går fra 50Hz til 50kHz. Er frekvensen høy skapes det mer høyfrekvent støy, som <strong>for</strong> eksempel kankomme i konikt med radiostyring. Høy frekvens minsker også eektiviteten i og med at MOSFET-entilbringer mer tid mellom av- og på-tilstandene. Høy frekvens skaper derimot jevnere motorgang medmindre rippel. Siden switche-frekvensen smitter over i armaturet på motoren, vil motoren lage betraktligmindre støy når frekvensen er høyere enn hørselsregisteret.11


4.5. GAZELL LINK LAYER OG GAZELL PAIRING LIBRARY KAPITTEL 4. TEORI4.5 Gazell Link Layer og Gazell Pairing Library4.5.1 Generell virkemåteMikrokontrolleren nRF24LE1 fra Nordic Semiconductor har full støtte <strong>for</strong> trådløskommunikasjon på2.4GHz båndet.Gazell Link Layer (gzll) og Gazell Pairing Library (gzpair) er to bibliotek som gjør det enklereå håndtere trådløs kommunikasjon. Begge bibliotekene ligger mellom bruker og HAL(HardwareAbstraction Layer, se seksjon 6.1 på side 28), noe som gjør at det er veldig enkelt sette oppkommunikasjonen <strong>for</strong> første gang. Koden vi skriver refererer kun til gzll, gzpair og HAL.Figur 4.6: nRF24LE1 Layers4.5.2 Innstillinger <strong>for</strong> kommunikasjonGzll og gzpair henvender sine funksjoner til to typer enheter i trådløskommunikasjonen, nemlig klient(device) og tjener (host). Tjeneren er den enheten som i ho<strong>ved</strong>sak lytter etter innkommende meldingerog er den enheten som svarer på <strong>for</strong>espørsler om pairing til andre klienter. Klienten i kommunikasjonenvil gjøre klart data, sende dette når den kan til tjeneren og vente på svar. I vårt prosjekt har vi satthelikopteret som tjeneren og fjernkontrolleren som klient. Vi har valgt det slik siden fjernkontrollerenmå konstant sende styringsdata til helikopteret.Via en parameterl tilhørende Gazell stiller man på <strong>for</strong>hånd inn innstillingene <strong>for</strong> trådløskommunikasjonen.Dette inneholder blant annet datarate, lengde på <strong>for</strong>ward- og ack-payload, device- og host-mode ogoutput power i dBm. Her kan det være nyttig å endre datarate <strong>for</strong> økt rekkevidde. Ved å endre deviceoghost-mode kan en få raskere kommunikajson, bedre stabilitet <strong>ved</strong> kommunikasjon til ere enheter ogmindre <strong>for</strong>styrrelser av andre enheter i området.Gzpair-biblioteket vil håndtere pairing av enheter som er en måte å koble sender og mottakersammen. Ved å holde de to enhetene intil hverandre <strong>ved</strong> oppstart knyttes de til hverandre og oppretteren sikker link <strong>for</strong> resten av kommunikasjonen. Gzll styrer resten av den trådløse kommunikasjonen ogkontrollerer blandt annet pakking og håndtering av payload, acknowledgement og kanalstyring.12


KAPITTEL 4. TEORI4.6. 8051-TIMERE4.6 8051-Timere4.6.1 8051-timere og registereTimere i 8051-kontrollere har 3 ho<strong>ved</strong>funksjoner[2]:1. Timer: Holde orden på tid og/eller regne ut tiden i mellom hendelser2. Teller: Telle hendelser3. Generere Baud-hastigheter <strong>for</strong> seriellportenVerdien til et timerregister er inkrementert med 1 hver gang en timer teller. Hver av timerne har hvertsitt 16-bits register, som betyr at de kan telle opp til maks 2 16 = 65536 før de setter overow-agget ogderetter starter fra 0 igjen. Siden 8051 er en 8-bits kontroller er telleregistrene til timerne aksessert i to<strong>for</strong>skjellige registre: ett <strong>for</strong> den laveste byten (TLx), og ett <strong>for</strong> den høyeste (THx), se gur 4.7.Figur 4.7: Timer-registere[38]4.6.2 Hvordan fungerer en timer?I motsetning til f.eks AVR, som har registere som kan holde orden på hvor høyt en teller skal telle, måman i en 8051 laste inn en initiell verdi til telleren som den skal telle fra. Om ingen initiell verdi blirlastet inn vil telleren begynne å telle fra 0x0000. Verdien til timeren inkrementeres hver maskinsykel,som er tiden mikrokontrolleren bruker på å kjøre en instruksjon. En maskinsykel er F CPU /12. For åkunne regne seg fram til hvilken initiell verdi man må legge i tellerregisteret, kan man bruke <strong>for</strong>mel 4.2.Antall bits er 16 eller 8 avhengig av hvilken tellerer man bruker. Det er dessverre kun modus 2 til timer0 og 1 eller Timer 2 som kan reloade til initiell verdi. Timer 2 er den eneste som kan reloade i 16-bitsmodus.Har mikrokontrollerens krystall <strong>for</strong> eksempel en frekvens på 16Mhz vil timeren brukepå å inkrementeres en gang.(2 antallbits −1)−( ) (Tid[µs]12= (2 antallbits −1)− F CPU [MHz]· Tid[µs] )F CPU121216Mhz = 0.75µs(4.2)13


4.6. 8051-TIMERE KAPITTEL 4. TEORI4.6.3 Timermoduser8051-timere har re moduser. Modusene bestemmes i TMOD-registeret[2].Modus Operasjon0 13-bit Timer1 16-bit Timer2 8-bit Timer med Auto Reload3 Split Timer ModeTabell 4.1: 8051s Timer-moduserModus 0 er meget sjeldent brukt i moderne systemer. Den bruker 8 bits i THx, og en 5-bit prescalerfra TLx. Når telleren er i 13-bits modus, vil TLx telle fra 0 til 31 (5 bit). Når TLx inkrementeres fra31, vil TLx resettes til 0 og inkrementere THx. Der<strong>for</strong> vil kun 13 bits av timeren bli brukt og tellerenkan kun telle fra 0x0000 til 0x1FFF, altså 8192 verdier.Modus 1 fungerer på nøyaktig samme måte som modus 0, bortsett fra at den bruker alle 16 bitene.TLx resettes til 0 når den inkrementerer fra 255. THx inkrementeres deretter med 1. Telleren vil der<strong>for</strong>kunne telle fra 0x0000 til 0xFFFF, altså 65536 verdier.Modus 2 er en 8-bits timer der reload-verdien lagres i THx, og TLx er selve timeren. Reload-verdiener den verdien timeren skal bli resatt til når timeren overower. Når telleren har kommet til 255 oginkrementeres, resettes telleren til verdien lastet i THx i stedet <strong>for</strong> 0. Fordelene med modus 2 er at mankan bestemme hvor mange verdier timeren skal telle før den overower og setter agget.Modus 3 kongurerer Timer 0 og 1 til å være en 8-bits timer/teller og en 8-bits timer, der Timer0 er tilknyttet til TL0 og Timer 1 til TH0. Begge timerene overower <strong>ved</strong> 255 og resettes til 0. Alleinnstillinger relatert til Timer 1 vil nå være knyttet til TH0. Når Timer 0 er i split mode, kan Timer1 settes til modus 0, 1 og 2, men man kan ikke starte og stoppe timeren som normalt sidene bitene somstyrer dette er knyttet til TH0. Den kan ikke brukes til noe som er avhengig av interrupt fra Timer 1.Den reelle Timer 1 vil bli inkrementert hver maskinsykel uansett.14


KAPITTEL 4. TEORI4.7. KOMMUNIKASJONSMETODER4.7 Kommunikasjonsmetoder4.7.1 SPI[40, 15]Serial Peripheral Interface, eller SPI, er en kommunikasjonsprotokoll som normalt opererermellom 1 og 70MHz. SPI-enheter kommuniserer i master/slave-modus, der master starterkommunikasjon med slaveenheten. Enhetene utveksler data, og master står <strong>for</strong> klokkesignalet enhetenesynkroniseres etter. Ingen av enhetene kan være kun sender eller mottaker. Klokkesignalet bestemmernår data kan utveksles. Slavene er kontrollert av klokkesignalet fra masterenheten og kan ikke endre påsignalet.Siden SPI har et klokkesignal <strong>ved</strong> siden av datalinjen, kan klokken variere uten at data blir korrupt 4 .Dette gjør SPI ideell når det kommer til mikrokontrollere som ikke er klokket nøyaktig,. Dette er oftetilfellet da det gjerne brukes intern RC-oscillator.En SPI-enhet har følgende I/O-pinner:ˆ MISO - Master In, Slave Outˆ MOSI - Master Out, Slave Inˆ SCK - SPI Clockˆ CS - Chip Select 5Kommunikasjonen starter med at master setter CS til enheten den skal kommunisere med høy eller lav,alt ettersom hva slaven er kongurert til. Masteren kan ha uendelig antall slaver, der MOSI, MISO ogSCK er koblet til alle slavene, men masteren trenger en ekstra I/O <strong>for</strong> hver ekstra slaveenhet. Dettemedfører at kun en slave kan lytte til master av gangen.SPI kan operere i totalt åtte <strong>for</strong>skjellige kongurasjoner, avhengig av tilstanden til følgende treparametere:1. Klokkens polaritet: Aktiv høy eller aktiv lav.2. Klokkens fase: Sample på ledende eller påfølgende anke.3. Bit-rekkefølge: MSB til LSB eller LSB til MSB.Figur 4.8: Eksempel på implementering av to SPI-enheter[40]4 Datasignalet tilpasses automatisk klokkesignalet5 Noen ganger benevnt som SS (Slave Select).15


4.7. KOMMUNIKASJONSMETODER KAPITTEL 4. TEORI4.7.2 I2CNordic Semiconductor og ere andre produsenter bruker TWI, Two Wire Interface, istedet <strong>for</strong> I2C,Inter-Integrated Cicuit. TWI er så og si det samme som I2C, men TWI har ikke High Speed mode.Både I2C og TWI brukes til å kommunisere med <strong>for</strong> eksempel LCD, EEPROM og RAM med mer.[10]I begynnelsen var hastigheten på 100 kbit/s Standard Mode, men opp gjennom årene har hastighetensteget til 400 kbit/s Fast Mode, 1 Mbit/s Fast Mode plus eller FM+ og siste 3.4 Mbit/s High SpeedMode. Det har også kommet en Low Speed Mode på 10 kbit/s. Per dags dato er det veldig få I2C enhetersom støtter High Speed.Figur 4.9: I2C bus ekspempel[9]Hvordan fungerer I2C?I2C bruker to linjer til å kommunisere, serial data (SDA) og serial clock (SCL). Det vil si at allekomponenter som kan bruke I2C, vil bli koblet på disse linjene og har en egen unik I2C adresse. Enadresse er 7 bit lang. Det vil si at et system kan maksimalt ha 128 enheter tilkoblet på SDA og SCL.Alle klokkepulser blir generert av master. SDA og SCL trenger hver sin pull-up resistor koblet tilVTG. Disse holder linjene høye[29].Kommunikasjon <strong>for</strong>egår slik:1. Master sender start condition.2. Master sender I2C adresse med read/write bit til slave.3. Slave sender ack.4. Master skriver eller leser data5. Ack <strong>for</strong> hver byte mottatt.6. Nack sendes <strong>for</strong> å gi beskjed om at den er ferdig og slave opphører sending.7. Stop condition fra master sendes, eventuelt kan en sende repeated start.Figur 4.10: Sending fra start til slutt med repeated start16


KAPITTEL 4. TEORI4.7. KOMMUNIKASJONSMETODER4.7.3 1-Wire1-Wire er et digitalt kommunikasjonsmedium som baserer seg på kun en leder <strong>for</strong> kommunikasjonen.Bus-systemet ble designet av Dallas Semiconductor og er et lav-hastighet singel-signal system. Dettebetyr at vi må ha total kontroll på hvilke signaler som går på linjen, vite når vi skal skrive og når viskal lytte og selvfølgelig bestemme en bus-master på linjen. 1-Wire er ikke veldig ulikt I2C, men skillerseg ut med en lavere datarate og ingen felles klokke.Linja kobles med en pullup-motstand mellom databus og VTG, <strong>for</strong> å skape en logiksk høyd idlesignal6 . Det er denne databusen alle enheter kobles til.Figur 4.11: 1-Wire timing6 Pullup-verdi 4,7KW17


4.7. KOMMUNIKASJONSMETODER KAPITTEL 4. TEORIParameter Forklaring Typ[µs]A Vi drar pinnen lav og venter på stabil verdi <strong>for</strong> å 6indikere start på kommunikasjon.B Vi slipper pinnen og lar Pullup-motstand sette høy verdi 64på busen, logisk '1', og venter over samplingsvinduet.C Vi holder pinnen lav over samplingsvinduet 60<strong>for</strong> å skrive en logisk '0'.D Buertid <strong>for</strong> å vente på at samplingsvinduet har passert. 10E Vi slipper pinnen og venter på stabil verdi før vi 9sampler bit.F Samplingsvinduet <strong>for</strong> lese-bit. Her sampler vi bit 55skrevet fra bus-enhet.G Pinnen er løs og skal holdes stabil av Pullup-motstanden. 0Indikasjon på at busen er ledig.H Vi setter pinnen lav og holder stabil <strong>for</strong> resetpuls. 480I Vi slipper pinnen og pull-up drar pinnen høy. 70Dette indikerer til bus-enhet at presence-puls kan skrives.J Presence-puls er samplet og busen slippes høy som 410indikasjon på fullført reset.Tabell 4.2: 1-Wire timing tabell [22]1-Wire sekvensVed kommunikasjon må vi holde oss til en bestemt sekvens <strong>for</strong> kommandoene. Timing av signalene er<strong>for</strong>klart i gur 4.11 på <strong>for</strong>rige side. Kommandosett nnes i <strong>ved</strong>legg1. Reset-signal sendes på datalinjen <strong>for</strong> å indikere at kommunikasjon starter. Dette gjøres av masterå drive linjen lav og vente minimum 480µs før vi sampler en presence-puls. Etter tilstedepulsen erdetektert må vi vente ytterligere 410µs <strong>for</strong> at reset-sekvensen skal fullføres.2. Kommando til ROM: Neste del av sekvensen krever en kommando til ROM på bus-slaven. Omdet bare er en enhet på buslinjen benyttes SKIP-ROM-kommandoen, <strong>ved</strong> ere enheter benyttesMATCH-ROM. MATCH-ROM er en 64-bits verdi unik <strong>for</strong> hver enhet, og vil fungere som en chipselectså kun riktig slave lytter på linjen. 64-bits verdi gjør at en uendelig mengde enheter kandele datalinje.3. Kommando til minne: Her sendes enten les/skriv-kommando til scratchpad, eller kopier/lagrekommandotil EEPROM. Scratchpad er et internt minne på batterimonitoren som fungerer somet buer <strong>for</strong> data inn og ut av EEPROM. Vi benytter oss av kommandoene <strong>for</strong> å klargjøre datatil Scratchpad, så de kan leses ut <strong>ved</strong> neste kommandoset. Ved lesing fra Scratchpad vil all datafra adressert page i minnet komme <strong>for</strong>tløpende i rekkefølge til hele siden er lest ut.4. Reset-signal avslutter sekvensen, og bus-slave svarer med presence-puls. Ved lesing fra Scratchpadkan vi avbryte avlesningen <strong>ved</strong> å sende reset når vi har lest ut det vi trenger.18


Kapittel 5Hardware5.1 Utlegg5.1.1 FjernkontrollerKretskortet til fjernkontrolleren skal sitte i innfatningen vi kk med. All <strong>elektro</strong>nikk som satt i fra førhar vi tatt ut. Det er kun batteriholder <strong>for</strong> AA-batterier og joystikker som blir brukt i vårt prosjekt.Joystikkene er tilkoblet et potensiometer <strong>for</strong> hver akse. Disse har en ADC-inngang hver.Da vi skal bruke NS sin nRF24LE1, har vi valgt å bruke deres 7x7 utviklermodul(kapittel 7.2.1 påside 41). Dette gjør at vi slipper å tenke på antenneoppsett og kan kjapt sette det inn i chassis til testing.Vi har samtidig ikke så stor begrensning som på helikopteret når det gjelder størrelse på kortet.NS ville at vi skulle bruke en debug-kontakt og en ISP-kontakt, som de bruker til sine prosjekter. Dettegjør det enklere å programmere og feilsøke i koden uten å måtte ta ut utviklermodulen fra fjernkontrollen.BatterimålingMåling av spenning fra AA-batteriene i fjernkontrolleren gjøres via en spenningsdeler inn på ADC.6,5V(maxspenningfrabatteri)·12kΩ= 2,44V(maxspenninginnpåADC) (5.1)12kΩ+20kΩVerdiene på motstandene er valgt ut i fra en sikkerhetsmargin på 25% under VTG på mikrokontroller ifølge likning 5.2VTG−(25%·VTG) = 2,475V (5.2)Her ser vi at max spenning inn på ADC ligger under sikkerthetsmarginen. Dette <strong>for</strong>hindrer ateventuelle spenningstopper går over VTG og inn på ADC inngang som kan ødelegge mikrokontrolleren.Strømtrekket til batterimåleren vil da være:6,5V= 0,20mA (5.3)20kΩ+12kΩ19


KAPITTEL 5. HARDWARE5.1. UTLEGGFigur 5.4: Debug og ISP har hver sin FPC-tilkobling5.1.2 HelikopterI helikopteret har vi designet et kretskort <strong>for</strong> allesensorene, mikrokontrolleren og PCB-antenne.Dermed erstatter vi all tidligere <strong>elektro</strong>nikki helikopteret med vår egen krets med egenkontroller, PSU og ESC.Helikopteret skal styres av mikrokontrollerennRF24LE1 fra Nordic Semiconductor. Dennekontrolleren inneholder en 2.4GHz transcieversom styrer hele den trådløse kommunikasjonenvår. Som antenne bruker vi en PCB-antenne, ogvi har brukt et referansedesign fra Nordic med etbalansenettverk rundt denne.Kretsen etses via NS som bestiller fra Elprint.Komponentene monterte vi selv, på lab hos NS,se utlegget A.1.1 på side xii.Ved design av kortet har vi fokusert på vektog størrelse. Den originale transcieverkretsen ihelikopteret inneholdt to mindre kort som varFigur 5.5: Helikopterkretskortetkoblet sammen og hadde kontakter til servoene og motorene. Vi valgte å designe et tosidig kort, ikketo separate kretser vi kunne koble sammen. Alle sensorene rundt kretsen har ere tilkoblinger enn dettidligere kortet, så to separate kort med få koblinger mellom var vanskelig å gjenskape.Referansedesignet og hjelp av designavdelingen på Nordic viste oss hvordan matchenettverket skullesettes opp, legge jordplan og skjerme antenna <strong>for</strong> støy fra kretsen. PCB-antenna har blitt tunet på labhos Nordic <strong>for</strong> optimalisert eekt og rekkevidde.Kortet måler 60x44mm og inneholder 3-akse gyroskop, 3-akse akselerometer, kompass, ISP-header,ESC og PSU.Trace width Trace clearance Via diameter Via drill diameter Longest trace Shortest trace10 til 98 mils 10 til 30 mils 24 mils 12 mils 7260 mils 9 milsTabell 5.2: Designregler helikopterKortet inneholder en ISP-header <strong>for</strong> programmering av brikka etter montering. Det er en 3-pinheader <strong>for</strong> batteritilkobling med 1-wire datalinje i midten. Servoene er tilkoblet via 2stk 3-pins header;5V, PCM-signal og jord. Motorene er tilkoblet med 2stk 2-pins header.21


MaksAmpere( ) C[mil 1 2 ]K·Temperatur/okning BKoppertykkelse[mil]= ( 8[A]0.048·35[ o C]) 0.725 [mil 2 ]0.44 = 97.3[mil] = 2.47mm1.378[mil]


KAPITTEL 5. HARDWARE5.2. ELECTRONIC SPEED CONTROL (ESC)5.2 Electronic Speed Control (ESC)5.2.1 SpesikasjonerEn ESC til et koaksialt R/C-helikopter vil trenge følgene egenskaper:ˆ Styre to motorer uavhengig.ˆ Hastighetsvariasjon i èn retning.ˆ Sikker oppstart.ˆ Beskyttelse mot kveling.ˆ Begrensninger <strong>ved</strong> lav batterispenning.ˆ Motorstans <strong>ved</strong> brudd på styresignal.ˆ Lav vekt.For å kontrollere helikopterets yaw-vinkel, må vi styre hastigheten på de to rotorene uavhengig avhverandre. Vi trenger ingen brems eller revers, men vi må la rotorene spinne uhindret <strong>for</strong> å dempefrittfallshastigheten. Når batteriet plugges i helikopteret burde ikke motorene starte med en gang. Hvistrådløslinken blir brutt burde også motorene deaktiveres.Når en DC-motor kveles blir den i praksis bare en RL-last. Dette kan <strong>for</strong> eksempel <strong>for</strong>ekomme <strong>ved</strong> enkrasjlanding. I databladet <strong>for</strong> motorene er det oppgitt en kvelestrøm på 9A <strong>ved</strong> 3V[16]. I vårt worst-casescenario med 7,4V batterispenning og to motorer overføres det til 44A. Dette vil ødelegge både motor,komponenter og batteri.5.2.2 UtførelseFor å kunne styre to motorer klonet vi kretsen i gur 4.5 på side 11. Med unntak av shunt-kondensatorenover MOSFET-en. Denne så unødvendig ut etter en applikasjonsnote fra Microchip, AN847[14].Motstanden, R GS er skalert etter den samme applikasjonsnoten.PWM-signalene genereres i nRF24LE1 som har to PWM-kanaler til rådighet. De har en amplitudetilsvarende VTG og en felles frekvens. Duty-cycle kan varieres uavhengig på de to kanalene. For å driveMOSFET-ene i metning med VTG som gate-spenning fant vi en lettdrevet Power-MOSFET med lavindremotstand og transfer-karakteristikk, vist i gur 5.7 på neste side. Kravet til strøm-raten er skalertut i fra målinger på originalhelikopteret. For å minimalisere støy har vi brukt en gate-motstand på 100Ω,se avsnittet 7.4.7 på side 45.BEC-en er <strong>for</strong>klart i seksjon 5.3 på neste side. Sikkerhetsfunksjonene er konstruert i rmware. Forsikkerhetsrutiner under oppstart eller brudd på styresignalet, se avsnitt 6.4.3 på side 32. Kravene itabellen under er satt utifra målinger på originalhelikopteret. For sikkerhetsfunksjoner som omfatterstrømbegrensning og batteristatus, se avsnitt 7.4.7 på side 45.type strøm-rate per motor break-down-voltageKrav - 3.06A 8,46VMOSFET FDS8870[23] 18A V DSS : 30VDiode PMEG3050EP[30] 5A V R : 30VTabell 5.3: ESC-komponenter23


5.3. PSU KAPITTEL 5. HARDWARE5040PULSE DURATION = 80µsDUTY CYCLE = 0.5% MAXV DD = 15VI D , DRAIN CURRENT (A)302010T J = 150 o CT J = 25 o CT J = -55 o C01.50 1.75 2.00 2.25 2.50 2.75 3.00V GS , GATE TO SOURCE VOLTAGE (V)Figur 5.7: Transfer-karakteristikk FDS88705.3 PSU5.3.1 Spesikasjoner BECMed helikopteret fulgte et oppladbart 7,4V LiPo-batteri. Det har en kapasitet på 800mAh og maksimalarbeidstemperatur på 70 ◦ C. Batteriet kan levere 8A kontinuerlig, basert på likning 4.1 på side 9.I[A] = 10C ·800mAh = 8A (5.5)Motorene må få strøm direkte fra batteriet, se seksjon 5.2 på <strong>for</strong>rige side. I databladet til nRF24LE1 erdet en oversikt over strøm<strong>for</strong>bruk[26]. Et overslag tilsier at vi burde ha 50mA tilgjengelig. Gyroskopetkan bruke opptil 5,5mA, kompasset 10mA og akselerometeret 40µA. Med to servoer og kontrolleren harvi målt strømtrekk opptil 450mA. Skaleringen av strøm<strong>for</strong>syningen er tatt med god margin siden detteer en prototype.På helikopteret sitter det en 5,0V regulator og en 3,3V regulator, begge av typen LDO. 5Vregulatorentrenger <strong>ved</strong> maks last minst 6,2V inngangsspenning, 3,3V-regulatoren trenger 4,5V. Beggeregulatorene har hver sin 10µF <strong>elektro</strong>lytt-kondensator som avkobling på utgangen, og en 100nFshuntkondensator på inngangen.Symbol Regulator Spenning Strømkrav Regulatorkapasitet FunksjonalitetVTG LD111733[35] 3,3VDC 66mA 800mA BrikkesettV CC LD111750[36] 5,0VDC 450mA 800mA ServoV batt 7,4VDC 6,13A 7 8A MotorerTabell 5.4: BEC spesikasjoner5.3.2 Spesikasjoner fjernkontrollI fjernkontrollen satt 8 stykk AA 1,5V-batteri i serie. Disse koblet vi i en parallell kongurasjon slik at vikk 6,0V <strong>for</strong>syningsspenning. Når batteriene er utladet, vil vi ha en spenning på ca. 4,0V. Når batterieneer fulladet er maksimal spenning ca. 6,5V. Displayet med bakgrunnsbelysning krever 60mA[39] og ashenopptil 20mA. I fjernkontrollen sitter en annen type 3,3V-regulator. Denne trenger mindre dropoutspenning,men kan levere mindre strøm[33]. Minstekravet er 3,7V inngangsspenning. Regulatoren har24


KAPITTEL 5. HARDWARE5.4. KOMPASStilsvarende kondensatorer som på helikopteret. Med en batterimåler har vi mulighet til å gi beskjed tilbrukeren at batteriene må byttes før mikrokontrolleren kutter, se underkapittel 5.1.1 på side 19.Symbol Regulator Spenning Strømkrav Regulatorkapasitet FunksjonalitetVTG L4931CZ33[33] 3,3VDC 130mA 250mA Brikkesett, display, ashTabell 5.5: PSU fjernkontroll5.4 KompassHoneywell HMC6352 Digital Compass er et 2-akse kompass som vi har valgt til å vise retning avhelikopter. Dette er et billig og mye brukt kompass, som vi føler passer godt inn i oppgaven tilto-veis kommunikasjon. Det skal sitte på helikopteret og sende retningen den har til displayet påfjernkontrolleren. Retningen blir målt og kalkulert i selve brikken, noe som fører til at vår mikrokontrollerslipper dette. Dette er bedre <strong>for</strong>klart i kap 6.5 på side 33.Kompasset har to magnetometer som måler magnetiske felt. Det gjør sensoren sensitiv oven<strong>for</strong><strong>elektro</strong>magnetisme fra elektrisk utstyr. Jordas magnetiske felt er på 0.3 til 0.6 gauss. Hvis <strong>for</strong>styrrelseneligger mellom 20 og 10000 guass, vil det være nok med set/reset. Men blir det mer enn 10000,kan kompasset bli ødelagt. Holder man en smarttelefon med kompass <strong>for</strong> nærme, vil dette <strong>for</strong>styrrekompasset. For mer utdypende in<strong>for</strong>masjon, se databladet [13].Det at kompasset har 2 akser, gjør det mer ømntlig <strong>for</strong> roll eller pitch. Retningen kan bli feil medopp til 30º. Gruppen så på ere kompass, men disse ble enten dyre eller hadde ikke utregning av retninginternt.5.5 GyroskopI helikopteret har vi plassert to gyroskop <strong>for</strong> å måle rotasjonshastighet i helikopteret under yvning,en <strong>for</strong> Z-aksen (yaw) LY530AL og en <strong>for</strong> XY-aksene (roll/pitch) LPR530AL. Gyroskopene har analogtinterface og vi leser av verdiene via ADC. Gyroskopene har en målerekkevidde på ±300 grader/sekund,hvor +300grader/sek tilsvarer 2.23V (4x <strong>for</strong>sterket) på utgangen av gyroskopene.Begge gyroskopene har en <strong>for</strong>sterket utgang og en rå-data utgang. Rå-data utgangen er ltrertigjennom et høypass-lter. Filterets egenskaper er hentet fra applikasjonsnote [34] og utviklerkort fraSparkfun.com [32]. Den <strong>for</strong>sterkede utgangen multipliseres internt i sensoren. Begge utgangene fra beggegyroskopene er tilkoblet sin egen pin på mikrokontrolleren, se gur 5.6Gyroskop Utgang Tilkoblet pinneLPR530AL Rå-X P0.24x X P0.3Rå-Y P0.44x Y P0.5LY530AL Rå-Z P1.04x Z P1.1Tabell 5.6: Gyroskop pin-oversikt25


5.6. AKSELEROMETER KAPITTEL 5. HARDWARE5.6 AkselerometerAkselerometer er en sensor som kan måle både statisk akselerasjon(tyngdekraft og tilt-målinger) ogdynamisk akselerasjon fra støt og bevegelser. Sensoren vi har valgt er et digitalt 3-akse akselerometermed justerbar oppløsning og målerekkevidde. Sensoren kan kommunisere på både SPI og I2C, og sidenvi allerede har en annen sensor som kun virker på I2C tenkte vi at det ville bli spennende å prøve tosensorer på samme interface.Akselerometeret er av modellnummer ADXL345 fra Analog Devices og kan måle ±2g, ±4g, ±8g og±16g med full oppløsning opptil 13bit <strong>ved</strong> ±16g som kan gi 4mg/LSB <strong>for</strong> alle rekkeviddene.I helikopteret brukes akselerometeret til å måle hvor mye helikopteret tilter, siden akselerometeretlar seg påvirke av gravitasjon.5.7 BatterimonitorenFor å vise to-veis kommunikasjon ønsket vi å vise helikopterets batteristatus på displayet. For å oppnåen batteristatus som reekterer <strong>for</strong>bruket mest mulig er det best å måle totalt strøm<strong>for</strong>bruk inn og utav batteriet. Dette er en sikrere metode enn kun å måle spenning over batteriet, som er avhengig avlast, temperatur, kjemi og alder. Motorene vil mest sannsynlig påvirke spenningen over batteriet i såstor grad at den ikke kan representere batteristatusen. Den største ut<strong>for</strong>dringen med strømmålemetodener å holde rede på oppladning og utlading, og bytte av batteripakke.En annen grunn til å monitorere batteristatusen er at LiPo-batteri helst ikke skal utlades til merenn 3V per celle, se avsnitt 4.3.5.7.1 Maxim Smart Battery MonitorVi har valgt å bruke en egen brikke til å monitorere batteriet. En Smart Battery Monitor, fra DallasMaxim, DS2438. Den er designet <strong>for</strong> å sitte direkte på batteripakken, slik at hver batteripakke har sinegen unike chip. Brikken måler strøm inn og ut av batteriet og akkumulerer <strong>for</strong>bruket. Den måler ogsåtemperatur, spenning og har en innebygget klokke. Kommunikasjonsgrensesnittet er 1-wire, se 4.7.3på side 17. All kommunikasjon må initialiseres av en mikrokontroller. Kongurering og kalibrering avmonitoren skjer gjennom 1-wire-grensesnittet.Monitoren måler strøm<strong>for</strong>bruket hvert 27ms og inkrementerer eller dekrementerer et register ettersomstrømmen går inn eller ut av batteriet. Deretter er det opp til mikrokontrolleren å hente ut data og regneom verdiene til en presentabel batteristatus. For å måle strømmen er en ekstern strømmålemotstandmontert mellom jord og batteriets minus pol. Batterimonitoren måler spenningsfallet over motstanden ogkalkulerer strømmen fra dette. Et eksternt lavpasslter sitter mellom jord og den positive måleinngangenpå batterimonitoren. Lavpasslteret er skalert etter databladet[6] og har en knekkfrekvens på 15,9 Hz.Dette skal absorbere de værste strømspikerene <strong>for</strong> å unngå store målefeil. Den negative måleinngangenmot batteriet har ikke lter.Størrelsen på målemotstanden er valgt etter et kompromiss mellom oppløsning i strømregistre ogeektomsetning <strong>ved</strong> maks last av batteriet 8 . En stor målemotstand gir høy oppløsning, men større8 Se C-rate 5.5 på side 2426


KAPITTEL 5. HARDWARE5.8. PRODUKSJON OG MONTERINGeekttap. Vi har valgt 50mΩ i ho<strong>ved</strong>sak <strong>for</strong> å unngå store eekttap. Strømregisteret har 10-bits.Det gir en oppløsning på 4,88mA og 9,76mAh, etter tabell 9 i databladet. Maks måleverdi er 4,9A.Eektomsetningen i målemotstanden blir da:P Rsens = I 2 max ·R sens = 8,0 2 ·50·10 −3 = 3,2W (5.6)5.7.2 UtleggetKortet måler 27x18mm. Det har headere <strong>for</strong> tilkobling av batteriet, ladeplugg og power-plugg. Ut frakortet går banene direkte over i kabel. En med tre ledere til balanseladeren og en med tre ledere til powerog 1-wire. Kortet har ett lag og kobberbanene til målesignalet er laget så korte som mulig. Bredden påbanene er skalert utifra batteriets C-rate, se avsnitt 5.4 på side 22. En 0805 motstand i lavpassltereter den minste komponenten. Kortet er etset og montert på <strong>HiST</strong>, med et produksjonsresultat påamatørnivå.Trace width signal Trace width power Trace width charger Trace clearance Longest trace Shortest trace0.5mm 2.50mm 0.8mm 0.76mm 30.81mm 7.53mmTabell 5.7: Designregler batterimonitor5.8 Produksjon og monteringKretskortet til helikopteret ble laget av kretskortprodusenten Nordic Semiconductor bruker. Dette gjordeat vi kk det så kompakt som mulig og med lite vekt, slik at det ikke skulle være en stor påkjenning<strong>for</strong> helikopteret å bære. Kretskortet krever også dobbelt jordplan med meget mange via hull <strong>for</strong> godkontakt med jord <strong>for</strong> å øke eektiviten på trådløssignalet, og å minke støy så godt som mulig.Nesten alle komponenter ble loddet av oss på en av labbene til NS, der vi kk tilgang til mikroskopog skikkelig lodeutstyr. Montering av mikrokontroller og akselerometer ble loddet med hjelp fra en av deansatte <strong>ved</strong> support <strong>ved</strong> å bruke IR-lampe, da disse er meget vanskelige å lodde <strong>for</strong> hånd. Kretsen bestårav en god del komponenter i 0402-størrelse og overatemonterte komponenter med små tilkoblinger underbrikkene, noe vi ikke ville hatt mulighet til å montere på skolen. Antennen på kretskortet ble tunet avansatte <strong>ved</strong> Nordic, og er dokumentert under <strong>ved</strong>legg B på side xx i <strong>for</strong>m av et Smith-skjema og etSWR-plott. Under tuning av antenne ble det kuttet 30.2mm kobber fra antenna.Kretskortet til fjernkontrollen ble etset med utstyr på <strong>HiST</strong>. Her hadde vi ikke samme behov <strong>for</strong>utstyr egnet <strong>for</strong> små komponenter eller særlige krav til størrelse og vekt på kretskortet. Fjernkontrollenstiller heller ikke like store krav til støy som helikopteret.27


Kapittel 6Firmware6.1 HALHAL (Hardware Abstraction Layer) er et rmware-lag som inkluderes i programkoden vår. Dette er etbibliotek av programfunksjoner som brukes av applikasjoner. Laget inneholder funksjoner <strong>for</strong> å endreinnstillinger, og lese/skrive data fra hardware. Vi bruker HAL <strong>for</strong> SPI, TWI og ADC, mens Gazellutnytter ere biblioteksfunksjoner på egenhånd.HAL er laget <strong>for</strong> å kommunisere med hardware på brikka, men siden det er generelle funksjoner erdet enkelte moduler på mikrokontrolleren som er uten HAL-muligheter. Spesielle funksjoner <strong>for</strong> å skrivehele bytes på SPI og TWI mangler, samt funksjoner <strong>for</strong> å styre timere.Vår bruk av biblioteket består <strong>for</strong> det meste i initialisering av moduler. Vi bruker funksjonene <strong>for</strong> åsette innstillinger <strong>for</strong> modulene <strong>ved</strong> oppstart, men senere i programmet er det våre egne funksjoner somi ho<strong>ved</strong>sak blir brukt.Ved prosjektstart sa Nordic at vi måtte bruke biblioteket så mye vi kunne. Dette <strong>for</strong> å slippe myeunødvendig koding av modulene og <strong>for</strong> å vise hvor nyttig biblioteket er i praksis.6.2 Trådløs kommunikasjon6.2.1 Virkemåte i fjernkontroller (device)Fjernkontrolleren er enheten som etterspør en pairing. Dette gjøres <strong>ved</strong> å holde fjernkontrolleren tettinntil helikopteret og vente noen sekunder. Fjernkontrolleren sender konstant ut en pairing-etterspørsel,venter på svar og gjentar dersom det ikke er noen enheter i nærheten. Etter at helikopteret har svart påetterspørselen begynner fjernkontrolleren umiddelbart å klargjøre data fra styrestikkene og sende dettetil helikopteret. Payload leses fra styrestikkene via ADC og legges i data-ut registeret. Etter data ersendt skal fjernkontrolleren lytte etter svar fra helikopteret. Dette svaret vil da inneholde all sensordataog <strong>ved</strong> motatt svar deneres sendingen som suksess. Sensordata skrives så ut på displayet. Med dettefullføres en runde i ho<strong>ved</strong>løkka, og fjernkontrolleren begynner å klargjøre ny payload <strong>for</strong> sending tilhelikopteret.28


KAPITTEL 6. FIRMWARE6.2. TRÅDLØS KOMMUNIKASJON6.2.2 Virkemåte i helikopter (host)Helikopteret vil kjøre sin ho<strong>ved</strong>løkke på en litt annen måte enn fjernkontrolleren. Helikopteret vilkonstant lytte etter data og pairing-etterspørsel. Dersom en etterspørsel mottas, vil Gazell PairingLibrary gjøre en kontroll om enheten er nærme nok. Dersom dette er tilfellet vil etterspørselen godkjennesog helikopteret vil <strong>for</strong>tsette lytting etter data. Etter pairing er godkjent vil fjernkontrolleren begynneå sende data til helikopteret. Hvis data er mottatt vil helikopteret lagre motatt data, klargjøre svar tilfjernkontrolleren og sende svaret. Dette må gjøres før vi kan behandle mottatt data, så fjernkontrollerenfår bekreftelse om at sendingen var vellykket. Når data er sendt til fjernkontrolleren vil helikopteretbegynne på behandlingen av mottatt data. Her vil det gjøres utregninger til styresignalene til motorog servo. Etter at utregningene er ferdig vil disse verdiene settes og en runde i ho<strong>ved</strong>løkken er fullført.Mens helikopteret regner og setter utgangsverdier er tranceiveren <strong>for</strong>tsatt mottakelig <strong>for</strong> data. Dettebetyr at selv om helikopteret er opptatt med å skrive data vil den motta ny payload og la lagre den tilprogrammet begynner med behandling av data..6.2.3 InnstillingerSelv om Gzll og Gzpair håndterer det meste av kommunikasjonen <strong>for</strong> oss har vi måttet endre enkelteparametre i bibliotekene. De este av innstillingene lar vi stå slik de er standard, men vi endrer noenessensielle <strong>for</strong> økt rekkevidde.Vi bestemmer dataraten <strong>for</strong> å være 1Mbps slik at vi får økt avstanden på kommunikasjonentilstrekkelig <strong>for</strong> helikopteret. Sammen med den dynamiske pairingen får vi en total avstand på godtover 100m. Den nedsatte dataraten gir antenna økt sensitivitet 9 .Payload-lengden må vi også øke fra standardinstillingene. Siden vi bruker helikopterert som tjener ikommunikasjonen, og det er helikopteret som skal sende mest data, må ack-payload være veldig stor 10 .Gazell lar oss velge to viktige parametre <strong>for</strong> tjener og klient, nemlig modus. Tjener har to tilgjengeligemoduser, strømsparende modi og lav <strong>for</strong>sinkelse. Vi velger sistnevnte modus <strong>for</strong> helikopteret, slik at vioppnår så rask overføring som mulig. I fjernkontrolleren har vi større valgmuligheter. Her kan man velgesemi-synkron eller asynkron overføring og frekvenshopping. Vi velger modus 4, som gir oss den korteste<strong>for</strong>sinkelsen og utnytter opptil 79 kanaler. Modus 4 er semi-synkron, så tjener og klient bytter til desamme kanalene, som resulterer i lite støy.9 -85dBm <strong>ved</strong> 1Mbps10 Ack_payload er 27 byte, payload er 17 byte29


Send request6.2. TRÅDLØS KOMMUNIKASJON KAPITTEL 6. FIRMWAREController (Device)Helicopter (Host)Initialize-GZLL-GZPAIR-SPI-One-Wire-Display-ADCInitialize-GZLL-GZPAIR-SPI-I2C-Sensors-ADC-One-Wire-Timer-PWMSend pairingrequestStart RXNot grantedAssert:Recie<strong>ved</strong> requestRequest grantedGrant requestAssert:Close proximityRecie<strong>ved</strong>requestAssert:Pairing requestrecie<strong>ved</strong>No requestrecie<strong>ved</strong>Set payloadCheck <strong>for</strong> data onpipe2No dataSend payloadTX payloadRX_FIFO_READ&Goto idleTX failedAssert:TX Success(Ack recie<strong>ved</strong>)Send ack_payloadPreparesensordata toack_payload &sendSuccessWrite sensordatafrom ack_payloadto displaySet servo andmotor frompayload-valueStart RXFigur 6.1: Trådløs kommunikasjon - Flowchart30


65535−16·(delay[ ]/2)/12Motta ADC verdi frafjernkontrollInitialiser timere ogstart timer 2Konverterer ADC-verdi tilnye maks/min-verdierTimer 2 overflowerhvert 15. msKonvertertverdiTimer 2overflowSett servoPuls =konvertertverdi?NeiJaBytt servo


6.4. ESC KAPITTEL 6. FIRMWARE6.4 ESC6.4.1 PWMnRF24LE1 byr på to PWM-kanaler, PWM0 og PWM1. En felles frekvens og modus kongureres medPWMCON registeret. I 8-bits modus kan vi velge èn av 15 frekvenser i steg mellom 3921Hz og 62745Hz.Duty-cyclen settes individuelt i PWMDC0 og PWMDC1. Vi har valgt 31,4kHz <strong>for</strong>di det er behageligereå y innendørs når frekvensen er over hørselsregisteret. En initialiseringsfunksjon setter opp dette og enduty-cycle på null prosent. Sist i initialiseringen aktiveres begge kanalene.6.4.2 RotorhastighetFunksjonen som angir duty-cycle tar utgangspunkt i ADC-verdiene fra styrestikkene. Den konvertererførst throttle-verdien til en 8-bitsverdi mellom 45 og 255. Det tilsvarer 18 til 100% duty-cycle. Deretterkonverteres yaw-verdien til ±12%. Skulle midten av potmeteret havne uten<strong>for</strong> nullpunktet har vi eremuligheter <strong>for</strong> trim. Yaw adderes med throttlen til det ene PWM-registeret, og subraheres fra throttlentil det andre. Med dette kan vi endre helikopterets yaw-vinkel i begge retninger og ivareta høyden. Førde endelige duty-cyclene blir lagt ut på PWM-kanalene kjøres en sikkerhetsfunksjon som <strong>for</strong>sikrer atverdiene ikke havner uten<strong>for</strong> PWM-rekkevidden.For å skape dødgang på throttle-stikka har vi denert en startverdi. Hvis ADC-verdien ikke erover denne grensen settes duty-cycle lik null. I kode kan yaw trimmes <strong>ved</strong> å vekte minimum- ogmaksimumsdenisjonen. Det er også en <strong>for</strong>håndsdenert trim som påvirker yaw ytterligere. For åinvertere en stikke byttes minimums- og maksimumsverdiene med hverandre. Denisjonsgrensene kanvarieres <strong>for</strong> å endre følsomheten til stikkene.Med 100% maks duty-cycle har vi 7,4V over motorene 11 . Den øvre PWM-grensen er valgt <strong>ved</strong>å sammenligne løftekraft med originalhelikopteret. Databladet <strong>for</strong> motorene anbefaler riktignok 3Vnominell spenning[16]. Heldigvis er det god kjøling til motorene. Den nedre grensen er satt noe førhelikopteret letter.6.4.3 SikkerhetsfunksjonerI ho<strong>ved</strong>løkka i helikopteret setter vi en timeoutcounter til null hver gang vi mottar data. Hvis ikke datablir mottat inkrementeres telleren sist i ho<strong>ved</strong>løkka. Til slutt sjekker vi om telleren er inkrementert til3000. Det vil si at vi har gått igjennom hoveløkka 3000 ganger uten å motta trådløs data. Da skrur viav motorene.Foreløpig er motorene deaktivert inntil helikopteret er parret med fjernkontrollen. Etter parringblir styresignalet fra fjernkontrollen sendt til ESC-en uten <strong>for</strong>sinkelse. Skulle du være uheldig å parrehelikopteret med throttle-stikken over startverdien vil motorene aktiveres.11 Niglisjerer tapet i MOSFET-ene.32


KAPITTEL 6. FIRMWARE6.5. KOMPASS6.5 KompassOperasjonsmoduserKompasset har 3 operasjonmoduser, standby, query og continuous.ˆ Standby mode er fabrikkstandard. Kompasset venter på kommando fra masterenhet før den målerog kalkulerer retning. Data som leses ut er retningen fra 0 til 3599. Masterenhet må altså sendekommando <strong>for</strong> hver gang den skal ha retning.ˆ Query mode. Samme som i standby mode, men denne gangen utfører kompasset en ny utregningrett etter første utregning og avventer med ny utregning til første utregnet verdi er lest.Masterenhet må bare sende kommando en gang, de neste retningene får master <strong>ved</strong> å lese frakompasset.ˆ Continous mode. Kompasset måler og regner ut retning konstant, den er ikke avhengig avkommando fra masterenhet. Måling og utregning kan skje i intervaller på 1Hz, 5Hz, 10Hz eller20Hz. Når masterenhet leser fra kompass, får den siste verdi.Gradene er standard (heading mode) fra fabrikk, men man kan også velge å få ut raw magnetometerX/Y mode og magnetometer X/Y mode. Dette settes i register adresse 0x4E. [13]Raw magnetometer mode gir oss de magnetiske feltene.Magnetometer mode er som raw mode, men med oset og skalering som er satt <strong>ved</strong> hjelp avkalibrering.KalibreringDet er en innebygd kalibreringsmodus i kompasset. Dette kan vi bruke til å kompensere støy fra motorenepå helikopteret. Kalibrering utføres optimalt på et att område, 2 fulle runder iløpet av 20 sekunder ertilstrekkelig <strong>for</strong> en nøyaktig kalibrering. Dette lagres i EEPROM i kompasset.KommunikasjonKommunikasjonsprotokollen til kompasset er I2C. Kompasset trenger pull-ups på 10kΩ på SDA- ogSCL-linjene. For å starte kommunikasjonen, må en først sende enten les (0x42) eller skriv (0x43).For å lese ut retning, må en sende skriv-kommandoen etterfulgt av start-konvertering (0x41). Derettertrenger kompasset 6000µs til å kalkulere. Så sender en les-kommandoen og får lest in<strong>for</strong>masjonen. Envil da få ut 2 byte med in<strong>for</strong>masjon, som vist i tabell 1, response 1 og response 2 side 5 i databladet.En må huske at lesing er avhengig av påfølgende kommando. Det vil si at en ikke kan lese når enhar sendt kommandoen skriv til RAM eller EEPROM.33


6.6. GYROSKOP KAPITTEL 6. FIRMWARE6.6 GyroskopBegge gyroskopene har analoge utganger, som vi leser av <strong>ved</strong> hjelp av ADC. Når man kobler til spenningpå gyroene, kalkulerer de rotasjon automatisk og legger data på utgangene. Gyroskopene har to utgangerper akse, en rådata via et HP-lter og en 4x <strong>for</strong>sterket. Hver utgang vil gi <strong>for</strong>skjellig rekkevidde påspenningen, opptil 1,48V på rådata-utgangen, og opptil 2,23V <strong>ved</strong> 4x <strong>for</strong>sterkning. Maksspenning er da<strong>ved</strong> +300º/sekund.Vi velger de u<strong>for</strong>sterkede inngangene i første omgang, og setterreferanseverdien på ADC til intern spenning (1.23V). Dettegjør at vi vil minke maks-rekkevidde, men vi får brukt helemåleområdet i 8-bits ADC-registeret.Før avlest gyroskopverdi skrives ut til displayet må vi regneom verdiene til riktig enhet. Vi leser av ADC og sender verdientil en funksjon som regner om tallet til nye grenser. Vi settermaks- og minimumsgrenser til ±300, og skriver denne verdien utpå displayet. Dermed vil alle verdier avlest fra gyroskopet benneseg mellom ±300 grader/sekund. Figur 6.3: Gyroskop z-akse34


KAPITTEL 6. FIRMWARE6.7. AKSELEROMETER6.7 AkselerometerAkselerometeret kan kommunisere på SPI og I2C. Siden SPI-Master og PWM-utgangene er på de sammepinnene på mikrokontrolleren, måtte vi benytte oss av I2C. Vi må gjøre en enkelt innstilling via kodefør vi får lest ut verdiene, men dette stilles under oppstart av nRF24LE1. Vi må aktivere måling av detre aksene via kode, noe som også gjøres under oppstart. Akselerometeret krever noen tilkoblinger påpinnene <strong>for</strong> å aktivere noen innstillinger: alternativ I2C adresse 12 (om ere like akselerometre brukes),og aktivering av I2C frem<strong>for</strong> SPI 13 .Etter innstillingene er akselerometeret klart til å avleses. Dette utføres <strong>ved</strong> å sende en les-kommandoog lagre svaret brikken gir oss. Her kan en velge å få returnert en og en nibble av de tre aksene, eller fåalle registrene lest ut etter hverandre. Førstnevnte modus krever 6 <strong>for</strong>skjellige kall på lese-funksjonen <strong>for</strong>å få lest ut alle aksene, mens sistnevnte måte gir oss alle de 3 16bit registrene vi trenger i en kommando.Akselerometeret vil gi alle de målte verdiene fra aksene i oppløsning på 10 bit.Vi setter akselerometeret i ±2g med 10 bit oppløsning. Data vi da mottar er gitt i 2-kompliment,som passer godt <strong>for</strong> verdier til displayet.ADXL345 kommer med to pinner navngitt INT1 og INT2.Dette er pinner <strong>for</strong> avbruddsdeteksjon og omhandler blant annetdeteksjon <strong>for</strong> støt og fritt-fall. Med disse funksjonene aktivertkan akselerometeret detektere et tap, et lite støt, og si ifra tilmikrokontrolleren. Vi har valgt å utelukke disse funksjonene ihelikopteret. Figur 6.4: Akselerometeret12 Alternativ I2C adresse <strong>ved</strong> å koble SDO til VTG13 I2C aktiv <strong>ved</strong> å koble CS til VTG35


6.8. BATTERIMONITOREN KAPITTEL 6. FIRMWARE6.8 Batterimonitoren6.8.1 KommunikasjonMinnet i batterimonitoren er delt opp i 8 pages, en page inneholder 8 bytes som tilsvarer ulike registremed in<strong>for</strong>masjon om tilstanden til batteriet[6].Grunnet manglende og passende bibliotek <strong>for</strong> kommunikasjon på 1-Wire, måtte funksjoner <strong>for</strong> dettekonstrueres spesielt til prosjektet. Dette arbeidet bestod i å opprette funksjoner <strong>for</strong> skriving og lesingav en bit, <strong>for</strong> så å legge funksjoner oppå dette som leste og skrev hele bytes. Deretter måtte vi ha enmetode <strong>for</strong> å skrive og lese hele kommandosett direkte via de underliggende funksjonene. Disse inneholderi ho<strong>ved</strong>sak de ulike 1-wire sekvensene beskrevet i kapittel 4.7.3 på side 17.Vi har to ulike funksjoner som setter i gang måling av temperatur eller måling av spenning. Etterkonvertering legger batterimonitoren dataene i minnet som vi senere kan aksessere. For å lese ut en pagehar vi opprettet en egen funksjon med page-adressen som argument. For å skrive til en page må vi ha tofunksjoner, en <strong>for</strong> å skrive data og en <strong>for</strong> å lagre. Her er også page-adressen argumentet. Read og writefunksjonene etterfølges av selve registerdataene.6.8.2 Tilbakemelding av batteristatus og klokkeSpenningsregisteret har 10-bits oppløsning og enhet 10mV. På displayet ønsker vi å vise spenningen ivolt. Der<strong>for</strong> deler vi registeret på 100 <strong>for</strong> heltallet og en modulooperasjon <strong>for</strong> desimalene. Strømregisteretinneholder spenningen over målemotstanden med 10-bits oppløsning og en enhet på 0,2441mV. Registereter signert <strong>for</strong> å antyde retningen på strømmen, negative strømtrekk tilsier utlading. Strømmen regnes utvia <strong>for</strong>mel 6.2. Nevneren regnes ut på <strong>for</strong>hånd, men i mikrokontrolleren skaleres verdien til milliampereog med 10 <strong>for</strong> å eliminere desimaler. På grunn av dette må vi bruke en 32-bits variabel.I = Str/omregister4096·R sens(6.2)Gjenværende batterikapasitet kalkuleres utifra ICA-registeret etter <strong>for</strong>mel 6.3. I tillegg konverteresverdien til prosent, der 100% er denert til 800mAh.Kapasitet =ICA2048·R sens(6.3)Klokken i batterimonitoren består av et 32-bits register som teller sekunder. Klokkeregisteretnullstilles hver gang helikopter blir slått på slik at vi kan vise ight-time på displayet. For å få tidenvist på <strong>for</strong>matet hh:mm:ss må vi gjøre en omregning i mikrokontrolleren. I tillegg bruker vi funksjonensprintf 14 som konverterer et heltallsregister til en ascii-streng. Funksjonen har mulighet <strong>for</strong> å <strong>for</strong>materemed ledene nuller.6.8.3 KalibreringsprogramFor å kalibrere batterimonitoren lagde vi et eget program tilpasset nRFGo med display. Programmetviser gjenværende kapasitet, strømtrekk, spenning, temperatur og klokke på displayet. De ulike14 Standard C-funksjon.36


KAPITTEL 6. FIRMWARE6.9. DISPLAYstatusene aksesseres <strong>ved</strong> å bla med joysticken. Et av menyvalgene kalibrerer strømregisteret til 800mAh.Kalibreringen må altså gjennomføres når batteriet er fulladet. I tillegg nullstilles klokken.Ved kalibrering deaktiveres også to funksjoner som er aktivert <strong>ved</strong> fabrikkinnstilling. Den enefunksjonen måler total strøm som noensinne har passert batteripakken. Den andre lagrer disse registrenekontinuerlig til EEPROM. Fra dette kan man estimere batteriets levetid. Vi har ikke bruk <strong>for</strong> dennefunksjonaliteten og deaktiverer den <strong>for</strong> å spare strøm.6.9 DisplayHelt i starten av programmeringsfasen må lavnivådriver implementeres i koden. Driveren tar hånd omalle rutiner som skal gjøres før lesing og skriving til display. Det være seg timingrutiner og sette pinnerhøy og lav <strong>for</strong> hver kommando som skal kjøres. Instruksjonssettet som nnes i databladet får hver sinrespektive denisjon slik at koden skal bli lettere å skrive og lesbarheten blir bedre, samt funksjoner <strong>for</strong>å sette alle kontrollpinnene høye og lave får hver sin denisjon.Grakken tar mye plass, så <strong>for</strong> å spare plass i programminnet, bruker vi et eksternt ashminne på256kB, se kapittel 4.2 på side 8.6.9.1 Skrive grakkVi har to karaktersett som denerer fontene vi bruker på displayet, ett på 16×10 pixeler, og ett mindrepå 8×5 pixeler. Begge fontene inneholder hele ASCII-tabellen[1] med unntak av de 32 første tegnene.For å kunne skrive tekst til displayet har man behov <strong>for</strong> to funksjoner; en som skriver ut en enkeltbokstav, og en som bruker denne funksjonen til å skrive ut tekststrenger.Funksjonen som brukes til å skrive ut enkle tegn fra fonttabellen tar i mot en parameter av typenchar som er bokstaven som skal hentes fra det eksterne ashområdet. Ettersom hvilken verdi bokstavenhar i ASCII-tabellen, henter funksjonen bokstaven og legger den i et array. Arrayet skrives så tildisplayet til valgt kolonne- og radposisjon <strong>ved</strong> bruk av en egen skrivefunksjon. Den første byte legges iførste kolonne, andre byte i andre kolonne osv, etter innstillingene som er satt under initialiseringen avdisplayet.Bitmaps hentes ut på samme måte. Man starter å lese ut grakken fra adressen i minneområdet, oginkrementerer seg gjennom tabellen den bredden i pixeler man skal skrive ut. Her har vi også vært nødttil å passe på når kolonne og page skal endres, med tanke på dimensjonene til grakken.6.9.2 Animert grakkTil kompasset har vi lagd en fane som viser alle himmelretningene. Fanen beveger seg med verdien frakompasset som strekker seg fra 0 til 359 grader. Bitmappet er 360 pixeler bredt, noe som er mer enn detdisplaybredden er, så vi skriver kun ut 100 pixeler av bildet, der verdien fra kompasset fungerer som enpeker til hvor i bitmapet man skal starte å skrive fra. Når kompasset roterer fra 360 til 0 grader folderbitmappet rundt, slik at animasjonen glir jevnt over.37


6.10. EKSTERN FLASH KAPITTEL 6. FIRMWARE6.10 Ekstern ash6.10.1 KommunikasjonI programmet som skrives spesikt <strong>for</strong> lagring av data til brikken, har vi satt opp denisjoner <strong>for</strong> alleSPI-instruksjoner. Vi brukte ferdige drivere fra Nordic Semiconductors appnote nAN-20[24] <strong>for</strong> å kjaptkomme i gang med kommunikasjonen.Driveren som medfølger appnoten inneholder alle funksjoner og denisjoner <strong>for</strong> å skrive data, sletteminneområder, lese en eller ere bytes, beskytte og åpne sektorer og lese statusregister. Selv om dettegir en meget god starthjelp, har vi vært nødt til å lage større og mer avanserte funksjoner <strong>for</strong> å skri<strong>ved</strong>ata som har vært større enn et programområde. Flere triks har blitt brukt <strong>for</strong> å ikke gå tom <strong>for</strong>SRAM på mikrokontrolleren.6.10.2 Lagring av dataDen største fonten vår er på nesten 2kB. Dette krever at data blir <strong>for</strong>delt over 8 pager i den eksterneashen. Her kunne man enkelt ha skrevet inn hele arrayet som inneholder fonten, men man støter da påproblemet at man ikke har nok SRAM til dette 15 . Driveren støtter heller ikke skriving av todimensjonaletabeller. Dette løste vi med å mellomlagre det todimensjonale arrayet i et buer på 240 byte før mansender over dette til ashen. Løkken som programmerer inn fonten sørger <strong>for</strong> å sette skriverpekeren tilrett område før den skriver de neste 240 bytene.Grakken skrives mye enklere inn til ashen. Her slipper vi <strong>for</strong> det første å mellomlagre tabellenei egne buer, siden vi kun har endimensjonale tabeller til grakken. Her slipper vi også å måtte byttepage-område i ashen under skriving av hvert enkelt bilde, siden alle bitmapene hver <strong>for</strong> seg er under256 byte store. Dette gjør jobben meget enkel, og vi tilegner hvert bilde vær sin page i ashen.15 SRAM er 1kB stor.38


KAPITTEL 6. FIRMWARE6.11. IMPLEMENTERING6.11 ImplementeringImplementeringsarbeidet ble en oppgave vi arbeidet med underveis, gjennom hele prosjektet. Såsnart en modul ble ferdig satte vi det inn i tilhørende ho<strong>ved</strong>program og gjorde debug av koden.Ho<strong>ved</strong>programmene har også underveis blitt oppgradert med bedre trådløskode og sikkerhet undertrådløs sending.Helikopteret består av mange sensorer, hvor alle har hvert sitt kodebibliotek utarbeidet av oss. Hvergang helikopteret mottar trådløsdata, oppdateres sensorverdiene og returneres til fjernkontrolleren. Forå ikke miste kommunikasjon med fjernkontrolleren er det viktig at all sensordata blir klargjort og sendtfør timeout på trådløslinken. Dette er viktig siden vi sender sensordata med acknowledgement-pakkenfra mottaker. Om det tar <strong>for</strong> lang tid fra fjernkontrolleren sender data til den mottar ack, vil datapakkenmarkeres som tapt og kommunikasjonen avbrytes. Dette gjorde at vi måtte endre og redigere endel kodeetter implementering og optimalisere den med hensyn til hastighet. Løsninger som fungerte helt ntunder single-chip testing, viste seg å være <strong>for</strong> tidkrevende så snart de ble implementert i helikopteret.Underveis oppdaget vi at det ble vanskelig å gjøre fullstendig testing av alle de nye modulene, sidenprototypekort manglet enkelte tilkoblinger.Fjernkontrolleren på sin side bruker mye tid på å lese fonter fra ekstern ash og skrive sensordata tildisplayet, så også her ble det en oppgave å få de <strong>for</strong>skjellige delene til å fungere sammen. Denne kodenmåtte også fungere sammen med trådløskommunikasjonen og den dynamiske nær-pairingen. Dette visteseg å være et enklere arbeid siden det her ikke var noen nødvendighet med hastighetsoptimalisertkode. Display og ash var også testet fullstendig på <strong>for</strong>hånd og det var få dieranser mellom testet ogimplementert kode og hardware. Noen <strong>for</strong>sinkelser oppstod da vi måtte skrive blankt til skjermen, <strong>for</strong> åfjerne enkelte skrivefeil. Dette gjøres noen ganger i minuttet, og vil oppstå som et lite hopp i motorkraft.39


Kapittel 7Gjennomføring7.1 InnkjøpInnkjøp av sensorer startet allerede under <strong>for</strong>prosjektet. Vi startet tidlig å undersøke sensorer ogmoduler vi kunne få bruk <strong>for</strong> under arbeidet. Vi utarbeidet sammen med veileder også noen kravtil periferienheter.Vi besøkte ere hobbybutikker i Trondheim og så på utvalget av helikoptre vi kunne bruke som basisi prosjektet. Vi satte ere kriterier før innkjøp; stor tilgjengelighet av reser<strong>ved</strong>eler, plass i chassis til vårteget kort, pris og at helikopteret hadde kontraroterende rotorer, se 4.1.1 på side 6. Ut fra disse kriterienevalgte vi helikopteret E-Sky Dauphin, et lettydd kontraroterende helikopter av en kjent produsent.Under oppstart av prosjektet handlet vi inn sensorer på breakout <strong>for</strong> enkel testing med utviklerkortetfra NS. Det nnes ere kjente nettsider hvor slike testkort nnes, bla. Sparkfun.com og Mouser.com. Herfant vi rimelige testkort med passende sensorer, i <strong>for</strong>hold til hva vi undersøkte under <strong>for</strong>prosjektet. Viarbeidet også på løsninger <strong>for</strong> prototyper av helikopter- og fjernkontroller-kort vi kunne etse og monterepå skolen. Disse kortene trengte gjennomhull-komponenter og større pakninger enn de montert på detferdige prototypkortet, <strong>for</strong> at vi skulle klare å montere kortet selv. Komponenter til ESC og PSU blehandlet på Farnell.com og Mouser.com.Pakker med komponenter kan ta fra noen dager opptil en måned frakt <strong>ved</strong> billigste løsning. De esteinnkjøpene ble betalt av gruppens medlemmer og kvitteringer ble sendt inn til Nordic <strong>for</strong> refusjon. Se<strong>ved</strong>legg C.40


KAPITTEL 7. GJENNOMFØRING7.2. UTVIKLINGSVERKTØYFigur 7.1: nRFgo Starter Kit7.2 Utviklingsverktøy7.2.1 Arbeid med development kitsNordic Semiconductors har et utviklersett som heter nRFgo Starter Kit. Dette settet består av:Antall Enhet2 nRFgo Motherboards (nRF6310)1 Display modul (nRF6350)2 USB-kabler (USB A til USB mini)4 10-lednings at-kabel8 2-lednings koblings-kabel1 CD med pdf og nRFgo Studio1 Getting started guideTabell 7.1: Oversikt i starter kit.Samtidig må man ha et development kit som har utviklermodulen med brikken nRF24LE1. Herkk gruppen to sett, ett med 5x5mm og ett med 7x7mm.(a) nRF2720 7x7 utviklermodul(b) Innhold i development kitFigur 7.2: nRFgo Development Kit41


7.3. MODULBASERT ARBEID KAPITTEL 7. GJENNOMFØRINGPå ho<strong>ved</strong>kortet sitter en socket <strong>for</strong> LE1 utviklermodulen, og en socket <strong>for</strong> displaymodulen. Samtidighar det 4 I/O-porter <strong>for</strong> enkel tilkobling av enheter, 8 knapper med leds, ISP- og Debug-kontakter <strong>for</strong>programmering og feilsøking av ekstern brikke, RS232, ekstern strøm, batteriholder <strong>for</strong> 3xAAA <strong>for</strong> ånevne noe.Så <strong>for</strong>t gruppen mottok disse settene, startet arbeidet med å programmere og bli kjent med utstyret.7.2.2 UtviklermiljøVed skolen har gruppen tilgang til National Instruments Circuit Design Suite 11 Educational Edition.Via dette programmet har vi tilgang til to programmer, Multisim og Ultiboard, som også har blittundervist <strong>ved</strong> skolen.Multisim er et kretsdesignprogram hvor brukeren har tilgang til et bibliotek med deler, fotavtrykkog ere simulerings- og analyseverktøy.Ultiboard er et PCB-designprogram hvor brukeren kan lage egne kretskort. Når en har lagd kretseni Multisim, er det enkelt å overføre til Ultiboard. En kan også lage egne fotavtrykk. Videre har manmulighet til å eksportere til Gerber-<strong>for</strong>mat, med ere.µVision er et intgrert utviklingsmiljø 16 vi bruker <strong>for</strong> programmering, kompilering og debugging.Programmet er utviklet av Keil Elektronik og har full støtte <strong>for</strong> 8051-arkitekturen.7.3 Modulbasert arbeidGruppen valgte tidlig å jobbe med deler hver <strong>for</strong> seg, <strong>for</strong> så å slå alt sammen til slutt. Tanken var at hvertav gruppemedlemene da kunne lære opp de andre i gruppen. Gantt-skjemaet fungerte i begynnelsen somoversikt over hvem som skulle gjøre hva, men det ble etterhvert litt avvik i hvem som arbeidet med hva.Hver enkelt gruppemedlem satt seg ned med sin del, programmerte og testet at det fungerte. Deretterble programmene sammenføyd til to ho<strong>ved</strong>programmer, et <strong>for</strong> helikopteret og et <strong>for</strong> fjernkontrolleren.Dette fungerte veldig bra <strong>for</strong> gruppen sin del.16 IDE - Integrated Development Enviroment42


KAPITTEL 7. GJENNOMFØRING7.4. PROBLEMER7.4 Problemer7.4.1 GzllDet dukket raskt opp problemer angående trådløsinstillinger, kommunikasjonsavstander og datarater.Det første problemet var kompilering av eksempelkodene motatt av Nordic. Her manglet vi riktigprogramsti til bibliotekene og kunnskap i µVision og feilkodene vi mottok. Dette løste seg raskt <strong>ved</strong>hjelp av veileder og µVision sine hjelpesider.Det neste problemet baserte seg på svak avstand under kommunikasjonen. De to brikkenei kommunikasjonen mistet tilkobling <strong>ved</strong> 16 meter, noe som viste seg å være typisk <strong>for</strong>trådløskommunikasjon på 2Mbps. Techsupport på Nordic kunne <strong>for</strong>telle at <strong>ved</strong> å endre standardinstillinger<strong>for</strong> Gazell ville vi kunne skru ned datarate og dermed få økt radiosensitivitet og øktkommunikajonsavstand. Vi gjorde så endel testing både i gangen og i friluft <strong>ved</strong> parkeringsplass, ogfant ut at <strong>ved</strong> 250Kbps ville vi ha full kontakt opptil ca. 170m.Tredje problem med trådløskommunikasjonen oppstod når vi implementerte dynamisk nær-pairingpå helikopteret. Dette er en funksjon som sikrer at data sendt kommer fram til riktig mottaker, <strong>for</strong> åhindre datakræsj <strong>ved</strong> ere aktører i samme område. Ved fullført pairing mistet brikkene kontakten medhverandre og alle datapakker ble tapt. Etter mye testing ble det eksperimentert med andre datarater,<strong>for</strong> å stabilisere kommunikasjonen. Etter kontakt med veileder ble det konkludert med at <strong>ved</strong> 250Kbps<strong>for</strong>svinner kommunikasjon etter pairing. En mulig løsning er å bruke en intern versjon av Gazellbiblioteketmodisert av NS, som ble laget spesiellt til nRFCar applikasjonen fra Nordic. Dette eren R/C-bil som kommuniserer på 250Kbps med dynamisk nær-pairing. Vi valgte derimot å <strong>for</strong>tsettemed 1Mbps med nær-pairingen siden dette var en løsning vi allerede mestret. Selv om vi brukte høyeredatarate viste deg seg under testing at vi <strong>for</strong>tsatt oppnådde 100 meter takket være den dynamiskenær-pairingen, som oppretter en sikrere link.Etter montering av det ferdige helikopter-kortet kk vi Nordic til å tilpasse antenne ogmatchenettverket. Etter tuning begynte intens testing på kretsen. Det viste seg raskt at avstanden nåvar betydelig senket fra tidligere prototyper. Forskjellen lå i vårt eget utlegg <strong>for</strong> antenne, mot Nordic sineutviklerkort med PCB-antenne. Vi kk sendt kortet til TechSupport hos Nordic, men få feil ble funnet.En mulig løsning ville blitt å endre datarate til 250Kbps, som nevnt over, men grunnet <strong>for</strong>sinkelser iproduksjonsleddet manglet gruppen tid til å endre dette.7.4.2 ProgramvareProgramvaren fra National Instruments, se seksjon 7.2.2 på <strong>for</strong>rige side, har dessverre noen bugs. Enting vi la merke til var at hvis en gjorde en endring i Multisim etter at man hadde plassert komponenteri Ultiboard, kunne komponentene endre plass. Dette skjedde i fjernkontrollen. Modulkontaktene haddeblitt plassert med riktig avstand på kortet, men en endring i Multisim <strong>for</strong>årsaket at kontaktenebyttet plass. Dette ble ikke dette oppdaget før etter kretskortet var ferdig, og vi måtte lage nyttfjernkontrollkort.7.4.3 SykdomMidt i prosjektperioden opplevde vi en del sykdom, hvert gruppemedlem opplevde å være syk i nærmereto uker hver. På det værste var 3 medlemmer borte samtidig. Dette gjorde at gruppen havnet litt påetterskudd, men dette ble <strong>for</strong>t tatt igjen med god arbeidsinnsats fra gruppen.43


7.4. PROBLEMER KAPITTEL 7. GJENNOMFØRING7.4.4 MOSFETPå den første prototypen fungerte ikke motorene. På MOSFET-gatene var signalet tilstedet, 3,3Vpk.Der<strong>for</strong> prøvde vi å belaste ESCen med noen kiloohm i stedet <strong>for</strong> motorene. Da kk vi frem deønskede signalene. Kretsen fungerte altså <strong>ved</strong> lave strømtrekk. Det tydet på at vi ikke kk drevettransistorene helt i metning. Vi hadde brukt MOSFET-er av typen STP16NF06. Ved å studere transferkarakteristikkenfant vi ut at gate-spenningen var alt<strong>for</strong> lav <strong>for</strong> denne typen transistor, se gur 7.3a.Heldigvis hadde vi også bestilt en annen type, STS25NH3LL. Disse er adskillig mer lettdrevne og kretsenklarte å drive motorene.Når vi feilsøkte problemet kortsluttet vi kretsen med en probe og brant av to kobberbaner. Disseerstattet vi med kabel.(a) STP16NF06(b) STS25NH3LLFigur 7.3: Transfer-karakteristikk7.4.5 Lite minneNår displayet skulle implementeres med mye grakk kk vi problemer med at vi gikk tom <strong>for</strong> ashminnepå mikrokontrolleren. Bibliotekene som må være til stedet <strong>for</strong> å kunne bruke den trådløsekommunikasjonen samt paring tok opp ca 3/4 av plassen vi hadde til rådighet. Dette løste vi medå anskae ekstern ash, som selvfølgelig førte til at vi kk <strong>for</strong>sinkelser på implementeringen av display.Mye nytt måtte læres og en god mengde kode måtte skrives.Vi endte opp med å spare ere kilobyte. Flashen er såpass rask at vi har ikke merket noe <strong>for</strong>skjellpå ytelsen til displayet. Vi lå lenge helt opp i mot 16kB-grensen til det interne programminne tilmikrokontrolleren, men fant senere ut hvordan man kunne optimalisere den kompilerte koden bedre <strong>ved</strong>hjelp av optimaliseringsmulighetene i µVision. Dette hjalp oss en god del med å få presset inn mer iprogramminnet, men det var uansett ikke nok til å unngå bruk av ekstern ash.44


KAPITTEL 7. GJENNOMFØRING7.4. PROBLEMER7.4.6 BatterimonitorÅ nullstille klokken i batterimonitoren viste seg å være en komplisert afære. En feil fra Dallas gjørat ICA-registeret dekrementeres når vi skriver til minnet, men kun hvis strømregisteret er negativt.Klokken er på samme page i minnet som strømregisteret. På grunn av denne feilen er vi nødt til åivareta ICA-registeret hver gang vi nullstiller klokken. Først leser vi ut strømregisteret <strong>for</strong> å avgjøre omdet er negativt eller positivt. Deretter skriver vi null til klokkeregisteret. Hvis strømmen er negativ måvi overskrive ICA-registeret og inkrementere det. Hvis strømmen er positiv trenger vi ikke overskri<strong>ved</strong>et. Den eneste referansen vi fant til problemet var via rmaet Digital Products Company[37].På den første prototypen hadde vi problemer med jord til 1-wire. Støy i jordledningen mellomhelikopteret og batteriet slukte 1-wire signalet når motorene gikk. Ved å plassere en egen jordkabelmellom 1-wire og batterimonitoren kk vi grensesnittet til å virke. Senere oppdaget vi at noe av støyenskyldtes ringing på MOSFET-ene.7.4.7 MOSFET-støy (ringing)Som vi ser av gur 7.4 begrenser gate-motstanden stigetiden til motorspenningen. Motstanden er byttetfra 10Ω til 100Ω. Som følge av dette får vi mindre spikere når spenningen når makspunktet. Og nårspenningen blir lav er ringingen også noe mindre. Etter utskiftningen virket 1-wiren mer stabil, og dattaldri helt ut som først var tilfelle.Vi kk dessverre kun målt dette med <strong>for</strong>skjellig MOSFET-fabrikanter, men typene skal være relativtlike. Dette punktet dukket opp på slutten av prosjektet og burde denitivt vært studert nærmere,inkludert hvilken eekt R GS har på støyen.(a) STS12NF30L, R G = 10Ω(b) FDS8870, R G = 100ΩFigur 7.4: MOSFET-ringing på motorspenningen.45


7.4. PROBLEMER KAPITTEL 7. GJENNOMFØRING7.4.8 Sikkerhetsrutiner batterimonitorVi ønsket å implementere ulike sikkerhetsrutiner i mikrokontrolleren som bruker data frabatterimonitoren. Dette er tett bundet opp mot egenskapene en helikopter-ESC burde ha;strømbegrenser, temperaturadvarsel og varsel om lite batteri. Dessverre er det en del støy på 1-wiren tilbatterimonitoren som gjør den ustabil og derav ubrukelig til sikkerhetsfunksjoner.I tillegg oppdaget vi at rekkevidden på strømmåleren ikke rekker til. Den er skalert til 4,9A som er<strong>for</strong> lite til å detektere kvelestrøm <strong>for</strong> to motorer. Bruksområdet, med tanke på strømtrekk <strong>for</strong> beggemotorene, ligger opp i mot 6A <strong>ved</strong> 85% duty-cycle, se gur 7.5.Batteristatus987I [A] el. U [Vrms], (DC [%])6543I_batt [A]U_batt [Vrms]2100 % 15 % 25 % 30 % 35 % 45 % 55 % 65 % 75 % 85 %Duty-cycleFigur 7.5: Strømtrekk og batterispenning som funksjon av Duty-cycle.46


Kapittel 8ResultatFigur 8.1: Ferdig helikopter med kortet inni.Helikopterkretsen består av <strong>elektro</strong>nisk hastighetskontroll, servokontroll, kompass, akselerometer ogto gyroskop. Fjernkontrollens display viser batteristatusene og sensordata. Paring må utføres førhelikopteret er operativt, der instruksjoner vises på skjermen. Vi har noen problemer med korruptedatapå displayet. Dette er i ho<strong>ved</strong>sak støy på 1-wiren og kompasset, og feil i vår rmware. Feilene er likevelikke noe som hindrer oss i å vise to-veis kommunikasjon. Alene viser kompasset himmelretningene somdet skal gjøre, men problemer har oppstått når kompasset har stått i system med resten av enhetene ognære motorene.Batterimonitoren sitter på batteripakken og overvåker inn- og utlading av batteriet, spenning,temperatur, strømtrekk og tiden batteriet har vært aktivt. Monitoren kalibreres med et eget programvia Nordics utviklerverktøy. Vi har to sikkerhetsfunksjoner aktive, en som hindrer motorene å starte førparing har funnet sted, og en som deaktiverer motorene <strong>ved</strong> brudd på den trådløse linken. Vi ønsket åbruke batterimonitoren til yttligere sikkerhet, men <strong>for</strong>eløpig er støy og rekkevidde på strømmåleren enhindring.På tampen oppsto problemer med de nye kortenes rekkevidde. Med utviklingsmodulene oppnår viover 100 meter, men de nye kortene presterer ikke lengre enn 15 meter, og vi kk en mer ustabilkommunikasjonslink. Tuning av antennen ble gjort av en ansatt <strong>ved</strong> supportavdelingen til Nordic. Hermangler det dessverre målinger og optimalisering av utgangseekten.48


KAPITTEL 8.RESULTATFigur 8.2: Ferdig fjernkontroll og batterimonitor.49


Kapittel 9KonklusjonProsjektet har vært veldig lærerikt og interressant, både fagmessig og personlig. Vi har vært gjennommange praktiske oppgaver og en del teori. Problemstillingen var å bygge en prototype som hadde desamme egenskapene som helikopteret hadde før vi startet. Det kk vi til med en prototype som yr ogfjernkontroller med et display som viser to-veis kommunikasjon. Det har blitt avvik mot målene vi satteunder <strong>for</strong>prosjektet, og dessverre kk vi ikke rettet dette opp før prosjektet ble avsluttet. Et eektmålomhandlet lavt batteri<strong>for</strong>bruk, men dette fant lite relevant så <strong>for</strong>t vi så strøm<strong>for</strong>bruket under yvning.Vi føler vi har kommet oss i mål og er godt <strong>for</strong>nøyd med resultatet. Oppgaven har lært oss mye omprosjektstyring og gjennomføring av større prosjekt. Vi har tilegnet oss masse ny kunnskap om relevantemoduler og protokoller <strong>ved</strong> mikrokontrollere. Det er lett å se tilbake på prosjektet og se hva vi burdegjort annerledes, men alt i alt er vi stor<strong>for</strong>nøyde.50


Kapittel 10DiskusjonNå som vi i ettertid ser på prosjektets utførelse er vi mange erfaringer rikere. Vi ser at mye kunne værtgjort annerledes. Under <strong>for</strong>prosjektet kunne spesikasjonene hvert denert bedre <strong>for</strong> å få mer konkreteoppgaver å jobbe mot. Vi denerte hvem som skulle ha ho<strong>ved</strong>ansvaret <strong>for</strong> de <strong>for</strong>skjellige enhetene, menikke hvem som faktisk skulle utarbeide de. Der<strong>for</strong> ble det noe ujevn arbeids<strong>for</strong>deling. Her skulle vi lagtpå bordet hvem som er gode til hva, og som mest eektivt ville fullført oppgaven, men unngikk dette<strong>for</strong>di vi alle ville lære mest mulig. Hadde prosjektet vært utført i en profesjonell sammenheng ville nokdette vært <strong>for</strong>delt annerledes.Flere av oppgavene var lite gjennomtenkt med tanke på tids<strong>for</strong>bruk. Dette gjenspeiler at vi haddemeget lite <strong>for</strong>kunnskaper om de ulike enhetene. Samtidig var nok ambisjonene til prosjektet veldig høye.Vi burde tidligere ha kuttet ut overødige deler, og satt all fokus på det mest essensielle. Dette villegitt oss en bedre denert tidsramme og kanskje ført til et sikrere sluttresultat.Innkjøpene burde vært gjort tidligere, og i større kvanta. Det var ere ganger vi mangletkomponenter, men mye var u<strong>for</strong>utsette skader og komponenter vi ikke visste vi ville ha bruk <strong>for</strong>.Leveranse av kretskort til helikopteret tok lengre tid enn <strong>for</strong>ventet, og testing og programmering bleutsatt. Her burde vi begynt arbeidet med design av kretskortet tidligere, slik at slike tids<strong>for</strong>sinkelserkunne vært unngått.Samarbeidet med Nordic Semiconductor har vært meget bra. Til tider har det vært vanskelig å fåtak i veileder, men vi har fått god respons og har opplevd at ingen spørsmål har vært <strong>for</strong> dumme.Vi har fått god hjelp av ere ansatte <strong>ved</strong> Nordic, både til programmering og utlegg. Vi har også fåtttilgang til å bruke labben på Nordic når det har vært behov <strong>for</strong> dette. Dessverre kk vi ikke innsyni alt som <strong>for</strong>egikk på labben. Sammarbeidet i gruppen har også vært eksepsjonelt god. Vi har værtmeget samkjørte, hatt gjevnlige møter og gode diskusjoner og tatt felles besluttninger. Flere uenigheterhar ført til bedre løsninger, og kunnskap har blitt <strong>for</strong>delt. Ved å rullere på hvem som har hatt ansvarannenhver uke, har alle fått god erfaring med det organisatoriske og fått ansvar <strong>for</strong> avgjørelser.Vi ser i ettertid at mange problemer har blitt løst på en vanskelig måte. Vi tar <strong>for</strong>behold om muligefeil i programkode, målefeil under resultater og andre problemer vi har oversett. Med den nye kunnskapenvi nå har tilegnet oss, ser vi at mange løsninger har vært unødvendig tungvinte.51


10.1. VIDEREUTVIKLING KAPITTEL 10. DISKUSJON10.1 VidereutviklingI prosjektets oppstartsfase satte vi oss ned og brainstormet rundt oppgaven. Hva kan vi gjøre med enslik åpen oppgave vi har blitt tildelt? Svarende var veldig mange og varierte, men til slutt måtte vifraskrive oss mange idèer vi fant upassende, <strong>for</strong> vanskelige eller <strong>for</strong> dyre. Dette gjør at prosjektet sitterigjen med en kjerne av relevante moduler. En slik prioritering er nødvendig i prosjekter med begrensetbudsjett og tidsramme, men mange ting kunne og burde vært gjort annerledes.10.1.1 Trim og sikkerhetI et videre arbeid kunne trim vært digitalisert i større grad. Det ligger allerede en trim-variabel i ESCkoden,og variabler kan enkelt modisere pulslengden til servoene. De digitale trimmene kunne værtjustert gjennom en meny med displayet og joystickene. For å trimme in-ight må menyknappen vekslemellom at joystickene virker som trim eller kontrollspak. På utlegget ligger allerede en tilkobling til enslik menyknapp.Flere sikkerhetsfunksjoner ble testet mot slutten av prosjektet, hvor vi begrenset motorene om detgikk <strong>for</strong> stor strøm eller oppstod <strong>for</strong> lav spenningen. Batterimonitoren gav oss disse verdiene, mende var <strong>for</strong> ustabile så støyproblemene rundt motorene må <strong>for</strong>bedres. Som en sikkerhet tok vi medshunt-kondensatorer på ADC-inngangene i utlegget til fjernkontrollen. Disse skulle motvirke støy påservoene, men ingen <strong>for</strong>bedring kunne bli påpekt og de kan fjernes. Strømmåleren i batterimonitorenmå også omskaleres <strong>for</strong> å kunne detektere høy nok kvelestrøm. Som en følge av dette vil oppløsningen pågjenværende batterikapasitet minke, og en bedre batterimonitor kunne vært brukt. For å opprettholdestabil yvning er sikkerhetsfunksjonene <strong>for</strong>eløpig deaktivert.Siden motorene kan motta uønskede signaler fra throttle-stikke rett etter parring, burde ensikkerhetsfunksjon <strong>for</strong> dette vært implementert. En løsning kunne vært å hindre parring mens throttleverdiener større enn 0.10.1.2 Flight-assistantFlight-assistant krevde masse arbeid med reguleringssløyfer, matematikk og programkode ingen av osshadde kunnskap om på <strong>for</strong>hånd. Etter at gyroskop og akselerometer var implementert i kretsen lå alttil rette <strong>for</strong> ight-assistant, men etter litt prøving og feiling fant vi oppgaven <strong>for</strong> tidkrevende. Viderearbeid vil kunne være styresløyfe <strong>for</strong> å holde helikopteret stabilt i lufta, uten input fra pilot. Dette betyrå måle bevegelser og motvirke disse automatisk i rmware.En hastighetsregulator kunne også vært implementert i ESC-en. Friksjon i mekanikken kan føre til atde to motorene kjører med ulik hastighet selv <strong>ved</strong> samme spenningstilførsel. I steden <strong>for</strong> å løse dette medmanuell trim, kan man implementere en reguleringssløyfe. Reguleringssløyfen må da måle hastighetenpå stagene og være tilbakekoblet ESC-en.52


KAPITTEL 10. DISKUSJON 10.1. VIDEREUTVIKLING10.1.3 SensorerApproksimasjonssensor hadde vi håpet å kunne bruke på helikopteret, men vi nedprioriterte oppgaven.Approksimasjonssensoren ville målt avstand til gjenstander rundt helikopteret, og pepet likt enryggesensor til bil i første omgang. Senere i en ight-assistant kunne man automatisk styrt unnagjenstandene. Etter problemene med ight-assistant så vi raskt at enda en måte å automatisk styrehelikopteret ville bli alt<strong>for</strong> vanskelig.Under <strong>for</strong>prosjektet fant gruppa muligheten <strong>for</strong> å måle høyde <strong>ved</strong> hjelp av et barometer.Trykkmåleren viste seg senere å være unøyaktig, vanskelig å nne riktig verdier fra og brikken er nå uteav produksjon. Dermed mangler prosjektet en god høydemåler, noe som er relevant <strong>for</strong> et helikopter.Gruppa eksperimenterte med ultrasonisk avstandsmåler, men sensoren ble først inkludert i prosjektetetter produksjon av kretskortene og kk dermed ingen plass i prototypen. Grunnen til at barometeret ble<strong>for</strong>etrukket fram<strong>for</strong> avstandsmåleren var ho<strong>ved</strong>saklig rekkevidden på sensorene. Barometeret er designet<strong>for</strong> å måle opptil 10 000 meter, mot at avstandsmåleren ikke måler lenger enn 7 meter. Om høydemålerenhadde fått ere arbeidstimer, ville den vært implementert i hardware og aktivert i kode, der vi alleredehar funksjoner klare til bruk.Vi hadde mange også andre kreative ideer, som Laser-Tag, GPS, video-feed og logging av datatil PC. Alt er oppgaver som er overkommelig, men ligger langt fram i tid i <strong>for</strong>hold til vårt prosjekt.Alle oppgavene ser vi på som relevante <strong>for</strong> helikopteret, og vi opp<strong>for</strong>drer studenter til å videreutvikleprosjektet ytterligere med ere moduler.53


Referanser[1] Ascii table and description.http://www.asciitable.com/.[2] 8052.com. 8051 tutorial: Timers.http://www.8052.com/tuttimer.phtml.[3] Atmel. AT25DF021 datablad.http://atmel.com/dyn/resources/prod_documents/doc3677.pdf.[4] Ajay Bhargav. 8051 projects <strong>for</strong>um.http://www.8051projects.net.[5] CircuitCalculator.com. Pcb trace width calculator, 2006.http://circuitcalculator.com/wordpress/2006/01/31/pcb-trace-width-calculator.[6] Maxim Dallas Semiconductor. Ds2438 smart battery monitor. Technical report, 2001.http://www.maxim-ic.com/datasheet/index.mvp/id/2919.[7] electric-rc helicopter.com. Coaxial rc helicopters: How do they work?http://www.electric-rc-helicopter.com/article/coaxial.php.[8] EngineersGarage. Timers and 8051 timer programming.http://www.engineersgarage.com/tutorials/timers-8051-timer-programming-tutorial.[9] esacademy.com. A general introduction to i2c from nxp.http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/general-introduction/.[10] Telos EDV Systementwicklung GmbH. I2c-bus what's that?http://www.i2c-bus.org/.[11] Paul Hills. Speed controllers. 2005.http://homepages.which.net/~paul.hills/SpeedControl/SpeedControllers.html.[12] http://radiosalg.com/. Maas k-222 swr-meter - juster antenne, 2010.http://radiosalg.com/index.php?main_page=product_info&cPath=8&products_id=32&zenid=862e2319467e8a3188dfa263ef57f7e5.[13] Honeywell International Inc. Digital compass solution hmc6352. Technical report, 2006.http://www.sparkfun.com/datasheets/Components/HMC6352.pdf.i


REFERANSERREFERANSER[14] Microchip Technology Inc. Joseph Julicher. An847, rc model aircraft motor control. 2002.http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012017.[15] MicroChip. Overview and use of the picmicro serial peripheral interface.http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf.[16] Mabuchi Motor. Fk-180sh. Technical report.http://www.mabuchi-motor.co.jp/en_US/cat_files/fk_180sh.pdf.[17] Byte Paradigm. Introduction to i2c and spi protocols.http://www.byteparadigm.com/kb/article/AA-00255/22/Introduction-to-SPI-and-IC-protocols.html.[18] Parallax. Honeywell hmc6352 compass module 29323. 2009.http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/29323_HoneywellHMC6352Compass-v1.0.pdf.[19] RadianAS. Lipo sikkerhet. 2011.http://lipo.no/index.php?option=com_content&task=view&id=18&Itemid=56.[20] RadianAS. Lipo verdt å vite. 2011.http://lipo.no/index.php?option=com_content&task=view&id=20&Itemid=58.[21] RChelisite.com. How do rc helicopters work?http://www.rchelisite.com/how_do_rc_helicopters_work.php/.[22] Dallas Semiconductor. Smart battery monitor - ds2438, 2002.http://www.maxim-ic.com/app-notes/index.mvp/id/126.[23] Fairchild Semiconductor. Fds8870. Technical report, 2007.http://www.fairchildsemi.com/ds/FD%2FFDS8870.pdf.[24] Nordic Semiconductor. Using external, non-volatile memory with the nrf24le1.http://www.nordicsemi.com/eng/nordic/download_resource/7502/1/96211548.[25] Nordic Semiconductor. nrf24le1 product specication v1.6. Technical report, 2007.http://www.nordicsemi.com/eng/nordic/download_resource/7493/3/23779330.[26] Nordic Semiconductor. nrf24le1 product specication v1.6, chapter 26: Electrical specications.Technical report, 2007.http://www.nordicsemi.com/eng/nordic/download_resource/7493/3/23779330.[27] Nordic Semiconductor. 7x7 schematic layout, 2009.[28] Nordic Semiconductor. nrfgo starter kit user guide v1.3. Technical report, 2009. Fra nRF GO CD.[29] NXP Semiconductors. I2c-bus specication and user manual. 2007.http://www.nxp.com/documents/user_manual/UM10204.pdf.[30] NXP Semiconductors. Pmeg3050ep. Technical report, 2009.http://www.nxp.com/documents/data_sheet/PMEG3050EP.pdf.ii


REFERANSERREFERANSER[31] Seattle Robotics Society. Whats a servo?http://www.seattlerobotics.org/guide/servos.html.[32] Sparkfun.com. St-dualgyro-pr-breakout-v10, 2009.Digitalt <strong>ved</strong>legg: Datablad/Gyroskop/ST-DualGyro-PR-Breakout-v10.pdf.[33] STMicroelectronics. L4931cxx, 2008.http://www.st.com/stonline/books/pdf/docs/4340.pdf.[34] STMicroelectronics. Ly503alh - datasheet, 2009.Digitalt <strong>ved</strong>legg: Datablad/Gyroskop/LY530ALH.pdf.[35] STMicroelectronics. Ld1117s33tr, 2010.http://www.st.com/stonline/books/pdf/docs/2572.pdf.[36] STMicroelectronics. Ld1117s50tr, 2010.http://www.st.com/stonline/books/pdf/docs/2572.pdf.[37] Digital Products Company (DPC) T.Black. Batmon. Technical report, 2002.http://www.digitalproductsco.com/batmon/.[38] Tech-Vogue. Programming 8051, 2010.http://www.tech-vogue.com/Electronics/advanced/8051/Programming8051.html.[39] Epson ACTE Components. Specication eg7504c-rs rev. 1, 2010.Digitalt <strong>ved</strong>legg: Datablad/Display/EpsonEG7504C-RS2.pdf.[40] Wikipedia. Serial peripheral interface.http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus.[41] Wikipedia. Smithkort, 2010.http://da.wikipedia.org/wiki/Smithkort.[42] Wikipedia. Alkaline battery. 2011.http://en.wikipedia.org/wiki/Alkaline_battery.[43] Wikipedia. Buck converter. 2011.http://en.wikipedia.org/wiki/Buck_converter.[44] Wikipedia. Electronic speed control. 2011.http://en.wikipedia.org/wiki/Electronic_speed_control.[45] Wikipedia. Lithium-ion polymer battery. 2011.http://en.wikipedia.org/wiki/Lithium-ion_polymer_battery.[46] Wikipedia. Low dropout regulator. 2011.http://en.wikipedia.org/wiki/Low-dropout_regulator.[47] Wikipedia. Power mosfet. 2011.http://en.wikipedia.org/wiki/Power_MOSFET.[48] Wikipedia. Schottky diode. 2011.http://en.wikipedia.org/wiki/Schottky_diode.iii


[49] Wikipedia. Shunt (electrical). 2011.http://en.wikipedia.org/wiki/Shunt_%28electrical%29.iv


NomenklaturAkronymSDASerial DataAVRAtmels RISK-prosessorSMDSurface Mount DeviceCSChip SelectSPISerial Peripheral InterfaceESCElectronic Speed ControlSSDSolid State DiskFPCFlexible Printed CircuitSWRStanding Wave RatioI2CInter-Integrated CicuitTHTimer High ByteICAIntegrated Current AccumulatorTLTimer Low ByteISPIn-System ProgrammingTWITwo Wire InterfaceJTAG Joint Test Action GroupZIFZero Insertion ForceLCDLDOLSBLSBLiquid Crystal DisplayLow DropoutLeast Signicant BitLeast Signicant ByteMISO Master In, Slave OutMOSI Master Out, Slave InMSBMSBNSPCBPCMMost Signicant BitMost Signicant ByteNordic SemiconductorPrinted Circuit BoardPulse Coded ManipulationPWM Pulse Width ModulationPWM Pulse Width ModulationSCKSCLSPI ClockSerial Clockv


OrdlisteAcknowledgement .Appnote .Page .Payload .Pitch .Ringing .Svar fra mottaker, <strong>for</strong>teller at data blemottatt.Et dokument som beskriver hvordan mankan bruke et produkt til en bestemtoppgaveEt dataområdePayload er et vanlig navn på datapakkersom sendes til tjener fra klient.Ack_payload sendes tilbake fra tjeneren.Bevege snuten oppover og nedoverRinging er svingningene som <strong>for</strong>ekommeretter et step-signal. Dempning <strong>for</strong>telleross hvor mange perioder som går førsvingningene dør ut.Roll .Shunt .Sideveis krengingOrdet shunt brukes om komponenter somleder (eng. bypass) hele eller deler avstrømmen <strong>for</strong>bi enkelte punkt.Smith-skjema .SWR .Throttle .Yaw .Et hjelpemiddel til grask framstillingav RF-<strong>for</strong>hold i en elektrisk krets. Detanvendes ofte til å løse problemer medtanke på impedanstilpasningsproblemer itransmisjonslinjer [41]Forhold mellom høyeste og lavestespenning på kommunikasjonslinjen mellomsender og antenne. Er et mål på hvoreektiv en antenne er med hensyn påutgangseekten.[12]Kraft til motorRotering rundt egen aksevi


Register1-Wire, 17Akselerometer, 26Antennenetuning, 27BatteriBatterimonitor, 26, 36Batteristatus, 26, 36indreresistans, 9LiPo, 8BatterimonitorKalibrering, 37Kommunikasjonsgrensesnitt, 26C-rating, 9Debug & ISP, 47Development kits, 41DisplayASCII-tabellen, 37Duty-cycle, 32Ekstern Minne, 8EEPROM, 8Flash, 8Electronic Speed Control, 9ESC, 23Flight-time, 36Gazell Link Layer, 12Gazell Pairing Library, 12Gyroskop, 25HAL, 28I2C, 16Kommunikasjonsprotokoll, 33Operasjonsmodus, 33Moduler, 42Montering, 27National Instruments, 43Pairing, 28Power Supply Unit, 24BEC, 24Fjernkontrollen, 24PWM, 32Rotorhastighet, 32Shunt-diode, 11Sikkerhetsfunksjoner, 32Sikkerhetsrutiner, 46Smart Battery Monitor, 26Smith-skjema, 27SPI, 15Sprintf, 36SWR-plott, 27Timere, 13Moduser, 14Registere, 13Transfer-karakteristikk, 23UtleggFjernkontroller, 19Utviklermiljø, 42NI Circuit Design Suite, 42uVision, 42KompassKalibrering, 33vii


Tabeller4.1 8051s Timer-moduser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2 1-Wire timing tabell [22] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.1 Designregler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2 Designregler helikopter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.3 ESC-komponenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.4 BEC spesikasjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.5 PSU fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.6 Gyroskop pin-oversikt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.7 Designregler batterimonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277.1 Oversikt i starter kit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41viii


Figurer4.1 Bilde av original fjernkontroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2 Helikopterets bevegelser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.3 Strøm<strong>for</strong>yttning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104.4 Metall-oksid felteekttransistor (MOSFET) . . . . . . . . . . . . . . . . . . . . . . . . . 104.5 En enkel ESC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.6 nRF24LE1 Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.7 Timer-registere[38] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.8 Eksempel på implementering av to SPI-enheter[40] . . . . . . . . . . . . . . . . . . . . . 154.9 I2C bus ekspempel[9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.10 Sending fra start til slutt med repeated start . . . . . . . . . . . . . . . . . . . . . . . . 164.11 1-Wire timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.1 TFC-120-SMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2 nRF6417 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.3 nRF6419 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.4 Debug og ISP har hver sin FPC-tilkobling . . . . . . . . . . . . . . . . . . . . . . . . . . 215.5 Helikopterkretskortet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.6 nRF24LE1 Q48 - Footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.7 Transfer-karakteristikk FDS8870 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1 Trådløs kommunikasjon - Flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.2 Flytskjema <strong>for</strong> styring av servoer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.3 Gyroskop z-akse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.4 Akselerometeret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.1 nRFgo Starter Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417.2 nRFgo Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417.3 Transfer-karakteristikk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447.4 MOSFET-ringing på motorspenningen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457.5 Strømtrekk og batterispenning som funksjon av Duty-cycle. . . . . . . . . . . . . . . . . 467.6 Oversikt over Debug og ISP fra oppdragsgiver . . . . . . . . . . . . . . . . . . . . . . . . 478.1 Ferdig helikopter med kortet inni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488.2 Ferdig fjernkontroll og batterimonitor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49ix


Vedleggx


Tillegg AUtlegg og kretsskjemaxi


A.1 HelikopterA.1.1UtleggToppBunnxii


222DD1234567821A2A.1.2Kretsskjema01234567891011121314ADXL345BCCZDate: 2011-05-20 Sheet 1 of 110uF_ElectrolyticVTG42x35cm Helikopter_rev22.1CS6L 1ASize: E1115 RC-Helikopter 2.4GHz (Nordic Semiconductor)Revision:LCIOCS1 0.1µF0.1µFVddGNDRESGNDGNDVsCSSCLSDASDORESNCINT2ITN1K KP1.2Vref_GZP1.3U5VTGP0.2VSSC13VDDANT21.5pFDEC1U9H ANT1HDEC2L3AntennaenRF24LE1 Q48 VDD_PAC2 C3 C8 P0.3 P0.3P3.0 P3.0 3.9nH100nF 100nF 33nF P0.4C4 C14P0.4nRF24LE1Q48 RESET RESETP0.5C161.0pFP0.5P2.7 P2.7 2.2nF 1.0pFVTGP0.6 P0.6P2.6 P2.610nFI PROG PROGIP2.5 P2.5C19P0.7 P0.7P2.4 P2.4C17VSS1U6100nF CS5P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 P2.1 P2.2 P2.3 R5GND Vdd10uF_ElectrolyticFILTVDD RESVCONT RESVCC_nRF10kΩ470nF RES HPJ 1%Vref_GZ RES PDJC9C20 RES STR8P1.0Vref OUTZ33nF4XOUTZ 4XINZR74.7µF10kΩ C22P1.1LY530ALC21 1MΩ 1% 0.1µFVTG1%VDDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P0.1P0.2P0.1GNDP0.0P3.6XC1XC2P3.5P3.4P3.3P3.2P3.1VDDVSS VDDIREF3.9nHL24.7nHVCC_nRFL1Vref_GXYG GVTGRESETP3.6GNDP0.0P3.4 P3.2P3.5 P3.3 P3.122kΩ1%C12100nFR15 1MΩ1%Vref_GXYVCC_nRFR1710kΩ1%R3C300.1µF10kΩ1%4.7µFC29Vref_GXYD DP1.2VTGVCC_5VP1.5P0.0C10P1.6VTGP2.0C26SERVOS15pF470nFRESETU10R9 R10_pullupI2CE HDR2X3E10kΩ 10kΩC18GND HPX1_16MHzR10 FILTVDD PDP0.2VCONT1% 1%10nFSTP0.1TSX-3225HDR1X8R1410kΩ OUTY OUTXVCC_5V4xINY 4XINX1%R13P1.2 P1.3C11VCC_nRF4.7µF10kΩ C28LPR530AL C27 1MΩ 1% 0.1µFVTG1%F F15pFP0.4 R16P0.5P0.334xOUTYVref4XOUTXVddRESRES1C15100nFVTGPROGCS410uF_ElectrolyticU2R117VA LD1117S33TRPMEG3050EPM2VTG10kΩAVTGC24M1Vin1%VoutR20120pFSchottky2C6HDR1X3U81ACS8Schottky1 HDR1X2 10µF 4.7kΩOF- OF+C11%SR+ CA1HDR1X2NC CA2NC NC100nF10uF_ElectrolyticPMEG3050EPGND CB1B P3.6NC CB2BP1.3R12SDI NCP0.7NC NCVTG 10kΩC25NC NC120pFU4U1P1.2 SCL NC1%LD1117S50TRR2FDS8870NC VDDNC NCVCC_5VG SVin Vout100ΩP0.6C23HMC6352R10.1µFU3C 1AC710kΩR4CCS7FDS8870100nFG SR6 100Ω10uF_Electrolytic10kΩFLASH_ISPGND2GND21101234567891011121314xiii


A.2 FjernkontrollA.2.1UtleggToppBunnxiv


A.2.2Kretsskjema012345678910111213Date: 2011-04-18 Sheet 1 of 1GND optional5.0V3.3VE1115 RC-Helikopter 2.4GHz (Nordic Semiconductor)GND GND GNDP2.6VTGP3.6 GNDR1 Notes:GND GND PROGP2.4GNDP3.4 TDI10kΩ _x: H FCSNP1.4P2.2GNDP3.2 TCKresetVCC FMOSIP2.0VTG P0.6P3.0HP1.0ADC_pitchP1.6ADC_jawSize: Revision:P1.2SPI_CSA0 fjernkontroll_proto51.013 457 8911P1TFC-120-SMD_1GNDG G261013 141517 1819211216202223 2425 2627 2829 3031 3233 3435 3637 3839 40VTG13 457 8911P2TFC-120-SMD_12ADC_battHDR1X83 TDO4 TCKADC_throttleTDOP3.1 P3.5 TMS 5 TMSF ADC_rollVTGP2.1 P2.56 TDIFFMISOGND P3.3GNDGND7 resetVTGP1.1 P1.5P2.3 P2.7FSCKGND8P0.7GNDGNDGND GND reset P1.3 P1.7HDR1X8261013 141517 1819211216202223 2425 2627 2829 3031 3233 3435 3637 3839 40PROBEDISPLAYDATAFLASH_ISPTEST_PT1HDR1X18SPI_CS U1VTG1 VTG1 8 VTGP1.0 23 72 PROGD6 P0.6DR5VTG 4 5P1.13 FSCKP0.710kΩ4 FMOSIAT25DF021MENU_buttonP3.1 P3.3 P2.1 P2.3 P2.5 P2.75 FMISOR3P3.0 P3.2 P3.4 P2.0 P2.2 P2.4 P2.66 FCSN20Ω7 resetDEBUGE HDR1X2VTG81 VTGE123456789101112131415161718R212kΩC6_xC8_xR420kΩP1.6ADC_batt100nF100nFP1.4C5_xADC_pitchP1.210µFADC_jawC CB BC2100nFC310µFADC0HDR2X5 PORT1HDR2X5P3.5 P3.6C7_x100nFADC_throttle ADC_rollP35_366VON_OFFA P1.5AHDR1X3U2HDR1X2HDR1X3L4931CZ33VTGP1.3VTGC9_x100nFP1.7VTG012345678910111213xv


A.3 BatterimonitorA.3.1Utleggxvi


A.3.2Kretsskjema0123456789A ABal_LiPoChargerB BHDR1X38V_LiPoHelicopterHDR1X3HDR1X2C CRsens50mCf0.1µF12U78734 561-wireHDR1X3DS2438D DRf100kE EF FGND Size: E1115 RC-Helikopter 2.4GHz (Nordic Semiconductor)Revision:A0 batterimonitor_ekstern1.0Date: 2011-05-02 Sheet 1 of 10123456789xvii


A.4 ReservekretsA.4.1UtleggToppBunnxviii


001122334455DA.4.2Kretsskjema6789101112131415GND GND GND GNDP2.6VTGP3.6 GNDGND GND PROGP2.4GNDP3.4 TDIFCSNP1.4P2.2GNDP3.2 TCKJ FMOSIP2.0GNDJP0.6P3.0P1.0Size: E1115 RC-Helikopter 2.4GHz (Nordic Semiconductor)Revision:P0.4P1.6A0 heli_reserv1.0P0.2P1.2Date: 2011-05-19 Sheet 1 of 1P0.01I I3 457 8911261013 141517 1819211216202223 2425 2627 2829 3031 3233 3435 3637 3839 40P1TFC-120-SMD_113 457 8911P2TFC-120-SMD_1P0.3TDOP3.1 P3.5 TMSP0.5VTGP2.1 P2.5H HFMISOGND P3.3GNDGNDVTGP1.1 P1.5P2.3 P2.7FSCKGNDP0.7GNDGNDGND GND reset P1.3 P1.7261013 141517 1819211216202223 2425 2627 2829 3031 3233 3435 3637 3839 40P0.1G G33R9 R10_pulSERVOSHMC635210kΩ 10kΩ44HDR2X31% 1%5 P1.45J5J6 VTGF P1.3 11FP0.166 VTG22P1.2 P1.3VCC_5V77 VTG33 P1.28HDR1X7GND GNDHDR1X3 HDR1X3HDR1X822113EZ0-URFP1.0344 GNDresetADXL345BC55E VTGJ8J7VTGEVCC_5V1 GND1HDR1X5 HDR1X5P0.02VTG2P1.2P1.3VTGR1710kΩ1%22 1ALY530AL10uF_ElectrolyticVTGD J3J4D11P1.122122 1C7100nF2121CS71 2R6 10Ω10kΩG SGNDR110kΩR4U3STP16NF06A AU237VLD1117S33TRPMEG3050EPM2VTG 2Vin VoutVTGM11R20Schottky2C6HDR1X3LPR530ALSchottky1 HDR1X2 10µF 4.7kΩB C11%J1J2CS8 HDR1X21100nFPMEG3050EP1B2 10uF_Electrolytic 1AP3.622 P0.3P0.733P0.5P0.2U4D U144GNDLD1117S50TRR21 2 4 STP16NF06P0.455VTGVCC_5VG SC Vin Vout10ΩP0.6CHDR1X5 HDR1X511,2,3 5,6,7,82 12122GND21116789101112131415xix


Tillegg BAntennetuningxx


B.1 Smith-skjemaxxi


B.2 SWR-plottxxii


Tillegg CRegnskapxxiii


Prosjektregnskap 2011, bacheloroppgave E1115 R/C-Helikopterv/ Nordic Semiconductor ASADebet KreditHvem: Dato: Hva: Note: Pris: Hvem: Dato: Hva: Note: Pris:Toftenes Toftenes07.02.11 Dauphin Helikopter Trønderfrim hobbySt.Olavsg.11 kr 995,00 21.02.11 Faktura til Nordic 2117,11kr,helikopter,sensorer07.02.11 Gyroscope accelerometer Sparkfun.com kr 492,65 10.03.11 Faktura til Nordic 638 kr Toll UPS + reser<strong>ved</strong>eler07.02.11 ESC,BEC,sensorer Mouser.com kr 394,8418.02.11 Barometer Mouser.com kr 234,6221.02.11 Toll Posten Sparkfun <strong>for</strong>enklet toll kr 223,0025.02.2011 Swashplate + reser<strong>ved</strong>eler Elefun.no kr 188,0007.03.11 Toll UPS UPS-fakturert toll kr 227,00Sum kr 2 755,11 Sum kr 0,00Balanse -kr 2 755,11Hella Hella22.02.11 Verktøy Clas Ohlson AS Trondheim Torg kr 436,00 10.03.11 Faktura til Nordic Verktøy+ landingsutstyr kr 535,00 kr 535,0023.02.11 Landingsutstyr Trønderfrim hobbySt.Olavsg.11 kr 99,00 06.05.11 Faktura til Nordic Farnell kr 1101,68 kr 1 101,6815.03.11 MOSFET,VREG Farnell kr 449,9006.05.11 Capasitor,header & div comp.Farnell kr 651,78Sum kr 1 636,68 Sum kr 1 636,68Balanse kr 0,00Wilhelmsen WilhelmsenSum kr 0,00 Sum kr 0,00Balanse kr 0,00Sandberg SandbergSum kr 0,00 Sum kr 0,00Balanse kr 0,00Totalsum kr 4 391,79 Totalsum kr 1 636,68Kommentarer: Totalbalanse -kr 2 755,11For kvitteringer, se digitale <strong>ved</strong>leggBalansen er negativ, men dette grunnet tilbakebetalinger under fullføringxxiv


Tillegg DDelelisterxxv


D.1 HelikopterD.1.1Reservekrets xxvi


D.1.2 Prototype revisjon 2 xxvii


D.2 Fjernkontroll D.3 Batterimonitor xxviii


Tillegg EInnhold CDˆ Antennetuningˆ Applikasjonsnoterˆ Bilder og videoˆ Brukermanualˆ Databladˆ Delelisterˆ Fagartikkelˆ Forprosjektˆ Ho<strong>ved</strong>prosjektˆ Kodeˆ Møteinnkallingerˆ Møtereferaterˆ Regnskapˆ Skjemategningerˆ Statusrapportˆ Timelisterˆ Toukersapporterˆ Utleggxxix


Tillegg FBrukermanualxxx


Tillegg GFagartikkelxxxiii


nRFCopter—R/C Helikopter med en vriNordic Semiconductor AS, en av verdens ledendebedrifter innen<strong>for</strong> trådløs kommunikasjon, ville ha etfjernstyrt helikopter <strong>for</strong> å vise frem deresmikrokontroller; nRF24LE1. En brikke med trådløssender/mottaker på 2,4GHz, det samme som sitter iditt trådløse tastatur. Da en gruppe studenter fraHøgskolen i Sør-Trøndelag tok kontakt med demangående avsluttende ho<strong>ved</strong>prosjekt, svarte NordicSemiconductor med oppgaven. Gruppen består avVegard Hella, Øyvind A. Sandberg, Jesper Toftenesog Christian Wilhelmsen, alle tredjeårsstudenter <strong>ved</strong>linje <strong>for</strong> <strong>elektro</strong>nikk <strong>ved</strong> AFT.SpesifikasjonerTo-veis trådløs kommunikasjonnRF24LE1 (µkontroller og transciever)2.4GHz kommunikasjon1mbps air datarate100m rekkevidde~15cm dynamic proximity pairingPeriferienheter3-akse akselerometer3-akse gyroskop2-akse kompassBatterimonitorDisplayI dagens marked er det mange fjernstyrte helikopter, altfra små lekehelikoptre <strong>for</strong> noen hundrelapper, opp til meravanserte helikoptre som kan fly opp-ned.En kan få helikopter med halerotor, lik de kommersiellehelikoptrene, og kontraroterende helikopter med torotorer på toppen som spinner hver sin vei. Sistnevntehelikoptertype er enklere å fly og mer stabilt ibevegelsene, men samtidig ikke like rask i responsen somet helikopter med halerotor. Valget <strong>for</strong> prosjektet falt påkontraroterende, da dette skal være et leketøy som erenkelt <strong>for</strong> alle å bruke.Problemet med flere helikopterDet finnes to ho<strong>ved</strong>typer trådløse teknologier <strong>for</strong>fjernstyrte helikoptre på markedet. Den eldsteteknologien baserer seg på 27/35/40 MHz og er enbilligere løsning. Problemet med disse er at man måskifte krystall til sender/mottakeren, en <strong>for</strong> hverfrekvens, hvis det er flere rundt som flyr på sammefrekvens.Den nyeste teknologien ligger på 2,4GHz båndet. Herhar man litt mer frihet, da teknologien klarer å finneen ledig frekvens og har flere kanaler i samme sender/mottaker. Dette gjør at man slipper å ta hensyn tilandre som flyr rundt seg, da transcieveren kan gjørefrekvenshopp selv. Problemet med den nyeteknologien er at kun dyre produkter har mulighet <strong>for</strong>to-veis kommunikasjon.xxxiv


Med sin nRF24LE1 kan brukeren sende og mottain<strong>for</strong>masjon fra helikopteret. Da har man to muligheter<strong>for</strong> hvordan man vil vise in<strong>for</strong>masjonen. Enten kan manfå in<strong>for</strong>masjonen sendt til en PC eller på en grafiskskjerm på fjernkontrolleren.SensorerFor å gjennomføre to-veis kommunikasjonsdelen avhelikopteret, måtte gruppen finne diverse sensorer å settepå helikopteret. Gruppa fant at et kompass, akselerometerog gyroskop passet til bruksområdene. En batterimonitorble innført på batteriet til helikopteret, og måler spenning,strøm, temperatur og gjenværende batteritid tilhelikopteret.Førsteklasses fjernkontrollerFjernkontrollere på markedet som tilbyr grafiskdisplay koster ofte over 3000 kr, en pris 3 gangerprisen på prosjektets originale helikopter. Dette villegruppen gjøre noe med og utstyrte den medfølgendekontrolleren til helikopteret med et display.Helikopteret sender in<strong>for</strong>masjon fra opptil 4<strong>for</strong>skjellige sensorer til displayet på fjernkontrolleren.Arbeidet rundt prosjektetÅ konstruere <strong>elektro</strong>nikk til et fjernstyrt helikopter krevermye arbeid, og gruppa har lagt mange arbeidstimer iprosjektet. To kretskort måtte konstrueres, et tilfjernkontroller og et til helikopteret.I fjernkontrolleren sitter et kort som er tilkoblet spakeneog skjermen. Mikrokontrolleren sender signaler tilhelikopteret, som svarer med in<strong>for</strong>masjon til displayet.I helikopteret brukes signalene til å styre blant annetrotorbladene.ErfaringsriktEn ting gruppa er enig omer at de har lært utroligmye. Kretsdesign, loddingav småkomponenter ogprogrammering av mikrokontrollere er noen av områdenestudentene har vært gjennom. Selv om prosjektet har værtomfattende og ut<strong>for</strong>drende, er gruppa glade <strong>for</strong> at devalgte oppgaven. ”Å lage helikopteret har vært like myelek og moro, som alvor” sier gruppa selv.OppgdragsgiverNordic Semiconductor ASVeileder <strong>ved</strong> <strong>HiST</strong>Valdemar FinangerVeileder <strong>ved</strong> Nordic Semiconductor ASRunar S. KjellhaugGruppen fra <strong>HiST</strong>Vegard HellaØyvind A. SandbergJesper ToftenesChristian WilhelmsenFor mer in<strong>for</strong>masjon, se vår websidehttp://www.hekta.org/~hpe1115xxxv


Tillegg HTimelisterxxxvi


H.1 IndividuelleTimer600550500450400350300250200150100500Akkumulert timeantall1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20UkeVegard Hella Øyvind A. Sandberg Jesper Toftenes Christian Wilhelmsenxxxvii


H.2 Totalt xxxviii

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!