107

Automatisk overvågningskamera · ched to an aluminum plate for indoor moun-ting. The system is able to keep the helmet of the go-cart driver in the center of the pictu-re, by separating

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Automatisk overvågningskamera

Udarbejdet af gruppe 506

I perioden fra den 1. september til den 21. december 2006

E5-projekt 2006Elektronik og elektroteknik

Institut for elektroniske systemerAalborg Universitet

Aalborg Universitet

Elektronik og Elektroteknik

Fredrik Bajers Vej 5, Postboks 159

DK-9100 Aalborg

Tlf. (+45) 9635 8080

http://www.aau.dk

Titel:

Automatisk overvågningskamera

Tema:

Tilbagekoblede realtidssystemer

Projektperiode:

E5, efterårssemesteret 2006

Projektgruppe:

506

Deltagere:

Christian Fink Petersen

Kim Bjelke Sørensen

Kim Laugesen

Lars Bo Theilgaard Madsen

Niels Terp Kjeldgaard Jørgensen

Steen Larsson

Vejleder:

Tom Søndergaard Pedersen

Kirsten Nielsen

Oplagstal: 10

Sideantal: 107

Heraf appendiks: 45

Bilagsantal og art: 1 stk. CD-ROM

Afsluttet den 21-12-2006

Synopsis:

Denne rapport dokumenterer arbejdet med a-nalyse, design, konstruktion og test af et au-tomatisk overvågningskamera. Kameraet skalfølge en gokart, når den bevæger sig rundt påen afgrænset del af en bane.Systemet består af en kameraopstilling med etanalogt kamera, motorer til regulering af ka-meraets position og endestop til afgrænsningaf bevægelsesområde. Enhederne er monteretpå et vægbeslag, der er beregnet til indendørsmontering. Bærer gokartkøreren en rød hjelm,kan systemet udskille denne i billedet og regu-lere kameraet, så hjelmen konstant er i bille-dets midte.Billedet fra kameraet sendes via et tv-kort tilen Windows-PC, hvor det analyseres i pro-grammet EyesWeb. Koordinatet på hjelmensmassemidtpunkt sendes til en Linux-PC, somvha. software skrevet i C bearbejder dataene.C-programmet styrer motorerne via et I/O-kort med en analog udgang og digitale udgan-ge. Fire digitale indgange anvendes til inputfra endestop.Der anvendes en stepmotor og en DC-motor tilhenholdsvis horisontal og vertikal rotation. Tilstepmotoren er der konstrueret et driverkreds-løb, der styrer motoren vha. digitale signalerfra I/O-kortet. I C-programmet er der imple-menteret en regulator, der styrer DC-motorenvia I/O-kortet og en ekstern eektforstærker.Systemet er testet i et laboratorium, hvor deter vericeret, at kameraet kan følge et rødt te-stobjekt i både horisontal og vertikal bevæg-else.

Rapportens indhold er frit tilgængeligt, men offentliggørelse (med kildeangivelse) må kun ske efter aftale med

forfatterne.

Aalborg Universitet

Elektronik og Elektroteknik

Fredrik Bajers Vej 5, Postboks 159

DK-9100 Aalborg

Tlf. (+45) 9635 8080

http://www.aau.dk

Title:

Automatic Surveillance Camera

Theme:

Realtime Feedback Systems

Project period:

E5, Autumn term 2006

Project group:

506

Participants:

Christian Fink Petersen

Kim Bjelke Sørensen

Kim Laugesen

Lars Bo Theilgaard Madsen

Niels Terp Kjeldgaard Jørgensen

Steen Larsson

Supervisor:

Tom Søndergaard Pedersen

Kirsten Nielsen

Copies: 10

Number of pages: 107

Appendices hereof: 45

Attachment: 1 CD-ROM

Finished 21-12-2006

Abstract:

This project report documents the work doneon analysis, design, building process and testof an automatic surveillance camera. The ca-mera is supposed to follow a go-cart drivingon a dened part of a track.The system consists of a camera set-up withan analog camera, motors for regulating theposition of the camera and stop switches forlimiting the working area. The units are atta-ched to an aluminum plate for indoor moun-ting. The system is able to keep the helmet ofthe go-cart driver in the center of the pictu-re, by separating the color of the helmet andregulate the position of the camera.The video is sent from the camera through aTV card to a Windows PC, where it is ana-lyzed by software called EyesWeb. The coor-dinates of the helmet are sent to a Linux PC,which processes the data with software writ-ten in C. The software operates the motors byan I/O card with an analog output and digi-tal outputs. Four digital inputs read the stopswitches.A stepper motor and a DC motor are used forhorizontal and vertical rotation. The steppermotor is controlled by a driver circuit withinput from the I/O card. A controller is im-plemented in the C-code for controlling theDC-motor.The system is tested in a laboratory, where itis veried, that the camera is able to followa test object in both horizontal and verticalmovement.

The content of this report is freely accessible, though publication (with reference) may only occur after permission

from the authors.

Forord

Denne rapport er udarbejdet af gruppe 506 på 5. semester ved Institut for Elektroniske Systemer,Aalborg Universitet. Rapporten er udfærdiget i perioden fra den 1. september til den 21. december2006.

Projektets tema er Tilbagekoblede realtidssystemer og gruppen har valgt projektforslaget Auto-matisk overvågningskamera med Tom S. Pedersen og Kirsten Nielsen som vejledere.

Projektgruppen ønsker at takke Henning Nielsen og Dan Bhanderi for vejledning og tekniskassistance.

LæsevejledningAktivt lave signaler er angivet med *. Som eksempel er CW/CCW*, hvor CW er aktiv høj ogCCW er aktiv lav. Kildelisten er lavet efter Harvard-metoden. I teksten, hvor der f.eks. henvises tildatabladet for Maxon DC-motor, vil der stå [Motor, 2006]. I litteraturlisten kan alle tilgængeligeog relevante oplysninger, såsom navn, titel, adresse og webadresse, ndes.

BilagBilag i form af datablade, MatLab-ler, C-kode og rapporten i PDF-format forendes på denvedlagte CD bagerst i rapporten. Databladene, der refereres til i litteraturlisten, forendes påden vedlagte CD.

Christian Fink Petersen

Kim Bjelke Sørensen

Kim Laugesen

Lars Bo Theilgaard

Niels Terp Kjelgaard Jørgensen

Steen Larsson

v

Indholdsfortegnelse

1 Indledning 1

2 Problemanalyse 3

2.1 Systembeskrivelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Kravspecikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Hardware 9

3.1 Hardwarebeskrivelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 Stepmotor og driverkredsløb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3 DC-motor og eekttrin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.4 Endestop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 Software 19

4.1 Softwarebeskrivelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.2 Billedbehandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3 Netværksbuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.4 Korrigering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.5 Styring af stepmotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.6 Styring af DC-motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.7 I/O-kort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.8 Endestop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

vi

5 Accepttest 43

5.1 Optagelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.2 Billedbehandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.3 Positionsregulering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.4 Motorstyring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6 Konklusion 47

7 Perspektivering 49

Litteraturliste 51

A Accepttestspecikation A1

B Valg af kamera B1

C Vinkelberegning C1

D Parametre for DC-motoren D1

E Motormodellering E1

F Beregning af regulator F1

G Målejournal for stepmotor og driverkredsløb G1

H Målejournal for eekttrin H1

I Test af kameraopstilling I1

J Modultest af software J1

Kapitel 1Indledning

Dette projekt omhandler konstruktion af et automatisk overvågningskamera. Kameraet skal værei stand til at justere sin egen position i forhold til det objekt, der følges. En konstruktion af dennetype kan f.eks. anvendes inden for sikkerhedssystemer eller sportsoptagelser.

Det bestemmes, at konstruere et automatisk overvågningskamera, der kan følge en gokart. Go-karten kører på en indendørs bane, hvilket afgrænser kameraets visuelle område. Systemet kon-strueres til at overvåge en del af banen. Dermed kan en gokartkører se, hvorledes en bestemtstrækning eller et sving er kørt. En anden anvendelsesmulighed er til optagelser ved poltera-bends og lignende.

For at gøre det muligt at følge gokarten, skal kameraet kunne drejes både horisontalt og vertikalt.Dette gøres ved hjælp af to motorer. De to motorer justeres på baggrund af dierencen mellemdet optagede billede og en reference.

1

Kapitel 2Problemanalyse

Ved konstruktion af et automatisk overvågningskamera er det nødvendigt at specicere, hvordanobjektet skal identiceres, samt hvor objektets position ønskes i billedet. Objektet ønskes i midtenaf billedet, og dermed reguleres positionen ind for at opfylde dette. Identikation kan f.eks.laves på baggrund af en form eller en farve. Metoder, der hver især har fordele og ulemper.Eksempelvis kan konturen af en bestemt form ændres alt efter, hvordan denne form vender. Enfarve kan opfattes forskelligt alt efter lysstyrke og lysindfald. Da det er en gokart, der skal følges,vælges det at bruge en en hjelm som det ønskede objekt og en farve som identikationsmiddel.En hjelmfarve kan ændres fra løb til løb, og kameraet er derfor ikke bundet op på en bestemtkontur. Som udgangspunkt vælges rød som hjelmfarve.

I problemanalysen opstilles de funktionelle krav til et automatisk overvågningskamera, baseretpå farveidentikation, til en gokartbane.

2.1 Systembeskrivelse

Det konstruerede kamera skal kunne følge en bestemt kører på en gokartbane. Området afgrænsestil en afstand på mellem 10 og 20 meter fra kameraet. Det antages, at gokarten kan køre op til50 km/t. Da det er en gokart, der skal følges, antages det, at kameraets synsfelt skal væreminimum 3x2 m. Kameraets opstilling konstrueres til montering på væg, da det dermed kanplaceres højt og hindringer i kameraets udsyn minimeres. Højden bestemmes til maksimalt tremeter. Vægmonteringen resulterer i en begrænsning af kameraets synsfelt til 180 horisontalt og90 vertikalt. Kameraet indstilles af to motorer, én til den vandrette og én til den lodrette aksesom vist på gur 2.1.

3

2 Problemanalyse

Kamera

horisontal rotation

vertikal rotation

Motor

Motor

Figur 2.1: Illustration af kameraopstilling.

Billederne bruges til at regulere motorerne. Af indlæringsmæssige årsager anvendes to typermotorer til styringen. Til drejning omkring den horisontale akse vælges en stepmotor, mens dertil den vertikale akse vælges en DC-motor.

En videosekvens fra et kamera består af ere delbilleder, og det er for hvert af disse billeder,der skal foretages en regulering af kameraets position. Køreren genkendes på baggrund af en rødhjelmfarve, og det kræver derfor et billedbehandlingsprogram for at fastsætte positionen af dennehjelm i billedet. Denne position skal dernæst formidles videre til et positionsreguleringsmodul.Her beregnes, hvilken retning kameraet skal bevæges i, og hvor meget det skal yttes, inden dergives et output, der styrer motorerne. Slutteligt skal der designes en motorstyring, der kan levereden nødvendige eekt til de to motorer, samt aktivere dem til de korrekte tider. Dette giver reblokke, der analyseres hver for sig:

• Optagelse

• Billedbehandling

• Positionsregulering

• Motorstyring

OptagelseDer vælges et analogt farvekamera med tilslutning til en PC via et tv-kort. Signalet fra kameraeter standarden PAL1 med en opdateringshastighed på 25 billeder per sekund [Wikipedia, 2006].Da kameraet overfører et analogt signal, bestemmes opløsningen med indstillingen af tv-kortet.Valg af kamera er beskrevet i appendiks B, hvor det bestemmes, at en opløsning på 320x240pixels er tilstrækkelig, til at genkende objektet i det afgrænsede område.

BilledbehandlingTil behandling af billedet vælges EyesWeb [Lab, 2006], et freewareprogram anbefalet af HenningNielsen2. Programmet fungerer kun med Microsoft Windows som operativsystem. Programmet eri stand til at lokalisere en bestemt farve samt beregne massemidtpunktet af det farvede område.Hvilke farvenuancer, der skal genkendes som rød, bestemmes i afsnit 4.2.

1PAL - phase alternation line.2Henning Nielsen, Associate Professor, Institut 6, Aalborg Universitet.

4

2.1. Systembeskrivelse

Hjelmen skal være i billedets midte konstant, hvilket gør, at billedbehandlingen og reguleringenaf motorerne skal afsluttes, inden der er gået 40 ms, svarende til 25 billeder per sekund.

PositionsreguleringKameraets position reguleres ud fra billedbehandlingens data, så hjelmen konstant er i billedetsmidte. For at sikre, at kameraet ikke bevæger sig udenfor de fastlagte grænser, monteres reendestop på kameraopstillingen.Positionsberegning foretages af software på en PC, hvortil motorstyringen er forbundet igennemet I/O-kort af typen NI PCI-6024E [Instruments, 2005]. Kortet monteres i en PC med Linuxstyresystem, hvor der kan anvendes COMEDI-drivere, der simplicerer kommunikationen mellemhardware og software [Hess, 2006].Da billedbehandlingssoftwaren kører på Windows og COMEDI på Linux, anvendes to PC'er isystemet.

MotorstyringMotorstyringen består af den hardware, der skal styre motorerne på baggrund af input fra I/O-kortet. Stepmotoren kræver et driverkredsløb, mens der til DC-motoren skal designes et eekttrin.

Det samlede systemDet samlede system, med forbindelserne mellem de enkelte blokke, er illustreret på gur 2.2.Videosignalet fra kameraet sendes til Windows-PC'en, hvor billedbehandlingsprogrammet, derbestemmer hjelmens position i billedet, afvikles. Koordinaterne sendes videre til Linux-PC'en,hvor de enkelte koordinatsæt behandles, hvorefter de korrigerede data sendes til I/O-kortet. Dettesender signaler videre til hardware, der styrer motorerne og dermed kameraets position.

Linux-PCI/O-kort

Windows-PC

Kamera

Figur 2.2: Illustration af det samlede system med forbindelser mellem de enkelte enheder.

Forbindelserne mellem de enkelte blokke består af:

• Kamera −→ Windows-PC:Kameraet er forbundet til Windows-PC'en med et composit3kabel.

• Windows-PC −→ Linux-PC:Forbindelsen mellem de to PC'er er en TCP/IP LAN forbindelse.

• Linux-PC ←→ O/I-kort:Udgangene fra Linux-PC'en består af et internt PCI-kort i PC'en og et eksternt I/O-kort.Disse to enheder er forbundet med et multilederkabel.

• O/I-kort ←→ Kameraopstilling:

3Synonym for CVBS - Composite Video with Burst and Sync. Kilde: http://en.wikipedia.org/wiki/CVBS.

5

2 Problemanalyse

Fra I/O-kortet skal der være forbindelse til stepmotorens driverkredsløb, DC-motorenseekttrin og de re endestop.

2.1.1 Systemets begrænsninger

I projektet afgrænses fra, at gemme optagelserne fra overvågningskameraet, da det væsentlige iprojektet består i at genkende et objekt og kunne følge dette vha. kamera, software og motorer.Rød er en bred denition af en farve og der vil være nuancer af rød systemet ikke opfatter somden denerede farve. Farven kameraet opfatter varierer også afhængigt af lysindfald og lysniveau.Derfor benyttes systemet indendørs under konstante lysforhold.

2.2 Kravspecikation

Baseret på systemets ønskede funktionalitet, kan krav til hver af de 4 blokke opstilles.

Optagelse

• Kameraet skal være i stand til at følge en rød styrthjelm i en afstand fra 10 til 20 m. Veden afstand på 10 m skal billedområdet være minimum 3 m i bredden og minimum 2 m ihøjden.

• Videoformatet er PAL med en opdateringshastighed på 25 billeder per sekund.

• TV-kortet skal køre med en opløsning på 320x240 pixels.

Billedbehandling

• Skal være i stand til at lokalisere massemidtpunktet for en rød farve. Nuancer og tolerancebestemmes i afsnit 4.2.

• Skal kunne give koordinater på massemidtpunktet af den lokaliserede røde farve.

• Skal kunne overføre koordinater over et TCP/IP netværk.

Positionsregulering

• Skal ud fra koordinatsættet fra billedbehandlingen kunne give information til motorstyringom, hvor kraftigt og i hvilken retning kameraet skal dreje.

Motorstyring

• Skal kunne bevæge kameraet 180 ±10% horisontalt.

• Skal kunne bevæge kameraet 90 ±10% vertikalt.

6

2.2. Kravspecikation

• Til at begrænse motorernes bevægelsesområde, skal der bruges re mekaniske kontakter.

Den maksimale forsinkelse gennem hele systemet ønskes ikke at overstige 40 ms svarende tilopdateringstiden mellem to billeder.

Optagelse, billedbehandling og positionsregulering foretages i software, mens motorstyringenimplementeres i hardware. Hermed er de funktionelle krav til systemet opstillet, og design afhardware og software kan påbegyndes.

7

Kapitel 3Hardware

Krav til den ønskede funktionalitet er gennemgået i forrige kapitel. Her blev også foretaget enopdeling i hardware og software. I dette afsnit designes hardwaren, der består af driverkredsløbettil stepmotoren, eekttrinnet til DC-motoren samt de re endestop til begrænsning af kameraetsbevægelsesområde. Alle disse delblokke anvender I/O-kortet som enten input eller output.

3.1 Hardwarebeskrivelse

Hardwaren skal korrigere kameraets position efter den er beregnet i softwaren. Inputtet til driver-kredsløbet og eekttrinnet er fra I/O-kortet. De re endestop er forbundet direkte til I/O-kortet.

Et blokdiagram af hardwaren er illustreret på gur 3.1.

I/O-kort

Driverkredsløb Stepmotor

DC-motor

Endestop

Effekttrin

Figur 3.1: Blokdiagram af hardwaren til ændring af kameraets position.

Motorerne, samt deres driverkredsløb/eekttrin beskrives sammen, hvorved de tre blokke derbeskrives i dette kapitel er følgende:

• Stepmotor og driverkredsløb

9

3 Hardware

• DC-motor og eekttrin

• Endestop

Til hver af de enkelte blokke vil der først være en beskrivelse, hvorefter kravene listes. Ud frakravene vil de enkelte blokke blive designet, og afsluttende testet for, om de overholder de opsattekrav. Strukturen bliver hermed:

• Beskrivelse

• Krav

• Design

• Test

Inden de enkelte blokke kan designes, opsættes grænseaderne imellem disse.

3.1.1 Grænseader

Mellem de enkelte blokke opsættes grænseader, så blokkene kan kommunikere med hinanden.Grænseaderne mellem de enkelte blokke er følgende:

Grænseade mellem I/O-kort og driverkredsløb. Kravene stammer fra [Instruments, 2005] og[STMicroelectronics, 2001a]:

1. Output low voltage: maks. 0,4 V

2. Output high voltage: min. 4,35 V

Grænseade mellem I/O-kort og eekttrin. Kravene stammer fra [Instruments, 2005]:

1. Spændingsområde: ±10 V DC

2. Udgangsstrøm: ±5 mA

3. Slew-rate: 10 Vµs

Grænseade mellem I/O-kort og endestop. Kravene stammer fra [Instruments, 2005]:

1. Input low voltage: 0 V - 0,8 V

2. Input high voltage: 2 V - 5 V

Efter kravene til grænseaderne er opstillet, er det muligt at designe de forskellige blokke.

10

3.2. Stepmotor og driverkredsløb

3.2 Stepmotor og driverkredsløb

Til den horisontale drejning af kameraet anvendes en stepmotor, der drejer et bestemt antalgrader ved en spændingspuls. Fordelen ved denne type motor er, at dens position hele tiden erkendt. Skal motoren drejes et bestemt antal grader, skal den have et bestemt antal spændings-pulser, hvorefter den holdes fast i sin position indtil den modtager nye spændingspulser. Motorener af mærket Sonceboz og har en steplængde på 1,8 [SONCEBOZ, 2006]. Omdrejningsretningog hastighed styres ved hjælp af et driverkredsløb, som modtager instruktioner fra I/O-kortet.For at kunne følge en gokart, der kører 50 km/t, skal kameraet kunne dreje minimum 79,6 persekund, appendiks C.

3.2.1 Krav til driverkredsløbet

Til kredsløbet er der opstillet følgende krav:

1. Skal kunne dreje stepmotoren 79,6 per sekund.

2. Skal kunne dreje stepmotoren i begge retninger.

3.2.2 Design af driverkredsløb

Driverkredsløbet består af to integrerede kredsløb, L297 og L298 N fra STMicroelectronics [ST-Microelectronics, 2001a], [STMicroelectronics, 2001b]. L297 er selve styringskredsen, der omsæt-ter instruktionerne fra computeren til en kode, som den sender til eektkredsen L298N. Dennekreds styrer strømmen gennem motorens to viklinger, og dermed motorens position. Det samledekredsløb er illustreret på gur 3.2.

11

3 Hardware5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

5V DC 36V DC

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Monday, November 06, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Monday, November 06, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCode>

<Title>

A

1 1Monday, November 06, 2006

D101-D104D101-D104

31

C103

470u

C103

470u

D105-D108D105-D108

31

U102

L298N

U102

L298N

SE

NS

11

OUT1 2

OUT2 3

VS

4

A_IN15

ENA6

B_IN27

GN

D8

VS

S9

C_IN310

ENB11

D_IN412

OUT3 13

OUT4 14

SE

NS

215

31

C104

100n

C104

100n

C101

33n

C101

33n C102100nC102100n

31

R101

22k

R101

22k

R1030,5R1030,5

U101

L297

U101

L297

SY

NC

1

GN

D2

HO

ME

3

A 4

INH1 5

B 6C 7

INH2 8

D 9

VS

12S

EN

S1

14

SE

NS

213

VREF15

OS

C16

CLOCK18

CO

NTR

OL

11

CW/CCW17

ENABLE10

HALF/FULL19RESET20

31

31

R1020,5

R1020,5

Motorvinding2Motorvinding2

12

31

31

Motorvinding1Motorvinding1

12

Figur 3.2: Stepmotorens driverkreds [STMicroelectronics, 2001a].

For at få den mindst mulige steplængde, sættes indgangen HALF/FULL* høj. Derved halveresmotorens steplængde til 0,9.Kredsens ENABLE ben bestemmer, hvornår kredsen er aktiv. Denne indgang kan eventuelt sæt-tes høj af I/O-kortet, når motoren skal sættes i bevægelse. I denne opsætning kan en fastlagtkonstant clockpuls forbindes til Clock*-benet. I en anden opsætning kan ENABLE sættes kon-stant høj, mens I/O-kortet styrer motoren ved hjælp af et antal spændingspulser på Clock*-benet,som beregnes mellem hver billedopdatering.For at klarlægge, hvilken opsætning der skal bruges, er kredsløbet testet i appendiks G. I testenvericeres, at når HALF/FULL* er høj, drejer motoren 0,9 per clockpuls. Desuden er forsinkel-sen, fra ENABLE sættes høj, til motoren kører, målt til under 4 ms.Det besluttes, at kredsen skal være konstant aktiv, så motorens aktivitet alene styres af spæn-dingspulserne. Kredsen trækker derved strøm, når opstillingen er i hvilestilling, men til gengældopnås en sikkerhed for, at kameraet holdes i sin stilling, indtil en ny clockpuls modtages.Benforbindelserne, der skal tilsluttes I/O-kortet, er:

• CW/CCW*. Bestemmer motorens omdrejningsretning.

• Clock*. Aktiv på spændingspulsens opadgående anke. Skal være lav i mindst 0,5 µs.

Andre væsentlige ben er:

• ENABLE. Sættes høj, så kredsen konstant er aktiv.

12

3.3. DC-motor og eekttrin

• HALF/FULL*. Sættes høj, så steplængden halveres til 0,9.

• RESET*. Sættes høj, da RESET-funktionen ikke anvendes.

• VREF. Strømbegrænser. Når spændingen over R102 eller R103 overstiger spændingen pådette ben, afbrydes kredsen. Indgangen sættes til maksimalværdien, angivet i kredsensdatablad, på 3 V, da motorens maksimalstrøm ikke kendes.

3.2.3 Test af driverkredsløb og stepmotor

Driverkredsløbet og stepmotoren er testet for kravene i appendiks I. Et C-program beregner denmaksimale hastighed for motoren, når den styres af den færdige software. Programmet styrerstepmotoren fra endestop til endestop i begge retninger, mens det registrerer, hvor lang tid dettager.Motorens hastighed bliver i testen beregnet til 92,5 per sekund. Accepten er opstillet i tabel3.1:

Krav Accept

Dreje minimum 79,6 per sekund !

Dreje i begge retninger !

Tabel 3.1: Accept over kravene for driverkredsløb og stepmotor.

3.3 DC-motor og eekttrin

DC-motoren, der benyttes, er af mærket Maxon og modellen er RE-25-055-34 [Motor, 2006]. Mo-toren trækker mere eekt end det anvendte I/O-kort kan levere. Derfor konstrueres et eekttrin.For at dimensionere eekttrinnet tages der udgangspunkt i I/O-kortets udgangsspænding, samthvor stor strøm det kan levere. Desuden skal det undersøges, hvilken spænding DC-motoren ope-rerer ved, samt hvor stor strøm den skal bruge. Figur 3.3 viser et blokdiagram over eekttrinnet.

Spændingsforstærker EffektforstærkerI/O-kort

Effekttrin

DC-motor

Figur 3.3: Blokdiagram over eekttrinnet.

I/O-kortet, der benyttes, er af mærket National Instruments, og modellen er PCI-6024E. Kortethar to analoge udgange, men kun den ene benyttes til DC-motoren. I/O-kortets udgangsspændingligger mellem -10 V og 10 V og maksimal udgangsstrøm er ±5 mA [Instruments, 2005].

For at undersøge, hvor stor spænding motoren skal forsynes med, beregnes først motorens fart-konstant. Denne konstant beskriver, hvor mange omdrejninger motoren drejer på et minut per

13

3 Hardware

volt, når motoren er ubelastet. For at beregne konstanten benyttes følgende formel:

fartkonstant,=rpmV

(3.1)

hvor: rpm er motorens hastighed [omd/min]

V er motorens indgangsspænding [V]

Der er foretaget målinger på motoren for at vericere dens karakteristika. Ud fra tallene i ta-bel D.3 i appendiks D bestemmes fartkonstanten. Gennemsnittet af alle målingerne giver 554omdrejninger per minut per volt.

fartkonstant = 554omdmin

V

Det er i appendiks C formel C.1 på side C3 bestemt, at kameraet minimum skal kunne dreje0,83 på en opdatering. Med 25 opdateringer per sekund giver det 20,8, og med en gearing på18.75:1 skal motoren kunne dreje 65,17 omdrejninger i minuttet.

Med den udregnede fartkonstant og den ønskede hastighed skal motoren bruge

Vin =65, 17 omd

min

554omdminV

= 0, 12 V

for at dreje 0,83 på en opdatering. For at have en margin vælges det, at eekttrinnet skal kunnelevere spændinger i området fra -2 V til 2 V. Da spændingen fra I/O-kortet er mellem -10 V og10 V laves en 5:1 spændingsdeling for at opnå det ønskede spændingsniveau.

I tabel D.3 på side D4 ses de målte strømme, når motoren kører ubelastet. Den maksimale måltestrøm er 160 mA. Ifølge databladet for motoren er startstrømmen 500 mA [Motor, 2006]. For atkunne levere den fornødne strøm, konstrueres eekttrinnet derfor til at kunne levere 500 mA.

3.3.1 Krav for eekttrin

Med de foregående udregninger og på baggrund af datablade, opstilles kravene for eekttrinnet.Det er fra projektgruppens side valgt, at kravene til eekttrinnet skal have en tolerance på 10%.

1. Indgangsspænding på ±10 V.

2. Indgangsstrøm på ±5 mA.

3. Udgangsspænding på ±2 V ±0,2 V.

4. Udgangsstrøm på ±500 mA ±50 mA.

5. Skal kunne dreje 20,8 per sekund.

6. Skal kunne dreje i begge retninger.

14

3.3. DC-motor og eekttrin

3.3.2 Design af eekttrin

Selve kredsløbet konstrueres som en buer med en forstærkning på én. For at få en lavere ud-gangsspænding laves en spændingsdeling af indgangsspændingen med to modstande.

Dernæst skal strømforstærkningen bestemmes. Ud fra databladet for I/O-kortet fremgår det, atden maksimale udgangsstrøm er på ±5 mA. For at få den valgte DC-motor til at starte med atkøre, kræver den ifølge databladet 500 mA. Strømforstærkningen, GA, beregnes på baggrund afdette til:

GA =500 mA5 mA

= 100

Herefter deles eekttrinnet op i en spændingsforstærker og en eektforstærker.

Spændingsforstærker

Spændingsforstærkeren laves med en operationsforstærker og bestemmes til at være ikke-inverte-rende. Operationsforstærkeren skal kunne håndtere et indgangssignal på ±2 V og kunne have enudgangsspænding på ±2 V. Der anvendes en TLE2071 operationsforstærker [Instruments, 2000].

Da der kun skal være én gange forstærkning, kobles udgangen af operationsforstærkeren direktetilbage til den inverterende indgang. På gur 3.4 er spændingsforstærkeren illustreret som denførste del af diagrammet.

Slew rateDen anvendte operationsforstærker, TLE2071, har en slew rate på min. 23 V/µs [Instruments,2000]. Det anvendte I/O-kort har en slew rate på 10 V/µs, jævnfør afsnit 3.1.1. Da operations-forstærkeren er hurtigst accepteres dennes slew rate som værende tilstrækkelig.

Eektforstærker

Strømforstærkningen realiseres som et push-pull-trin ved hjælp af to darlingtontransistorer. Deto darlingtontransistorer vælges til at være af typen BDX33 og BDX34. Disse to transistorer haren strømforstærkning på min. 750 gange [Thomson, 2000].

For ikke at få cross-over i forstærkeren, laves et biasnetværk ved hjælp af dioder. Da der benyttesdarlingtontransistorer er der et spændingsfald over to dioder for hhv. den positive og den negativedel af spændingen. Derfor benyttes ialt re dioder. På gur 3.4 ses et diagram over eekttrinnetmed spændingsforstærkeren og eektforstærkeren. De benyttede dioder er af typen 1N4148.

15

3 Hardware

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

V_in

Udgang til motor

12 V

-12 V

12 V

-12 V

0

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, December 12, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, December 12, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, December 12, 2006

Q2

BDX34C

Q2

BDX34C

D11N4148D11N4148

D31N4148D31N4148

-

+

U1 TLE2071

-

+

U1 TLE20713

26

7 14 5

Q1

BDX33C

Q1

BDX33C

R34kR34k D2

1N4148D21N4148

R41kR41k

R210kR210k

D41N4148D41N4148

R110kR110k

Figur 3.4: Diagram over eektrinnet for DC-motoren.

3.3.3 Test af eekttrin

Efter konstruktion af eekttrinnet udføres en test, der skal vericere, at de opstillede krav over-holdes. Selve målejournalen forendes i appendiks H. Den maksimale spændingsafvigelse er testettil 4,25%.

I samme appendiks er det testet, hvorvidt eekttrinnet kan levere den ønskede strøm. Eekt-trinnet belastes med en 3,9 Ω modstand og strømmen igennem den er målt som funktion afspændingen. I appendiks H tabel H.3 fremgår det, at strømmen afviger med maksimalt 2,6% fradet ønskede.Kravene til omdrejningshastighed og retning testes i appendiks I. Et C-program beregner denmaksimale spænding for motoren, når den styres af den færdige software. Programmet styrerstepmotoren fra endestop til endestop i begge retninger, mens det registrerer, hvor lang tid dettager. Motorens hastighed bliver i testen beregnet til 276,7 per sekund.De opstillede krav er opsummeret i tabel 3.2.

Krav Accept

Indgangsspænding på ±10 V !

Indgangsstrøm på ±5 mA !

Udgangsspænding på ±2 V ±0,2 V !

Udgangsstrøm på ±500 mA ±50 mA !

Skal kunne dreje 20,8 per sekund i begge retninger. !

Tabel 3.2: Tabel over kravene for eektrin og deres accept.

16

3.4. Endestop

3.4 Endestop

Endestoppene er monteret på kamerastillingen og skal registrere, når kameraet når en yderposi-tion. Der anvendes re mekaniske endestop, der forbindes til re indgange på I/O-kortet. Det erbestemt, at kameraet skal kunne dreje 180 horisontalt og 90 vertikalt.

3.4.1 Krav til endestop

Ud fra problemanalysen opstilles følgende krav til endestoppene.

1. Skal begrænse den horisontale vinkel til 180 ±10%.

2. Skal begrænse den vertikale vinkel til 90 ±10%.

3.4.2 Design af endestop

De re endestop skal alle være normally closed (NC), hvorved de brydes ved aktivering. Bliver etendestop aktiveret skal den tilhørende indgang på I/O-kortet blive trukket høj vha. en pull-upmodstand.

Indgangene, de enkelte endestop skal styre, er følgende:

• Venstre horisontale (VH) endestop, digital indgang nr. 49 på I/O-kort.

• Højre horisontale (HH) endestop, digital indgang nr. 47 på I/O-kort.

• Nedre vertikale (NV) endestop, digital indgang nr. 19 på I/O-kort.

• Øvre vertikale (ØV) endestop, digital indgang nr. 51 på I/O-kort.

De enkelte endestop forbindes hver til deres respektive indgange og stel. Mellem hver af de reindgange og forsyningen på 5 V, forbindes en 51 kΩ pull-up modstand [Instruments, 2005].

17

3 Hardware

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

49

47

19

51

14 (+5V)

13 (GND)

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, November 14, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, November 14, 2006

Title

Size Document Number Rev

Date: Sheet of

<Doc> <RevCod

<Title>

A

1 1Tuesday, November 14, 2006

SW2HH endestopSW2HH endestop

SW1VH endestopSW1VH endestop

R151kR151k

SW3NV endestopSW3NV endestop

R251kR251k

SW4ØV endestopSW4ØV endestop

R351kR351k

R451kR451k

Figur 3.5: Forbindelsesdiagram af endestopkredsløbet.

3.4.3 Test af endestop

De enkelte indgange er testet ved hjælp af et C-program, der aæser om de enkelte indgange påI/O-kortet er logisk høj eller lav. Ved at aktivere de enkelte endestop og aæse deres værdi fraC-programmet konkluderes at de fungerer efter henseende.

Vinkelbegrænsningen er målt til henholdsvis 185 og 83.

Krav Accept

Horisontal begrænsning !

Vertikal begrænsning !

Tabel 3.3: Accept over kravene for endestop.

Opsummering af hardware

Der er i dette kapitel blevet konstrueret et driverkredsløb for stepmotoren, et eekttrin til DC-motoren og re endestop til motorstyringen. De konstruerede hardwareblokke er testet og opfylderde opstillede krav.

18

Kapitel 4Software

I dette kapitel beskrives det software, der skal anvendes i projektet. Én af softwarens funktionerer, at nde midtpunktskoordinaterne af det røde objekt på billedet. Koordinatsættet anvendestil at korrigere motorerne, så det røde objekt bliver i midtpunktet af billedet. Softwaren skaleksekveres på to styresystemer, et Windows- og et Linux-system. Windows-systemet foretager albilledbehandlingen, og Linux-systemet skal lave korrektionerne til motorerne.

4.1 Softwarebeskrivelse

Softwarebeskrivelsen tager udgangspunkt i afsnit 2.2 side 6. Softwaren skal styre en DC- ogen stepmotor. Motorerne styres på baggrund af et billede, hvori der lokaliseres et rødt objekt.Billedet opdateres med 25 Hz. Dette medfører, at softwaren skal lave motorreguleringer vedsamme frekvens.

Det er bestemt, at billedbehandlingen skal foregå vha. programmet EyesWeb på en Windows-PC.Efter billedbehandlingen skal et koordinatsæt angive, hvor i billedet det røde objekt er lokaliseret.Det er på baggrund af dette koordinatsæt, at de to motorer skal reguleres.

Koordinaterne overføres via netværk til Linux-PC'en, hvor de anvendes i reguleringssoftwaren.Et owdiagram over reguleringssoftwaren er illustreret på gur 2.2.

19

4 Software

Initialisering

Main-løkke

Timer klar

Y-koordinat forskellig fra 0

X-koordinat forskellig fra 0

Korrigering

nej

Endestop y aktiv

Endestop x aktiv

Modtag koordinater

Ja

nej nej

ja ja

ja ja

Juster y-retning Juster x-retning

nej nej

Koordinater modtaget

nej

jaMain-løkke

Main-løkke

Main-løkke

Main-løkke

Main-løkke

Main-løkke

Main-løkke

Figur 4.1: Flowdiagram over C-koden.

De to motorer reguleres fra softwaren via et I/O-kort. Det valgte I/O-kort skal tilsluttes enLinux-PC. Dette medfører, at koordinatsættet skal sendes fra en Windows-PC til en Linux-PC.Koordinatsættet sendes over et netværk vha. en TCP/IP protokol.Dette medfører, at programmet der designes, skal eksekveres på en Linux-PC. Det konkretestyresystem der bruges er Mepis ver. 3.3.1.

4.1.1 Flertrådet programmering

Det skal være muligt for softwaren både at styre kameraet i X- og Y-retningen på samme tid.Dette medfører at softwaren skal designes til at være ertrådet. Flertrådet betyder, at der kanafvikles mere end én proces af gangen. I praksis kan der kun afvikles samme antal processer, somder er CPU'er, men ved ertrådet programmering skiftes trådene hele tiden til at have CPU tid.Hermed kan der oprettes en tråd til at styre DC-motoren og en tråd til at styre stepmotoren,

20

4.1. Softwarebeskrivelse

hvorefter det er muligt, at justere begge motorer på samme tid. Yderligere skal der oprettes entråd, der sørger for, at softwaren kører med en frekvens på 25 Hz.

I ertrådet software kan der opstå problemer med, at ere tråde vil tilgå de samme variable påsamme tid. En løsning på dette problem er semaforer. En semafor kan antage alle ikke negativeværdier. Er en semafor lig 0, er det ikke muligt at tilgå dataet, der er beskyttet af semaforen.Er en semafor derimod lig to, er det muligt at tilgå det beskyttede data to gange, eller af toforskellige processer på samme tid.Semaforer benyttes i dette projekt til at synkronisere de forskellige tråde. Synkroniseringen fore-går ved at en tråd, der har foretaget de nødvendige beregninger på en variabel, tæller en semaforén op. Herefter tæller tråden, der bruger denne variabel, den samme semafor én ned.

I dette projekt oprettes tre tråde. De tre tråde er som følger: timer-tråd, DC-motor-tråd ogstepmotor-tråd. Timer-tråden sørger for at den nødvendige timing i softwaren sker. DC-motortråden og stepmotor tråden styrer henholdsvis DC-motor og stepmotor.Udover de tre tråde kører main programmet, hvorfra trådene oprettes. I main programmet skertilgangen til netværket.

Efter softwarebeskrivelsen inddeles softwaren i mindre moduler.

4.1.2 Modulinddeling

Efter softwarens virkemåde er beskrevet, inddeles softwaren i fem moduler. Eksekveringsrække-følgen er illustreret på gur 4.2.

Kamera Billedbehandling Netværksbuffer

Korrigering Motorstyring I/O kort

Windows operativsystem

Linux operativsystem

Kamera Billedbehandling Netværksbuffer

KorrigeringMotorstyringI/O kort

Windows operativsystem

Linux operativsystem

Figur 4.2: Blokdiagram over software inddeling på Windows- og Linux styresystemmet.

De fem moduler er følgende:

• Billedbehandling

• Netværksbuer

• Korrigering

• Motorstyring

• I/O-kort

21

4 Software

Motorstyringen til DC-motoren og stepmotoren behandles i hvert deres afsnit. Inden softwarenprogrammeres, opstilles grænseader mellem de enkelte moduler.

4.1.3 Grænseader

For at være sikker på, at de forskellige moduler kan interagere korrekt, opsættes grænseadekravtil modulerne.

Grænseade mellem kamera og billedbehandlingDe opsatte krav er fra problemanalysen.

1. Signal skal være RGB241

2. Signal skal være PAL-standarden.

3. Opdateringshastigheden skal være 25 billeder per sekund.

Grænseade mellem billedbehandling og netværksbuerKrav 1-3 er opstillet af projektgruppen baseret på de sendemuligheder, der er til rådighed fraEyesWeb. Krav 4 og 6 er fra afsnit 2.2 side 6, X- og Y-koordinaterne svarer til den valgte opløsningpå 320x240 pixels.

1. X- og Y-koordinat på port 7777.

2. X-koordinat modtages før Y-koordinat.

3. Datatype: streng (string).

4. Opdateringshastighed: 25 Hz.

5. X-koordinat skal ligge mellem 0 og 319.

6. Y-koordinat skal ligge mellem 0 og 239.

Grænseade mellem netværksbuer og korrigeringKrav 1 bliver foretaget, da det er talværdien fra X- og Y-koordinaterne der skal bruges. Dermå ikke foretages nogle ændringer i X- og Y-koordinaternes værdi, når de bliver konverteret frastreng til heltal.

1. Datatype: heltal (integers).

2. X-koordinat skal ligge mellem 0 og 319.

3. Y-koordinat skal ligge mellem 0 og 239.

124 bits repræsentation af rød, grøn og blå. Hver farve kan have en værdi mellem 0 og 255. Mulige farvekom-binationer er 2563 = 224 = 16777216.

22

4.1. Softwarebeskrivelse

Grænseade mellem korrigering og motorstyring

1. X-koordinat skal ligge mellem -160 og 159.

2. Y-koordinat skal ligge mellem -120 og 119.

Grænseade mellem I/O-kort og stepmotorstyring

De valgte udgange vælges ud fra databladet [Instruments, 2005].

1. Retning, digital udgang nr. 52 på I/O-kort.

2. Clock*, digital udgang nr. 17 på I/O-kort.

3. Stel, udgang nr. 18 på I/O-kort.

Grænseade mellem og I/O-kort og DC-motor

Kravene opstilles ud fra databladet [Instruments, 2005].

1. Spændingsområde ±10 V.

2. Analog udgang nr. 22 på I/O-kort.

3. 12 bit styring af spænding (heltal fra 0 til 4095).

4. Stel, udgang nr. 55 på I/O-kort.

Grænseade mellem I/O-kort og endestop Kravene opstilles udfra databladet [Instruments,2005].

1. Alle endestop er normally closed (NC).

2. Indgangene skal trækkes høj ved påvirkning.

3. Venstre horisontale endestop, digital indgang nr. 49 på I/O-kort.

4. Højre horisontale endestop, digital indgang nr. 47 på I/O-kort.

5. Nedre vertikale endestop, digital indgang nr. 19 på I/O-kort.

6. Øvre vertikale endestop, digital indgang nr. 51 på I/O-kort.

Efter grænseaderne til de forskellige moduler er opstillet, er det muligt at designe modulerne.

23

4 Software

4.2 Billedbehandling

I billedbehandlingsdelen skal billedet fra det analoge kamera behandles. Billedbehandlingen skallokalisere, hvor koncentrationen af rød farve er størst, og derefter beregne et koordinatsæt formassemidtpunktet af farven. Koordinatsættet skal efterfølgende sendes ud på TCP/IP netværket.

4.2.1 Krav til billedbehandling

Ud fra beskrivelsen af billedbehandling opstilles følgende krav.

1. Skal modtage et videosignal fra et analogt kamera.

2. Skal udskille den røde farve.

3. Skal nde midtpunktet af den røde farve og lave et koordinatsæt af midtpunktet.

4. Skal sende koordinatsættet ud på et TCP/IP netværk.

4.2.2 Design af billedbehandling

Strukturen fra EyesWeb programmet er illustreret på gur 4.3, programmet er delt op i 4 faserder eksekveres i rækkefølgen 1 - 4.

Figur 4.3: Billedebehandlingsprogrammet der anvendes i EyesWeb.

1. Fase

Signalet modtages fra kameraet. Inputtet er 320x240 pixels, med 25 billeder per sekund og er iRGB24 billedkvalitet.

2. Fase

Billedet bliver delt i 3 farver, rød, grøn og blå (RGB). Til udskilningen af de enkelte farveranvendes en standard blok fra EyesWeb, der indstilles til at udskille hver af de tre farver. Ved

24

4.3. Netværksbuer

at tage gennemsnittet af de blå og de grønne farver kan disse trækkes fra de røde farver. Dettesignal sendes videre til fase 3.

3. Fase

Signalet bliver sendt gennem et tærskel, der kan skaleres mellem 0 og 255. Ved at variere på denneskalering kan den røde farve bedre lokaliseres i forhold til den aktuelle belysning. De to hvidebokse der ses på gur 4.3 er til at vise værdien af skaleringen og indstilling af skaleringsværdien,mens programmet eksekveres. Efter skaleringen består billedet nu kun af hvid, der repræsentererrød, og sort, der repræsenterer den grønne og blå farve. Massemidtpunktet ndes af det hvideområde og koordinatsættet sendes til fase 4.

4. Fase

Modtager en 1x2 matrix med koordinatsættet. Værdien af matricen konverteres til en string dersendes til netværket. Dataene sendes til IP-adressen på Linux-PCen på port 7777.

4.2.3 Test af billedbehandlingen

Der udføres en test for at vericere at billedbehandlingen opfylder de opstillede krav. I appendiksJ kan testen af modulet ndes. I billedbehandlingsprogrammet EyesWeb, anvendes en blok, derkan håndtere et signal fra et analogt kamera. Fase 2 og 3 er i stand til af lokalisere den røde farveog ved hjælp af justering kan der tages højde for konstrast mellem ønsket og uønsket farve. Fase3 nder midtpunktet og fase 4 laver et koordinatsæt. På en anden PC modtages koordinaternevia Hyper Terminal.

I tabel 4.1 er kravene, for billedbehandlingen og deres accept, opsat.

Krav Accept

Analogt signal !

Rød farve !

Midtpunkt/koordinatsæt !

TCP/IP !

Tabel 4.1: Tabel over kravene for billedbehandlingsdelen og deres accept.

Alle krav for billedbehandlingssoftwaren er opfyldt.

4.3 Netværksbuer

Netværksbueren modtager koordinaterne fra Windows-PC'en. Koordinaterne anvendes til atjustere motorerne. Det er tidligere valgt, at port 7777 benyttes til datakommunikation. Data i

25

4 Software

Netværksbuer skal læses med samme hastighed, som der modtages koordinater fra Billedbe-handling. Dette svarer til en opdateringshastighed på 40 ms mellem de enkelte koordinatset. Detmodtagne data skal konverteres fra en datastreng til heltal og sendes til modulet korrigering.

4.3.1 Krav til netværksbuer

Kravene der stilles til netværksbueren er:

1. Modtager data på port 7777.

2. Hente data fra bueren i et interval 40 ms.

3. Konvertere den modtagne streng til et heltal, afsnit 4.1.3 side 22.

4. Sende heltallene videre til modulet korrigering.

4.3.2 Design af netværksbuer

Til design af netværksbueren anvendes en timer, der henter data fra netværksbuer med 40 msmellemrum. Netværksbueren skal fungere som illustreret på gur 4.4.

Semafor_tid +1

40 ms delay Semafor_tid -1 Buffer

Data fra netværk

Semaphor klar?

Figur 4.4: Til venstre er en timer illustreret, mens der til højre er illustreret data, der modtages via et netværk.

Timeren sørger for, at der kun modtages data fra netværket med en frekvens på 25 Hz, hvilketsvarer til en periodetid på 40 ms. Dette realiseres vha. en semafor. Hver gang der er gået 40ms, tæller timeren semaforen én op. Hermed bliver semaforen lig én, hvilket gør det muligt atmodtage data fra netværket. Dataet modtages og gemmes, og semaforen tælles én ned. Det ernu ikke muligt at modtage data før timeren tæller semaforen en op igen.

Dataet konverteres herefter fra en streng til et heltal. Efter dette er gjort, er dataet klar til detefterfølgende modul, korrigering.

Ovenstående beskriver et normal forløb for modulet netværksbuer, men der kan opstå to fejli modulet. Enten er der ikke data klar, eller også har modulet billedbehandling ikke lokaliseret

26

4.3. Netværksbuer

det røde objekt. Er der ikke modtaget data, skal kameraet ikke ændre position, hvilket medførerat X og Y skal sættes til 0.

C-koden, der bruges til at tilgå netværket, er skrevet med inspiration fra en internetguide [Hall,2006].

Realiseret C-kode

Efter modulet netværksbuer er beskrevet, vil dele af koden blive gennemgået. Nedenståendekode er måden, hvorpå timer-tråden er realiseret.

1 /*Timeren tråden, der indgår i netværksbuffermodulet.*/

void *timer(void *aparm)

3 while(1)

usleep(timer); /*Venter i 40 ms*/

5 sem_post(&sem_time); /*Tæller timer semaforen 1 op*/

7

Listing 4.1: Timeren der indgår i netværksbuer.

Timer-tråden består af en while(1) løkke, hvori der ndes en usleep funktion og en semafor.Usleep funktionen er inaktiv i 40 ms, hvorefter at semaforen sem_time tælles én op. Denne løkkeforsætter med at køre indtil programmet afsluttes.Semaforen, der tælles én op i timer-tråden, tælles én ned, når der forsøges at modtage data overnetværket. Dette sker i nedenstående kode.

1 sem_wait(&sem_time); /*Timer semafor tælles en ned*/

numbytesx=recv(clientfd, &bufferx, MAXBUFFER-1, O_NONBLOCK); /*Modtager x

og y koordinat*/

3 numbytesy=recv(clientfd, &buffery, MAXBUFFER-1, O_NONBLOCK);

if(numbytesx > 0 && numbytesy >0)

5

/*Tallene der er gemt som strenge i bufferne gemmes som integer x og y*/

7 x=atoi(bufferx);

y=atoi(buffery);

Listing 4.2: Koden til at modtage koordinater over netværk.

Det første der sker er, at semaforen sem_time tælles én ned. Dernæst forsøger programmet atmodtage et X-koordinat og et Y-koordinat. Hvis der ikke er modtaget nogle koordinater, springesdet efterfølgende kode over, og programmet starter fra linie 1 igen.Er der derimod modtaget data, skal dette konverteres fra strenge til heltal. Dette foretages ilinie 5 og 6. Herefter er det muligt for de efterfølgende moduler at foretage beregninger på X- ogY-koordinaterne.

Hermed er modulet netværksbuer realiseret, og modulet skal testes, for at kontrollere, om detoverholder de opstillede krav.

27

4 Software

4.3.3 Test af netværksbuer

Netværksbueren testes med den færdige C-kode med tilføjelser, der skal vericere de opstilledekrav.

For at vericere kravet om at lytte på port 7777, sættes programmet til at skrive på skærmenhvilken port den er sat op til at lytte på, hvis der kan oprettes forbindelse. Hvis der ikke kanoprettes forbindelse, skal programmet give besked herom, ved at skrive det på skærmen. Bagefterændres porten, der lyttes på, til 7778 og programmet skal give besked om, at der ikke kan oprettesforbindelse.

For at vericere at der hentes data fra bueren hver 40 ms, indsættes en tæller, der tæller op forhver gang, der er modtaget data fra Windows-PC'en, der kører programmet EyesWeb. Tællerenudskrives på skærmen. Systemet sættes til at køre 60 sekunder, hvorefter programmet afbrydes.Der benyttes et stopur. På de 60 sekunder skal tælleren nå

25 Hz · 60 s = 1500

Det forventes at uret manuelt kan stoppes indenfor ±0,5 sekund. Dette giver at tælleren kan nåen minimumværdi på 1487 og maksimumværdi på 1513. Tælleren nåede at tælle op til 1428, dettesvarer til en frekvens på 23,8 Hz. Det vides ikke, om det er EyesWeb, C-koden eller netværket,der skaber forsinkelsen. Grundet tidsnød er en nærmere undersøgelse ikke udført.

For at vericere at den modtagne streng bliver konverteret til heltal, udskrives strengen både førog efter konverteringen. For ikke at indsætte for meget ekstra i koden, verices kun X-koordinatet.Den modtagne streng blev konverteret til heltal.

For at vericere at heltallene sendes videre til korrigeringsmodulet, indsættes en linie kode imodulet korrigering, der skriver de modtagne X- og Y-koordinater. De modtagne koordinaterudskrives.

Opsummering af de testede krav kan ses i tabel 4.2.

Krav Accept

Port 7777 !

Hent data per 40 ms %

Konverter til heltal !

Send heltal til korrigering !

Tabel 4.2: Accept over kravene for netværksbueren.

4.4 Korrigering

Efter modulet billedbehandling er koordinatet (0,0) lokaliseret øverst i venstre hjørne. Efterkorrigeringsmodulet, skal koordinatet være lokaliseret i midten. Figur 4.5 illustrerer koordinaternefør korrigering, mens gur 4.6 illustrerer koordinaterne efter korrigering.

28

4.4. Korrigering

0,0 1,0 2,0

0,1

0,2

-1,0-2,0...

0,-1

0,-2

...

...... ...

...0,0 1,0 2,0

0,1

0,2

...

...

...

...

Figur 4.5: Pixelnummerering før korrigering.

0,0 1,0 2,0

0,1

0,2

-1,0-2,0...

0,-1

0,-2

...

...... ...

...0,0 1,0 2,0

0,1

0,2

...

...

...

...

Figur 4.6: Pixelnummerering efter korrigering.

Fra gur 4.6 fremgår det ligeledes, at Y-koordinatet skal inverteres.

4.4.1 Krav til korrigering

Følgende krav opstilles til korrigeringen:

1. Origo for koordinatsystem skal være midtpunkt af billede

2. Y-koordinatet skal inverteres

4.4.2 Design af korrigering

Korrigeringen foretages ved at halvdelen af billedets pixelbredde trækkes fra X-koordinatet, oghalvdelen af billedets pixelhøjde trækkes fra Y-koordinatet. Modulet billedbehandling regner Ypositiv i nedadgående retning. Det skal ændres til, at positiv Y-retning er opadgående. Dettekorrigeres ved at multiplicere Y-koordinatet med -1 og addere med 1.Korrigeringen af Y-koordinattet er:

yk = −(

y − h

2+ 1 px

)[px] (4.1)

hvor: yk er den korrigerede Y-koordinat [px]

y er det modtagne Y-koordinat [px]

h er højden af billedet [px]

Efter dette bruges det korrigerede X-koordinat i styring af stepmotor, mens det korrigeredeY-koordinat bruges i styring af DC-motor.

29

4 Software

Realiseret C-kode

Nedenstående er koden, der udgør modulet korrigering.

x=x-(WIDTH/2); /*Korrigering af x koordinat*/

2 y=-(y-(HEIGHT/2)+1); /*Korrigering af y koordinat*/

sem_post(&sem_DC); /*DC-motor semafor tælles op*/

4 sem_post(&sem_step); /*Stepmotor semafor tælles op*/

Listing 4.3: Kode der foretager korrigering af koordinater.

Konstanterne HEIGHT og WIDTH er henholdsvis højden og bredden af billedet.

4.4.3 Test af korrigering

Der foretages ingen test af korrigering, da funktionerne der er implementeret er simple regne-funktioner.

4.5 Styring af stepmotor

Motorstyring af stepmotoren implementeres i både hardware og software. Hardwaren består af etdriverkredsløb, beskrevet i afsnit 3.2 side 11. Softwaren skal genere de styresignaler, der anvendestil driverkredsløbet. Styresignalerne er følgende:

• Clock*

• Retning

Styresignalet Clock* skal have pulser, der er lave i mindst 0,5 µs, dette beskrives i afsnit 3.2.Antallet af pulser afhænger af X-koordinattet. Sættes styresignalet Retning til 1 skal kameraetdreje mod højre, sættes den til 0 skal kameraet dreje mod venstre.

4.5.1 Krav til stepmotorstyring

Kravene der sættes til stepmotorstyringen stammer fra afsnittet om driverkredsens hardware,afsnit 3.2 side 11.

1. Pulsen tpuls, der sendes til driverkredsen, skal være lav i mindst 0,5 µs.

2. Antallet af pulser skal afhænge af X-koordinatet.

3. Retningen skal sættes lig 1 for X>0 og 0 for X<0.

30

4.5. Styring af stepmotor

4.5.2 Design af stepmotorstyring

Clock* signalet styrer, hvor ofte motoren skal dreje. Motoren drejer ét step per puls. Til atberegne antallet af pulser, der skal sendes, anvendes data fra tabel 4.3, hvor billedbredde i graderi hentet i appendiks B.

Parameter Værdi

Billedbredde i pixels 320

Billedbredde i grader 17

Pixels/grad 18,8

Grader/step (stepmotor) 0,9

Pixles/step 16,9

Tabel 4.3: Parametre for stepmotor og billede.

Fra tabel 4.3 fremgår det, at for hvert step motoren drejer, drejes billedet 16,9 pixels, men da enpixel er et heltal afrundes dette til 17 pixels. Der sendes ingen pulser, hvis antallet af pixels ermindre end 17. Antallet af steps motoren skal dreje, beregnes ved:

pulser =⌊

pixels17

⌋[−] (4.2)

Motorstyringen skal afgive alle pulserne inden periodetiden, tp, da der efter dette tidsrum mod-tages et nyt sæt koordinater, kameraet skal indstilles efter. Det vælges, at alle pulserne skal væreafgivet inden 30 ms. Hermed er det muligt at beregne tiden mellem hver puls, thøj , ligning 4.3.

thøj =tp − (pulser · tpuls)

(pulser− 1)[s] (4.3)

Figur 4.7 illustrerer en periode, hvori der sendes tre pulser til stepmotoren.

tp

thøj tpulst

1

0

Figur 4.7: En periode med tre pulser. Perioden må maks. tage 30 ms.

31

4 Software

Omdrejningsretning Styresignal

X > 0 Højre Retning = 1

X < 0 Venstre Retning = 0

Tabel 4.4: Bestemmelse af motorens omdrejningsretning.

Omdrejningsretningen bestemmes af styresignalet Retning. Er X-værdien positiv, skal motorendreje mod højre, mens den skal dreje til venstre, hvis X er negativ, tabel 4.4.

Er X lig med 0, beholdes styreretningen fra forrige signal. Modtages f.eks. en X-værdi på -53,fremgår det af ligning 4.2 og tabel 4.4 at der skal sendes 3 pulser, og retning skal sættes til 0.

C-koden til motorstyring af stepmotor skal implementeres i en tråd. Grunden til dette er, atmotorstyring af DC-motor skal eksekveres på samme tid. Ved at implementere både motorstyringaf DC- og stepmotor i hver deres tråd er det muligt at eksekvere begge tråde på samme tid.

Herefter er hele stepmotorstyringen beskrevet, og det er muligt at skrive softwaren, der skal styrestepmotoren.

Realiseret C-kode

Nedenstående kode er modulet stepmotorstyringen. Dette er implementeret i en tråd.

/*Stepmotor tråd*/

2 void *step(void *aparm)

while(1)

4 sem_wait(&sem_step);

/*Styresignalet retning sættes til 0 eller 1 og skrives til IO-

kortet*/

6 if(x>0)

xretning=1; /*Drejer til højre*/

8 comedi_dio_write(it, 2, 1, 1); /*Skriver retningen på ben 17*/

10 if(x<0)

xretning=0;

12 comedi_dio_write(it, 2, 1, 0); /*Skriver retningen på ben 17*/

x=-x; /*Finder den nummeriske værdi af x*/

14

16 /*Kontrollerer om endestop er aktiveret*/

stopx=endestopx();

18

/*Er endestop ikke aktiveret kan pulserne sendes*/

20 if(xretning!=stopx)

nsteps=x/stepgrad; /*Antal pulser beregnes*/

22 sleep_t_samlet=periodetid-(nsteps*puls_t); /*Beregner tiden,

hvor i clock udgangen skal være høj*/

24 /*Skal der sendes mere end 1 puls, beregnes tiden mellem

pulserne*/

32

4.5. Styring af stepmotor

if(nsteps-1>0)

26 sleep_t=sleep_t_samlet/(nsteps-1);

28

/*Skal der sendes mere end 1 puls startes for løkken*/

30 for(n=1; n<nsteps; n++)

comedi_dio_write(it, 2, 0, 0); /*Sætter clock udgangen lav*/

32 usleep(puls_t);

comedi_dio_write(it, 2, 0, 1); /*Sætter clock udgangen høj*/

34 usleep(sleep_t);

36 comedi_dio_write(it, 2, 0, 0); /*Sætter clock udgangen lav*/

usleep(puls_t);

38 comedi_dio_write(it, 2, 0, 1); /*Sætter clock udgangen høj*/

usleep(sleep_t);

40

42

Listing 4.4: Tråd til stepmotorstyring.

I koden tælles semaforen sem_step én ned, derefter sættes retningen til 0 eller 1 og skrives til I/O-kortet. I linie 17 kontrolleres om endestoppene er aktiveret. Funktionen endestopx kan returneretre forskellige værdier. Er det venstre endestop aktiveret returneres 0, er det højre endestopaktiveret returneres 1 og er ingen af endestoppene aktiveret returneres 2. Den returnede værdisammenlignes herefter med retningen. Er disse forskellige er det tilladt for stepmotoren at dreje.Er de ens, betyder det, at motoren vil forsøge dreje til den side, hvor endestoppet er aktiveret,hvilket ikke skal ske.

Efter endestoppene er kontrolleret, og motoren godt må dreje, beregnes antallet af pulser ogtiden mellem hver puls. Derefter sendes pulserne til I/O-kortet. Efter dette er gjort, startertråden forfra, og venter til semaforen sem_step er talt én op.

Efter koden er skrevet, skal der foretages en test af denne, dette sker i følgende afsnit.

4.5.3 Test af stepmotorstyring

I appendiks J ndes en testbeskrivelse til modulet styring af stepmotor. Kravene, som moduletskal overholde, er:

1. Pulsen tpuls, der sendes til driverkredsen, skal være lav i mindst 0,5 µs.

2. Antallet af pulser skal afhænge af X-koordinatet.

3. Retningen skal sættes lig 1 for X>0 og 0 for X<0.

Det første krav testes ved at måle tiden pulserne er lave. Tiden er målt til at være 1 ms.

Krav 2 testes ved at indtaste tallene i venstre kolonne af tabel 4.5, der repræsenterer pixels.

33

4 Software

Indtastet værdi Antal pulser

0 0

17 1

34 2

51 3

68 4

85 5

102 6

119 7

136 8

153 9

Tabel 4.5: Antallet af pulser afhængig af den indtastede værdi.

I kolonnen til højre er antallet af pulser der blev genereret. Ud fra testbeskrivelsen fremgår det,at det korrekte antal pulser blev genereret.

Krav 3 testes ved at indtaste en værdi større end 17 og styresignalet retning blev målt til 5 V.Herefter blev en værdi mindre en -17 indtastet, og styresignalet retning blev målt til 0 V.

I tabel 4.6 opsummeres kravene og deres accept.

Krav Accept

Pulslængde !

Antal pulser !

Styresignalet retning !

Tabel 4.6: Opsummering af testresultatet til styring af stepmotor.

4.6 Styring af DC-motor

Motorstyringen af DC-motoren er den del af systemet, der omsætter de vertikale koordinatertil den spænding DC-motoren skal bruge for at ytte kameraet til den ønskede position. Det erbestemt i afsnit 2.1, at den røde hjelm skal være i midten af billedet. Derfor ønskes det, at efterhver opdatering har DC-motoren drejet kameraet ind, så den røde hjelm er i midten. I detteafsnit beregnes systemets overføringsfunktion og den dertilhørende software.

34

4.6. Styring af DC-motor

4.6.1 Krav til DC-motorstyring

Kravene til styringen af DC-motoren er:

1. Skal omsætte Y-koordinaterne til en udgangsspænding.

2. Ved koordinat i midten skal 0 V sendes ud.

4.6.2 Design af DC-motorstyring

Betragtes den vertikale del af systemet, kan det illustreres med følgende gur:

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Hastighedsregulator

Positionsregulator D/APositionsreference ∑ G(s) Position

Sensor/ A/D

Ke+

-

D/APositionsreference ∑ G(s) Position

Kamera

Ke+

-D(z)

D/APositionsreference ∑ Ke+

-D(z)

[V][V][-][px]

[px]

[Rad]

Kg

G(s) Position

Kamera

Kg

[Rad]

Figur 4.8: Styringen af den vertikale akse betragtet som et tilbagekoblingskredsløb.

Hvor:

• D(z) er regulatoren.

• D/A er I/O-kortet, der konverterer signalet fra digitalt til analogt.

• Ke er eekttrinnet.

• G(s) er motorens overføringsfunktion.

• Kg er motorens gearing.

• Positionsreferencen er centrum af billedet.

• Kameraet består af både kameraet billedbehandlingssoftwaren.

På guren er det udelukkende positionen der tilbagekobles gennem kameraet. Det er også muligtat tilbagekoble hastigheden af motoren samt accelerationen. Tilbagekobling af hastigheden gørdet muligt at regulere motorens hastighed, hvis der bliver tilført fejl til systemet, der kan æn-dre denne. En tilbagekobling af accelerationen kan direkte regulere motorens acceleration. Detvurderes, at regulering af positionen er nok til regulering af systemet.

Det ønskes at justere motoren på plads mellem hver opdatering. En type regulator der netop gørdette, er en dead beat regulator. Ideen bag denne er at påvirke motoren med netop nok konstantspænding til at ytte motoren på plads mellem hver sample. Dette medfører, at motoren bliverpåvirket af mange spændingsskift og kameraets bevægelser bliver derfor ikke så ydende.

35

4 Software

Overføringsfunktionen for regulatoren er systemets eneste ukendte blok. D/A konverteren er I/Okortet, der omsætter tal til en spænding. I/O-kortets analoge udgang spænder fra -10 V til 10 Vog har en opløsning på 12bit, dvs 4096 inddelinger, med lineær stigning, med 0 som -10 V og4095 som 10 V. Dermed svarer en stigning på 1 i bitmønsteret til en stigning på:

D/A =∆Y∆X

=20 V4095

≈ 4, 884 mV

Eekttrinnet, Ke, er en konstant i overføringsfunktionen og designet i afsnit 3.3. Overførings-funktion Ke er 1/5. Motorens gearing Kg har en overføringsfunktion på 1/18,75.

Kameraet og billedbehandlingen omsætter vinklen i radianer til en fejl i pixels. I appendiks Ber kameraets vertikale dækningsområde opgivet til 12,84 med en opløsning på 240 pixels. Dettegiver:

240 px12, 84

= 18, 7px

grad

Dette omsættes til radianer og giver kameradelen følgende overføringsfunktion:

H =18, 72·π rad360

= 1071pxrad

(4.4)

Motorens overføringsfunktion er hentet fra appendiks E. Dermed opstilles et diagram over densamlede overføringsfunktion med enheder mellem de enkelte blokke. Diagrammet er opsat på gur4.9. På baggrund af den ønskede overføringsfunktion samt de opstillede overføringsfunktioner forblokkene, kan regulatoren dermed bestemmes, dette gøres i appendiks F.

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Hastighedsregulator

Positionsregulator D/APositionsreference ∑ G(s) Position

Sensor/ A/D

Ke+

-

D/APositionsreference ∑ G(s) Position

Kamera

Ke+

-D(z)

D/A∑ Ke+

-D(z)

[V][V][-][px]

[px]

[Rad]

Kg

G(s)

H

Kg

[Rad]R(z)

E(z) U(z)Y(s)

Figur 4.9: Tilbagekoblingssystemet med enheder mellem de enkelte blokke.

I formel F.16 er DC-regulatoren i sin diskrete form U(z) fundet til:

U(z) = 7, 8894 · E(z)− 0, 0561 · U(z) · z−1 (4.5)

Dermed ses det, at den fejl kameraet registrerer skal justeres med en faktor 7,89, mens udgangenaf blokken fra sidste sampling justeres med en faktor -0,056 og lægges til. Det sidste, der skal

36

4.6. Styring af DC-motor

tages højde for, inden softwaren kan designes, er motorens tørfriktion. I appendiks D er denspænding, der skal påtrykkes motoren for at undertrykke tørfriktionen, bestemt til 0,394 V.Denne spænding skal lægges til udgangsspændingen, hvis motoren kører med uret, og den skalsubtraheres, hvis motoren kører mod uret. Spændingen omregnes til den værdi, der bruges i D/Ablokken

Ff =394 mV4, 88 mV

= 80, 7

Da der anvendes heltal i C-koden, rundes værdien op til 81.

Dernæst kan softwaren designes til styring af DC-motoren.

Realiseret C-kode

Styringen af DC-motoren er realiseret som en tråd, der kan afvikles parallelt med styringen afstepmotoren.

void *DC(void *aparm)

2 while(1)

sem_wait(&sem_DC);

4 /*Retningen sættes til 0 eller 1*/

if(y>0)

6 yretning=1;

8 if(y<0)

yretning=0;

10

U=((y*DChaeld)-(y1*DCregu));

12 /*Kontrollerer om endestop er aktiveret*/

stopy=endestopy();

14 /*Er endestop ikke aktiveret sendes en spænding til DC motor

afhængig af y koordinat*/

if (yretning!=stopy)

16 if(yretning==1)

U_ver=U+nulpunkt+friktion; /*Hvis vinklen er 0 skal 0V

skrives på kortet svarende til 2047*/

18

if(yretning==0)

20 U_ver=U+nulpunkt-friktion;

22 comedi_data_write(it, 1, 0, 0, aref, U_ver); /*Der skrives til

en data port på I/O-kortet. Udgang nr. 22*/

y1=U;

24

26

Listing 4.5: Kode til styringen af DC-motoren.

37

4 Software

I koden kontrolleres først hvilken retning motoren kører. Dermed kan det bestemmes, om spæn-dingen, der kompenserer for tørfriktionen skal adderes eller subtraheres. I linie 11 deneres regula-toren U hvor DChaeld er de 7,89 og DCregu er sat til 0,056. Dernæst kontrolleres om endestoppeneer aktiveret, og hvis ikke, skriver programmet den beregnede spænding ud hvor der er taget højdefor nulpunktet og friktionen. Dernæst gemmes den beregnede spænding så den kan benyttes inæste sample.

4.6.3 Test af DC-motorstyring

Motorstyringen til DC-motoren testes med dele af den fungerende C-kode. Måling på I/O kortethar vist at nulpunktet er forskudt til 2024. Denne værdi benyttes i softwaren til at forskydespændingen så en indgangsværdi på nul også medfører spænding på nul. Derudover er udgangs-spændingen på kortet målt og kravet er overholdt når I/O-kortets usikkerhed tages i betragtning.I tabel 4.6 opsummeres kravene og deres accept.

Krav Accept

Y-koordinat til udgangsspænding !

Udgang = 0 V !

Tabel 4.7: Opsummering af testresultatet til styring af DC-motor.

4.7 I/O-kort

Kommunikationen mellem software og hardware foregår via et I/O-kort af typen NI PCI-6024E[Instruments, 2005]. Enheden består af et PCI-kort, der monteres i Linux-PC'en, samt et eksterntI/O-kort. Disse er forbundet via et 68-bens adkabel.

Hardwaren, der styres af eller giver data til softwaren på PC'en, består af to motorer, samt reendestop, gur 4.10.

Step-motor

DC-motor

Linux-PCI/O-kort

Endestop

Figur 4.10: Illustration af de eksterne tilslutninger til I/O-kortet.

38

4.7. I/O-kort

Softwaren på Linux-PC'en skal styre de to motorer til justering af kameraets position vha. af treudgange og re indgange på I/O-kortet. Stepmotoren styres vha. et clock- og et retnings-signalfra to digitale udgange, der forbindes til stepmotorens driverkreds, afsnit 3.2. Til DC-motorenanvendes en analog udgang, der forbindes til et eekttrin, afsnit 3.3. De re endestop tilslutteshver til en digital indgang på I/O-kortet, afsnit 3.4.

Der opstilles ikke krav til I/O-kortet, da projektgruppen ikke har andre kort til rådighed, ogkortets specikationer er fastsat af fabrikanten. Der foretages i stedet en analyse af kortet, hvorsyntaksen der anvendes i C-koden, til kommunikation til I/O-kortet, beskrives.

4.7.1 Analyse af I/O-kort

Til kommunikation mellem software og hardware på I/O-kortet anvendes COMEDI. COMEDIer drivere til et Linux-miljø, der giver mulighed for at genkende det anvendte PCI-kort samtkortets specikationer. Herved kan der etableres forbindelse mellem et C-program og kortets ind-og udgange vha. af COMEDI kommandoer. [Hess, 2006]

For at etablere en forbindelse mellem et C-program og eksternt hardware skal de fysiske ind- ogudgange på I/O-kortet adresseres i C-programmet. De enkelte udgangstyper som f.eks. analogeudgange eller digitale ind- og udgange er opdelt i subdevices, hvor de enkelte subdevices har etantal kanaler.

De kanaler der skal etableres forbindelse til er:

Navn Type Ind-/udgang Subdevice Kanaler

Analog udgang til DC-motor Analog udgang 22 1 0

Clock Digital I/O 52 2 0

Retning Digital I/O 17 2 1

Venstre horisontale endestop Digital I/O 49 2 2

Højre horisontale endestop Digital I/O 47 2 3

Nedre vertikale endestop Digital I/O 19 2 4

Øvre vertikale endestop Digital I/O 51 2 5

Tabel 4.8: Liste over de ind- og udgange der anvendes på I/O-kortet samt deres adresser.

Opsætning af I/O-kort i C

Til kommunikation mellem C-programmet og de enkelte ind- og udgange inkluderes:

<comedilib.h>

Herved stiller COMEDI en række kommandoer til rådighed i C, der giver mulighed for at mod-tage eller sende til de enkelte porte på I/O-kortet. Inden disse kommandoer kan bruges skalinformation om det anvendte kort indlæses til programmet, hvilket gøres ved:

39

4 Software

comedi_t *it;

2 lsampl_t data;

4 it=comedi_open("/dev/comedi0");

Kommunikation til de digitale ind- og udgange

For at skrive enten et logisk høj eller lav værdi til en digital udgang, skal denne port først opsættessom en ind- eller udgang. Til dette anvendes komandoen:

int comedi_dio_config(comedi_t * device, unsigned int subdevice, unsigned

int channel, unsigned int direction);

Den sidste parameter unsigned int direction angiver om en port opsættes som indgang ellerudgang, hvilket gøres vha. COMEDI\_OUTPUT eller COMEDI\_INPUT.

Efter den ønskede port er sat op, kan der skrives til den med kommandoen:

1 int comedi_dio_write(comedi_t * device, unsigned int subdevice, unsigned

int channel, unsigned int bit);

Ønskes der f.eks. at sende et logisk høj signal til port nr. 17, er syntaksen:

1 comedi_dio_config(it, 2, 1, COMEDI_OUTPUT);

3 comedi_dio_write(it, 2, 1, 1);

Kommunikation til den analoge indgang

De analoge udgange kan der skrives direkte til vha. kommandoen:

1 int comedi_data_write(comedi_t * device, unsigned int subdevice, unsigned

int channel, unsigned int range, unsigned int aref, lsampl_t data);

Parameteren Range sættes til 0 jf. [Hess, 2006].

Parameteren unsigned int aref angiver referencepunktet til spændingen der sendes ud. Da derønskes en reference i henhold til stel, skal denne parameter sættes til AREF\_GROUND.

Ønskes der at sende 10 V ud af den analoge udgang nr. 22 er syntaksen:

1 comedi_data_write(it, 1, 0, 0, AREF_GROUND, 4095);

40

4.8. Endestop

4.8 Endestop

Til at registrere, hvornår kameraet er placeret i en yderposition, anvendes re mekaniske endestop.De elektriske forbindelser til de re endestop er beskrevet i afsnit 3.4 side 17.

Indgangene, der skal læses fra software-siden, er følgende:

• Venstre horisontale endestop

• Højre horisontale endestop

• Nedre vertikale endestop

• Øvre vertikale endestop

4.8.1 Krav til endestop

Er et endestop påvirket, skal det ikke være muligt et dreje kameraet yderligere i den spærrederetning.

Realiseret C-kode

I nedenstående kode er endestoppene i horisontal retning realiseret.

1 comedi_t *it; /*Til opsætning af kortet i COMEDI*/

lsampl_t hojre, venstre;

3 int aref = AREF_GROUND;

5 int endestopx(void)

comedi_data_read(it, 2, 2, 0, aref, &venstre); /*Indgang nr 49 -

Kontakt der bryder når kameraet er drejet helt til venstre*/

7 comedi_data_read(it, 2, 3, 0, aref, &hojre); /*Indgang nr 47 - Kontakt

der bryder når kameraet er drejet helt til højre*/

9 //printf("Venstre %d og højre %d\n", v, h);

if(venstre==1)

11 printf("Motor må ikke dreje til venstre.\n");

return 0;

13

15 if(hojre==1)

printf("Motor må ikke dreje til højre.\n");

17 return 1;

19

return 2;

21

Listing 4.6: Realisering af endestop i horisontal retning.

41

4 Software

Funktionen endestopx læser fra I/O-kortet, for at nde ud af, om et af endestoppene er aktiveret,og kan returnere tre værdier. Der returneres 0, når det venstre endestop er aktiveret, 1 når dethøjre endestop er aktiveret og 2 når ingen af endestoppene er aktiveret. Endestoppene i denvertikale retning er realiseret på samme måde.

Herefter er det muligt at foretage en test på de 4 endestop. Dette foretages i næste afsnit.

4.8.2 Test af endestop

I appendiks I testes, at alle re endestop stopper henholdsvis DC-motoren og stepmotoren, nårde aktiveres.

Opsummering af de testede krav kan ses i tabel 4.9.

Krav Accept

Stepmotor stopper !

DC-motor stopper !

Tabel 4.9: Accept over kravene for de re endestop.

42

Kapitel 5Accepttest

Accepttesten udføres for at vericere de opstillede krav. Testen udføres på baggrund af accept-testspecicationen, appendiks A.

5.1 Optagelse

Kameraet skal optage med de korrekte specikationer. Dernæst skal kameraets synsfelt bestem-mes, hvorefter systemet testes ved at følge et rødt objekt på en afstand mellem 10 til 20 meter.

Krav Accept

Synsfelt 3 m x 2 m i 10 m afstand %

Følge et objekt på 10 til 20 m afstand Ikke testet

PAL-signal med 25 Hz !

Opløsningen er 320x240 !

Tabel 5.1: Accept af kravene for optagelse.

5.2 Billedbehandling

Programmet i Eyesweb eksekveres og er sat til at vise to vinduer. Det ene viser et billede frakameraet, og det andet viser et billede, hvor den røde farve er skilt ud. I det billede, hvor denrøde farve er skilt ud, svarer rød til hvid og de resterende farver svarer til sort. Et koordinatsætdannes på baggrund af det røde objekts massemidtpunkt. Dette koordinatsæt sendes over etTCP/IP netværk.

43

5 Accepttest

Krav Accept

Udskillelse af den røde farve !

Koordinater på massemidtpunkt !

Overførsel af koordinater !

Tabel 5.2: Accept af kravene for billedebehandling.

5.3 Positionsregulering

Her testes krav til systemets regulering af kameraets position. Til testen er apparatur i tabel 5.3anvendt.

Apparat Mærke Model Placering AAU nr.

Strømforsyning Delta Elektrinika Power Supply E 030-3 B1-101-E-5 33136

Strømforsyning Delta Elektrinika Power Supply E 030-3 B1-101-E-4 33132

Oscilloskop Agilent 54621A B1-101-G-4 33852

Tabel 5.3: Apparaturliste til måling på DC-motoren.

Horisontal positionsregulering

Motorerne frakobles I/O-kortet, så kameraet ikke bevæger sig i forhold til testobjektet, der yttestil yderpunkterne i billedets venstre og højre side. I/O-kortets udgange måles med oscilloskopet.Ved testen opnås følgende resultater:

Krav Accept

Objekt i yderposition ⇒ 9 pulser per 40 ms. !

Objekt føres mod midten ⇒ antal pulser falder. !

Objekt i højre side ⇒ retningsspænding = 5 V !

Objekt i venstre side ⇒ retningsspænding = 0 V !

Tabel 5.4: Accept af kravene for regulering i horisontal retning.

Vertikal positionsregulering

Der måles på I/O-kortets udgang til eekttrinnet, mens testobjektet bevæges op og ned i billedet.DC-motoren er ikke tilkoblet eekttrinnet, så kameraet ikke drejes under testen.

44

5.4. Motorstyring

Krav Accept

Objekt nederst ⇒ udgang = -5,0 V ±10%. !

Objekt øverst ⇒ udgang = 5,0 V ±10%. !

Objekt i midten ⇒ udgang = 0 V ±0,5 V. !

Tabel 5.5: Accept af kravene for regulering i vertikal retning.

Der måles henholdsvis -4,75 V og 4,95 V. Ved billedets midtpunkt måles 2 mV.

5.4 Motorstyring

Alle krav til motorstyring er testet i appendiks I. Følgende resultater er opnået:

Krav Accept

Stepmotor drejes ⇒ endestop aktiveres. !

DC-motor drejes ⇒ endestop aktiveres. !

Horisontal vinkelbegrænsning = 180 ± 10%. !

Vertikal vinkelbegrænsning = 90 ± 10%. !

Tabel 5.6: Accept af kravene for motorstyring.

45

Kapitel 6Konklusion

I dette projekt er der lavet et automatisk overvågningskamera. Formålet med det automatiskeovervågningskamera er, at det autonomt skal følge en gokart på en bane. Det er valgt at kameraetskal følge en rød hjelmfarve i stedet for eksempelvis en kontur.

Der er udarbejdet en kravspecikation for systemets funktionaliteter på baggrund af problem-analysen. Derefter er systemet inddelt i de re blokke, optagelse, billedbehandling, positionsre-gulering og motorstyring. Efterfølgende er der opsat grænseader mellem blokkene og krav tildisse, hvorefter de er designet og testet.

Til justering af kameraet benyttes to typer motorer. En stepmotor for den horisontale reguleringog en DC-motor for den vertikale. Der er valgt to typer af indlæringsmæssige grunde. Til step-motoren er der konstrueret et driverkredsløb, og for DC-motoren er der konstrueret et eekttrin.For at begrænse motorernes bevægelsesområde benyttes re endestop. Kredsløbene og de reendestop opfylder de opstillede krav.

Da der anvendes en DC-motor laves der en analyse af denne for at klarlægge dens parametre.Med motorens parametre opstilles en overføringsfunktion for motoren, der anvendes ved design afregulatoren. De fundne motorparametre stemmer overens med parametrene opgivet i databladet.

Softwaren i systemet er opdelt og eksekveres på to PC'er. Billedbehandlingen foregår i program-met EyesWeb på en Windows-PC, og positionsreguleringen eksekveres på en Linux-PC. Kommu-nikationen mellem PC'erne foregår via en TCP/IP netværksforbindelse. Opdateringshastighedener målt til 23,8 Hz, hvilket er 1,2 Hz under designkravet.

Billedbehandlingsprogrammet EyesWeb er i stand til at udskille rød farve og beregne massemidt-punktet af denne. Dette massemidtpunkt udsendes som koordinater på netværket og modtagespå linux-PC'en, der laver reguleringen.

Fra projektgruppens side er det valgt, at massemidtpunktet altid skal være i midten af billedet, ogkorrigeringen skal være foretaget inden den næste sample modtages fra billedbehandlingen. ForDC-motoren anvendes derfor en dead beat-regulator. Det har ikke været muligt i praksis at testeom fejlen er korrigeret væk inden næste sample, men simuleringen indikerer at kravet overholdesfor DC-motoren. Reguleringen af stepmotoren fungerer ved pulsstyring, og det er vericeret at

47

6 Konklusion

disse pulser sendes til stepmotoren. Dermed reguleres stepmotoren mellem hver sample, hvorvedkravet til stepmotoren overholdes.

Det automatiske overvågningskamera er ikke testet på en gokartbane. Derimod er det testeti et laboratorium med et rødt objekt med en diameter på 7 cm. Synsfeltet er testet på 10m og overholder ikke kravet til at kunne optage et område på minimum 3x2 m. Testområdetsbegræsninger har medført, at kameraet ikke er blevet testet med et korrekt objekt på 10 til 20 m. Istedet er testen udført med en mindre linse i en afstand op til ca. 5 m, hvor det røde objekt følges.Kameraet er endvidere i stand til at følge objektet inden for de fastsatte vinkler. Da kameraet eri stand til at følge et objekt, virker kommunikationen mellem de to PC'er, positionsreguleringenog motorstyring.

Det samlede system er i stand til at følge et rødt objekt. Størrelsen af billedet der optages, samtreguleringsfrekvensen er begge mindre end ønsket. Dette har dog ingen praktisk betydning forfunktionen af systemet. Ved test med en mindre linse og på kortere afstand fungerer systemetefter hensigten.

48

Kapitel 7Perspektivering

I dette afsnit beskrives forslag til udvidelser overvejet af projektgruppen. De tre forslag omhandlerudgangsposition, billedbehandling og optagelse.

Ved opstart eller under optagelse skal kameraet være i stand til at returnere til en forudbestemtposition. Da der lmes på en gokartbane forventes det, at startpositionen er den samme hvergang. For at få et referencepunkt, drejes kameraet til et horisontalt og et vertikalt endestop,hvorfra en regulering til udgangsposition kan foretages. Hvis gokarten forsvinder ud af billedetunder drift, kan kameraet ligeledes returnere til den forudbestemte position. Dette er praktisk,da det vides, hvor på banen gokarten igen kommer ind i kameraets synsfelt.

I det realiserede system, anvendes to PC'er, til hhv. billedbehandling og positionsregulering. Vedat implementere begge processer i én PC reduceres omkostninger og pladskrav. Dette kunne f.eks.realiseres ved at implementere billedbehandlingen i C-kode. Til dette skal der udvikles algoritmertil lokalisering af den røde farve og beregning af massemidtpunkt.

I projektet er der afgrænset fra at gemme videosignalet. Bruges systemet på en gokartbane, skaloptagelserne kunne gemmes, hvilket medfører en øget belastning af PC'en. For en acceptabelbilledkvalitet er billedopløsning, fokusering og zoom væsentlige parametre. Systemet kører numed en opløsning på 320x240 pixels. En højere opløsning vil give et mere detaljeret billede,men vil samtidig øge datamængden, der skal behandles. Ønskes overvågningsområdet udvidet,så gokarten kan følges på en større afstand, er det fordelagtigt at tilføje autofokus og zoom påkameraet. For at realisere zoom-funktionen skal der skrives en C-funktion til styring af denne.

Hermed er en række tiltag beskrevet, der kan øge anvendelsemulighederne for det automatiskeovervågningskamera.

49

Litteraturliste

[Danbit, 2006]Danbit: Danbit. , Danbit, Værkstedsvej 39-41, DK-4600 Køge, 2006URL: http://www.danbit.dk/produkter/2307.phtmlNote: Internetside

[Design, 2006]Security Design: securityideas.com. , PO Box 300, 1130 Main Street, Leeds, NY 12451, 2006URL: http://www.securityideas.comNote: Internetside

[Hall, 2006]Brian Hall: Beej's Guide til Netværksprogrammering. , 2006URL: http://retel.dk/bgnet/bgnet.htmlNote: Internetside

[Hess, 2006]David Schleef Og Frank Mori Hess: Comedi driver. , 2006URL: http://www.comedi.org/documentation.htmlNote: Software

[Instruments, 2005]National Instruments: NI 6024E.National Instruments, 2005URL: http://www.ni.comNote: Datablad

[Instruments, 2000]Texas Instruments: TLE2071.Texas Instruments Incorporated, Post Oce Box 655303, Dallas, Texas 75265, 2000Note: Datablad

[Lab, 2006]InfoMus Lab: Eyesweb.InfoMus Lab, DIST - University of Genova, Viale Causa 13, I-16145 Genova, Italy, 2006URL: http://www.eyesweb.orgNote: Software

50

[Motor, 2006]Maxon Motor: Maxon DC-Motor RE25-10.Maxon Motor, Compower, Smedeholm 13 A, DK-2730 Herlev, 2006Note: Datablad rekvireret fra Compower DK per fax +45 44926602

[SONCEBOZ, 2006]SONCEBOZ: SONCEBOZ 6500-20.SONCEBOZ, 2006Note: Datablad

[STMicroelectronics, 2001a]STMicroelectronics: L297.STMicroelectronics, 2001URL: http://www.st.comNote: Datablad

[STMicroelectronics, 2001b]STMicroelectronics: L298.STMicroelectronics, 2001URL: http://www.st.comNote: Datablad

[Thomson, 2000]SGS Thomson: BDX33/34.SGS Thomson Microelectronics, 2000URL: http://www.st.comNote: Datablad

[Wikipedia, 2006]Wikipedia: Wikipedia. , 2006URL: http://en.wikipedia.org/wiki/PALNote: Internetside

Appendiks AAccepttestspecikation

Formålet med accepttestspecikationen er at klarlægge, hvorledes accepttesten skal udføres. Spe-cikationen tager udgangspunkt i de re opstillede blokke:

• Optagelse

• Billedbehandling

• Positionsregulering

• Motorstyring

For hver enkelt blok beskrives fremgangsmåden for testen samt det ønskede resultat. Alle spæn-dingsangivelser er med en tolerence på ± 10%.

Det røde objekt, der anvendes til testene, består af en rød cirkel på en hvid baggrund. Cirklenhar en diameter på 7 cm.

Optagelse

Måden optagelse skal testes på, opdeles i følgende to dele.

Identicér objekt

1. Et rød objekt bevæges ind i kameraet synsfelt i en afstand af 10 m.

2. På en afstand af 10 m måles billedets bredde og højde.

3. Objektet yttes væk fra kameraet i en afstand mellem 10 og 20 m.

A1

A Accepttestspecikation

Accept:I en afstand af 10 m er billedets synsfelt 3 m i bredden og 2 m i højden.Kameraet følger objektet i en afstand mellem 10 m og 20 m.

Videoformat

1. EyesWeb indstilles til at modtage et PAL-signal med 24-bit RGB-farveopløsning, 25 billederper sekund og en opløsning på 320x240 pixels.

Accept:Billedet, med ovenstående specikationer, vises korrekt i EyesWeb.

Billedbehandling

1. EyesWeb skal lokalisere den røde farve.

2. Der laves et koordinatsæt med massemidtpunktet af den røde farve.

3. Koordinatsættet sendes ud på en TCP/IP netværksforbindelse.

Accept:Et vindue i EyesWeb viser den røde farve i konstrast til de øvrige farver.Et vindue i EyesWeb viser massemidtpunktets koordinatsæt.Koordinatsættet modtages på Linux-PC'en.

Positionsregulering

Dette punkt deles op i horisontal regulering og vertikal regulering.

Horisontal positionsregulering

1. Driverkredsløbet til stepmotoren frakobles Linux-PC'ens I/O-kort.

2. Det røde objekt føres ud til den ene side af billedet.

3. Med et oscilloskop måles antal pulser per 40 ms fra I/O-kortet.

4. Med et oscilloskop måles retningsspændingen fra I/O-kortet.

5. Det røde objekt føres ud til den anden side af billedet, og punkt 3 og 4 gentages.

Accept:Når objektet er i yderposition måles der 9 pulser per 40 ms.Antallet af pulser falder jo tættere objektet kommer midten af billedet.Når objektet er i højre side af billedet, er retningsspændingen 5 V.Når objektet er i venstre side af billedet, er retningsspændingen 0 V.

A2

Vertikal positionsregulering

1. Eekttrinnet frakobles Linux-PC'ens I/O-kort.

2. Det røde objekt føres ned i bunden af billedet.

3. Spændingen til styringen af DC-motoren måles.

4. Objektet føres mod toppen af billedet.

Accept:Når objektet er i bunden af billedet er spændingen ud af IO-kortet -5,0 V ±10%.Når objektet er i midten af billedet er spændingen ud af IO-kortet 0 V ±0,5 V.Når objektet er i toppen af billedet er spændingen ud af IO-kortet 5,0 V ±10%.

Motorstyring

Horisontal motorstyring

1. Bevæg et rødt objekt fra den ene side til den anden, så begge horisontale endestop aktiveres.

2. Vinklen mellem de to positioner måles.

Accept:Begge endestop aktiveres.Vinklen er 180 ±10%.

Vertikal motorstyring

1. Bevæg et rødt objekt så kameraet bevæger sig fra vandret position til det peger nedad, såbegge endestop aktiveres

2. Vinklen mellem de to positioner måles

Accept:Begge endestop aktiveres.Vinklen er 90 ±10%.

A3

Appendiks BValg af kamera

Da en hurtig overføring af billede fra kamera til computer er nødvendig, vælges et analogtkamera fra danbit.dk [Danbit, 2006]. Kameraet sender et analogt PAL-signal til computeren, somskal digitalisere signalet med et tv-kort. Opdateringshastigheden for PAL-video er 25 billeder persekund. Den analoge overføring gør, at der ikke bruges tid på billedbehandling i kameraet.Forsinkelsen fra kameraet til computeren, hvor billedbehandlingen foretages, er målt til 40 ms.I computeren anvendes et WinTV-PVR-150 tv-kort [Instruments, 2005].Kravet til billedområde, som er 3x2 m ved en afstand på 10 m, opfyldes i næste afsnit ved valgaf linse til kameraet.

Linse

Linsen til kameraet bestemmer, hvor stort et område der kommer med i billedet. Størrelsen aflinsen beregnes efter følgende formler, [Design, 2006]:

fv = v · DV

[m] (B.1)

fh = h · DH

[m] (B.2)

hvor: fv er linsestørrelse beregnet efter ønsket vertikal længde af motiv [m]

fh er linsestørrelse beregnet efter ønsket horisontal længde af motiv [m]

V er vertikal længde af motiv [m]

H er horisontal længde af motiv [m]

D er afstand fra kamera til motiv [m]

v er vertikal længde af sensor [m]

h er horisontal længde af sensor [m]

ah er den horisontale billedbredde [grader]

av er den vertikale billedhøjde [grader]

B1

B Valg af kamera

Motiv

Sensor

D

V

H

v

h

ah

Figur B.1: Parametre til beregning af størrelsen af linse.

Anvendelse af parametrene er illustreret på gur B.1.

Størrelsen af linsen beregnes først for en afstand på 10 m. Kameraet har en 4:3 linse med endiagonal på 1/3", hvilket svarer til 4,8x3,6 mm.

fv = 3, 6 mm · 10 m2 m

= 18 mm

fh = 4, 8 mm · 10 m3 m

= 16 mm

Da kravene er minimumskrav, bliver den mindste linse bestemmende. Derfor vælges 16 mm linse,som giver et større billedområde end en 18 mm linse.Billedområdet for henholdsvis 10 og 20 m bliver derfor:

V10m = 3, 6 mm · 10 m16 mm

= 2, 25 m

H10m = 4, 8 mm · 10 m16 mm

= 3 m

V20m = 3, 6 mm · 20 m16 mm

= 4, 5 m

H20m = 4, 8 mm · 20 m16 mm

= 6 m

Vinklen ah og den tilsvarende vertikale vinkel av bliver:

ah = 2 · tan−1

(32

10

)= 17, 06

av = 2 · tan−1

(2,252

10

)= 12, 84

B2

En væsentlig betragtning er hvor meget styrthjelmen fylder i billedet. Et for lille område kanresultere i, at billedbehandlingssoftwaren ikke kan detektere hjelmen. Kravet til området bliveret skøn, da det ikke er deneret før den endelige afprøvning. Det antages, at en styrthjelm erminimum 25x25 cm. Hjelmens andel af billedet, for henholdsvis 10 og 20 m, bliver dermed:

Aprocent10 =25 cm · 25 cm · 100

2, 25 m · 3 m= 0, 93 %

Aprocent20 =25 cm · 25 cm · 100

4, 5 m · 6 m= 0, 23 %

Da der anvendes et analogt kamera, bestemmes opløsningen af tv-kortets indstilling. Da opløs-ningen har indydelse på databehandlingstiden, er en forholdsvis lav opløsning at foretrække.Der skal derfor laves en vurdering af, hvor stor en opløsning der er nødvendig for at identicerehjelmen. Den mindste opløsning, kortet kan køre med, er 320x240 pixels. Ved denne opløsningfylder hjelmen i pixels for henholdsvis 10 og 20 m:

Apixels10 = (320 · 240) px · 0, 93 % = 711 pxApixels20 = (320 · 240) px · 0, 23 % = 178 px

De 178 pixels for en afstand på 20 m anses for tilstrækkelig til, at hjelmen kan detekteres. Derforbestemmes det, at systemets opløsning skal være 320x240 pixels.

B3

Appendiks CVinkelberegning

Kameraet skal være i stand til at følge en gokart 10 m væk, der kører med 50 km/t. Da vinklenkameraet skal dreje, ikke er ens per tidsenhed ved center som i yderposition, udregnes worst case.Dermed udregnes vinklen kameraet skal bevæge sig per opdatering. Først udregnes vinklen forden horisontale retning og derefter for den vertikale.

Horisontal vinkel

Vinklen beregnes ud fra nedenstående gur. Den største vinkel kameraet skal tilbagelægge somfunktion af gokartens hastighed er fra −θh til θh. Vinklen udregnes fra 0 til θh og multipliceresderefter med 2.

Kamera

t=0 s

10 m

t=20 ms

l

θh

Figur C.1: Illustration af en gokart, der kører forbi kameraet i en lige linie vinkelret på kameraet.

C1

C Vinkelberegning

Afstanden gokarten bevæger sig på en opdatering er:

v = 50kmt

= 13, 9ms

l = 13, 9ms· 20 ms = 0, 278 m

I en afstand af 10 m og en tilbagelagt afstand på 0,278 m skal kameraet dreje

θh = tan−1

(0, 278

10

)= 1, 59

For at få den fulde vinkel ganges med to. Derefter ganges med antal opdateringer per sekund.Dermed skal kameraet kunne dreje 79,6 grader/s.

Vertikal vinkel

Kameraet skal monteres på en væg, og det er derfor nødvendigt at beregne, hvor meget kameraetskal kunne dreje i den vertikale retning. Gokarten er bestemt til at skulle køre i en afstand mellem10 m og 20 m. Højden, hvormed kameraet er monteret, har væsentlig betydning og det er bestemtat den maksimale monteringshøjde er 3 m.

Der tages udgangspunkt i en hastighed på 13,9 m/s. Da kameraet ikke vil dreje lige meget peropdatering ved 20 m som ved 10 m, regnes afstanden per opdatering ved 10 m. Herefter ndesstrækningen, der tilbageligges på en opdatering.

l = 13, 9ms· 40 ms = 0, 556 m

Figur C.2 illustrerer de vinkler der beregnes.

Kamera

10 m

θ2

θ1 θ3

10,556 m

3 m

Figur C.2: Illustration til beregning af vinklen kameraet skal dreje, når gokarten kører fra 10 til 20 m med 50km/t og kameraet er monteret i en højde af 3 m.

Først beregnes θ1 til:

θ1 = tan−1

(10 + 0, 556

3

)= 74, 13

C2

Herefter beregnes θ2 til:

θ2 = tan−1

(103

)= 73, 30

og dierencen mellem θ1 og θ2 er vinklen kameraet skal dreje.

θ3 = 74, 13− 73, 30 = 0, 83 (C.1)

Vinklen kameraet skal dreje per opdatering er 0,83, og dette svarer til 20,8 grader/s.

C3

Appendiks DParametre for DC-motoren

For at klarlægge den benyttede DC-motors parametre udføres en målejournal. Parametrene, derønskes fundet, er motorens terminalmodstand Ra, terminalinduktans La, motorkonstanten kφ,samt de to friktionskoecienter C og Mt og motorens inertimoment J . Målingerne er foretag-et med gear påmonteret, men vinkelhastigheden der måles er på motorakslen. Parametrene ernødvendige for at kunne udføre en modellering af DC-motoren.

I tabel D.1 er de benyttede apparater listet.

Apparat Mærke Model Placering AAU nr.

Strømforsyning Delta Elektrinika Power Supply E 030-3 B1-101-E-5 33136

Strømforsyning Delta Elektrinika Power Supply E 030-3 B1-101-E-4 33132

Multimeter Fluke 37 B1-101-B-6 08518

Multimeter Fluke 37 B1-101-B-5 08183

Oscilloskop Agilent 54621A B1-101-G-4 33852

Tabel D.1: Apparaturliste til måling på DC-motoren.

Bestemmelse af terminalmodstand

Ved DC-spænding er der ingen spændingsfald over motorens induktans og hele spændingsfaldetligger over terminalmodstanden og motorkullene. På gur D.1 illustreres et ækvivalentdiagramfor måling af motorens terminalmodstand.

D1

D Parametre for DC-motoren

V e=0

Ra LaIa

Figur D.1: Figur over ækvivalentdiagram for måling af DC-motorens terminalmodstand.

DC-motorens aksel fastholdes og terminalerne påtrykkes en spænding. Strømmen til motorensamt spændingen over terminalerne måles. Spændingen øges gradvist og målinger gentages. Demålte spændinger og strømme forendes i tabel D.2.

Spænding [V] Strøm [A]

0,630 0,40

1,103 0,79

1,756 1,20

2,135 1,37

2,660 2,10

3,160 2,40

3,940 2,90

Tabel D.2: Tabel over de målte spændinger og strømme til beregning af terminalmodstanden.

På gur D.2 er et plot af den målte strøm som funktion af den målte spænding illustreret.

0 0.5 1 1.5 2 2.5 30

0.5

1

1.5

2

2.5

3

3.5

4

strøm [A]

spæ

ndin

g [V

]

Aflæste værdierTilnærmet linie

Figur D.2: Plot af de målte spændinger og strømme for DC-motoren.

Ud fra målingerne ndes en ligning for terminalmodstanden ved hjælp af MatLab. Terminalmod-standen ndes til 1,46 Ω.

D2

Bestemmelse af terminalinduktans

Motorens induktans ndes ved at påtrykke terminalerne et spændingsstep. Strømmen gennemmotoren måles herefter som funktion af tiden. Der benyttes samme måleopstilling som ved målingaf terminalmodstanden. For at måle strømmen, indsættes der en 1 Ω modstand i serie medmotoren og spændingsfaldet over modstanden kan nu måles med oscilloskopet. Tidskonstantenτa er tiden fra start til strømmen gennem motoren er nået 63 % og kan skrives som:

τa =La

Ra[s] (D.1)

Oscilloskopet trigges med spændingssteppet og oscilloskopets målinger udlæses i en CSV-l, somderefter importeres i MatLab. I MatLab ndes minimumsspændingen og maksimumsspændingen.Fra kurven begynder at stige, til strømmen er nået 63% af maksimum går der 43,75 µs.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

x 10-4

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6Plot af spændingen over en modstand i serie med DC -motoren

Tid [s]

Spæ

ndin

g [V

]

Målt spændingskurveMarkering af 63% af maksTau markeret på x-aksenX minimummarkering

Figur D.3: Graf af spændingen over terminalmodstanden til beregning af τ .

Dermed er τ 43,75 µs og Ra er tidligere fundet til 1,46 Ω. Da der under forsøget blev koblet en1 Ω modstand i serie skal denne lægges til Ra. Ved omskrivning af ligning D.1 ndes terminalin-duktansen til

La = τa · (Ra + 1) = 43, 75 µs · (1, 46 + 1)Ω = 107 µV

Bestemmelse af motorkonstanten

Motorkonstanten, kφ, er den konstant, der ganget med omdrejningshastigheden ω, giver denmotorgenererede spænding e.

Det samlede spændingsfald over motoren kan skrives som:

V = Ra · i + La ·di

dt+ e [V] (D.2)

D3

D Parametre for DC-motoren

Da der tilføres en konstant strøm, er der ingen spændingsfald over induktansen, og der kandermed ses bort fra denne. Herefter ser ligningen således ud:

V = Ra · i + e [V] (D.3)

Herefter opstilles en ligning for e. På gur D.1 er det illustreret hvor e indgår.

e = V −Ra · i [ (D.4)

rmV ] (D.5)

Med e beregnet kan kφ beregnes med følgende formel:

kφ =e

ω[V/(rad/s)] (D.6)

Omdrejningstælleren har en opløsning på 100 pr. omgang. Vinkelhastigheden ω kan derfor be-regnes som:

ω =f

100· 2π [rad/s] (D.7)

Resultaterne af målingerne samt beregnet ω og e forendes i tabel D.3.

V [V] I [A] Målt frekvens [Hz] ω [rad/s] e [V]

1 0,04 830 52,2 0,94

2 0,06 1820 114,4 1,91

3 0,07 2700 169,6 2,90

4 0,07 3570 224,3 3,90

5 0,08 4550 285,9 4,88

6 0,09 5450 342,4 5,87

7 0,10 6400 402,1 6,85

8 0,11 7430 466,8 7,84

9 0,12 8440 530,3 8,82

10 0,13 9320 585,6 9,81

11 0,14 10300 647,2 10,80

12 0,15 11300 710,0 11,78

13 0,15 12200 766,5 12,78

14 0,15 13160 826,9 13,78

15 0,16 14000 879,6 14,77

16 0,16 15040 945,0 15,77

17 0,16 16000 1005,3 16,77

18 0,16 17000 1068,1 17,77

19 0,16 18000 1131,0 18,77

20 0,16 18900 1187,5 19,77

Tabel D.3: Målinger til beregning af motorkonstanten kφ.

Herefter plottes e som funktion af ω i tabel D.4.

D4

0 200 400 600 800 1000 12000

2

4

6

8

10

12

14

16

18

20

omega [rad/s]

e [V

]

Aflæste værdierTilnærmet linie

Figur D.4: Plot af e som funktion af ω samt tilnærmet linie.

Ved hjælp af MatLab ndes hældningen, hvilken giver en kφ på 0,0165 V/(rad/s). Enheden kanomskrives til Nm/A.

Bestemmelse af friktionskoeecienterne

I dette afsnit ndes viskose friktionskoecienten C, og tørfriktionskoecienten Mt. Viskose frik-tionen er den faktor, der ændrer friktionsmomentet som funktion af omdrejningshastigheden.Tørfriktionen er den konstante friktion. Efter udregning af koecienterne beregnes spændingen,motoren skal have for udligne at denne tørfriktion.

Forholdet mellem friktionsdrejningsmomentet Mf , og vinkelhastigheden er givet ved:

Mf = C · ω + Mt [Nm] (D.8)

Ved konstant vinkelhastighed er friktionsdrejningsmomentet og det elektriske drejningsmoment,Me, lig hinanden. Og da det elektriske drejningsmoment er givet ved

Mf = Me = kφ · i [Nm] (D.9)

kan ligning D.8 og ligning D.9 sammenskrives til:

kφ · i = C · ω + Mt [Nm] (D.10)

På gur D.5 er kφ · i plottet som funktion af ω. Den tilnærmede linjes hældning og skæringspunktmed Y-aksen er henholdsvis C og Mt.

D5

D Parametre for DC-motoren

0 200 400 600 800 1000 12000.5

1

1.5

2

2.5

3

3.5x 10

−3

omega [rad/s]

i*k ph

i [Nm

]

Aflæste værdierTilnærmet linie

Figur D.5: Plot af værdier fra tabel D.3. Den tilnærmede linjes hældning og skæringspunkt med Y-aksen erhenholdsvis C og Mt.

Parametrene bestemmes til:

C = 1, 7925 · 10−6 Nms

Mt = 890, 46 · 10−6 Nm

Undertrykkelse af tørfriktion

Med Mt fundet beregnes, hvor stor spænding motoren skal påtrykkes for at undertrykke tørfrik-tionen. Friktionen undertrykkes for at gøre overføringsfunktionen for motoren lineær. På gurD.6 illustreres et blokdiagram, hvor der regnes tilbage fra motorens omdrejningshastighed til denspænding, der skal påtrykkes.

Spændingen, der påtrykkes, skaber gennem terminalmodstanden en strøm. Strømmen multipli-ceret med kφ giver et moment. Det er dette moment, der regnes tilbage fra. Billedet på blokkentørfriktion, er en principtegning af at tørfriktionen har en konstant værdi, alt efter hvilken vejmotoren roterer.

Ra/kφ

Tørfriktion, MtNmV

ω

Rad/s

Figur D.6: Principdiagram til bestemmelse af spændingen til undertrykkelse af tørfriktionen.

Ud fra blokdiagrammet ndes formlen, der beregner spændingen.

D6

Momentet Mt, blev fundet til 890, 46 · 10−6 Nm, terminalmodstanden blev fundet til 1,46 Ω ogkφ til 0,0165 Nm/A. Herefter udregnes spændingen ved:

V =Ra ·Mt

kφ[V] (D.11)

V =1, 46 Ω · 890, 46 · 10−6 Nm

0, 0165 Nm/A= 0, 394 V

Spændingen, motoren skal påtrykkes for at undertrykke friktionen, er 394 mV.

Bestemmelse af inertimomentet

Inertimomentet bestemmes ved at sætte motoren til at køre og dernæst afbryde strømmen tilmotoren. Herefter registreres omdrejningshastigheden som funktion af tiden.

Registreringen af omdrejningshastigheden sker ved, at motorens tachometer kobles til en PCvia lydkortet. Pulserne fra tachometret optages og importeres derefter ind i MatLab til viderebehandling.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

x 104

0

0.2

0.4

0.6

0.8

1

1.2

Plot af akselomdrejningshastighed og tangent ved enhedstep

tid [s]

omeg

a [ra

d/s]

Omdrejninger pr. tidTangent ved enhedsstep

Figur D.7: Plot af akselomdrejningshastighed samt ret linie for bestemmelse af τ .

I MatLab er τ beregnet til 202,3 ms og vha. formel D.12 kan inertimomentet ndes.

Jm = C · τ [kgm2] (D.12)

I forrige afsnit blev C fundet til 1, 7925 · 10−6 Nms. Derefter ndes Jm til

Jm = 1, 7925 · 10−6 · 202, 3 · 10−3 kgm2

Jm = 0, 36 · 10−6 kgm2

D7

D Parametre for DC-motoren

Gentages testen med kameraet påmonteret fås et totalt inertimoment på:

Jtot = 0, 40 · 10−6 kgm2

Opsummering af motorparametre

Parametrene for den anvendte motor er fundet i de forrige afsnit. I tabel D.4 er alle resultaterneopsummeret.

Parameter Navn Værdi (målt) Datablad Enhed

Ra Terminalresistant 1,46 1,34 ΩLa Terminalinduktans 107,63 120 µH

kφ Motorkonstant 16,5 18,3 mNm/A

C Viskose ktion 1,7925 Ikke opgivet µNms

Mt Tør friktion 890,46 Ikke opgivet µNm

Jm Inertimoment 0,36 0,919 µkgm2

Jtot Samlet inertimoment 0,40 - µkgm2

Tabel D.4: De målte og beregnede motorparametre.

D8

Appendiks EMotormodellering

I dette appendiks opstilles en overføringsfunktion for en DC-motor. Før dette er muligt, skal derlaves et elektrisk ækvivalent og et freebody diagram af en DC-motor.

På gur E.1 er et elektrisk ækvivalent af en DC-motor illustreret.

va e=k·ω

Ra Laia

Figur E.1: Elektrisk ækvivalent af DC-motor.

Opstilles en ligning for kredsløbet på gur E.1 fås følgende:

va(t) = Ra · ia(t) + La ·d

dtia(t) + k · ω(t) [V] (E.1)

hvor: va er spændingen over DC-motorens terminaler [V]

Ra er den ohmske modstand i motoren [Ω]ia er strømmen, der løber ind i DC-motoren [A]

La er induktansen i DC-motoren [H]

k er motorens momentkonstant [Nm/A]

ω er motorens omdrejningshastighed [Hz]

t er tiden [s]

E1

E Motormodellering

La kan udelades i overføringsfunktionen, da motoren påvirkes med konstante spændinger, ogspolen kan derfor betragtes som en kortslutning. Dermed bliver ligningen for kredsløbet:

va(t) = Ra · ia(t) + k · ω(t) [V] (E.2)

Et freebody- diagram af en DC-motor er illustreret på gur E.2.

B · ω

ω

T = ia · k

J

Figur E.2: Freebody-diagram af motor.

Det er muligt at opstille følgende ligning ud fra gur E.2.

ia(t) · k −B · ω(t) = J · ω(t) [A] (E.3)

hvor: B er friktionen [Nm/(rad/s)]

J er motorens inertimoment [kgm2]

Foretages Laplace transformation på ligning E.2 og ligning E.3 fås:

Va (s) = Ra · Ia + k · ω (s) [V] (E.4)

Ia(s) · k −B · ω(s) = J · s · ω(s) [A] (E.5)

Isoleres Ia i ligning E.4 og ligning E.5 fås:

Ia(s) =Va(s)− k · ω(s)

Ra[A] (E.6)

Ia(s) =J · s · ω(s) + B · ω(s)

k[A] (E.7)

Sættes ligning E.6 og ligning E.7 lig hinanden fås:

Va(s)− k · ω(s)Ra

=J · s · ω(s) + B · ω(s)

k[A] (E.8)

E2

Herefter sættes ω(s) = s · θ(s), hvor θ(s) angiver motorens position.

Va(s)− k · s · θ(s)Ra

=J · s · s · θ(s) + B · s · θ(s)

k[A] (E.9)

DC-motorens overføringsfunktion udtrykker motorens position i forhold til spændingen Va(s).

G(s) =θ(s)Va(s)

=k

s ·Ra (J · s + B) + k2 · s⇔

G(s) =θ(s)Va(s)

=k

s2 ·Ra · J + s (Ra ·B + k2)⇔

G(s) =θ(s)Va(s)

=k

B·Ra+k2

s2 J ·RaB·Ra+k2 + s

(E.10)

Dette omskrives til:

G(s) =θ(s)Va(s)

=K

s(τm · s + 1)(E.11)

hvor:

K er kB·Ra+k2 [Rad/(s·V)]

τm er J ·RaB·Ra+k2 [s]

DC-motorens overføringsfunktion er udtrykt i ligning E.11.

Med indsættelse af værdier fra appendiks D, fås at K = 60,029 Rad/(s·V) og τm = 0,00212 s.

E3

Appendiks FBeregning af regulator

I dette appendiks bestemmes regulatoren D(z), der regulerer DC-motoren. Regulatoren skal de-signes således, at motoren når til positionen af det objekt, der følges lige inden næste opdatering.Denne type regulator kaldes en dead beat regulator.

Til beregning af regulatoren opstilles en model for systemet, hvilket er et tilbagekoblingskredsløb,gur F.1. Mellem de enkelte blokke er enhederne angivet.

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Positionsregulator D/APositionsreference G(s) Integrator Position

A/D

Hastighedsregulator

Positionsregulator D/APositionsreference ∑ G(s) Position

Sensor/ A/D

Ke+

-

D/APositionsreference ∑ G(s) Position

Kamera

Ke+

-D(z)

D/A∑ Ke+

-D(z)

[V][V][-][px]

[px]

[Rad]

Kg

G(s)

H

Kg

[Rad]R(z)

E(z) U(z)Y(s)

Figur F.1: Model af tilbagekoblingskredsløbet til DC-motoren.

Systemet består af seks blokke hvor:

• D(z) er regulatoren.

• D/A er digital til analog konverteren der består af I/O-kortet, afsnit 4.6.

• Ke er eekttrinnet, afsnit 3.3.

• G(s) er motorens overføringsfunktion der er udledt i formel E.11 afsnit E.

• Kg er gearingen på motoren, og har forholdet 18,75:1, afsnit 4.6.

• H er kameraet og dertilhørende software, afsnit 4.6.

F1

F Beregning af regulator

Da input er i pixels og output er i radianer, beregnes forholdet mellem radianer og pixels, afsnit4.6:

1 rad = 1071 px

Det ønskes, at udgangen skal have værdien af forrige sample, dette skrives som:

Y (z) = R(z) · z−1

Der skal foretages en korrigering, således at enhederne er ens på begge sider af lighedstegnet. Tildenne korrigering beregnes radianer om til pixels.

Y (z) ·H = 1071 · Y (z) = R(z) · z−1 (F.1)

Kravene, der herved stilles til regulatoren, er:

TS = 0, 04 sR(z) · z−1 = 1071 · Y (z)

hvor: R(z) er det diskrete referencesignal [px]

Y (z) er det diskrete udgangssignal [px]

F2

Funktionerne for de kendte blokke er givet som:

D/A = 4, 88 [mV]

Ke =15

[−]

G(s) =K

s(τms + 1)[rad/V]

Kg =1

18, 75[−]

H = 1071 [px/rad]

K = 60, 03 [rad/(s ·V)]

τm = 0, 0021 [ s]

Da systemet består af både digitale og analoge blokke, beregnes motorens overføringsfunktiontil z-domænet, hvorfra hele systemet behandles. Til beregning af motorens overføringsfunktionanvendes MatLab, hvor denne beregnes til en samplingstid på 0,04 s vha. ZoH1.

G(z) =2, 274z + 0, 1275

z2 − z + 6, 664 · 10−9(F.2)

Openloop og closeloop forstærkningen for systemet er herved givet som:

A(z) = D(z) ·D/A ·Ke ·G(z) ·Kg (F.3)

T (z) =A(z)

1 + A(z) ·H=

D(z) ·D/A ·Ke ·G(z) ·Kg

1 + D(z) ·D/A ·Ke ·G(z) ·Kg ·H(F.4)

hvor: A(z) er openloopforstærkningen [-]

T (z) er closeloop forstærkningen [-]

1Zero order Hold

F3

F Beregning af regulator

Overføringsfunktionen, der ønskes realiseret, er:

R(z) · z−1 = 1071 · Y (z)⇒ T (z) =Y (z)R(z)

=1

1071· z−1 =

11071 · z

(F.5)

Til beregning af regulatoren isoleres D(z) fra formel F.4, hvorefter konstanterne og funktionernefor D/A, Ke, G(z), Kg, H og T (z) indsættes.

T (z) =D(z) ·D/A ·Ke ·G(z)

1 + D(z) ·D/A ·Ke ·G(z) ·Kg ·H(F.6)

⇓T (z) + T (z) ·D(z) ·D/A ·Ke ·G(z) ·Kg ·H = D(z) ·D/A ·Ke ·G(z) (F.7)

⇓T (z) = D(z) ·D/A ·Ke ·G(z)− T (z) ·D(z) ·D/A ·Ke ·G(z) ·Kg ·H (F.8)

D(z) =T (z)

D/A ·Ke ·G(z)− T (z) ·D/A ·Ke ·G(z) ·Kg ·H(F.9)

D(z) =1071 · z5 − 2142 · z4 + 1071 · z3 − 1, 427 · 10−5 · z2 + 4, 757 · 10−14 · z

135, 8z5 − 263, 9 · z4 + 120, 5 · z3 + 7, 615 · z2 − 5, 075 · 10−8 · z(F.10)

Til simplicering af formel F.10 ndes poler og nulpunkter af D(z) i MatLab.

nulpunkter =

01, 000000000000001, 000000000000000, 00000000666424←0, 00000000666424

(F.11)

poler =

00, 999999983422131, 00000001657787−0, 05609622142129←0, 00000000666424

(F.12)

Der ses ud fra formel F.11 og F.12 at der herved er én betydende pol og et nulpunkt, hvorvedD(z) kan skrives som:

Dkor(z) =KDC · z

z + 0, 0561[−] (F.13)

F4

hvor: KDC er DC-forstærkningen [-]

DC-forstærkningen beregnes i MatLab ved at nde, hvormange dB Dkor(z) skal hæves for athave samme DC oset som D(z).

KDC ≈ 7, 8894

De to gurer for henholdsvis D og Dkor plottes for at sammenligne deres karakteristika, ogkontrollere, at de stemmer overens, gur F.2 og F.3.

17.4

17.6

17.8

18

18.2

18.4

18.6

Mag

nitu

de (

dB)

100

101

102

0

1

2

3

4

Pha

se (

deg)

Ønsket bodeplot

Frequency (rad/sec)

Figur F.2: Amplitude- og faseplot af D(z). DC for-stærkningen er aæst til 17,5 dB.

17.4

17.6

17.8

18

18.2

18.4

18.6

Mag

nitu

de (

dB)

100

101

102

0

1

2

3

4

Pha

se (

deg)

Bodeplot med beregnet forstærkning

Frequency (rad/sec)

Figur F.3: Amplitude- og faseplot af Dkor(z). DCforstærkningen er aæst til 17,5 dB.

Til implementering i C-kode, ønskes regulatorens aktuelle udgang U(z) udtrykt. Ved at dele medz og isolere U(z) kan udgangen beskrives vha. den aktuelle sample samt udgangen af den forrigesample U(z) · z−1.

U(z) = Dkor · E(z) =7, 8894 · z

(z + 0, 0561)E(z) =

7, 88941 + 0, 0561 · z−1

E(z) (F.14)

⇓U(z) + 0, 0561 · U(z) · z−1 = 7, 8894 · E(z) (F.15)

⇓U(z) = 7, 8894 · E(z)− 0, 0561 · U(z) · z−1 (F.16)

Efter regulatoren er beregnet ndes stepresponsen for systemet til kontrol af, at regulatorenopfylder den ønskede position til de enkelte samplingstider. Til dette ndes først clooseloopfunktionen for det samlede system, som er beregnet i MatLab.

F5

F Beregning af regulator

T (z) =Dkor ·D/A ·Ke ·G(s) ·Kg

1 + Dkor ·D/A ·Ke ·G(s) ·Kg ·H(F.17)

T (z) =0, 00093371 · z(z + 0, 0561)

(z + 0, 0561)(z − 5, 436 · 10−8)(z + 4, 77 · 10−8)(F.18)

Plottes stepresponsen for hhv. motorens position til de enkelte samplingstider, gur F.4 og mo-torens aktuelle position for hele forløbet, gur F.5, ses at motoren har overshoot. Dette vurderesikke at være et problem, da kameraet har den korrekte position til de enkelte samples, hvilketvar formålet med den designede regulator.

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.160

0.2

0.4

0.6

0.8

1

1.2

1.4x 10

−3

Figur F.4: Motorens position til de enkelte sampling-stider ved et enhedsstep.

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.160

0.2

0.4

0.6

0.8

1

1.2

1.4x 10

−3

Figur F.5: Motorens aktuelle position ved et enheds-step.

F6

Appendiks GMålejournal for stepmotor og driverkredsløb

Formålet med denne målejournal er at teste driverkredsløbets og stepmotorens funktion. Påbaggrund af målingerne skal det besluttes, hvordan testmotoren skal styres vha. I/O-kortet. Iforsøget testes motorens omdrejningshastighed, som styres af spændingspulser på kredsens clock-indgang. Desuden måles forsinkelsen fra enable-indgangen aktiveres, til motoren sætter i gang.Det er vigtigt at kende denne tid, hvis enable-indgangen skal anvendes til at styre hvornår kredsener aktiv.

Måleopstilling

Som omdrejningsmåler monteres en encoder på stepmotorens aksel. Fikseres denne i forhold tilakslen kan omdrejninger aæses på et oscilloskop. Figur G.1 og G.2 illustrerer måleopstillingenfor de to forsøg.

+

-

Driverkredsløb

Enable

Clock

+

-Stepmotor Encoder5 V12 V

Figur G.1: Måleopstilling til måling på stepmotor.

Encoder

Stepmotor

5 V

1 kΩ

skop

Figur G.2: Encoderen koblet på stepmotoren. Enkontakt mellem de to ben, der er forbundet til oscil-loskopet, slutter 24 gange per omgang.

Derudover sættes Half/Full* høj, så motoren kører halfstep. CW/CCW* sættes høj, så motoren

G1

G Målejournal for stepmotor og driverkredsløb

kører med uret rundt. Reset sættes høj. Kredsen skal ifølge databladet have et lavt signal på0,5 µs på clock-indgangen [SONCEBOZ, 2006]. Da der ikke er en clock-generator, hvor duty-cyclen kan varieres, tilgængelig, anvendes clock-signaler på hhv. 1000 og 2000 Hz, så en målbarhastighed opnås.

Apparaturliste

Apparat Mærke Model AAU nr.

Strømforsyning HAMEG Triple Power supply 7042 33900

Funktionsgenerator Philips PM5131 08089

Oscilloskop Agilent 54621A 33854

Encoder Bourns PEC16, 16 mm Incremental Encoder

Tabel G.1: Apparaturliste ved måling på stepmotoren.

Bestemmelse af hastighed som funktion af frekvens

Stepmotoren drives af clockpulser gennem en driverkreds. For at måle omsætningen fra pulsertil bevægelse måles tiden, en omdrejning tager, vha. omdrejningstælleren.

G.0.1 Metode

Der måles med oscilloskopet på omdrejningstælleren. Dernæst aæses afstanden over 24 pulserpå oscilloskopet, da dette svarer til en omgang på omdrejningstælleren. Der måles ved forskelligefrekvenser for at vericere omsætningen.

G.0.2 Resultat

På gur G.3 og G.4 illustreres resultatet af målinger med to forskellige clockfrekvenser.

G2

0 50 100 150 200 250 300 350 400 450 500-1

0

1

2

3

4

5

6

tid [ms]

spæ

ndin

g [V

]f=1000 Hz

Figur G.3: Stepmotorens hastighed ved en clockfre-kvens på 1000 Hz. Én omdrejning svarer til 24 pulserfra encoderen.

0 50 100 150 200 250 300 350 400 450 500-1

0

1

2

3

4

5

6

tid [ms]

spæ

ndin

g [V

]

f=2000 Hz

Figur G.4: Stepmotorens hastighed ved en clockfre-kvens på 2000 Hz. Én omdrejning svarer til 24 pulserfra encoderen.

På gur G.3 aæses omgangstiden til 401,5 ms ved en clockfrekvens på 1000 Hz. På gur G.4aæses omgangstiden til 200,25 ms ved en clockfrekvens på 2000 Hz. Motoren har ifølge data-bladet 200 steps per omgang. Da den i dette forsøg kører halfstep, er en omgang inddelt i 400steps. Dette vericerer følgende beregninger:

S1000 = 1000 Hz · 401, 5 ms = 401, 5 stepsS2000 = 2000 Hz · 200, 25 ms = 400, 5 steps

G.0.3 Fejlkilder

Encoderen kseres i forhold til motoren med håndkraft. Under start, stop og drift kan der kommeforskydelser i encoderens og motorens position i forhold til hinanden.

Bestemmelse af forsinkelse gennem driverkredsløb

Stepmotoren aktiveres af enable-benet på driverkredsen. For at måle forsinkelsen gennem sys-temet, måles tiden fra enable aktiveres til omdrejningstælleren måler bevægelse.

G.0.4 Metode

Oscilloskopet sættes til at måle på enable-benet og på omdrejningstælleren og indstilles til attrigge når enable-benet går højt. Dernæst aæses tiden på skopet mellem pulsen på enable-benetog den målte puls på encoderen. Denne test udføres ere gange.

G3

G Målejournal for stepmotor og driverkredsløb

G.0.5 Resultat

Forsinkelsen aæses som tiden fra enable går høj til encoderen giver første puls. Da encoderenhar en forholdsvis lille opløsning (24 steps per omgang) kan motoren nå at dreje 1/24 omgang førførste puls registreres. Derfor udføres forsøget 10 gange, hvorefter de to bedste resultater plottesi MatLab. Disse resultater kan tolkes som worst case pga. omdrejningstællerens relativt dårligeopløsning.

0 5 10 15 20 25 30 35 40 45 50-1

0

1

2

3

4

5

6

tid [ms]

spæ

ndin

g [V

]

encoder

enable

0 5 10 15 20 25 30 35 40 45 50-1

0

1

2

3

4

5

6

tid [ms]

spæ

ndin

g [V

]

encoder

enable

Figur G.5: Forsinkelsen fra enable går høj til første puls fra encoderen. Encoderens kontakt er sluttet på dettidspunkt hvor enable sættes høj.

Forsinkelsen aæses på gur G.5 til henholdsvis 3,6 og 3,36 ms.

G.0.6 Fejlkilder

Udover de samme fejlkilder som beskrevet i punkt G.0.3, er encoderens position, når motorenstartes, ukendt. Motoren kan derfor nå at dreje 1/24 omgang før en clockpuls registreres.

G4

Appendiks HMålejournal for eekttrin

Eekttrinnet er ledet mellem I/O-kortet og DC-motoren. Det skal levere den nødvendige eekt,således motoren kan rotere med den ønskede hastighed. Formålet med testen er at vericere deopstillede krav til eekttrinnet. Indgangsspændingen varierer mellem ±10 V og udgangen mellem±2 V. Derudover skal det kunne levere 500 mA til motoren.

Måleopstilling

Spændingsforsyningerne er ±12 V. Indgangssignalet er en spændingsforsyning, hvor spændingenvarieres fra -10 V til 10 V. På gur H.1 er den anvendte opstilling for måling af eekttrinnetsudgangsspæning illustreret.

+

-

Effekttrin

+

-Variabel-12 V

+

-12 V Voltmeter Voltmeter

PSU2 PSU1 Meter2 Meter1

RL

Figur H.1: Illustration af den anvendte måleopstilling for vericering af eekttrinnet.

H1

H Målejournal for eekttrin

Apparaturliste

I tabel H.1 er de anvendte apparater listet.

Nummer Apparat Mærke Model Placering AAU nr.

PSU1 Strømforsyning B&O Power Supply SN16A C2-104-B-5 08270

PSU2 Strømforsyning B&O Power Supply SN16A C2-104-B-3 08161

Meter1 Multimeter Fluke 8050A C2-104-A-5 08542

Meter2 Multimeter Data Precision 1351 C2-104-A-3 07986

Tabel H.1: Apparaturliste ved måling på eekttrinnet.

H.0.7 Metode

Strømforsyning, PSU2, med 12 V og -12 V samt stel tilsluttes eekttrinnet. Strømforsyning,PSU1, samt et voltmeter, Meter2, tilsluttes indgangen og det andet voltmeter, Meter1, tilsluttesudgangen. Spændingen på indgangen øges i step af 2 V fra -10 V til 10 V.

For af teste at eekttrinnet kan levere den ønskede strøm laves en test, hvor kredsløbet belastesmed en 3,9 Ω modstand. Ved maksimal og minimal udgangsspænding, og med den anvendtebelastning, skal eekttrinnet kunne levere 500 mA.

Resultat

Indgangsspændingen og udgangsspændingen på eekttrinet er målt og i tabel H.2 illustreres demålte resultater. Ligeledes kan udgangsspænding samt afvigelsen i volt aæses. Den ønskedeudgangsspænding er beregnet ud fra indgangsspændingen divideret med 5, da spændingsdelen iindgangen er i forholdet 5:1.

H2

Indgang [V] Udgang [V] Ønsket [V] Afvigelse i %

-10,01 -1,982 -2,002 -0,999

-8,07 -1,601 -1,614 -0,805

-6,01 -1,194 -1,202 -0,666

-4,02 -0,803 -0,804 -0,124

-2,04 -0,413 -0,408 1,225

0 -0,012 0,000 0,000

2 0,383 0,400 -4,250

4,03 0,788 0,806 -2,233

6,02 1,172 1,204 -2,658

8,03 1,561 1,606 -2,802

10,02 1,961 2,004 -2,146

Tabel H.2: Tabel over de målte resultater for eekttrinnet.

Den målte strøm fra eekttrinnet gennem belastning er illustreret i tabel H.3.

Udgang [V] Målt udgang [V] Beregnet strøm [mA] afvigelse i %

2 1,9 487 -2,6

-2 -1,96 -502 0,4

Tabel H.3: Tabel over strømmen gennem belastningen ved 10 V og -10 V på indgangen. Den målte udgangsspæn-ding divideres med 3,9 Ω for at beregne strømmen.

H.0.8 Fejlkilder

Ved måling af indgangs- og udgangsspænding viste multimetrene ikke stabile spændinger ned til2. decimal. Der blev derfor aæst en øjebliksværdi, som repræsenterer målingen.

H3

Appendiks ITest af kameraopstilling

I dette appendiks testes kameraopstillingen med kameraet monteret. Opstillingen inkluderer step-motoren, DC-motoren og de re endestop. Kravene til enhederne er:

Stepmotor (afsnit 3.2.1)

1. Skal kunne dreje 79,6 per sekund.

2. Skal kunne dreje i begge retninger.

DC-motor (afsnit 3.3.1)

1. Skal kunne dreje 20,8 per sekund.

2. Skal kunne dreje i begge retninger.

Endestop (afsnit 3.4.1)

1. Skal begrænse den horisontale vinkel til 180 ± 10%.

2. Skal begrænse den vertikale vinkel til 90 ± 10%.

Til testen er der skrevet et stykke C-kode, som forendes på vedlagte CD (.\C-kode\testmsty-ring.c), der via Linux-pc'en og I/O-kortet, bevæger kameraet rundt i alle yderstillinger, somillustreret på gur I.1.

I1

I Test af kameraopstilling

1 2

34

5

Figur I.1: I testen af kameraopstillingen bevæges kameraet rundt i alle yderstillinger.

I programmet er motorerne sat til at køre med den hastighed, som den færdige software maksimaltkan køre med, i henhold til de afgivne koordinater fra EyesWeb. Hastigheden for stepmotorener beregnet med formel 4.3, afsnit 4.5.2, mens hastigheden for DC-motoren er beregnet ifølgeafsnit 4.6. Programmet registrerer tiden, det tager for motorerne at nå fra endestop til endestop.Programmet køres tre gange, og worst-case-tiden registreres.

I.0.9 Resultater

Vinklen mellem de re endestop, i forhold til kameraet, er målt til henholdsvis 185 og 83.Dermed er kravene til de re endestop overholdt.

Testen giver følgende tider:

• Stepmotoren drejer mellem de to endestop, i begge retninger, på mindre end 2 s.

• DC-motoren drejer mellem de to endestop, i begge retninger, på mindre end 0,3 s.

Hastigheden for stepmotoren og DC-motoren kan beregnes til:

vstepmotor >1852

= 92, 5grader

s

vDC−motor >830, 3

= 276, 7grader

s

Det kan hermed konkluderes, at stepmotor, DC-motor og endestop overholder kravene opstillettidligere i dette appendiks.

I2

Appendiks JModultest af software

Dette appendiks indeholder tests af de enkelke moduler designet i kapitel 4.

Enkelte af de opstillede krav er ikke målbare, og der vil derfor blive foretaget en vurdering afprojektgruppen, der så vil tage stilling til, hvorvidt kravene er opfyldt.

Billedbehandling

Under software blev der opstillet følgende krav til billedbehandlingen.

1. Skal modtage et videosignal fra et analogt kamera.

2. Skal udskille den røde farve.

3. Skal nde midtpunktet af den røde farve og lave et koordinatsæt af midtpunktet.

4. Skal sende koordinatsættet ud på et TCP/IP netværk.

Kravene 1 - 3 bliver testet med udgangspunkt i programmet fra Eyesweb 4.3 på side 24. Krav 4bliver testet med Hyper Terminal.

Krav 1:Blokken 'Live' i Eyesweb indstilles til at modtage et analogt signal med en farveopløsning på 24bit og i en opløsning på 320x240 pixels.

Accept:Der modtages billeder, med 25 billeder per sekund og i en opløsning på 320x240 pixels.

Krav 2:På gur 4.3 side 24 er fase 2 og 3 illustreret. I de to faser bliver den røde farve udskilt, og denrøde farve bliver konverteret til hvid og de øvrige farver konverteres til sort.

J1

J Modultest af software

Accept:Det røde objekt lokaliseres på billedet og fremgår som hvid, alle andre farver fremgår som sort.

Krav 3:I fase 3 ndes midtpunktet af den røde farve. Koordinatsættet for den røde farve udskrives i entabel.

Accept:Det vurderes, at koordinatsættet er midtpunktet af det røde objekt, der bevæges rundt forankameraet.

Krav 4:I fase 4 sendes koordinatsættet ud på et TCP/IP netværk. På en anden PC sættes Hyper Terminalop til at vise, hvad den modtager fra netværket.

Accept:I Hyper Terminal vises de samme koordinater, som vises i tabellen i fase 4.

Styring af stepmotor

I modulet styring af stepmotor afsnit 4.5 opstilles følgende krav:

1. Pulserne, der sendes til driverkredsen, skal være lave i mindst 0,5 µs.

2. Antallet af pulser skal afhænge af X-koordinatet.

3. Retningen skal sættes lig 1, hvis x > 0 og 0 hvis x < 0.

Modulet testes vha. nedenstående kode. Nedenstående kode er en del af den samlede kode.

1 #include <comedilib.h>

#include <stdio.h>

3

#define stepgrad 17 /*Antal grader per step*/

5 //#define puls_t 0.1 /*Tiden pulsen er lav i. Enheden er

mikrosekunder*/

//#define periodetid 30000 /*Periodetiden, hvori alle pulser skal

afgives. Enheden er mikrosekunder*/

7

comedi_t *it; /*Variabler der

bruges til IO-kort*/

9 lsampl_t data;

11 int main(void)

int x;

13 int periodetid=30000;

int puls_t=1;

15 int xretning, clockout, nsteps, sleep_t, sleep_t_samlet, n, k; /*

Variabler til stepmotorstyring*/

J2

17 it=comedi_open("/dev/comedi0");

/*Kontrol af IO kortet*/

19 if(it == NULL)

21 fprintf(stderr, "error opening %s\n", "/dev/comedi0");

return -1;

23

25 comedi_dio_config(it, 2, 0, COMEDI_OUTPUT); /*Clock bliver opsat som

en udgang, udgang 52*/

comedi_dio_config(it, 2, 1, COMEDI_OUTPUT); /*Retning bliver opsat som

en udgang, udgang 17*/

27

while(1)

29 printf("Indtast en x vaerdi\n");

scanf("%d",&x);

31 if(x>0)

xretning=1; /*Drejer til højre*/

33 comedi_dio_write(it, 2, 1, 1); /*Skriver retningen på ben 17*/

35 if(x<0)

xretning=0;

37 comedi_dio_write(it, 2, 1, 0); /*Skriver retningen på ben 17*/

x=-x; /*Finder den nummeriske værdi af x*/

39

nsteps=x/stepgrad; /*Antal pulser beregnes*/

41 sleep_t_samlet=periodetid-(nsteps*puls_t); /*Beregner tiden hvor i

clock udgangen skal være høj*/

/*Skal der sendes mere end 1 puls, beregnes tiden mellem pulserne*/

43 if(nsteps-1>0)

sleep_t=sleep_t_samlet/(nsteps-1);

45

/*Skal der sendes mere end 1 puls startes for løkken*/

47 for(n=1; n<nsteps; n++)

comedi_dio_write(it, 2, 0, 0); /*Sætter clock udgangen lav*/

49 usleep(puls_t);

comedi_dio_write(it, 2, 0, 1); /*Sætter clock udgangen høj*/

51 usleep(sleep_t);

53 comedi_dio_write(it, 2, 0, 0); /*Sætter clock udgangen lav*/

usleep(puls_t);

55 comedi_dio_write(it, 2, 0, 1); /*Sætter clock udgangen høj*/

57 return 0;

Krav 1 testes ved at eksekvere koden, hvorefter der tastes et tal mellem 17 og 159. Med etoscilloskop måles på udgang nr. 52 på I/O-kortet. På oscilloskopet måles tiden pulserne er lave.

Accept:Tiden pulserne er lave, skal være længere end 0,5 µs.

Krav 2 testes ved at indtaste følgende tal: 0, 17, 34, 51, 68, 85, 102, 119, 136, 153.

J3

J Modultest af software

Accept:Kravet er overholdt, hvis antallet af pulser der sendes, er henholdsvis 0, 1, 2,..., 8, 9.

Krav 3 testes ved at indtaste 17. Med oscilloskop måles på I/O-kortets udgang nr. 17. Herefterindtastes -17.

Accept:Kravet er overholdt, hvis der først måles en spænding på 5 V og derefter 0 V.

Styring af DC-motor

Kravene der er opstillet til DC-motorstyring er, hentet fra afnit 4.6:

1. Skal omsætte Y-koordinaterne til en udgangsspænding.

2. Ved koordinat i midten skal 0 V ±0,5 V sendes ud.

3. Skal holde udgangsspændingen i 40 ms ad gangen.

Krav 1 testes vha. nedenstående kode. Der sendes forsøgsvis Y-koordinater ind og den tilsvarendeudgangsspænding måles med et oscilloskop. Samtidig testes krav 3 ved at måle tiden udgangs-spændingen holdes i.

t=0;

115 int M[]=-100, -50, -10, -1, 1, 10, 50, 100;

while(1)

117 y=M[t];

sem_wait(&sem_time); /*Timer semafor tælles en ned*/

119 comedi_data_write(it, 1, 0, 0, aref, nulpunkt);

/*DC-motorstyring påbegyndes*/

121 sem_post(&sem_DC);

t=t+1;

123 if (t==8)

t=0;

125

Listing J.1: Koden til test af DC-motorstyring.

Først er koden benyttet uden det indsatte array. Værdien for variablen nulpunkt er ændret indtilder er målt 0 V på udgangen. Dette er fundet ved en værdi på 2024 mod det forventede 2047.Dernæst er forskellige koordinatværdier indsat som vist i tabel J.1

Der er valgt at teste værdierne -100, -50, -10, -1, 1, 10, 50 og 100.

J4

Indgang [-] Beregnet [V] Målt [V] Afvigelse [V]

-100 -4,24 -4,22 0,02

-50 -2,32 -2,31 0,02

-10 -0,777 -0,750 0,027

-1 -0,431 -0,406 0,025

1 0,431 0,438 0,025

10 0,777 0,781 0,027

50 2,32 2,31 0,07

100 4,24 4,25 0,01

Tabel J.1: De beregnede og de målte værdier for DC-motorstyringen.

Usikkerheden på I/O-kortet er op til 200 mV, når kortet ikke er kalibreret [Instruments, 2005].

Til sidst er tiden spændingen holdes på udgangen af I/O kortet målt. Denne er målt til 42 mspå samtlige pulser.

J5