Afstandsmåling - via intelligent sonar

Størrelse: px
Starte visningen fra side:

Download "Afstandsmåling - via intelligent sonar"

Transkript

1 Afstandsmåling - via intelligent sonar E Gruppe 416 Aalborg Universitet Institut for Elektroniske Systemer AAU

2

3 Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet Institut for elektroniske systemer TITEL: Afstandsmåler til autonom markrobot PROJEKTPERIODE: 4. semester 4. februar juni, 2002 PROJEKTGRUPPE: E4 GRUPPEMEDLEMMER: Christian Rostgaard Andersen Rasmus Abildgren Lisbet Andersen Emil Feldborg Buskgaard Rikke Ottesen Simon Bjerg Mikkelsen Jesper Højvang Jensen VEJLEDER: Jan Dimon Bendtsen OPLÆG : 10 ANTAL SIDER I RAPPORT: 106 SYNOPSIS: I dette projekt er der udviklet en afstandsmåler, der vha. sonarprincippet kan detektere forhindringer foran en autonom markrobot. Der er valgt en trigonometrisk løsning, som består af en aktuator og to sensorer. Aktuatoren udsender ultralyd, der reflekteres af mulige objekter. Det reflekterede signal samples af en mikrocomputer, der er bygget op omkring en Motorola processor. Den bestemmer koordinaterne for ét objekt, samt hvilken farezone markrobotten befinder sig i. Sker der en ændring af fareforholdene, sendes der besked om dette til en pc, der emulerer markrobottens styrecomputer. Til en pc er skrevet et program, der modtager zoneskift fra mikrocomputeren, samt kan bede om afstandsmålerens status og ændre farezonens radius. Tests viste, at afstandsmåleren fungerer, men ikke kunne opfylde kravene til dækningsområde. ANTAL SIDER I APPENDIKS: 47 ANTAL SIDER TOTAL: 163

4

5 Faculty of Engineering and Science Aalborg University Institute of electronic systems TITLE: Distance measurer for an autonomous agriculture robot TIMEPERIOD: 4th semester February 4th to May 30th, 2002 GROUP: E4 GROUP MEMBERS: Christian Rostgaard Andersen Rasmus Abildgren Lisbet Andersen Emil Feldborg Buskgaard Rikke Ottesen Simon Bjerg Mikkelsen Jesper Højvang Jensen ADVISOR: Jan Dimon Bendtsen COPIES: 10 NO. OF PAGES IN MAIN REPORT: 106 SYNOPSIS: During this project a distance measurer for detecting obstacles in front of an autonomous agriculture robot has been developed. A solution using trigonometry has been chosen. It consists of one actuator and two sensors. The actuator sends an ultrasonic pulse which is reflected by an object. The reflected pulse is sampled by a microcomputer which has a Motorola processor as the main component. It calculates the coordinates for the object, as well as which danger zone the robot is in. If the estimate of risk changes, a message is sent to a PC which emulates the main computer on the agriculture robot. A program has been written for the PC which receives the danger zone from the microcomputer and on user request gets the status of the robot and changes the radius of danger. Tests have shown the distance measurer is working but couldn t fulfill all requirements to the detecting area. NO. OF PAGES IN APPENDIXES: 47 NO. OF PAGES IN TOTAL: 163

6

7 Forord Denne rapport er skrevet i forårssemestret år 2002 på Aalborg universitet, Institut for Elektroniske Systemer. Rapporten omhandler et 4. semesters projektforslag, om konstruktion af en afstandsmåler til en autonom markrobot. Målgruppen er 4. semesters studerende fra samme institut. I projektet er det valgt i vid udstrækning at følge SPU-modellen. Dog er blokopdelingen udskilt fra kravspecifikationen. Til kildeangivelse bruges Harvard-metoden, dvs. [forfatter, årstal, evt sidetal]. Er henvisningen til flere på hinanden følgende sider skrives ff. Henvisninger til figurer, tabeller og afsnit ser ud på følgende måde: se figur Vedlagt er en cdrom i UNIX-format, med bilag. Der henvises på følgende måde: bibliotek/filnavn. Bagerst i rapporten er komponentliste og fysisk diagram samt el-diagram, der er på en folde-ud-side. Som notation for aktiv lav er det valgt at benytte en asterisk, f.eks. AS*. Aalborg, d. 29. maj 2002 Rasmus Abildgren Christian Rostgaard Andersen Lisbet Andersen Emil Feldborg Buskgaard Jesper Højvang Jensen Simon Bjerg Mikkelsen Rikke Ottesen vii

8 Indhold 1 Problemanalyse Markrobot Skanningsmetoder Test af sonar Valg af skanningsmetode Analog til digital-konvertering Mikroprocessor Kravspecifikation Systembeskrivelse Afstandsmålerens funktion Projektets begrænsninger Projektets fremtid Forudsætninger Kvalitetsfaktorer Accepttestspecifikation Blokopdeling Specifikke krav til blokkene Blokintegrationstest Sonar Krav Modularisering Udgangstrin Indgangstrin Amplitudeudskilning Bloktest Sonarinterface Testspecifikation Modularisering AD-konvertering Kontrolregister Kontrollogik viii

9 INDHOLD 5.6 Implementering Bloktest Mikrocomputer Krav Modularisering Mikroprocessor Power-up-reset-kredsen Clock NMI-knap Hukommelsesområder Adressedekodning Interrupthåndtering ACIA Integration af moduler Bloktest Mikrocomputersoftware Krav til mikrocomputersoftware Modularisering Interfaces init behandlsample PCkommunikation intsample Test af mikrocomputersoftware Pc-software Krav Modularisering Implementation Bloktest Blokintegration Testene Samlet konklusion for målejournaler Konklusion Accepttest Testopstilling Testudstyr Dækningsområde Variabel zonestørrelse Menu ix

10 INDHOLD 10.6 Fejlhåndtering Konklusion Perspektivering Litteraturliste 106 A Princip for sonar 108 A.1 Lyd A.2 Dopplereffektens påvirkning B Test af sonarenheder 112 B.1 Forsøgsopstillingerne B.2 Test af afstand B.3 Test af vinkel B.4 Fejlkilder og usikkerheder B.5 Konklusion C Bloktests 130 C.1 Testjournal - mikrocomputerhardware C.2 Testjournal - sonarblok C.3 Testjournal - sonarinterface D Protokol 136 E Interruptrutine til sampling 139 F Formler for stedbestemmelse 140 G Blokintegrationstestjournaler 143 G.1 Testjournal - mikrocomputer/sonarinterface G.2 Testjounal - sonar/sonarinterface G.3 Testjournal - mikrocomputersoftware/hardware G.4 Pc-software/afstandsmåler H Komponentliste 150 I Fysiskdiagram 152 J Eldiagram 153 x

11 Indledning I øjeblikket bliver der forsket meget i autonome køretøjer og robotter. På afdeling for proceskontrol på Aalborg Universitet arbejdes med udviklingen af en autonom markrobot til kortlægning af marker. Markrobotten har til opgave at kortlægge markernes ukrudtsvækst og jordens næringsindhold. Denne kortlægning kan bruges til præcisionsdyrkning, som medfører, at mængden af pesticider og gødning kan begrænses, da doserne kan tilpasses forskellige steder på marken. På den måde kan forurening af vandløb og grundvand begrænses til et minimum. På markrobotten er placeret en styrecomputer, der ved hjælp af GPS og en defineret rute kan styre markrobotten omkring på marken. Dette system kan ikke se, om der er nogen forhindringer direkte foran markrobotten. Derfor skal markrobotten forsynes med en intelligent afstandsmåler, der forhindrer køretøjet i at kollidere med uforudsete forhindringer som f.eks. mennesker eller dyr. Afstandsmåleren skal ved hjælp af ultralyd undersøge, om der er forhindringer foran markrobotten, og hvor langt der er til eventuelle forhindringer. Afstandsmåleren skal selv kunne vurdere, om en forhindring er for tæt på markrobotten, for på den måde at kunne begrænse belastningen af styrecomputeren. Formålet med dette projekt er at designe og konstruere denne afstandsmåler, og herfra bliver projektets initierende problem formuleret: Hvorledes kan en afstandsmåler konstrueres, så den ved hjælp af ultralyd kan detektere en forhindring foran en autonom markrobot. I projektet vil afstandsmåleren blive konstrueret. Styrecomputerens interface til afstandsmåleren vil blive emuleret af en pc med Linux-styresystem. Afstandsmålingen vil blive foretaget med et sonarmodul, og til den intelligente del af afstandsmåleren vil der blive konstrueret en mikrocomputer baseret på Motorola processoren. 1

12

13 1 Problemanalyse I problemanalysen analyseres forskellige problemstillinger, der har relevans for udviklingen af afstandsmåleren. Først vil det blive analyseret, hvilke krav markrobotten stiller til afstandsmåleren. For at vælge den bedste skanningsmetode vil tre forskellige metoder blive analyseret og testet. 1.1 Markrobot Markrobotten er designet til at køre rundt og indsamle oplysninger om markens tilstand. Mens den kører, skal den analysere markens afgrøder og uønskede vækster. Dette stiller nogle krav til markrobottens udforming, bevægelsesmønster og udstyr. Omkring udformningen og bevægelsesmønsteret er det oplyst, at markrobotten er ca. m bred, har en tophastighed på m s, og at bremselængden er på få cm. Det udstyr, der skal være robottens øjne, skal derfor kunne nå at detektere forhindringer så tidligt, at markrobotten kan nå at stoppe. Derfor vil det være hensigtsmæssigt at inddele farerne i tre zoner; en zone uden farer (grøn), en zone til farer, som robotten skal være opmærksom på (gul), og en zone, hvor den skal stoppe (rød). I fastlæggelsen af rød zone skal der tages hensyn til, at markrobotten kan holde på en mudret skråning eller lignende, og alene på grund af af sin vægt glide et stykke. Det antages, at en sikkerhedmargin på m er nok til, at markrobotten kan bringes til standsning under selv meget vanskelige forhold. Rød zone: Det antages, at objekter, der er i bevægelse, f.eks. en traktor eller løbende ko, vil være opmærksomme på forhindringer på deres vej og derfor vil styre uden om markrobotten. Derfor vil de objekter, som afstandsmåleren skal kunne opdage, være stillestående. Det, der afgør minimumsstørrelsen af den røde zone, hvor markrobotten skal stoppe, er bremselængden, den frekvens, omgivelserne skannes med, samt sikkerhedsmarginen. Det vil endvidere være ønskeligt, at den røde zones størrelse er så dyb, at objektet kan nå at blive målt to gange, i tilfælde af at første skanning ikke opdager objektet. Zonen skal derfor som minimum være så dyb, som den afstand markrobotten maksimalt kan flytte sig på to skanninger sammenlagt med sikkerhedsmargin. Den røde zones radius bliver således: rød zone skan maks sikkehedsmargin (1.1) Gul zone: Denne zone er defineret til at være aktiv, hvis et objekt befinder sig mellem den røde zone og grænsen for afstandsmålerens rækkevidde. 3

14 1.2. SKANNINGSMETODER Grøn zone: Denne zone er aktiv, hvis der ikke befinder sig noget i hele afstandsmålerens synsfelt. 1.2 Skanningsmetoder Til måling af afstand kan der anvendes flere forskellige teknologier. I dette projekt vil der kun blive set på måling ved hjælp af sonar. For yderligere information om denne teknologi og de krav, den stiller til dette projekt, henvises til appendiks A. Da det vælges at bruge sonarteknologi til afstandsmåling, kigges der nu nærmere på, hvordan området foran markrobotten kan dækkes. Løsningerne bedømmes ud fra følgende parametre, i prioriteret rækkefølge: Dækningsområde: Størrelsen af det område, som sonaren skal dække. Stabilitet: Hvor lang tid går der mellem, at der opstår fejl eller nedslidning af sliddele. Pris: Konstruktionsprisen for løsningen. Opdateringshastighed: Hvor hurtigt hele området kan skannes, da dette afgør størrelsen af den røde zone. Se ligning (1.1). Fejldetektering: Hvor gode er mulighederne for løbende kontrolmålinger. Efter overvejelser er der fundet følgende tre forslag, som vil blive uddybet: Array, bevægelig sonar og trigonometrisk stedbestemmelse Array Ved denne løsning placeres et array af sonarer i forskellige vinkler, så de samlet dækker det ønskede område. Princippet ses på figur 1.1. Der kan løbende udføres kontrolmålinger af, om sonarenhederne kan sende og modtage, ved at de udsendte signaler fra en enhed opfanges af de andre enheder. Skanningstiden for denne løsning afhænger af, hvor hurtig en enhed er til at skanne, da det antages, at alle enheder kan skanne samtidig. Dette kan godt lade sig gøre, hvis enhedernes signaler har forskellige frekvenser. Standardenheden, Acroname 9000, som er blevet udleveret, kan skanne for hver ms. Derfor kan minimumsdækningsområdet bestemmes ud fra ligning (1.2). min m m m (1.2) 4

15 KAPITEL 1. PROBLEMANALYSE Figur 1.1: Principtegning af array. Fordele Opdateringshastighed: Hurtig, da alle enheder kan måle simultant. Stabilitet: Robust, da der ikke er nogen bevægelige dele. Fejldetektering: Nem, da den kan udføres samtidig med afstandsmåling. Ulemper Pris: Dyr, da prisen for en vejrbestandig sonarenhed, Acroname 9000, med driver, Acroname 6500, er henholdsvis 27$ [Acroname, 2002b] og 34$ [Acroname, 2002a]. Opløsning: En høj opløsning kræver mange, dyre sonarenheder Bevægelig sonar I dette løsningsforslag placeres en sonarenhed på en stepmotor, der drejer sonaren rundt, så denne enhed dækker hele det specificerede område. Fejldetekteringen ved denne løsning skal udover test af sonarenheden også teste motoren. Testen af motoren består i at bestemme motorens position ved at lade en føler give et signal, hver gang motoren passerer en bestemt vinkel. Testen af sonarenenheden gøres ved at rette den mod en plade, som reflekterer lydbølgerne, og på den måde teste både aktuator- og sensorfunktionen. Dette er nødvendigt, da sonaren ikke kan sende og modtage samtidig. Skanningstiden for denne løsning afhænger af, hvor mange steps motoren skal have for at kunne dække hele skanningsområdet. 5

16 1.2. SKANNINGSMETODER Da den standardenhed, Acroname 9000, som er blevet udleveret, kan skanne for hver ms, kan skanningstiden, "!$#, bestemmes ud fra følgende ligning. "!$# &% "!$# ('*) + #,"-. (1.3) Hvor ' ) + #,"-. er antallet af vinkler, som skal skannes for at nå hele området og &% "!/# er modulets skanningstid. '0) + #,"-. er ubekendt. Minimumsdækningsområdet kan derved bestemmes ud fra ligning(1.4). min m &% "!$# ('*) + #," m (1.4) Figur 1.2: Principtegning af drejelig sonar. Fordele Dækningsområde: Stort, da sonarenheden kan drejes i en stor vinkel. Pris: Billigere end array et, da denne løsning kun kræver en sonarenhed og en stepmotor. En passende stepmotor, for eksempel type fra RS Components [Components, 2002], koster 227,10 kr. Opløsning: Mulighed for større opløsning end array et, da det er muligt at dreje sonarenheden i små trin. 6

17 KAPITEL 1. PROBLEMANALYSE Ulemper Stabilitet: Skrøbelig, da der er bevægelige dele i konstruktionen, som kan ødelægges af fugt og støv. Opdateringshastighed: Langsom, fordi sonaren skal drejes for hver måling og kun kan måle i en retning af gangen Trigonometrisk stedbestemmelse Ved at placere en vidvinkelaktuator og to sensorer på række på markrobottens forende, vil det være muligt at danne et billede af afstand og vinkel til de forhindringer, som er foran køretøjet. Dette princip er vist på fig. 1.3 Reflektionen af signalet fra aktuatoren opfanges af de to sensorer, og ud fra forsinkelsen på opfangelsen af signalerne på de to sensorer kan to ellipser dannes. Der, hvor de skærer hinanden, er objektet, og afstanden og vinklen til det kan beregnes. Ved flere objekter vil det være nødvendigt at separere de indkomne signaler for at afgøre placeringen af de enkelte forhindringer. Det antages, at skanningstiden er den sammen som i array-løsningen, og at minimumsdækningsområdet derved er det samme. Figur 1.3: Principtegning af trigonometrisk stedbestemmelse. Dette system har gode egenskaber mht. fejldetektering. Fejldetekteringen kan foregå ved at lade sensorerne opfange det signal, som kommer direkte fra aktuatoren. Opfanges det udsendte signal ikke, vil det kunne antages, at aktuatoren er i stykker. Hvis kun den ene sensor opfanger signalet, vil den anden sensorer være i stykker. 7

18 1.3. TEST AF SONAR Fordele Megen information: Ud fra den indsamlede information, er det muligt at bestemme objekters position meget præcist, og det kan forestilles, at det vil være muligt at danne et 2D-billede ud fra de indsamlede data. Præcision: Ved præcise beregninger kan denne løsning stedbestemme objekter så præcist, at markrobotten med et kort over stationære forhindringer på marken vil være i stand til finde ud af, om det fundne objekt er et af disse. Stabilitet: Robust. Ingen bevægelige dele. Fejldetektering: Simpel og præcis diagnostisering. Pris: Billigere end array, da det antages, at der er behov for mere end 3 sonarmoduler til array-løsningen. Ulemper Beregningskrævende: Især hvis flere forhindringer måles, vil separation og stedbestemmelse af de enkelte forhindringer kræve mange beregninger. Pris: Der kræves tre sonarer, hvilket gør denne løsning dyrere end løsningen med en stepmotor. 1.3 Test af sonar For at afgøre, hvilken teknologi, der er bedst, er de tre metoder sammenlignet på følgende punkter: Afstand: Denne test skal afgøre den minimale og maksimale afstand, som sonaren kan måle. Præcision: Ved måling på en kendt afstand skal det afgøres, hvor præcis afstandsbedømmelsen er. Vinkel: Hvor stor en vinkel dækker sonaren horisontalt ud fra lydens udbredelsesretning? Overflader: Hvilke overflader kan sonaren opdage? Resultater Beskrivelse af forsøgene kan findes i forsøgsrapporten i appendiks B. Det skal bemærkes, at den maksimale afstand er målt som den afstand, hvor sonaren kunne detektere en stor, plan, hård flade, som holdes vinkelret på lydens udbredelsesretning, hvilket giver en længere rækkevidde, end hvad der kan forventes ved måling på de objekter, der forekommer på en mark. 8

19 KAPITEL 1. PROBLEMANALYSE Derudover skal der gøres opmærksom på, at der blev brugt to forskellige sonarenheder i testen. Stereosonaren er ikke den, der skal bruges i marken, da den ikke er vejrbestandig. Det gør det svært at afgøre, om den endelige model kan opfylde de stillede krav. Det er dog sandsynligt, at der kan laves en tilsvarende eller bedre løsning ud fra en vejrbestandig sonarenhed, hvis der laves en driver, der passer dertil Delkonklusion Som det ses af testen, kan alle metoder bruges. Stereosonaren har en bedre rækkevidde end enkeltsonaren. Direkte foran sonarmodulet kan stereosonaren se en whiteboardtavle fejlfrit på 10 meters afstand, mens enkeltsonaren kan se den fejlfrit på 9 meters afstand. En person med sælskind kan stereosonaren se fejlfrit på 6 meters, mens enkeltsonaren kan se personen på 4 meters afstand. Det viste sig, at enkeltsonaren kan dække en horisontal vinkel på ca. 43, mens man med stereosonaren kunne se hele området foran vognen. 1.4 Valg af skanningsmetode Ud fra testen kan det ses, at den drejelige sonar kan se en forhindring på 65. Dette skønnes at være for lidt, da den skal bruge forholdsvis meget tid på at skanne området, som nævnt i afsnit Af array og trigonometri anses den trigonomiske løsning for at være den billigste, da der skal bruges flere sonarmoduler til array end til trigonometri. Desuden gives mulighed for at stedbestemme forhindringerne mere præcist, jvf. afsnit Derudover anses læringsværdien for at være større i den trigonometriske løsning, da driver og detekteringskredsløb skal opbygges fra bunden. Trigonometrisk stedbestemmelse ved hjælp af et selvbygget system vælges altså. 1.5 Analog til digital-konvertering Efter den analoge signalbehandling i testkredsløbet ser et opfanget ekko ud som på figur 1.4, hvor ekkoet modtages fra tiden 7"8 til 7:9. Det antages her, at ; khzsignalet opfanges i perioden 7<8 til 7 =, hvorved det filtrerede signals amplitude stiger. Den faldende amplitude fra 7>= til 7 9 skyldes så, at ; khz-signalet ikke længere er til stede. Hvis toppunktet på det behandlede signal kan detekteres, vil det give den eksakte tid for, hvornår sidste puls af signalet er modtaget. Toppunktet kan enten detekteres analogt, eller signalet kan først samples og dernæst detekteres digitalt. Alternativt kan en komparator detektere, når signalet når over en vis amplitude. 9

20 ? 1.5. ANALOG TIL DIGITAL-KONVERTERING Komparator Komparatorløsningen er den simpleste. En komparator sammenligner det filtrerede signal med en referencespænding. Hardwaremæssigt er det ganske simpelt, og softwaremæssigt skal der blot registreres, hvornår komparatoren går høj. Problemet er, at tidspunktet, hvor signalet registreres, afhænger af signalets amplitude. Der er ingen mulighed for at afgøre, hvor i tidsrummet 7"8 til 7 = på figur 1.4 signalet er ankommet. 7 = Figur 1.4: Oscilloskopbillede af et opfanget ekko. Da der, jvf. appendiks B, udsendes 16 pulser ved ; khz er varigheden af 78 til? ; khz Det giver ved 3 C en usikkerhed i afstand på ; m s ; ms ; ms cm Da dette er afstanden fra lydgiver til objekt til mikrofon, vil det, hvis afstanden fra lydgiver til objekt og afstanden fra objekt til mikrofon antages at være lige store, give en koordinatusikkerhed på ca. A 8 9"B C cm cm. Toppunktsdetektering = A Hvad enten toppunktet findes analogt eller digitalt, kan det findes ved at differentiere signalet og detektere, hvornår det differentierede signal krydser nul. I begge 10

21 KAPITEL 1. PROBLEMANALYSE tilfælde skal det undgås, at den støj, der uvægerligt vil være, detekteres som toppunkter. I det analoge tilfælde undgås dette nemmest ved at kombinere med en komparator, så kun toppunkter med en amplitude over et vist niveau detekteres. Referencespændingen kan eventuelt afhænge af tiden, så signaler tæt på transducerne kræver en større amplitude end signaler langtfra. På grund af reflektioner fra gulvet og den korte afstand til objektet er både støjen og signalet væsentligt større tæt ved udsendelsestidspunktet. Hvis spændingen, der sammenlignes med, falder med tiden, vil signaler derfor kunne detekteres på længere afstand. Den analoge toppunktsdetektering komplicerer hardwaren betydeligt, da der både skal være en differenskobling, en nulpunktsdetektor og eventuelt endnu en differenskobling til at afgøre, om det fundne ekstremum er et maksimum eller et minimum. Den digitale detektering vil kun kræve en A/D-konverter i hardware; til gengæld kompliceres softwaren. Det giver dog mulighed for en mere avanceret detektion; for eksempel kan det niveau, der sammenlignes med, være et gennemsnit af tidligere målinger, og dermed afhænge af baggrundsstøjen. Komparatorløsningen er simplere, men samtidig mere upræcis end toppunktsdetekteringen. Hvis det ønskes at detektere mere end ét objekt, vil komparatoren få problemer, hvis to reflektioner ankommer lige efter hinanden og overlapper. Komparatoren vil kun detektere de to ekkoer som ét signal. Sampling af målingerne giver derudover mulighed for at implementere fejldetektering. Softwaren kan verificere, at sensorerne modtager det signal, der går den direkte vej fra aktuator til sensor uden først at blive reflekteret af et objekt. Da der med den digitale toppunktsdetektering tillige er mulighed for at ændre detekteringsstrategi ved en simpel omprogrammering, vælges denne løsning, såfremt den givne mikroprocessor er hurtig nok til at håndtere dataene. 1.6 Mikroprocessor Den anvendte MC68HC000-mikroprocessor har en clockfrekvens på MHz. Hvis der eksempelvis ønskes en opløsning ned til ca. cm, vil lyden skulle rejse i omtrent D cm ; m s (1.5) hvor to-tallet skyldes, at lyden skal rejse både frem og tilbage. Da aktuator og sensor sidder forskudt, er to-tallet en tilnærmelse. Ovenstående giver en samplingsfrekvens khz, hvilket giver for hver sample. khz ;@ clockcykler (1.6) 11

22 1.6. MIKROPROCESSOR Det er ønskværdigt at sample vha. en interruptrutine. Hvis mikroprocessoren modtager en forespørgsel fra pc en via RS232-forbindelsen, kan det nemt risikeres, at behandlingen tager længere tid end 470 clockcykler, hvorved der mistes samples. Hvis der, hver gang der skal samples, genereres et interrupt med højere prioritet end den serielle kommunikations, kan der både samples og kommunikeres med pc en på én gang. Ifølge [Clements, 1997, s. 959] tager det 44 clockcykler at håndtere et såkaldt vektoriseret interrupt. Tiden for en anden type interrupt, autovektoriseret interrupt, er ikke fundet, men antages at være i samme størrelsesorden. I appendiks E findes assemblerkoden til en interrupt-rutine, der tager 136 clockcykler at eksekvere. Interruptet tager dermed 180 clockcykler pr. sample, hvilket rundes op til 200 clockcykler pga. førnævnte antagelse. Det giver et overskud på ;@ clockcykler pr. sample ved en nøjagtighed på cm. Der er således tid nok til at sample med en interruptrutine. Processoren kan derudover sættes til sideløbende at behandle dataene. Den maksimale frekvens, der kan samples med vha. en interruptrutine, bliver ca. MHz clockcykler ; khz (1.7) AD-konverteren bør som minimum være hurtig nok til at sample khz som i eksemplet. Samplingen skal begynde på foranledning af et signal fra en pulsgenerator, der giver khz-signal. Når signalet er samplet, skal der være et ben, der genererer et interruptsignal. Waitstates ved læsning fra ADC en er uønskede pga. tidskravene til interruptrutinen. Pulsgeneratoren kunne f.eks. være en multivibrator, men der opnås større fleksibilitet, hvis der kobles en programmerbar timer/tæller til mikroprocessoren, der evt. kan tælle på MHz-clocksignalet eller ; khz-clocksignalet fra aktuatoren for at spare en oscillator. Med en sådan enhed tilkoblet kan samplingsfrekvensen ændres udelukkende vha. software. 12

23 2 Kravspecifikation I kravspecifikationen udarbejdes der, på bagrund af kapitel 1, en beskrivelse af det, der skal konstrueres i forbindelse med projektet. I følge SPU-modellen skal kravspecifikationen også indeholde en blokopdeling, og de specifikke krav. Disse er placeret i næste kapitel. 2.1 Systembeskrivelse Den afstandsmåler, der skal udvikles i dette projekt, tænkes anvendt på et autonomt køretøj, en markrobot. Markrobotten styres af en PC104-industricomputer, og al kommunikationen foregår vha. en CAN-bus. Afstandsmåleren skal konstrueres vha. et mikroprocessorsystem baseret på en motorola processor. Den skal kommunikere med PC104 og med det elektronik, der skal stå for selve afstandsmålingen. Robotten, og dermed afstandsmåleren, skal primært anvendes fra marts til oktober i al slags vejr, hvilket stiller krav til elektronikkens holdbarhed. Det konstruerede system skal, når det bliver monteret på det autonome køretøj, kunne opdage objekter, der ikke er indtegnet på robottens kort, således at køretøjet ikke kolliderer med disse. Systemet skal arbejde med en farezone, og når zonen ændres, skal systemet give besked til den centrale computer. 2.2 Afstandsmålerens funktion Det er ud fra analysen besluttet, at afstandsmåleren skal besidde de følgende egenskaber: Målemetode: Afstandsmåleren skal kunne detektere objekter og måle afstanden til dem ved hjælp af ultralyd. Der anvendes et stereosonarprincip, hvor der er placeret en lydgiver, aktuator, på midten af markrobottens front. Denne udsender lyden, som reflekteres af et evt. objekt. Den reflekterede lyd opfanges af to sensorer, som er placeret på hver side af aktuatoren i en kendt afstand. Denne konstruktion giver via trigonometri mulighed for stedbestemmelse af objekter forude. For yderligere detaljer, se afsnit Objekt: Størrelsen af de objekter der skal kunne detekteres antages, på baggrund af testen i appendiks B, som minimum at være på størrelse med en stol. 13

24 2.2. AFSTANDSMÅLERENS FUNKTION Rækkevidde: Jo større rækkevidde, sonaren har, des længere tid er der til at stoppe eller undvige en eventuel forhindring. Da det af testen i appendiks B fremgår, at stereosonaren kan måle objekter på ; m s afstand lige forude, sættes dette som et minimumskrav til sonarens rækkevidde. Dækningsvinkel: Dette er den maksimale horisontale vinkel, hvori et objekt kan ses. Jo større denne vinkel er, des tidligere kan objekter, der nærmer sig fra markrobottens sider, ses. I testen, appendiks B, konkluderes det, at afstandmåleren kan se en stol med skind i hele markrobottens bredde i en afstand af H m. Derfor sættes det som krav til den endelige afstandsmåler, at den skal kunne måle i hele markrobottens bredde i alle afstande fra H til ; m. Hastighedsfølsomhed: Da markrobotten kan køre op til m s, er det vigtigt, at afstandsmålerens rækkevidde og dækningsvinkel ikke forringes af den ændring i signalets frekvens, som dopplereffekten jvf. afsnit A.2 forårsager. Zoneinddeling: Afstandsmåleren skal operere med en rød, en gul og en grøn zone, hvor rød zone betyder, at et objekt er så tæt på, at markrobotten skal standse, gul zone betyder, at et objekt er detekteret, men ikke er til umiddelbar fare, og grøn zone betyder, at ingen objekter befinder sig indenfor skanningsområdet. Zonernes størrelse angives ved en radius i forhold til aktuatorenheden. Rød zone skal kunne sættes fra PC104. Ved zoneskift skal afstandsmåleren sende besked til PC104 om, hvilken zone der skiftes til. Se figur 2.1. Markrobotten Sensor 1 Aktuator Sensor 2 θ Minimums rød zone Variabel rød zone Gul zone Grøn zone Blindt område x Figur 2.1: Således fordeler zonerne sig foran markrobotten. Den røde zone kan variere mellem den minimale radius, der er sikkerhedsmæssigt forsvarlig, og ud til grænsen for sonarens rækkevidde. Positionsoplysning: Koordinater for et detekteret objekt skal sendes til PC104. Fejldetektering: Da markrobotten er et autonomt køretøj, er det vigtigt, at afstandsmåleren selv kan detektere, om den virker, som den skal. Hvis en fejl 14

25 KAPITEL 2. KRAVSPECIFIKATION opstår, skal der sendes en fejlmeddelelse til PC104. Ud fra testen i appendiks B har det vist sig, at den første række samples efter udsendelsen af en puls både indeholder signal fra aktuatoren selv og en stor mængde reflektioner fra underlaget. Da disse signaler ikke kan bruges til selve detekteringen, skal disse bruges som test på, om sonarenheden virker. 2.3 Projektets begrænsninger I dette projekt implementeres følgende ikke: CAN-bus: For at simplificere kommunikationen med pc-delen erstattes CAN-bussen med en RS232-forbindelse. PC104: PC104-computeren erstattes med en ordinær IBM-kompatibel pc, da disse funktionsmæssigt ikke adskiller sig væsenligt fra hinanden. En IBM-kompatibel pc indeholder som standard et RS232-interface. Fejlhåndtering: Da markrobotten skal arbejde uden opsyn, er det nødvendigt med en høj grad af fejlkontrol. I denne forsøgsmodel nedprioriteres denne del imidlertid kraftigt. Der implementeres hverken watchdog-timer, checksum ved dataoverførsel eller validering af brugerinput til pc-programmet. Sonarenheder: Ud fra testen af de to sonartyper i appendiks B vælges det at benytte stereosonarerne. Disse er ikke konstrueret med vejrbestandighed for øje og er mere retningsbestemte end ønsket, da robotten ikke kun kan køre lige fremad. Ét objekt: Der detekteres kun ét objekt. Er der flere objekter i sonarens synsfelt, gøres der ingen forsøg på at separere signalerne fra hvert objekt. 2.4 Projektets fremtid Da hovedformålet med dette projekt er af læringsmæssig karakter, vil det kræve visse modifikationer, før afstandsmåleren kan implementeres. Ud over de punkter, som er nævnt i den foregående afgrænsning, vil det være at foretrække at anvende en mikrocontroller, som integrerer RAM, ROM, ADC m.m., da en enkelt chip typisk vil være både billigere og mere robust. Projektets formål er derfor nærmere at vise, at sonarprincippet fungerer. Hvis systemet implementeres på flere autonome markredskaber, der befinder sig i samme område, skal det overvejes, hvordan det undgås, at sonarerne forstyrrer hinanden. 15

26 2.5. FORUDSÆTNINGER 2.5 Forudsætninger I semesterets projektenhedsbeskrivelse er der stillet krav om, at der i projektet skal indgå mindst én defineret kommunikationsstandard i projektet, at brugergrænsefladen skal nedtones, at der skal anvendes interrupthåndtering, samt at systemet skal bringes i kørende tilstand og kunne interagere med brugeren. Ud fra projektoplægget og kursusudbuddet er det reelt givet, at der skal anvendes en Motorola processor. 2.6 Kvalitetsfaktorer Til at prioritere de forskellige grundegenskaber for projektet benyttes en 5-punkts skala, hvor 1 er ukritisk, 3 er vigtig og 5 er særdeles vigtig. Formålet med denne prioritering er at give et overblik over, hvor vægten skal lægges i udviklingsfasen. Pålidelighed: Da afstandsmåleren skal places på et autonomt køretøj, er det vigtigt, at der opstår meget få fejl, da dette både kan resultere i, at markrobotten kører ind i et objekt og går i stykker, og at dyr/mennesker kan blive påkørt og pådrage sig alvorlige skader. Med en rød zone så stor, at alle indkommende objekter kan nå at blive detekteret mindst to gange før kollision, får én fejlslagen måling ikke de store konsekvenser. Det samme gør sig gældende, hvis der skulle opstå en fejl i overførelsen af signalet til computeren. Der skal indbygges fejlkontrol, således at en ødelagt sensor eller aktuator straks opdages, og der gives besked om at stoppe. Der tages i dette projekt ikke hensyn til EMC, hverken immunitet eller emission. Pålideligheden er vigtig, og der tages hensyn til den under udviklingen. Vægtning: 3 Vedligeholdelsesvenlighed: Da systemet opgave er af udviklingsmæssig karakter, se afsnit 2.4, er vedligeholdelsesvenlighed ikke noget, der vil blive vægtet højt, udover at der vil blive udformet en omfattende dokumentation. Dette er dog mere påtænkt næste punkt, udvidelsesvenlighed. Vægtning: 2 Udvidelsesvenlighed: Systemet bør være yderst veldokumenteret, da systemet kun er en prototype, og der derfor skal foretages en del udvidelser og ændringer, inden det færdige system er fuldt funktionelt. Vægtning: 4 Brugervenlighed: Da systemet i den færdige version ikke skal kommunikere med en bruger, og da det kun er i forbindelse med fejlfinding og vedligeholdelse, 16

27 KAPITEL 2. KRAVSPECIFIKATION en bruger kommer i nærheden af systemet, nedprioriteres brugervenligheden. Vægtning: 1 Genbrugbarhed: Designet af mikroprocessorsystemet vil måske kunne bruges i forbindelse med andre opgaver, der skal løses. Det samme kan store dele af de rutiner, der skal programmeres i forbindelse med kommunikationen over RS232. Der tages dog ikke hensyn genbrugbarhed under udviklingen. Vægtning: 1 Effektivitet: I forbindelse med objektdetekteringsalgoritmen samt overførelse af målinger til mikrocomputeren kunne der i designet gøres en del overvejelser omkring effektivitet, da disse vil blive afviklet flere gange end andre algoritmer. Det er valgt ikke at fokusere på optimering af algoritmer, indtil det samlede ressourceforbrug kendes. Vægtning: Accepttestspecifikation Dækningsområde: Dækningsområdet er beskrevet i afsnit 2.2. Dette skal testes i to separate forsøg. Rækkevidden af sonaren testes ved at placere en stol med sælskind uden for rækkevidden. Derefter skubbes afstandsmåleren langsom nærmere stolen. Når pc-programmet meddeler, at et objekt er detekteret, måles med et målebånd som kontrol, at de korrekte koordinater er fundet. Stolen skal som minimum kunne detekteres ; m fra afstandsmåleren. Dækningsområdet er specificeret til hele markrobottens bredde. Variabel zonestørrelse: Afstandsmåleren skal kunne ændre størrelsen af rød zone. Denne facilitet testes ved at placere et objekt i gul zone i en kendt afstand fra sonarmodulerne. Derefter ændres størrelsen på rød zone, så objektet er inkluderet i dette område. Pc-programmet skal nu meddele, at et objekt befinder sig i rød zone, og markrobotten skal standse. Menu: Pc-programmet skal være menubaseret, og der må ikke være menupunkter, som dækker over ikke-implementerede funktioner. Dette testes ved at afprøve, at alle menupunkter fungerer som beskrevet. Fejlhåndtering: Afstandsmåleren skal give besked, hvis der er noget i vejen med sensorer eller aktuator. Den kontrollerer, om de virker, ved i den første tid at lytte, om der kommer et signal direkte fra aktuator til sensor. Hvis der ikke kommer noget signal, må der være noget i vejen. Som test frakobles en sensor, således at der ikke kommer noget signal til denne. Den efterfølgende måling skal da give en fejlmeddelelse på skærmen, der fortæller, at sonarmodulet ikke virker. 17

28 3 Blokopdeling I dette kapitel opdeles afstandsmåleren i blokke, og interfacet mellem de enkelte blokke defineres. Dermed kan de enkelte blokke konstrueres og afprøves forholdsvis uafhængigt af hinanden. Til sidst beskrives de test, der afgør, om blokkene er i stand til at interagere på tilfredsstillende måde. Desuden er der tegnet et hierakisk blokdiagram over afstandsmåleren, som ses i figur 3.7. Dette afsnit indeholder de specifikke krav, der i SPU modellen er en del af kravspecifikationen. Afstandsmåleren opdeles i de på figur 3.1 viste blokke. Blokke uddybes i nedenstående beskrivelse. Figur 3.1: Overordnet blokdiagram for afstandsmåleren. PC104-blokken er en færdigudviklet passiv blok, og er derfor stiplet. Sonaren skal, på ordre fra sonarinterfacet, udsende et akustisk signal og opsamle eventuelle reflektioner fra objekter forude. Disse reflektioner skal videresendes som analoge signaler til sonarinterfacet. Sonarinterfacet skal både konvertere det analoge signal fra sonaren til et digitalt signal, som afstandsmålerens mikrocomputer skal kunne behandle, og trigge aktuatoren i sonarenheden, på ordre fra mikrocomputeren. Mikrocomputerens hardware udgøres af en mikroprocessor og den dertil hørende RAM, ROM, adressedekoder osv., samt et RS232-interface, der konverterer elektrisk og logisk mellem mikrocomputerens parallelle databus og RS232-standardens serielle bus. Mikrocomputerens software skal behandle det indkomne signal og beregne afstanden til et evt. objekt. Denne beregnede afstand skal sammenlignes med 18

29 KAPITEL 3. BLOKOPDELING de zoner, som pc en har angivet, og hvis zonen er ændret, skal der sendes besked til pc en via RS232-interfacet. Pc-sofwaren er et testredskab, der skal være et simpelt brugerinterface til afstandsmåleren. Det skal både være muligt at ændre zonernes størrelse og at se på monitoren, når zonerne ændres. PC104 Er en passiv del af dette projekt. Dens eneste opgave er at køre pc-softwaren, og den vil derfor ikke blive beskrevet nærmere. 3.1 Specifikke krav til blokkene I det efterfølgende beskrives hver blok nærmere, og der opstilles konkrete krav til input, output og funktionalitet. Som standard er forsyningen til alle hardwareenheder H V og V Sonar Sonarblokken skal ved signal fra interfacet udsende et pulstog og skal efterfølgende kunne opfange den reflekterede bølge igen. Se figur 3.2. Figur 3.2: Funktionsdiagram for sonardelen Input Inputtet er et digitalt højt/lavt TTL-kompatibelt-signal. Sonarenhederne skal aktiveres på signalets opadgående flanke. Signalet er højt i hele den tid, der samples, 19

30 @ 3.1. SPECIFIKKE KRAV TIL BLOKKENE hvilket vil sige ca. den tid lyden er om at rejse m frem og tilbage. Da det er usandsynligt at der kommer reflektioner fra objekter længere væk end m, stoppes samplingen ved denne afstand. Dette giver: D m ; m s s (3.1) Endvidere modtages ultralyd i frekvensspektret mellem ; khz og ; H khz alt efter hastigheden på markrobotten (se afsnit A.2). Sensorerne skal kunne detektere ekkoet i dette spektrum. Ud over den almindelige forsyning er der en A H V DC forsyning til denne blok. Funktion Når der kommer signal fra mikrocomputeren, skal sonarblokken generere en puls på ; ms med en frekvens på ; khz, som aktuatoren omdanner til ultralyd. Reflektioner fra objekter skal kunne detekteres i hele vognens bredde i området fra H m til ; m foran vognen. Derefter skal to andre sonarenheder opfange den ultralyd, der reflekteres. Disse signaler skal behandles, så der fås et analogt signal med en spænding, der er proportional med den reflekterede bølges amplitude, og hvor andre frekvenser end ; khz EI; H khz er sorteret fra. Output Outputtet af denne blok er henholdsvis et akustisk ; khz-pulstog og et behandlet, analogt elektrisk signal fra hver af de to sensorer. De elektriske signalers amplituder skal være mellem og H V Sonarinterface Denne blok er bindeleddet mellem sonarblokken og mikroprocessoren. Den skal give det signal, der aktiverer aktuatoren, og den skal sample sonarblokens output, så mikrocomputeren kan viderebehandle signalet. Se figur 3.3. Figur 3.3: Funktionsdiagram for sonarinterfacedelen 20

31 KAPITEL 3. BLOKOPDELING Input Grænsefladen til mikrocomputeren er et kontrolregister, som kobles til adresse-, data- og kontrolbus. Kontrolregistrets tre mindst betydende bit skal styre samplingen. Hvis der skrives et nul i registeret, skal samplingen stoppe. Andre værdier skal starte samplingen ved en frekvens mellem khz og khz. Ved reset af mikrocomputeren skal dette register nulstilles, således at en skanning ikke er startet ved opstart af mikrocomputeren. Blokken får to forskellige chipselects fra mikrocomputeren: Ét til læsning af samples og ét til skrivning til kontrolregistret. Der stilles ikke noget krav om, at der skal kunne læses fra kontrolregistret. Inputtet fra sonaren er det i sonarblokken filtrerede og behandlede analoge signal fra hver af de to sensorer. Funktion Mikroprocessoren skal kunne sætte en måleserie i gang ved at sætte kontrolregisteret til en værdi forskellig fra nul. En udgang trigger sonarblokken til at udsende et akustisk signal. Derefter skal ADC erne med et variabelt interval sample signalet fra sensorerne. Der skal genereres et interrupt til mikroprocessoren, når en sampling foreligger. Når kontrolregistret sættes til nul, skal samplingen stoppe. Output Outputtet er henholdsvis et højt/lavt TTL-signal til sonarenheden og to 8-bit samples, som skal kunne aflæses af mikrocomputeren som ét 16-bit register, samt et interruptsignal, når de samplede data foreligger Mikrocomputer hardware Motorola processoren skal kunne aktivere sonarerne gennem sonarinterfacet og skal foretage beregninger på de indkomne data fra sonaren og skal bestemme, i hvilken zone et evt. objekt er placeret. Dette skal kunne meddeles til pc en, så den ikke skal bruge ressourcer på beregninger. Se figur 3.4. Input Input til mikrocomputeren kommer enten fra pc ens RS232-udgang eller fra ADC en i sonarinterfacet. Input fra ADC en skal forbindes til databussen og være memory-mapped, således at det kan tilgås fra mikrocomputeren som et hukommelsesområde. Sonarinterfacet sender et interruptsignal, når samplede data kan aflæses. 21

32 3.1. SPECIFIKKE KRAV TIL BLOKKENE Figur 3.4: Funktionsdiagram for mikrocomputerens hardwaredel. Et RS232-interface skal ligeledes kobles til mikroprocessorens adresserum og skal kunne modtage en byte af gangen. Det skal modtage data efter RS232-standarden med 9600 baud, 8 databit og ingen paritet. De modtagne data skal mikroprocessoren kunne aflæse parallelt. Funktion De data, der kommer fra ADC en, skal lagres og senere behandles. Mikrocomputeren skal være hurtig nok til at kunne sample khz (se afsnit 1.6) og skal have lager nok til at kunne gemme to serier samples for hver kanal én serie, der arbejdes på, og én serie, der som en fremtidig mulighed skal kunne overføres til pc en. Hvis sonarens rækkevidde er m, skal der derfor som minimum bruges D(J m KML bytesn ; khz bytes (3.2) s pr. kanal pr. serie. J er den største længde fra afstandsmåler til objekt, er lydens hastighed og K er samplingsfrekvensen. Med to kanaler og to serier, der skal kunne gemmes, giver det et mindstekrav til arbejdshukommelsen på 4000 bytes. Der skal konverteres mellem RS232-standarden og M68k ens parallelle databus. Hjælpekredse sørger for konverteringen fra mikroprocessorens parallelle databus til den serielle RS232-standard og muliggør den nødvendige spændingskonvertering. 22

33 KAPITEL 3. BLOKOPDELING Output Output fra mikrocomputeren sker på flere forkellige niveauer. Sonarinterfacet og RS232-forbindelsen skal være på adressebussen, så de kan tilgås som almindelig hukommelse. Databussen bruges til at overføre data mellem mikrocomputeren og de eksterne enheder, og kontrolbussen styrer overførsel på databussen Mikrocomputer software Mikrocomputerens software skal gemme samples fra sonarinterfacet til senere beregninger, håndtere forespørgsler fra pc en, detektere toppunkter i de indkomne samples, beregne et objekts placering ud fra eventuelle toppunkter og skal give signal til pc en, når et objekt kommer ind i den røde zone. Se figur 3.5 Figur 3.5: Funktionsdiagram for mikrocomputerens softwaredel. Input Softwaren kan aflæse ADC en og RS232-interfacet som enhver anden hukommelsesadresse, da mikrocomputeren arbejder med memory-mapped I/O. Der genereres et interrupt fra ADC en, når samples foreligger, og fra RS232-interfacet, når data er sendt eller modtaget. 23

34 3.1. SPECIFIKKE KRAV TIL BLOKKENE Funktion De data, der kommer fra ADC en, skal gemmes i lageret og behandles med henblik på at finde koordinaterne til objekterne. Disse koordinater skal sammenlignes med de grænser, som zonerne angiver. Hvis der er kommet et skift, skal dette sendes videre til pc en via RS232. Data fra RS232-forbindelsen skal fortolkes og behandles i henhold til den protokol, der er beskrevet i appendiks D. Output Mikrocomputeren skal generere forskellige signaler. Den skal sende oplysninger om zoner til pc en i henhold til protokollen. Sonarinterfacet trigges, når der skrives en værdi forskellig fra nul i dets kontrolregister. Det får det akustiske signal til at blive udsendt, hvorefter der samples, indtil der skrives et nul i kontrolregisteret. Mulige udvidelser Softwaren skal være forberedt på, at det fra mikrocomputeren i fremtiden skal være muligt at styre den frekvens, hvorved der samples i ADC en. Der kan udvides med en funktion til at overføre en hel serie samples til pc en til uddybende analyser Pc-software Der skal udvikles et program til en IBM-kompatibel pc, der kan kommunikere med afstandsmåleren via RS232-interfacet. Programmet skal emulere markrobottens styrecomputer og skal anvendes til test af afstandsmåleren. Det skal viderekommunikere til brugeren, når mikrocomputeren sender besked om zoneskift, og det skal på brugerens kommando kunne bede mikrocomputeren om zone og koordinater. De informationer, der overføres mellem mikrocomputer og pc, skal udskrives på skærmen. Programmet og den protokol, der kommunikeres med, skal være forberedt på at kunne ændre samplingsfrekvensen for afstandsmålerens ADC og på at kunne overføre den sidste serie samples. Formålet med de to sidstnævnte funktioner vil være at overføre samples til en pc til videre analyse med henblik på at optimere de algoritmer, der anvendes til detektion af reflektioner. Programmet er udelukkende et testprogram og skal ikke anvendes i en færdig markrobot. En fremtidig mulighed vil dog være at strømline softwareprotokollen, så dataoverførslerne pakkes ned på færre bytes. Af testhensyn skal dette i første omgang undlades. Se figur 3.6. Input Pc-programmet skal modtage input fra brugeren via tastaturet og fra afstandsmåleren via RS232-porten. Kommunikationen med afstandsmåleren foregår med den 24

35 KAPITEL 3. BLOKOPDELING Figur 3.6: Funktionsdiagram for pc-delen. protokol, der er defineret i appendiks D. Der skal kun anvendes et simpelt, dansksproget, tekstbaseret brugerinterface. Funktion Pc-programmet skal have følgende funktioner: O Der skal være et menusystem, som giver mulighed for at afprøve alle afstandsmålerens funktioner. O Ændring af størrelsen af radius for den røde zone. O Ved zoneskift skal ny zone og en evt. forhindrings koordinater fremgå på skærmen. O Der skal kunne spørges til status for afstandsmåleren, hvor afstandsmåleren returnerer den aktuelle zone og det sidst registrerede objekts placering. O Hvis afstandsmåleren har modtaget en ugyldig kommando, skal pc-softwaren når den modtager besked herom give besked på skærmen. O Hvis der opstår fejl i afstandsmåleren, skal der sendes et fejlsignal til skærmen. Output Programmet skal videresende brugerens forespørgsler til afstandsmåleren over RS232- interfacet ved hjælp af den protokol, der er defineret i appendiks D. 25

36 3.1. SPECIFIKKE KRAV TIL BLOKKENE Det skal vises på skærmen, når der modtages signal om, at afstandsmåleren har skiftet zone. Alle kommandoer, der sendes og modtages over den serielle forbindelse, skal udlæses til skærmen. Mulige udvidelser Der skal senere kunne udvides med følgende funktioner: O Mulighed for at hente sidste serie målinger og gemme dem i en kommasepareret fil. O Mulighed for at ændre ADC ens samplingsfrekvens. O Kontrol og generering af checksum ved kommunikationen og udlæsning til skærmen ved fejl. Figur 3.7: Hierakisk diagram over afstandsmåleren. 26

37 KAPITEL 3. BLOKOPDELING 3.2 Blokintegrationstest Hvordan test af de enkelte blokkes funktionalitet skal foregå, beskrives umiddelbart før designet af den enkelte blok. Det skal ligeledes sikres, at blokkene fungerer tilfredsstillende, når de sættes sammen. Derfor udføres nogle simple blokintegrationstest, hvori flere blokke indgår. Da kommunikationen mellem nogle af blokkene er næsten umulig at teste uden for kontekst, er det nødvendigt at teste blokkene i den beskrevne rækkefølge. Fremgangsmåden bliver derfor først at teste to blokke, og så tilføje én ekstra blok af gangen, så det forhåbenligt bliver nemt at lokalisere, imellem hvilke to blokke samspillet eventuelt kniber Mikrocomputer/sonarinterface Interaktionen mellem mikrocomputer og sonarinterfacet kan testes ved hjælp af et monitor-program. Når der skrives en værdi forskellig fra nul til interfacets adresse i hukommelsen, skal udgangen som trigger sonaren gå lav. Med et oscilloskop skal det kunne måles, at ADC en interrupter med samme frekvens som der samples med. Det periodiske interruptsignal skal stoppe igen, når kontrolbitten nulstilles. At der rent faktisk genereres et interrupt, og at AD-konverteren virker, kontrolleres lettest ved at implementere afstandsmålerens interrupthandler og afprøve, at den kan sample signalet på ADC ernes indgange korrekt. Signalet kan enten generes vha. en DC-strømforsyning eller en tonegenerator. Ved hjælp af monitorprogrammet kan de samplede værdier udlæses af hukommelsen og verificeres Sonarinterface/sonar Samspillet mellem disse to blokke testes ved at inddrage mikrocomputeren. Også her er det lettest at implementere interrupthandleren og logge en måleserie. Denne sammenlignes med en tilsvarende måleserie gemt fra et storage oscilloskop. Amplituderne skal følges tilnærmelsesvis ad, hvis det skal være en succes M68000-software/afstandsmåler-hardware Når al hardwaren fungerer, kan softwarens funktioner pga. protokollens opbygning afprøves med et terminalprogram uden pc-programmet som fejlkilde. Hvis der, når alle kommandoer i protokollen afprøves, altid returneres et korrekt svar, og der yderligere kommer signal, hvis en person træder ind foran afstandsmåleren, er testen bestået Pc-software/afstandsmåler Pc-programmet afprøves ved at køre det med den færdige afstandsmåler tilkoblet. Der skal returneres et korrekt svar fra afstandsmåleren, når alle menupunkterne afprøves, og det skal fremgå, når der skiftes zone. 27

38 4 Sonar I dette kapitel analyseres hvordan sonar-blokken skal opbygges. Sonaren bygges op af tre sonarenheder, en aktuator og to sensorer. Aktuatoren sender 16 pulser afsted med en frekvens på ; khz. Hvis der er et objekt foran markrobotten reflekteres signalet og sensorerne opfanger det. 4.1 Krav Blokkens samlede funktion er at generere og udsende et akustisk signal, modtage eventuelle reflektioner og give et signal ud, som afspejler amplituden af det reflekterede signal. Herunder er en opremsning af de i blokopdelingen stillede krav. Skanning aktiv(skanak) Input der fortæller at skanning skal startes. Signalet er et aktivt højt TTL signal. Aktuatorsignal ; khz akustisk signal af $; ms varighed. Sensor følsomhed ; khz til ; H khz akustisk signal. Amplitudesignal Ligefrem proportionalt med modtaget signals amplitude. Spændingsintervallet er mellem V og 4 V. Testspecifikation Blokken skal kunne frembringe et pulstog på ; ms af ; khz, når trigger signalet går højt. Dette signal skal transformeres om til et lydsignal, som reflekteres og opfanges af to sensorer. Derefter skal det filtreres. Dette testes ved at sammenligne resultatet af hvad sonarblokken giver af output, når den trigges, med en tilsvarende måling fra den indledende test, se appendiks B. Desuden monitoreres trigger signalet og outputtet fra udgangstrinnet. 4.2 Modularisering Funktionerne i blokken kan deles op i 5 moduler: pulsgenerering, udgangstrin, indgangstrin, amplitudeudskilning og udgangsforstærkning. Modulernes formål, og deres indbyggede funktioner, er illustreret på figur

39 KAPITEL 4. SONAR Figur 4.1: Funktions- og moduldiagram over det der skal implementeres i sonarenheden. Til input af modulerne er det givet, at alle som standard har adgang til PEQH V og A H V s forsyning. Modulerne beskrives i det følgende: Pulsgenerering Dette modul har til opgave at generere et ; khz pulstog på ; ms, når SkanAk signalet fra sonarinterfaceblokken går høj. Dette kan gøres med to funktioner: ; khz generator der frembringer et kontinuert ; khz signal. Pulsgenerator der trigger på opadgående flanke. Når dette sker, skal den lukke frekvensgeneratorens ; khz signal igennem i /; ms, hvilket svarer til 16 bølge længder. Signalet sendes videre til forstærkerkredsløbet. Input: TTL signal som er aktivt højt. Output: TTL signal, som giver en ; khz puls i ; ms, når inputsignalet bliver aktivt. Udgangstrin Dette modul har til opgave at forstærke og udsende det signal det modtager fra pulsgenereringen. Dette gøres med følgende funktioner: 29

40 4.2. MODULARISERING Aktuatorforstærker forstærker signalet fra pulsgeneratoren til det niveau som aktuatoren har brug for. Aktuator omformer pulstoget fra et elektrisk signal til et akustisk. Signalet skal spredes ud i minimum en ;H3 s vinkel og være så kraftigt at det skal kunne reflekteres på minimumsobjektet på en afstand af minimum ; m ud af centerlinjen, se afsnit 2.2 i kravspecifikationen. Input: Signalet fra frekvens- og pulsgeneratoren. Output: Tilsvarende akustisk signal. Indgangstrin Dette modul har til opgave at modtage, forstærke og filtrere det reflekterede akustiske signal. Dette kræver følgende 3 funktioner: Sensorer disse skal opfange det reflekterede akustiske signal og omforme det til et elektrisk. Sensorforstærker Har til formål at forstærke signalerne, fra sensorerne, op til et passende niveau til viderebearbejdning. Højpasfilter som filtrerer al støj under khz fra. Input: Akustisk signal i spektrummet mellem ; khz og ; H khz Output: Elektrisk signal med minimum amplitude på R pp. Amplitude udskilning Dette modul skal generere et signal, som er ligefrem proportionalt med amplituden på inputsignalet. Dette gøres med følgende funktioner: Ensretning For at udskille amplituden ensrettes signalet med en præcisionsensretter. Udglatning fjerner rippel på signalet, ved hjælp af et lavpasfilter, inden det forlader denne blok. Input: Elektrisk signal fra indgangstrin med et spektrum omkring ; khz Output: Signalet til sonarinterfacet hvor amplituden skal ligge mellem og 4 V Pulsgenerering Design For at frembringe et ; khz signal, kan der konstrueres en oscillator, eller en højere frekvens kan neddeles. Det er nærliggende at bruge det eksisterende khz signal, som kommer fra CPU en. 30

41 KAPITEL 4. SONAR Neddelingskredsløbet konstrueres således, at der først bliver delt med 5 og derefter med 4. Udover at udnytte de 800kHz til at frembringe 40kHz, kan denne samtidig neddeles til et 80kHz signal, som kan bruges i sonarinterfaceblokken. Pulsgeneratoren er forholdsvis enkel. Denne skal lukke 40kHz signalet igennem i ; ms. Da der i forvejen er plads i en PEEL konstrueres et tællekredsløb, der lukker signalet igennem, mens der tælles 16 pulse op, og derved åbnes i ; ms. Implementation Til programmeringen af PEEL sene benyttes højsproget ABEL. Ved hjælp af ABELs indbyggede clockfunktioner og when sætninger kommer koden til at se således ud: " Constant assignments "FlipFlops til tællerne count = [Q3,Q2,Q1,Q0]; count5 = [D2,D1,D0]; count4 = [P1,P0]; equations ImPuls = P1 &!(count == 15); count.ckl = clock; "De 16 40kHz pulser "Klokken "Tæller til 5 når skanning er aktiv count5 := (count5 + 1) &!(count5 == 4) & SkanAk; "Tæller en op i firetælleren hvergang der tælles 5 op. when (count5 == 4) then count4 :=(count4 + 1) & SkanAk else count4 := count4 & SkanAk; "Når count har talt de 16 pulser, stoppes der med at tælle. when ((count4 == 3) & (count5 == 4) & (count < 15) ) then count:= (count + 1) & SkanAk else count := count & SkanAk; Se hele koden i bilag peelkode/puls16.abl 4.3 Udgangstrin Til designet af forstærkerudgangstrinnet, er det primært to faktorer der spiller ind. Et, hvad kan aftageren, i dette tilfælde aktuatoren klare, og to, hvor godt kan spændingen på forsyningen udnyttes Aktuator Til aktuator vælges en ultralyds sender/modtager af typen MA40B7 som også er benyttet til testen af stereosonar princippet. 31

42 4.3. UDGANGSTRIN Normal frekvens 40kHz Tilladt input 100 Vpp 40kHz firkantpuls af en varighed på 0.4ms Forstærker Design Forstærkeren har til opgave at forstærke modulets inputssignal så det passer til aktuatoren. Da aktuatoren kan klare helt op til 100Vpp styres polerne på aktuatoren modsat, således at hvis der er H V på den ene pol, vil der være E H V på den anden og omvendt. På denne måde kan A H V forsyningen udnyttes optimalt. Implementering For at få stor amplitude på signalet, konverteres spændingen fra et signal med TTL niveau til et signal med A H V. Dette gøres med spændingskonverteren som kan ses på figur 4.2. For at spændingen kan blive modsat på aktuatorens to poler, skal signalet inverteres. Dette gøres med et inverteringskredsløb, som består af Q7 og R8 på figur 4.2. For at levere strøm nok til aktuatoren bruges der en fuld brokobling, som ses på figur 4.2 hvor de to sider, henholdsvis Q1-2 og Q3-4, kører modsat af hinanden. I serie med aktuatoren er koblet en modstand, R1, og en kondensator, C1. Modstanden er indsat for at undgå overbelastning af transistorene. Kondensatoren er indsat for at undgå at der ligger et spændingsfald over aktuatoren, når den ikke skal sende. Figur 4.2: Diagram over hele udgangstrinnet 32

43 UT UT KAPITEL 4. SONAR 4.4 Indgangstrin Forforstærker Til forforstærkning af signalet fra sensorerne bruges et kredsløb som er taget fra databladet for ultralydsmodulet, dog benyttes en TLE2074 operationsforstærker istedet for en Digrammet over forforstærkeren kan ses på figur 4.3. Indbygget i forforstærkeren er et førsteordens højpasfilter med en knækfrekvens ved khz, der sorterer lave frekvenser som 50 Hz lysnetsstøj væk. Efterforstærkning Da amplituden på signalet ikke er oppe på H efter forforstærkningen og det ikke er mulig at forstærke mere end H db med den valgte operationsforstærker, implementeres en ekstra forstærker med variabel forstærkning for at kunne justere signalet op til det ønskede niveau. Herefter går signalet videre til amplitudeudskilningsmodulet. Det samlede diagram for indgangstrinnet modulet kan ses på figur 4.3 R4S$S R3 1K R4 100K R6-15V C2 10n C3 0.01u V U1A 4 11 TLE R k var +15V U1D 4 11 TLE Til Amglit ude udskille r Y1 MA40B7 R1 3.9k R2 100k -15V -15V -15V -15V Forforstærker Efterforstærker Figur 4.3: Diagram over indgangstrin modulet i sonarblokken Fejl under opbygning Under opbygningen af dette modul blev der fundet meget 50 Hz støj, der kunne have forstyret afstandsmålingen. Efter nogen tids søgen blev det fundet, at det var en 1 m lang metalstang, der blev brugt til at holde sensorerne og aktuatoren, der forårsagede problemet. Problemet blev løst ved at koble metalstangen til 0 forsyningen, så den fik samme potentiale som resten af kredsløbet. 33

44 \[ \[ W \[ 4.5. AMPLITUDEUDSKILNING 4.5 Amplitudeudskilning For at udskille amplituden sendes signalet først gennem en dobbeltensretter til at ensrette signalet og derefter et lavpasfilter for at fjerne rippelspændingen. Fuldbølgeensretter Her bruges et kredsløb fra elektronikståbi, [Dahl-Pedersen et al., 1995, s 307], som har følgende overføringsfunktion: R V1W R YX Hvor forstærkningen, A, vælges til -1, da det efterfølgende filter ligeledes har en forstærkning på -1. Lavpasfilter Efter ensretningen vil der hovedsagelig være frekvenser omkring 80kHz. Dette ønskes dæmpet med mere end 60 db for at det ikke skal have indvirkning på ADkonverterne, som har en opløsning på 8 bit. Riplen fjernes med et andenordens lavpasfilter der har en knækfrekvens på 4 H khz hvilket er H dekade fra de khz der ønskes fjernet. Dette vil ikke indvirke på amplitudesignalet, da ind og udsvingningstiden for aktuator og sensor er på ca. /; ms tilsammen, hvilket giver en svingningsfrekvens på 4 H khz + # X Z R8 D1 10k R9 1N4148 D2 R11 10k 1N k Fra indgangstrin R7 10k V +15V 4 11 U2D R10 TLE k V -15V U2C TLE R19 1.3k R15 1.3k R k C7 100n C4 1n V V U2B TLE Til sonarinte rface Fuldbølgeensretter Lavpasfilter Figur 4.4: Diagram over modulet:amplitudeudskilning 4.6 Bloktest En bloktest er udført. Hele testjournalen kan læses i appendiks afsnit C.2 på side 131. Ud fra testen kan det konkluderes at sonarblokken virker. Ekkoet ligger, hvor det var forventet, derfor er testen bestået. 34

45 5 Sonarinterface Til kommunikation mellem sonar og mikrocomputer bruges et sonarinterface, der omdanner det kontinuerte, analoge signal fra sonaren til et diskret digitalt signal. I dette kapitel beskrives modularisering, design og test af sonarinterfacet. 5.1 Testspecifikation Blokkens funktion testes ved at tilkoble udstyr, der emulerer signaler fra mikrocomputeren. Der testes, om det er muligt at starte og stoppe en måleserie, og om samplefrekvensen kan styres. Der måles ligeledes, om værdierne udlæst fra ADkonverteren svarer til det, der bliver påtrykt. 5.2 Modularisering Sonarinterfaceblokken skal sende besked til sonarblokken, når der skal udsendes et akustisk signal. Desuden skal den sørge for at sample ekkosignalet og sende et signal til kontrollogikken, når en sampling foreligger. Denne sample skal gøres tilgængelig på bussen, når mikrocomputeren er klar. Dette munder ud i følgende moduler, som ligeledes kan ses på figur 5.1: Figur 5.1: Diagram over sonarinterfacets modularisering. 35

46 5.3. AD-KONVERTERING AD-konvertering: Konverterer sonarblokkens to analoge signaler til to 8-bit digitale signaler. Blokken skal kunne kobles direkte til databussen og kun sende data på bussen, når der kommer et CS* signal fra kontrolbussen. Kontrollogikken skal kunne aktivere AD-konverteren til at udføre en sampling, og AD-konverteringen skal sende et interrupt signal til interruptdekoderen, når en værdi er færdigkonverteret. Timer: Giver den frekvens, der skal samples med. Dette signal forbindes til kontrollogikken. Kontrolregister: Et register, som er koblet til bussen, hvorigennem kontrollogikken kan styres. Et bit skal være dedikeret til at angive, om der skal samples. Hvis dette bit nulstilles, skal samplingen stoppes. Bit et skal nulstilles, når CPU en resettes, for at undgå uhensigtsmæssige interrupts, før mikrocomputeren har initialiseret hele systemet. Kontrollogik: Til styring af AD-konverter, afsendelse af startsignal til sonarblokken og at håndtere afsending af interrupt til interruptdekoderen, når en sample foreligger. 5.3 AD-konvertering Der skal foretages en AD-konvertering af signalet fra sonarblokken. I modulspecifikationen beskrives det, hvad dette modul skal kunne. Det stiller følgende krav til ADC en: O Sampling ved khz O Ekstern samplingsclock O Kan sende et interrupt O 8-bit output Ud fra disse krav er der valgt en AD-konverter af typen ADC0820. Denne konverter har to forskellige modes, RD mode og WR-RD mode. RD mode kræver dog at CPU en skal vente, mens konverteringen foregår. Dette vil være uhensigtsmæssig, og derfor vælges WR-RD mode. Ved WR-RD mode sættes AD-konverteren til at lave en sample på WR*-benets opadgående flanke. AD-konverteren indikerer, at denne er færdig med at lave en sample, ved at sætte INT*-benet lavt. Interruptet vil være aktivt, indtil der er foretaget en læsning af data. Outputtet bliver skrevet på databussen, når RD* bliver aktiveret. RD* benet bliver koblet til chipselect et fra mikrocomputeren, og WR* kobles til kontrollogiken. CS*-benet er sat aktivt, da denne skal være aktiv for at RD* og WR* kan aktiveres. Timingdiagrammet kan ses på figur

47 KAPITEL 5. SONARINTERFACE Figur 5.2: Timingdiagram over ADC ens læse- og skrivecykler. CS* holdes lavt, og WR* modtager clockfrekvensen, der samples med. RD*-benet tilkobles ]P^M_a`cb * fra adressedekoderen. ADC en har Rjiki Red en øvre og nedre referencespænding. Disse, - f1g R d og - f,h, er afgrænset af og l*'nm. Reioi R Inputtet + # (det analoge signal) må maksimum og minimum være henholdsvis R d V og ld'nmpeq V. For at beskytte ADC for overspænding, vælges derfor en - f1g på 4 V, og outputtet fra sonaren tilpasses denne spænding, således at der er en margin at give af Timer Design En af de mulige udvidelser er, at det skal være muligt at sample ved forskellige frekvenser. Det vælges at implementere dette. Ud fra kontrolregisteret er det muligt at vælge 8 forskellige modes, hvoraf mode 0 er valgt til stop. De 7 resterende modes kan bruges til at vælge frekvens. En måde at gøre dette på, er at variere neddelingen af en højere frekvens. Det blev fundet passende at bruge en indgangsfrekvens på khz. I tabel 5.1 er det vist, hvilke samplingsfrekvenser der er valgt, og hvad der skal deles med for at få dem. Implementering Frekvensneddelingen er implementeret med en tæller og et nulstillingskredsløb, der nulstiller tælleren når denne når en bestemt værdi. Nulstillingssignalet bruges som clock til samplingen. Ved at variere den værdi, der nulstilles ved, kan samplingsfrekvensen reguleres. Nulstillingskredsløbet er derefter koblet til kontrolregistret. ABEL-HDL kode til nulstillings- og tællerkredsløb: 37

48 5.4. KONTROLREGISTER Mode Division Forventet khz khz 3 8 khz 4 7 ; khz khz? 6 5 khz 7 4 khz Tabel 5.1: De valgte frekvenser, med neddelingsfaktor og mode " Constant assignments equations count4 = [Q3,Q2,Q1,Q0]; "flipflops til tæller KonReg = [R2,R1,R0]; "Mode værdien "Tæller op indtil clock går høj, eller skanning ikke er aktiv. count4 := (count4 + 1) & SkanAk &!clock; count4.clk = clock; "Sætter clock høj, når tælleren når den ønskede værdi. when (KonReg == 1) then clock = (count4 == 9); "f/10= 8,0kHz when (KonReg == 2) then clock = (count4 == 8); "f/9 = 8,9kHz when (KonReg == 3) then clock = (count4 == 7); "f/8 = 10,0kHz when (KonReg == 4) then clock = (count4 == 6); "f/7 = 11,4kHz when (KonReg == 5) then clock = (count4 == 5); "f/6 = 13,3kHz when (KonReg == 6) then clock = (count4 == 4); "f/5 = 16,0kHz when (KonReg == 7) then clock = (count4 == 3); "f/4 = 20,0kHz Se hele koden i bilag peelkode/sonarint.abl 5.4 Kontrolregister Design Kontrolregistrets funktion er, når CS* går lav, at gemme værdien af de 3 mindst betydende bit på data bussen og holde dette, indtil CS* bliver aktiv næste gang. Blokopdellingen stiller som krav, at dette register skal være nulstillet, når CPU en initialiserer programmet. Dette gøres ved at koble CPU ens reset*-ben til registret og nulstille det, når reset* bliver aktiv. Implementering Implementeringen er foregået i ABEL-HDL højsprog, og koden til kontrolregistret ser ud som følger: 38

49 KAPITEL 5. SONARINTERFACE " Constant assignments equations KonReg = [R2,R1,R0]; DataBus = [D2,D1,D0]; when ((CS_Lat == 0) &(Reset == 1))then KonReg = DataBus else when ((CS_Lat == 1) &(Reset == 1)) then KonReg = KonReg else KonReg = 0; Se hele koden i bilag peelkode/sonarint.abl 5.5 Kontrollogik Kontrollogikken har til opgave at få AD-konverterne til at begynde en sampling og sende et skanning aktivsignal, SkanAk, til sonarblokken. Aktivering af AD-konvertere: WR* er det ben, der sætter AD-konverterne til at foretage en sampling. Samplingen skal sættes i gang, hver gang der kommer et clock-signal på clock, men er dog uønsket, hvis der samtidig læses fra ADkonverteren, eller hvis der foreligger en måling. Derfor må WR* ikke blive aktiv, hvis de to interrupts fra AD-konverterne samtidig er lave eller hvis ]0^c_a`b * er aktiv. Koden kommer til at se således ud:!wr = LADCINT # UADCINT & CS_ADC & clock; Skanning aktiv signal: SkanAk signalet skal være højt, når en skanning er i gang, og lavt, når den er stoppet. Når en skanning er stoppet, vil alle bit i kontrolregistret, KonReg, være lave. Koden for SkanAk kan derfor skrives således: when (KonReg == 0) then SkanAk = 0 else SkanAk = 1; Se hele koden i bilag CD-ROM peelkode/sonarint.abl Interrupt: Når en sampling er foretaget på begge AD-konvertere, skal et interrupt sendes til interruptdekoderen. Det er vigtigt, at begge AD-konvertere er færdige med at sample, før et interrupt bliver givet, da det ellers risikeres, at der bliver læst en ufuldstændig sample. På grund af pladsmangel i PEEL-kredsen til sonarinterfacet, placeres koden til interrupthåndteringen i interruptdekoderen. Koden skrives som følger: IRQ6 = IR1 # IR2; 5.6 Implementering Ud fra den designede PEEL kode og diagrammet, som ses på figur 5.3, er sonarinterfacet implementeret. 39

50 5.7. BLOKTEST Figur 5.3: Diagram over sonarinterfacet 5.7 Bloktest En bloktest er udført. Hele testjournalen kan læses i appendiks afsnit C.3 på side 132. Ud fra testen kan det konkluderes, at latch og frekvensdeler virker præcis som forventet. Alle forventede resultater blev opfyldt. Denne del af testen er derfor bestået. Endvidere kan det ud fra testen konkluderes, at ADC en virker. Ved målingerne med R d - fg var den ene AD-konverter 0x1 fra det forventede, men det har ikke den store betydning. Dermed er den samlede test bestået. 40

51 6 Mikrocomputer I dette afsnit beskrives mikrocomputeren. Først beskrives hvilke krav, der stilles til opbygningen, og hvordan kravene testes. Herefter modulariseres blokken, og de enkelte moduler designes. Til sidst vil en bloktest blive gennemført. Til test og fejlfinding af systemet bruges en TS2-monitor. Dette stiller nogle krav, som systemet skal overholde. I dette kapitel er [Clements, 1997] brugt som generel kilde. 6.1 Krav Mikrocomputeren skal indeholde en Motorola 68000(M68k). Under test af blokken bruges en debugger/monitor af typen TS2-MON. Denne monitor stiller nogle krav til mikrocomputeren, f.eks. skal der bruges en ACIA 6850 til seriel kommunikation, der skal reserveres plads i ROM- og RAM-områderne, og der stilles krav til placeringen af disse. Mikrocomputeren skal understøtte dataindsamling fra sonarinterfacet, og kommunikation med pc en gennem en seriel forbindelse. Begge skal kunne aktiveres ved hjælp af interrupts. Den serielle forbindelse følger RS232- standarden med 9600 baud, 8 databits og ingen paritet. Til dataopsamling stilles der krav om, at mikrocomputeren skal være hurtig nok til at kunne sample khz, og den skal have lager nok til at kunne gemme mindst 4000 bytes. Desuden skal der bruges hukommelse til kommunikation med pc og til programkoden. Mikrocomputeren skal give mulighed for at starte og stoppe skanningerne med sonaren Test af krav Mikrocomputeren testes ved, at de enkelte moduler sættes sammen, og systemet forbindes til en pc. I det første ROM-område brændes TS2-monitor programmet. Ved hjælp af TS2-monitoren kan det nu undersøges, om de forskellige moduler virker. De opstillede krav testes altså inddirekte gennem den samlede test, da blokken kun vil virke, hvis kravene er opfyldt. Yderligere testes interrupt fra pc en ved hjælp af et testprogram. 6.2 Modularisering For at overskueliggøre den efterfølgende designfase, opbrydes blokken i følgende moduler: 41

52 6.3. MIKROPROCESSOR Mikroprocessoren er selve M68k, der styres af en clock. Mikroprocessoren skal have en reset-knap, en power up reset funktion(pur), samt ROM og RAM. NMI-knappen genererer interrupts, der ikke kan maskeres væk (Non-maskeble interrupts). NMI-knappen skal være fri for prel. Adressedekoderen skal styre chipselect, så der på den måde skiftes mellem de forskellige kredse. Interrupthåndteringen skal sørge for, at mikroprocessoren modtager de ønskede interrupts. ACIA konverterer et parallelt datasignal til et synkront serielt signal og omvendt. Herunder beskrives konverteringen af spændingsniveauer fra RS232 til TTL og omvendt. I figur 6.1 ses, hvordan blokken er opdelt i moduler. Figur 6.1: Moduldiagram over mikrocomputerens hardware 6.3 Mikroprocessor Motorala har en række ben, der er nødvendige for minimumsystemet. Disse ben og deres funktioner vil blive gennemgået i dette afsnit. Pilene indikerer, om det er input (r ), output (s ) eller begge dele (t ) Basale ben CLKr Clockinputtet skal være et TTL-kompatibelt clocksignal med en frekvens mellem ; MHz og MHz. 42

53 KAPITEL 6. MIKROCOMPUTER HALT*t M68k aktiverer HALT*, når den ender i en tilstand, den ikke selv kan komme ud af igen. Det er valgt at sætte en lysdiode til denne for gøre debuging nemmere. Hvis HALT* aktiveres eksternt, vil M68k færdiggøre den cycle, den er igang med, og derefter vil den vente, indtil HALT* sættes høj. Dette giver mulighed for at køre singelstep. Desuden skal HALT* sættes lav samtidigt med RESET* for at nulstille. RESET*t Når RESET* aktiveres, starter M68k helt forfra med at hente en vektor, som peger på starten af programmet. Denne vektor ligger på adresse fire. Dette skal gøres ved opstart af systemet. RESET* fungerer ligeledes som output, når M68k benytter den til at nulstille eksterne enheder i systemet. Dette sker, når M68k udfører assemblerkomandoen reset Hukommelsensben Adressebuss M68k har en 23 bit adressebus, Au"8 til A=/9, hvilket gør det muligt at allokere =/9 adresser. Auv8, Au/= og Au$9 bruges, desuden til at indikere hvilket interruptniveau, der serviceres, under interruptrutinen. Auv er erstattet af LDS og UDS. Data bust Databussen er en 16 bit tovejsbus, der fungerer i samspil med AS*, R/W*, UDS*, LDS* og DTACK. AS*s AS* fortæller, at det er en gyldig adresse, der står på adressebussen. R/W*s Når R/W* er lav, betyder det, at M86k er i en skrivecyklus. I alle andre tilfælde er R/W* høj. UDS* og LDS*s UDS*(upper data strobe) og LDS*(lower data strobe) giver M68k mulighed for at skrive eller læse enten en byte eller et word. Når M86k skal skrive eller læse et word, er både UDS* og LDS* lave. Hvis det derimod er byte, der skal tilgåes, er enten LDS* eller UDS* lav, alt efter om det ønskes at tilgå lige eller ulige adresser. DTACK*r DTACK* (data transfer acknowledge) er et handshakesignal, som mikroprocessoren bruges til at afgøre, om data er registreret. Kommer der ikke noget DTACK*-signal til processoren, vil denne indsætte waitstates, indtil DTACK* kommer, eller der genereres en bus-error. 6.4 Power-up-reset-kredsen Til power-up-reset bruges en kredsløb, der er består af en speciel power-up-ic (TL7705). Kredsløbet kan ses i figur 6.2. Ved power-up skal RESET* og HALT* begge være aktive i mindst ms, for at mikrocomputeren opnår stabilitet. Tiden afhænger af den kondensator, der er 43

54 CLOCK Figur 6.2: Eldiagram for power-up-reset koblet til ben 3. Udfra databladet ( datablade ) kan det ses at kondensatoren kan beregnes udfra følgende formel: ]xw ] w 2y z { D h 9 (6.1) M F (6.2) Det er valgt at bruge en kodensator på } F. Når mikrocomputeren er stabiliseret, skal power-up-reset stadig kunne aktiveres, hvis tærskelspændingen overskrider intervallet fra ca. ; HxE~; V. Power-up-reset-IC en har 8 ben. Ben 1 er en referencespænding, mens ben 2 er manuel reset, 3 er koblet til en kondensator, 4 er GND, 5 og 6 er outputreset, 7 monitorerer spændingen, og ben 8 er forsyningsspænding. 6.5 Clock Clockgeneratoren (MCO1425B) skal generere et kontinuert firkantet signal med en frekvens på MHz. Clockgeneratoren er forbundet, som vist i databladet. Dioderne er indsat for at give en passende tærskelspænding. Dette kan ses på figur NMI-knap For at give brugeren mulighed for at afbryde programmet på mikorcomputeren, implementeres en NMI-knap. Når brugeren trykker på knappen, skal mikrocoputeren afbryde det, den er ved, og udføre en interruptrutine. For at undgå at der ved aktivering af NMI-knappen opstår prel, konstrueres en prelfjerner sammen med knappen. Kredsløbet for NMI-knappen kan ses i figur 6.4. Det boolske udtryk for NMI-knappen bliver følgende: D ' 0 ƒ* ƒ* (6.4) 44

55 KAPITEL 6. MIKROCOMPUTER Figur 6.3: Eldiagram for clockgenerator. Figur 6.4: Diagram over NMI-knap med prelfjerner. 45

56 6.7. HUKOMMELSESOMRÅDER Logikken til prelfjerneren bygges ind i den PEEL-kreds, der tager sig af interrupthåndteringen. 6.7 Hukommelsesområder For at man kan bruge TS2-monitoren til test og fejlfinding, skal TS2-monitoren kunne ligge i ROM, på adresse 0x til 0x0011FF. Der skal desuden være ledig RAM fra 0x40000 til 0x40FFF. Desuden stiller TS2-monitoren krav om, at ACIA-en skal tilgåes på adresse 0x og 0x Det vælges, at lægge sonarinterfacet fra 0x og 0x På den måde kan det vælges ved hjælp af 1 bit. Den ROM, som afstandsmålerprogrammet skal ligge i, kommer til at ligge fra 1200 til 39FFF, og det RAM, som programmet kan skrive i, vil ligge mellem og 4FFFF. I figur 6.5 kan det ses, hvordan hukommelses området adresseres. Figur 6.5: Adressering af hukommelsesområderne. Det kan altså ses, at der kan skelnes mellem de forskellige adresseområder ved hjælp af kun 3 bit. Desuden medtages en ekstra bit, så der er mulighed for at udvide med en ekstra ekstern enhed. De adressebits, der har betydning for hvilken kreds, der skal vælges, er A23, A22, A19 og A18. ROM en vælges når alle er lave, RAM en vælges, når A18 er høj, sonarinterfacet vælges, når A22 er høj, og ACIA en vælges, når A23 er høj. 6.8 Adressedekodning Til styring af hukommelsen konstrueres en adressedekoder. Adressedekoderen bygges i en PEEL22CV10A. 46

57 KAPITEL 6. MIKROCOMPUTER Chipselect Chipselect bruges til aktivering af de forskellige kredse. Hvilken kreds, der aktiveres, afhænger af adressen, adressestrobe(as*), upperdatastrobe(uds*) og lowerdatastrobe(lds*). Det logiske diagram for CS kan ses i figur 6.6. Figur 6.6: Logisk diagram over hvordan chipselect vælges på de forskellige kredse. For at der vælges en kreds, skal AS* være lav. Adressen bestemmer hvilket hukommelsesområde, der vælges, og UDS* og LDS* vælger, om det er den mest eller mindst betydende byte i hukommelsen, der skal selekteres. Desuden skal read/write (R/W*) være høj, hvis en af ROM-kredsene skal vælges, da der ikke kan skrives til ROM en. Til selektering af ACIA en benyttes desuden VMA* (valid memory address), der aktiveres, når VPA* (valid peripheral address) aktiveres. VPA* aktiveres, når ACIA ens adresse sendes ud på adressebussen. Da de brugte kredse er hurtige nok til at de kan tilgås uden waitstates, aktiveres data acknowledge (DTACK*), når en af hukommelseskredsene aktiveres med et chipselect (CS*) Output enable og read/write For at man kan læse fra ROM og RAM skal output enable(oe*) være aktiv. OE* sættes lav, når R/W* er høj, altså når der skal læses fra kredsen. write enable (WE*) på RAM en og R/W* på ACIA en sættes lav, når M68k s R/W* er lav, og AS* er lav. For at man kan benytte ACIA en, skal enable-benet(e*) forbindes til M68k s enable-ben. Det logiske kredsløb, kan ses i figur

58 d d 6.8. ADRESSEDEKODNING Figur 6.7: Logisk kredsløb for aktivering af output enable og read/write PEEL Logikken til styring af adressedekodningen kodes i en PEEL-kreds. Udfra overvejelserne om design af adressedekoder, kan sandhedstabellen sættes op, se tabel 6.1. Udgange A23 A22 A19 A18 AS* R/W* VMA* UDS* LDS* CS* j ˆ _Š CS* j ˆ _Œ CS* j_ ˆ _Š CS* j_ ˆ _Œ CS*_&b Ž _ CS* #,! #( d CS* #,! W!$! OE* j ˆ j_ ˆ 1 VPA* a Š u R/W*_&baŽ<_& j_ ˆ 0 0 Tabel 6.1: Sandhedstabel for adressedekoder. Da der ikke er plads til alle de nødvendige udgange i adressedekodnings-peel en er OE* ROM og RAM og R/W* ROM og RAM flyttet til den PEEL-kreds, der håndterer interrupts. Den udgang, der skal forbindes til M68k s DTACK*-ben, afhænger af PEELkredsens andre udgange. 48

59 KAPITEL 6. MIKROCOMPUTER Det boolske udtryk for udgangen kan skrives på følgende måde : m 2Z*]P š M68k ]P^ ROM_L ]0^ ROM_U ]P^ RAM_L ]P^ RAM U ]P^ ACIA ]P^ Sonar (6.5) Hvis CPU en selekterer en adresse, hvor på der ikke kommer DTACK* eller VPA*, vil den vente intil en af delene kommer og derved gå i stå. For at undgå dette er der implementeret bus-error, således at BERR* går aktiv, hvis dette forekommer, og processoren vil begynde at behandle en bus error exception. œp* ˆž $Ÿ ZD^ˆ /Ÿ Rž Z*ˆ /Ÿ m 2Z*]P Fˆž $Ÿ (6.6) 6.9 Interrupthåndtering Figur 6.8: Interrupt priority level sættes ved hjælp af et interrupt request Til at gøre mikroprocessoren opmærksom på, at en enhed vil snakke med den, bruges interrupt requests (IRQ). NMI-knappen, sonaren og ACIA en sender alle IRQ til mikroprocessoren. Det er valgt at benytte autovektoriserede interrupts. Disse requests skal have forskellig prioriotet, så mikroprocessoren kan vælge hvilken, der skal behandles først. NMI-knappen gives IRQ7*, sonaren gives IRQ6* og ACIA en gives IRQ5*. Udfra IRQ-nummeret skal interrupt priority-benene IPL0*, IPL1* og IPL2* fortælle mikroprocessoren, hvilken prioritet den indkomne IRQ har. En IRQ7* svarer til, at alle IPL-ben er lave. Dette kan ses i figur 6.8. Når der kommer en IRQ med høj nok prioritet i forhold til interruptmasken, udsender de tre function code-ben (FC) funktionskoden 7 for interrupt. Kommer der sammen med funktionskoden for interrupt en adressestrobe, vil der komme en interrupt acknowledge (IACK), med det nummer, som svarer til bitkombinationen, der sendes ud på adressebussens ben 1 til 3. Figur 6.9 viser, hvordan dette gøres. Kommer der en IRQ og en IACK med samme prioritet aktiverer PEEL en VPA, så der genereres et autovektoriseret interrupt. 49

60 6.9. INTERRUPTHÅNDTERING Figur 6.9: IACK genereres af adressebenene og funktionskoden, samt adressestrobe PEEL-kredsen Logikken til styring af interrupts styres af en PEEL22CV10A. I denne PEEL-kreds er medtaget to udgange, der ikke er afhængige af interrupts. Disse er medtaget da der ikke var nok udgange til at de kunne være en del af adressedekoderen, i tabel 6.1 ses sandhedstabellen for disse udgange. Udfra overvejelserne om design af interrupthåndtering, kan der opstilles en række logiske udtryk for de forskellige udtryk. For at gøre det nemmere at overskue PEEL-koden, skrives der først nogle udtryk for nogle variable, der derefter kan bruges som input i de følgende udtryk. Disse variable er følgende: E FC M68k FC M68k FC M68k ZD^ M68k (6.7) IACKH? E M68k A M68k A M68k A M68k (6.8) IACK E M68k A M68k A M68k A M68k (6.9) IACK@ E M68k A M68k A M68k A M68k (6.10) IRQ@ ON M68k IRQ@ M68k (6.11) IRQ@ OFF M68k IRQ@ M68k (6.12) 50

61 KAPITEL 6. MIKROCOMPUTER Udgangene fra PEEL-kredsen kan derefter opskrives med følgende logiske udtryk: Rž Z M68k R D ƒ* Z*]P š@ ZD]P H* Sonar D Z*]P šhd ACIA (6.13) D ƒ* Z M Sonar Z*]P D ZD] Z E ZD]P H (6.14) P D P D P P P P D D D D ACIA ACIA sonar Sonar ACIA ACIA D D ƒ* D D D Sonar Sonar D D (6.15) (6.16) (6.17) (6.18) (6.19) (6.20) 6.10 ACIA Som bindeled mellem mikrocomputerens bussystem og pc en bruges en IC af typen ACIA Denne er valgt, da TS2-monitoreren kræver det for at kunne kommunikere med en terminal. ACIA en har 15 ben til kommunikation med microprocessoren. Opkoblingen af disse beskrives i det følgende, pilene indikerer om det er input(j K&7>, ª1«), output( y 7> ª1«) eller begge dele(j,ke7 y 7> ƒª1«): D0-7t 8 parallelle datalinier, som forbindes til databussens D0-7. Grunden til at de forbindes til den mindst betydende byte er, at ACIA en skal tilgås på ulige adresser. CS0-2r Chipselect signaler. For at ACIA en bliver valgt skal CS0 og CS1 sættes høje og CS2 sættes lav. Hvis ikke alle er aktive kommunikerer ACIA en ikke med databussen. Det er valgt at sætte CS0 og CS1 høje og forbinde CS2 til adressedekoderens CS ACIA. RSr Register select. Her vælges enten transmitter- og kontrolregister eller modtagerog statusregister. RS bliver forbundet til A1 på adressebussen, så transmitterog kontrolregister ligger på adresse 0x800001, og modtager- og statusregister ligger på adresse 0x R/W*r Read/write. Her vælges, om der skal læses eller skrives i et register. I kontrolregistret og transmitterregistret kan der kun skrives, og fra modtager- 51

62 6.10. ACIA registret og statusregistret kan der kun læses. R/W* forbindes til CPU ens R/W* ben. Er Enable. Enable er en indgang, der er forbundet til Enable på M68k. Herfra sendes et clocksignal, med en frekvens på khz. Enable bruges til synkronisering af dataoverførsel på bussen. IRQ*s Interrupt request. Bruges til at sende et interrupt kald til mikrocomputeren. Dette ben kobles til interruptdekoderen. Udvælgning af registre, ses på tabel 6.2. RS R/W funktion 0 1 Kontrol register (CS) 0 0 Status register(sr) 1 1 Transmitter register(tdr) 1 0 Modtager register(rdr) Tabel 6.2: Register valg i ACIA en. Til kommunikation på RS232-siden findes der 5 ben, hvis signaler overholder TTL-niveauet. De forbindes, med undtagelse af DCD*, til RS232-driveren. TxDs & RxDr transmit data & reciever data input. Serielle datalinier til transmission og modtagelse af data fra pc en. DCD*s Data carrier detect. Dette ben bruges, hvis ACIA en er tilkoblet et modem. Da dette ikke er tilfældet her, skal dette ben sættes lavt. RTS*s Request-to-send. Dette ben indikerer, at ACIA en er klar til at sende data. CTS*r Clear-to-send. Dette ben indikerer, at modtageren er klar til at modtage data fra ACIA en. Desuden findes der to ben til timing af RS232 signalet. TxCLKs & RxCLKr Transmitter clock input & Reciever clock. Henholdsvis modtager og sender clock. Denne clock kan internt blive divideret med 1, 16 eller 64 afhængig af opsætningen af ACIA en. Opsætningen fra TS2- monitoren gør, at signalet divideres med 16. Disse ben forbindes til en clockgenerator. 52

63 ??? KAPITEL 6. MIKROCOMPUTER RS-232 driver Til konvertering mellem TTL og RS232 spændingsniveau, bruges en MAX232- kreds. Denne kreds har den fordel, at den bruger samme spænstig som resten af mikrocomputeren, og den behøver derfor ikke en ekstra strømforsyning. Til opkobling af denne bruges, det tilhørende diagram i databladet for MAX232 kredsen datablade. ACIA-timer Da det er valgt at køre med 9600 baud datarate i datatransmisionen, og ACIA en? er opsat til at dividere med 16, skal klokken til ACIA en være e, Hz H4 khz. Til generering af denne clock blev der fundet et krystal på ; MHz og en neddeler (MC14411). Denne neddeler blev koblet således, at den ifølge da- khz. tabladet gav en frekvens på H 6.11 Integration af moduler Efter at alle modulerne var færdigdesignede og implementerede, blev de integreret til den samlede blok. Dette blev gjort ved systematisk at samle mindre dele for at minimere mængden af fejl og gøre det lettere at finde de fejl, der var. Modulerne blev samlet i følgende rækkefølge: Først blev de komponenter, der kunne testes enkeltvis, testet for at undgå problemer med defekte IC er. Derefter blev reset-kredsløbet testet med en logisk tester, ved at trykke på reset-knappen og se, at der gik de specificerede ms før RESET* og HALT* går høje. Derefter blev mikroprocessoren forbundet til clocken og reset-kredsløbet, og alle databenene blev sat lave. AS* blev forbundet til DTACK*, og det blev kontrolleret med et oscilloskop, at DTACK* oscillerede. Derefter blev resten af systemet opbygget og debugget, og der blev foretaget tests af, at systemet kunne kontaktes gennem RS232-forbindelsen. Testen af dette blev foretaget ved at brænde TS2MON ned i ROM en og tænde for mikrocomputeren med serielforbindelse til en laboratoriecomputer. På laboratoriecomputeren benyttedes hyperterminalen, som var indstillet til at køre serielt med 9600 baud, 8 bit og ingen paritet, og da mikroconputeren skrev: #TSBUG 2 Version # # # konkluderedes det, at de centrale dele af mikrocomputeren virkede. For at teste at interrupthåndteringen virkede blev der lavet en teststub, som bestod af to procedurer; Main, som kaldte sig selv uden at lave noget, og en interruptrutine, som blev kaldt når ACIA en modtog data. Den hentede det, der lå i ACIA ens dataregister og lagde det tilbage igen, hvilket gjorde at ACIA en sendte 53

64 6.12. BLOKTEST det igen. Denne test sandsynliggjorde, at interrupthandleren virkede. Teststubben er lagt ved på cd ( testkode ) 6.12 Bloktest For at teste at mikrocomputeren lever op til de stillede krav, testes den som beskrevet i afsnit Dvs. test af at mikorcomputeren kan kommunikere med pc en, og test af interrupts. Da disse tests allerede er foretaget under integrationstesten, konkluderes det at blokken virker. 54

65 7 Mikrocomputersoftware I dette kapitel beskrives den software, der styrer mikrocomputeren. Softwaren benytter interrupts fra ACIA en til kommunikationen med pc en og interrupt fra sonarinterfacet til indhentning af samples. Når der ikke kommer interrupts køres en løkke, hvor data fra sonarinterface og kommandoer fra pc behandles. 7.1 Krav til mikrocomputersoftware Mikrocomputerens software skal gemme samples fra sonarinterfacet til senere beregninger, håndtere forespørgsler fra pc en, detektere toppunkter i de indkomne samples, beregne et objekts placering ud fra eventuelle toppunkter og give signal til pc en, når markrobotten kommer ind i en ny zone. Softwaren kan aflæse ADC en og ACIA en som enhver anden hukommelsesadresse, da Motorola (M68k) arbejder med memory-mapped I/O. Der genereres et interrupt fra ADC en, når samples foreligger, og fra RS232-interfacet, når data er sendt eller modtaget. Mikrocomputeren skal generere forskellige signaler. Den skal sende oplysninger om zoner til pc en i henhold til protokollen. Sonarmodulet starter en ny skanning, når der sendes en værdi mellem 1 og 7 til sonarinterfacet. Tallet mellem 1 og 7 angiver med hvilken frekvens der skal samples. Skanningen stoppes ved at sende et 0 til sonarinterfacet Test af krav De stillede krav er mest funktionelle krav, altså til hvilke funktioner softwaren skal indeholde. Testen vil blive inddelt i to dele: En del, der tester, at kommunikationen med pc en fungerer, og en del, der tester, at samples fra sonarinterfacet lægges ind og behandles. Til testen af kommunikationen med pc en vil TS2-monitoren blive brugt, og ved hjælp af mikrocomputeren og en terminal på en pc en vil det blive testet, om der fra pc en kan bedes om status og om radius kan skiftes. Det vil ligeledes blive testet, om softwaren reagerer rigtigt, når der sendes en ugyldig kommando. Hvis mikrocomputeren svarer på kommandoerne, kan det konkluderes, at kommunikationen med pc en virker, og ved at teste alle mulige kommandokombinationer igennem kan det ses, at resten af pc-delen virker. I testen af om samples 55

66 7.2. MODULARISERING lægges ind og behandles rigtigt testes først, at gennemløbene af de forskellige rutiner er rigtige. Herefter lægges der data ind i bufferen, og det testes, at der findes toppunkter de rigtig steder, og at de rigtige koordinater bliver beregnet. 7.2 Modularisering Mikrocomputerens software skal have følgende hovedfunktioner : O Initialisering af systemet. O Styring af sonar. O Behandling af kommando fra PC. O Behandling af samples fra sonar. Figur 7.1: Flowdiagram for mikrocomputersoftware. I kasserne er det beskrevet, hvad modulets opgave er. 56

67 KAPITEL 7. MIKROCOMPUTERSOFTWARE Det er valgt at foretage beregninger på de indkomne samples og udføre kommandoer fra pc en, mens der ventes på næste sample fra ADC en. På den måde udnyttes tiden bedst. Derfor er programmet delt op i en hovedrutine, der varetager al databehandling af indkomne data samt styring af sonaren samt to interruptrutiner. Den ene gemmer de indkomne data fra sonarinterfacet i en buffer og springer tilbage til hovedrutinen. Den anden kommunikerer med pc en. I figur 7.1 ses, hvilke moduler programmet er inddelt i. Det er valgt at lave et modul, init, der kun køres, når systemet startes op, og hvor de nødvendige elementer initialiseres. Hovedrutinen er inddelt i tre moduler: Et modul (main), der starter sonaren og kalder de to andre moduler, et modul (udfoerkommando), der udfører kommandoer fra pc en og et modul (behandlsample), der beregner, hvilken zone markrobotten er i. Desuden er hver interruptrutine et modul. Sammen med interruptrutinen, der varetager kommunikation med pc en, er der en række hjælpeprocedurer, der benyttes af de andre moduler til kontakt med pc en. 7.3 Interfaces Modulerne kommunikerer med hinanden på to forskellige måder: Gennem funktioner, der ligger i et modul og kaldes fra et andet, og gennem variable, der deles mellem to eller flere moduler. Alle variable og konstanter, der benyttes i flere moduler, erklæres og initialiseres i init. I figur 7.2 ses, hvordan modulerne kommunikerer med hinanden. Figur 7.2: Dataflowdiagram for MC software. I tabel 7.1 ses de variable, der benyttes i flere funktioner. Disse initialiseres i init. 57

68 7.3. INTERFACES Label Størrelse Tolkning Beskrivelse Anvendes af sonarbuffer 2000 bytes buffer Buffer til data fra sonar behandlsample og intsample SBstart 4 bytes Pointer Ptr. til starten af sonarbuff behandlsample og intsample SBslut 4 bytes Pointer Ptr. til slutning af sonarbuff +1 behandlsample og intsample sonarlaes 4 bytes Pointer Ptr. til næste tegn, der læses fra sonar- Buff behandlsample og intsample sonarskriv 4 bytes Pointer Ptr. til næste adr., hvor der skrives i sonarbuff flagreg 4 bytes(d7) Ykoor 2 bytes Unsigned integer zone 1 byte ASCIItegn Flagregister Bruges til at indikere forskellige tilstande X-koordinat i cm Kvadratet på det halve af ykomponenten Zonen gemmes her ADCsamples 2 bytes Bit 0-7: Sample Data fra sonarinterfacet kan læses herfra. fra højre kanal. 8-15: Sample fra venstre kanal ADCconfig 1 byte Variabel bruges til styring af sonarinterfacet. Tabel 7.1: I tabellen ses de variable, der benyttes i softwaren. behandlsample og intsample behandlsample, main, pc I/O Xkoor 2 bytes Signed integer behandlsample og udfoer- Kommando behandlsample og udfoer- Kommando behandlsample og udfoer- Kommando intsample intsample og main 58

69 KAPITEL 7. MIKROCOMPUTERSOFTWARE I pc-kommunikation og udfoerkommando indgår der funktioner, der benyttes af andre moduler. Disse er beskrevet i tabellerne herunder. Funktioner i PCkommunikation Label Ind Ud Påvirker Anvendes af PCsend D1.B D0.B (Antal D0.L D1.B udfør- (Byten, ledige pladser A0 Kommando der skal i buffer) behandl- sendes) Sample. PChent Intet D0.B (Antal D0.L D1.B udførbuffer) bytes i A0 Kommando D1.B (Byten, der hentes) PClaes D0.B (Nr på D1.B(Byten D0.B D1.B udførbyte der skal læses) der læses) A0 Kommando PCsize Intet D0.B (Antal bytes i buffer) D0.B A0 udfør- Kommando PCsend: Placerer data i outputbufferen, PCoutBuff, og starter sendingen, hvis denne ikke i forvejen er startet. Data placeres i D1, og status om afsendelse returneres i D0. Hvis den sendte byte tager den sidste ledige plads i bufferen, returneres 0. Er bufferen fuld, så byten ikke kan sendes, returneres -1. Er bufferen ikke fuld, returneres antallet af ledige pladser i bufferen. PChent: Data fra inputbufferen, PCinBuff, placeres i D1, og bufferens status placeres i D0. Hvis bufferen er tom, returneres -1, ellers returneres antal bytes i bufferen. PClaes: D1 returnerer tegn nr. D0.B fra PCinBuff. PCsize: D0 returnerer antallet af bytes i PCinBuff. Funktioner i udfoerkommando Label Ind Ud Påvirker Beskrivelse Anvendes af sendzone D4.B: Intet D0, D1, D3, D4 Sender et behandlsample zoneskift til pc en med den akutelle zone og koordinater. 59

70 7.4. INIT sendzone: kaldes fra behandlsample, når pc en skal informeres om, at der er sket et zoneskift. 7.4 init I init initialiseres de forskellige dele af programmet på følgende måde: Figur 7.3: Flowdiagram for main. System: Interruptmasken sættes til 7, og user stack pointer (USP) sættes til at pege på adresse 0x4FFFE. sonarbuff: Der allokeres plads til sonarbuff, og sonarlaes og sonarskriv initialiseres til at pege på bufferens start. Protokol: Der defineres globale konstanter for de bytes, der skal bruges i protokollen. flagreg: D7. Initialiseres til 0, da det skal bruges til flag. Zoner: rodzone initialiseres til (svarende til 1m), zone initialiseres til r (for rød zone), koordinaterne (Xkoor og Ykoor) initialiseres til 0. sonarinterface: ADCsamples sættes til at pege på adresse 0x400000, og ADCconfig sættes til at pege på 0x

71 KAPITEL 7. MIKROCOMPUTERSOFTWARE PCkommunikation: Der allokeres plads til PCinBuff og PCoutBuff, og de forskellige variabler og konstanter, der skal bruges til styring af ACIA en, defineres main I main initialiseres de flag, der bruges i behandlsample, og sonarlaes og sonar- Skriv initialiseres. Derefter startes en ny skanning, og der køres en løkke, indtil alle samples er behandlet. I løkken kaldes først udfoerkommando og derefter behandl- Sample. Løkken bliver ved med at køre, indtil behandlsample sætter nyskanningflaget. I figur 7.3 ses funktionsflowdiagrammet for main udfoerkommando udfoerkommando kaldes fra main. Rutinen undersøger, om der er kommet nye kommandoer fra pc en, og hvis der er, sørger rutinen for, at den ønskede kommando udføres. udfoerkommando er delt ind i 5 underrutiner, som kan ses på figur 7.4. Figur 7.4: De fire underrutiner som udfoerkommando består af. undersogkommando I undersogkommando undersøges det, om der er sendt en ny kommando fra pc en. Er der det, undersøges det hvilken kommando. I figur 7.5 ses funktionsflowdiagrammet for rutinen. 61

72 7.4. INIT Figur 7.5: Flowdiagram for undersogkommando. 62

73 KAPITEL 7. MIKROCOMPUTERSOFTWARE Først indhentes antallet af nye bytes i pc ens input buffer. Dette tal hentes ved at kalde PCsize. Er der ingen nye bytes, returneres til main, ellers gemmes antallet af bytes i D6, og den første byte hentes ved hjælp af PClaes. Denne byte sammenlignes med startbyten. Er det ikke en startbyte, springes til ugyldigkommando. Ellers testes antallet af nye bytes. Er antallet under 4, returneres til main, ellers hentes den næste byte. Er denne byte et s eller et r, springes til henholdsvis statuskommando eller radiuskommando. Ellers springes til ugyldigkommando. ugyldigkommando I ugyldigkommando, sendes der besked til pc en om, at der er kommet en ugyldig kommando. I figur 7.6 kan flowdiagrammet for ugyldigkommando ses. Figur 7.6: Flowdiagram for ugyldigkommando. Først initialiseres en tæller til 1, hvorefter den byte i PCinBuff, som tælleren peger på, hentes, og det undersøges, om dette er en startbyte. Er det ikke en startbyte, undersøges det, om tælleren er lig med antallet af bytes. Er det heller ikke tilfældet, inkrementeres tælleren, og der springes tilbage til der, hvor næste byte hentes. Der køres rundt i løkken, til den hentede byte er en startbyte, eller tælleren er nået til antallet af bytes. Når en af de to ting er sket, sendes en startbyte til pc en efterfulgt af et u, antallet af bytes, den modtagne kommando, checksummen og en stopbyte. Herefter springes til starten af udfoerkommando, så den næste kommando kan udføres, hvis der er en. tkl tkl (tjek kommandolængde) er en underrutine, der kaldes af både statuskommando og radiuskommando. Flowdiagrammet kan ses i figur

74 7.4. INIT Figur 7.7: Funktionsflowdiagram for tkl(tjek kommando længde). I tkl undersøges først, om der er nok bytes i den indkomne kommando, til at det kan være den modtagne kommando. Er det ikke det, returneres til main. Ellers hentes den sidste byte, og det undersøges, om det er en stopbyte. Er det ikke tilfældet, springes til ugyldigkommando. I begge tilfælde er det nødvendigt at inkrementere stakpointeren med 2, så der ikke returneres til enten statuskommando eller radiuskommando. Ellers springes startbyte og kommandobyte over, og der returneres. statuskommando Pc en kan sende en kommando til mikrocomputeren om, at der skal sendes en status. Disse statusbeskeder sendes for at kontrollere, at afstandsmåleren fungerer. En anmodning om en statusbesked indeholder startbyte, s, checksum og slutbyte. En statusbesked indeholder startbyte, S, zonen, x-koordinaten, y-koordinaten, checksum og slutbyte. I figur 7.8 kan man se flowdiagrammet for statuskommando. 64

75 KAPITEL 7. MIKROCOMPUTERSOFTWARE Figur 7.8: Funktionsflowdiagram for statuskommando. Figur 7.9: Funktionsflowdiagram for sendword. 65

76 7.4. INIT Først lægges statuskommandoens længde ind i D0, hvorefter tkl kaldes. Herefter slettes checksum og slutbyte fra bufferen. Når dette er gjort, sendes startbyte, S, zonen, X-koordinaten, Y-koordinaten, checksum og slutbyte. Når koordinaterne skal sendes, bruges sendword til at konvertere fra et word til 4 bytes med ASCII-tegnene, der svarer til den hexadecimale værdi. Funktionsflowdiagrammet for sendword kan ses på figur 7.9. I sendword roteres værdien 4 pladser, og kopieres til D0. Herefter maskeres de 12 mest betydende bit væk. Derefter lægges der 0x30 til. Nu passer det, hvis tallet er mellem 0 og 9, ellers lægges der yderligere 7 til, så tallet passer til ASCIIværdien for A til F. Dette sendes ved hjælp af PCsend. Rutinen sendword gentages 4 gange. radiuskommando Figur 7.10: Funktionsflowdiagram for radiuskommando. Pc en kan sende en radiuskommando til mikrocomputeren for at ændre radius for den røde zone. Den nye radius sendes som en værdi opgivet som hexadecimale ASCII-tegn. Værdien fylder et word, og dette sendes som fire tegn, der svarer til værdien af 4 bit. I figur 7.10 ses flowdiagrammet for rutinen. 66

77 KAPITEL 7. MIKROCOMPUTERSOFTWARE I radiuskommando kaldes først underrutinen tkl. Ved en radius kommando er første parameter radius. Derfor kaldes hentword, der gemmer denlæste værdi i D3. Den nye radius sættes i anden og gemmes i rodzone. Herefter hentes checksum og stopbyten, og der sendes besked til pc en om, at den nye radius er modtaget ved at sende en startbyte, et R, en checksum og en stopbyte. Flowdiagrammet for hentword kan ses i figur I rutinen cleares først D3, og værdien 4 gemmes i D4. Herefter køres en løkke, hvor D3 roteres 4 pladser, og der hentes en byte. Fra denne byte trækkes 0x30, hvorefter det undersøges, om det er et tal eller et bogstav. Er det et bogstav, trækkes der yderligere 7 fra værdien. Herefter maskeres de overflødige bits væk, og den læste værdi lægges til D3. Løkken køres igennem fire gange, indtil D4 er talt ned til nul. Figur 7.11: Funktionsflowdiagram for hentword, der er en underrutine til radiuskommando. 7.5 behandlsample behandlsample behandler to samples fra henholdsvis venstre og højre kanal, hver gang rutinen kaldes. For at give et overblik over rutinen er den inddelt i 5 dele, der er beskrevet hver for sig. Flowet gennem delene kan ses på figur I behandlsample bruges den nederste byte i flag-registeret, flagreg, til 8 flag, der indikerer forskellige tilstande. 0:nySkanning Sættes, når der skal startes en ny skanning. 1:Zone Sættes, når zonen er fundet. 2:VTP Sættes, når venstre toppunkt er fundet. 3:HTP Sættes, når højre toppunkt er fundet. 67

78 7.5. BEHANDLSAMPLE 4:Hside Sættes, når x-koordinaten er i højre side. 5:Hsample Sættes, når samples fra højre side behandles. 6:sonarH Sættes, når det er vist, at højre sensor virker. 7:sonarV Sættes, når det er vist, at venstre sensor virker. Figur 7.12: Flowet gennem rutinerne i behandlsample. skalsamplebehandles Rutinen skalsamplebehandles kaldes fra main uden parametre, funktionsflowdiagrammet for rutinen kan ses i figur I skalsamplebehandles undersøges det, om der skal foretages beregninger på de næste samples. Der skal ikke foretages beregninger, hvis der er foretaget beregninger på alle samples, hvis zonen er fundet (zoneflag er sat) eller hvis bufferen er tom (sonarlaes=sonarskriv). Der testes derfor først på, om zoneflaget er sat. Er dette sandt, testes det om alle samples er modtaget fra sonarinterfacet. Dette testes ved at undersøge, om skrive-pointeren sonarskriv er lig med sonarbuffslut, der 68

79 KAPITEL 7. MIKROCOMPUTERSOFTWARE angiver, hvor sonarbufferen slutter. Er dette sandt, sættes et nyskanning-flag, grøn zone sættes, og der returneres til main. I main startes en ny skanning, når dette flag er sat. Er alle samples endnu ikke lagt ind, returneres til main, og behandlsample vil blive kaldt igen senere. Figur 7.13: Flowdiagram over rutinen skalsamplesbehandles. Er zonen ikke fundet, undersøges om der er kommet nye samples ved at teste, om sonarlaes er lig sonarskriv. Er der ikke nye samples, returneres til main, ellers 69

80 7.5. BEHANDLSAMPLE testes, om de nye samples er i det blinde område ved at teste, om sonarlaes er større end blindtomraade. Er dette sandt, springes til Top, ellers springes til kontrol. kontrol Figur 7.14: Flowdiagram for kontrol. Denne rutine bruges til at teste, om sonarenhederne virker. Når aktuatoren udsender et signal, vil det blive sendt direkte til sensorerne. Hvis sensorerne ikke modtager noget i løbet af de første samples, kan det altså konkluderes, at der er en fejl i en af sonarenhederne. Denne fejlmeddelelse skal sendes til pc en. Funktionsflowdiagrammet kan ses i figur I kontrolrutinen testes først om det er sidste sample i det blinde område. Er dette tilfældet, bliver det testet, om begge sonarenheder har modtaget et signal, 70

81 KAPITEL 7. MIKROCOMPUTERSOFTWARE der er større end niveau. Dette testes ved at teste på to flag sonarvflag og sonarhflag. Er begge flag sat, inkrementeres sonarlaes med to, og der returneres til main. Ellers sendes fejlbesked til pc en, og zoneflaget sættes, så de resterende samples ignoreres. Er det ikke de sidste samples i det blinde område, sættes der et flag (sonarv), hvis samplen fra venstre kanal er større end niveau, og et flag (sonarh), hvis samplen fra højre kanal er større end niveau. Til sidst inkrementeres sonarlaes med Top I Top undersøges det først, om der er et toppunkt i venstre side, og derefter, om der er et i højre side. Diagrammet over funktionsflowet kan ses i figur Først inkrementeres sonarlaes med 2, og derefter undersøges det, om venstre toppunkt allerede er fundet, ved at teste om VTP-flaget er sat. Er det sat, sættes Hsample-flaget. Herefter hentes den gamle sonarlaes ind i A5. Hvis Hsampleflaget er sat, inkrementeres A5 med 1, så der kigges på samples fra højre side. A5 peger nu på S[n+2] i den sampleserie, der kigges på. Se figur Figur 7.15: Opbygning af sonarbuffer. I cellerne ses det, hvordan de samples, der skal behandles, ligger i forhold til sonarlaes. I højre side er n erne erstattet af m er. Udfra A5 lægges pointere til S[n+1], S[n] og S[n-1], som er de tre foregående samples fra samme side, i henholdsvis A4, A3 og A2. Herefter testes det, om værdien af S[n] er større end et defineret niveau. Er den det, beregnes toppunktet. Ellers springes til main, hvis der arbejdes på højre side. Hvis der arbejdes på venstre side, sættes Hsample-flaget, og proceduren starter forfra. 71

82 7.5. BEHANDLSAMPLE Figur 7.16: Beregning af toppunkter.. Toppunktet findes ved at udføre en diskret differentiering med omvendt fortegn og indbygget lavpasfilter. Til det bruges følgende ligning: z,y:k K ^±L ²³E N ^ L ²&N EI D(^±L ² N EQ^ L ² 1N (7.1) Denne ligning returnerer et negativt tal, når kurven vokser, og et positivt tal, når kurven aftager. Det antages, at et toppunkt kan detekteres ved, at kurven begynder at aftage. Derfor testes det, om diff er positiv eller negativ, og hvis den er positiv sættes toppunktsflaget for den side, der behandles. 72

83 S S S ª ª S µ R S KAPITEL 7. MIKROCOMPUTERSOFTWARE Differentieringen udføres på følgende måde: beregnvdiff D6 = S[n] D6 = D6 - S[n+1] D6 = D6 * 2 D6 = D6 + S[n-1] D6 = D6 - S[n+2] Når diff er beregnet, testes det, om den er positiv. Er den ikke det, springes til main eller til toppen af rutinen, alt efter om Hsample er sat. Hvis den er positiv, beregnes toppunktet ved at dividere n med to. Herefter testes, om det er venstre eller højre toppunkt, der er fundet. Er det højre side, lægges værdien i HTOP, HTPflaget sættes, Hsample sættes lav, og der springes til KOOR. Er det venstre, lægges værdien i VTOP, VTP-flaget sættes, og det testes, om HTP-flaget er sat. Er flaget sat, springes til KOOR, ellers springes til starten af rutinen. KOOR Denne rutine beregner x- og y-koordinaten til det fundne objekt ud fra toppunkterne (VTOP og HTOP). x-koordinaten beregnes ved hjælp af formel (7.2) og kvadratet på y-koordinaten ved formel (7.3). Begge er udledt i appendiks F. * = º J ) EIJ µ M 0 = J ) J µ¹ J ) J µ = EIJ µ = ¹ F» E v $ H± J = = EQJ = µ ¹(¼ (7.2) (7.3) Af hensyn til den til rådighed værende processorkraft vælges det at undlade at tage kvadratroden af y-koordinaten og i stedet returnere det fundne kvadrat. Først testes, om der er fundet et toppunkt i venstre kanal, VTP høj. Der testes ikke på højre kanal, da rutinen kun bliver kaldt i det tilfælde, hvor der er fundet et toppunkt til højre. Hvis begge toppunkter er detekteret, kan beregningen af objektets placering begynde. I formel (7.2) indgår to variable, J ) og J µ, som er afstanden fra aktuator til objekt og tilbage til sensorerne. Lv er længden til den venstre sensor og Lh afstanden til den højre. Afstanden fås ved formel (7.4): ) ²! %. + #(½! %. + #1½ ²! %. + #1½ er nummeret på den sampling, hvori toppunktet er detekteret,! % (K h 8! %. + #(½ ). Som pseudokode ser det således ud for Lv:. º W (7.4) er tiden mellem hver sampling, det vil sige den reciprokke af samlingsfrekvensen #(½

84 = ¾ ª ª µ 7.5. BEHANDLSAMPLE D6=HTOP D6=D6*samplingsTid D6=D6*lydHastighed Derefter kan selve koordinatberegningen gå igang. Først beregnes x-koordinaten, da denne skal bruges til beregning af y-koordinaten. ^ er afstanden fra aktuator til sensor (;H cm). Som pseudokode ser det således ud: /*Beregner x-koordinaten*/ D4=sensorAfstand D3=sensorAfstand2 Sx^2 D2=D6*D5 Lv*Lh D2=D2+D3 (Lv*Lh)+Sx^2 D2=D2/16 Divideres med 16 for at kunne holdes på word-længde D1=D6-D5 Lv-Lh D2=D2*D1 Tælleren D1=D6+D5 Lv+Lh D1=D1*D4 (Lv+Lh)*Sx D1=D1/8 Nævner divideret med 16 for at udligne, at divisoren er blevet divideret med 16 D2=D2/D1 Tæller div. nævner Xkoor=D2 Derefter beregnes y-koordinaten, hvor der gøres brug af, at en del af oplysningerne allerede ligger i registrene. For at lette beregningerne og begrænse udregningerne til kun at fylde et word, omskrives formlen for y-koordinaten til følgende formel: º = º = EIJ µ = ¹» ª = J µ EQJ µàá ª E v $ H± J = = EQJ = µ ¹(¼ E J µ H± = J =ÂEQJ µ (7.5) (7.6) À (7.7) /*Beregner Y-koordinatet */ D3=D6/D3 Sx^2/Lv D6=D6-D3 Sx^2/Lv - Lv D5=D3 D5=D5/ * (Sx^2/Lv - Lv) D4=-D4 -Sx D4=D2+D4 Xkoor - Sx D4=D2*D4 (Xkoor - Sx)*Xkoor D4=D4/D6 (Xkoor - Sx)*Xkoor/Lv D4=D5+D4 (Xkoor - Sx)*Xkoor/Lv+0.25*(Sx^2/Lv-Lv) D4=D3*D4 (Sx^2/Lv-Lv) [(Xkoor - Sx)*Xkoor/Lv+0.25*(Sx^2/Lv-Lv)] D3=D4 D4=D4/4 y-koordinaten divideret med 4 for at kunne være i et word Ykoor=D4 Nu er koordinaterne fundet, og derfor kaldes rutinen FindZone, der skal bestemme zonen. 74

85 KAPITEL 7. MIKROCOMPUTERSOFTWARE Figur 7.17: Funktionsdiagrammet for den rutine, der sammenligner det fundne objekts koordinater med radius for rodzone 75

86 7.6. PCKOMMUNIKATION FindZone Denne rutine skal finde ud af, hvilken zone det detekterede objekt er placeret i. Zonen er en halvcirkel, og størrelsen er defineret ud fra cirklens radius i anden. Ud fra objektets koordinater beregnes radius. Dette gøres ved hjælp af Pythagoras sætning. Da det kræver en del regneoperationer at tage kvadratroden, beholdes radius i den kvadrerede form. Denne sammenlignes med den opgivne radius for rød zone. Hvis zonen har ændret sig siden sidst, skal der gives signal til pc en. Herefter sættes zone-flaget højt, og der returneres til main. På figur 7.17 ses funktionsdiagrammet for dette. Beregningen af = gør brug af, at data allerede ligger i registeret. Som pseudokode ser det således ud: /* Beregn R^2 */ /* i D2 ligger Ox og D5 ligger Oy^2 */ D0=D2*D2 Ox^2 D5=D5+D0 R^2 I tilfælde af zoneskift skal der sendes signal til pc en. I den forbindeslse kaldes en funktion, sendzone, fra modulet udfoerkommando, som kan ses beskrevet i afsnit Når dette er gjort, og zoneflaget er sat, retuneres til main. 7.6 PCkommunikation PCkommunikationen består af 2 dele. En interruptrutine, der udføres, når der kommer et interrupt fra ACIA en, samt et systeminterface, der indeholder procedurer, der kan kaldes fra andre moduler. På figur 7.18 ses dataflowdiagrammet for rutinerne. Send fra buffer og Modtag data styres af interruptrutinen, og PCskriv, PChent, PClaes og PCsize ligger i systeminterface. Flowstyring er ikke implementeret, men koden er forberedt for proceduren, da der er indsat en dummy-rutine, der kun returnerer Buffere I forbindelse med kommunikationen med pc en bruges to buffere Da det, der først bliver skrevet i buffererne, er det, der først skal læses 1, opbygges disse som ringbufferer som vist på fig Ideen i en ringbuffer er, at de to ender af bufferen samles, så de udgør en ring(se højre side af fig. 7.19). Det vælges at designe bufferen således, at første og sidste celle gives af to indekspointere, henholdsvis PCbuffStart og PCBUFFSIZE. De to første celler indeholder to relative pointere, altså pointere, der peger relativt til 1 Dette princip kaldes FIFO(First In First Out) 76

87 KAPITEL 7. MIKROCOMPUTERSOFTWARE starten af bufferen. Til læsning, PChent, og skrivning, PCskriv, hvilke ikke skal forveksles med procedurerne af samme navn, som er omtalt i afsnit 7.6 på modstående side. For at gøre bufferen cyklisk bliver henholdsvis PChent og PCskriv sat lig med 0, de er lig med PCBUFFSIZE, altså når de har nået enden af bufferen. PCinBuff Data fra pc en skrives i denne buffer af Modtag data og hentes af PClaes og PChent. PCoutBuff I denne buffer er det funktionen PCSkriv, der skriver, og Send fra buffer, der læser. PCsendIgang Dette flag bruges til at indikere, om ACIA en sender data. Det sættes af PCskriv, når første byte sendes, og det ophæves af Send fra buffer, når dette element bliver kaldt, og der ikke er flere data i PCoutBuff. Figur 7.18: Dataflowdiagram for PCkommunikation. 77

88 7.6. PCKOMMUNIKATION PChent PCskriv PCBuffStart Skillelinie PChent Data PChent PCskriv PCskriv PCbuffMax Figur 7.19: Opbygning af ringbuffere Systeminterface Systeminterfacet består af 4 procedurer, der bruges af interruptrutinen, og som samtidig kan kaldes fra andre moduler. Disse 4 procedurer er PClaes, PCsize, PCskriv og PChent. PClaes PClaes, som ses på figur 7.20, kaldes med et nummer på den byte, der skal læses fra bufferen. Nummeret skal ligge i D0, når proceduren kaldes, og den valgte byte returneres i D1. Her ses koden for proceduren: /* */ /* Udlæser et udefra valgt element i PCinBuff */ /* */.global PClaes PClaes: ANDI.L #0xff, D0 Clear D0, på nær mindst betydende byte ADD.B PCinBuff, D0 Tager værdien af hentpointeren til D1 CMPI.B #PCBUFFSIZE, D0 Er byten indenfor bufferen BMI PClaesFraPlads Hvis ja, hop til PClaesFraPlads SUBI.B #PCBUFFSIZE, D0 Pointer korrigeres PClaesFraPlads: MOVEA.L #PCinBuff + 2, A0 Lægger PCbuffStart i A0 ADDA D0, A0 Går til ønsket byte MOVE.B A0@, D1 Henter ønsket byte RTS Returnerer Først hentes PChent ind i D1. Til PChent lægges den værdi, som PClaes blev kaldt med. Herefter indeholder D0 adressen på den ønskede byte relativt til PCin- Buff s start. For at kontrollere, at adressen ikke er udenfor bufferen, undersøges det, om D0 er større end eller lig med PCBUFFSIZE. Er den det, trækkes PCBUF- FSIZE fra D0, så D0 igen peger indenfor bufferen. Herefter lægges D0 sammen med pointeren til starten af bufferen. På den måde peges der nu på den RAM-celle, hvor værdien ligger. Værdien hentes ud, og returneres i D1. 78

89 KAPITEL 7. MIKROCOMPUTERSOFTWARE Figur 7.20: I PClaes udlæses en byte fra PCinBuff. PCsize I PCsize, se figur 7.21, beregnes, hvor mange fulde pladser der er i PCinBuff. Resultatet returneres i D0. Først hentes de to relative pointere PChent og PCskriv. Derefter trækkes PChent fra PCskriv, og resultatet gemmes i D0. Hvis resultatet er negativt, lægges PCBUF- FSIZE til D0. Herefter returneres der. PCskriv På figur 7.22 ses funktionsflowdiagrammerne for PCskriv og PCskrivBuff. PCskriv sender den byte, der ligger i D1, når PCsend kaldes. Kan byten ikke sendes med det samme, gemmes den i PCoutBuff. I PCskriv testes først, om PCsendIgang-flaget er sat. Dette flag sættes, når der sendes noget til pc en. Er flaget ikke sat, sættes det, hvorefter byten lægges i PCout- Buff, og interrupt fra ACIA en enables. Er flaget sat, er der allerede en byte, der er ved at blive sendt. Så placeres pointeren til PCoutBuff i A0, og PCskrivBuff kaldes. I PCskrivBuff gemmes D3 på stakken, og pointerne hentes. Herefter undersøges om der er ledige pladser i bufferen, og antallet af ledige pladser udlæses i D0. Er bufferen fuld, lægges -1 i D0. Er der ledige pladser, skrives indholdet af D1 i den byte, PCskriv peger på. PCskriv inkrementeres, så den peger på næste ledige plads, D3 gendannes og der returneres. 79

90 7.6. PCKOMMUNIKATION PChent I PChent hentes en byte fra PCinBuff. Samtidig opdateres hentepointeren, så den peger på den næste byte. Se funktionsflowdiagram i figur 7.23 PChent placerer pointeren til PCinBuff i A0 og kalder PChentbuff. I PChent- Buff gemmes D3 på stakken og PChent og PCskriv pointerne hentes. Antallet af elementer i PCinBuf beregnes og lægges i D0. Derefter lægges PCinBuff s startadresse sammen med PChent og den byte, der peges på nu hentes. Herefter inkrementeres PChent, D3 gendannes og der returneres. Figur 7.21: I PCsize beregnes, hvor mange celler, der indeholder data i PCinBuff. 80

91 KAPITEL 7. MIKROCOMPUTERSOFTWARE Figur 7.22: I PCskriv sendes en byte til pc en. 81

92 7.6. PCKOMMUNIKATION Figur 7.23: PChent henter en byte fra pc ens input buffer Interrupt fra ACIA Når der kommer et interrupt fra ACIA en, springes til denne interruptrutine. Flowdiagrammet for rutinen kan ses på figur Først gemmes de registre, der benyttes i rutinen. Derefter undersøges det, om der er modtaget data, eller der skal sendes data. Er ingen af delene tilfældet, må det skyldes en fejl. Derfor resettes ACIA en, hvorefter den genindstilles, og der returneres fra interrupt. Er der modtaget data, lægges data i D1, og A0 sættes til at pege på PCinBuff. Herefter kaldes PCskriv- Buff, der skriver den modtagne byte i bufferen. Derefter undersøges det, om der er mere end tre tomme pladser tilbage i bufferen. Er der ikke det, springes til flowkontrol. Ellers gendannes registrene, og der returneres fra interruptet. Er der data, der skal sendes, kaldes PChentBuff. Returneres -1, cleares PCsendIgang, ACIA en transmitter-interrupt disables, registrene gendannes, og der returneres fra interrupt. Returnerer PChent ikke -1, lægges D1 ind i ACIA_DATA, registrene gendannes, og der returneres fra interrupt. 82

93 KAPITEL 7. MIKROCOMPUTERSOFTWARE Figur 7.24: Rutinen, der varetager interrupts fra pc en. 7.7 intsample intsample er en interruptrutine, der varetager interrupts fra sonarmodulet. Flowdiagrammet for intsample kan ses på figur Først gemmes det register, der skal bruges i rutinen, på stakken. Data fra ADC en gemmes i sonarbuff, hvorefter det undersøges, om skrivepointeren er ved slutningen af bufferen ved at sammenligne sonarskriv og sbslut. Er de ens, springes til Stopsample, hvor skanningen stoppes. Herefter gendannes de registre, der blev gemt, og der returneres. Er slutningen ikke nået, gemmes samples, sonarskriv opdateres, registrene gendannes og der returneres. 83

94 7.8. TEST AF MIKROCOMPUTERSOFTWARE Figur 7.25: Flowdiagram for intsample. 7.8 Test af mikrocomputersoftware Til test af modulerne bruges BSVC simulator version 2.1 og TS2MON IntSample Testen af intsample foregår ved hjælp af simulatoren. Der skrives en testprocedure, der indeholder kald til intsample samt en afsluttende løkke. Desuden skal testproceduren indeholde en teststub med navnet pcinterrupt, der kun indeholder en RTS-kommando. Inden programmet sættes til at køre, skal der gemmes en værdi i ACIA_SAMPLE. Når intsample afvikles, skal det kontrolleres, at sonarbuff fyldes med den værdi, der er gemt i ACIA_STATUS BehandlSample Til test af behandlsample benyttes simulatoren ligeledes. Testen køres ved hjælp af en teststub, der kalder behandlsample. I denne teststub lægges desuden to teststubbe med navnene PCsend og sendstat. Disse teststubbe indeholder kun en RTSkommando. For at sørge for at alle mulige gennemløb af rutinen gennemføres, opskrives et programtræ med alle forgreninger. Derefter køres alle forgreningerne igennem, og det kontrolleres, at forløbet er rigtigt. For at teste at toppunktet kan beregnes, lægges en testmåleserie ind i bufferen. Herefter køres rutinen igennem, så alle samples bliver behandlet. Det kontrolleres at toppunktet kan findes. Herefter testes at kontrolrutinen fungerer. 84

95 KAPITEL 7. MIKROCOMPUTERSOFTWARE PCkommunikation og udfoerkommando For at teste at PCkommunikationen virker benyttes TS2-MON, og mikrocomputeren. Mikrocomputeren er koblet til en pc, hvor et terminalprogram køres. Ved at teste at der kan skrives kommandoer til mikrocomputeren kan det både testes om PCkommunikation og udfoerkommando virker. For at sikre at hele programmet virker, testes alle mulige kommandoer, og der prøves med forskellige ugyldige kommandoer. 85

96 8 Pc-software For at kunne teste, om afstandsmåleren kan opfylde de krav, der er stillet i kravspecifikationen, udvikles et pc-program, der kan virke som testdriver for afstandsmåleren. Pc-programmet skal simulere den kommunikation, der senere vil være med markrobottens styrecomputer. I dette afsnit modulariseres, designes, implementeres og testes pc-softwaren, så den opfylder de stillede krav. I dette afsnit skrives både variable og funktioner() med skrivemaskinefont. Funktioner efterfølges af et par paranteser som i eksemplet. 8.1 Krav Pc-programmet skal, jvf. afsnit 3.1.5, være simpelt og tekstbaseret. Det skal kunne spørge til den aktuelle zone og position for det sidst registrerede objekt. Det skal envidere være muligt at ændre radius på den røde zone fra pc en. Det skal dog altid være muligt for afstandsmåleren at sende interrupts til pc en i forbindelse med zoneskift eller fejl. Ved zoneskift skal afstandsmåleren sende den nye zone og placeringen af et evt. objekt. Pc-softwaren skal ligeledes være forberedt for at kunne modtage en måleserie og indstille afstandsmålerens samplingsfrekvens. Formålet med disse to funktioner vil være at anvende en kraftigere processor til at analysere samplingerne, så detekteringsalgoritmen kan optimeres Test Da dette program kun skal bruges som testdriver, er der ikke fokuseret på sikring mod forkerte indtastninger fra brugeren. Derfor vil der bevidst ikke blive gennemført nogen test af, hvad der sker ved ugyldige indtastninger. Der vil kun blive testet med fornuftigt input. Hvor der skal indtastes tal, vil der således ikke blive testet med forskellige specialtegn osv., men kun med tal i det gyldige interval. De enkelte funktioner vil blive testet ved, at de kaldes, og ved hjælp af et terminalprogram på en anden pc verificeres det, om der sendes det korrekte output til serielporten. Ved funktionerne forventes følgende output: Status: Ordren besvares fra terminalprogrammet efter protokollen i appendiks D. Det verificeres, at den zone, MR er i, og placeringen af det sidst registrerede objekt udlæses korrekt til skærmen. 86

97 KAPITEL 8. PC-SOFTWARE Radiusændring: Ordren med parameter sendes til terminalprogrammet, hvorfra der ifølge protokollen skal returneres et bekræftende svar. Zoneændring: Når der fra terminalprogrammet sendes en zoneændring, skal pcprogrammet straks vise dette på skærmen. Ugyldig kommando: Sendes der besked fra terminalprogrammet til pc en om, at der er modtaget en ugyldig kommando, skal dette vises på skærmen. Fejl: Sendes der en fejl-kommando til pc en fra terminalprogrammet, skal dette vises på skærmen. 8.2 Modularisering Analyse Som det ses i afsnit skal pc-programmet kunne interagere med afstandsmåleren udfra kommandoer givet af brugeren vha. tastaturet. Samtidigt skal det videregive oplysninger fra afstandsmåleren til brugeren via skærmen. Dette skal ske vha. et tekstbaseret brugerinterface med en central menu, hvorfra alle kommandoer kan udføres. Det skal også både sende og modtage data fra serielporten. Figur 8.1: Dataflowdiagram over pc-softwaren. Funktioner er vist som cirkler, mens ressourcer, der tilgås, er vist som rektangler. Et dataflowdiagram for et sådant program kan tegnes som på figur 8.1. Det er valgt at lade læsning fra serielporten foregå vha. en interruptrutine, hvori behandlingen af modtagne kommandoer også foregår. En beskrivelse af de væsentligste elementer følger: Menu: Dette element skal optegne hovedmenuen ved programmets start. Derefter skal programmet gå til indtastningsmodulet og bede om at få en kommando 87

98 8.2. MODULARISERING fra brugeren. Denne kommando skal derefter køres. Dette gentages, indtil brugeren vælger at afslutte programmet. Indtastning: Dette modul skal afvente, at brugeren laver en indtastning på tastaturet. Derefter skal det videregive denne indtastning til det modul, som kaldte det. Kommando: Dette modul skal sende kommandoer med tilhørende parametre til afstandsmåleren. Dette skal foregå efter den protokol, som er beskrevet i appendiks D. Kommunikationen med serielporten foregår via Send-delen. Interrupt: Når afstandsmåleren sender data til pc en, skal pc en være klar til at modtage disse data. Dette sikres ved, at pc en modtager et interrupt, når der ligger data på serielporten. Dette modul skal sørge for at lægge de indkomne data i en buffer og sørge for, at de bliver behandlet rigtigt. Dette vil bestå i at afkode de indkomne data og enten udskrive dem på skærmen eller udskrive en passende fejlmelding. Flag: Kommando-delen sætter et flag, når en kommando er afsendt. Når interruptdelen derefter modtager en bekræftelse på en kommando, kan den kontrollere, at forespørgslen tidligere er blevet afsendt. Hvis den ikke er blevet det, udskrives en fejlmelding. Send: Sender data til serielporten og udskriver det sendte til skærmen. Skærm-API: Al output til skærmen går gennem dette modul. Hvis metoden for skærmadgang ændres, er det kun koden i ét modul, der skal ændres Opdeling Med udgangspunkt i den foregående opdeling er det valgt at opdele pc-programmet i modulerne Menu, Skærm, Kommunikation og Kommando. Koden til hvert modul placeres i en separat fil. Indtastning fra keyboardet håndteres af skærmmodulet, da det er en ganske lille funktion, der dog skal tilgå samme eksterne library (ncurses) som skærmen. Flagene, der fortæller, hvorvidt en given forespørgsel er afsendt, placeres i kommando-modulet. De enkelte moduler og de variabler og funktioner, de skal tilbyde, beskrives herunder. På figur 8.2 ses en oversigt over relationerne mellem alle funktioner og variable. Menu Dette modul udskriver en menu og indhenter brugerens valg. Dette modul skal også indeholde main -funktionen og skal kalde initkomm() og initskaerm(), som initialiserer henholdsvis skærmen og serielporten. Modulet skal udskrive en menu på skærmen med punkter, der svarer til funktionerne i Kommando -modulet. Disse funktioner skal blot kaldes, når et givent 88

99 KAPITEL 8. PC-SOFTWARE Figur 8.2: Flowdiagram over alle pc-softwarens funktioner og variable. menupunkt er valgt. Menuen skal anvende funktionen skrivmenu() fra Skærmmodulet til at skrive til skærmen. Menuen skal køre, indtil brugeren vælger at afslutte programmet. Modulet skal da køre afslutkomm() og afslutskaerm(). Filnavn: pc-kode/menu.c Skærm Al udlæsning til skærmen foregår via dette modul. Udskrift fra de forskellige moduler skal udskrives forskellige steder på skærmen. For at muliggøre dette, anvendes biblioteket ncurses. Alle ncurses-specifikke kald går over skærm-modulet. Modulet skal tilbyde de funktioner, der er beskrevet herunder. Beskrivelsen består først af C-prototypen og derefter en funktionel beskrivelse. Filnavne: pc-kode/skaerm.c, pc-kode/skaerm.h void initskaerm(void); Foretager den initialisering, som ncurses kræver, sletter skærmen og opdeler skærmen i felter til programstatus, zone-status, menu, modtagne data, sendte data samt et felt til indtastninger. void afslutskaerm(void); Gendanner de oprindelige skærmindstillinger. Skal kaldes inden programmet afsluttes. void skrivmenu(char *streng); 89

100 8.2. MODULARISERING Udskriver en nul-termineret streng i menufeltet. void skrivprgmstatus(char *streng); Udskriver en nultermineret streng i feltet til programstatus. void skrivserielmodtaget(char ch); Udskriver et tegn i det felt, hvor alle data, der modtages fra serielporten, skrives. void skrivserielsendt(char ch); Udskriver et tegn i det felt, hvor alle data, der sendes til serielporten, skrives. void skrivzonestatus(char zone, int x, int y); Udskriver den aktuelle zone samt det sidst registrerede objekts x- og y-koordinater på skærmen. zone indeholder r for rød zone, g for grøn, y for gul zone eller d for fejl. Er der fejl, skal der skrives i zone-feltet, at der er fejl i afstandsmåleren. x og y angiver objektets x- og y-koordinat. int indtasttal(char *str, int min, int maks); Dette er en hjælpefunktion, der anvendes af Menu-modulet og Kommando-modulet. Der læses et tal fra tastaturet. min og maks angiver intervallet, som tallet skal være imellem. Intervallet er inklusive værdierne. str er den spørgende tekst, der vises på skærmen. Returargumentet er den indtastede værdi. Kommunikation Modulet indeholder alle de funktioner, der kommunikerer med serielporten. Det skal også indeholde den interruptrutine, der fortolker al indkommende data fra serielporten. Interruptrutinen skal vha. funktionen skrivprgmstatus() fra skærm-modulet skrive, når der er modtaget svar fra afstandsmåleren, og skal vha. skrivzonestatus() skrive zone og placering på objekt, når data herom modtages. Al indkommende data skal også skrives til skærmen vha. funktionen skrivserielmodtaget(). Variablerne NyZoneSendt og ForventerStatus bruges til at kontrollere, om de modtagne svar er forventede. Data, der sendes, skal skrives til skærmen ved hjælp af funktionen skrivserielsend(). Filnavne: pc-kode/kommunikation.c, pc-kode/kommunikation.h void initkomm(void); Opsætning af kommunikationen. Definerer baudrate osv. og klarer også opsætningen af den interruptrutine, der modtager data. void afslutkomm(void); Gendanner de oprindelige kommunikationsindstillinger. Skal kaldes inden pro- 90

101 KAPITEL 8. PC-SOFTWARE grammet afsluttes. void ucsendtegn(char tegn); Sender et tegn til microcomputeren over serielporten. Tegnet skal af ucsendtegn()- funktionen også udskrives til skærmen vha. funktionen skrivserielmodtaget() i skærm-modulet. void ucsendstreng(char *streng); Som ovenstående, men sender en hel, nul-termineret streng i stedet. Kommando Modulet indeholder de funktioner, der kaldes fra menuen. Filnavne: pc-kode/command.c, pc-kode/command.h int ForventerStatus; Forskellig fra nul, hvis en status-forespørgsel er sendt, og svar endnu ikke er modtaget. Ellers lig 0. int NyZoneSendt; Forskelligt fra nul, hvis en ny radius for rød zone er afsendt, og bekræftelse endnu ikke er modtaget. Ellers lig 0. void hentstatus(void); Der skal skrives "Venter på status"i programmets status-felt vha. funktionen skrivprgmstatus(), og en forespørgsel skal sendes til afstandsmåleren om status vha. ucsendstreng(). Flaget ForventerStatus sættes. void aendrzone(void); Den ny størrelse på den røde zone læses fra tastaturet vha. indtasttal() og sendes til mikrocomputeren. Sætter flaget NyZoneSendt. 8.3 Implementation Al kode er kompileret med gcc version på både Debian Linux 2.2 med en 2.2-kernel og Redhat Linux 7.2 med en kernel, begge i intel-versionerne. Til skærmhåndtering er anvendt ncurses version 5.2, men andre versioner af curses kan højst sandsynligt også anvendes. Da filnavnet på den serielle enhed er hardcodet til Linux s /dev/ttys0, kan koden ikke umiddelbart anvendes på andre Unix-versioner uden som minimum en ændring af filnavnet, som er defineret i kommunikation.c. 91

102 8.3. IMPLEMENTATION Skærm Da skærmmodulet anvendes af alle de andre moduler, blev der som det første lavet en skaerm.c, hvor alle funktionerne blot anvendte simple printf() er, så udviklingen af de andre moduler ikke af den grund blev sat i stå. Selve modulet vil ikke blive beskrevet særlig grundigt her. Der anvendes ncurses til skærmhåndteringen, men koden er stort set selvdokumenterende Menu Menu-modulet er opdelt i en main, der først kalder skærmen og kommunikationsdelens initialiseringsfunktioner. Afslutningsfunktionerne kaldes ikke direkte, men sættes i stedet til at blive kørt ved programmets afslutning ved hjælp af funktionen atexit(). Menuen, som er udskilt i en funktion med prototypen void menu(void); kaldes også fra main(). Funktion udskriver menuen til skærmen og kører derefter i et loop, hvor brugeren indtaster sit valg, indtil brugeren vælger at afslutte. Koden til funktionen er vist herunder: void menu(void) { int valg; int Afslut=0; skrivmenu("\n\n\n"); skrivmenu(" ***************************\n"); skrivmenu(" * 1 : Zonestatus *\n"); skrivmenu(" * 2 : Ændring af zone *\n"); skrivmenu(" * 0 : Afslut *\n"); skrivmenu(" ***************************\n"); /* Når afslut er lig nul, vil switchløkken stoppe og gå helt ud af menuen. */ while (Afslut==0) { /* Her kan indtastes tal fra 0-2, hvor valgmulighederne er ændring af zone, zonestatus og afslutning af menuen. */ valg = indtasttal("indtast valg: ", 0, 2); } } switch (valg){ case 1: hentstatus(); break; case 2: aendrzone(); break; case 0: Afslut=1; break; } 92

103 KAPITEL 8. PC-SOFTWARE Kommunikation Til koden, der kommunikerer med serielporten, blev der taget udgangspunkt i et programmeringseksempel fra Serial-Programming-HOWTO [Frerking, 2002]. Denne kode viste sig ikke at kunne anvendes uden en del modifikationer. Muligvis er HOWTO-en tiltænkt ældre kernel-versioner, der opfører sig anderledes. I initkomm()-funktionen åbnes den serielle enhed, og kommunikationsindstillingerne sættes. Specielt sættes enheden til at være asynkron, så der ikke ventes på, at data er klar, men i stedet returneres direkte fra læsefunktionen. Normalt ville læsefunktionen vente på, at der lå data på porten, og så først returnere, når de var klar. Derudover sættes signalhåndteringen op, så funktionen signal_handler_io() kaldes, når der modtages et SIGIO-signal, hvilket der gør, når der kommer data fra den serielle port. Derudover foretages læsning og skrivning som til enhver anden fil. Da signal_handler_io()-rutinen både læser og behandler data, er den ganske uoverskuelig at læse. Et funktionsflowdiagram over den er derfor vist på figur 8.3. Formålet med flagene NyZoneSendt og ForventerStatus er at verificere, at de svar, der modtages fra afstandsmåleren, også er svar på forespørgsler fra pc en. De modtagne data gemmes i en simpel, lineær buffer. Når en kommando er behandlet, rykkes data, der kommer senere, blot frem i bufferen. Hvis koden skal udvides med funktionalitet til ændring af samplingsfrekvensen, kan det fra pc-siden gøres på samme måde som radius-kommandoen, da syntaksen for disse er næsten identisk. Hvis der skal være mulighed for at hente en måleserie, kan send-delen implementeres på samme måde som status-forespørgslen, mens interruptrutinen skal åbne en fil, hvori alle de modtagne data lagres. Interruptrutinen er enten nødt til at håndtere et flag, der angiver, om den er midt i modtagelsen af en måleserie, eller gøre bufferen stor nok til at kunne indeholde hele måleserien Kommando Kommando-modulet indeholder funktionerne hentstatus() og aendrzone(). Disse funktioner sætter et flag for, at en forespørgsel er afsendt, og sender forespørgslen. Derudover skrives til programstatus-feltet, når en kommando afsendes. Når svaret bagefter modtages, skriver signal_handler_io()-rutinen dette. Hvis svaret aldrig modtages, vil dette kunne aflæses i programstatus-feltet, da beskeden om, at svaret er sendt, vil blive stående. De to variable NyZoneSendt og ForventerStatus er erklæret som volatile, da de også tilgås af signalhåndteringsfunktionen. Det betyder, at compileren vil undlade at optimere ved at gemme de to variable i registre, men i stedet altid vil tilgå dem i hukommelsen. 93

104 8.3. IMPLEMENTATION Figur 8.3: Flowdiagram over den interruptrutine, der læser data fra serielporten og behandler de modtagne data. 94

105 KAPITEL 8. PC-SOFTWARE 8.4 Bloktest Testen af pc-softwaren foretages vha. et terminalprogram. Pc-softwaren køres på en pc, som forbindes til en anden pc med et nulmodem. Et terminalprogram på den anden pc kan nu simulere afstandsmåleren. Ideelt skal alle forgreninger i programmet testes. Da det er et testprogram, kan relevansen heraf diskuteres, men det forsøges at komme hele vejen omkring. For ikke at bruge al for meget plads på at beskrive testen, er fremgangsmåden beskrevet i tabellerne 8.1, 8.2 og 8.3 herunder. Der er kun afsendt det, der er indeholdt mellem apostrofferne i Afsendt-kolonnen. Linjeskift (ASCII: 10) er angivet som en skråstreg /. Der er intet linjeskift i slutningen af en streng, medmindre det er angivet ved en skråstreg. Der mindes om, at formen for en kommando er startbyte, kommando, data, checksum, slutbyte, hvor checksummen ignoreres. En d-kommando vil f.eks. se således ud:!d#/, hvor #-tegnet er vilkårligt valgt som checksum,! er startbyten og / slutbyten. Formålet med testene er at komme igennem alle forgreninger i menuen og i den interruptrutine, der behandler de modtagne data. Sidstnævnte er langt den største opgave. Strengene i tabellerne er afsendt i den rækkefølge, de står. De er afsendt umiddelbart efter hinanden, så fejl i håndteringen af bufferen også burde blive fanget. Først gennemføres testene i tabel 8.1, og derefter vælges ved hjælp af menuen at hente zonestatus. I terminalprogrammet modtages!s#/, hvor skråstreg stadig betyder linjeskift. På skærmen står der: Forventer status. Der fortsættes med testene i 8.2. Hereftervælges det i menuen at ændre zonens radius til ; cm. I terminalprogrammet modtages!r002a#/. På skærmen står der: Venter bekræftelse på zoneskift. Til sidst udføres testene i 8.3. Alle ovenstående test er bestået, da der kun kom de forventede svar. Samtlige sendte og modtagne tegn blev også udskrevet til skærmen. Til sidst afprøvedes valget Afslut i menuen med succes. Dermed har samtlige forgreninger i koden, der behandler de modtagne data, og samtlige forgreninger i koden, der afsender data, været afprøvet med succes. Det er ikke en absolut garanti for, at programmet er fejlfrit. Hvis operativsystemets buffer f.eks. indeholder flere data, end der kan være i interruptrutinens buffer, vil de overskydende data ikke blive læst før næste kald af interruptrutinen. Under andre, mere uformelle test viste det sig, at hvis der modtages data fra serielporten, mens der læses fra tastaturet, bliver indtastningen ugyldig. Da der anvendes eksterne biblioteker til læsning fra tastaturet, er årsagen hertil ikke fundet. Der er ikke boret dybere i det, da fænomenet ikke har givet nogle praktiske problemer. 95

106 8.4. BLOKTEST Afsendt streng Formål Resultat abc Startbyte-test. Fejlmelding om manglende startbyte fra første tegn.!x#/ Test af ukendt kommando. Fejlmelding efter 4 tegn.!zrabcd4321## Stopbyte-test for zoneskiftkommandoen. Melding om manglende stopbyte efter sidste tegn.!zrabcd4321#/ Test af skift til rød zone. Melding om zoneskift. X-koordinat: 43981, y-koordinat: (henholdsvis ABCD og 4321 hex.)!sgabcd4321#/ Test af uventet svar på Melding om uventet svar status-forespørgsel. på statusforespørgsel. Grøn zone, men samme koordinater som forrige test.!sgabcd4321## Test af manglende stopbyte. Melding om manglende stopbyte.!r#/ Test af uventet svar på Melding om uventet svar på status-forespørgsel. radiusændring.!r## Test af manglende stopbyte. Melding om manglende stopbyte.!d#/ Test af fejl-melding. Meddelelse om fejl i afstandsmåler. Tabel 8.1: Tabel med første del af forløbet af testen af pc-softwaren. Der er endnu ikke foretaget nogle valg i programmets menu. Afsendt streng Formål Resultat!d## Test af manglende stopbyte. Meddelelse om manglende stopbyte.!syabcd4321#/ Test af svar på statusforespørgsel. Melding om, at svar på statusforespørgsel er mod- taget, og at zonen er gul med samme koordinater som ovenfor.!syabcd4321#/ Test af, at ForventerStatusflag slettes korrekt. Melding om, at uventet svar på statusforespørgsel er modtaget. Tabel 8.2: Tabel med anden del af forløbet af testen af pc-softwaren. Det er forinden valgt at hente afstandsmålerens status. 96

107 KAPITEL 8. PC-SOFTWARE Afsendt streng Formål Resultat!u3abc## Test af manglende Meddelelse om manglende stopbyte for ugyldig stopbyte ved sid- kommando modtaget - ste tegn. kommandoen.!u0# Test ugyldig kommando Meddelelse om, at af- modtaget - standsmåleren har mod- kommandoen; ingen taget en ugyldig kommando. tegn returneret.!uf # Test ugyldig kommando Meddelelsen om, at af- modtaget - standsmåleren har mod- kommandoen; maksimalt taget en ugyldig kom- antal tegn mando, bibeholdes. returneret.!r#/ Test af svar på statusforespørgsel. Melding om, at svar på radius-kommando er modtaget.!r#/ Test af, at NyZoneSendt-flag slettes korrekt. Melding om, at uventet svar på radiuskommando er modtaget. Tabel 8.3: Tabel med tredje del af forløbet af testen af pc-softwaren. Det er valgt at ændre radius for rød zone til ; cm fra programmet. 97

108 9 Blokintegration Efter at alle blokkene er færdigdesignet, implementeret og testet, skal de integreres med hinanden. For at teste, om dette forløber vel, udføres en blokintegrationstest. Testene er blevet udført på baggrund af blokintegrationstestspecifikationen, se afsnit 3.2 på side Testene Alle testbeskrivelser, opstillinger, resultater og testkonklusioner for de enkelte test er at finde i testjournalerne i appendiks G. 9.2 Samlet konklusion for målejournaler Ud fra testene kan det konkluderes, at alt hardwaren virker som forventet, da testene af integrationen mellem mikrocomputer og sonarinterface samt af sonarinterface og sonar begge forløb som forventet. I integrationstesten mellem hardware og software virkede kommunikationen mellem mikrocomputeren og pc en og detekteringen af en person. Dog kom en der en række skift når et objekt bevægede sig på grænsen mellem to zoner. Da pc-software og afstandsmåler blev integreret viste alle funktioner sig at fungere, men der var ustabilitet i zoneovergangene. Det antages at kommunikationen mellem pc og mikrocomputer ikke var skyld i det Fejldetektering virker ikke Ved frakobling af den ene sensor skulle afstandsmåleren have meldt en fejl, hvilket den ikke gjorde. Dette skyldes direkte støj fra sonarblokkens udgangstrin, som detekteres af indgangstrinet. På denne måde kommer signalet over fejldetekteringens niveau (se afsnit 7.5.1, hvor det blinde område er defineret, og der sendes en fejlbesked. På figur 9.1 ses en sammenligning mellem en frakoblet og en tilkoblet sensor. Her kan den direkte støj ses, og det direkte lydsignal kan ses ca ms efter på den tilkoblede sensor. For at undgå at overhøringen fra udgangstrinnet forstyrer fejldetekteringen, kan fejldetekteringssoftwaren nøjes med at undersøge, om signalet kommer over en tærskelsspænding i et begrænset område omkring det direkte lydsignal. 98

109 KAPITEL 9. BLOKINTEGRATION Figur 9.1: Kanal 1 er forbundet til den tilkoblede sensor (H mv pr. tern). Kanal 2 er forbundet til den frakoblede sensor ( V pr. tern). Horisontal opløsning H, } s pr. tern Ustabilitet i zoneovergang Ustabilitet i styrken af det reflekterede signal gjorde, at et objekt ikke kunne detekteres med fuldstændig sikkerhed. Dette vil især kunne forekomme ved svage signaler. Jo længere væk objektet befinder sig fra afstandsmåleren, jo svagere bliver reflektionen, hvilket medfører, at denne kommer tæt på tærskelsværdien for detektion. Følgende fejlscenarie kan forestilles: Hvis der kun detekteres ekko i en side, vil zonen skifte til rød uanset afstanden. Ved næste måling kan ekkoet eventuelt ikke detekteres, og der vil blive meldt grøn zone. Løsningen på dette problem vil være at sætte afstand på de objekter, som kun detekteres af en sensor. Derved vil der ikke forekomme zoneskift fra grøn til rød zone men kun fra grøn til gul zone. For at undgå mange skift mellem grøn og gul zone kan der indføres en radius for grænsen mellem gul og grøn zone på en afstand, hvor detektionen er sikker. Yderligere kan der indføres hysterese mellem zoneskift for at gøre overgangen mere stabil. 9.3 Konklusion Integrationstesten viste at blokkene kunne integreres, og at hovedfunktionerne i det færdige system virkede. Fejldetekteringen virkede ikke, da der kom for meget støj, lige efter et pulstog blev udsendt. 99

110 10 Accepttest For at verificere, at produktet lever op til de krav, der er stillet i kravspecifikationen kapitel 2, udføres en accepttest. Accepttesten tager udgangspunkt i accepttestspecifikationen (afsnit 2.7), som blev udarbejdet i forbindelse med kravspecifikationen. Denne foreskriver, hvad der skal testes, og hvordan det skal gøres Testopstilling Til accepttesten benyttes en grundopstilling, der består af mikrocomputeren med software, en bærbar pc, en strømforsyning samt sensorer og aktuator. Det hele placeres på en vogn. Aktuator og sensorer placeres på en lige vandret linje med en indbyrdes afstand på ;H m, med aktuatoren i midten. Dette arrangement kaldes efterfølgende sonarenheden. Sonarenheden er placeret ; m over gulvet. Omgivelserne er de samme, som blev benyttet under stereosonartesten (appendiks B på side 112) Testudstyr Til accepttesten er følgende udstyr blevet brugt: O Stol: En stol fra kantinen på Aalborg Universitet, Fr. Bajers Vej 7. Dimensionerne fremgår af figur B.7 på side 118. På stolen er hængt et sælskind. O Bærbar computer: Denne er en IBM kompatibel pc af mærket og model; Dell Inspiron 5000e, forsynet med RedHat 7.1 (Seawolf) Kernel O Serielt kabel O Vogn O 30 m målebånd udlånt fra komponentudleveringen på Institut 8 AAU O Mikrocomputeren O Afstandsmålersoftware til mikrocomputer 100

111 KAPITEL 10. ACCEPTTEST Instrument Fabrikant AAU-nummer Strøm og spændingsforsyning Hameg Tripple Power Supply AUC-INST Tabel 10.1: Liste over de instrumenter, der blev benyttet under accepttesten. O Afstandsmålersoftware til pc I det følgende beskrives fremgangsmåden og resultater samt delkonklusion for hvert af de punkter, der skal testes på baggrund af kravspecifikationen Dækningsområde Fremgangsmåde Undvigelse af eventuelle forhindringer vil blive lettere, jo større rækkevidden er. Derfor testes først på, hvor stor rækkevidden er for markrobotten. Der placeres en stol med sælskind i en afstand af m fra afstandsmåleren, hvilket er udenfor minimumskravet for rækkevidden. Herefter flyttes vognen med afstandsmåleren langsomt nærmere objektet. Pc-programmet vil på en afstand indenfor de m detektere objektet. Det er fastlagt, at denne skal være større end eller lig med ; m. For at kontrollere at beregningen af positionen er korrekt, bruges et målebånd. Testen af dækningsområdets bredde skal foregå ved at placere en stol med sælskind i punktet (0,5m; 0,5m) i forhold til centrum. Denne skal afstandsmåleren kunne detektere, hvilket verificeres ved at spørge om status. Forsøget gentages, hvor stolen placeres i en afstand af ; m fra sonarenheden og i en afstand af m fra centerlinien. Her skal den ligeledes kunne detekteres. Målingerne udføres både på den venstre og den højre side af centerlinien Resultater I den første del af testen, afstandsmålingen, kunne objektet detekteres på en afstand af ; m. Det eneste problem var, at signalet ikke var helt stabilt, og at afstandmåleren således ikke altid kunne detektere toppe på begge kanaler og derfor melder, at afstanden var m. Det har meget at sige, hvor vinkelret fladen står på. Fuld stabilitet opnås derfor først ved m. Afstandene blev kontrolleret med et målebånd, og her viste det sig, at de målte afstande passede med to centimeters nøjagtighed. Anden del af testen, vinkeltesten, havde ikke nær samme positive resultat. Det kunne godt lade sig gøre at placere objektet H meter ude og H fra centerlinien således, at det gav en reflektion, men det krævede en del tilpasning. Ved målingen på 4 meters afstand meldte sonaren blot grøn zone, hvilket betyder, at den ikke kunne detektere noget objekt. Ved ikke-systematisk test blev det klart, at den største afstand, der kunne opnås med 1 meters afstand fra centerlinien, var 3 meter. 101

112 10.4. VARIABEL ZONESTØRRELSE Delkonklusion Ud fra disse resultater kan det konkluderes, at den første del af testen kun lige er bestået. Dog er det ikke godt, at sonaren ikke kan detektere et toppunkt fra begge kanaler, og derfor melder fejl. Den anden del af testen er fejlet, da placeringen af objekterne skal foregår alt for præcist. Disse fejl, specielt dem fra vidde-testen, skyldes, at antagelsen om dækningsområdets størrelse, som det beskrives i appendiks B.5, var for optimistiske Variabel zonestørrelse Fremgangsmåde Denne test udføres ved at placere stolen i en afstand af m vinkelret på sonarenheden. Da rød zone bliver initialiseret til m, vil stolen befinde sig i gul zone. Når afstandsmåleren startes, skal den skrive på skærmen, at den har fundet et objekt i m afstand, og at den befinder sig i gul zone. Derefter bruges menupunkt 2 på pc en til at indstille radius på den røde zone til m. Når der er kommet et udført signal fra afstandsmåleren, skal afstandsmåleren skrive på skærmen, at den nu har fundet et objekt i rød zone. Hvis dette sker, er testen bestået Resultat og delkonklusion Dette virkede helt, som det skulle. Zonen skiftede fra gul til rød i det øjeblik, hvor der blev tastet på retur-knappen. Testen bestået Menu Fremgangsmåde I menuen er der flere punkter. Da menupunkternes egenskaber bliver testes i forbindelse med de andre dele af accepttesten, afprøves alle menupunkterne kun med det formål at få udført svar tilbage. Ved testen af rød zones radius, vælges en radius på 4 H m Resultater og delkonklusion Alle menupunkterne virker som de skal, og menuen er skrevet på dansk. Testen bestået 102

113 KAPITEL 10. ACCEPTTEST 10.6 Fejlhåndtering Fremgangsmåde Fejlhåndteringen testes ved først at resette afstandsmåleren og sørge for, at der ikke er nogen objekter inden for sonarenhedens dækningsområde. Dette kontroleres på pc en ved at bede om en status. Når dette er sket, frakobles den højre sensor. Dette bør, hvis testen skal bestås, resultere i en fejlmelding på skærmen, samt et skift til rød zone Resultater og delkonklusion Testen blev ikke udført med den begrundelse, at fejlhåndteringen ikke bestod blokintegrationstesten mellem mikrocomputerhardware og mikrocomputersoftware. Testen fejlede. 103

114 11 Konklusion I dette projekt er arbejdet med en afstandsmåler, til detektering af objekter foran en autonom markrobot. Markrobotten, er konstrueret til at tage billeder af ukrudt eller afgrøder på en mark, og den styres ved hjælp af GPS. For at undgå at robotten kører ind i noget, som f.eks. en ko eller et barn, skal markrobotten udstyres med en afstandsmåler, der kan detektere objekter foran robotten. Selve detekteringen foregår ved hjælp af ultralyd. Det initierende problem for projektet er følgende: Hvorledes kan en afstandsmåler konstrueres, så den ved hjælp af ultralyd kan detektere en forhindring foran en autonom markrobot. For at undersøge, hvilken skanningsmetode der var den bedste, blev tre forskellige metoder analyseret. De tre metoder var et array af sonarenheder, en stepmotor med en sonarenhed og en trigonometrisk løsning, der benytter en aktuator og to sensorer. Det blev valgt at bruge den trigonometriske metode, da den både var robust og kunne give stor præcision. Området foran markrobotten blev inddelt i tre zoner. Grøn zone, hvor der ingen objekter er, gul zone, hvor der er et objekt, som er et stykke væk, og rød zone, hvor der er et objekt tæt på markrobotten. Afstandsmåleren inddeles i fem blokke: sonar, sonarinterface, mikrocomputer, software til mikrocomputer og software til pc. Den trigonometriske metode fungerer ved, at der bruges en aktuator og to sensorer. Ved at kende den indbyrdes afstand mellem aktuator og sensorer samt den tid, signalet er om at bevæge sig fra aktuator til objekt og til sensorer, er det muligt at beregne positionen af det objekt, der frembringer reflektioner. Til at udføre denne opgave blev der konstrueret et kredsløb, der ud fra den allerede eksisterende clock frembragte de ønskede pulser, som skulle bruges af aktuatoren til at udsende lyden. Derefter blev det reflekterede signal behandlet ved at føre det igennem et højpasfilter med en knækfrekvens på khz, en dobbeltensretter og en udglatning. For at omdanne det kontinuerte, analoge signal til et diskret, digitalt signal, konverteres signalet med en AD-konverter. Mikrocomputeren er bygget op omkring en Motorola Til test er benyttet en debugger/monitor med navnet TS2-MON. Denne monitor stiller krav om, at der bruges en ACIA til kommunikation med en pc og desuden nogle krav til adressering af ROM, RAM og ACIA. Mikrocomputeren er forsynet med en clockgenerator, et power up reset kredsløb, en PEEL-kreds til håndtering af interrupts og 104

115 KAPITEL 11. KONKLUSION én til adressedekodning. Desuden er der koblet en ACIA til mikrocomputen og en konverter, der konverterer fra TTL-spændingsniveau til RS232-spændingsniveau. Softwaren til mikrocomputeren indeholder forskellige funktioner. Når der kommer samples fra sonarinterfacet, genereres et interrupt, og der køres en interruptrutine, der lægger samples ind i en buffer. Desuden kommer der interrupts fra ACIA en, når der skal sendes eller modtages data fra pc en. Når der ikke køres interruptrutiner, køres en hovedrutine, der skiftevis udfører kommandoer sendt fra pc en og behandler de indkomne data fra sonarinterfacet. I databehandlingen beregnes afstanden til objektet. Ud fra radius bestemmes, hvilken zone markrobotten er i. Er zonen ændret siden sidste skanning, sendes zonen til pc en. Til test af afstandsmåleren er der udviklet et pc-program. Programmet består af en menu, hvor der kan vælges mellem at bede om status og at ændre radius. Desuden består programmet af en interruptrutine, der både modtager svar på udsendte forespørgsler og modtager signal om zoneskift. Interruptrutinen udskriver det, den modtager, til skærmen. Da blokkene var designet og implementeret, blev der udført en blokintegrationstest og en accepttest. Blokintegrationstesten viste at blokkene kunne integreres, så den ønskede funktionalitet blev opnået. Dog virkede fejldetekteringen ikke, da der blev udsendt meget støj, når pulstoget blev sendt afsted. Testene viste, at der kunne skriftes radius på rød zone fra pc en, at pc ens menuer virkede, og at der kunne detekteres et objekt foran markrobotten. Accepttesten blev ikke bestået. Fejldetekteringen virkede ikke, rækkevidden levede ikke op til kravene, og vinklen var vid nok. Dog er et vigtigt mål for projektet opfyldt, da det er vist at princippet fungerer. Erstattes de benyttede sonarenheder af mere egnede, vil accepttesten givetvis kunne bestås Perspektivering Skal der arbejdes videre med afstandsmåleren, kan følgende udvidelser og forbedringer overvejes: Bedre sonarer: For at forbedre afstandsmåleren kan bedre sonarenheder benyttes. De skal både have længere rækkevidde og dække en større vinkel. Dette kan gøres ved at benytte en kraftigere aktuator. Vejrbestandige sonarenheder: For at afstandsmåleren kan implementeres, vil det være nødvendigt med vejrbestandige sonarenheder. Detektering af flere objekter: Ved at arbejde videre på beregningerne på de indkomne samples, vil det være muligt at detektere mere end et objekt. Hysterese: For at undgå at mikrocomputeren sender for mange interrupts til pc en, kan hysterese og prelfjerner implementeres. Hysteresen implementeres ved at sætte forskellige grænser for, hvornår zonen skal skifte, alt efter om det er fra rød til gul eller fra gul til rød. Prelfjerneren kan implementeres ved, 105

116 11.1. PERSPEKTIVERING at skift fra rød zone til gul eller grøn zone kun skal ske, hvis der kommer to målinger i den nye zone i træk. CAN-bus: En naturlig udvidelse til afstandsmåleren vil være at implementere CAN-bussen, da denne er anvendt på markrobotten. Optimer algoritme: Ved en optimering af algoritmen kan man øge følsomhed og præcision. Ændring af frekvens: Til optimering af algoritmen kan der eksperimenteres med at ændre på samplingsfrekvensen. Desuden kunne man forestille sig, at afstandsmåleren kunne bruges til andre formål. Dette kunne f.eks. være til andre typer autonome køretøjer eller robotter, bag på lastbiler til hjælp ved bakning eller som tyverialarm på f.eks. museer. 106

117 Litteratur [Acroname, 2002a] Acroname, I. (2002a). Polaroid 6500 sonar ranging module. [Acroname, 2002b] Acroname, I. (2002b). grade transducer. Polaroid series 9000 environmental [Clements, 1997] Clements, A. (1997). Microprocessor systems design; hardware, software, and interfacing. PWS Publishing Company. [Components, 2002] Components, R. (2002). Danske teknikeres håndbog. [Dahl-Pedersen et al., 1995] Dahl-Pedersen, S., Engberg, J., Henningsen, P., Hermansen, K., Jensen, E. A., Larsen, T., Raskmark, P., and Øhenschlæger, E. (1995). Elektronik ståbi. Teknisk forlag. [Frerking, 2002] Frerking, G. (2002). Serial programming howto. [Institut, 2002] Institut, D. M. (2002). Meteorologiske ekstremer i danmark. [Serway and Beichner, 2000] Serway, R. A. and Beichner, R. J. (2000). Physics for Scientists and Engineers with Modern Physics. Saunders College Publishing. 107

118 A Princip for sonar Da det er besluttet at arbejde med sonar, er der en del viden, der skal indsamles. Dette appendiks gennemgår i grove træk, hvad en sonar er, og kommer bagefter nærmere ind på visse af de problemer, der kan opstå ved brug af sonar. Princippet for en sonar er, at den udsender et signal fra en aktuator. Denne har tidligere modtaget et elektrisk signal, som den omdanner til et lydsignal. Dette signal transmitteres igennem luften til det rammer et objekt. Idet signalet rammer objektet, vil en del af det reflekteres, og en sensor vil være i stand til at detektere dette signal og omdanne det til et elektrisk signal igen. Afstanden kan herefter beregnes ud fra tiden, der går fra signalet udsendes, til det modtages igen. A.1 Lyd Der kan bruges lyd ved mange forskellige frekvenser, men ikke alle er lige gode til formålet. Der ses bort fra det hørbare spektrum ( Hz khz), da et stort antal støjkilder eksisterer i dette område. Dyrs og menneskers aktiviteter betragtes f.eks. som støjkilder. Samtidig ville sonaren være til gene for mennesker, hvis den udsendte er lyd i det hørbare spektrum. Derudover er de helt lave frekvenser op til Hz ikke brugbare. Disse frekvenser vil spredes meget og dermed kunne reflekteres alle mulige steder fra. Signalets gyldighed vil derfor ikke være sikker. Ultralyd, hvilket er frekvenser over khz, er velegnet til dette formål, da refleksionen er mere præcis. Det er derfor valgt at arbejde med frekvenser over khz, da præcision er en vigtig faktor ved måling af afstand vha. lyd. Støj-kilder i dette arbejdsområde ses der bort fra, da der er at kun skal konstrueres prototype. [?] A.2 Dopplereffektens påvirkning Da markrobotten kan bevæge sig med op til m s, skal det undersøges, om dopplereffekten har nogen betydning for afstandsmåleren. Dopplereffekten kan bl.a. observeres, når en ambulance kører forbi. Her ændres frekvensen fra en høj frekvens til en lavere. Dette skyldes, at når kilden er i 108

119 A APPENDIKS A. PRINCIP FOR SONAR bevægelse, vil bølgelængden på den udsendte bølge 1 blive påvirket af den fart og retning, som kilden har. Se figur A.1. Observatør Kilde Observatør Kilde i bevægelse mode højre Figur A.1: Dopplerforskydningen opstår, når en kilde bevæger sig i forhold til en observatør. Bevæger kilden sig hen mod observatøren, vil bølgerne få en mindre bølgelænge, hvorimod bølgelængden vil øges, hvis kilden bevæger sig væk fra observatøren. Den frekvens, som en stationær modtager vil opfatte, kan udtrykkes ved formlen KÄÃ Å ÇÆ ) È ) ck (A.1) hvor K Ã er den observerede frekvens, er lydens hastighed, er kildens hastighed, Æ er fortegnet, alt efter om observatøren bevæger sig hen mod kilden eller væk derfra, og K er den udsendte frekvens. [Serway and Beichner, 2000, formel 17.16, s.533] Det samme gør sig gældende, hvis observatøren er stationær, og kilden er i bevægelse. Her ser formlen således ud K Ã É K (A.2) hvor K Ã er den observerede frekvens, er lydens hastighed, er observatørens hastighed, A er fortegnet, alt efter om observatøren bevæger sig hen mod kilden eller væk derfra, og K er den udsendte frekvens. [Serway and Beichner, 2000, formel 17.13, s.532] A.2.1 Udbredelse i et medie Til forskel fra elektromagnetiske bølger, herunder lys, kan lyd ikke udbrede sig i vakuum. Dette skyldes, at overførelsen af lyd sker ved trykændringer. Derfor er 1 Elektromagnetisk, tryk- eller anden type bølge 109

120 ? Ë A.2. DOPPLEREFFEKTENS PÅVIRKNING hastigheden, hvormed en lydbølge udbreder sig i et medie, meget afhængig af partikeltætheden i mediet. Eksempelvis bevæger lyden sig meget hurtigere i vand, end den gør i atmosfærisk luft [Serway and Beichner, 2000, s. 520ff]. Det skal envidere nævnes, at partikeltætheden ændrer sig ved forskelligt tryk, men det antages, at ændringen af luftens hastighed pga. trykvariationer kan negligeres. Endvidere afhænger udbredelseshastigheden af temperaturen i mediet. Lyds udbredelse i atmosfærisk luft har følgende sammenhæng med temperaturen: Å m s (A.3) hvor m s er lydens hastighed i atmosfæriske luft og er forskellen og den temperatur, hvorved det ønskes at beregne Ë lydens hastighed [Serway and Beichner, 2000, s. 521]. A.2.2 Grænseværdier Ud fra formel (A.1) og formel (A.2) ses det, at jo større lydens hastighed er, jo mindre rolle spiller kildens eller observatørens hastighed. Når det antages, at ÎÍÏ og ÍÐ. Derfor må den laveste lydhastighed give det største bidrag til frekvensændringen. Ifølge formel (A.3) forekommer den laveste hastighed på lyden ved den laveste temperatur. Markrobotten skal arbejde i perioden marts til oktober. Den maksimale og minimale temperatur, der nogensinde er observeret i Danmark i denne periode, er henholdsvis ; 3 C og 3 C [Institut, 2002]. Det antages dog at markrobotten ikke skal arbejde i frostvejr, da væksten hos afgrøder og uønskede gevækster må anses for minimal under disse betingelser. Derfor sættes mimimumstemperaturen til x3 C. Lydens minimale hastighed beregnes ved hjælp af formel (A.3) til lyd-min m s (A.4) Det antages, at objekter, der er i bevægelse, f.eks. en traktor eller en løbende ko, vil være opmærksomme på forhindringer på deres vej, og derfor vil styre uden om markrobotten. Derfor vil de objekter, som sonaren skal kunne se og lydbølgerne kunne reflekteres på, være i en stationær tilstand. Dette medfører, at lydens bane fra sonarens lydgiver og til sonarens modtager, kan deles op i to forløb. Første forløb går fra lydgiveren, som er i bevægelse, til objektet, hvor det reflekteres. Her benyttes formel (A.1). Andet forløb går fra reflektionen på objektet til modtageren, som er i bevægelse. Reflektionen på objektet antages at være en ny lydkilde med den frekvens, som er fundet efter første del af forløbet. Til dette benyttes formel (A.2) 110

121 Ë E W? APPENDIKS A. PRINCIP FOR SONAR Hvis ultralyden fra lydgiveren har en frekvens på K +. - ; 6Ñ ÒÓ, og markrobotten maksimalt kan køre m s, vil den maksimale ændring i frekvens blive: { Ÿ$ { u/u$u/u K maks Å = 9/9"8 M(; khz EÔ; khz Ifølge ligning (A.5) skal modtageren kunne opfange en frekvens, der er Õ større end den udsendte. ßÞ ; ÒÓ (A.5) f/ö >Ø È f/ø>ùúüû Ý 111

122 B Test af sonarenheder I dette appendiks beskrives testen af to typer sonarenheder. Testen blev foretaget for at sammenligne tre metoder til detektering af objekter: array, stepmotor og trigonometri. Der måles både på afstand og vinkel. Det viser sig, at trods visse forskelle kan alle tre målemetoder bruges. Testen udføres for at vise, om array, stepmotor og trigonometri metoderne kan fungere i praksis. I de første metoder bruges et enkelt sonarmodul (Acroname 9000) med tilhørende driver (Acroname 6500). Til den tredje metode bruges en stereosonar med tre sonarenheder (Willow Technologies MA40Bt): en sender og to modtagere. I testen undersøges rækkevidde, horisontal spændvidde, og hvor godt lydbølgerne bliver reflekteret på forskellige overflader. B.1 Forsøgsopstillingerne Alle målingerne blev foretaget i forhallen mellem B3 og A4 på Fr. Bajers Vej 7, Aalborg Universitet. Materialet i målemiljøet er beton, sten og jern, og overfladerne er plane og retvinklede i forhold til måleopstillingen. B.1.1 Enkeltsonar Enkeltsonarmodulet trigges ved, at der kommer en puls på drivermodulets init-ben. Når dette sker sender den 16 lydpulser ud. Hvis sonarmodulet modtager et ekko, vil ekkobenet blive aktivt, indtil der kommer en puls på initbenet igen. Det driverkredsløb, der blev brugt under testen, er modificeret en anelse i forhold til det, der blev udleveret. Eldiagrammet ser derfor ud som på figur B.1 I test med enkeltsonaren forbindes en singleshot-pulsgenerator til init. Denne sættes til at give en puls på } s med en spænding på H V. Pulsgeneratoren forbindes til den ene kanal på oscilloskopet, mens den anden kanal forbindes til ekkosignalet. Begge forbundet til nærmeste stel. Disse kan ses på figur B.2. Endvidere blev enkeltsonarmodulet forbundet til forsyningen med en spænding på à V. Udstyret, der blev anvendt i forbindelse med testen, er vist i tabel B.1: 112

123 ãâág APPENDIKS B. TEST AF SONARENHEDER Figur B.1: Her ser det modificerede eldiagram for driverkredsløbet. Puls generator Start Out Init CH1 CH2 Echo Figur B.2: Opstilingen som blev brugt i forbindelse med test af det udleverede enkeltsonarmodul. Instrument Fabrikant AAU-nummer Oscilloskop Agilent 54621D AUC-INST Strømforsyning Hameg Tripple Power Supply HM7042 AUC-INST Signalgenerator Philips PM 5715 AUC-INST Termometer Norma D1401 AUC-INST Tabel B.1: Liste over de instrumenter, der blev benyttet under testen af enkeltsonar. 113

124 B.1. FORSØGSOPSTILLINGERNE Under testen blev der benyttet 2 forskellige positioner, da ikke alle objekter er lige høje, og derfor ikke er mulige at detektere i én position. Positionerne er: Position I: Sonaren er m over gulvet. Position II: Sonaren er placeret ; m over gulvet. B.1.2 Stereosonar I denne test skal der genereres et output til aktuatoren. Til dette benyttes 2 signalgeneratorer. Signalgenerator 1 genererer 16 pulser med V S/S og en frekvens på ; khz. Disse pulser sendes af sted, når generatoren trigges af signalgenerator 2, der genererer et Hz signal med en amplitude på H V S$S. Eventuelle reflektioner bliver opfanget af sensorne og bliver behandlet i et selvkonstrueret kredsløb. Dette er opbygget, da oscilloskopet, som skal sample signalet, ikke kan sample mere end 2000 samples pr. måling. Dette betyder, at det opfangede ; khz-signal ikke kan samples uden kraftig aliasing, da samplingsfrekvensen kommer langt under nyquist-frekvensen, når der skal samples så længe, reflektionen også opfanges. Dette betyder, at amplituden i stedet skal afspejles, og derfor indeholder kredsløbet følgende elementer: forstærkning, filtrering, ensretning og udglatning. Dermed giver det et signal, der er proportionalt med amplituden på det modtagne signal. Eldiagrammet for dette kredsløb kan ses på figur B.3. Figur B.3: Her ses eldiagrammet for det indgangsfiltreringskredsløb, som blev konstrueret på baggrund af applikationsnoten til MA40Bt-enheden. Et oscilloskop sættes til at trigge på outputtet fra signalgenerator 2 og måler på udgangen af hver behandlet kanal i forhold til nærmeste stel. Hele forsøgsopstillingen kan se på figur B.4. Udstyret, der blev anvendt i forbindelse med testen, er vist i tabel B.2. De tre sonarenheder placeres på en vandret, kvadratisk jernstang 1 med en indbyrdes afstand på ;H m, hvor aktuatoren er placeret i midten. Jernstangen blev spændt på en vogn, således at sonarenhederne sad i en højde H cm over gulvet. 1 ikke massiv 114

125 æåäg APPENDIKS B. TEST AF SONARENHEDER Frekvens generator Out Bust generator CH2 CH1 Out EXT Figur B.4: Opstilingen som blev brugt i forbindelse med test af stereosonaren. Ikonerne på indgangskredsløbet symboliserer forstærkningskredsløb, filtrering og ensretning i nævnte rækkefølge, set fra venstre. Instrument Fabrikant AAU-nummer Oscilloskop Agilent 54621A AUC-INST Strømforsyning Hameg Tripple Power Supply HM7042 AUC-INST Frekvensgenerator Philips PM 5715 AUC-INST Burstgenerator Philips PM 5715 AUC-INST Termometer Norma D1401 AUC-INST Tabel B.2: Liste over de instrumenter, der blev benyttet under testen af stereosonaren. 115

126 B.1. FORSØGSOPSTILLINGERNE Testprogrammel Det billede af de to signaler, der blev målt med oscilloskopet, blev gemt i en kommasepareret fil (.csv). Til at analysere disse målinger blev der udviklet et program, der kunne finde toppunkterne for signalet fra stereosonaren ud fra den kommaseparede fil. I programmet blev der trukket en måleserie uden objekt fra den behandlede måleserie. Derved blev det meste af baggrundsstøjen fjernet. Derefter blev en målegrænse lagt ind som vist på figur B.5. Alt under denne grænse blev frasorteret som værende baggrundsstøj. Som det ses, er grænsen højere i starten end i slutningen, da der er mest støj i starten. Alt dette er konstrueret på baggrund af en empirisk, iterativ proces. 0,6 0,1 0,04 Figur B.5: Målebegrænsning Af de toppe, der oversteg støjgrænsen, blev den første udvalgt og behandlet videre. Den blev differentieret 2 vha. følgende ligning: z,y:k K ^±L ²³E N ^ L ²&N EI D(^±L ² N EQ^ L ² 1N (B.1) ² er målepunktet der behandles. Resultatet af dette sammenlignes med differensen for det sidste målepunkt. Hvis denne går fra minus til plus, er der detekteret et toppunkt. Som output genererede programmet en.tex fil, hvori tid og amplitude for toppen blev registreret. Derudover blev grafer for alle måleserier genereret i postscriptformat. Et eksempel på dette output kan ses på figur B.6. B.1.3 Overflader I målingerne er der testet på forskellige objekter for at undersøge, hvilken betydning overfladen har for, hvor godt lydbølgerne bliver reflekteret. I tabel B.3 er disse objekter beskrevet. 2 Rent faktisk foretages en omvendt differentiation, hvor hældningen ç har forkert fortegn, men det har ingen betydning. 116

127 APPENDIKS B. TEST AF SONARENHEDER Figur B.6: Eksempel på analyserede måledata for stereosonar-testen. Målingen viser whiteboardtavlen på 2 meters afstand. 117

128 B.1. FORSØGSOPSTILLINGERNE Objekt Dimensioner (HxB) Overflade Whiteboardtavle x m Plan hård overflade Person x è; m Cowboybukser og bomulds-t-shirt Person 2 ; x H m Lærredsbukser og striktrøje Person 1 med m Cowboybukser og sælskind Stol med skind Se figur B.7(a) Stol, hvorpå der var hængt et sælskind Stol Se figur B.7(b) Stolene, der forefindes i kantinen, er udstyret med træryg og jernstel. Tabel B.3: Liste over de objekter, der blev benyttet til målingerne. Figur B.7: Her ses dimensionerne på (a) Stolen med sælskind, (b) stolen alene og (c) stolen set fra siden. 118

129 APPENDIKS B. TEST AF SONARENHEDER B.2 Test af afstand B.2.1 Formål Formålet med den første test var at undersøge, hvor lang rækkevidde de forskellige sonarmodulet har, hvor afhængig denne rækkevidde er af overfladen, hvorpå signalet skal reflekteres, og hvor præcis afstanden kan måles. B.2.2 Fremgangsmåde Direkte foran afstandsmåleren blev de nødvendige målepunkter optegnet: m, m, H m, m, m, m, ; m, H m,? m, m, m, m og m. I målingerne med whiteboardtavlen var den placeret, så den stod vinkelret på lydens udbredelsesretning. Under testen blev objektet placeret på et målepunkt, og derefter blev målingen foretaget. Da enkeltsonarmodulet blev testet, blev den placeret som på figur B.8. Stereosonaren havde en anden bredde, så pga. reflektionerne fra søjlerne blev forsøgsopstillingen flyttet H m frem (hen ad x-aksen). Derfor er alle målepunkter tilsvarende forskudt. m, Figur B.8: Målepunkterne der blev anvendt i forbindelse med afstandsmålingstesten. Da begge sonarmoduler måler tiden, blev lufttemperaturen målt, således at lydens hastighed kan bestemmes. 119

130 B.2. TEST AF AFSTAND Enkeltsonar Målingerne blev foretaget ved at trykke en gang på singleshot på signalgeneratoren og aflæse tiden. Ved hver måleposition blev drivermodulet trigget 5 gange. Sonarmodulet var placeret i position I, m over gulvet. Testen blev foretaget på whiteboardtavle, person 1, person 2 og person med sælskind. Stereosonar Målingerne blev foretaget ved at gemme målepunkterne, der dannede oscilloskopets skærmbillede, i en csv-fil. Derefter blev objektet flyttet til det næste målepunkt, og det nye skærmbillede blev gemt i en ny fil. Testen blev foretaget på whiteboardtavle, person 1 og person med sælskind. B.2.3 Resultater Under udførslen af målearbejdet varierede rumtemperaturen mellem og H 3 C. Resultaterne af målingerne på enkeltesonaren kan ses i bilaget på cd-rom en, maaledata/enkeltsonar/vinkelmaalinger.ps. Resultaterne af målingerne på stereosonarenhederne kan ses i bilag maaledata/stereosonar/vinkelmaalinger.ps. B.2.4 Enkeltsonar Analyse af resultater Ud fra målingerne fremgår det, at der er forskel på, hvor godt de forskellige objekter reflekterer lyden. I tabel B.4 ses den maksimale afstand, hvor målingerne kunne foretages uden fejl, og den maksimale afstand, hvor objektet kunne ses. Objekt Fejlfri afstand Maksimal afstand Whiteboardtavle m m Person 1 m ; m Person 2 m H m Person 1 med sælskind ; m H m Tabel B.4: Resultat af afstandsmålinger med enkeltsonarenheden. I første kolonne er de forskellige objekter, i anden kolonne er den maksimale afstand hvor objektet kunne detekteres helt uden fejl, og i den tredje kolonne er den maksimale afstand, hvor objektet kunne ses mindst én gang. For at undersøge, hvor præcise målingerne er, er den målte tid sammenlignet med den beregnede tid for de enkelte afstande. I tabel B.5 ses afvigelser mellem den beregnede og den målte tid for målingerne på whiteboardtavlen. Det ses, at hvis objekterne kommer for tæt på sonarmodulet, er målingerne uanvendelige. Men er objektet over en halv meter væk, er unøjagtigheden é ÇÞ. 120

131 ???????????? Þ Þ E Þ E Þ Þ E Þ E Þ APPENDIKS B. TEST AF SONARENHEDER Afstand Beregnet tid Målt tid Afvigelse m ms 4 ms E2;Þ ms ms 4 E±; Þ H m 4 ms 4 ms E Þ m H4 ms ms E2Þ m ms 4 ms E2Þ ; ms E2 Þ ; m 4 ms 4 ms E2 Þ H m 4 ms 4 ms E m ; ms H4 ms m ms ; ms m ; H ms ; ms m H 4 ms H 4 ms E m H4 ms H4 ms m 4 ms ; H ms Tabel B.5: Præcision for afstandsmåling med enkeltsonar. Tallene er fra målingerne på whiteboardtavlen. Jo større afstand, des større præcision. Dette kan skyldes, at unøjagtigheder i den målte afstand får mindre betydning, des større afstanden er. Det ses, at der er større afvigelser i målingerne, hvor objekterne er personer. Dette kan skyldes, at en person ikke har en hel plan overflade, som f.eks. en flad tavle, men har forskellig afstand til sonarenheden alt efter, hvor på kroppen lydbølgen rammer. Stereosonar I undersøgelsen af hvor godt stereosonaren opfanger reflektioner fra de forskellige overflader, ses der på amplituden af de fundne toppunkter i måleresultaterne, som forefindes i bilag maaledata/stereosonar/afstandsmaalinger.ps. Grundet løselig håndtering af måledataene, er målingen med person 1 desværre blevet forlagt på de evige bitmarker, og er derfor ikke medtaget. Resultatet er samlet i tabel B.6, og herudaf kan det ses, at det er muligt at se en reflektions-top for en person med skind? på på helt op til m s afstand, og whiteboard-tavlen kunne måles på helt op til m s afstand, hvis denne var placeret vinkelret på udbredelsesretningen. For at undersøge præcisionen af de målte tider sammenlignes med de, der var forventet på den afstand. Dette se i tabel B.7.? Som det fremgår af tabel B.7, er der afvigelser på op til H}Þ. De tider, der står, er gennemsnitlige tider, da der kun var ganske lidt variation mellem kanalerne, da objekterne stod på centerlinjen. 121

132 B.2. TEST AF AFSTAND Afstand WB-tavle Person m. sælskind L mn L VN X X X 4 H X H H4 ; 4 H 4 ; 4 H ;? H X ; X X ; X X Tabel B.6: Amplituden på reflektionen ved afstandsmåling med stereosonar. X er målinger, der ikke er gennemført, enten fordi WB-tavlen rent fysisk ikke kunne stå så tæt på afstandsmåleren og samtidig give reflektioner, eller også at amplituden har været under V og derfor er sorteret fra som støj. 122

133 ?? ;??????? APPENDIKS B. TEST AF SONARENHEDER Afstand Udregnet WB-tavle Persen m. sælskind Afvigelse(WB) L mn L msn LÞ0N H X X H X X X X H 4 X X H4? H4 H è; 4 è ; 4?4 4 4 H 4 4 ; 4 4 H 4 H 4 4 è; ; H4 ; 4 ;H4 ; ; ; H X 4 H4 ; X? 4 4 è ; ; X 4 Tabel B.7: Præcision for afstandsmåling med stereosonar. Her sammenlignes den beregnede tid, lyden vil være om at nå en givet afstand, med det faktiske resultat. Præcisionen er angivet som afvigelsen. X er målinger, der ikke er gennemført 123

134 ?? B.3. TEST AF VINKEL B.3 Test af vinkel B.3.1 Formål I denne test blev det undersøgt, hvor vid-vinklede sonarenhederne var, og dermed hvad der skulle til, for at hele vognens bredde kunne dækkes. B.3.2 Fremgangsmåde Testen blev udført på følgende måde. Først blev der tegnet tre cirkler på gulvet foran sonarmodulet med en radius på henholdsvis m, m og m, og med centrum der, hvor sonaren var placeret. Vinkelret på sonaren ud af centerlinjen, blev der endvidere markeret følgende punkter H, 4, 4, 4, 4 H og 4 m. Vinkelret på centerlinjen, i de respektive punkter, blev der indtegnet punkter på cirkelbuerne, som blev anvendt som målepunkter under testen. Se figur B.9. Figur B.9: Cirkelbuerne, hvor målepunkterne er indteget med krydser 124

135 ? APPENDIKS B. TEST AF SONARENHEDER Ligesom ved afstandsforsøget blev enkeltsonarmodulet også testet først i den placering på krydserne som fremgår af figur B.9. I forsøget med stereosonaren havde opstilingen en anden bredde og blev pga. reflektioner fra søjlerne nødt til at blive flyttet H m frem (hen ad x-aksen). Derfor er alle målepunkter tilsvarende forskudt. Enkeltsonar Testen blev udført ved, at objektet blev placeret på dets respektive målepunkt. Signalgeneratoren blev modsat afstandforsøget, hvor der blev brugt singleshot, sat til at give en puls pr. ms. Tiden blev aflæst på oscilloskopet. Positionen blev overvåget i 5 sekunder, og i det tidsrum blev de modtagne pulser vurderet ud fra nedenstående på basis af en menneskelig opfattelse: MS: Meget stabil - alle pulser bliver reflekteret. S: Stabil - enkelte pulser (maks. 2 pr. sekund) bliver ikke reflekteret. US: Ustabil - flere pulser forsvinder. MUS: Meget ustabil - meget få pulser reflekteres. Den ovenstående vurdering skal ses på basis af, at hvis signalet er stabilt eller meget stabilt, vurderes det, at en forhindring på den angivne posistion vil blive set af afstandsmåleren. Er signalet ustabilt eller meget ustabilt, er det ikke sikkert, at forhindringen vil blive opdaget. Testen blev foretaget på en stol, en stol med sælskind og person 2. I de første to tests var sonaren placeret i position II, i den sidste test var sonaren placeret i position I. Stereosonar Testen blev udført, ved at objektet blev placeret på det respektive målepunkt. Målepunkterne, der dannede oscilloskopets skærmbillede, blev gemt i en csv-fil. Testen blev foretaget på stol med sælskind. Måledataene er herefter analyseret, og der er fundet reflektionstoppe. B.3.3 Resultater Under målingerne med enkeltsonarenheden lå temperaturen på ca. 3 C. Ved stereosonartesten steg temperaturen gennem testperioden fra til Hê3 C. Det antages dog at spille en ubetydelig rolle, så der regnes med samme temperatur i begge test. For måleresultater, se bilag maaledata/enkeltsonar/vinkelmaalinger.ps og bilag maaledata/stereosonar/vinkelmaalinger.ps. 125

136 ???? 3 3? 3 B.3. TEST AF VINKEL B.3.4 Enkeltsonar Analyse af resultater Ud fra graden af stabilitet (Meget Stabil(MS), Stabil(S), Ustabil(US) og Meget Ustabil(MUS)) er målingerne vurderet, og i tabel B.8 ses, hvor langt ude objekterne kunne detekteres på de forskellige cirkler. Stol m. sæl Stol Person 2 m, H H 3 ; 3 m, V ; 3 ; 3 m, H m, V m, H m, V Tabel B.8: Resultat af målinger. Første kolonne fortæller, hvilken cirkelradius det var, og til hvilken side (H for højre og V for venstre). 3 betyder kun at rækkevidden ikke var stor nok, til at næste målepunkt kunne nås. Stolen med sælskind var det objekt, der kunne ses i den bredeste vinkel, mens person 2 stort set kun kunne ses direkte foran sonarmodulet. Der var ikke nok målepunkter, til at den præcise vinkel kan dokumenteres for de forskellige objekter, men det antages, at med en vinkel på? 3 kan person 2 ses inden for tre meter, og med en vinkel på ; 3 kan Stol med sælskind ses på 3 meters afstand. Stereosonar Da det antages, at objektet ikke kan ses, når amplituden er under V, sårterer analyseprogrammet dem fra. De fundne reflektions-toppe er vist i bilag maaledata/stereosonar/vinkelmaalepunkter.ps. Resultat af dette ses i tabel B.9 Stol m. sælskind m, H H3 m, V H 3 m, H ;H 3 m, V m, H H 3 m, V H 3 Tabel B.9: Resultat af vinkelmålinger med stereosonar. Første kolonne fortæller hvilken cirkelradius det var, og til hvilken side (H for højre og V for venstre). Som det ses af tabel B.9, er der meget stor spredning på vinklerne, især i højre 126

137 APPENDIKS B. TEST AF SONARENHEDER side. Det antages at der er gået noget galt i målingen af vinklen til højre, da den maksimale vinkel er noget bredere med en radius på 2 meter. Derfor må den maksimale vinkel på 1 meter være mindst det samme, altså ;H3. B.4 Fejlkilder og usikkerheder Fejlkilder I målingerne er der forskellige fejlkilder, der skal tages højde for. Ujævnt gulv: Gulvet i forhallen, hvor målingerne blev foretaget, består af fliser, der er lagt i et mønster, så der bliver en revne ortogonalt på lydens udbredelsesretning. Denne revne reflekterer lyden så godt, at den ses som et objekt i målingerne med stereosonaren. Temperaturforskel: Under målingerne var temperaturen ikke konstant, men da den kun varierede indenfor ca. HÇ3 C, vurderes det at være uden betydning. Forkert placering af transducere: Hvis transducerne sad skævt, ville de ikke opfange signalerne som ønsket. Det kan være en medvirkende grund til, at stereosonaren opfangede signaler bedre i den ene side end i den anden. Forkert placering af vogn: Hvis vognen stod skævt eller ikke var centreret over nulpunktet, ville alle målinger blive forskudt. Dette kan være grunden til, at begge sonarer målte bedre til den ene side end den anden. Fejl i apparaturet: Ved fejlkalibrering og lignende vil målingerne blive behæftet med fejl. Det vurderes dog, at dette ikke er forekommet. Usikkerheder Afstandsmåling: Ved upræcis placering af objektet vil den målte afstand afvige fra den opgivne. Dette var især et problem ved måling på personer, da disse ikke er flade og afstanden derfor varierer. Vinkelmåling: Ved upræcis placering af objektet vil den målte vinkel afvige fra den opgivne. Apparaturets usikkerheder: Ved alle apparaturers målinger er der usikkerheder. Komponentusikkerheder: Som f.eks. Þ usikkerhed på modstandene. B.5 Konklusion Ud fra testresultaterne fremgår det, at alle skanningsmetoderne kan benyttes. 127

138 ? B.5. KONKLUSION Overflader og størrelse Det viste sig, at reflektionen og dermed rækkevidden var meget afhængig af, hvilket objekt der blev målt på. Ved enkeltsonaren kunne en stor whiteboardtavle ses fejlfrit på op til 9 meters afstand, mens en person uden sælskind kun kunne ses fejlfrit på 2 meters afstand. Holdt personen et sælskind foran sig, forbedredes rækkevidden betydeligt. Ved stereosonaren var reflektionen detekterbar ved whiteboardtavlen på 11 meter, mens den ved en person med sælskind kun kunne komme ud på 6 meter. Det mindste objekt, der er målt på, var en stol med et sælskind. Denne kunne godt detekteres, men det kan ikke vises, hvor små objekterne må være, før de ikke kan ses af afstandsmåleren. Derfor vurderes det, at en stol med sælskind er mindste objekt. Afstand I testen af rækkevidden viste det sig, at rækkevidden var længst for stereosonaren. Whiteboardtavlen kunne ses på op til 11 meters afstand med begge sonarmoduler, og uden fejl kunne den ses på 9 meters afstand med enkeltsonaren og på 10 meters afstand med stereosonaren. En person med sælskind kunne ses på 5 meters afstand med enkeltsonaren og på 7 meters afstand med stereosonaren. En person med sælskind kunne ses fejlfrit på 4 meters afstand med enkeltsonaren og på 6 meters afstand med stereosonaren. Dermed kan det også ses, at et objekt skal være usandsynligt godt reflekterende, hvis der skal komme reflektioner fra objekter, der er længere væk end 10 meter. Dette antages ikke at ville forekomme. Hvis tiden mellem to målinger derfor er længere end den tid, det tager lyden at reflekteres fra 10 meters afstand, er der ingen risiko for at modtage uønskede reflektioner fra forrige måling. Vinkel I testen af, hvor vidvinklet sonarerne er, viste det sig, at en stol med sælskind kan ses af enkeltsonaren i en vinkel på minimum ; 3 i forhold til centerlinjen, 1 meter ud. For stereosonarens vedkommende ses det, at denne kan se objektet i en vinkel på minimus ;H3 fra centerlinjen, med en afstand på 1 meter. Det kan dermed konkluderes, at begge sonartyper som minimum kan se objekter inden for hele vognens bredde i en halv meters afstand. Præcision For enkeltsonaren er forskellen mellem den beregnede og den målte tid mindre end }Þ ved målinger på whiteboardtavlen for området mellem m og m. For målingerne på personer var præcisionen dårligere, men dette skyldes fejl i placeringen af personen, og fordi personen ikke har en flad forside. 128

139 APPENDIKS B. TEST AF SONARENHEDER Stereosonaren har ved whiteboardtavlen en maksimalt difference mellem den målte og den beregnede tid på? H}Þ. 129

140 C Bloktests C.1 Testjournal - mikrocomputerhardware Denne testjournal indeholder en test af om mikrocomputerens hardware fungerer. C.1.1 Apparaturer Instrumenter, der bruges til testen, kan ses på tabel C.1. Udover dette anvendes der: O Mikrocomptersystem med TS2-monitor installeret. O Testprogram med interruptrutine, som placerer inputtet fra ACIA en i outputtet til ACIA en. Koden til det kan findes i testkode/inttest.x68 O Terminalprogram (Hyperterminal) Instrument Fabrikant AAU-nummer Strøm og spændingsforsyning Hameg Tripple Power Supply AUC-INST Tabel C.1: Liste over det instrument, der benyttes under blokintegrationstesten af mikrocomputer. C.1.2 Testopstilling Serielporten på en computer forbindes til porten på mikrocomputersystemet. I ROM en på mikrocomputeren er TS2MON brændt. PC en er forsynet med Microsoft Windows NT 4. På mikrocomputeren ligger et testprogram, der indeholder en interruptrutine, der med det samme returnerer de sendte data til PC en. C.1.3 Fremgangsmåde Testen udføres efter følgende fremgangsmåde: Når PC en og mikrocomputeren er forbundet, trykkes på reset. Programmet loades ind, og eksekveres med kommandoen GO Der trykkes derefter på tasterne f d s a. Der benyttes små bogstaver, da TS2-monitoren udelukkende returnerer store bogstaver. 130

141 APPENDIKS C. BLOKTESTS C.1.4 Resultater Alle de indtastede tegn blev returneret korrekt. C.1.5 Testkonklusion Det er hermed vist, at sammenspillet mellem RS232 blokken og mikrocomputen virker. fig C.2 Testjournal - sonarblok I denne test testes om den konstruerede sonarblok, opfylder de krav der er stillet til den. Dette gøres ved at undersøge, om der er et ventet ekko i udgangssignalet. C.2.1 Instrumenter og udstyr Udstyret, der blev benyttet under testen, fremgår af tabel C.2 Instrument Fabrikant AAU-nummer Strømforsyning Hameg Tripple Power Supply HM7042 AUC-INST Oscilloskop Agilent 54624A AUC-INST TTL kontakt - AUC-INST Frekvensgenerator Exact model 1190 AUC-INST Tabel C.2: Liste over de instrumenter der blev benyttet under bloktesten af sonaren. C.2.2 Testopstilling Der laves en opstilling på samme position som i appendiks B, og der måles på et sælskindsobjekt (stol med sælskind), i en afstand af 2 m og ortogonalt på opstillingen. Sonarblokken forbindes til frekvensgeneratoren, hvor denne skulle være koblet til E benet på CPU en, og TTL-kontakten forbindes til SkanAk. Der benyttes et oscilloskop til at måle forskellige steder på kredsløbet: kanal 1 og 2 måler amplitude outputtet til sonarinterfacet. Kanal 3 kobles til efter R1 i outputtet på udgangstrinnet, R1 s placering kan ses på figur 4.2 på side 32 og kanal 4 er koblet til SkanAk som bruges som trigger og til at verificere at denne er stabil. C.2.3 Fremgangsmåde SkanAk sættes høj ved hjælp af TTL-kontakten, og billedet fra oscilloskopet gemmes. Derefter ses om ekkoet er på billedet det rigtige sted. Da stolen står 2m fra 131

142 ? C.3. TESTJOURNAL - SONARINTERFACE opstillingen skal der være et ekko efter: m ; m s ms C.2.4 Resultater Oscilloskopbilledet kan ses på figur C.1. Der kan ses, at der er en top, ca. 6 tern efter at SkanAk er aktiveret, med en opløsning på ms pr. tern, giver dette ca. ms. Figur C.1: Oscilloskopbillede fra test. C.2.5 Testkonklusion Ud fra testen kan det konkluderes at sonarblokken virker. Ekkoet ligger, hvor det var forventet, derfor er testen bestået. C.3 Testjournal - sonarinterface I denne test, testes om det konstruerede sonarinterface, opfylder de krav, der er stillet til det. C.3.1 Instrumenter og udstyr Udstyret, der benyttes under testen, fremgår af tabel C.3 132

143 APPENDIKS C. BLOKTESTS Instrument Fabrikant AAU-nummer Strømforsyning Hameg Tripple Power Supply HM7042 AUC-INST Logikanalysator og Agilent 54621D AUC-INST oscilloskop CMOS kontakt - AUC-INST Multimeter Fluke 37 AUC-INST Frekvensgenerator Philips PM5131 AUC-INST Enkeltpulsgenerator Philips PM5715 AUC-INST Tabel C.3: Liste over de instrumenter, der benyttes under bloktesten af sonarinterfacet. C.3.2 Testopstilling I forbindelse med sonarinterfacetesten er der 3 funktioner, der skal testes; latch, frekvensneddeleren og ADC. Til disse test skal bruges følgende opstillinger: Latch 3 kontakter forbindes til D0-2 på PEEL en, og pulsgeneratoren forbindes til CSlat* (chip select for latch) på PEEL en. Enkeltpulsgeneratoren skal give en puls på ; ns, som svarer til det, som minimum vil komme fra mikrocomputeren. Endvidere kobles en khz frekvense fra en frekvensgenerator til clockinputtet, ben 1 på PEEL en og frekvensen på WR* måles med oscilloskopet. ADC En spændingsforsyning tilsluttes til de to inputben, hvor signalet fra sonarblokken skal komme. Logikanalysatoren tilsluttes databussen D kontakter forbindes til RD* og WR* benene. Alle punkter måles i forhold til den nærmeste GND, medmindre andet er opgivet. Målepunkterne kan ses på figur C.2 C.3.3 Fremgangsmåde Testen udføres efter følgende fremgangsmåde: Latch og frekvensneddeler: kontakterne placeres i de 8 forskellige positioner, efter hver skift undersøges om frekvensen ændres, og frekvensen aflæses på oscilloskopet. ADC: Indgangsspændingen, sættes til henholdsvis V, Red - fg, R d - fg og R d - f1g H V, dog ikke over forsyning, da ADC ikke kan klare dette. Spændingen V+ # måles med multimetret og resultatet aflæses på databussen, via logikanalysatoren, når der samples. 133

144 C.3. TESTJOURNAL - SONARINTERFACE Figur C.2: Diagram over sonarinterfacet C.3.4 Resultater Latch og frekvensneddeler Mode Forventet Målt 0 Stoppet Stoppet 1 4 è khz 4 khz 2 4 khz 4 khz 3 khz è khz 4 ; khz è; khz 5 4 khz 4 khz? 6? khz è khz 7 khz è khz Tabel C.4: Testresultat for frekvenstest ADC R d - f1g blev målt til 4 ; V. Resultaterne kan ses på tabel C.5. C.3.5 Testkonklusion Ud fra testen kan det konkluderes, at latch og frekvensdeler virker præcis som forventet. Alle forventede resultater blev opfyldt. Denne del af testen er derfor bestået. 134

145 APPENDIKS C. BLOKTESTS Spænding forventet Målt Udlæst Lower Udlæst Higher V 0x00 V 0x00 0x00 R d - f1g6 V 0x80 0x7F R d - f1g 0xFF 4 ; V 0xFF 0xFF R d - fg H V 0xFF ; ;; V 0xFF 0xFF Tabel C.5: Testresultat for ADC test Endvidere kan det ud fra testen konkluderes, at ADC en virker. Ved målingerne med R d - fg var den ene AD-konverter 0x1 fra det forventede, men det har ikke den store betydning. Dermed er den samlede test bestået. 135

146 D Protokol Dette appendiks omhandler den protokol, der bruges til kommunikation mellem PC og mikrocomputer. Den består af en række bytes, der hver kan tolkes som ASCIItegn, samt i visse tilfælde nogle data. Den fysiske og logiske kommunikation mellem afstandsmåler og pc foregår vha. RS232-standarden med 9600 baud, 1 stopbit og ingen paritet. Det defineres, at en pakke i softwareprotokollen skal bestå af 3 eller flere tegn i nævnte rækkefølge: O 1 startbyte. O 1 byte med kommando. O 0 eller flere bytes med parametre. O 1 byte med en checksum for hele pakken undtaget start-byte, checksummen selv og stop-byte. O 1 stopbyte. Checksummen er i første omgang blot en dummy-byte, hvor værdien ignoreres. Når testfasen er ovre, og pc-softwaren fungerer, kan den evt. implementeres. Startbyten er en byte med hexadecimalværdien 21, svarende til ASCII-tegnet!. Stopbyten har værdien A, som i ASCII-tegnsættet under Unix svarer til et linjeskift. Når en pakke er modtaget af mikrocomputeren, skal den som svar returnere en pakke af samme form som ovenstående, hvor kommandoen i stedet er den modtagne kommandobyte med bit 4 negeret, eventuelle svar-data samt en ny checksum. Formålet med svaret er løbende at teste kommunikationen. Hvis markrobotten ikke modtager svar på en kommando, bør den omgående stoppe al videre kørsel. Omvendt er der ingen grund til at lade pc en svare mikrocomputeren, da den alligevel intet kan gøre ved et kommunikationsbrist. En simpel checksum kunne f.eks. laves ved blot at addere kommando-, sagsnummerog data-bytene samt antallet af tegn og bruge den mindst betydende byte af summen som checksum. Da checksummen ikke implementeres, udsættes definitionen af beregningsmetoden. Indtil det er sket, ignoreres tegnets værdi (men det skal dog stadig forefindes). Med 7 bits til hver kommando kan der defineres 128 kommandoer. I stedet for at begynde fra 0, vælges kommandoerne så hensigtsmæssigt, at de svarer til små 136

147 APPENDIKS D. PROTOKOL Kommando Betydning Uddybende beskrivelse d Dårlig nyt En fejl er opstået i afstandsmåleren. f Frekvens Ændr ADC en samplingsfrekvens. o Overfør Overfør sidste serie samples til pc en r Ændr radius Ændr radius for rød zone s Status Request fra pc en om at få tilsendt zone og placering af evt. objekter. u Ugyldig Ugyldig kommando modtaget. z Zoneskift Advarsel fra afstandsmåler om, at der er skiftet zone. Tabel D.1: Kommandoer i softwareprotokollen. I første omgang er kun d, r, s, u og z-kommandoerne implementeret. bogstaver i ASCII-tegnsættet. Når bit 4 negeres, ændrer det blot de små bogstaver til store bogstaver. I tabel D.1 defineres kommandoerne, og i tabel D.2 defineres parametrene til kommandoerne. Når checksummen ikke implementeres i testfasen, og data overføres som ASCIItegn, kan afstandsmåleren i testfasen afprøves vha. et standard-terminalprogram. Dette gør det lettere at afgøre, om eventuelle fejl er i pc-programmet eller afstandsmåleren. 137

148 Kommando Antal databytes Dataformat d 0 f 5 1. byte: s for at tælle på sonarens clock, p for processorens clock byte: Antal clockcykler pr. periode. Angives som hexadecimalt uppercase ASCII med mest betydende digit først. F 5 Samme format som f. o 0 Ingen parametre. O > byte: Antal samples for hver kanal i hexadecimal ASCII med mest betydende digit først. 5.? byte: Samples for 1. kanal. En byte pr. sample.?. sidste byte: Samples for 2. kanal. En byte pr. sample. r byte: ny radius, som hex-værdi i ASCII, med mest betydende digit først. R Tegn, der sendes, når sonaren er initaliseret og klar. s 0 S 9 1. byte: g for grøn zone, y for gul og r for rød byte: x-koordinat som hex-værdi i ASCII med mest betydende digit først byte: y-koordinat som hex-værdi i ASCII med mest betydende digit først. u >1 Byte 1: antal tegn i den modtagne, ugyldige kommando inkl. header for den modtagne kommando. Angives i hexadecimal ASCII, hvilket gør, at der højst kan returneres 15 tegn af gangen. Byte 2-: modtagne data. z 9 Samme format som S, svaret på statusforespørgslen. Tabel D.2: Parametre til kommandoer. Der skelnes mellem forespørgslerne med små bogstaver og svarene herpå med store. Når testfasen er overstået, kan datamængden, der skal overføres, reduceres ved at sende talværdier binært i stedet for som ASCII-tegn. 138

149 E Interruptrutine til sampling Her vises assemblerkoden til en interrupt-handler, der læser data fra to AD-konvertere. Koden skal vise, hvor lang tid processoren vil være om at læse hver sample. Rutinen varer 136 clockcycler eksklusiv den tid, det tager at initialisere interruptet. Kodeeksemplet er anvendt i mikrocomputersoftwaren, som er beskrevet i afsnit 7.7 på side 83. /* Interruptrutine til at gemme samples fra AD-konverterne i en buffer. Tallet, der står som det første i kommentaren, angiver antallet af clockcycler, det tager at udføre instruktionen. */.global intsample intsample: MOVE.L A0,-(A7) 12. Gem A0 på stakken. MOVE.L sonarskriv, A0 20. Hent pointeren til næste ledige plads i bufferen over i A0. MOVE.W ADCsamples, (A0)+ 20. Flyt data fra AD-konverterne til bufferen, og inkrementer A0. MOVE.L A0, sonarskriv 20. Gem den ny pointer i hukommelsen. CMP.L sbslut, A0 22. Er slutningen af bufferen nået? BGE Stopsample 10/12. Hop hvis ja. afslutint: MOVE.L (A7)+,A0 12. Gendan A0 RTE 20. Stopsample: MOVE.B #0, ADCconfig Stopper skanning. BRA afslutint 139

150 ª ª ª ª ª F Formler for stedbestemmelse ë $ì -koordinaterne for et objekt skal bestemmes ud fra den tid, det tager lyden at rejse fra aktuatoren i í º til objektet i í ª º og tilbage til de to sensorer i í 8 : 8 8 º og í = : = = º. På figur F.1 er punkterne vist i et koordinatsystem. Ud fra tiderne og lydens hastighed kendes længderne og Jî8 X 0Eïí í ª J = X 0Eïí í ª XGX ª í Eðí 8 X XGX ª í Eðí = X (F.1) (F.2) Figur F.1: Koordinatsystem med aktuatoren í indlagt. Dette kan også skrives som, sensorerne í 8 og í = samt objektet í Jî8 ñ E ª = ò º E ª º = Gñ E 8 = ó ª º E 8 º = (F.3) og J = ñ E ª = ò º E ª º = ñ E = = ó ª º E = º = (F.4) 140

151 õ õ APPENDIKS F. FORMLER FOR STEDBESTEMMELSE Koordinatsystemet indlægges sådan, at aktuatoren er placeret i /, og sensorerne er placeret i henholdsvis :ô $ og E / : º / (F.5) : 8 8 º E / (F.6) : = = º / (F.7) Ligning (F.3) og (F.4) simplificeres da til: Jî8 ñ ª = ª º = ñ ª ±v = ª = º (F.8) og J = ñ ª= ª1= º ñ ª E v = ª1= º (F.9) Disse to ligninger løses lettest vha. programmet Maple. Resultatet heraf ses på figur F.2. Kort forklaret opstilles først de to ligninger. Dernæst løses de for objektets ë - og ì -koordinater. Ligningen for ì -koordinatet er kompliceret, så den løses efterfølgende ud fra en af de oprindelige ligninger. Her skal ë -koordinatet D blot beregnes på forhånd. Eneste problem herved kan være, at nøjagtigheden mindskes, da der skal bruges kvantificerede tal i udregningerne. Formlerne omskrives en smule, så antallet af multiplikationer og divisioner reduceres. Først * : D J =ôj = 8 = Jî8}EIJ = = Jî8xEQJ = Jî8 J =( = (F.10) Jî8xEIJ =( Jî8"J =( = Jî8xEIJ =( J 8 J =( v (F.11) Jî8xEIJ =( M = Jî8"J =¹ Jî8 J =( v (F.12) Dernæst º. Der anvendes kun den positive løsning: 141

152 õ õ õ ñ ª ª = = Figur F.2: Løsning af ligninger vha. Maple. º cö E±; ª = J = =Â ; ª v J = = EQ = J =Â = { J {=Â ; ª = J = = EI; ª 9 (F.13) ñ ; E ª1= J = = J = = ª= J = = E ª 9 ¹ = EQJ = = ¹ (F.14) ñ ;P ô = EIJ = = ¹± ª= E ª J = ¹ = EQJ = = ¹ (F.15) = EøJ = = ¹» ª Ä E v / H2 J = = EQJ = = ¹¼ (F.16) 142

153 G Blokintegrationstestjournaler Dette appendiks indeholder testjournaler fra blokintegrationstestene. G.1 Testjournal - mikrocomputer/sonarinterface G.1.1 Apparatur Apparaturet i tabel G.1 bruges til udførelsen af testen. Endvidere bruges en pc med RS232-tilslutning og terminalprogram. Instrument Fabrikant AAU-nummer Strøm og spændingsforsyning Hameg Tripple Power Supply HM7042 AUC-INST Logikanalysetor Agilent 54621D AUC-INST Multimeter Fluke 37 AUC-INST Tabel G.1: Liste over de instrumenter, der benyttes under bloktesten af sonarinterfacet. G.1.2 Testopstilling I forbindelse med blokintegrationstesten mellem mikrocomputer og sonarinterface er der tre funktioner, der skal testes: triggersignalet til sonarblokken, interrupt og sampling. Disse kræver alle, at TS2MON er installeret på mikrocomputeren og at denne er koblet til en computer med et terminalprogram. Endvidere kræver det følgende specifikke opsætning: Triggersignalet og interrupt: Logikanalysatoren sættes til at måle på skanak signalet (D0), CS på latchen (D1), CS på ADC erne (D2), et interruptben på en af ADC erne (D3 eller D4), begyndsample-signalet til ADC erne (D5). Derefter køres testprogrammet testkode/intfacet.x68, som starter samplingen ved at skrive til kontrolregistret, læser fra ADC en, når der kommer et interrupt, og stopper samplingen, efter der er samplet 500 gange. 143

154 G.1. TESTJOURNAL - MIKROCOMPUTER/SONARINTERFACE ADC: En spændingsforsyning med RÄd - fg tilsluttes til inputbenene på ADC erne. G.1.3 Fremgangsmåde Testen udføres efter følgende fremgangsmåde: Triggersignal og interrupt: Testprogrammet startes, og det ses på oscilloskopet om læsesignalerne følger det, som er beskrevet i kapitel 5 på side 35. Ved hjælp af logikanalysatoren undersøges det, om samplingen bliver startet og stoppet, og ved hvilken frekvens dette foregår. ADC: Samplingen startes ved at skrive 7 i kontrolregistret med TS2-monitoren, derefter læses værdierne af ADC ligeledes ved brug af TS2-monitoren. G.1.4 Resultater Trigger og interrupt Resultatet af testen kan ses på figur G.1. Figur G.1: Her ses, hvorledes trigger og interruptsignalerne ser ud. ADC R d - f1g blev målt til V, og derfor blev RÄd - fg sat til, V. På ADC erne blev aflæst 0x80 på begge kanaler. G.1.5 Testkonklusion Da testresultaterne var som forventet, er denne test bestået. 144

2. De 7 signaler skal kodes til en 3-bit kode. Enkodningen skal prioriteres som beskrevet i afsnit?? på side??.

2. De 7 signaler skal kodes til en 3-bit kode. Enkodningen skal prioriteres som beskrevet i afsnit?? på side??. 01 FORUDSÆTNINGER 01 Forudsætninger Dette kapitel tager udgangspunkt i processerne beskrevet i afsnit?? på side?? Hver enkelt proces tildeles et afsnit, hvorunder det beskrives hvilke hardware moduler,

Læs mere

Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob Nielsen, Jesper Kock, Klaus Eriksen, Mikkel Larsen og

Læs mere

0.1 Modultest af hardware

0.1 Modultest af hardware 0.1 Modultest af hardware Hardwaren af M2 testes ved, at de enkelte blokke først testes hver for sig, og derefter testes det, om hele modulet virker. TS2-monitoren brændes i ROM, og ved at forbinde M2

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet

Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet Institut for elektroniske systemer TITEL: Digital Diktafon PROJEKTPERIODE: 4. semester 4. februar - 30. maj, 2002 PROJEKTGRUPPE: Gr419-2002

Læs mere

4. Semesterprojekt System Arkitektur. MyP3000 I4PRJ4 E2004

4. Semesterprojekt System Arkitektur. MyP3000 I4PRJ4 E2004 Ingeniørhøjskolen i Århus 20. december 2004 IKT Dalgas Avenue 2 8000 Århus C 4. Semesterprojekt System Arkitektur MyP3000 I4PRJ4 E2004 Gruppe 4: Benjamin Sørensen, 02284 Tomas Stæhr Berg, 03539 Nikki Ashton,

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

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

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system SSI-9001 IP65 GSM fjern kontrol og alarm system Installations vejledning SSIHuset v/svane Electronic ApS Vejledning Kontakt Tænd/sluk 1 - Strømforsyning: Forbundet til egen 12V / 1.5A strømforsyning (*)

Læs mere

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG Xilinx XC9536 29-9-3 Generel beskrivelse af JTAG: JTAG:

Læs mere

Resonans 'modes' på en streng

Resonans 'modes' på en streng Resonans 'modes' på en streng Indhold Elektrodynamik Lab 2 Rapport Fysik 6, EL Bo Frederiksen (bo@fys.ku.dk) Stanislav V. Landa (stas@fys.ku.dk) John Niclasen (niclasen@fys.ku.dk) 1. Formål 2. Teori 3.

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Indholdsfortegnelse:

Indholdsfortegnelse: Dataopsamling Klaus Jørgensen Gruppe. Klaus Jørgensen, Jacob Clausen Og Ole Rud Erhvervs Akademi Fyn Allegade 79 Odense C 5000 fra d 2/12-02 til d 20/12-02 Vejleder: SKH. Forord: Denne rapport omhandler

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

Læs mere

Svendeprøve Projekt Tyveri alarm

Svendeprøve Projekt Tyveri alarm Svendeprøve Projekt Tyveri alarm Påbegyndt.: 8/2-1999 Afleveret.: 4/3-1999 Projektet er lavet af.: Kasper Kirkeby Brian Andersen Thomas Bojer Nielsen Søren Vang Jørgensen Indholds fortegnelse 1. INDLEDNING...3

Læs mere

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

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang Dobbelt sender detektor med 4 kanals frekvenser Tak, fordi du har købt denne stråle detektor, læs venligst denne brugsanvisning omhyggeligt før installation. Forsøg aldrig at adskille eller reparere produktet.

Læs mere

Sampling. Reguleringsteknik for Grundfos Lektion 6. Jan Bendtsen

Sampling. Reguleringsteknik for Grundfos Lektion 6. Jan Bendtsen Sampling Reguleringsteknik for Grundfos Lektion 6 Jan Bendtsen Indhold Basal sampling A/D-konvertering Nyquist-frekvens Kvantisering Aliasing Feedbacksystemer Eksempel: servokontrol af motor Strøm til

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen

Læs mere

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren.

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren. Indhold. Indledning...3.2 Strømforsyning...4.3 Modul-interface...5.3 Modul-interface...6 2. Kommandooversigt...7 2.2 Register og flag-oversigt...8 2.3 Udlæsning til display...9 2.4 Registerbeskrivelser...

Læs mere

Kravspecifikation For. Gruppen

Kravspecifikation For. Gruppen Kravspecifikation For Gruppen Indholdsfortegnelse 1. INDLEDNING...3 1.1 FORMÅL...3 1.2 REFERENCER...3 1.3 LÆSEVEJLEDNING...3 2. GENEREL BESKRIVELSE...4 2.1 SYSTEM BESKRIVELSE...4 2.2 SYSTEMETS FUNKTION...4

Læs mere

Bias Reducing Operating System - BROS -

Bias Reducing Operating System - BROS - Bias Reducing Operating System - BROS - Accepttestspecifikation Projektgruppe 3: Rasmus Lund Jensen (11111) Nicolai Glud(11102) Jacob Roesen(10095) Mick Holmark(11065) Johnny Kristensen(10734) 1 Versionshistorik

Læs mere

Det Teknisk-Naturvidenskabelige Fakultet

Det Teknisk-Naturvidenskabelige Fakultet Det Teknisk-Naturvidenskabelige Fakultet Elektronik og elektroteknik TITEL: Intelligent afstandsmåler PROJEKTPERIODE: P4, 3. februar - 28. maj, 2003 PROJEKT GRUPPE: 03gr416 GRUPPEMEDLEMMER: Casper Bonde

Læs mere

Analoge indgange og A/D konvertering. Analoge udgange

Analoge indgange og A/D konvertering. Analoge udgange Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations

Læs mere

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

MAGNETISK LÆNGDE MÅLESYSTEM

MAGNETISK LÆNGDE MÅLESYSTEM SERIE MIX MAGNETISK LÆNGDE MÅLESYSTEM Ideel for aggressive miljøer Berøringsløs måling Opløsning fra 1,0 til 0,00 mm Mulighed for reference puls Firkant digital "Sensor" output signal i TTL eller HTL Vel

Læs mere

SD2DUG24. Dupline bus masterkanalgenerator. Fordele. Beskrivelse

SD2DUG24. Dupline bus masterkanalgenerator. Fordele. Beskrivelse Dupline bus masterkanalgenerator Fordele Integreret system. Dupline er varemærket for Carlo Gavazzi's 2- og 3-leder bus-system. Omkostningsbesparende. Bussystemet er en velafprøvet metode til at reducere

Læs mere

Projekt - RoboNet Del Journal.

Projekt - RoboNet Del Journal. Projekt - RoboNet Del Journal. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, 2a Erhvervsakademiet Fyn Udarbejdet i perioden: 20/01-03 03/02-03

Læs mere

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0 Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS

Læs mere

Guide til din computer

Guide til din computer Guide til din computer Computerens anatomi forklaret på et nemt niveau Produkt fremstillet af Nicolas Corydon Petersen, & fra Roskilde Tekniske Gymnasium, kommunikation & IT, år 2014 klasse 1.2 12-03-2014.

Læs mere

GSM SMS Modem MODEL: SA RTU-1 V1.01

GSM SMS Modem MODEL: SA RTU-1 V1.01 GSM SMS Modem MODEL: SA RTU1 V1.01 Brugervejledning Indgange: Der er fire indgange på modulet. De kan programmeres som normale indgange. De kan programmeres som tæller. Udgange: Der er en udgang på modulet

Læs mere

MCE9637 DeviceNet Modul

MCE9637 DeviceNet Modul Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE9637 DeviceNet Modul MCE9637 til overførsel af status og vægt for digitale vejeceller Gælder for: PIC nr.:

Læs mere

FireBUS PARKERINGSVENTILATION

FireBUS PARKERINGSVENTILATION FireBUS PARKERINGSVENTILATION QUICK GUIDE Quick guiden beskriver hvordan et mindre anlæg kan installeres og idriftsættes. Alle moduler tildeles en individuel adresse på DIP-switchen i modulet Modulerne

Læs mere

2x50 ETHERNET MODUL. RS485 slave med Ethernet-IP. Gælder for: Program nr.: AUXSLAVE v1 Dokument nr.: 0422md2x50-2v1 Dato:

2x50 ETHERNET MODUL. RS485 slave med Ethernet-IP. Gælder for: Program nr.: AUXSLAVE v1 Dokument nr.: 0422md2x50-2v1 Dato: Kokkedal Industripark 4 DK-2980 Kokkedal Denmark info@eilersen.com Tel +45 49 180 100 Fax +45 49 180 200 2x50 ETHERNET MODUL RS485 slave med Ethernet-IP Gælder for: Program nr.: AUXSLAVE.140422.2v1 Dokument

Læs mere

Netværksalgoritmer 1

Netværksalgoritmer 1 Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker

Læs mere

MiniPlex-41USB NMEA-0183 multiplexer Betjeningsvejledning

MiniPlex-41USB NMEA-0183 multiplexer Betjeningsvejledning MiniPlex-41USB NMEA-0183 multiplexer Betjeningsvejledning MiniPlex-41USB, V1.1 Firmware V1.20 SeaTech, 2002 Indledning: MiniPlex-41USB er en 4-kanals data multiplexer, som giver mulighed for tilslutning

Læs mere

MCE2040 SERIEL KOMMUNIKATIONSMODUL

MCE2040 SERIEL KOMMUNIKATIONSMODUL Kokkedal Industripark 4 DK-2980 Kokkedal DANMARK Tlf.: +45 49 18 01 00 Fax: +45 49 18 02 00 MCE2040 SERIEL KOMMUNIKATIONSMODUL Overførsel af status og vægt for digitale vejeceller via simpel PC/PLC protokol

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se

Læs mere

Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal.

Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal. Professional Series bevægelsesdetektorer Ved, hvornår alarmen skal lyde. Ved, hvornår den ikke skal. Nu med Antimask teknologi, flere zoner og spraydetektering Uovertrufne Bosch teknologier forbedrer detekteringsevnen

Læs mere

NC_71 Quick Guide v1.0. CJ1W-NC_71 Mechatrolink-II Position Control Unit. Quick Guide

NC_71 Quick Guide v1.0. CJ1W-NC_71 Mechatrolink-II Position Control Unit. Quick Guide Quick Guide v1.0 CJ1W- Mechatrolink-II Position Control Unit Quick Guide Denne quick guide er ment som supplement til de respektive manualer for CJ1W- modulet og de monterede servodrev. Guiden beskriver

Læs mere

dmasark Aflevering - Uge 50

dmasark Aflevering - Uge 50 dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Side 1 af 8 Indholdsfortegnelse 1 PAKKENS INDHOLD... 3 2 INSTALLATION... 4 2.1 PLACERING... 4 2.2 FORBRUG... 4 2.3 12V TILSLUTNING... 4

Læs mere

Projektopgave Observationer af stjerneskælv

Projektopgave Observationer af stjerneskælv Projektopgave Observationer af stjerneskælv Af: Mathias Brønd Christensen (20073504), Kristian Jerslev (20072494), Kristian Mads Egeris Nielsen (20072868) Indhold Formål...3 Teori...3 Hvorfor opstår der

Læs mere

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

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning Generelt: ELCANIC A/S COUNTER Type CNT150 er en microprocessor baseret tæller. Specielt designet

Læs mere

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

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning ELCANIC A/S ENERGY METER Type ENG110 Version 3.00 Inkl. PC program: ENG110 Version 3.00 Betjeningsvejledning 1/11 Generelt: ELCANIC A/S ENERGY METER Type ENG110 er et microprocessor styret instrument til

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-2012 IT-vejleder: Karl G. Bjarnason

Læs mere

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless ID er for trådløse sensorer: Fjernbetjening: Bevægelsessensor: Vandsensor Landstrømsensor: Dørsensor: Temperatursensor: Side 1 af 8 Indholdsfortegnelse

Læs mere

Opsætning af xcon og Logix Controller

Opsætning af xcon og Logix Controller Indholdsfortegnelse Indledning... 2 Opsætning af MSEP... 3 Opsætning af MSEP Gateway... 3 Opsætning af akser... 5 Opsætning af PLC... 9 User-Defined Data Types... Fejl! Bogmærke er ikke defineret. Test

Læs mere

WEA-Base Brugervejledning til vejetransmitter

WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 Indholdsfortegnelse 1. Tekniske data...

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

EMSD 7 Gr. 15 Aalborg Universitet

EMSD 7 Gr. 15 Aalborg Universitet Elektro Mekanisk System Design EMSD 7 Gr. 15 Aalborg Universitet Institut for EnergiTeknik Pontoppidanstræde 101, 9220 Aalborg Øst Det Teknisk-Naturvidenskabelige Fakultet Aalborg Universitet M-sektoren

Læs mere

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen TG 8 EUC-Syd Sønderborg 6. Skoleperiode Elektronikmekaniker Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: 30 04-2002 Modtaget af: Søren Knudsen

Læs mere

Seriel kommunikation RS232 / RS485

Seriel kommunikation RS232 / RS485 (fortsat fra Positionering/standardfunktion med RS232/RS485) Speed Commanderen har indbygget en seriel kommunikationsenhed, som understøtter RS232 og RS485 kommunikation. Speed Commanderen skal monteres

Læs mere

MVT380 Vejledning. Forord. Website: www.smartgps.dk Kontakt: salg@smartgps.dk. Tillykke med din nye GPS tracker MVT380.

MVT380 Vejledning. Forord. Website: www.smartgps.dk Kontakt: salg@smartgps.dk. Tillykke med din nye GPS tracker MVT380. MVT380 Vejledning Forord Tillykke med din nye GPS tracker MVT380. Denne manual viser hvordan du installerer enheden korrekt. Sørg for at læse denne manual grundigt, før du bruger dette produkt. Brugermanualen

Læs mere

Kom godt i gang med Mini Bots fra

Kom godt i gang med Mini Bots fra Kom godt i gang med Mini Bots fra Indholdsfortegnelse Generel Information... 3 Elektricitet... 3 Robotter, kunstige mennesker?...3 Forklaring af komponenter... 4 Robot-byggesættet inderholder følgende:...4

Læs mere

GSM port styring 400 brugere

GSM port styring 400 brugere 1 GSM port styring 400 brugere SMS alarm, temperatur og fjernkontrol system 16 brugere til at modtage alarmbeskeder via SMS Software vejledning SSIHuset Svane Electronic ApS Arildsvej 27, Gråmose, DK-7442

Læs mere

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1

Fra Computer til Virkelighed. TPE-kursus Elektroniske Systemer P1 Fra Computer til Virkelighed TPE-kursus Elektroniske Systemer P1 Fra Computer til Virkelighed En kort introduktion til kurset Systems Engineering Projektfaser Opsamling og opgave Om kurset Mål: at I lærer

Læs mere

Worldtrack Tracking Platform BRUGERVEJLEDNING Version 2.01

Worldtrack Tracking Platform BRUGERVEJLEDNING Version 2.01 2018 Worldtrack Tracking Platform BRUGERVEJLEDNING Version 2.01 WORLDTRACK Ejby industrivej 2, 2600 Glostrup Indhold Introduktion... 2 Login... 2 Menu... 2 Overvågning... 3 Bevægelses status... 4 GPS data

Læs mere

En sensor der kan detektere to parkeringspladser samtidig

En sensor der kan detektere to parkeringspladser samtidig En sensor der kan detektere to parkeringspladser samtidig Sensoren er designet til detektering af biler, enten foran hver parkeringsplads eller for to modsatte parkeringspladser samtidig og anbefales til

Læs mere

TITEL: SPOR TEMA: INTEGRERET PRODUKTDESIGN PROJEKTPERIODE: 3.3.2011-18.5.2011 PROJEKTGRUPPE: BSC6-ID1 HOVEDVEJLEDER: PERNILLE HAVE

TITEL: SPOR TEMA: INTEGRERET PRODUKTDESIGN PROJEKTPERIODE: 3.3.2011-18.5.2011 PROJEKTGRUPPE: BSC6-ID1 HOVEDVEJLEDER: PERNILLE HAVE oprodukt TITEL: SPOR TEMA: INTEGRERET PRODUKTDESIGN PROJEKTPERIODE: 3.3.2011-18.5.2011 PROJEKTGRUPPE: BSC6-ID1 HVORDAN KAN EN NY DESIGNLØSNING EFFEKTIVISERE ARBEJDSGANGEN UNDER TESTUDFØRSEL, SIKRE AR-

Læs mere

Indhold. 1.1 Introduktion 3 1.2 Status-Indikatorer 4 1.3 Stikforbindelser 5

Indhold. 1.1 Introduktion 3 1.2 Status-Indikatorer 4 1.3 Stikforbindelser 5 Indhold. Introduktion 3.2 Status-Indikatorer 4.3 Stikforbindelser 5 Hardware 2. Strømforsyning 6 2.2 Modulinterface 7 2.3 Indgangskredsløb 9 2.4 Udgangskredsløb 2.6 Tæller Indgange Software 3. Kommandooversigt

Læs mere

Automatisk Vandingssystem

Automatisk Vandingssystem Automatisk Vandingssystem Projektdokumentation Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen - 201205713 - IKT Kasper Sejer Kristensen

Læs mere

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C Indhold Indledning(Enes)... 2 Problemstilling (Enes)... 2 Teori (Enes)... 2 Løsningsforslag (Enes)... 4 RFID relæet (Mathias)... 6 Krav (Enes og Mathias)... 8 Målgruppen (Mathias)... 8 Rekvirent... 8 Implementering(Mathias)...

Læs mere

ErgoSafe 2005. Beskrivelse af stik og indikatorer

ErgoSafe 2005. Beskrivelse af stik og indikatorer ErgoSafe 005 Beskrivelse af stik og indikatorer Printtavlen er forsynet med en række stik og indikatorer. Denne vejledning indeholder en beskrivelse af hvert enkelt element. Den kvadratisk formede pude

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

En sumformel eller to - om interferens

En sumformel eller to - om interferens En sumformel eller to - om interferens - fra borgeleo.dk Vi ønsker - af en eller anden grund - at beregne summen og A x = cos(0) + cos(φ) + cos(φ) + + cos ((n 1)φ) A y = sin (0) + sin(φ) + sin(φ) + + sin

Læs mere

Indholdsfortegnelse for kapitel 2

Indholdsfortegnelse for kapitel 2 Indholdsfortegnelse for kapitel 2 Kapitel 2. Analyse.......................................................... 2 Analyse af 2.1...................................................... 2 Analysen af Database.................................................

Læs mere

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

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning

Læs mere

Kom godt i gang med Fable-robotten

Kom godt i gang med Fable-robotten Kom godt i gang med Fable-robotten 1. Først skal du installere programmet på din computer. Gå ind på shaperobotics.com og under support vælger du download: Her vælger du, under PC App om du kører Windows

Læs mere

Efficient Position Updating

Efficient Position Updating Efficient Position Updating Pervasive Positioning, Q3 2010 Lasse H. Rasmussen, 20097778 Christian Jensen, 20097781 12-03-2010 1 Introduktion Denne rapport har til formål at beskrive implementeringen og

Læs mere

D-Star. En moderne kommunikations form

D-Star. En moderne kommunikations form D-Star En moderne kommunikations form Indhold Problemformulering... 2 Starten på D-Star... 3 Om D-Star nettet... 4 Udstyr til D-Star... 8 Kilde angivelse... 10 Konklusion... 11 1 Problemformulering Jeg

Læs mere

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder

Læs mere

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless Side 1 af 8 Indholdsfortegnelse 1 PAKKENS INDHOLD... 3 2 INSTALLATION... 4 2.1 PLACERING... 4 2.2 FORBRUG... 4 2.3 12V TILSLUTNING... 4

Læs mere

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor. Simple kontakter Accelorometer Example sensors Lysfølsomme modstande RFID reader & tags Temperaturfølsomme modstande Flex Sensor Ultralyds afstandsmåler Piezo Pressure/vibration Piezo Sound/buzzer Peltier

Læs mere

Det Teknisk-Naturvidenskabelige Fakultet

Det Teknisk-Naturvidenskabelige Fakultet Det Teknisk-Naturvidenskabelige Fakultet TITEL: Intelligent afstandsmåler PROJEKTPERIODE: E4, 3. februar - 28. maj, 2003 PROJEKT GRUPPE: GRUPPEMEDLEMMER: Casper Stork Bonde Kim Boe Jensen Kim Nørmark Mikkel

Læs mere

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

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde SPIDER Quick guide DATO: August 2017 FORHANDLER: WASYS A/S Langebjergvænget 18 4000 Roskilde +45 7221 7979 Indhold Om SPIDER... 3 Funktioner ved SPIDER... 3 Spændingsforsyning... 3 Installation og fysiske

Læs mere

Fysik 2 - Den Harmoniske Oscillator

Fysik 2 - Den Harmoniske Oscillator Fysik 2 - Den Harmoniske Oscillator Esben Bork Hansen, Amanda Larssen, Martin Qvistgaard Christensen, Maria Cavallius 5. januar 2009 Indhold 1 Formål 1 2 Forsøget 2 3 Resultater 3 4 Teori 4 4.1 simpel

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin maj-juni 20115 Institution KTS Vibenhus HTX Uddannelse Fag og niveau Lærer(e) Hold HTX Teknik fag Design og

Læs mere

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

Undersøgelse teknologi og resurser: Eleverne skal lære om enkel produktudvikling fra ide til implementering. Forløbets titel Design og byg en solcelle racerbil Intro: Solcellelamper findes i mange forskellige versioner til haven. Solcellen omdanner solens energi til elektrisk strøm, så man kan bruge den til fx

Læs mere

2/3 Akset digital tæller

2/3 Akset digital tæller SERIE Z59E 2/3 Akset digital tæller for Elgo Magnetisk målebånd og / eller Encoder ELGO - ELECTRIC Gerätebau und Steuerungstechnik GMBH D - 78239 Rielasingen, Postfach 11 30, Carl - Benz - Strafle 1 Telefon

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

3. Computerens opbygning.

3. Computerens opbygning. 3. Computerens opbygning. Computere er konstrueret med henblik på at skulle kunne behandle og opbevare data og det er de som nævnt i noterne om Bits og Bytes vældig gode til. Som overordnet model for computere

Læs mere

Automatisk Vandingssystem. Rettelser. 1 af 11

Automatisk Vandingssystem. Rettelser. 1 af 11 Automatisk Vandingssystem Rettelser 1 af 11 Automatisk Vandingssystem Projektrapporten Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen

Læs mere

IAI Quick Start Guide

IAI Quick Start Guide IAI Quick Start Guide Opsætning: Manualen til controllerene ligger i: Produkter\IAI\Manual\RoboCylinder\Controller\ Her ligger den i en undermappe alt efter hvilken type controller det er. Installer RCPC

Læs mere

Projekt. Analog Effektforstærker.

Projekt. Analog Effektforstærker. Projekt. Analog Effektforstærker. Udarbejdet af: Klaus Jørgensen. Gruppe: Klaus Jørgensen Og Morten From Jacobsen. It og Elektronikteknolog. Erhvervsakademiet Fyn Udarbejdet i perioden: 7/0-03 /-03 Vejledere:

Læs mere

READX-EM&MF WIEGAND slave kodetastatur & proxlæser

READX-EM&MF WIEGAND slave kodetastatur & proxlæser READX-EM&MF WIEGAND slave kodetastatur & proxlæser Installations manual Ver. 2018-09-24 INDHOLD Introduktion 3 Kassens indhold 4 Installation 5 Tilslutninger 6 Wiegand dataformat 7 Vare nummer 8 Kodeliste

Læs mere

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE

COMPUTER ANATOMI. 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE COMPUTER ANATOMI 4.-5. klasse 23. FEBRUAR 2015 HTX - ROSKILDE 1 Indholdsfortegnelse Kapitel 1: Opbygning s.2 Kapitel 2: CPU s.3 Kapitel 3: Motherboard s.4 Kapitel 4: Ram s.6 Kapitel 5: Grafikkort s.7 Kapitel

Læs mere

Hvad skal du vide for at bygge din egen computer?

Hvad skal du vide for at bygge din egen computer? Hvad skal du vide for at bygge din egen computer? Kender du alle de her dele og hvad de gør godt for? Er du mellem 11 og 16 år, og tænker på at sammensætte din egen computer? Så er denne her guide lige

Læs mere

DCC digital dekoder til magnetiske produkter

DCC digital dekoder til magnetiske produkter Viessmann 5212 Digital Dekoder Dansk Brugervejledning DCC digital dekoder til magnetiske produkter med fire udgangsgrupper Indhold 1. Vigtige oplysninger... 2 2. Indledning / Egenskaber... 3 3. Montering...

Læs mere

Lagtykkelsesmåler Elcometer 345 MARK II

Lagtykkelsesmåler Elcometer 345 MARK II STRENOMETER INFORMATION Lagtykkelsesmåler Elcometer 345 MARK II Elcometer 345 MARK II er en let, bærbar digital lagtykkelsesmåler med vidvinklet (105º) display for nem aflæsning af de gentagelige målinger.

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er

Læs mere

Kom i gang med Course Tool 1.2

Kom i gang med Course Tool 1.2 Kom i gang med Course Tool 1.2 Indhold Indledning...2 Pris beregning...2 Anvendelse...2 Open Source...2 Anbefalinger...2 Installation...3 USB-Pen...3 Download Libre Office (Draw)...3 Indstil makrosikkerhed...4

Læs mere

wwwdk Digital lydredigering på computeren grundlæggende begreber

wwwdk Digital lydredigering på computeren grundlæggende begreber wwwdk Digital lydredigering på computeren grundlæggende begreber Indhold Digital lydredigering på computeren grundlæggende begreber... 1 Indhold... 2 Lyd er trykforandringer i luftens molekyler... 3 Frekvens,

Læs mere

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

Skråplan. Esben Bork Hansen Amanda Larssen Martin Sven Qvistgaard Christensen. 2. december 2008 Skråplan Esben Bork Hansen Amanda Larssen Martin Sven Qvistgaard Christensen 2. december 2008 1 Indhold 1 Formål 3 2 Forsøg 3 2.1 materialer............................... 3 2.2 Opstilling...............................

Læs mere

KOMPONENT BESKRIVELSE

KOMPONENT BESKRIVELSE Beskrivelse : S12-20-8A tegningsnummer 630014 Program som styrer 5 individuelle trykforløb på samme tid. Kan køre med intern tryk-reservoir. Kommunikerer med PC-program 714014 Dato Sign. Beskrivelse af

Læs mere

Design og udvikling af et blodtryks ma lesystem

Design og udvikling af et blodtryks ma lesystem Design og udvikling af et blodtryks ma lesystem 3. semesterprojekt side 1 af 5 Design og udvikling af et blodtryks målesystem Problemformulering I daglig klinisk praksis er der ofte behov for kontinuert

Læs mere

ORIENTERING FRA MILJØSTYRELSENS REFERENCELABORATORIUM FOR STØJMÅLINGER

ORIENTERING FRA MILJØSTYRELSENS REFERENCELABORATORIUM FOR STØJMÅLINGER ORIENTERING FRA MILJØSTYRELSENS MÅLEUDSTYR HOS DE GODKENDTE LABORATORIER Orientering nr. 3 Ole F. Carlsen/Torben Holm Pedersen 2-7-19 OVERSIGT OVER MÅLEUDSTYR LYDTRYKMÅLING FFT-ANALYSE BÅNDOPTAGELSE OKTAVANALYSE

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Vers. 1.3.1 Opdateret: 29-08-2018 Indholdsfortegnelse 1. Installer programmet 3 2. Pak robotten ud 5 3. I gang med at programmere 6 4. Programmér Fable til at køre fra 90 til -90

Læs mere