automatiseret katapult - mikael svenstrup, postdoc...

82
Automatiseret katapult Kian Soleiman Casper Lindholt Andersen Rune Lauritzen Jesper Dalsgaard Mikkel Krautz DE3-1-E08 2. september – 17. december 2008

Upload: buihanh

Post on 25-Mar-2018

223 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Automatiseret katapult

Kian SoleimanCasper Lindholt Andersen

Rune LauritzenJesper DalsgaardMikkel Krautz

DE3-1-E08

2. september – 17. december 2008

Page 2: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden
Page 3: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Det Teknisk-Naturvidenskabelige FakultetAalborg Universitet Esbjerg

3. Semester

TITEL:

Automatiseret katapult

PROJEKTPERIODE:

P3, efterår 20082. september – 17. december 2008

PROJEKTGRUPPE:

DE3-1-E08

GRUPPEMEDLEMMER:

Kian SoleimanCasper Lindholt AndersenRune LauritzenJesper DalsgaardMikkel Krautz

VEJLEDERE:

Mikael SvenstrupMorten Bisgaard

OPLAG: 8

TOTAL SIDEANTAL: 82

SYNOPSIS:

Der konstrueres en fuldautomatisk LE-GO katapult der styres ved hjælp af enMSP430F149 microcontroller.

Katapulten ønskes i stand til at panore-re 180◦, hvilket gør at den selvstændigtkan finde og affyre efter mål der befin-der sig imellem 30 – 80 cm fra enheden.Dette skal ske uden inputs fra andetend sensorer monteret på enheden.

Efter udførelse af diverse test kan detkonkluderes, at katapulten fungere mo-dulvis i forhold til de opstillede krav.

Page 4: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2

ForordDenne rapport er udarbejdet på Aalborg Universitet Esbjerg af DE3-1-E08, somdokumentation for gruppens P3-projekt på 3. semester, efteråret 2008. Gruppenhar valgt at kigge på problemstillingen: „Kan man konstruere en panorerendekatapult styret af microcontroller, som kan ramme mål uden andet end inputs frasensorer på enheden?“.

Rapportens målgruppe er vores vejledere samt de andre medstuderende påD/E-retningen. Rapporten er skrevet i et forståeligt sprog, der gør at læserenikke behøver den store tekniske baggrundsviden. Visse ord er dog forklaret medfodnoter. Projektet opfylder de kriterier, som står anført i studieordningen.

I rapporten henvises der til kilder og figurhenvisninger ved at angive afsnittetmed [#]. Informationer om kilderne kan findes ved opslag i kildelisten bagerst irapporten.

Med rapporten medfølger en CD-ROM, der indeholder datablade for de for-skellige komponenter og microcontrolleren, kildekode for software og tests, videoeraf forskellige test, samt selve rapporten i PDF format.

Der er inkluderet kodeeksempler i rapporten, koden står på følgende måde:

1 #include <s td i o . h>23 int main ( int argc , char ∗argv [ ] )4 {5 p r i n t f ( " Hel lo , World ! \ n " ) ;6 return 0 ;7 }

Kian Soleiman

Casper Lindholt Andersen

Rune Lauritzen

Jesper Dalsgaard

Mikkel Krautz

Page 5: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Indhold

Indledning 6

1 Problemformulering 91.1 Problemformulering . . . . . . . . . . . . . . . . . . . . . . . . . . 101.2 Problemafgrænsning . . . . . . . . . . . . . . . . . . . . . . . . . 111.3 Kravspecifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3.1 Krav til rummet . . . . . . . . . . . . . . . . . . . . . . . 121.3.2 Krav til målet . . . . . . . . . . . . . . . . . . . . . . . . . 121.3.3 Krav til katapult . . . . . . . . . . . . . . . . . . . . . . . 121.3.4 Krav til ammunition . . . . . . . . . . . . . . . . . . . . . 12

2 Katapult 132.1 Basedesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.1.1 Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.1.2 Affyringsmekanisme . . . . . . . . . . . . . . . . . . . . . 142.1.3 Låsemekanisme . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2 Afstandsmåler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3 Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.1 Motorstyring . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.2 DC motor . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4 Kasteparabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4.1 Implementering i katapulten . . . . . . . . . . . . . . . . . 23

2.5 Støj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3 Microcontroller 253.1 MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2 Registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3 Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.4 Digital I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.4.1 Konfiguration af digital I/O . . . . . . . . . . . . . . . . . 293.4.2 Anvendelse af digitale I/O porte . . . . . . . . . . . . . . . 303.4.3 Anvendelse af interrupts på digitale I/O ben . . . . . . . . 30

3.5 Analog/Digital Converter . . . . . . . . . . . . . . . . . . . . . . 32

3

Page 6: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

4 INDHOLD

3.5.1 Virkemåde . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5.2 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 333.5.3 Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.6 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.1 Interrupt prioritet . . . . . . . . . . . . . . . . . . . . . . . 363.6.2 Diskussion . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.3 Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.7 RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.7.1 Virkemåde . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.7.2 USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.7.3 Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.8 Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.8.1 16-bit tæller/timer for timer A . . . . . . . . . . . . . . . 423.8.2 Timer modes . . . . . . . . . . . . . . . . . . . . . . . . . 423.8.3 Anvendelse i software . . . . . . . . . . . . . . . . . . . . . 44

3.9 PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.9.1 PWM teori . . . . . . . . . . . . . . . . . . . . . . . . . . 453.9.2 PWM på MSP430 . . . . . . . . . . . . . . . . . . . . . . 45

4 Software design 474.1 Stadier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.1.1 Initialisering . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1.2 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1.3 Målsøgning . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1.4 Affyring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.2 Moduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.2.1 Interrupt-modulet . . . . . . . . . . . . . . . . . . . . . . . 504.2.2 Watchdog-modulet . . . . . . . . . . . . . . . . . . . . . . 504.2.3 Panorerings-modulet . . . . . . . . . . . . . . . . . . . . . 504.2.4 Afstandsmåler-modulet . . . . . . . . . . . . . . . . . . . . 514.2.5 Timer-modulet . . . . . . . . . . . . . . . . . . . . . . . . 524.2.6 RS232-modulet . . . . . . . . . . . . . . . . . . . . . . . . 524.2.7 Affyrings-modulet . . . . . . . . . . . . . . . . . . . . . . . 534.2.8 Hovedprogrammet main.c . . . . . . . . . . . . . . . . . . 54

5 Test & Konklusion 575.1 Indledning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2 MSP 430 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.2.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 595.2.2 Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.3 Afstandsmåler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.3.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 60

Page 7: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

INDHOLD 5

5.3.2 Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.3.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.4 Panoreringsmotor . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.4.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 625.4.2 Resultatet . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.4.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.5 Låsemotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.5.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 645.5.2 Resultater . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.5.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.6 Affyringsmotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.6.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 655.6.2 Resultater . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.6.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.7 Træfsikkerhed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.7.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 675.7.2 Resultater . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.7.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 68

5.8 Samlet system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.8.1 Testspecifikation . . . . . . . . . . . . . . . . . . . . . . . 705.8.2 Resultater . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.8.3 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.9 Teknologivurdering . . . . . . . . . . . . . . . . . . . . . . . . . . 715.10 Konklusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Figurer 76

Litteratur 77

A Port oversigt 79

Page 8: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

6 INDHOLD

Page 9: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Indledning

I dette semester arbejdes med microcontrollere og programmering af disse. Forat opnå de stillede krav til 3. semester projektet, er der lagt fokus på opbygningaf en statisk katapult, der ved hjælp af en Texas Instruments MSP430F149microcontroller kan scanne efter et mål, affyre efter målet og derefter søge videreefter andre mål. Da formålet med dette projekt er at lave et embeddet system, derkan fungere uden inputs fra andet end de sensorer den er udstyret med, virkededet derfor interessant at modificere en katapult, så den bliver det centrale i etmicrocontroller-styret system.

7

Page 10: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

8 INDHOLD

Page 11: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Kapitel 1

Problemformulering

9

Page 12: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

10 KAPITEL 1. PROBLEMFORMULERING

1.1 ProblemformuleringEn katapult er pr. definition en genstand i hvilken en oplagret energi pludseligfrigives, med det formål at affyre et objekt en distance. Historisk set, har katapultenværet en krigsmaskine. I middelalderen benyttede man katapulter til at skydestore sten og lign. mod fjender. I dag er begrebet brugt mere mekanisk, i denforstand at man benytter oplagret energi til eksempelvist at trække flyvemaskinerop i fart, så de kan lette fra skibe og lign.

Kan man lave en katapult af middelalder-typen vha. moderne elektronik?Katapulten skal opbygges således en microcontroller kan benyttes til at justereden afstand den skyder, så kan man fjerne de store ballaster man benyttede imiddelalderen, og forbedre præcisionen, så man eventuelt kan ramme en rækkeopstillede mål.

Fremstilles der en LEGO-katapult, vil det så være muligt at udstyre den meden række sensorer, så den kan styres af en microcontroller? Med hjemmedesignethardware, kan man lave en motorstyring der muliggør at styre de væsentligefunktioner i en katapult, og tillader desuden tilføjelse af funktioner som panorering,automatisk ladefunktion og lign. Alle disse er ting som ikke var at finde på denklassiske katapult.

Styres en katapult af en microcontroller, åbner muligheden sig også for atstyre den manuelt, samt at få statusudlæsninger, gennem en terminal. Det mestinteressante ved en elektronisk katapult, er dog automatisering af arbejdet, såkatapulten selv kan scanne området for potentielle mål, selvstændigt bestemmeafstanden dertil, og affyre et skud. Ud fra dette kan der uddrages en problemstilling,der vil blive arbejdet ud fra:

"Kan man konstruere en panorerende katapult styret af microcontroller, som kanramme mål uden andet end inputs fra sensorer på enheden?"

Page 13: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

1.2. PROBLEMAFGRÆNSNING 11

1.2 ProblemafgrænsningI forbindelse med at udarbejde et system styret af en microcontroller, er det igruppen besluttet at konstruere en automatisk katapult. Designet af et sådantsystem er afgrænset til følgende punkter:

• Konstruktionen opbygges af LEGO.

• Konstruktionens platform skal ikke kunne tilte.

• Konstruktionens terminalprogram, skal benyttes til debugning, samt kontrolaf systemets status.

• Softwaren til den variable affyring er designet til statiske mål, og indeholderikke beregninger baseret på det skrå kast.

• Konstruktionen skal benyttes indendørs og på plane flader.

• Konstruktionen er bygget op, så den skal ramme indenfor forudbestemtezoner, der ligger indenfor afstandsmåleren rækkevidde.

• Konstruktionen skal lades manuelt.

Projektet omhandler microcontroller-styrede systemer, og i forbindelse meddette benyttes en Texas Instruments MSP-430F149 microcontroller, som dencentrale styringsenhed i prototypen.

Page 14: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

12 KAPITEL 1. PROBLEMFORMULERING

1.3 KravspecifikationUd fra problemformulering og afgrænsning, stilles følgende krav til katapulten.Kravspecifikationen er delt op i flere dele i forhold til hvad kravene tilhører, såledesder er krav til selve rummet, hvor katapulten befinder sig, målet, katapulten ogammunitionen.

1.3.1 Krav til rummet• Gulvet skal være plant indenfor en radius på en meter.

1.3.2 Krav til målet• Målet skal stå vinkelret i forhold til katapulten.

• Målet skal være minimum 15 cm bredt og 20 cm højt.

• Der skal højest være et mål ad gangen indenfor rækkevidden.

• Målet må ikke være sort.

1.3.3 Krav til katapult• Katapulten skal være opbygget på en ubevægelig (statisk) base.

• Katapulten skal kunne panorere 180◦ vha. LEGO DC motorer.

• Katapulten skal kunne ramme mål indenfor en rækkevidde af 30–80 cm,opdelt i 3 zoner.

– Zone 3: 30 – 45 cm, zone 2: 45 – 60 cm, zone 1: 60 – 80 cm.– Med en fejlmargin på højest ±3 cm.– Med en træfsikkerhed på minimum 6 ud af 10 gange.

• Katapultens motorer skal være DC motorer, som styres gennem en H-brovia microcontrolleren.

1.3.4 Krav til ammunition• Ammunitionen skal være kugleformet.

• Ammunitionens vægt skal gøre den upåvirkelig fra trækvinde.

Page 15: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Kapitel 2

Katapult

13

Page 16: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

14 KAPITEL 2. KATAPULT

2.1 BasedesignDer er designet en statisk katapult af LEGO. Der vil i det følgende blive gen-nemgået de forskellig moduler i basen. Udover selve basen er der også to andremoduler: affyrings-modulet til affyring og låse-modulet der kan låse skeen fast iforbindelse med affyring.

2.1.1 BaseBasen til katapulten har to formål. Den skal være stabil nok til ikke at vælte idetkatapulten affyres. Derudover indeholder den katapultens panoreringsfunktion,der gør det muligt fra katapultens base at affyre skud spredt udover 180◦. Pano-reringsfunktionen involverer en LEGO DC-motor og to kontakter. Panoreringenforegår således at et tandhjul kører en stang fra den ene side til den anden side,når der panoreres. I hver ende er der en kontakt. Stangen støder mod kontakten,der aktiverer den og får den sendt i den anden retning. Således vil den kunnepanorere frem og tilbage uendeligt.

Figur 2.1: Billede af katapulten

2.1.2 AffyringsmekanismeAffyringsmekanismen på katapulten fungerer ved at der er en ske, der står fastmon-teret på en gevindstang i oprejst position. På figur 5.3 kan der ses en illustrationaf, hvordan skeen oplagrer affyringsmomentet i gevindstangen, ved at en motorvha. en snor, trækker den ned til cirka 70◦ fra start. Som en del af affyringen

Page 17: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2.1. BASEDESIGN 15

træder en låsemotor ind og holder skeen fastlåst i ladt position, samtidig medat affyringsmotoren løsner snoren en bestemt længde, som passer til hvor langtkatapulten skal skydes.

Når snoren er løsnet nok, og er klar til affyring vil denne motor igen stoppe,og låsemotoren sættes til at bevæge sig tilbage. Dette får skeen til at køre op denlængde snor, som er blevet løsnet, og derved affyre et skud.

Figur 2.2: Illustration af hvordan momentet opbygges på katapulten.

For at bestemme længden af snoren på skeen der skal spændes, er der montereten omgangstæller, der tæller op samtidig med at motoren kører rundt. På dennemåde kan katapulten selv tælle længden fra startposition til den laveste position,og ud fra dette kan det bestemmes hvor meget snoren skal løsnes for at ramme etbestemt mål.

2.1.3 LåsemekanismeSom tidligere nævnt, er låsemekanismen opbygget for at kunne fastholde skeen,mens den gøres klar til at blive affyret. Låsemekanismen er opbygget med enLEGO stang, som kører mellem to kontakter. Kontakternes funktion i opbygningenaf låseenheden, er at stoppe en motor når LEGO-stangen er kørt helt ud til en side.Låsen kunne ligeledes være opbygget med en omgangstæller, men der blev benyttet

Page 18: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

16 KAPITEL 2. KATAPULT

kontakter, idet denne motor ikke drejer så langt, og at en omgangstæller muligvisikke ville være præcis nok til dette. For at fastlåse skeen, bliver LEGO-stangenkørt ud foran den, og dermed holder den på plads. Med det samme låsen rammerkontakten vil den stoppe. Efter katapulten er klar til at affyre skeen, vil låsenblive kaldt til den anden side, og blive stoppet af den anden kontakt. Ligeledes erdet sikret, at låsemekanismen bliver kørt væk, så skeen ikke bliver hevet ned iden, når den er ved at gøre klar til affyring.

Figur 2.3: Billede af lock-motor.

Page 19: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2.2. AFSTANDSMÅLER 17

2.2 Afstandsmåler

Afstandsmåleren der benyttes er af typen Sharp GP2D12, den skal bruges tilat bedømme afstanden til katapultens mål. Enheden der bliver benyttet er enanalog afstandsmåler, da det er det mest optimale til dette projekt. Denne enheder tilsluttet microcontrolleren gennem en 12-bit AD-converter [?].

Sharp GP2D12 fungerer ved at enheden udsender infrarøde stråler fra emittersiden, og derefter måler på refleksionen af de udsendte stråler. Refleksionen iobjektet sker ved at den udsendte infrarøde stråle fra afstandsmåleren rammerobjektet og sendes tilbage således, at der dannes en trekant, som på figur 2.4.Afstandsmåleren bruger så vinklen på refleksionen, til at bestemme afstanden tilobjektet.

Figur 2.4: Refleksion af afstandsmåler fra et tilfældigt objekt [6].

Afstandsmåleren har en rækkevidde på 10-80 cm, som læses vha. dens outputi volt fra 0,4 V til 2,6 V. Implementeringen af denne enhed er simpel, idet selvebehandlingen af de infrarøde signaler klares internt. Den kan sluttes til og så kanafstanden bestemmes ved at måle på outputtet. På figur 2.5 kan afstandsmålerensoutput i volt ses på grafen i forhold til centimeter.

Page 20: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

18 KAPITEL 2. KATAPULT

Figur 2.5: Graf over afstandsmålerens sammenhæng mellem volt og centimeter [7].

Page 21: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2.3. MOTOR 19

2.3 Motor

Der anvendes fire almindelige LEGO DC-motorer i opbygningen af katapulten.Motorerne bruges til panoreringsfunktionen, lademekanismen og to af motorerneanvendes i affyringsmekanismen. Alle motorerne styres gennem H-broer af typenL298N, som kører ved inputs fra microprocessoren.

2.3.1 Motorstyring

Der anvendes i alt to L298N H-broer til motorstyring. Det giver hver især mulighedfor at sætte de to motorer i fire forskellige stadier, hhv. forward, reverse, lockedmotor stop, samt free running motor stop. De fire forskellige stadier styres ved atdriverkredsen modtager seks inputsignaler (tre til hver motor) fra microcontrolle-ren, og ud fra dem danner den fire outputsignaler til motorerne. De tre inputsbliver omtalt som VEN , C og D. På figur 2.6 kan de forskellige stadier ses.

Figur 2.6: Tabel over de states H-broen kan sættes i vha. inputs [8].

Det kan ud fra figuren ses, at det for at få bevægelse i motorerne er nødvendigtmed et højt signal på enable, og derudover enten højt på et af benene C og D.På figur 2.12 kan opbygningen af DC-motorerne på H-broen ses. Figuren viseren halv H-bro, dvs. en H-bro hvorpå der kun er koblet en enkelt motor. Det ersåledes muligt at sætte to DC-motorer til en enkelt H-bro. På hver H-bro er derpåsat kondensatorer på hhv. referencespændingen og forsyningsspændingen. Detteer gjort for at forhindre støj fra H-broen. Ligeledes er der sat 4 dioder omkringhver motor, for at ensrette strømmen således det løber gennem H-broen og kørermotorerne.

Page 22: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

20 KAPITEL 2. KATAPULT

Figur 2.7: Diagram over opsætning af H-bro med DC-motorer [8].

Begge H-broer bliver forsynet med 9 V til motordelen og en reference spændingpå 5 V til forsyning af kredsen. Motorerne vil derfor køre enten fremad eller bagudmed fast 9 V, hvis der enten er højt på C eller D benet. En af motorerne vil væresat til at køre med et PWM signal, således det er muligt at nedtrappe de 9 V tilen lavere spænding. For yderligere forklaring henvises til afsnit 3.9.

2.3.2 DC motorI projektet benyttes LEGO DC motorer af 71427 typen (Se figur 2.8). Dissemotorer er velegnede på grund af deres relativt høje trækkraft der gør at de kanbelastes i en sådan grad, at de kan benyttes til at panorere katapulten med, samtstramme snoren.

Figur 2.8: LEGO-motor af 712427 typen [2].

Denne motor kører ubelastet med en hastighed på 360 RPM (omgange iminuttet), og trækker en strøm på 3,6 mA ved 9 V forsyning. Der gælder for

Page 23: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2.3. MOTOR 21

denne type motor, som ved de fleste DC motorer, at hastigheden er proportionalmed spændingen der trækker den. Se f.eks. figur 2.9 [2].

Figur 2.9: Tabel over antallet af omdrejninger, samt vridningsmoment en LEGOmotor yder ved forskellige spændinger [2].

En ting værd at bemærke er dog at strømmen stiger markant ved belastning(figur 2.10). Helt op til 360 mA. Da panoreringen af katapultens base belasterpanorerings-moteren meget, tages der højde for dette ved at benytte en eksternstrømforsyning til katapulten, i modsætning til den medfølgende til MSP430Developer Kittet. Med en ekstern strømforsyning er det muligt at trække allemotorerne på en gang. [2]

Figur 2.10: Graf over sammenhængen mellem omdrejninger og den strøm motorernetrækker [2].

Page 24: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

22 KAPITEL 2. KATAPULT

2.4 KasteparabelEn kasteparabel eller det skrå kast, er et udtryk for et projektils bane når detbliver skudt af i en vinkel forskellig fra 90◦ i forhold til lodret. Er affyringsvinklenvandret vil projektilets bane være lige op, og derefter returnere til nulpunktet.Det er muligt at regne på hvordan projektilets bane gennem luften vil forme sig,hvis man har følgende data om affyringen.• Starthastighed.

• Startvinkel.

• Start position i y-retning.

• Start position i x-retning.

Figur 2.11: Et eksempel på en kasteparabel [9].

Kasteparablen kan indsættes i et koordinatsystem med startpunkt i origo, somvist på figur 2.11. Bevægelsen kan beskrives som en bevægelsesvektor opdelt i todele, en i x- og en i y-retningen:

~v0 =(v0∗cos(α)v0∗sin(α)

)Ved at benytte trekantsberegning kan det ses, at siden liggende på x-aksen, er

lig v0 gange med sinus til affyringsvinklen og siden stående parallelt med y-aksener lig v0 gange med cosinus til affyringsvinklen.(

xy

)=(x0+v0∗c∗cos(α)y0+v0∗c∗sin(α)

)Ved at benytte koordinatligningen kan projektilets position og hastighed

beregnes ved at isolere c i koordinatligningen for x og herefter indsætte det fundneudtryk i ligningen for y. Resultatet af dette er kasteparablen.

y = − (1/2g)(v0∗cos2(α)) ∗ x

2 + sin(α)cos(α) ∗ x

Ud fra denne ligning fremgår det at y er et andengradspolynomium af x, ogdet vil være en parabel der peger nedad da andengradsleddet har negativt fortegn.

Page 25: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

2.4. KASTEPARABEL 23

2.4.1 Implementering i katapultenFor at implementere kasteparablen i katapulten, skal sammenhængen mellemlængden på skuddet, x, og affyringsvinklen alpha i formel 2.4, lagres ved affyring.Affyringshastigheden antages at være konstant, idet det oplagrede moment børvære stærkt nok til at returnere skeen til oprejst position uden at tabe hastighedaf betydning.

Med disse faktorer på plads kan kasteparablen bruges til kalibrere katapulten.idet man ved skud kan formode at den rammer ved højden y=0. Ved første skudkan man derfor se hvor skuddet rammer i forhold til målet og herudfra beregnefarten v0, idet det er den eneste ubekendte.

Når v0 er fundet skal den optimale affyringsvinkel beregnes, den ubekendte iformlen vil herefter være alpha idet afstanden til målet er givet vha. afstandsmå-leren. Når affyringsvinklen er fundet, gøres katapulten klar til affyring og snorenløsnes til dette antal grader. Så skulle katapulten kunne ramme målet.

På grund af gevindstangens ændring i moment vil affyringshastigheden, ændresig for meget til at kunne antages som konstant, og derfor kan kasteparablen ikkeanvendes rent praktisk på katapulten.

Page 26: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

24 KAPITEL 2. KATAPULT

2.5 StøjStøj bliver ofte et problem i kredsløb hvor der indgår høj- og lav-impedanteenheder. Den væsentligste støjkilde i hardware opstillingen, kommer fra de 4høj-impedante DC-motorer. Idet der skal registres signaler fra kontakter og enomgangstæller er det vigtigt at disse ikke er påvirket af støj, da signalet, ved forstore udsving, vil kunne registreres forkert.

Et signal der ledes igennem en spole, eller er tilsluttet en kondensator førground, vil give en mindre dæmpning af et lav-frekvens signal end på et høj-frekvenssignal. Derfor bliver dette kaldt et lav-pass filter. Det modsatte er gældende foret høj-pass filter. Der gives en mindre dæmpning af et høj-frekvens signal end pået lav-frekvens signal.

I vores opbygning af H-broer er der tilsluttet to kondensatorer før ground (sefigur 2.12). Der anvendes dermed lav-pass filtre i opstillingen. På denne mådefrafiltreres den høj-impedante som kommer fra motorerne.

Figur 2.12: Diagram over opsætning af H-broerne med lav-pass filtre [8].

Page 27: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Kapitel 3

Microcontroller

25

Page 28: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

26 KAPITEL 3. MICROCONTROLLER

3.1 MSP430Som nævnt tidligere, benyttes der i en MSP430F149 microcontroller til styring ogkontrol af katapulten.

MSP430 microcontroleren er en 16-bit RISC1 CPU. Der anvendes en Von-Neumann arkitektur, hvilket vil sige at selve instruktionerne der udføres atprocessoren, samt de data den arbejder på, opbevares i den samme hukommelse.Principperne bag MSP430’ens opbygning kan ses på figur 3.4.

Figur 3.1: MSP430 diagram over dens opbygningen [3].

Da MSP430 er en microcontroller, og ikke kun en microprocessor, indeholderden ekstra in- og output-muligheder der gør det let at interagere med eksternelektronik. En liste over nogle af de forskellige features der er tilgængelige sesnedenfor:

• JTAG til overføring af nyt firmware/programkode, samt debugging.

• USART for let implementering af serielle kommunikationsprotokoller. (RS232,osv.)

• Digitale I/O ben for tilkobling af eksterne digitale enheder. (Nogle medinterrupt-muligheder.)

• 12-bit ADC – Analog-to-digital converter.

• To indbyggede timere (Timer A og Timer B) med valgfrie clock-kilder. Kanf.eks. anvendes til implementering af PWM signaler (se afsnit 3.9).

1Reduced Instruction Set Computer

Page 29: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.2. REGISTRE 27

3.2 RegistreMSP430 har i alt 15 registre, hvor nogen af disse anvendes til specielle formål somf.eks. stack pointer eller program counter.

De første fire registre i MSP430, R0, R1, R2 og R4 er specielle, og har følgendefunktioner:

• R0: Program Counter

• R1: Stack Pointer

• R2: Status Register

• R3: Constant Generator

De resterende registre, R4-R15 er general purpose, og kan således til hvad endman lyster. Program Counter registeret er det register der holder styr på adresseni hukommelsen hvor CPU’en på et givent tidspunkt er ved at eksekvere. StackPointeren peger på programmets stack, og Constant Generator-registeret anvendesi instruktioner der arbejder med konstante værdier, f.eks. en CMP instruktion dersammenligner værdien af et register med 0 eller en anden konstant værdi.

Det eneste register der er interessant fra vores synspunkt er Status Registeret,da vores programkode er skrevet i C, og derfor ikke har haft brug for at røre vedde resterende registre. Status registeret (se figur 3.2) indeholder diverse statusbits for aritmetiske instruktioner som f.eks. ADD og SUB. Disse er N, Z, C og V,som er hhv. negativ-, zero-, carry- og overflow-bittene.

Det er også muligt at slukke for nogle systemclocks (se næste afsnit 3.3 for mereinformation vedr. clocks) via registrene SCG0 og SGC1 og OSCOFF. Derudoverer det også muligt at slukke for CPU’en via CPUOFF -bittet. Det eneste registerder eksplicit anvendes i vores software er GIE, Global Interrupt Enable, der slårinterrupts til.

Figur 3.2: Status registeret på MSP430 [4].

Page 30: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

28 KAPITEL 3. MICROCONTROLLER

3.3 Clocks

MSP430 indeholder et modul kaldet Basic Clock Module. Basic Clock moduletindeholder tre forskellige clock kilder:

• LFXT1CLK: en lavfrekvent 32,768 KHz oscillator.

• XT2CLK: En valgfri højfrekvent oscillator.

• DCOCLK: Intern digitalt kontrolleret oscillator med RC-karakteristik.Kører som standard omkring 800KHz.

Selve Basic Clock modulet eksporterer tre clock signaler:

• ACLK: Auxillary clock. Kører altid med LFXT1CLK kilden. Kan køresmed en divider på 1, 2, 4 eller 8.

• MCLK: Master clock. Master clocken er den clock der leverer clocksignaltil bl.a. CPU’en og system. Kan benytte alle ovenstående clock-kilder meddividerne 1, 2, 4 eller 8. til alle de ovenstående clock-kilder.

• SMCLK: Sub-master clock. Anvendt som clock til devices som f.eks. timereog USART. SMCLK har en divider på 1, 2, 4 eller 8.

I projektet drives både MCLK og SMCLK af DCO clock-kilden. DCO clock-frekvensen er ikke ændret fra standardværdien, som er på omkring 800KHz.

3.4 Digital I/O

MSP430 har i alt 64 ben, hvoraf de 48 kan konfigureres til I/O ben. Mange afdisse har også andre funktioner som f.eks. timere, men kan indstilles som værendeudelukkende I/O ben via et register. De 48 I/O ben er inddelt i 6 porte kaldetP1–P6. Hver enkelt port styres via et byte langt port-register [4]. På figur 3.3 kanen oversigt over portene og portenes placering på MSP’en ses.

Page 31: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.4. DIGITAL I/O 29

Figur 3.3: Oversigt over portene på MSP430F149 [3].

En oversigt over de porte der anvendes i katapult-projektet kan findes bagersti bilag A.

3.4.1 Konfiguration af digital I/O

Som nævnt kan de 48 ben kan enten vælges som digitale I/O ben eller denindbyggede funktion (f.eks. timere, ADC etc.). Det overordnede register der styrerdette kaldes PxSEL, der findes et af disse registre til hver port. Hvis et bit ersat højt, vil dette ben opføre sig efter den indbyggede funktion, som kan findes idatabladet. Ligeledes vil et bit være et digitalt I/O ben, når dette bit er sat lavt.

Skemaerne (figur 3.4 og figur 3.5) viser de registre der er tilkoblet de forskelligeI/O porte. Portene P1 og P2 adskiller sig fra de andre registre ved at de harinterrupt-egenskaber. Samtlige porte indeholder udover PxSEL (der bestemmerom en given port er et I/O ben), registrene PxIN, PxOUT og PxDIR. Derudoverindeholder de to registre med interrupt-muligheder også registrene PxIE, PxIFGog PxIES der anvendes til konfiguration af interrupts [4].

Page 32: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

30 KAPITEL 3. MICROCONTROLLER

Figur 3.4: Oversigt over P1 og P2 registrene [4].

Figur 3.5: Oversigt over P3-P6 registrene [4].

3.4.2 Anvendelse af digitale I/O porteHver port har et PxDIR register. Dette register vælger retningen af I/O benet dvs.om benet skal være et input ben, eller et output ben. Benet sættes som output,hvis det tilsvarende bit i registret er sat højt, mens benet sættes som input, hvisdet tilsvarende bit er lavt.

Sættes et ben på en specifik port som et input ben, anvendes PxIN registrettil at udlæse dette bens værdi. PxIN er kun et læsbart registrer, og det er ikkemuligt at ændret dens værdi.

Sættes et ben som output, styres benets værdi via registret PxOUT. PxOUTregistret fungerer på samme måde som PxIN, bortset fra at man her selv sætterværdien, i stedet for at aflæse den.

Signalerne på de digitale output ben afhænger af MSP430-controllerens forsy-ningsspænding. I dette projekt anvender en forsyning på 3,3 V, hvilket vil sige atMSP430 output benene giver 3,3 V output, og ligeledes forventer inputs på 3,3 V.

3.4.3 Anvendelse af interrupts på digitale I/O benDe to porte, P1 og P2, kan anvendes sammen med interrupts. Dette betyder atmicrocontrolleren kan interrupte kørende programkode, når der sker en ændringpå et input ben.

For at slå interrupt-funktionen til på et input ben, benyttes registret PxIE.Hvert bit i dette register svarer til et ben på den pågældende port. Når interrupts

Page 33: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.4. DIGITAL I/O 31

er slået til, vil en ændring på et I/O få processoren til at hoppe til en bestemtadresse i koden (en såkaldt Interrupt Service Routine). Omstændighederne forændringen af et bens værdi er det også muligt at konfigurere. Dette gøres viaregistret PxIES, som gør det muligt at vælge hvor vidt man vil have et interruptnår et signal går fra at være lavt til højt, eller omvendt.

Page 34: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

32 KAPITEL 3. MICROCONTROLLER

3.5 Analog/Digital Converter

En 12-bit analog til digital converter (ADC12) opererer ved at konvertere etanalogt signal til dets repræsentative 12-bit digitale signal, som derefter gemmes ien konverteringshukommelse som kan aflæses efter behov.

3.5.1 Virkemåde

ADC12 modulet som anvendes, har i sig også en integreret referencespænding.Den interne referencespænding kan enten sættes til 1,5 V eller 2,5 V og ellerser der mulighed for at sætte en ekstern reference til MSP’en. For at bruge deninterne referencespænding, skal REFON sættes til højt i ADC12 Kontrolregisteret(ADC12CTLx), ligesom det skal vælges hvilken referencespænding der skal brugesved at sætte REF2_5V højt eller lavt for hhv. 2,5 V og 1,5 V. Dette bit sættesogså i ADC12CTLx registeret [4].

Det er også muligt at konfigurere ADC’en til at benytte en ekstern referen-cespænding. De to software-konfigurable ben (VR+ og VR−) kan sættes til forskelligeben på microcontrolleren, og dermed kan man sætte sin egen referencespændinghvis man ønsker at opnå en bedre udnyttelse af opløsningen end hvad de tostandard referencer giver mulighed for.

På MSP’en findes der både et Vref+ og Veref+ ben (hhv. 7 og 10), mensVref− og Veref− er samlet i det samme ben, 11. Forskellen er Vref er den internereference, som kan måles, mens Veref står for den eksterne reference, hvor manselv beslutter referencen. I projektet anvendes der en ekstern reference spændingpå 2,6 V. Den anvendte afstandsmåler kan maksimalt levere et output på 2,6 V,hvilket gør det logisk at bruge en ekstern reference på dette.

Der er i dette projekt valgt benene Vref− og Veref−, som reference ben tilADC’en. Men det er gennem ADC12 Conversion Memory kontrol registreret(ADC12MCTLx) på MSP’en muligt at bestemme hvilken reference der bruges. Detre bits SREF kan sættes og ud fra dette kan der vælges hvilke ben der bruges. Deter således også muligt at vælge forsyningsspændingen til MSP’en som reference,som det kan ses på figur 3.6.

Page 35: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.5. ANALOG/DIGITAL CONVERTER 33

Figur 3.6: Oversigt over hvilke reference ben der kan sættes til ADC12 på MSP430[4].

De 12-bit som ADC’en kan gengive den analoge værdi i, giver rent teoretiskmulighed for at opdele spændingsintervallet i 4096 stykker og få en præcision på0,0006V. Den formel der anvendes for konvertering fra den analoge spænding tilden digitale 12-bits værdi kan ses nedenfor.

NADC = 4095 ∗ Vin−VR−VR+−VR−

3.5.2 KonfigurationI det følgende forklares opbygningen af referencespændingen på MSP’en, samthvilken reference der bliver brugt. Input kanalen og de to software-konfigurableben bliver defineret i kontrolregistrene for enheden. ADC’en er konfigureret vha.to kontrolregistre, ADC12CTL0 og ADC12CTL1, og aktiveres vha. ADC12ONbittet i ADC12CTL0. ADC12’en kan også deaktiveres, dette kan gøres for atspare strøm. Desuden skal det nævnes at ADC12’ens kontrol-bits kun kan ændresnår ENC = 0, og for at der kan ske en konvertering skal ENC = 1. Dette bitsættes i ADC12CTL0

ADC12 har fire forskellige konverteringsmetoder, jvf. figur 3.1. Disse vælgespå baggrund af hvordan CONSEQx bittet er sat.

CONSEQx Mode Operation00 Single channel single-

conversionEt enkelt signal som konverteres en gang.

01 Sequence-of-channels En sekvens af signaler som konverteres en gang.10 Repeat-single-channel Et enkelt signal som bliver konvereteret gentagne

gange.11 Repeat-sequence-of-

channelsEn sekvens af signaler som bliver konvereteret gen-tagne gange.

Tabel 3.1: Tabel over konverteringsmetoder på ADC’en [4].

I projektet bruges konverteringensmodellen kaldet „Single channel single-conversion“. Grunden til at denne konverteringsmodel benyttes skyldes at detopfylder kravene til projektet [4].

Page 36: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

34 KAPITEL 3. MICROCONTROLLER

3.5.3 KodeHerunder ses vores kode til styring af ADC12-enheden i MSP430. Som tidligerenævnt anvendes konverteringsmodellen – Single Channel, Single Conversion –hvilket gør implementationen let.

Der anvendes en initialiserings-funktion, distance_init(), der opsætter ADC’envha. de i det foregående afsnit beskrevne principper. Derudover er der implemen-teret en distance_get()-funktion der foretager en måling på ADC’en og returnereren 12-bits digital værdi konverteret fra vores afstandsmålers analoge signal.

1 /∗2 ∗ d i s t ance . c −− Distance sensor and ADC12 c o n t r o l .3 ∗/45 #include <MSP430x14x . h>6 #include " r s232 . h "7 #include " pan . h "8 #include " launch . h "9 #include " d i s t ance . h "

1011 /∗12 ∗ I n i t i a l i z e d i s t ance module .13 ∗/14 void d i s t an c e_ in i t (void )15 {16 P6SEL |= 0x01 ; // P6 .0 ADC opt ion s e l e c t17 ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time , turn on ADC1218 ADC12CTL1 = SHP; // Use sampling t imer19 ADC12IE = 0x00 ; // Enable i n t e r r u p t20 ADC12MCTL0 = SREF_2; // Set VeRef+ and VeRef−21 ADC12CTL0 |= ENC; // Conversion enab led22 ADC12CTL0 &= (BIT5 ^ 0xFF ) ; // Reference o f f23 ADC12CTL0 |= ADC12SC; // Sampling open24 _BIS_SR(GIE ) ;25 }2627 /∗28 ∗ Read va lue from d i s t ance sensor .29 ∗/30 unsigned int dis tance_get (void ) {31 unsigned int va l ;3233 /∗ S igna l the ADC to s t a r t sampling . ∗/34 ADC12CTL0 |= ADC12SC;3536 /∗ Wait f o r comple t ion . ∗/37 while (ADC12CTL1 & 0x01 )38 ;39

Page 37: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.5. ANALOG/DIGITAL CONVERTER 35

40 /∗ Save va lue . ∗/41 va l = ADC12MEM0;4243 return va l ;44 }

Page 38: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

36 KAPITEL 3. MICROCONTROLLER

3.6 Interrupts

Et interrupt er et asynkront signal fra hardware eller software, som indikerer atder er behov eksekveringstid. Når der sker et interrupt kræver den opmærksomhedtil det sted i koden der er fastsat (også kaldet en ISR2, således afbrydes CPU’ensigangværende programudførelse. Den igangværende programudførelse genoptagesigen, når ISR’en er udført.

Interrupts på MSP430 slås til ved at sætte bittet GIE i status registeret SR.Derefter skal interrupts for de enkelte porte i PxIE, hvis der er tale om digitalI/O, eller interrupt enable bittet i kontrolregistret for enheden.

3.6.1 Interrupt prioritet

Når der er flere interrupts ønsker CPU-tid samtidigt, bliver de eksekveret efterprioritet. Fra Texas Instruments side er der på forhånd valgt prioriteter for deforskellige interrupts, som kan ses på figur 3.7. Som det kan ses har de vigtigesystem-interrupts højere prioritet end normale device-interrupts. Derudover erinterrupt-prioriteten bestemt via interrupt-vektorens adresse i hukommelsen.

3.6.2 Diskussion

Interrupts kan med fordel benyttes hvis ændringer af værdier på input kanhåndteres i en interrupt service routine. Et eksempel på dette i vores projekt erknapperne der anvendes til hhv. panorering og låsemekanisme. I dette tilfældegiver det ingen mening at sidde og polle på de enkelte input ben for kontakterneog derefter udføre kode der ændrer en motors retning. I en sådan situation kandet meget bedre betale sig at anvende et interrupt, da opgaven der skal udføreser simpel.

Et eksempel på et sted der anvendes polling på input ben i stedet for interruptser i afstandsmåler-modulet. Pga. flowet i softwaren, er det meget lettere at avendeen synkron aflæsning, end et asynkront interrupt.

Om man skal anvende interrupts i en given situation afhænger således megetaf situationen, og måden dataet fra en bestemt enhed skal anvendes i resten afsoftwaren.

2Interrupt Service Routine

Page 39: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.6. INTERRUPTS 37

Figur 3.7: Her ses de forskellige interruptvektorer samt en liste over interruptprio-riteterne på MSP430 [3].

Page 40: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

38 KAPITEL 3. MICROCONTROLLER

3.6.3 KodeDa softwaren er skrevet i C, vil der her komme nogle enkelte eksempler påanvendelse af interrupt-vektorer for interrupt service routines i C. Vores kode erskrevet til både at kunne køres i Texas Instruments’ Code Composer compiler, ogMSP-GCC.

Begge disse compilere har understøttelse for at lave interrupt service routinerdirekte i C-kode (i modsætning til assembler), men der benyttes forskellig syntaxfra compiler til compiler. I Code Composer anvendes in-line ISR således:

1 #pragma vec to r=PORT1_VECTOR2 __interrupt void port1_is r (void ) {34 /∗ Read va lue o f PORT1 input . ∗/5 unsigned char va l = P1IN ;67 /∗ Determine which pin to s e r v i c e . ∗/8 i f (P1IFG & 0x1 ) {9 /∗ P1.0 was changed ∗/

1011 ( . . . )1213 P1IFG &= ~(0x1 ) ;14 }1516 i f (P1IFG & 0x2 ) {17 /∗ P1.1 was changed . ∗/1819 ( . . . )2021 P1IFG &= ~(0x2 ) ;22 }23 }

I MSP-GCC erklæres funktionen lidt anderledes, ellers fungerer resten som i CodeComposer :

1 #include <s i g n a l . h> /∗ mspgcc wants the s i g n a l . h header f o r in−l i n e ISRs . ∗/23 i n t e r r up t (PORT1_VECTOR) port1_is r (void ) {456 ( . . . )78 }

Page 41: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.6. INTERRUPTS 39

Desuden skal det nævnes at MSP430 ikke altid er god til selv at cleare interruptflaget for alle interrupts, så vi har i alle tilfælde gjort dette manuelt.

Page 42: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

40 KAPITEL 3. MICROCONTROLLER

3.7 RS232RS232 er en simpel seriel data-bus oprindeligt beregnet til kommunikation mellemen DTE (Data Terminal Equipment) dvs. en computer eller en terminal, og enDCE (Data Communications Equipment) dvs. et modem [5].

RS232 standarden specificerer forskellige funktioner og niveauer, som f.eks.spændingsniveauer og funktionen af de forskellige ben på portene.

Dog har RS232 gennem tiden også været brugt til andre ting end blot kommu-nikation mellem en DTE og en DCE, og i disse applikationer har man bl.a. brugtforskellige standard-specificerede ben til signalering af applikations-specifikkeformål. Dermed trodsede man den egentlige specifikation, men fik yderligerefunktionalitet.

Dette var smart fordi RS232 og DE9-stik var vidt tilgængelige på computere,og det var derfor muligt at bygge simple udvidelser dertil.

Selv om RS232 i dag kan føles gammel og forældet er det stadig yderst nyttigt,og meget simpelt at arbejde med i praksis, dette gør at det er yderst attraktivtat arbejde med til kommunikation mellem embeddede systemer under debuggingeller lignende.

3.7.1 VirkemådeRS232 er anvendt til karakter-baseret kommunikation, typisk vil dette væretransmission af ASCII karakterer, men det er ikke begrænset hertil. Normaltanvendes såkaldte UART’er for at gøre det lettere at arbejde med RS232, og pådisse kan man sætte en værdi for antal bits per karakter.

For at gøre det muligt at modtage data asynkront fra den modsatte ende afkommunikationen, gør RS232 brug af start og stop bits. Denne teknik kaldesframing. Framing sker for hver enkel karakter der afsendes fra UART’en.

For at dekode en karakter fra signalerne der kommer efter et start-bit i enframe anvendes en forudbestemt timing kaldet baud raten. Baud raten bestemmerhvor tit modtageren skal sample signalet for dermed at bestemme en specifikbit-værdi.

Ud over de to start- og stopbits fra framingen, bruger man også ofte endnu etekstra bit for at forhindre data korruption, det såkaldte paritets-bit. Når pariteter slået til, vil paritets-bittet fremgå umiddelbart efter alle databits er blevettransmitteret, men før stop-bittet. Typisk anvendes to forskellige metoder tilparitetstjeks, odd eller even paritet. De fungerer på den måde at antallet aflogiske 1-bits i de transmitterede databits optælles. Køres der med odd parity

Page 43: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.7. RS232 41

sættes paritetsbittet til logisk 1 hvis antallet er ulige, ellers 0. Ligeledes sættesparitetsbittet højt hvis antallet er lige, når der køres med even parity.

RS232 bruger desuden lidt atypiske spændingsniveauer. Dette er gjort for atbekæmpe støj. Et logisk 0 i RS232 er en spænding mellem +3 V og +15 V. Etlogisk 1 er en spænding mellem −3 V og −15 V.

3.7.2 USARTEn Universial Asynchronous Receiver/Transmitter (UART) eller Universial Syn-chronous/Asynchronous Reciever/Transmitter (USART) er det stykke hardwareder benyttes til at kommunikere over en RS232-linje. Vi vil ikke gå i dybden medat forklarer hvordan en USART fungerer, men vil kun forklare det overfladisk.

USART’en laver alt det hårde arbejde beskrevet tidligere i kapitlet, og abstra-herer stort set alt viden om den underliggende protokol væk. På MSP430 fungererdet på den måde, at man skriver til et output register for at sende en byte af sted,og læser fra et input register når man vil låse et sendt byte.

Det er ligeledes muligt at anvende interfact til USART’en via interrupts, såman kan modtage en IRQ når der er modtaget en ny byte, og når en ny byte børsendes.

3.7.3 KodeKode til styring af RS232 og USART kan findes på den medfølgende CD-ROM imappen code/rs232.c.

Page 44: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

42 KAPITEL 3. MICROCONTROLLER

3.8 TimerMSP430 indeholder to timere kaldet timer A og timer B [4].

Både timer A og B er asynkrone 16bit timere/tællere med:

• 4 indbyggede operationstilstande.

• Valgfrie og justerbare clock frekvenser.

• 3 justerbare capture/compare registre.

• Konfigurable outputs med mulighed for PWM.

• Asynkront input og output latching.

• Interrupt vector funktion for hurtig behandling af Timer A/B interrupts.

3.8.1 16-bit tæller/timer for timer A16-bit tælle registret, TAR, fungerer på den måde at den afhængigt af operation-stilstand vil enten inkrementere eller dekrementere sin værdi på hver stigendeflanke på clocksignalet. TAR registret kan ved hjælp af software både skrives tilog læses fra, ydermere kan timeren kan sættes til at generere at interrupt nårder forekommer overflow i dette register. TAR registret kan også tømmes ved atsætte TACLR bittet. Dette sletter dog også clock divideren og count-retningenfor op/ned mode.

3.8.2 Timer modesTimer A og B i MSP430 har 4 forskellige tilstande som vist på 3.8, up, up/down,stop og continuous. Hvilken af disse tilstande der vælges, bestemmes af MCxbittet.

Figur 3.8: Timer modes på MSP430 [4].

Up-mode benyttes hvis timerperioden altid skal være forskellig fra 0FFFFhoptællinger. Timeren vil gentage sig selv ved at tælle op til den i compare-registret,

Page 45: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.8. TIMER 43

TxCCR0, angivne værdi hvilket definerer perioden som vist på 3.10. Antallet afoptællinger i perioden er TxCCR0 + 1, da den tæller op til TxCCR0 og derefterstarter forfra fra 0 igen. Vælger man up-mode mens værdien er større end compare-registret vil timeren genstarte med det samme. TxCCR0 CCIFG interruptflagetbliver sat når timeren tæller fra TxCCR0 værdien. TxIFG interrupt flaget bliversat når timeren tæller fra TxCCR0 til nul [4].

Figur 3.9: Up mode på Timer A og B.[4].

Continuous-mode får timeren til at tælle op til 0FFFFh, og genstarte fra 0.I denne mode virker Capture/compare registret TxCCR0 på samme måde somde andre capture/compare registre. Interruptflaget bliver sat når tælleren går fra0FFFFh til 0 [4].

Figur 3.10: Continuous mode på Timer A og B [4].

Up/down-mode benyttes hvis optællinger timer perioden skal være forskelligfra 0FFFFh, og man har behov for en symmetrisk puls generering. Timeren tællerop til den i TxCCR0 registret angivne værdi, og derefter ned til 0 igen som vistpå 3.11. Perioden er det dobbelte af værdien angivet i TxCCR0 registret.

Tællerretningen bliver husket, sådan at det er muligt at starte tælleren i sammeretning som den talte da den blev stoppet. Hvis man ikke ønsker at gemme detteskal man slette TxCLR bittet, TxCLR bittet sletter også TxR værdien og TxCLKdivideren.

Page 46: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

44 KAPITEL 3. MICROCONTROLLER

I up/down mode, bliver TxCCR0 CCIFG interrupt flaget og TxIFG interruptflaget kun sat en gang hver periode, separeret af den halve timer periode. TxCCR0CCIFG interrupt flaget bliver sat når timeren tæller fra TxCCR0+1 til TxCCR0,and TxIFG bliver sat når timeren fuldender nedtællingen fra 0001h til 0000h.

Figur 3.11: Up/down-mode på Timer A og B [4].

3.8.3 Anvendelse i softwareI softwaren anvendes både Timer A og Timer B. Timer A anvendes som engenerel timer hvortil man kan registrere rutiner, man ønsker skal kaldes medjævne mellemrum. Timer B anvendes som PWM timer. Herunder forklares lidtom konfigurationen af den generelle timer. Konfiguration af PWM timeren kanfindes i næste afsnit.

Den generelle timer der benyttes i softwaren kører med SMCLK (som erDCO’en i vores tilfælde). Den kører med en frekvens på 800 KHz og en divider på8, hvilet bringer os ned på 100 KHz. Der køres i continuous mode og der reagereskun over overflows. I det tælle-registeret kun er 16-bit langt vil den overflowe efterefter 65536 timer ticks, hvilket vil sige at et overflow vil ske efter:

65536/100000 = 0.65536 sekunder

Selve koden for den periodiske-timer kan findes i filen code/timer.c på denvedlagte CD-ROM.

Page 47: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

3.9. PWM 45

3.9 PWMPWM [1] eller Pulse With Modulation, på dansk kaldet pulsbredde-modulation,er den metode der benyttes til at lave individuel hastighed på de enkelte motorer.

3.9.1 PWM teoriPWM fungerer ved at man i stedet for et konstant højt signal, sender et firkant-signal med ændret høj/lav tid, også kaldet modulation af duty cycle. Ved atmodulere duty cycle til eksempelvis 50% høj og 50% lavt, kan man ændre outputpå en H-bro fra eksempelvis 9 V forsyningsspænding til 4,5 V (se figur 3.12) udenat bekymre sig om at de to H-broer i et L-298 komponent normalvis kører medsamme spænding. Dette kan det beskrives som en kontakt der bliver tændt ogslukket meget hurtigt.

Figur 3.12: Eksempler på PWM signaler [1].

3.9.2 PWM på MSP430Som nævnt i forrige afsnit (3.8), anvendes Timer B til at generere det PWM signalder benyttes til låsemotoren. Timer B benyttes som tidligere forklaret i up-downmode.

Eksemplet nedenfor er et uddrag af PWM koden, der er en del af affyringsmo-dulet. Hele koden kan findes på den vedlagte CD-ROM i filen code/launch.c.

1 P4SEL |= PWM_SIGNAL1 + PWM_SIGNAL2; // P4 .1 and P4 .2 Timer B 1/2 op t i ons2 P4DIR |= PWM_SIGNAL1 + PWM_SIGNAL2; // P4 .1 and P4 .2 output3 TBCCR0 = 128 ; // PWM Period /24 TBCCTL1 = OUTMOD_6; // CCR1 t o g g l e / s e t5 TBCCR1 = 40 ; // CCR1 PWM duty c y c l e (Low per iod )6 TBCCTL2 = OUTMOD_6; // CCR2 t o g g l e / s e t7 TBCCR2 = 0 ; // CCR2 PWM duty c y c l e8 TBCTL = TBSSEL_2 + MC_3; // SMCLK, up−down mode

Page 48: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

46 KAPITEL 3. MICROCONTROLLER

Timeren sættes op til at køre med toggle/set, der toggler værdien på timerensoutput register. TBCCR0 registeret er timerens maksimum (dvs. en halv PWMperiode), og TBCCR1 sætter et toggle-punkt, hvori firkant signalet toggles mellemhøj og lav. Da der køres i up/down mode, kan der på denne måde genereres etPWM signal, som set på figur 3.13.

Figur 3.13: Anvendelse af PWM på Timer B. På billedet ses eksempler på værdieraf de to Capture/Compare registre CCR0 og CCR1.

Page 49: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Kapitel 4

Software design

47

Page 50: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

48 KAPITEL 4. SOFTWARE DESIGN

4.1 StadierI det følgende vil der blive forklaret de forskellige stadier katapulten kan befindesig i. Først forklares hele katapulten overordnet, og derefter de underordnedestadier.

Den nedenstående figur 4.1 viser et overblik hvordan selve systemet fungererog hvilke overordnede stadier systemet kan være i. Overordnet sker der en initiali-sering, når katapulten startes. Efter initialiseringen går systemet over i et resetstadie, der sikrer at alle motorer er sat op og klar. Herefter sættes målsøgningeni gang. Målsøgningen vil fortsætte uendeligt indtil afstandsmåleren opfanger etmål, hvorefter systemet går over i affyringsstadiet. Her vil selve affyringen ske,hvorefter systemet vil gå tilbage i reset stadiet, og således kører rundt i en løkke.De forskellige stadier vil blive beskrevet mere detaljeret nedenfor.

Figur 4.1: State diagram over software for katapulten.

4.1.1 InitialiseringDet første katapulten gør er at initialisere. Her sættes lock-motoren i unlockstadie, hvilket vil sige at den står klar til at låse når dens funktion bliver kaldt.Udover dette sættes affyringsmotoren klar, så den fastspændte snor er spændthelt ud og klar til at blive spændt. Ydermere sættes panoreringsmotoren ogammunitionsmotoren klar til at gå i gang, når målsøgningsstadiet nås. Udover defire motorer sættes kontakterne også klar og i det rigtige stadie.

4.1.2 ResetNår katapulten har initialiseret alle motorerne og kontakter er den også gåetigennem reset stadiet, se figur 4.2. Dette stadie vil sætte alle motorerne ogkontakter til start position og nulstille alle variabler til deres startværdier.

Figur 4.2: State diagram over reset state.

4.1.3 MålsøgningEfter initialisering og reset, begynder katapulten at søge efter mål. Her starterpanoreringen i en retning og ligeledes startes afstandsmåleren. Opfanger afstands-

Page 51: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

4.1. STADIER 49

måleren et mål indenfor 30 – 80 cm., vil panoreringen stoppe, outputtet fraafstandsmåleren vil blive gemt, panoreringsretningen vil blive gemt og systemetvil fortsætte til næste stadie. Panoreringsretningen gemmes, således panoreringenkan fortsætte samme retning efter en affyring. Hvis afstandsmåleren ikke opfangernoget, vil panoreringen fortsætte frem og tilbage i 180◦ uendeligt. Situationen kanses på figur 4.3.

Figur 4.3: State diagram over målsøgnings state.

4.1.4 AffyringI affyrings stadiet, se figur 4.4, hentes afstandsmålerens output. Herefter bliverskeen sænket ved at snoren strammes. Når skeen er spændt helt ned holder låsemotoren den på plads, på den måde kan snoren frigøres til affyring. Frigivelsenbliver udregnet udfra den gemte afstandsmåler værdi, og i forhold til det gemteantal ticks. Efter snoren er løsnet fjernes låsen og et skud affyres. Når der er blevetaffyret et skud vil katapulten gå tilbage til reset stadiet.

Figur 4.4: State diagram over affyrings state.

Page 52: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

50 KAPITEL 4. SOFTWARE DESIGN

4.2 ModulerPojektets software er opbygget i moduler. Opbygning med moduler gør detmuligt at teste de enkelte komponenter hver for sig, og gør det muligt at fordelekodningsarbejdet ud på forskellige personer. Det vil sige at grænsefladen tilde forskellige moduler er bestemt på forhånd, hvilket giver mulighed for flereforskellige implementeringsmuligheder så længe specifikationer for de forskelligemoduler er overholdt.

Nedenfor gennemgås software modulerne, deres grænseflader samt beskrivelseaf funktionernes formål. Til sidst beskrives hovedprogrammet main.c.

4.2.1 Interrupt-moduletInterrupt-modulet benyttes kun til at slå interrupts fra med.

Filer: interrupt.hAfhængigheder: Ingen.

void enable_interrupts()Slå interrupts til på CPU’en.

4.2.2 Watchdog-moduletDa watchdog hardwaren i MSP430 ikke skal anvendes, bruges watchdog modulettil at slå denne funktionalitet fra.

Filer: watchdog.c, watchdog.h.Afhængigheder: Ingen.

void watchdog_stop()Stop watchdog timeren.

4.2.3 Panorerings-moduletPanoreringsmodulet står for styring af panoreringsmotoren samt kontakterne tilbestemmelse af retningsskifte.

Page 53: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

4.2. MODULER 51

Filer: pan.c og pan.h.Afhængigheder: Ingen.

PAN_DIRECTION_LEFTRetningskonstant (venstre)

PAN_DIRECTION_RIGHTRetningskonstant (højre)

void pan_init()Initialiserer panoreringsmodulet.

void pan_turn_left()Drej til venstre.

void pan_turn_right()Drej til højre.

void pan_turn_dir(int dir)Drej til en bestemt side. Bestemt via en retningskonstant (PAN_DIRECTION_*).

bool pan_is_running()Returnerer hvor vidt en panorering er i gang.

int pan_stop()Stopper panorering. Returnerer den retning der panoreres, inden der stoppes.

4.2.4 Afstandsmåler-moduletAfstandsmodulet bearbejder de output fra afstandsmåleren via MSP430s indbyggede12 bits AD converter.

Filer: distance.c, distance.h.Afhængigheder: Ingen.

void distance_init()Initialiserer afstandsmåler-modulet.

unsigned_int_distance_get()

Page 54: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

52 KAPITEL 4. SOFTWARE DESIGN

Aflæs en afstand. Returnerer en ADC-værdi.

4.2.5 Timer-moduletTimer-modulet tillader brugeren at registrere en funktion som skal kaldes efter etbestemt tidsinterval. Tidsintervallet er ikke konfigurerbart, men er fastlagt vedinitialisering.

Timer-modulet kan således ikke bruges til præcis timing, men derimod til atfå kaldt en funktion (til f.eks. status-tjek) med jævne mellemrum.

Timer-modulet benyttes til at bestemme om ladefunktionen har nået en låsttilstand.

Filer: timer.c, timer.h.Afhængigheder: Ingen.

void timer_init()Initialiserer timer-modulet.

int timer_call_regularly(timerfunc_t_func, void *udata)Registrerer en callback-funktion der skal kaldes med jævne mellemrum. Dennefunktion har prototypen:

bool_function(void *)

Pointeren udata opbevares og passeres til callback-funktionen når den bliverkaldt.

Returnerer en callback-funktionen false, fjernes den fra kalds-listen, returne-rer den true vil den stadig blive ved med at kaldes.Funktionen returnerer et heltals-ID, der kan bruges til at fjerne den manuelt(uden at returnere false i callback-funktionen), vha. timer_remove().

4.2.6 RS232-moduletRS232-modulet bruges primært til debugging samt statusindikation. Moduleteksporterer en printf() funktion der udskriver via serielporten.

Filer: rs232.c, rs232.h.

Page 55: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

4.2. MODULER 53

Afhængigheder: Ingen.

void rs232_init()Initialiserer RS232.

void rs232_putchar(char x)Udskriver en enkelt karakter igennem RS232.

void rs232_printf(char *fmt, . . . )Formaterer en tekststreng som printf(), og udkskriver denne via rs232_putchar()

4.2.7 Affyrings-moduletAffyrings-modulet står for selve affyringen og benytter sig bl.a. af timer modulet.Modulet styrer affyringsmotoren og låse motoren.

Filer: launch.c, launch.h.Afhængigheder: Timer-modulet.

void launch_init()Initialiserer affyrings-modulet. (Alle motorer der benyttes under affyring)

void fire_init()Initialiserer affyrings-motoren.

bool fire_is_running()Returnerer true eller false alt efter om katapulten er i gang med en affyring.

void fire_shoot(int percent)Starter en affyring. Løsner skeen percent procent.

void fire_motor_down()Kører affyrings-motoren ned.

void fire_motor_up()Kører affyrings-motoren op.

void fire_motor_stop()Stopper affyrings-motoren.

Page 56: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

54 KAPITEL 4. SOFTWARE DESIGN

void fire_motor_freerun()Sætter affyrings-motoren i free motor run.

void load_init()Initialiserer load-motoren. (Anvendes ikke, da der ikke er implementeret en auto-matisk lade-funktion)

void lock_init()Initialiserer låse-motore.

void lock_turn_left()Kør låse-motoren mod venstre.

void lock_turn_right()Kør låse-motoren mod højre.

4.2.8 Hovedprogrammet main.c

I main.c intialiseres de forskellige moduler og det er her katapult-logikken erimplementeret. Programmet kan findes på CD’en, og har filnavnet code/main.c.

Initialiserings-processen kan ses på nedenstående figur, 4.5, og anvenderinitialiserings-funktioner fra alle modulerne beskrevet i det tidligere afsnit her ikapitlet. Når alle moduler er blevet initialiserede, hopper programmet over i etmain-loop (se figur 4.6. Det er heri koden for selve afstandsbestemmelsen, dersætter en affyring i gang når der er fundet et mål, kan findes.

Figur 4.5: Flowchart over initialisering af software.

Page 57: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

4.2. MODULER 55

Figur 4.6: Flowchart over main-loopet i vores katapult-software.

Page 58: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

56 KAPITEL 4. SOFTWARE DESIGN

Page 59: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Kapitel 5

Test & Konklusion

57

Page 60: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

58 KAPITEL 5. TEST & KONKLUSION

5.1 IndledningI dette afsnit er der fokuseret på tests af de samlede moduler, dette vil sige at dettestes at softwaren til de enkelte moduler kan styre den tiltænkte hardware.

Page 61: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.2. MSP 430 59

5.2 MSP 430Formålet med denne test er at sikre at microcontrolleren virker, så der i projekteter et stabilt udgangspunkt for en funktionel kode.

5.2.1 TestspecifikationMicrocontrolleren er testet for at sikre os at alle in/output ben virker:

• Sætte alle ben høje, og måle om der står 3,3 V på dem.

• Sætte alle ben lave og måle om der står 0 V på dem.

Testkoden for denne test kan findes på den vedlagte CD under /code/test-port.c.

5.2.2 ResultatTesten viste at microcontrolleren fungerede, som den skulle. Alle ben der kunnesættes hhv. høj eller lav, gjorde dette.

Test ResultatAlle ben sat højt Fungerer fintAlle ben sat lavt Fungerer fint

Tabel 5.1: Resultater af test med microcontrolleren

5.2.3 KonklusionDette modul virker som det er beskrevet i testspecifikationen. Dog viste det sigat være nødvendigt eksplicit at sætte alle ben på microcontrolleren, da værdienved opstart ikke er defineret.

Page 62: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

60 KAPITEL 5. TEST & KONKLUSION

5.3 AfstandsmålerFormålet med denne test var at finde eventuelle fejl i afstandsmåleren i forholdtil databladet, således der ikke satses blind på databladet. Grafen kan bruges tilat bestemme katapultens afstand til et objekt, ved at udlæse ADC-tallet, og sepå grafen hvor det ligger. Det er også disse ADC-tal der benyttes i koden til atbestemme hvor meget kraft katapulten skal affyre med.

5.3.1 TestspecifikationAfstandsmåleren er testet ved:

• at være monteret statisk. Ud fra dette er der afmålt 0-85 cm med 5 cminterval afmærkning. Efter hver 5 cm er der blevet indsat et objekt for atkunne aflæse ADC-tallet.

Ved hver position er der taget ca. 5 sekunders målinger. Herfra er gennemsnittetved hver position taget, for at få det endelige tal. Målingerne kan findes på denvedlagte CD-ROM under /test/afstand-test.

5.3.2 ResultatResultatet af disse tests er plottet i den nedenstående figur 5.1.

Figur 5.1: Output målinger fra afstandsmåleren med 5 cm interval i ADC-tal.

5.3.3 KonklusionHvis man sammenligner vores test med databladets graf, se figur 5.2, kan man seat de stemmer meget overens. Graferne har hver deres enhed på den lodrette akse.

Page 63: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.3. AFSTANDSMÅLER 61

Dette har ingen betydningen da volt og ADC-tallet er proportional og kan dermedsammenlignes. Der er et udsving i testgrafen ved omkring 45 cm. Dette er blevettaget med i udregningen af afstanden fra robotten. Ligeledes stemmer grafernefra 0-9 cm heller ikke overens. Dette er ikke af betydning for dette projekt, dakravet for afstanden til målet er mellem 30 og 80 cm.

Figur 5.2: Sammenligning af databladetsgraf og test grafen

Page 64: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

62 KAPITEL 5. TEST & KONKLUSION

5.4 PanoreringsmotorFormålet med denne test er at sikre at panoreringsmotoren kan nå yderpunkterneuden at ledningerne hæmmer katapulten. Desuden skal det sikres at katapultener i stand til at reagere og stoppe foran et givent mål.

5.4.1 TestspecifikationPanoreringsmotoren er testet ved:

• Lade katapulten panorere til højre, se at den vender når den rammerkontakten og sikre at den kan gøre dette ubesværet.

• Lade katapulten panorere til venstre, se at den vender når den rammerkontakten og sikre at den kan gøre dette ubesværet.

• Sætte motoren i lockstop mens katapulten panorerer, for at sikre at denkan stoppe ud for et mål

5.4.2 ResultatetResultatet fra testen kan ses nedenunder.

Test ResultatPanorering til højre Fungerer fintPanorering til venstre Fungerer fintStop foran mål Fungerer fint

Tabel 5.2: Resultater af test med panoreringsmotor

Katapulten panorerer ca. 180◦, men har problemer med at nå helt ud tilyderpunkterne, samtidig med at farten falder for panoreringen, pga. de mangeledninger omkring katapulten. Den skifter automatisk retning når den når etyderpunkt, og kører tilbage. Når katapulten finder et mål går panoreringsmotoreni locked stop, hvilket gør at den stopper foran mål.

5.4.3 KonklusionDet kan konkluderes at selve panoreringen fungere fint. Grunden til at den ikkealtid kan nå helt ud til yderpunkterne skyldes dårligt design af katapulten, dergør at ledningerne trækkes med og giver panoreringen modstand. Katapultenstopper også foran målet, men har nogle gange en lidt langsom reaktionstid. Dettekan skyldes at panoreringsmotoren kører på 9 V, og dermed er for hurtigt til atreagere på det.

Page 65: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.4. PANORERINGSMOTOR 63

På trods af de små fejl, vurderes det at panoreringen lever op til krav- ogtestspecifikationerne.

Page 66: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

64 KAPITEL 5. TEST & KONKLUSION

5.5 LåsemotorFormålet med denne test er at finde ud af om konstruktionen af låsemotoren erholdbar, i forbindelse med opbygning af moment i katapulten.

5.5.1 TestspecifikationLåsemotoren er testet på følgende på følgende punkter:

• Køre låsen til højre og se at den stopper når den rammer kontakten.

• Køre låsen til venstre og se at den stopper når den rammer kontakten.

• Sænke skeen, slå låsen til og se at den holder skeen, samtidigt med atmotoren stopper når låsen rammer kontakten.

• Slå låsen fra mens den holder skeen, samtidigt med at motoren stopper nårlåsen rammer kontakten.

5.5.2 ResultaterResultatet fra testen med låsemotoren kan ses nedenunder.

Test ResultatLås til højre Fungerer fintLås til venstre Fungerer fintLåse skeen Fungerer fintLøsne skeen Fungerer fint

Tabel 5.3: Resultater af test med låsemotor

Låsen slår frit og ubesværet til og fra, og motoren stopper når låsen nåryderpunkterne. Låsen kan holde skeen nede, og har kræfterne til at slå fra mensden holder skeen.

5.5.3 KonklusionEftersom låsemotoren virker som det er beskrevet i krav- og testspecifikationen,er dette en holdbar løsning til at opbygge moment ved hjælp af denne lås.

Page 67: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.6. AFFYRINGSMOTOR 65

5.6 AffyringsmotorFormålet med denne test er at sikre at affyringsmotoren er stærk nok til at trækkeskeen ned, da dette er nødvendigt for en affyring.

5.6.1 TestspecifikationAffyringsmotoren er testet på følgende punkter:

• Trække skeen helt i bund.

• Trække skeen ned og sætte motoren i lockstop.

• Se efter at gevindstangen, kan holde til det moment der oplagres i den.

Den første test sættes affyringsmotoren til at trække skeen ned, for at se omdette er muligt. Den næste test trækkes motoren igen ned på denne måde, menherefter sættes motoren i lockstop, for at teste om skeen kan blive holdt fast nede.Til sidst testes gevindstangen ved at køre skeen helt i bund, og herefter skal denselv køre op i free motor running. Dette gentages 10 gange, for at se hvordangevindstangen opfører sig udfra det.

5.6.2 ResultaterResultaterne af disse test kan ses beskrevet i nedenstående tabel

Test ResultatSkeen i bund Fungerer fintLåse motoren fast Fungerer ikke optimaltGevindstangen og moment Fungerer ikke optimalt

Tabel 5.4: Resultater af test med affyringsmotor

Affyringsmotoren trækker som beskrevet i testspecifikation skeen ned udenproblemer. Når motoren sættes i lockstop er momentet i skeen større end detmotoren kan holde, og skeen bevæger sig langsomt opad. Gevindstangen ændrersig meget under testene, og giver dermed forskellige startpositioner hver gang,dog opnås der noget stabilitet jo flere gange skeen er kørt ned og op.

5.6.3 KonklusionDette er en fejlkilde i affyringsmotoren, at den giver sig lidt når skeen frigives.Det er en fejl, men det vurderes til at have meget lidt betydning, da det er nogetder vil ske hver gang, og katapulten derfor vil opfører sig på samme måde. Test

Page 68: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

66 KAPITEL 5. TEST & KONKLUSION

af gevindstangen, viser tydeligt at der bliver tabt en del moment i starten. Mendet virker som om at den når et stabilt punkt, hvor skeen altid returneres tilsamme position. Der vil dog altid være en del usikkerhed omkring stabiliteten afkatapulten pga. gevindstangen.

Dette modul virker ikke optimalt i forhold til kravspecifikationen. Dette ernogle ting der skal forbedres, hvis man skal være sikker på, at katapultens præcisionskal være perfekt.

Page 69: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.7. TRÆFSIKKERHED 67

5.7 TræfsikkerhedFormålet med denne test er at sikre at katapulten, lever op til de krav fortræfsikkerhed der er stillet i kravspecifikationen. Derfor laves denne test til atidentificere hvor langt snoren skal løsnes, for at få den største træfsikkerhedindenfor vores forudbestemte zoner. Katapulten er ved denne test, fastsat statiskog uden panorering. Således katapulten står stille og kun skyder fremad.

Figur 5.3: Illustration af katapulten og de 3 zoner.

5.7.1 TestspecifikationKatapultens træfsikkerhed er testet ved at:

• Affyre 5 skud for hver 5%, snoren kan løsnes fra og med 5% til og med100%.

• Affyre yderligere 5 skud ved den længde løsnede snor, der har højst træfsik-kerhed i de 3 zoner der ønskes at ramme.

• Træfsikkerhedsresultatet er taget ud fra de 10 skud, og er angivet i procentud fra disse.

5.7.2 ResultaterResultaterne for testen kan ses nedenfor. Snor viser hvor mange procent snoren erløsnet, mens de forskellige test viser hvad der er sket. “Ingen affyring“ betyder atammunitionen ikke forlader skeen. „Hopper“ betyder den hopper lige op og ned

Page 70: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

68 KAPITEL 5. TEST & KONKLUSION

igen. Mens „Hopper fremad“ betyder ammunitionen ryger fremad men uden atramme ud over katapulten.

Snor Test 1 Test 2 Test 3 Test 4 Test 55% Ingen affyring Ingen affyring Ingen affyring Ingen affyring Ingen affyring10% Ingen affyring Ingen affyring Ingen affyring Ingen affyring Ingen affyring15% Ingen affyring Ingen affyring Ingen affyring Ingen affyring Ingen affyring20% Hopper Hopper Hopper Hopper Hopper25% Hopper Hopper Hopper Hopper Hopper30% Hopper Hopper Hopper Hopper Hopper35% Hopper fremad Hopper fremad Hopper fremad Hopper Hopper fremad40% Udenfor zoner Hopper fremad Hopper fremad Hopper Hopper fremad45% Hopper Udenfor zoner Zone 3 Udenfor zoner Hopper fremad50% Zone 3 Zone 3 Hopper Hopper Hopper55% Hopper Hopper fremad Hopper fremad Zone 2 Hopper60% Hopper fremad Hopper fremad Udenfor zoner Udenfor zoner Udenfor zoner65% Hopper fremad Zone 1 Udenfor zoner Hopper fremad Efter zoner70% Efter zoner Zone 3 Zone 3 Zone 3 Udenfor zoner75% Zone 3 Zone 3 Zone 2 Zone 3 Zone 380% Zone 2 Zone 2 Zone 2 Zone 1 Zone 285% Zone 1 Zone 2 Zone 2 Zone 3 Zone 390% Zone 1 Zone 2 Zone 2 Zone 3 Zone 395% Efter zoner Efter zoner Efter zoner Efter zoner Efter zoner100% Efter zoner Efter zoner Efter zoner Efter zoner Efter zoner

Tabel 5.5: Forsøg 1 af træfsikkerheden ved affyring fra katapulten

Det vurderedes at træfsikkerheden var størst, når snoren var løsnet med hhv.75%, 80% og 90%. Ved 75% ramte 4 ud af 5 skud i zone 3. Ved 80% ramte 4 udaf 5 skud i zone 2. Ved 90% ramte 1 ud af 5 i zone 1, samtidig med at de 2 skud izone 2 lå på grænsen til zone 1.

Snor Test 6 Test 7 Test 8 Test 9 Test 1075% Udenfor zoner Zone 3 Zone 2 Zone 3 Udenfor zoner80% Zone 1 Zone 2 Zone 2 Zone 2 Zone 290% Zone 1 Zone 2 Zone 1 Zone 1 Udenfor zoner

Tabel 5.6: Forsøg 2 af træfsikkerheden ved affyring fra katapulten

5.7.3 KonklusionKatapultens træfsikkerhed var under de indledende forsøg svigtende. Grundentil dette kunne være at momentstangen gav sig for meget og vores tæller ikke

Page 71: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.7. TRÆFSIKKERHED 69

fungerer optimalt. Idet træfsikkerheden viste sig mere stabil mod slutningen afvores test, vurderes det at momentstangen i forbindelse med mange skud, når etstabilt punkt.

Ud fra testen kan det konkluderes at katapulten har en samlet træfsikkerhedpå 70%, så den rammer 7 ud af 10 gange. Dette er bedre end de først antagne 60%,som blev fastsat i kravspecifikationen. Dette skyldes at det er de mest præciseskud indenfor hver zone, der er blevet benyttet som udgangspunkt for katapultensaffyringer. Præcision på katapulten er dog også afhængig af at gevindstangesførste fald i momentoplagring har foregået.

Træfsikkerheden lever op til de krav der er stillet i kravspecifikationen.

Page 72: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

70 KAPITEL 5. TEST & KONKLUSION

5.8 Samlet systemFormålet med denne test er at sikre at systemet, lever op til de krav der er stillet ikravspecifikationen samt at dokumentere at de enkelte moduler er implementeretpå en fornuftig og funktionel måde. Der er under denne test opstillet en bane,hvor de forskellige zoner ligger i korrekt afstand fra katapulten.

5.8.1 TestspecifikationKatapultens funktionalitet er testet ved at:

• Katapulten sættes til at panorere, hvor den søger efter mål.

• Der laves en test i hver af de tre zoner, med 3 affyringer på målet.

5.8.2 Resultater

Panorer og stop ud for mål ResultatZone 1 Stopper ikke ud for måletZone 2 Stopper ud for målet men rammer ikkeZone 3 Stopper ud for målet og rammer 1 ud af 3 gange

Tabel 5.7: Resultater af test hvor katapulten panorer og skal opfange mål

Ved mål placeret i zone 1, registrerer systemet et mål, dog er den for langsom til atstoppe og dermed verificere målet. Dette medfører at katapulten ikke automatiskaffyrer mod mål i zone 1. Ved mål placeret i zone 2 stopper katapulten ud formålet, dog så tæt på kanten af målet at skuddet ikke ramte i nogle af de 3 forsøg.Ved mål placeret i zone 3 stopper katapulten ud for målet, men rammer kun 1 ud3 gange.

5.8.3 KonklusionTesten af katapultens samlede system, hvor alle modulerne flettes sammen, harvist at systemet ikke fungerer efter hensigten.

Page 73: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.9. TEKNOLOGIVURDERING 71

5.9 TeknologivurderingFor at se om prototypen opfylder de krav der er sat i kravspecifikationen i afsnit1.3, er der udført forskellige tests. Der vil i dette afsnit diskutere resultaterne afvores test, samt vurdere hvilke forbedringer der kan laves, for at produktet bliverendnu bedre.

Katapulten er lige fra projektets start forsøgt holdt simpel. Fordelen ved detteer at det kræver mindre tid at sætte sig ind i de komponenter der benyttes iprototypen. De simple komponenter der er benyttet gør også at systemet er letat fejlfinde, og sikrer at de enkelte moduler har overskuelige opgaver at udføre.Dette gør modultesten let gennemskuelig, hvilket har begrænset problemerne tilsamspillet i det samlede system.

Katapulten er bygget op efter det princip at der oplagres det samme momenttil alle affyringer, men vinklen der affyres med varieres. Dette er valgt grundetden relativt simple konstruktion der kræves for at indføre dette princip i projektet.Valget af denne affyringsmetode muliggjorde teoretisk set indførsel af kasteparableni projektet, noget som dog rent praktisk blev skrinlagt grundet komponentvalgettil affyringsmekanismen. I stedet blev træfsikkerheden testet, ved at løsne snoren5% ad gangen. Træfsikkerhedstesten hvor katapulten står stille og skyder fremad,viste sig at have en tilfredsstillende træfsikkerhed.

Momentet oplagres i en LEGO plastik gevindstang, dette virkede optimaltidet at den øvrige katapult er opbygget i LEGO. Men det har vist sig at dennekonstruktion taber moment ved gentagne affyringer. Stangen taber så meget kraft,at den ikke kan returnere skeen til samme position efter hvert skud. Dette bevirkerat kraften ændres i forhold til affyringsvinklen og kan derfor ikke betegnes somkonstant for alle skud uanset affyringsvinklen. Skulle dette forbedres skal LEGO’enudskiftes til noget metal. LEGO giver sig for meget til at kunne benyttes i dennesammenhæng. Dette viste sig også i vores test.

Systemet kortlægger mål i tre zoner vha. en afstandsmåler. Indenfor dissezoner vil katapulten skyde med en kraft passende til den zone målet befinder sig i.Affyringsvinklen og dermed kraften i skuddet afhænger af hvor meget snoren derholder skeen løsnes i procent. På trods af at træfsikkerheden var tilfredsstillende,var affyringen meget ustabil. Således kunne den ramme både før og efter zonerne,selvom den midterste zone skulle rammes. Dette er ikke hensigtsmæssigt, menville med en mere stabil affyringsmekanisme blive mere pålidelig. Udover detteviste den samlede test at katapulten har svært ved at nå at reagere og stoppepræcist, når målet opfanges. Panoreringsmotoren panorerer med for høj fart tilat afstandsmåleren får opfanget målet. Måden at løse dette på kunne være atnedsætte spændingen til motoren eller at målene skal være bredere desto længere

Page 74: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

72 KAPITEL 5. TEST & KONKLUSION

væk zonerne er. Det var dog nødvendigt med en høj spænding, da konstruktionener for tung.

Seriel kommunikation med katapulten virker efter hensigten, og den udlæserstatus for eventuelle fundne mål, samt hvilket stadie den befinder sig i når dertilsluttes en pc til microcontrolleren. Dette har gjort det let at teste de opstilledezoner. Det viste sig også, at den afvigelse der befinder sig på afstandsmåleren,kommer til udtryk gennem en usikkerhed i forbindelse med overgangen mellemzone 2 og 3, idet afstandsmåleren mellem disse zoner har en afvigelse i output iforhold til databladet, se figur 5.2.

Der blev ikke til denne katapult implementeret en ladefunktion. Dette kunneogså være forbedring, som kunne gøre katapulten mere automatisk. Lige nu bliverdette styret manuelt.

Page 75: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

5.10. KONKLUSION 73

5.10 KonklusionUd fra problemformuleringen, „Kan man konstruere en panorerende katapultstyret af microcontroller, som kan ramme mål uden andet end inputs fra sensorerpå enheden?“, skal det vurderes om problemet er løst.

Der er udført en række test, for de forskellige moduler, og det kan konkluderesat vores katapult fungerer tilfredsstillende i forhold til de opstillede krav. Somkatapulten er konstrueret, ville det være nærliggende at designe en mere stabilaffyringsmekanisme. Dette ville muliggøre implementering af en affyringsalgoritmebaseret på kasteparablen, idet katapulten med denne forbedring ville affyre medet mere ensartet moment.

De udførte test viser også at katapultens panoreringsfunktion er hæmmet af demange ledninger der kører op til den bevægelige del af basen. Disse bør integreresi den del af basen der drejer, da dette ville reducere antallet af ledninger derskal trækkes rundt og dermed give en mere stabil bevægelse i yderpunkterne.Dette ville gøre os i stand til at reducere spændingen der trækker denne motor,og dermed øge muligheden for at stoppe ud for mål placeret i zone 1 og zone 2.

For at øge træfsikkerheden bør omdrejningstælleren, som bliver brugt skiftes.Denne enhed er afhængig af at starte i præcis samme position hver gang, hvil-ket er svært at kontrollere. På denne måde vil det blive tilfældigt hvor mangeomdrejninger der tages, og dermed hvor meget snoren løsnes.

Den samlede systemtest viste, at systemet ikke fungerer optimalt og ikkelever op til de opstillede krav. Katapulten kunne i 2 ud af 3 zoner ikke rammemålet mere end en enkelt gang, og i den sidste test blev der slet ikke affyret frakatapulten, da sensoren ikke fik sat gang i dette stadie. Det kan derfor konkluderes,at det er lykkedes at konstruere en katapult, der fungerer modulvis, men ikke somen samlet enhed.

Page 76: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

74 KAPITEL 5. TEST & KONKLUSION

Page 77: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Figurer

2.1 Billede af katapulten . . . . . . . . . . . . . . . . . . . . . . . . . 142.2 Illustration af hvordan momentet opbygges på katapulten. . . . . 152.3 Billede af lock-motor. . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Refleksion af afstandsmåler fra et tilfældigt objekt [6]. . . . . . . . 172.5 Graf over afstandsmålerens sammenhæng mellem volt og centimeter

[7]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.6 Tabel over de states H-broen kan sættes i vha. inputs [8]. . . . . . 192.7 Diagram over opsætning af H-bro med DC-motorer [8]. . . . . . . 202.8 LEGO-motor af 712427 typen [2]. . . . . . . . . . . . . . . . . . . 202.9 Tabel over antallet af omdrejninger, samt vridningsmoment en

LEGO motor yder ved forskellige spændinger [2]. . . . . . . . . . 212.10 Graf over sammenhængen mellem omdrejninger og den strøm mo-

torerne trækker [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . 212.11 Et eksempel på en kasteparabel [9]. . . . . . . . . . . . . . . . . . 222.12 Diagram over opsætning af H-broerne med lav-pass filtre [8]. . . . 24

3.1 MSP430 diagram over dens opbygningen [3]. . . . . . . . . . . . . 263.2 Status registeret på MSP430 [4]. . . . . . . . . . . . . . . . . . . . 273.3 Oversigt over portene på MSP430F149 [3]. . . . . . . . . . . . . . 293.4 Oversigt over P1 og P2 registrene [4]. . . . . . . . . . . . . . . . . 303.5 Oversigt over P3-P6 registrene [4]. . . . . . . . . . . . . . . . . . . 303.6 Oversigt over hvilke reference ben der kan sættes til ADC12 på

MSP430 [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.7 Her ses de forskellige interruptvektorer samt en liste over interrupt-

prioriteterne på MSP430 [3]. . . . . . . . . . . . . . . . . . . . . . 373.8 Timer modes på MSP430 [4]. . . . . . . . . . . . . . . . . . . . . 423.9 Up mode på Timer A og B.[4]. . . . . . . . . . . . . . . . . . . . . 433.10 Continuous mode på Timer A og B [4]. . . . . . . . . . . . . . . . 433.11 Up/down-mode på Timer A og B [4]. . . . . . . . . . . . . . . . . 443.12 Eksempler på PWM signaler [1]. . . . . . . . . . . . . . . . . . . . 453.13 Anvendelse af PWM på Timer B. På billedet ses eksempler på

værdier af de to Capture/Compare registre CCR0 og CCR1. . . . 46

75

Page 78: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

76 FIGURER

4.1 State diagram over software for katapulten. . . . . . . . . . . . . . 484.2 State diagram over reset state. . . . . . . . . . . . . . . . . . . . . 484.3 State diagram over målsøgnings state. . . . . . . . . . . . . . . . . 494.4 State diagram over affyrings state. . . . . . . . . . . . . . . . . . . 494.5 Flowchart over initialisering af software. . . . . . . . . . . . . . . 544.6 Flowchart over main-loopet i vores katapult-software. . . . . . . . 55

5.1 Output målinger fra afstandsmåleren med 5 cm interval i ADC-tal. 605.2 Sammenligning af databladetsgraf og test grafen . . . . . . . . . . 615.3 Illustration af katapulten og de 3 zoner. . . . . . . . . . . . . . . . 67

Page 79: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Litteratur

[1] cpemma.co.uk. Pulse Width Modulation, 2008. http://www.cpemma.co.uk/pwm.html [Online; tilgået 18-november-2008].

[2] Philippe Hurbain. Lego R© 9v technic motors compared characteristics.,2008. http://www.philohome.com/motors/motorcomp.htm [Online; tilgået8-december-2008].

[3] Texas Instruments. MSP430x13x, MSP430x14x Mixed Signal Processor (Da-tasheet), 2003. Se CD for kopi.

[4] Texas Instruments. MSP430x1xx Family Users Guide, 2004. Se CD for kopi.

[5] James K. Peckol. EMBEDDED SYSTEMS A Contemporary Design Tool.John Wiley and Sons Inc.

[6] OOPIC. Connecting an IR Distance Detector to an OOPic., 2008. http://www.oopic.com/gp2d12.htm [Online; tilgået 26-november-2008].

[7] Sharp. GP2D12 SHARP, 2005. Se CD for kopi.

[8] STMicroelectronics. Dual full-bridge driver, 2000. Se CD for kopi.

[9] Simon Toftgaard Jesperen og Jakob Stougaard Thomsen. Det skrå kast, 2006.Se CD for kopi.

77

Page 80: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

78 LITTERATUR

Page 81: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

Bilag A

Port oversigt

79

Page 82: Automatiseret katapult - Mikael Svenstrup, PostDoc ...ms.aslaksvenstrup.dk/project_proposals/de3-1-e08_student_report.pdf · Styres en katapult af en microcontroller, åbner muligheden

80 BILAG A. PORT OVERSIGT

Her kan ses en oversigt over portene, hvilken funktion de har, samt hvad de ertilsluttet til.

Port Ben Funktion TilslutningP1.0 12 Digital output LysdiodeP1.2 14 Digital output Venstre (pan)P1.3 15 Digital output Højre (pan)P1.4 16 Digital output Enable (pan)P1.7 18 Digital input Venstre switch (lock)P1.8 19 Digital input Højre switch (lock)P2.0 20 Digital input Venstre switch (pan)P2.1 21 Digital input Højre switch (pan)P2.2 22 Digital output Venstre (lock)P2.3 23 Digital output Højre (lock)P3.0 28 Digital output Enable (fire)P3.1 29 Digital output Venstre (fire)P3.2 30 Digital output Højre (fire)P3.4 32 Seriel port UTXP3.5 33 Seriel port URXP4.1 37 Timer_B1 PWM (Enable lock)P4.4 40 Digital output Enable (load)P4.5 41 Digital output Left (load)P4.6 42 Digital output Right (load)P5.0 44 Digital input OmgangstællerP6.0 59 ADC Converter Afstandsmåler

Tabel A.1: Konverteringsmetoder.