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