Mikrodatamatsystemer. P3 Lagerrobot. Gruppe: DE3-2-e09 Universitet: Esbjerg Institute of Technology semester

Størrelse: px
Starte visningen fra side:

Download "Mikrodatamatsystemer. P3 Lagerrobot. Gruppe: DE3-2-e09 Universitet: Esbjerg Institute of Technology 2009 3. semester"

Transkript

1 Mikrodatamatsystemer P3 Lagerrobot Gruppe: DE3-2-e09 Universitet: Esbjerg Institute of Technology semester

2

3 Titelblad Tema: Projekttitel: Gruppe: Hovedvejleder: Mikrodatamatsystemer Lagerrobot DE3-2-e09 Bo Rohde Pedersen Universitet: Esbjerg Institute of Technology Periode: Studieretning: Data- elektronik & elektroteknik Antal sider: 92 Antal oplag: 7 Initierende problem: Hvordan får man en robot autonomt til at navigere rundt på et lager uden at køre ind i andre objekter? Synopsis: Denne rapport omhandler en autonom lagerrobot, og muligheden for at få denne til at navigere rundt på et lager, vha. en microcontroller (MSP430). Gennem rapporten kommer vi ind på de løsningsmuligheder til det initierende problem. Ydermere skrives om robottens egenskaber, samt hvad den kan bruges til. Gruppemedlemmer: Adam Tulinius Muhamed Hajric Mikkel Madsen Petar Durdevic 3

4

5 INDHOLDSFORTEGNELSE Indholdsfortegnelse Forord Indledning Analyse Problemanalyse Kravspecification Initierende problem Projektets opbygning Microcontroller Microcontrollere generelt MSP430 arkitektur Microprocessoren MSP430 pins Porte valgt i vores projekt Seriel kommunikation Interrupts Basic Clock Module Timers Step 1: Simpel kørsel Kravspecifikation step DC- & step-motorer Hardware Software step Step 1 test Delkonklusion step Step 2: Kørsel uden om forhindringer Kravspecification step Valg af sensor Løsningsmodeller for tilslutning af sensor Sensor Hardware AD konverter Software step Step 2 test Delkonklusion step Step 3: Autonom kørsel Kravspecifikation step Software oversigt Navigation

6 Indholdsfortegnelse 5.4 Bredde-først søgning Implementations-specifikke deltajer Analyse af bredde-først søgning Step 3 test Delkonklusion step Konklusion 69 7 Litteratur 71 8 Appendix Kredsløbsdiagram Billeder af hardware Datablad over L Datablad over L Datablad over LM317T

7 Forord 0.1 Forord Denne P3 rapport er udarbejdet af gruppen DE3-2-e09 (bestående af 4 studerende), tredje semester ingeniør-studerende på Esbjerg Institute of Technology. Projektets overordnede tema er Mikrodatamatsystemer, og undertemaet som er valgt hedder Lagerrobot. Rapporten tager udgangspunkt i problemanalysen, de problemstillinger der findes i problemanalysen samt redegøring for løsningsmulighederne. Rapporten er skrevet med henblik på at ingeniørstuderende på den tekniske- & naturvidenskabelige data-elektronikretning, samt censor og vejledere, vil kunne læse og forstå rapporten. Rapporten består af 3 dele, hhv. step 1, 2 & 3, som hver især indeholder en kravspecifikation, en prototype test og en delkonklusion. Kildehenvisninger for hvert afsnit er angivet under overskrifterne i firkantede paranteser (fx. [9], [13], [16]). Kilder til en specifik figur er angivet i figurteksten. Til denne rapport er der udarbejdet en prototype, som vil blive demonstreret til fremlæggelsen tirsdag d Til fremstilling af prototypen, er der taget udgangspunkt i et eksisterende projekt, hvor konturen (skelettet af robotten) er medtaget som en færdigbygget løsning. De resterende materialer (ex. komponenter), samt et elektronik laboratorie var stillet til rådighed af U- niversitetet. Vi ønsker at takke vores hovedvejleder Bo Rohde Pedersen 1, for hjælp til opbygning af hardware og udarbejdning af rapport. Herudover vil vi gerne takke Henry R. Enevoldsen 2, Morten Bisgaard 3 og David Hicks 4 for støttende vejledning. 1 Associate Professor - Esbjerg Institute og Technology 2 Elektromekaniker - Laboratorie ansvarlig på Esbjerg Institute of Technology 3 Adjunkt - Aalborg Universitet 4 Associate Professor - Esbjerg Institute of Technology 7

8 Indholdsfortegnelse På den medfølgende CD findes: Elektronisk udgave af rapporten Kildekode til hvert step Optagelser fra test forsøg Kredsløbsdiagrammer Derudover indeholder den følgende datablad: Vexta PH268-E2.3 (step-motorer) MSP430 både datablad og userguide (microcontroller) Sharp GP2D12 (IR sensor) L297 (step-motor controller) L298 (step-motor driver, bruges ikke i prototypen) HEF4049B (inverter, bruges i signalforstærkeren) IRF530 (transistorer, bruges i effektforstærkeren) LM393P (komperator, bruges til tilslutning af sensor i step 2) ULN2003A (darlington transistor array, bruges i signalforstærker) LM317T (Regulator, benyttes i spændingsdeler) 8

9 Indledning 0.2 Indledning Dette projekt omhandler en autonom lagerrobot, og muligheden for at få denne til at navigere rundt i et lager. Robottens hjerne er en MSP430 microcontroller. I dagligdagen møder vi microcontrollere i vaskemaskiner, trafiklysregulering, lommeregnere, colaautomater og mange andre steder. Da projektet blev påbegyndt, vidste vi ikke hvad en microcontroller var (andet end at det var en chip), og at det blev brugt i systemer som trafiklysregulering. Dette mundede ud i vores initierende problem. Hvordan får man en robot autonomt til at navigere rundt på et lager uden at køre ind i andre objekter? I rapporten tages der udgangspunkt i en lagerbygning hvor medarbejdere går rundt blandt robotter, hvor det ofte er en fordel at have en robot som kan flytte ting fra A til B. Specifikt kan det være for at spare tid. Her skal robotten være i stand til at arbejde sammen med mennesker, hvor også sikkerhed er en vigtigt ting. I rapporten vil vi derfor forsøge at komme med en løsning på hvordan en robot undgår at påkøre medarbejdere eller andre objekt som kommer i vejen. Målet er at bygge en prototype som kan køre autonomt, og som kan registrere objekter vha. en sensor. 9

10

11 kapitel 1 ANALYSE 1.1 Problemanalyse Når man skal flytte varer på et stort lager kan det være smart at få en robot til at gøre det. På denne måde kan hele processen med at flytte varer ind og ud automatiseres. For at dette er muligt er der dog en række ting der skal overvejes og implementeres, bl.a. Navigationsmetode Styring Lagerets indretning Sikkerhed Mulighederne for navigation inkluderer bl.a. kompas og diverse former for skinner eller streger på gulvet, og lagerets indretning kan derfor have en betydning for valget af navigationsmetode. En mulighed er at tage udgangspunkt i et lager med gange, som har hylder på begge sider. Robotten kunne så være udstyret som en gaffeltruck for at kunne løfte paller i flere forskellige højder. Hvis man har mulighed for at tilpasse hele lageret kan man overveje en løsning hvor robotten kører på skinner der er monteret i loftet. Når en robot bevæger sig rundt med tunge varer er det vigtigt at man tager højde for kollisioner med mennesker, eller anden form for karambolage, og at varer placeres forsvarligt så de ikke falder ned. Ydermere vil det også være nødvendigt at robotten kan vurdere om en last er for tung eller ude af balance, for at undgå at robotten vælter eller lasten falder af. 1.2 Kravspecification Robotten.. skal kunne flytte varer på et lager autonomt efter ordre givet i et kontrolsytem (Vores tilfælde, PC).. må ikke påkøre medarbejdere.. skal placere varer forsvarligt på lageret så de ikke kan falde ned.. skal være i stand til at vurdere om en last er for tung, og overvåge at den ikke er ved at vælte Samtidigt er der nogle eksterne krav vi er nødt til at overholde, bl.a. skal vi benytte os af en MSP430 microcontroller. 11

12 1. Analyse 1.3 Initierende problem Ud fra de opstillede kravspecifikationer, kom vi frem til følgende initierende problem: Hvordan får man en robot autonomt til at navigere rundt på et lager uden at køre ind i andre objekter? 1.4 Projektets opbygning For at lave en løsning til det initierende problem, har vi valgt at dele projektet op i følgende punkter: 1. Lave en robot der er i stand til at køre vha. en mikroprocessor. 2. Sørge for at robotten ikke kolliderer eller kommer i karambolage med andre ting, baseret på input fra en eller flere sensorer. 3. Gøre robotten i stand til at navigere rundt på et lager. 4. Udstyre robotten med løftemekanisme. 12

13 kapitel 2 MICROCONTROLLER [8], [7], [17] I dette afsnit forklares hvad en microcontroller er, hvordan den er opbygget og hvordan den fungerer. Langt de fleste ting der nævnes i afsnittet, er viden vi har haft brug for til udarbejdning af prototypen. Enkelte ting er dog medtaget for helhedens skyld, selvom det ikke er nødvendig viden i forbindelse med vores prototype. 2.1 Microcontrollere generelt MSP430 er en serie microcontrollere der produceres af Texas Instruments, og den udgave som bruges i projektet hedder MSP430F149. En microcontroller kan opfattes som en lille computer bygget ind i en enkelt chip. Chippen er bygget op om en CPU 1 samt en mængde ram og flash hukommelse. Microcontrollere kan desuden være udstyret med perifere enheder, som analog-digital converter, watchdog timer, seriel komunikation og digital input/output mm. Microcontrollere benyttes i embeddede systemer. Embedded systemer k- endetegnes ved at de typisk er designet til at udføre en eller få funktioner, og normalt foregår dette med meget begrænset input fra brugeren. Eksempler på embeddede systemer: Hårde hvidevarer DVD-afspillere og lignende elektronik GPS modtager Trafiklys Digitale ure MSP430 microcontrolleren har et meget lavt strømforbrug (200 µa pr MIPS 2 ), og kan slukke for processor og de fleste perifere enheder, for at gå ind i en lavenergi tilstand hvor processoren først vækkes når der er brug for den. Hvis lavenergi tilstande benyttes i de situationer hvor MSP430 eren ikke skal foretage beregninger, får man et meget lavt gennemsnitlig energiforbrug. Dette gør denne type microcontroller velegnet til batteridrevne enheder. 2.2 MSP430 arkitektur MSP430 eren bygger på Von Neumann-arkitekturen 3, der er en kombination af en CPU og dens perifere enheder samt en 16-bit bus bestående af MAB 1 CPU (Central Processing Unit) kaldes også microprocessor. 2 MIPS - Millioner Iterationer Per Sekund. 3 Opkaldt efter den Ungarnske matematiker, John Von Neumann 13

14 2. Microcontroller (memory adress bus) og MDB (memory data bus). Arkitekturen består af en 16-bit RISC CPU (afsnit 2.3), et fleksibelt clock system (afsnit 2.8) og en række periphere enheder. Da programmet i en Von Neumann maskine opbevares i samme hukommelse som dets data, kan man som følge af fejl i koden, komme til at lave ændringer i den del af hukommelsen hvor programmet ligger. Det ville eksempelvis være muligt at overskrive en del af programkoden i forbindelse med allokering af variabler eller funktioner. Von Neumann arkitekturen har kun én bus, som bruges til data overførelser og hente instruktioner, og derfor kan data overførelserne og hentningen af instruktioner ikke gøres på samme tid. Kigger man fx. på Harvard arkitekturen, så har den seperate busser da der bruges fysisk seperate lagre til instruktioner og data, der gør det muligt at overføre data på begge busser samtidig. På figur 2.1 ses MSP430 erens arkitektur. Figur 2.1: Von Neumann arkitektur [8] 2.3 Microprocessoren Processoren i MSP430 er en 16-bit Reduced Instruction Set Computer (RISC) processor med 27 instruktioner, der kan operere med en hastighed på op til 8 MHz. En RISC processor har et reduceret antal instruktioner, modsat en CISC (Complex Instruction Set Computer) processor som har et meget stort sæt instruktioner. Et andet kendetegn ved RISC CPU er er at de ikke kan behandle data direkte i hukommelsen, det skal flyttes til CPU registre først. En CISC processor kan udføre komplekse beregninger med blot en enkelt, om end i nogle tilfælde langsom, instruktion, hvor en RISC processor i stedet må benytte en række simple, men hurtige instruktioner. Forskellen på RISC og CISC kan bedst opsummeres med at CISC kræver mindre kode, men mere hardware, hvor det modsatte er gældende for RISC Instruktioner De 27 instruktioner som MSP430 understøtter, suppleres af 24 ekstra instruktioner så man i alt har mulighed for at benytte 51 instruktioner. De 24 ekstra 14

15 Microprocessoren instruktioner erstattes dog af fundamentale instruktioner når koden kompileres, og dermed er der intet tab i ydelse, ved at benytte en af de 24 ekstra instruktioner. Ved instruktion forståes en kommando i assembler. Softwaren til vores robot er skrevet i C, men alt vores kode bliver oversat til assembler af en kompiler, hvorefter det omskrives til maskinkode som er specifik for den processor, det skal eksekveres på. Maskinkoden skal slutteligt behandles af en linker, som omdanner maskinkoden til et program. MSP430 erens instruktioner hører til én af tre kategorier: Dual-operand, Single-operand og Jump. Dual-operand tager to argumenter, en kilde og en destination. For eksempel vil instruktionen CMP R3,R5 sammenligne værdierne i register R3 og R5 ved at trække dem fra hinanden (R5-R3). Single-operand tager kun ét argument. CALL er et eksempel på en singleoperand instruktion. CALL bruges til at kalde en funktion, som med en return instruktion går tilbage til det punkt hvor den blev kaldt. Jump tager en label som argument. En label indikerer en bestemt linje i koden, og instruktionen JMP Main springer til den label der hedder Main, og programmet fortsætter derfra. Andre typer jumps kræver at bestemte krav opfyldes, eksempelvis springer JNZ 4 Main kun til Main hvis resultatet af forrige instruktion er forskellig fra 0. Mere dybdegående forklaring af hvordan microprocessorer behandler instruktioner er i afsnit Registre Registrene er CPU ens hukommelse, og som tidligere nævnt skal alt data flyttes fra controllerens hukommelse til registre før de kan behandles. Bearbejdning af data i registre foregår meget hurtigt da de er interne for CPU en, hvor hentning af data fra controllerens hukommelse tager længere tid. Hvert register kan lagre en værdi på højest 16 bit da det er en 16 bit arkitektur, det vil sige et register kan rumme 2 16 forskellige værdier. På figur 2.2 ses et diagram over MSP430 erens registre og ALU. 4 Jump if not zero 15

16 2. Microcontroller Figur 2.2: MSP430 Registre og ALU [8] Register 0 bruges til at opbevare program counteren, der holder styr på hvilken linje kode der skal bearbejdes. En instruktion bruger to, fire eller seks byte, og program counteren forstørres afhængig af hvor meget plads instruktionen bruger. Register 1 bruges til stack pointeren, der peger på toppen af stacken. Stacken bruges eksempelvis til at gemme program counteren inden den ændres i forbindelse af CALL eller et interrupt, så man har mulighed for at hente denne fra stacken når den kaldte funktion returnerer. Register 2 er status register som indeholder nedenstående: Negative bit Hvis der bliver udført en instruktion der resulterer i et negativt resultat, bliver negative bit i status registret sat høj, hvor en instruktion der ikke resulterer i en negativ værdi rydder status registrets negative bit. Zero bit En JZ 5 instruktion aflæser zero bit fra status registret. Hvis den forrige instruktion gav resultat 0, er zero bit sat og JZ vil udføre sit jump. 5 Jump if zero 16

17 MSP430 pins Carry bit Hvis resultatet af en aritmetisk operation ikke kan rummes i et 16-bit register, vil carry bit blive sat høj og registeret rummer kun de 16 mindst signifikante bits. Carry bit resetter sig selv ved en operation uden carry. GIE Global Interrupt Enable bit skal sættes høj før der tillades interrupts. System clock generator 0 og 1 (SCG0/SCG1) SCG0 slukker for DCO generatoren hvis den ikke bruges til at drive MCLK eller SMCLK (se afsnit 2.8). SCG1 deaktiverer SMCLK. OSCOFF og CPUOFF Oscillator off (OSCOFF) deaktiverer LFXT1 krystal oscillator, så længe den ikke bruges til MCLK eller SMCLK. CPUOFF slukker for CPU en. Register 3 og en del af register 2 bruges som Constant Generator Registers. Dette bruges til at definere de 24 ekstra instruktioner til MSP en, og til at lave 6 ofte brugte konstanter (-1,0,1,2,4,8). De resterende registre, 4-15, er general purpose, som programmøren kan benytte sig af til at gemme værdier i, inden de skal behandles af en instruktion Arithmetic Logic Unit En Arithmetic Logic Unit, eller ALU, er den enhed i processoren der udfører de aritmetiske og logiske operationer. På figur 2.2 ses ALU en i forbindelse med CPU ens registre. ALU en har to lokale input registre, på figuren kaldt dst og src, og resultatet gemmes i et tredje lokalt register. ALU bruger en sammensætning af logiske gates til at udføre logiske eller aritmetiske operationer på de to input registre, hvorefter resultatet gemmes i ALU ens output register. Alt dette foregår i trin 6 i nedenstående beskrivelse af hvordan en instruktion udføres af CPU en. 1. En instruktion hentes fra hukommelsen og ligges i instruktions registret. 2. Program counter ændres, så den peger på næste instruktion. 3. Afgør hvilken instruktionstype der blev hentet. 4. Hvis instruktionen bruger data fra hukommelsen, find ud af hvor det ligger. 5. Hent data til CPU-registret. 6. Udfør instruktionen. 7. Skriv resultat til det register instruktionen indikerer. 8. Gentag fra step 1. 17

18 2. Microcontroller Figur 2.3: Oversigt over pins på MSP430 [7]. 2.4 MSP430 pins MSP430F149 har 64 pins, som det kan ses på figur 2.3. De 64 pins er delt op i 6 porte med 8 pins hver, der alle har special-funktioner og kan bruges som generel I/O, mens de resterende 16 pins kun kan bruges til special-funktioner. Når man vælger pins til general I/O skal man være sikker på at man ikke skal bruge den pågældende pins special-funktion, da disse special-funktioner ikke kan flyttes til en anden pin. En anden ting at tage højde for, er at port 1 & 2 er de eneste porte hvorpå der kan genereres interrupts. Dvs. hvis både global interrupt enable, og port 1 interrupt enable er sat høj, vil port 1 interrupt flag blive sat så snart én af input pins på port 1 går høj. 2.5 Porte valgt i vores projekt 18 Port 1 bruges til vores sensor, der er forbundet til pin 1.0, da det er nødvendigt at generere interrupts. Pin 7 og 8 på port 3 bruges til seriel kommunikation (pin 3.6 og 3.7 er

19 Seriel kommunikation hhv. transmit og receive på USART1). Alle pins på port 4 bruges til at styre L297 erne. Denne port blev valgt da portens specialfunktioner ikke skal bruges Port I/O instruktioner PxSEL Vælger hvilke pins der bruges til deres specialfunktion. P1SEL = 4; vælger eksempelvis pin 3 på port 1 til specialfunktion. Resten af porten vil fungere som digital I/O. PxDIR Vælger hvilke I/O pins der bruges til output. P4DIR = 6; sætter eksempelvis pins 1, 2 og 3 på port 4 til output, hvor de resterende fungerer som input. PxOUT Skriver en værdi til porten. Bruges til at definere om output pins skal være høje eller lave. P1OUT = 3; sætter pin 1 og 2 høj og de resterende pins lave. Her kan XOR, AND og OR benyttes til kun at ændre specifikke pins og lade de resterende være uændret. PxIN Læser portens tilstand. Alle pins medtages, også output pins. For at aflæse en specifik pin kan der bruges en AND operator. while(p1in & 4); vil f.eks. blive i while løkken indtil P1.3 går lav. 2.6 Seriel kommunikation Ved seriel kommunikation sendes data efter hinanden, en bit af gangen, over en leder, i modsætning til parallel kommunikation hvor data sendes sideløbende over flere ledere RS232 For embeddede systemer er den mest anvendte serielle arkitektur RS RS232 blev oprindeligt lavet som et interface mellem PC og modem, men grundet meget nem software tilgang, er det blevet standarden for seriel kommunikation i embeddede systemer USART moduler MSP430 er forsynet med 2 USART 7 moduler, USART0 og USART1. I UART mode bruges USART modulerne til at sende data i bytes over en seriel tilslutning. Da USART modulerne er tilsluttet microcontrolleren via en 8-bit Memory Data Bus, vil de omdanne en byte til 8 sekventielle bits med tilhørende start, stop og eventuelt paritets bit. Den modtagende enhed skal også have en UART, som stykker de sekventielle bits sammen til bytes. 6 RS232: Recommended Standard USART - Universal Synchronous/Asynchronous Receive/Transmit 19

20 2. Microcontroller Fejldetektering (Paritet) En paritetsbit sørger for at hele sekvensen af bits der sendes enten giver et lige eller et ulige tal, afhængig af om man bruger even parity eller odd parity. Ved even parity vil paritetsbit blive 1 hvis den sendte byte indeholder et ulige antal 1 ere, tilsammen bliver den sendte byte dermed et lige tal. På den modtagende ende undersøges alle bytes, og hvis de ikke stemmer overens med den paritetsmetode der bruges, ved man at der var en fejl i overførslen Baudrate Da kommunikationen foregår asynkront, bruges en foruddefineret baudrate til at indikere hvor hurtigt der overføres data. I MSP430 bruges UxBR 8 registert til at generere en baudrate divider, som ud fra en valgt clock i MSP en genererer den ønskede baudrate. Divideren findes som vist i formel 2.1. BRCLK er den valgte clock til opsætning af baudrate. Baudrate er den ønskede rate, og N er divideren, som skal gemmes i UxBR registrene. N = BRCLK baudrate (2.1) 2.7 Interrupts Interrupts er en måde at afbryde programmet for at afvikle en interruptfunktion. Timerne i MSP en er én måde at generere interrupts på, ved forudbestemte intervaller i forhold til den valgte clock source. Det er muligt at få interrupts fra eksterne enheder, ved hjælp af port 1 og 2 på MSP en. At kunne modtage interrupts kræver først og fremmest at Global Interrupt Enable bitten er høj, og at interrupt enable bitten er høj på den enkelte enhed. Der er kun én interrupt vektor til en port, og det vil derfor være det samme kode, der eksekveres uanset hvilken pin på porten der har sat interrupt flaget højt. Det er dog muligt manuelt at aflæse hvilken pin der har genereret interrupt, og dermed eksekvere kode afhængig af dette. Når der kommer et interrupt, behandles det af MSP en i følgende trin: 1. Den igangværende instruktion afsluttes. 2. Program Counter ligges på stack en. 3. Status registret (R1) ligges på stack en. 4. Hvis der er kommet flere interrupts vælges interuptet med højest prioritet. 5. Interrupt flag resettes for enheder der kun har 1 interrupt kilde, hvor den for enheder med flere kilder skal resettes manuelt. 6. Status registret ryddes, hvilket blandt andet også rydder global interrupt enable. Dette sikrer at et interrupt ikke bliver afbrudt af et andet interrupt. 8 Til hver USART findes 2 UxBR registre på hver 8 bit. U0BR0 og U0BR1 er f.eks. registrene til USART0, og danner tilsammen et 16 bit register til opbevaring af clock divideren. 20

21 Basic Clock Module 7. Første linje af interrupt funktionen ligges i Program Counter, og kode eksekvering fortsætter fra dette punkt. Når interrupt funktionen returnerer, gendannes PC og status registret fra stack en, og programmet genoptages fra det punkt det blev afbrudt fra. Da timer A har flere interrupt kilder vil interrupt flaget ikke automatisk blive reset, derfor skal vi i vores Timer A interrupt funktion manuelt rydde TAIFG som er interrupt flag for hele timeren. Når man laver interrupt-funktioner er det vigtigt at tænke på hvad der rent faktisk sker internt: Den igangværende kode bliver stoppet uden advarsel, og når det får mulighed for at køre igen er det vigtigt at interrupt-funktionen ikke har ændret noget der har betydning for det program der blev afbrudt. Derfor benytter vi os generelt af AND, OR og XOR hvor vi kun ændrer de pins vi har brug for, frem for at skrive til hele porten. 2.8 Basic Clock Module I microcontrolleren er der indbygget et Basic Clock Module, der kan generere clocks for de enheder der kræver dette. Modulet har 3 clock generatorer, og har som output 3 clock signaler. I vores projekt benyttes LFXT1CLK generatoren og ACLK signal ikke, de medtages dog alligevel for at dække clock modulet i sin helhed. Block diagram over Basic Clock Module er vist i figur Clock generatorer Clock Modulet kan være forsynet med op til 3 forskellige frekvens generatorer. Alle omtalte betegnelser og henvisninger omhandler figur 2.4. LFXT1CLK Lavfrekvent/højfrekvent oscillator kan enten bruges som lavfrekvent med en Hz watch krystal, eller en ekstern clock enhed i 450 khz - 8 MHz området. LFXT1CLK kan deaktiveres i status registeret med OSCOFF bit. XT2CLK Valgfri højfrekvent oscillator som kan bruges med en standard krystal eller eksterne clock enheder i 450 khz - 8 MHz området. På vores MSP board sidder der en 4 MHz krystal, den kan deaktiveres i BCSCTL1 9 med XT2OFF bit. DCOCLK Intern digitalstyret oscillator (DCO) med RC led (RC leddet bestemmer frekvensen). Kan deaktiveres med SCG0 bit i CPU ens s- tatus register. Default frekvens er ca. 755 khz. Frekvensen på DCO kan indstilles til en ønsket hastighed (i alt 64 forskellige niveauer) Clock-signaler Clock Modulet genererer 3 forskellige clock signaler. Hvilken clock kilde de benytter, samt andre indstillinger vælges gennem kontrol registrene for Basic Clock Module. Clock signalerne bruges af MSP ens perifere enheder, hvor de enkelte enheders kontrol registre skal indstilles for at bestemme hvilken clock der benyttes. Alle omtalte betegnelser og henvisninger omhandler figur Basic Clock System Control Register 1. 21

22 2. Microcontroller Figur 2.4: Basic Clock Module [8] ACLK Auxiliary clock kan kun bruge LFXT1CLK som kilde, men frekvensen kan divideres med 1, 2, 4 eller 8 med DIVAx bit. MCLK Master clock kan benytte hvilken som helst af de 3 frekvens generatorer (SELMx), og har ligesom ACLK en 1/2/4/8 clock divider (DIVMx). Begge indstillinger vælges i BCSCTL2. På figuren ses desuden CPUOFF, som findes i status register. CPU en kører altid på MCLK s frekvens, og ved reset er MCLK sat til DCO. Da DCO er meget hurtig til at starte op, kan eksekvering af kode begynde på under 6 µs. 22 SMCLK Sub-main clock kan benytte DCO og XT2 som kilde (SELS), har en divider ligesom ACLK og MCLK (DIVSx) og kan deaktiveres med SCG1 bit. SELS og DIVSx vælges i BCSCTL2, og SCG1 i status register. Ved reset sættes SMCLK til DCO.

23 Timers 2.9 Timers MSP430 indeholder 3 timere: Watchdog Timer, Timer A og Timer B. Da Timer A og B minder meget om hinanden, og da vi ikke har behov for at bruge begge timere, vil vi i rapporten ikke beskæftige os med Timer B Watchdog Timer Ved et embedded system har brugeren ofte ikke mulighed for at genstarte systemet i tilfælde af fejl, modsat PC er hvor man ved hjælp af skærm, tastatus og mus kan genstarte en fejlramt applikation eller hele computeren. En fejl i koden på et embedded system kunne føre til at enheden kommer ind i en tilstand, som den ikke kan komme ud af, et problem der kræver genstart af systemet. For at tage højde for dette kan man anvende Watchdog timeren, som sørger for at genstarte microcontrolleren hvis koden ikke servicerer watchdoggen, ved periodisk at sparke til den. Watchdoggen tæller ned fra en værdi og hvis den når til 0, vil systemet genstarte. At sparke til hunden er en talemåde der indikerer at man overskriver tælleren med en ny værdi, så watchdoggen skal starte forfra med at tælle ned Timer A Timer A er en 16-bit timer/tæller med 3 capture/compare registre. Timer A har også interrupt egenskaber; interrupts kan komme fra tælleren, eller fra hvert capture/compare register. Timeren konfigureres vha. software og har følgende egenskaber: Asynkron 16-bit timer/tæller med 4 operative egenskaber (beskrevet senere) Valgbar og konfigurerbar clock kilde 3 konfigurerbare capture/compare registre Konfigurerbare outputs med PWM muligheder Asynkron input og output latching Interrupt vektor register, for hurtig dekodning af alle Timer A interrupts I de efterfølgende afsnit om Timer A modes og Capture/Compare nævnes en række kontrol bits fra timerens registre. Nedenstående er en kort forklaring af de mest væsentlige kontrol bits og kan læses inden de efterfølgende afsnit, eller blot bruges til opslag når et register nævnes. Capture/Compare funktionaliteten i Timer A benyttes ikke i vores projekt, men medtages for helhedens skyld. TAR et 16 bit timer/counter register der fungerer som timerens tæller. TACCRx Timer A Captuer/Compare Register (x indikerer her at der er et register til hver CC modul). Funktion afhænger af operationsmode. I Compare mode sammenlignes værdien i TACCRx med TAR og genererer interrupt når de er ens, ved Capture mode bruges registeret til opbevaring af værdien i TAR når et Capture trigges. 23

24 2. Microcontroller TASSELx Timer A clock source select vælger imellem 4 kilder til timerens clock. Der kan vælges imellem TACLK, ACLK, SMCLK og INCLK, hvor TACLK og INCLK begge er eksterne kilder. IDx Input Divider. Kan indstilles til at dividere input clocken med 1, 2, 4 eller 8. MCx Mode Control. Vælger mellem stop, up, continuous og up/down mode. TAIE Timer A Interrupt Enable. Aktiverer timerens interrupt vektor. CAP vælger mellem capture og compare mode. CAP sættes høj for capture. CMx Capture mode. Vælger hvilke flanker der trigger et capture. Kan sættes til ingen flanker, stigende, faldende, eller alle flanker. CCIE Capture/Compare Interrupt Enable. Aktiverer interrupts fra Capture/Compare moduler. CCI Capture/Compare Input. Værdien af det valgte input (høj eller lav) til et Capture/Compare modul kan aflæses på denne bit Timer A Modes Timeren har fire operations modes. Stop I dette mode er timeren stoppet. Up mode tæller op til værdien i TACCR0, springer til 0 og tæller op igen. Timer A interrupt flag (TAIFG) sættes når TAR går til 0. Continuous mode tæller fra 0h til 0FFFFh (den højeste værdi der kan rummes i det 16 bit store TAR register), springer til 0 og tæller op i- gen. TAIFG sættes når TAR går til 0. Up/Down mode tæller fra 0h til TACCR0 og tilbage ned til 0h osv. TAIFG sættes når TAR går fra 1 til 0. TACCR0 Capture/Compare interrupt flag (C- CIFG) sættes når TAR går fra TACCR0-1 til TACCR0. Der kommer dermed skiftevis interrupts fra CCIFG og IFG hver halve periodetid Capture/Compare Timer A indeholder 3 capture/compare moduler, som kan sættes til enten capture eller compare mode. 24 Capture Mode bruges eksempelvis til at måle tidsintervaller. Hvert modul har 2 capture indgange som kan tilsluttes eksterne pins eller interne signaler. Et capture kan vælges til at trigge ved stigende eller faldende flanke, eller på begge flanker. Ved et capture kopieres værdien i TAR til TACCRx registeret, og Capture Compare Interrupt Flag sættes (C- CIFG).

25 Timers Compare Mode bruges til at generere PWM 10 signal, eller interrupts ved bestemte tidsintervaller. Compare mode sammenligner TAR med værdien i TACCRx ved hver clock. Når TAR tæller til værdien i TACCRx, sættes CCIFG. 10 PWM - Pulse Width Modulation. Et kantet signal der bruges til at styre hastigheden på DC motorer. 25

26

27 kapitel 3 STEP 1: SIMPEL KØRSEL 3.1 Kravspecifikation step 1 Ifølge den overordnede kravspecifikation, er første trin: Lave en robot der er i stand til at køre vha. en mikroprocessor. Vi opsætter først nogle mere specifikke krav til dette step, hvorefter de valgte løsninger beskrives i resten af Step 1 afsnittet. Robotten.. skal kunne dreje et angivet antal grader... skal kunne dreje både om sit midtpunkt og om et af hjulene... skal kunne køre forlæns og baglæns ved en angiven afstand. 3.2 DC- & step-motorer [4], [14], [10]. Følgende afsnit vil omhandle DC- og step-motorer, da man ved opbygning af en simpel og lille lagerrobot prototype normalt ville vælge imellem disse to typer motorer. Til hvert afsnit forklares motorens virkemåde, samt hvilke fordele og ulemper de måtte have. Til sidst begrundes valget af motortype til dette projekt i henhold til den opstillede kravspecifikation DC motor DC motoren (jævnstrøms motor) så dagens lys ved et tilfælde, da Zénobe Théophile Gramme 1 i 1873 tilsluttede en dynamo, som han havde opfundet, sammen med en lignende enhed som dynamoen. Gramme maskinen 2 blev kort herefter den første elektriske motor, som var succesfuld i industrien på daværende tidspunkt. I dag anvendes jævnstrømsmotoren på mange områder og i mange ting. F.eks. er jævnstrømsmotoren at finde i lokomotiv byggesæt, mobiltelefoners vibrator, barbermaskiner og mange andre steder. En elektrisk motor virker ved at den elektriske energi bliver omsat til mekanisk energi. Denne omdannelse sker vha. magnetisme. En 2-polet DC motor består af 2 magneter. På figur 3.1 ses et tværsnit af en DC motor. De 2 magneter består af en nordlig polariseret magnet (rød) og en sydlig polariseret magnet (grøn), se figur 3.1. Enhver DC motor består af 6 dele; aksel, rotor, stator, strømfordeler, magneter og børster. I de fleste DC motorer anvender man kraftige magneter, men magnetfelterne kan også 1 Zénobe Théophile Gramme (April 4, Januar 20, 1901), belgisk elektroingeniør. 2 Elektrisk generator som producerede jævnstrøm og som var opkaldt efter Zénobe Gramme. 27

28 3. Step 1: Simpel kørsel Figur 3.1: DC motor [14] skabes af induktionsspoler 3. Statoren og magneterne er den faststående del i en DC motor. Rotoren (sammen med akslen og strømfordeleren) sidder inden i statoren og er motorens bevægelige del. Rotoren består af viklinger som er elektrisk forbundet med strømfordeleren. Når strøm tilføres strømfordeleren, bliver polariteterne af vindingerne og statorens magneter sat ude af niveau. Hvis man tager udgangspunkt i figur 3.1 og fastslår at motoren skal dreje i urets retning, skal den øverste vinding have samme polaritet som den grønne magnet, og den nederste vinding får samme polaritet som den røde magnet. Dette resulterer i at magneterne trækker i hver deres vinding, og frastøder den anden. Når rotoren har bevæget sig, vil strømfordeleren miste kontakten til forsyningen. Der er nu ingen polaritet i vindingerne og rotoren drejer indtil begge vindinger igen sidder lige imellem magneterne, strømfordeleren kommer nu igen i kontakt med forsyningen og hele processen gentages. De motorer der findes i dag er mindst 3-polede. På den måde undgår man at motoren sætter sig. Forestiller man sig, at rotoren præcist når at rotere til midten i sin rotation (dvs. perfekt udligning af niveauet mellem magneterne), så vil motoren gå i stå. For at undgå dette anvendes oftest 3+ polede motorer Step-motor En step-motor er god at anvende når man har brug for at kontrollere motorens bevægelser, såsom en rotations vinkel, hastighed eller en position. I dag ses step-motorer i printere, harddiske, medicinsk udstyr, fax maskiner osv. En step-motor er en elektromekanisk enhed, som konverterer elektriske impulser til mekaniske bevægelser. Drivakslen roterer i step når elektriske kommandoimpulser sendes i korrekt rækkefølge. Rækkefølgen af impulserne påvirker motorens drivaksel, hvor omdrejningshastigheden er styret af frekvensen af de indkommende impulser. Længden af rotationen er bestemt af det antal impulser der sendes. Der findes 3 typer af step-motorer: varme 28 Variabel reluktans Permanent magnet 3 Ulempen ved at bruge spoler i stedet for magneter er at disse kræver strøm og afgiver

29 DC- & step-motorer Hybrid Variabel reluktans (VR) Figur 3.2 viser et tværsnit af en variabel reluktans step-motor. Denne type består af en rotor med tænder, og en stator med vindinger. På figuren benævnes vindingerne A, B, C og D, hvor modstående spoler altid har samme benævnelse. Til det tidspunkt der vises på figuren er det sættet B som er magnetisk, da vi ser at rotorens tænder (3 og 6) sidder lige ud for B vindingerne. Det næste step i urets retning bliver taget ved at strømmen løber gennem spolerne C, og nu trækkes tænder 2 og 5 hen til disse vindinger. Dette fortsætter med D vindingerne (tænder 1 og 4), osv. Figur 3.2: Variabel reluktans [4] Permanent magnet (PM) Denne type step-motor kan typisk tage steps fra 7.5 til 15 (48-24 steps pr. omdrejning). Rotoren har ikke tænder, som VR motoren har. I stedet for er rotoren magnetiseret med skiftevis nord- og sydpoler som ligger på en lige linje parallelt med rotorens drivaksel, se figur 3.3. Den magnetiserede kerne resulterer i en større magnetisk flux 4 intensitet end ved VR. Pga. den større flux opnår en PM større moment end en VR ved samme strøm. 4 Flux er kvantiteten af magnetisme, dvs. det fortæller om styrken og udstrækningen af et magnetisk felt, og betegnes med phi (φ). 29

30 3. Step 1: Simpel kørsel Figur 3.3: Permanent magnet [4] Hybrid (HB) Hybrid motoren er dyrere end PM motoren, men udfører arbejdet hurtigere mht. steps, drejningsmoment og hastighed. En HB motor tager typisk steps fra 3.6 til 0.9 ( steps pr. omdrejning). Hybrid motoren udfører sit arbejde ved at kombinere de bedste egenskaber fra VR og PM motoren. Rotoren er med tænder ligesom VR motoren, og har aksial magnetiserende koncentrisk 5 magnet rundt om drivakslen. Tænderne er med til at skabe en bedre magnetisk flux. Dette resulterer i en bedre omdrejningsmoment samt bedre bremseevne/stopevne. De to mest anvendte motorer når man snakker om step-motorer, er PMog HB typerne. Hvis man er i tvivl om hvilken motor man skal anvende, kan PM motoren anvendes i første omgang. Viser det sig at man har brug for mere fleksibilitet, højere hastighed eller f.eks. bedre drejningsmoment, kan HB motoren anvendes. Figur 3.4: Hybrid [4] 5 Ligger inden for et fælles midtpunkt, el. som har et fælles midtpunkt 30

31 DC- & step-motorer Fordele & ulemper På tabel 3.1 ses hvilke fordele og ulemper der er ved hhv. DC- og step-motorer DC motor Step-motor Fordele Høj kraftudnyttelse i forhold til motorstørrelse Billig i forhold til andre styrede motorer Høj hastighedsomdrejning Overbelastningen er sikker Relativ lydløs ved høje omdrejninger Mekanisk overbelastning = motorstop Høj effektivitet Lang levetid Få vibrationer og lille resonans Godt inertimoment og god friktion God til anvendelse ved styringsformål Ulemper Overbelastningen er mindre Omdrejningsmomentet falder i sikker takt med øget hastighed Mekanisk overbelastning = Bliver meget varm ved længere motor risikerer at fortsætte tids arbejde eller brænde af Ikke nær så god til at anvende Larmer ved mange om- til styringsformål Større peak ved høj hastighed (Gearing er ofte påkrævet) drejninger Lav kraftudnyttelse i forhold til motorstørrelse Tabel 3.1: Fordele & Ulemper 31

32 3. Step 1: Simpel kørsel 3.3 Hardware [12], [2], [9], [11], [13], [19]. Hardwaren til dette projekt tager udgangspunkt i en robot fra et tidligere projekt (af en anden gruppe studerende). Robotten kunne i starten ikke køre, da kun den ene motor virkede. Konklusionen blev at der var fejl i styringskredsløbet. Følgende var monteret på robotten; 2 x Step-motorer (Vexta PH268-E2.3) 2 x Hjul (R = 6,25cm) 1 x YUASA 12V, 7A batteri 1 x Effektforstærker (indholder i alt 8 x IRF530 MOSFET transistorer) 1 x Controller (2 x L297-kredse) Eftersom der ingen dokumentation var over styringen, resulterede det i en række tests og forsøg på fejlfinding. Det endelige resultat var at vi selv byggede en ny styringskreds og en signalforstærker. Den gamle effektforstærker blev repareret og genbrugt, og batteriet blev skiftet ud. Elektronikken består dermed af; Samme step-motorer og hjul som oprindeligt 1 x Panasonic 12V, 7.2A batteri 1 x Controller (2 x L297-kredse) 1 x Signalforstærker (2 x ULN2003A (darlington transistor array)) 1 x Repareret udgave af effektforstærkeren Herudover er der monteret en spændingsdeler (12V 9V), således at microcontrolleren forsynes fra batteriet. 32

33 Hardware For at drive robotten, kræver det en kreds som kan styre motorerne. Denne styringskreds er sammensat af flere sektioner som ses på figur 3.5. Figur 3.5: Blokdiagram over motor styringen Styring af step-motor For at styre en step-motor, er det nødvendigt at generere signaler der skal aktivere motorens spoler i den rigtige rækkefølge. En controller (L297), kan fx. styre disse signaler. I databladet over L297 (starter side 79) figur 11 ses en graf over input signaler (full-step) på en 2-faset step-motor, og på figur 4b ses en illustration af motorens position i hvert trin. De motorer vi benytter os af har full-step på 1,8. På figur 11 (L297 datablad) ses at motorerne kun bruger position 1, 3, 5 og 7, hvor den for half-step bruger alle positioner, som ses på figur 9 og motorpositionerne figur 4c. L297-kredsen anvendes til at danne de kommandoimpulser en step-motor skal bruge. Alternativt kan signalerne genereres direkte fra MSP en, men L297 benyttes for at mindske belastningen på microcontrolleren Opbygning af styringskreds Styringskredsløbet er bygget op omkring 2 L297 ere. Hver af de 2 L297 ere genererer 4 oscillerende signaler til signalforstærkeren. Nedenstående er de forskellige ind- & udgange forklaret. På figur 3.6 ses et kredsløbsdiagram over controller kredsen. I appendix side 77 figur 8.2 ses et billede af L297 controller kredsen. OSC styrer synkroniseringen (SYNC Out) mellem microcontrolleren og komponentets egen oscillering. Dvs. den holder styr på om takten er den samme i L297, når der kommer en CLOCK fra microcontrolleren. Modstandene og kon- 33

34 3. Step 1: Simpel kørsel Figur 3.6: Kredsløbsdiagram over L297 densatorerne er sat på for at generere det oscillerende signal vha. RC-leddet. Inhibits (INH1 og INH2) er de to pins styrer udgangene A og B, samt C og D. Disse er bestemmende for om udgangene skal bruges som høj/lav eller om disse skal være svævende. SENS1 & SENS2 virker som en sikring. De er styret vha. en referencespænding (Vref), og er forbeholdt for en større strøm. Dvs. der tjekkes hvis en motor pludseligt trækker mere end hvad referencespændingen er sat til, vippes SENS1 og SENS2, som herved deaktiverer motoren. I tabel 3.2 er de parametre som kan konfigureres efter behov beskrevet. Navn Funktion Høj Lav CW/CCW Med eller mod urets retning Afhængigt af polvending på motoren Clock En frekvens på dette input styrer hastigheden af polvendingen Half/Full Køre med halv eller fuld Halv step Fuld step skridtlængde Enable Enable af L297 Enable Disable Reset Nulstille systemet. Reset stiller udgangene ABCD på [0101] Reset Tabel 3.2: L297 input funktioner De 4 oscillerende signaler, som kommer på udgangene A, B, C & D fra L297 eren 34

35 Hardware er de signaler, som skal forstærkes af signalforstærkeren. De 4 signaler kan ses pa figur 3.7. Pa figur 3.8 (taget fra L297 datablad, figur 11) ses at det signal der skal til for at drive en step-motor er magen til det signal der genereres fra L297 eren. De komponenter som er anvendt til at bygge styringskredsen ses i tabel 3.3. Navn Funktion Antal L297 Kondensator Modstand Modstand Controller Led i oscilatoren Led i oscilatoren GND & SENS Værdi 3, nf kω Ω Tabel 3.3: Komponenter i L297 Figur 3.7: Full step L297 Output Figur 3.8: Full step L297 datablad [11] Udbedring af signalforstærkeren Det hardware som sad pa robotten i starten, kunne ikke drive robotten. Derfor blev der lavet en række forsøgsudbedringer, udelukkende for at fa robotten til at køre. Hovedsageligt drejer det sig om signalforstærkeren. Den første opstilling sa ud som nedensta ende. Gammel opstilling Controller (gammel L297) Driver (ukendt) Effektforstærker Motorer Herefter kunne det konkluderes at den controller der blev brugt ikke gav de rigtige signaler. Derfor valgte vi at opbygge en ny, dog stadig baseret pa L297. Udbedring 1 Controller (ny L297) Driver (ukendt) Effektforstærker Motorer Efter denne udbedring, viste det sig til at effektforstærkeren gav et da rligt udgangssignal til motorerne. Det resulterede i at der blev bygget en ny L298 (driver). Ifølge databladet for L297 kan L298 sættes pa med en monolitisk kobling, hvilket skulle være i stand til at drive motorerne. Opstillingen blev som følgende. 35

36 3. Step 1: Simpel kørsel Udbedring 2 Controller (L297) Driver (L298) Motorer Det resulterede i at motorerne krævede en større peak 6 strøm (2.3 A nominelt) end L298 kunne levere (2.5 A i gentagende peak). Den gamle effektforstærker blev derfor taget op igen. Denne gang blev der monteret dioder på hver udgang ved effektforstærkeren. På den måde kunne man se om hver udgang gav ordentligt signal (blinkende dioder), og samtidig se om nogle af transistorerne i effektforstærkeren var defekte. Det viste sig at transistorerne skulle udskiftes, og flere lodningsfejl blev udbedret, hvilket resulterede et bedre og ikke støjende signal. Udbedring 3 Controller (L297) Effektforstærker (repareret) Motorer Efter denne udbedring, kunne robotten køre. Det viste sig dog at controllerne blev overbelastet og brændte af. Årsagen var at indgangsimpedansen på fet transistorerne var for stor. Denne impedans dannes inde i fet trasistoren og skyldes at forbindelserne ligger tæt op ad hindanden. I værreste tilfælde kan sådan en opladning på fetten til at sluge op til 5 A ved optænding. For at forhindre controllerne i at brænde af, byggede vi en signalforstærker (ULN2003A) mellem controlleren og effektforstærkeren. Da ULN2003A har en strømbegrænsning på 500 ma, sikrer den at L297 kredsene ikke bliver overbelastet. Udbedring 4 Controller (L297) Signalforstærker (ULN2003A) Effektforstærker Motorer Med denne opsætning blev L297 kredsene ikke overbelastet og robotten kunne køre. Transistorerne blev meget varme, så som en sidste forbedring monteres en køleprofil og blæsere der skulle forhindre transistorerne i at brænde af Signalforstærkerens opbygning I dette afsnit er der beskrevet komponenter vi anvender til signalforstærkeren, hvordan de virker samt hvordan disse er forbundet med effektforstærkeren. Kredsløbsdiagrammet over signalforstærkeren ses på figur 3.9. I appendix side 78 figur 8.4 ses et billede af signalforstærkeren. Signalforstærkeren består af 2 ULN2003A kredse. Hver ULN2003A består af 7 darlington transistor array par, der virker som en forstærker, og har en inverter på hver indgang. 5V forsyning er sat på OUT pins på ULN2003A med 560 Ω modstande. Når IN1 er høj vil en inverter inde i IC en sætte OUT1 lav, hvilket trækker strømmen fra modstanden til GND. Er IN1 derimod lav, vil OUT1 gå høj og transistoren aktiveres via 5V forsyningen over 560 Ω modstanden. En modstand på 560 Ω kan overstige impedansen i FET IRF530 transistoren. Da 6 Peak strøm er den maksimale strøm der kan leveres som er målt gennem en periode 36

37 Hardware Figur 3.9: Kredsløbsdiagram over signalforstærker ULN2003A inverterer signalet, bruger vi to inverter kredse, HEF4049B, som indeholder 6 invertere. Ved at invertere outputtet fra L297 inden det kommer til ULN2003A, ophæver de to inverteringer hinanden. De komponenter, som er anvendt til at bygge signalforstærkeren ses i tabel 3.4. Navn Funktion Antal Værdi HEF4049B Inverter 2 ULN2003A Darlington array par ma Modstand Reference modstand kω Tabel 3.4: Komponenter brugt i signalforstærkeren Effektforstærkerens opbygning I dette afsnit er der beskrevet hvilke transistorer vi bruger, hvordan de virker samt hvordan disse er forbundet med controlleren. Ligeledes er der beskrevet hvordan effektforstærker kredsløbet er opbygget. Forstærkeren består af 8 x NPN IRF530 FET transistorer 7, 4 pr. motor. På billede 3.10 ses en NPN IRF530 FET transistor. Når transistoren påvirkes på gate 8 ændres den indre modstand således at der kan løbe strøm fra drain til source. Denne modstand går fra høj, svarende til den modstand som ligger over zener dioden der ses i figur 3.10, til en meget lille modstand på nogle få Ohm. Når dette sker er transistoren tændt og i praksis vil man erfare at man med en lille styringsstrøm kan aktivere en større strøm. I kredsløbet er transistorens gate forbundet til at blive styret af det signal, som kommer fra L297. Drain er forbundet til spolens ene pol og til en diode, som 7 En transistor er en elektronisk halvleder som bruges til enten at forstærke strøm eller skifte elektroniske signaler. NPN (negative positive negative), FET (Field Effect Transistor) 8 Gate: ben 1, Drain: ben 2, Source: ben 3 37

38 3. Step 1: Simpel kørsel Figur 3.10: N-Channel FET transistor - IRF530 [13] er forbundet til 5V. Diodens opgave er at sende den strøm, som kommer ind i spolen, tilbage til kredsløbet imens FET transistoren er slukket. Source fra transistoren er forbundet til GND. Det betyder at når transistoren tændes, løber en strøm gennem spolen og den virker som en elektromagnet. Når transistoren er tændt, sørger dioderne for at der ikke er kortsluttet mellem forsyning og transistorne, da strømmen så aldrig ville løbe gennem spolerne. De komponenter, som er anvendt til at bygge effektforstærkeren ses i tabel 3.5. Navn Funktion Antal Værdi IRF 530 N-Channel transistor 8 Fast Diode Afspændings Diode 8 2 A Modsand Reference modstand 8 0,47 Ω Tabel 3.5: Komponenter i effektforstærkeren Kredsløbsdiagrammet over effektforstærkeren ses på figur I appendix side 77 figur 8.3 ses et billede af effektforstærkeren. Figur 3.11: Kredsløbsdiagram over effektforstærker 38

39 Hardware Spændingsdeler I følgende afsnit vil der være beskrevet hvorfor vi bruger en spændingsdeler, hvilke komponenter der er brugt, samt en formel til dimensionering af modstande i spændingsdeleren. Spændingsdelerens kredsløbsdiagram ses på figur I appendix side 78 figur 8.5 ses et billede af spændingsdeleren. Figur 3.12: Kredsløbsdiagram over spændingsdeler Kredsløbsdiagrammet tager udgangspunkt i databladet for LM317T (appendix side 91). Spændingsdeleren kan reguleres vha. en justerbar modstand, som er forbundet med LM317T (3-terminals justerbar regulator). Spændingsregulatoren holder den ønskede spænding stabil, indtil strømmen som trækkes fra kredsløbet overstiger LM317T s grænseværdi. Værdi kan aflæses i databladet side 91 under General description. For en LM317T ligger den på 1.5A. Dette er passende, da microcontrolleren trækker 280 µa ved 1 Mhz, og hver L297 maksimalt trækker 200 ma. De komponenter, som er anvendt til at bygge spændingsdeleren ses i tabel 3.6. Navn Funktion Antal Værdi LM317T Spændingsregulator 1 Kondensator µf Kondensator 1 1 µf Modstand (R1) Ω Justerbar Modsand (R2) Potmeter 1 5 kω Tabel 3.6: Komponenter til spændingsdeler Den generelle formel for en spændingsdeler er vist i formel 3.1. R 2 R 2 + R 1 V in = V out (3.1) Beregningerne for ovenstående spændingsdeler med de anvendte komponenter, ses i formel 3.2. Formålet er at gå fra en indgangsspænding på 12V til en udgangsspænding på 9V, med en R 1 på 120Ω. Udregningen viser hvilken 39

40 3. Step 1: Simpel kørsel størrelse modstand der kunne bruges til R 2 i stedet for et potmeter. 3.4 Software step 1 R 2 R Ω 12v = 9v R 2 = 360Ω (3.2) [19] I dette afsnit dokumenteres softwaren til step 1. Softwaren er delt op i funktioner der får robotten til at bevæge sig på forskellig vis. Ved at kalde disse funktioner med de nødvendige argumenter, kan robotten sættes til at køre i en forudbestemt retning. Kildekoden findes på den vedlagte CD. Step 1 går ud på at få robotten til at køre et forudprogrammeret program. Da robotten benytter sig af L297 controller kredse til at styre hver motor, skal microcontrollen generere følgende output signaler: Clock Enable x 2 Retning (CW/CCW) x 2 Step-size (half-/full-step) x 2 Reset Clock- og reset-signalerne bliver delt mellem L297 erne. Clock-signalet er delt, da det kun giver en begrænsning; robottens hjul vil altid køre med samme hastighed, med mindre man sætter den ene motor til full-step, og den anden til half-step. Enable, retning og step-size er individuelle for de to motorer. På denne måde er det muligt at slukke for en af motorerne for at få robotten til at dreje til højre eller venstre. Retningen på motorerne skal være modsat hinanden for at køre ligeud, fremad så vel som baglæns. Står begge motorer eksempelvis til clock-wise vil robotten dreje rundt om sig selv, da motorerne er monteret spejlvendt af hinanden. Port 4 på MSP en er valgt til de outputs som L297 kredsen skal bruge, og fordelingen er vist i tabel 3.7. Forklaringen af hvilken funktion høj/lav har på de enkelte pins er gennemgået i tabel 3.2 på side 34. Pin Funktion P4.0 Clock frekvens P4.1 Enable for motor 1 P4.2 Retning for motor 1 P4.3 Step size for motor 1 P4.4 Enable for motor 2 P4.5 Retning for motor 2 P4.6 Step size for motor 2 P4.7 Reset af L297 Tabel 3.7: MSP output til L297 40

41 Software step Clock-signal Vi bruger Timer A til at generere clock-signalet. Dette fungerer ved at timeren tæller op til en værdi vi har valgt, laver et interrupt, og starter med at tælle forfra (up mode). Dette interrupt bliver registreret, og en output pin fra vores MSP bliver XOR et 9. I tilfældet her toggles P4.0. Denne pin bruges til clockinputtet på de to L297 ere, som får motorerne til at steppe hver gang klokken går høj. Dvs. hver gang P4.0 toggles fra 0 til 1. I de timer A interrupts hvor P4.0 skifter til høj, inkrementeres en global variabel (stepcount), som kan bruges til at holde styr på hvor mange steps der er kørt siden variablen sidst blev sat til 0. Uden stepcount-variablen ville vi ikke kunne holde styr på hvor langt vi kører eller hvor mange grader robotten drejer Kørsel For at få robotten til at køre skal man først kalde init(), hvilket vælger alle pins på port 4 som output, og nulstiller porten så RESET er høj og begge motorer er sat til half-step. Funktionerne forward() og backward() får robotten til at køre i den respektive retning. drive-funktion For at styre hvor langt robotten skal køre, kan man kalde drive(afstand), hvor afstand argumentet er det antal cm robotten skal køre. drive(afstand) er implementeret som en løkke; til at starte med sættes stepcount = 0 og funktionen returnerer først når den ønskede afstand er kørt. Den ønskede afstand bliver omregnet til steps, og derefter skal man finde ud af hvornår det ønskede antal steps er nået, hvilket gøres med stepcount-variablen. drive(afstand) stopper ikke robotten når den er færdig, det er blot et delay der tæller steps indtil det ønskede antal er nået. Vi har regnet os frem til hvor mange steps der skal til for at køre et bestemt antal cm ud fra formel 3.3. Udregningerne laves for half-step, da vi primært kører i half-step for øget præcision. Hjulenes diameter = 12,5 cm, 1 step = 0,9 (400 steps per omdrejning) og afstanden mellem hjulene = 35,3cm. antal cm vi vil køre Hjulomkreds = π hjuldiameter 1 π 12,5 400 = antal step der skal tages (3.3) Uden formel 3.3 ville det være nødvendigt at kalde drive-funktionen med antallet af step robotten skal køre. turn-funktion For at dreje blødt kan man bruge turn( L, 90) for at dreje 90 til venstre. Dette foregår ved at den ene motor slukkes og den andet fortsætter. For at regne ud hvor mange step der skal til for at køre et bestemt antal grader anvendes formel XOR betyder exclusive or, og bruges her til at skifte et input mellem høj og lav. XOR(x, y) giver 0 hvis x = y, ellers 1. 41

42 3. Step 1: Simpel kørsel vende omkreds = 2 π hjulafstand step vende omkreds = grad afstand pr step = 2 π 35,3 0, = 6, 276 step grad (3.4) rotate-funktion rotate får robotten til at dreje rundt om sig selv ved at sætte begge motorer til eksempelvis clock-wise, da de som tidligere nævnt sidder modsat hinanden. rotate( L,180) får robotten til at dreje rundt om sig selv 180 til venstre. Måden vi har regnet os frem til step per grad, er den samme som i formel 3.4, men med hjulafstanden som diameter i vendecirklen i stedet for radius. Vha. følgende kode, kan man få robotten til at køre i en firkant med sider på 50cm: 1 while (1) { 2 forward (); 3 drive (50); 4 turn ( L, 90); 5 } 42

43 Step 1 test 3.5 Step 1 test I dette afsnit testes robotten med koden fra step 1. De vigtige features testes for at se om robotten reagerer som forventet og hvor stor fejlmarginen er. Afvigelsen viste sig i alle tests at være på under 1%. Kravspecifikationen til step 1 var at robotten.. skal kunne dreje et angivet antal grader... skal kunne dreje både om sit midtpunkt og om et af hjulene... skal kunne køre forlæns og baglæns en angivet afstand. Første test blev udført ved at lave en streg på gulvet, hvorpå 3 meter var mærket af. Robotten blev placeret ved 0 cm, og blev sat til at køre 3 meter. De to andre tests blev udført ved at placere robotten således at hjulenes aksler var oven over striben. Afvigelsen blev fundet ved at måle hvor langt akslerne var fra stregen efter robotten havde drejet rundt. Beskrivelse turn( R, 720) får robotten til at lave et blødt sving 720 til højre, ved at køre med det venstre hjul, og stå stille med det andet. Resultat Robotten roterede 5 for meget. Afvigelse = % = 0.7%. Kørsel baglæns gav det samme resultat. Det hjul der skulle stå stille, bevægede sig en smule da det ikke bremser. rotate( R, 720) får robotten til at rotere 720 med uret om sit midtpunkt. Robotten drejede (igen) 5 for meget. Afvigelse = % = 0.7%. forward(); drive(300); disable(0); får robotten til at køre 300cm frem, og stoppe. Robotten kørte 11mm for langt, d- 11 vs. afvigelsen er % = 0.4%. Denne afvigelse skyldes til dels at motorerne ikke bremser når disable(0) kaldes, hvilket lader robotten trille videre. De udførte test viser at robotten opfylder alle kravene i kravspecifikationen tilfredsstillende. 43

44 3. Step 1: Simpel kørsel 3.6 Delkonklusion step 1 Under step 1 forsøges at få robotten til at køre med de mest grundlæggende egenskaber. Valget af en step-motor i stedet for en DC-motor har vi bl.a. foretaget pga. styringen. Ved step-motorerne har vi mulighed for at tælle antallet af kørte steps, og på den måde vide hvor langt vi har kørt. Robotten som projektet tog udgangspunkt i, var udstyret med hardware til at drive step-motorerne. Test af denne hardware viste dog, at der var meget defekt hardware, og der var ingen ordentlig dokumentation over kredsene. Vi genbrugte dele af den oprindelige hardware, efter at have udskiftet de defekte komponenter. Alt hardware er forbundet til den microcontroller vi anvender, MSP430F149. Med det software som er beskrevet i Software til Step 1 afsnittet, kan vi bestemme hvilken motor der skal køre frem eller tilbage, og angive clock frekvensen, som styrer intervallet mellem hvert step. Robotten kan dreje et givent antal grader på to forskellige måder, og køre frem eller tilbage et givent antal centimeter. De udførte tests viser, at fejlmargin ved alle typer bevægelse er under 1%, hvilket vi er meget tilfredse med. Det er dermed lykkedes at opfylde alle de krav der blev opstillet i kravspecifikationen til step 1. 44

45 kapitel 4 STEP 2: KØRSEL UDEN OM FORHINDRINGER Efter opbygningen af nødvendigt software og hardware til styring af robotten, tages step 2 op i følge kravspeficikationen. Robotten må ikke påkøre eventuelle forhindringer. For registrering af forhindringer, f.eks. en person der står i vejen, anvendes sensorer. Der findes en række forskellige sensorer, som kan anvendes til at registrere et objekt. I afsnit 4.2 sammenlignes nogle af de mest brugte typer sensorer. Den nødvendige hardware og software er dokumenteret i hhv. afsnit 4.4 og Kravspecification step 2 Vi har opstillet en række krav til den sensor som skal anvendes: Robotten.. skal standse, hvis et objekt kommer i vejen, og afvente til objektet er flyttet væk.. skal have en registreringsafstand på mindst 20 cm.. skal holde styr på hvor længe den har holdt stille.. skal efter et givent tidsrum forsøge at køre udenom objektet hvis det stadigvæk er i vejen Vi forventer ikke at robotten skal kunne kende forskel på personer og andre objekter. Robotten skal derfor give tid til at forhindringen flytter sig, inden robotten prøver at navigere uden om. 4.2 Valg af sensor [3], [5], [15]. I dette afsnit kigger vi på infrarøds- og ultralyds sensorer. Der vil i afsnittet være beskrevet hvad forskellen er, samt hvilke egenskaber de har. Ultralyds sensor Der findes en række forskellige ultralyds sensorer, og som navnet afslører benytter man sig her af ultralyd, hvilket er lydbølger over 20kHz. Når lydbølgerne rammer et objekt, reflekteres en del af bølgen tilbage. Tidsforskellen mellem bølgens afsendelse og modtagelse, samt lydens udbredelseshastighed i mediet lyden bevæger sig i 1, bruges til at udregne afstanden mellem sensoren og objektet. Ultralyds sensorer måler afstand mere præcist end infrarød og bliver 1 (i vores tilfælde luft, 340 m/s ved 15 ) 45

46 4. Step 2: Kørsel uden om forhindringer ikke påvirket af objektets farve 2. Sensorerne har svært ved at registrere lydabsorberende materialer. De findes i forskellige varianter. De kan måle fra 2 cm til 1 meter, afhængigt af hvilken model. Infrarød sensor Infrarød stråling er elektromagnetiske bølger med en længere bølgelængde end synligt lys 3. De infrarøde sensorer måler afstand vha. triangulering. De er udstyret med en transmitter i den ene side, og en receiver i den anden. Receiveren registrerer vinklen på den returnerede bølge, og ud fra denne vinkel afgøres afstanden til det reflekterende medie. Afstanden kan f.eks. styres vha. en komparator og en referencespænding eller af en ADC, som omdanner det analoge signal til et digitalt. På figur 4.1 ses forskellige infrarøde sensorer fra Sharp. Figur 4.1: Sharps IR sensorer [5] Infrarøde sensorer påvirkes af farven på objektet der laves afstandsmåling på, hvilket resulterer i en fejlmargin på afstandsmålingen. Dette er ikke et problem til dette projekt, idet der ikke er brug for en decideret afstandsmåling. Sensorerne kan ligeledes påvirkes af direkte sollys eller andet kraftig lys, hvilket gør dem uegnet til udendørs brug. Den infrarøde sensor, som vi har mulighed for at benytte os af, er produceret af Sharp, og synsvinklen på denne typer sensor er lille, sammenlignet med ultralyds sensorer. Sharp har digitale sensorer, som kun registrerer objekter på en given afstand. Til robotten vil det ikke være optimalt kun at kunne registrere objekter indenfor et meget lille interval, idet der pludseligt kan dukke et objekt op foran robotten, f.eks. en medarbejder eller et andet bevægende objekt, som sensoren ikke vil være istand til at registrere. Vi skal altså bruge en af Sharps analoge sensorer, eksempelvis GP2D120, som kan registrere objekter på afstande mellem 4 og 31 cm. Infrarøde sensorer er generelt billigere end tilsvarende ultralyds sensorer. På figur 4.2 ses forskellige infrarøde sensorer fra Sharp, med forskellige detekterings-intervaller. Det sorte område på figuren er det blinde område for sensoren, hvilket vil sige at sensoren 2 Dette afhænger af farven på strålen fra sensoren, da f.eks. rødt lys ikke kan absormere rød farve 3 Synligt lys går fra ca nm, hvor infrarød ligger fra 750 nm µm 46

47 Løsningsmodeller for tilslutning af sensor først måler i det grå område. Den maksimale måleafstand kan ses som grænsen mellem det grå og det hvide område. Figur 4.2: Forskellige typer af infrarøde sensorer og deres rækkevidder i tommer [5] Begrundet valg af sensor Ud fra den viden vi besidder om ultralyds- og infrarøde sensorer, kan begge sensorer anvendes til at registrere objekter som kunne blokere robottens sti. Da der ikke er brug for en præcis afstandsmåling, men en detektering, og robotten ikke skal bruges udendørs, vælger vi at benytte os af Sharps infrarøde sensor. 4.3 Løsningsmodeller for tilslutning af sensor For at koble en analog sensor til vores MSP430 har vi to muligheder. 1. MSP430 opsættes til at konvertere det analoge signal til et digitalt ved hjælp af dens Analog-Digital Converter. 2. En komperator sættes på sensorens output. Outputtet fra komperatoren er digitalt og afhænger af om sensorens output er større eller mindre end en referencespænding. Referencespændingen afgør derfor hvilket afstandsinterval der skal give højt input til microcontrolleren. Ved at bruge MSP ens ADC har man mulighed for at bruge sensoren som afstandsmåler. Ved brug af komperator fås samme input til MSP uanset hvor lang afstanden er, så længe det er indenfor det interval der bestemmes af referencespændingen. 47

48 4. Step 2: Kørsel uden om forhindringer 4.4 Sensor Hardware [6]. For at få robotten til at stoppe, i tilfælde af forstyrrende objekter i kørselsretningen, anvendes en IR-sensor 4 fra Sharp, model GP2D12. For at denne sensor skal kunne styres af microcontrolleren, kan der bruges en komperatorkreds til at afgøre hvornår robotten skal standse, og starte sin kørsel igen, alt efter om der er et objekt forude. Den specifikke kreds som er valgt, er LM393P (Dual dirrefential komperator), som indeholder to komparatorer 5. I følgende afsnit beskrives LM393P, samt begrundes hvorfor denne blev valgt til formålet. GP2D12 er analog og har en justeringsbegrænsning til at registrere objekter fra cm. Den har har tre tilslutninger, hhv. en forsyningsspænding (max tolerance +7V), stel samt et output, som varierer afhængig af hvad sensoren måler. I dette tilfælde benyttes sensoren som en detekteringssensor. Dvs. at sensoren enten registrerer noget eller ej, i det valgte interval. For at dette er muligt, anvendes en LM393P kreds. Denne kreds gør at sensorens output bruges enten til at koble fra eller til ved en bestem afstand. LM393P eren har 8 ben, og består hhv. af 2 x 2 komperatorer (en in- og en in+), et output samt forsyningspænding og stel. Pin Beskrivelse 1 1 Output 2 1IN 3 1IN + 4 GND 5 V CC (Max +36V) 6 2 Output 7 2IN 8 2IN + Tabel 4.1: Pins på LM393P Referencespændingen til komperatoren (koblet på ben 2 (in-)) genereres vha. en spændingsdeler fra 5V 1V. Outputtet fra sensoren er ligeledes forbundet til komperatoren (ben 3 (in+)) som går ind og sammenligner referencespændingen på ben 2 for at trigge outputtet på LM393P kredsen. Outputtet fra komperatoren er forbundet til mikrocontrolleren, som modtager et højt signal hvis sensorens output er højere end referencespændingen, ellers fastholdes outputtet lavt. Et højt signal fra komperatoren ind på MSP en, indikerer at der er et objekt foran sensoren. På Figur 4.3, ses at en referencespænding på 1V giver en måleafstand på ca. 30 cm. Vi har valgt at montere et potmeter til spændingsdeleren, vha. denne kan vi ændre modstanden i spændingsdeleren og derved styre referencespændingen. Dermed kan sensorens registreringsafstand ændres uden at ændre i softwaren. 4 Infrarød sensor 5 En komparator er en operationsforstærker uden modkobling. Typisk får den som input 2 analoge signaler og som output giver et digitalt signal. 48

49 Sensor Hardware Figur 4.3: Diagram over spændingsforhold til afstand (GP2D12). Høj referencespænding Kort detekteringsafstand Lav referencespænding Lang detekteringsafstand Kredsløbsdiagrammet over komperatoren ses på figur 4.4. I appendix side 78 figur 8.6 ses et billede af komperatoren. Figur 4.4: Kredsløbsdiagram over komperator 49

50 4. Step 2: Kørsel uden om forhindringer 4.5 AD konverter [16], [8] I dette afsnit beskrives 12-bit ADC en 6 i MSP430. I step 2 skal vores robot kunne opdage forhindringer, derfor monteres en sensor på fronten. Signalet fra denne sensor, som er analogt, kan konverteres vha. AD konverteren til et digitalt signal som kan anvendes af microcontrolleren ADC teori Figur 4.5: Digital konvertering [1] En ADC kan konvertere et analogt signal af uendelig opløsning til et digitalt signal af en bestemt opløsning. Opløsningen indikerer hvor mange niveauer der vælges til sampling af signalet og hvilken sample hastighed der bruges. Niveauerne er angivet i volt og hastigheden i Hertz. Illustration 4.5 giver et overblik over det analoge signal og sampling værdierne, som er de røde punkter. Antallet af forskellige niveauer der kan aflæses i et system defineres i bits, formel 4.1 viser hvordan dette hænger sammen med forskellen mellem hvert niveau. Formlen er et eksempel med en skala på 10V og en 3 bit konverter, hvilket svarer til 8 niveauer (3 binære pladser kan rumme værdierne 0-7). niveau interval = 10V 2 3 = 1.25V (4.1) Konverteringen fra analog til digital foregår ved hjælp af sample and hold. Det analoge signal fastholdes kort (hold), så dens værdi kan aflæses (sample). Den analoge værdi omdannes derefter til en af de binære værdier som vist i figur Generelt om MSP430 ADC12 ADC en i MSP430F149 er 12-bit ADC, og kan programmeres forskelligt. ADC en kan konvertere signaler fra eksterne såvel som interne kilder. En intern kilde er f.eks. et indbygget termometer der måler microcontrollerens temperatur. Den øvre og nedre reference-spænding styres med V R+ og V R, og disse niveauer indstilles i ADC ens kontrol-registre. ADC en kan generere 2,5V eller 6 ADC - Analog til digital konverter 50

51 AD konverter Figur 4.6: Konvertering fra analoge intervaller til digitale værdier [18] 1,5V som referencespænding, alternativt kan eksterne kilder bruges til referencespændinger. Konverteringsformlen for indgangsstrømmen til udgangssignalet er vist i formel 4.2. Værdien 4095 kommer af (0FFFh) som er den maksimale værdi der kan rummes på 12 bit. Vælges f.eks. 2,5V som V R+ og 0v som V R, kan en vilkårlig spænding indsættes som V in. Hvis indgangsspændingen er over den høje referencespænding, bliver N ADC 4095, og for indgangsspændinger under V R er N ADC lig 0. ADC12 indstillinger N ADC = V in V R V R+ V R 4095 (4.2) Dette afsnit forklarer kort nogle af de mere relevante ADC12 kontrol-registre. Diagram over ADC12 findes i MSP430 userguide [8], figur ADC12SSELx Vælger clock kilden for ADC12. Der kan vælges imellem A- CLK, MCLK, SMCLK og ADC12OSC som er en intern oscillator på omkring 5 MHz. ADC12DIVx Clock divider til at reducere den valgte clock frekvens. Kan sættes til heltal mellem 1 og 8. REFON og REF2 5V REFON aktiverer den interne referencespændingsgenerator. Hvis REF2 5V er sat vil referencespændingen være 2,5V, ellers er den 1,5V. CONSEQx Conversion Sequence Mode Select. Vælger mellem de 4 konverterings modes (se afsnit 4.5.2). ADC12MEMx ADC12 Conversion Memory Registers. Resultatet af konverteringer (N ADC i formel 4.2) gemmes i et af 16 ADC12MEMx registre. 51

52 4. Step 2: Kørsel uden om forhindringer EOS End of Sequence. Denne bit bruges til samtidig konvertering af flere signaler. Når EOS er høj indikerer det at den igangværende konvertering er den sidste i en sekvens. SHI Sample Input Signal. Signalet der indikerer at en konvertering skal begynde. SHSx Vælger kilde til SHI signalet. Der kan vælges mellem ADC12SC bit som skal sættes med software, eller et af timer modulernes outputs, f.eks. Timer A output unit 1. SHT0x og SHT1x Sample-and-hold time. SHT0x definerer længden af en sample periode for ADC12MEM0 til ADC12MEM7, hvor SHT1x definerer sample længde for ADC12MEM8 til ADC12MEM15. En sample længde angives som ADC12CLK cycles. SHP Sample-and-hold pulse-mode select. Vælger om sample længden skal afgøres af sample input signalet (SHI), eller af sampling timeren som defineres i SHT0x og SHT1x. Ved SHP = 1 benyttes extended sample mode, hvor det er SHI signalet der afgør sample længden (figur 4.7. Ved SHP = 0 benyttes pulse sample mode, hvor en positiv flanke på SHI signalet trigger en sample af længden defineret i SHT0x/SHT1x (figur 4.8). Figur 4.7: Extended sample mode [8] Figur 4.8: Pulse sample mode [8] 52

53 AD konverter Konverterings modes MSP ens ADC kan sættes til at operere i én af 4 operations modes. CONSEQx registeret bruges til at vælge mode. Se tabel 4.2 for en oversigt over operations modes. CONSEQx Tilstand Funktion 00 Single channel singleconversion Én kanal konverteres én gang 01 Sequence-of-channels En sekvens af kanaler konverteres én gang 10 Repeat-single-channel Ét signal konverteres gentagende 11 Repeat-sequence-of-channels En sekvens af kanaler konverteres gentagende Tabel 4.2: De forskellige konverterings-metoder Ved single channel konvertering gemmes resultatet i ADC12MEM0 registeret, hvor konvertering af sekvenser benytter et ADC12MEMx register til hver channel. I repeat mode vil konverteringen gentages indtil det deaktiveres, og værdierne i ADC12MEMx registrene overskrives ved hver konvertering. Når der konverteres en sekvens, inkrementeres en pointer, som er usynlig for software, hver gang en sekvens er færdig. Pointeren holder styr på hvilket ADC12MEMx register konverteringen skal gemems i. Konvertering fortsætter indtil EOS nåes. Når dette sker er hele sekvensen blevet behandlet, da EOS er den sidste kontrol bit i konverterings processen Opsætning af ADC12 til Sharp GP2D12 Til konvertering af signalet fra en enkelt analog sensor, som konstant skal polles for at opdage forhindringer, ville vi vælge repeat-single-channel mode. Sensorens output sættes på eksempelvis channel A0 (P6.0) på MSP430. Da GP2D12 output på sit højeste når til ca. 2,5V bruges den interne referencegenerator til at danne en V REF + på 2,5V. Til sampling benyttes pulse sample mode (SHP=0), med en sample længde på 256 clock cycles (SHT0 = 8). ADC12MEM0 registeret overskrives automatisk ved hver konvertering, så i softwaren skal registeret blot aflæses med jævne mellemrum imens robotten kører. 53

54 4. Step 2: Kørsel uden om forhindringer 4.6 Software step 2 I step 2 tilføjes en sensor, monteret således robotten har mulighed for at stoppe før forhindringer. Dette er implementeret ved at lave et nyt interrupt, hvori en global variabel ændres når sensoren opfanger noget. På denne måde er det muligt i resten af softwaren at vente (vha. polling) på ændringer i denne. Når der opfanges et objekt som ikke flytter sig, vil robotten forsøge at køre uden om forhindringen Interrupts Når et objekt registreres af sensoren, genereres et interrupt, og funktionen der ses i listing 4.1 bliver kaldt. Denne funktion venter i et bestemt stykke tid, og såfremt sensoren stadig registrerer et objekt, tilføjes sensorens nummer til den globale variabel interrupts. Sensorerne er nummereret 1, 2, 4, 8... (1 2, 10 2, 100 2, ) således man kan AND e interrupts-variablen med sensorens nummer for at se om den blev aktiveret. Listing 4.1: Port 1 interrupt funktion 1 # pragma vector = PORT1_ VECTOR 2 interrupt void port_1 ( void ) { 3 4 unsigned int wait = 0; 5 while (( P1IN & 1)!= 0) { 6 for ( unsigned int i =0; i <5000; i ++); 7 wait ++; 8 if ( wait >= 50) { 9 interrupts = SENS_ EMERGENCYSTOP ; 10 break ; 11 } 12 } 13 P1IFG = 0; 14 } For at drage nytte af dette, er det nødvendigt hele tiden at tjekke om interrupts er ændret. Eksempel på dette kan ses i listing 4.2, hvor en stump kode fra funktionen waitforstep(..) er gengivet. 1 while (..){ 2 if ( interrupts!=0) break ; 3 } Listing 4.2: Polling for interrupts Hver gang løkken udføres, tjekkes værdien af interrupts, og hvis denne variabel ikke længere er 0, brydes der ud af løkken, og dispatch(..) skal nu håndtere dette Håndtering af interrupts For at få robotten til at køre, bruges funktionen drive(..), der kan få robotten til at køre frem, tilbage og rotere. 54

55 Software step 2 Foretager robotten en rotation, er interrupts slået fra, da robotten ikke kan køre ind i nye ting ved blot at dreje rundt om sig selv. Interrupts er derfor kun slået til når robotten bevæger sig frem og tilbage. Vil man have robotten til at køre 1 m fremad, kalder man drive(100), der omregner længden til et antal steps. drive(..) kalder waitforstep(steps) med det antal steps der skal køres, hvilket får MSP en til at vente indtil Timer A har sendt nok clock-impulser til de to L297-kredse (se afsnit 3.4 side 40 for beregning af antal steps). Hvis der kommer et interrupt mens waitforstep(..) kører, vil den stoppe, og returnere værdien af interrupts. Da vi kun har en sensor, skal drive(..) kun tjekke om waitforstep(..) returnerede 0. Hvis 0 ikke blev returneret, beregner drive(..) hvor mange cm der blev kørt, og returnerer denne afstand. Hvis der ikke kom et interrupt under drive(..) returneres 0. Kørsel uden om objekter dispatch(..) håndterer returværdien fra drive(..). Hvis denne er forskellig fra 0, logges interruptet og variablen interrupts nulstilles. avoid() bliver kaldt, for at lede robotten uden om forhindringen. Hvis dette fejler, sørger retrace() for at få robotten tilbage til den oprindelige forhindring. Funktionen dispatch(..) kan ses i listing 4.3 side 55. Listing 4.3: At køre uden om genstande 1 void dispatch ( unsigned short int events ) { 2 if ( events == 0) return ; 3 push ( log, I ); push ( log, interrupts ); // Log the interrupt 4 interrupts = 0; 5 if ( avoid ()!= 0) { 6 interrupts = 0; 7 retrace (); 8 } 9 } avoid() udfører (og logger) en foruddefineret sekvens af kommandoer: 1. Roter 90 med uret 2. Kør 50cm fremad 3. Roter 90 mod uret 4. Kør 100cm fremad 5. Roter 90 mod uret 6. Kør 50cm fremad 7. Roter 90 med uret Denne sekvens leder robotten højre om forhindringen. avoid() stopper hvis robotten møder en ny forhindring, og da alle handlinger er logget, er det muligt for retrace() at køre robotten tilbage til den oprindelige forhindring. 55

56 4. Step 2: Kørsel uden om forhindringer 4.7 Step 2 test I dette afsnit testes robotten med koden fra step 2. Der skal testes om sensoren opfanger objekter, og om robotten kan finde ud af at køre rundt om objekter vha. avoid()-funktionen. Hvis der stødes på endnu et objekt når robotten er på vej rundt om den første forhindring, skal retrace()-funktionen føre robotten tilbage til den første forhindring. Kildekoden findes på den vedlagte CD. Kravspecifikationen til step 2 var at robotten.. skal standse, hvis et objekt kommer i vejen, og afvente til objektet er flyttet... skal have en registreringsafstand på ca. 30 cm... skal holde styr på hvor længe den har holdt stille... skal efter et givent tidsrum forsøge at køre udenom objektet hvis det stadigvæk er i vejen. Beskrivelse Afstanden for sensorens registrering testes. Der ønskes en afstand på 30 cm. Resultat Den målte afstand er 32,5 cm, hvilket giver en fejlmargin på % = 8%. Dette er tilfredsstillende. Afstanden kan finjusteres vha. potmeteret på komperator kredsen. avoid()-funktionen testes ved at lade robotten køre mod en forhindring, som kan aktivere sensoren. Testen gik som planlagt og robotten kørte uden om en genstand på sin egen størrelse. Da hjulene ikke bremser efter kørsel, trillede robotten nogle få cm videre, hvilket gjorde kørslen mindre præcis. retrace()-funktionen testes på samme måde som avoid, her tilføjer man blot en forhindring foran robotten, når den prøver at køre uden om den første forhindring. Funktionen retrace() kørte robotten tilbage til udganspositionen, som den skulle. Der var dog en lille afvigelse, der skyldes den samme fejlkilde som ved avoid() funktionen De udførte tests viser at robotten opfylder alle kravene i kravspecifikationen. Dog venter robotten kun meget kort tid, ca. 2 sekunder, før den begynder at køre rundt om objektet. 56

57 Delkonklusion step Delkonklusion step 2 Step 2 gik ud på at gøre robotten i stand til at navigere udenom objekter. Til at opfange objekter benyttes en infrarød sensor, som gennem en komperator er forbundet til MSP430. Da vi påbegyndte projektet havde vi forestillet os, at robotten skulle følge en streg på gulvet. Derfor valgte vi til step 2 at bruge en komperator, så vi til step 3 havde ADC en tilgængelig til mere krævende opgaver. De udførte tests viser, at sensoren opfanger objekter som ønsket, og softwaren sætter robotten til at køre rundt om forhindringen i det foruddefinerede mønster. Undervejs i step 2 havde vi planer om at få robotten til at køre modsatte vej rundt om en forhindring, hvis det ikke lykkedes at køre højre om. Dette blev dog droppet, da vi fandt ud af at vi alligevel ikke ville kunne bruge denne funktion til noget i step 3. 57

58

59 kapitel 5 STEP 3: AUTONOM KØRSEL På nuværende stadie er vores robot i stand til at manøvrere frit rundt, og kan stoppe hvis den møder en forhindring. Robotten kan køre en forudprogrammeret rute, og prøve at køre uden om eventuelle forhindringer. I stedet for en forudprogrammeret rute skal robotten selv kunne navigere rundt, baseret på ordrer om hvor den skal køre hen. Derfor er det nødvendigt at finde en måde at repræsentere et lager på, og implementere en algoritme der er i stand til at finde ruter mellem punkter. Vi har valgt at repræsentere vores lager som et 2d-array, og bruge bredde-først søgning til at finde den korteste afstand mellem punkter. Seriel kommunikation bruges til at sende kommandoer til robotten. 5.1 Kravspecifikation step 3 Robotten skal.. kunne finde den korteste rute mellem to punkter i et koordinatsystem.. kunne finde en alternativ rute hvis den støder på en uforudset forhindring.. informere brugeren hvis ingen rute er mulig.. kunne modtage ordrer løbende 5.2 Software oversigt Dette afsnit giver et hurtigt overblik over de vigtigste funktioner i softwaren i step drive to wrapper(x, y, attempts) kalder drive to(x, y) indtil robotten når frem, dog højest attempts gange 2. drive to(x, y) kalder find route(start, end), der returnerer en rute, og kalder dernæst go(direction) for hvert skridt i ruten. 3. Møder robotten en forhindring i drive to(..), tilføjes denne forhindring til kortet, så en ny rute uden om forhindringen kan beregnes. Når kommandoer sendes til robotten serielt, tilføjes de til en kø, hvorefter de udføres i den modtagne rækkefølge. Tabel 5.1 på side 60 viser de kommandoer robotten genkender. Alle kommandoer robotten ikke genkender, omregnes til tal-værdier, således at et stort A bliver til 0, B bliver til 1, osv. Denne talværdi angiver hvilket felt robotten skal navigere til. Felterne nummereres fra 0, række efter række. Se listing 5.1 på side 60 for en illustration af nummereringen. 59

60 5. Step 3: Autonom kørsel Kommando Funktion w Kører fremad s Kører baglæns a Drejer til venstre d Drejer til højre Stopper robotten + Øger hastigheden - Mindsker hastigheden = Nulstiller hastigheden c Fjerner midlertidige forhindringer fra kortet Tabel 5.1: Kommandoer som robotten genkender Listing 5.1: Nummerering af felter Kommando-køen kan maksimalt indeholde 10 kommandoer ad gangen. 5.3 Navigation Det 2d-array vi bruger som kort har en x- og y-akse. (0,0) koordinaten ligger øverst til venstre, x vokser nedad, og y vokser mod højre i koordinatsystemet. Alle felter er kvadratiske, med længden angivet i cell size. Værdien 0 betyder at der intet er på feltet, mens alle andre værdier kendetegner en forhindring af en art. Som standard bruges # til at repræsentere en hylde. Se listing 5.2 for et eksempel # 0 # # 0 # # 0 # # 0 # 0 Listing 5.2: Eksempel på kort over et lager Det er nødvendigt at holde styr på robottens orientering, der gemmes som en tal-værdi i variablen direction. De fire primære retninger bliver nogle steder repræsenteret med bogstaver i stedet. Se tabel 5.2. Retning Talværdi Bogstav Forklaring Op 0 N North Højre 90 E East Ned 180 S South Venstre 270 W West Tabel 5.2: Robottens orientering 60

61 Bredde-først søgning Robottens aktuelle position gemmes i position, der er en node (se listing 5.3). 1 struct node { 2 int x; 3 int y; 4 }; Listing 5.3: struct node go(char direction) tager N/E/S/W som argument, og flytter robotten et felt i pågældende retning. Forskellen på den gamle og den nye retning findes, hvorefter et kald til (drive(..)) roterer robotten. Der tages højde for hvilken vej der er hurtigst at rotere. Efter rotationen bruges drive(..) til at køre robotten et felt fremad. Vha. gentagende kald til go(..) kan man køre den rute som bredde-først søgningen finder. drive to(..) kalder find route(node start, node end), der finder den korteste rute til målet. Ruten bliver gemt i den globale variabel route og længden af ruten returneres af find route(..). Pga. implementationsspecifikke detaljer returneres ruten i omvendt rækkefølge. Se afsnit 5.4 side 61 for detaljer omkring find route(..). 5.4 Bredde-først søgning Bredde-først søgning (BFS) kan bruges til at finde den korteste rute mellem to punkter i en graf. Vores 2d-array er en graf hvor der er forbindelse vandret og lodret mellem knuderne, uden wrap-around 1. BFS fungerer ved at man har en FIFO-kø 2, der til at starte med kun indeholder start-knuden. Vi har valgt at give start-knuden værdien H. Så længe der er elementer i køen, og en løsning ikke er fundet, gør algoritmen som følger: 1. Fjern det første element i køen 2. Stop, hvis dette element er slut-positionen 3. Undersøg de omkring-liggende elementer: Alle elementer med værdien 0 tilføjes bagerst i køen. De nye elementers værdi ændres så de viser retningen mod start-positionen. På denne måde undgår man at besøge det samme element flere gange, og det er muligt at følge stien baglæns fra slut til start Se listing 5.4 for en illustration af BFS, hvor start-positionen er øverst til venstre, og slut-positionen er nederst til højre. 1 Wrap around betyder at når man når enden af kortet, hopper man til det modsatte felt. 2 FIFO: First-In, First-Out, ligesom en kø i et supermarked. 61

62 5. Step 3: Autonom kørsel Listing 5.4: BFS illustreret. 1 1) H ) H W ) H W W # 0 # 0 N # 0 # 0 N # 0 # N # 0 # 0 0 # 0 # 0 0 # 0 # ) H W W W 0 5) H W W W W 6) H W W W W 8 N # N # 0 N # N # 0 N # N # N 9 N W N W N 0 0 N W N W 0 10 N # 0 # 0 N # 0 # 0 N # N # N N W ) H W W W W 8) H W W W W 9) H W W W W 14 N # N # N N # N # N N # N # N 15 N W N W N N W N W N N W N W N 16 N # N # 0 N # N # N N # N # N 17 N W N 0 0 N W N W 0 N W N W N Da alle besøgte knuders værdi viser hvilken retning man skal gå for at komme til start-positionen, er det til enhver tid muligt at finde tilbage fra en knude algoritmen har besøgt. For at finde tilbage, transformeres værdierne, og gemmes i en LIFO-kø 3. Transformeringen fungerer ved at E og W bliver byttet om, og lige så med N og S. Når ruten bliver læst i omvendt rækkefølge fra route, kommer elementerne i korrekt rækkefølge, klar til at blive udført af robotten. Se tabel 5.2 side 60 for at se hvilken retning man skal bevæge sig i, ud fra en knudes værdi. 5.5 Implementations-specifikke deltajer find route(..) virker med to slags destinationer; tomme- og fyldte felter. Tomt felt: En rute hen til feltet findes Fyldt felt: En rute til et tomt felt ved siden af destinationen findes På denne måde er det muligt at køre til bestemte felter, eller køre til det nærmeste sted hvor en hylde på et felt kan tilgåes. Er værdien i et felt 0, betragtes feltet som tomt. Alle andre værdier betyder at feltet indeholder noget. Gives et fyldt felt som destination kaldes funktionen node access(..), der finder de felter rundt om destinationen der er tomme. Se listing 5.5 for et eksempel, hvor feltet i midten er destinationen, og feltet til venstre og feltet under returneres. Feltet over og til højre for midten returneres ikke, da de ikke er tomme. 1 0 # # 2 0 # # Listing 5.5: Eksempel på kald til node access(..). 3 LIFO: Last-In, first-out de nyeste værdier fjernes først. 62

63 Analyse af bredde-først søgning Hver gang et element fra køen betragtes, undersøges om elementet er en af de mulige destinationer, der blev fundet af node access. Dette gøres med et kald til list contains(..). Er dette sandt, gennemløbes array et baglæns som beskrevet i afsnit 5.3. Er det nuværende felt ikke en gyldig destination, findes de omkringliggende felter med node access(..), og vha. node relationship(..) skrives værdier i de nye felter der peger tilbage mod starten. 5.6 Analyse af bredde-først søgning Det er vigtigt at ruter beregnes hurtigt, og at beregningsmåden skalerer til store lagre. Kørselstiden for BFS er i vores tilfælde O(n). n er antallet af felter på kortet. Der laves mange beregninger for hver knude, men alle disse beregninger sker et konstant antal gange, og kan dermed ignoreres. 1 int find_ route ( node start, node end ) { 2 unsigned int route_ ptr = 0, target_ count ; 3 if ( map [ end.x][ end.y] == 0) { 4 targets [0] = end ; 5 target_ count = 1; 6 } else { 7 target_ count = node_ access ( end, targets ); 8 } 9 10 unsigned short int queue_ head = 0; 11 unsigned short int queue_ tail = 0; 12 queue [ queue_ tail ++] = start ; node current_ node ; Initialisering. Uanset hvor stort kortet er, tager dette konstant tid. 1 while ( queue_ head < queue_ tail ) { 2 current_ node = queue [ queue_ head ++]; While-løkken kan gentages n-gange, altså en gang for hvert element i køen. 1 if ( list_ contains ( targets, target_count, current_ node )) { list contains(..) laver op til fire sammenligninger, men dette er uafhængigt af n. Gentages højest én gang per knude. Tidskompleksitet = 4n = O(n) sammenligninger her. 1 while ( map [ current_node.x][ current_node.y]!= H ) { 2 switch ( map [ current_node.x][ current_node.y]) { 3 [..] 4 } 5 } Da det er umuligt at konstruere en rute der besøger samme felt flere gange, kan dette højest gentages n gange. Tidskompleksitet = O(n) 63

64 5. Step 3: Autonom kørsel 1 node adjacent_ nodes [4]; 2 unsigned int adjacent_ node_ count = 3 node_ access ( current_node, adjacent_ nodes ); 4 5 for ( int i =0; i< adjacent_node_count ; i ++) { 6 char relationship 7 = node_ relationship ( current_node, adjacent_ nodes [ i ]); 8 map [ adjacent_nodes [i].x][ adjacent_nodes [i].y] 9 = relationship ; 10 queue [ queue_tail ++] = adjacent_nodes [i]; 11 } node access undersøger fire felter hver gang den kaldes. Tidskompleksitet = 4n = O(n) Den totale tidskompleksitet bliver da O(n), da det er det hurtigst voksende led. 5.7 Step 3 test I dette afsnit testes robotten med koden fra step 3. BFS algoritmen udsættes for en række situationer for at se om robotten reagerer som forventet. Kravspecifikationen til step 3 var at robotten skal:.. kunne finde den korteste rute mellem to punkter i et koordinatsystem.. kunne finde en alternativ rute hvis den støder på en uforudset forhindring.. informere brugeren hvis ingen rute er mulig.. kunne modtage ordrer løbende Til testene har vi lavet en bane med forhindringer (markeret med kryds) på et gulv, med størrelsen 5 x 5 felter. Hvert felt er 80 x 80cm stort. En skraldespand blev brugt til at illustrere en uventet forhindring. Der vil være en afvigelse, som resultat af at banen blev en smule skæv, og det er svært at placere robotten præcist i midten af et felt. I eksemplerne er H startpositionen, og X er destinationen. * indikerer den rute robotten valgte under testen, og? markerer en uventet forhindring som skal opfanges af sensoren En mulig rute Denne opstilling har kun en mulig rute som robotten kan køre. 1 X # 0 # 0 X # 0 # # 0 # 0 * # 0 # # H * * * # H 4 0 # # * * * 5 0 # 0 # 0 0 # 0 # 0 Listing 5.6: Kun en mulig rute. 64

65 Step 3 test Robotten kørte ruten som illustreret i listing 5.6. Afvigelsen kan ses på figur 5.1. Robotten sluttede i denne test ret tæt på centrum i feltet, men afvigelsen måles ikke da test opsætningen ikke er nøjagtig. Figur 5.1: Før og efter billede fra kørslen med en mulig rute Flere mulige ruter Målet med denne test er at vise at den korteste rute bliver valgt, når der er flere mulige ruter. 1 X # X # # 0 # 0 * # 0 # # H * * * # H 4 0 # # * * * # # 0 Listing 5.7: Flere mulige ruter. Testen forløb som planlagt, idét den korteste rute blev valgt Flere mulige ruter med forhindring Listing 5.8: Flere mulige ruter med en uforudset forhindring (* angiver den valgte rute mellem start (H) og slut (X).? angiver den nye forhindring.) 1 X # X # # 0 # 0 * # 0 # ? # H * 0? # H 4 0 # * # * * * # 0 * * * # 0 Robotten valgte samme rute som i listing 5.7, men måtte finde en ny rute da den fandt forhindringen. Den nye rute ses på listing 5.8. Da robotten kørte længere, og udførte flere rotationer end i tidligere forsøg, var afvigelsen større end før. Afvigelsen kan ses på figur

66 5. Step 3: Autonom kørsel Figur 5.2: Før og efter billeder fra test med flere mulige ruter og en uventet forhindring Forhindring der blokerer ruten Listing 5.9: En uforudset forhindring blokerer ruten, ingen løsning. (* angiver den valgte rute mellem start (H) og slut (X).? angiver den nye forhindring.) 1 X # X # # 0 # 0 0 # 0 # ? # H 0 0? # H 4 0 # # * * * 5 0 # 0 # 0 0 # 0 # 0 Robotten fandt en mulig rute, stødte på forhindringen, og gav op. Dette var at forvente, da ingen ruter eksisterer hen til destinationen. Se listing

67 Delkonklusion step Delkonklusion step 3 Det tredje step omhandler styring af robotten, således at den kan navigere autonomt i et koordinatsystem, og finde den korteste rute fra et punkt til et andet. Softwaren indeholder et 2D array der fungerer som et kort over lageret. Robotten modtager et koordinat via seriel kommunikation, og ud fra dette koordinat findes den korteste mulige rute. Sendes flere koordinater, ligges disse i en kø, så operationerne udføres i den rækkefølge de blev sendt. Den matematiske algoritme vi benytter os af til at finde den korteste rute kaldes Bredde-først søgning. Hvis robotten er på en rute og støder på en uventet genstand, plottes objektet ind i 2D arrayet, og en ny rute findes. De udførte tests viser, at robotten opfylder alle kravene i kravspecifikationen til step 3. Da vi alligevel ikke fik brug for yderligere sensorer i step 3, og dermed ikke havde fået brugt ADC en, har vi ændret på tilslutningen af sensoren. ADC en bruges nu til at aflæse signalet fra den analoge sensor, i stedet for at benytte den komperator kreds vi havde opbygget i step 2. 67

68

69 kapitel 6 KONKLUSION Formålet med dette projekt har været for medlemmerne af gruppen at få erfaring i brug af en microcontroller. For at gøre dette valgte vi at lave en prototype til en lagerrobot. I problemanalysen blev der opstillet 4 underpunkter (steps), hvor robotten startede simpelt og derefter blev udvidet med flere funktioner. De 4 steps var: 1. Lave en robot der er i stand til at køre vha. en mikroprocessor. 2. Sørge for at robotten ikke kolliderer eller kommer i karambolage med andre ting, baseret på input fra en eller flere sensorer. 3. Gøre robotten i stand til at navigere rundt på et lager. 4. Udstyre robotten med løftemekanisme. Det viste sig dog at vi ikke fik tid til at arbejde på step 4, men resten af punkterne har vi udført tilfredsstillende. Step 1 gik ud på at få robotten til at køre, og dette tog udgangsspunkt i en ramme med hjul, motorer og hardware fra et tidligere projekt af en anden gruppe studerende. Efter en del fejlsøgning og udskiftning i hardwaren, lykkedes det at få robotten til at køre tilfredsstillende. Da robotten er udstyret med step-motorer, kan vi for hvert hjul angive hvor mange steps der skal køres i en bestemt retning. I step 2 monterede vi en infrarød sensor på forsiden af robotten, som gav et signal til microcontrolleren 1 hvis der var noget foran robotten. Når et objekt registreres, sætter MSP en robotten til at køre i et foruddefineret mønster, i et forsøg på at komme uden om objektet. Støder robotten på endnu en forhindring i forbindelse med undvige-manøvren, vender den tilbage til positionen hvor den først opfattede en forhindring. Dette er muligt da robotten hele tiden holder styr på hvor langt den har kørt, således at den bare skal køre ligeså langt i modsatte retning, for at komme tilbage til udgangspunktet. Da vi s- tartede på projektet havde vi en forventning om, at robotten i step 3 skulle navigere rundt på lageret ved at følge streger på gulvet. Hvis vi havde holdt fast i dette, ville vi kunne bygge videre på softwaren fra step 2, således at robotten kører uden om et objekt og finder tilbage til guide -stregen. Vi valgte at lave step 3 på en anden måde, hvilket resulterede i at der var meget af den software vi havde udarbejdet til step 2 som ikke kunne genbruges til step 3. Til step 3 skulle vi få robotten til at navigere autonomt rundt på et lager. Vi valgte at løse dette ved at give robotten et kort over lageret, for at holde styr på hvor robotten befinder sig. 1 Texas Instruments MSP430 69

70 6. Konklusion Med seriel kommunikation kan robotten modtage ordrer, som ligges i en kø, og udføres en efter en. Møder robotten en forhindring, prøver den at finde den korteste alternative rute, og giver op hvis ingen alternativ rute eksisterer. 70

71 kapitel 7 LITTERATUR [1] Connexions. Matlab eq: Background on equalization, URL http: //cnx.org/content/m15655/latest/. [2] National Semiconductor Corporation. 3-Terminal Adjustable regulator, [3] Eric. Infrared sensors, URL member_tutorials/node/71. [4] Ericsson. Industrial circuits application note - stepper motor basics. [5] Acroname Inc. Sharp ir rangers information, URL acroname.com/robotics/info/articles/sharp/sharp.html#e30. [6] Texas Instruments. Dual Differential Comparators, [7] Texas Instruments. MSP430x13x, MSP430x14x Mixed Signal Microcontroller, [8] Texas Instruments. MSP430x1xx Family User s Guide, [9] Texas Instruments. High-Voltage Hight-Current Darlington Transistor Array, [10] Mariss. Advantages & disadvantages of stepper motors & dc servo motors. URL systemdesign/stepper_dcservo.html. [11] SGS-Thomson Microelectronics. The L297 Stepper Motor Controller, [12] Philips. HEX inverting buffers, [13] Samsung. N-Channel Power Mosfets, [14] Eric Seale. Dc motors, how they work, URL solarbotics.net/starting/200111_dcmotor/200111_dcmotor2.html. [15] Sharp. General purpose type distance measuring sensors, [16] S. W. SMITH. (2003) digital signal processing - a practical guide for engineers and scientists. [17] Andrew S. Tanenbaum. Structured computer organization, fifth edition, [18] Colorado State University. Mechatronics and measurement systems (kursus hjemmeside), URL mechatronics/figures/8-3.gif. [19] Vexta. DC Stepping Motors (PH268-E2.3 stepper motor datasheet). 71

72

73 kapitel 8 APPENDIX 8.1 Kredsløbsdiagram 73

74 8. Appendix 74 Figur 8.1: Det komplette kredsløb

75

76 8. Appendix 8.2 Billeder af hardware 76

77 Billeder af hardware Figur 8.2: Billede af L297 kredsen Figur 8.3: Billede af effektforstærker 77

Computerens Anatomi. Af Martin Arnetoft

Computerens Anatomi. Af Martin Arnetoft Computerens Anatomi Af Martin Arnetoft Moores lov Moores lov siger, at antallet af transistorer på et stykke hardware over 18 eller 24 måneder fordobles. Denne lov bruges til at beskrive udviklingen indenfor

Læs mere

System Arkitektur og Integration

System Arkitektur og Integration Mikael Svenstrup System Arkitektur og Integration 1/24 System Arkitektur og Integration MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup System Arkitektur og Integration 2/24 Tidligere har i

Læs mere

Datamaters arkitektur og programmering

Datamaters arkitektur og programmering Mikael Svenstrup Datamaters arkitektur og programmering 1/24 Datamaters arkitektur og programmering MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup Datamaters arkitektur og programmering 2/24

Læs mere

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!) MHz KIT Rev: /- Det er ikke tilladt, at man bare udsender radiobølger på den frekvens, man ønsker. Forskellige frekvenser er udlagt til forskellige formål. Nogle til politiet, militæret, FM-radio-transmission,

Læs mere

Indholdsfortegnelse :

Indholdsfortegnelse : Rapporten er udarbejdet af Daniel & Kasper D. 23/1-2001 Indholdsfortegnelse : 1.0 STEPMOTEREN : 4 1.1 Stepmotorens formål : 4 1.2 Stepmotorens opbygning : 4 2.0 PEEL-KREDSEN 4 2.1 PEEL - Kredsen Generelt

Læs mere

Strømforsyning +/- 12V serieregulator og 5V Switch mode

Strømforsyning +/- 12V serieregulator og 5V Switch mode Udarbejdet af: +/- 12V serieregulator og 5V Switch mode Side 1 af 15 Udarbejdet af: Komponentliste. B1: 4 stk. LN4007 1A/1000V diode D1: RGP30D diode Fast Recovery 150nS - 500nS, 3A 200V C1 C3 og C4: 100nF

Læs mere

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys! Og der blev lys! OPGAVEFORMULERING:... 2 DESIGN AF SEKVENS:... 3 PROGRAMMERING AF PEEL KREDS... 6 UDREGNING AF RC-LED CLOCK-GENERAOR:... 9 LYSDIODER:... 12 KOMPONENLISE:... 13 DIAGRAM:... 14 KONKLUSION:...

Læs mere

Elektronikken bag medicinsk måleudstyr

Elektronikken bag medicinsk måleudstyr Elektronikken bag medicinsk måleudstyr Måling af svage elektriske signaler Indholdsfortegnelse Indholdsfortegnelse... 1 Introduktion... 1 Grundlæggende kredsløbteknik... 2 Ohms lov... 2 Strøm- og spændingsdeling...

Læs mere

DC-Motor Controller. Brugermanual

DC-Motor Controller. Brugermanual Forside Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK DC-Motor Controller Brugermanual Firmware V4.00 Produkt indhold 1 styreboks til styring af 1 DC-motor. 1 strømforsyning 100 240 volt

Læs mere

Projekt - RoboNet Del Journal.

Projekt - RoboNet Del Journal. Projekt - RoboNet Del Journal. A/D Konvertering. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, a Erhvervsakademiet Fyn Udarbejdet i perioden:

Læs mere

Opgavesæt udviklet til kursus 48115. Grundlæggende elektronik på mobile maskiner 2. Udviklet i 2015

Opgavesæt udviklet til kursus 48115. Grundlæggende elektronik på mobile maskiner 2. Udviklet i 2015 Opgavesæt udviklet til kursus 48115 Grundlæggende elektronik på mobile maskiner 2 Udviklet i 2015 Ministeriet for Børn, Undervisning og Ligestilling (april, 2016). Materialet er udviklet af Metalindustriens

Læs mere

Vejledning til varmevekslerstyring SILVER C RX, RECOnomic str. 100/120, RECOsorptic str. 50-120

Vejledning til varmevekslerstyring SILVER C RX, RECOnomic str. 100/120, RECOsorptic str. 50-120 Vejledning til varmevekslerstyring SILVER C RX, RECOnomic str 100/120, RECOsorptic str 50-120 1 Generelt Varmevekslerstyringen er et styresystem til stepmotor, 380 W Det er beregnet til nøjagtig og lydsvag

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

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

Undervisningsmateriale til AMU kursus 48114, Grundlæggende elektronik på mobile maskiner, 1. Udarbejdet i 2015

Undervisningsmateriale til AMU kursus 48114, Grundlæggende elektronik på mobile maskiner, 1. Udarbejdet i 2015 Undervisningsmateriale til AMU kursus 48114, Grundlæggende elektronik på mobile maskiner, 1 Udarbejdet i 2015 Emneoversigt/forslag til rækkefølge Opgave 1. Grundlæggende el: 2 lektioner Grundlæggende begreber

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

Drejeskive fra Märklin/Fleischmann

Drejeskive fra Märklin/Fleischmann Drejeskive fra Märklin/Fleischmann Märklin og Fleischman har en fælles drejeskive med op til 48 tilslutningsspor. Drejeskiven har et mekanisk låsesystem der bevirker at broen kan stoppe præcis ud for tilslutningssporet.

Læs mere

NORDISK CONTROL A/S. FUNKTIONSBESKRIVELSE AF PORTSTYRING NC6005 3 X 400V 50Hz

NORDISK CONTROL A/S. FUNKTIONSBESKRIVELSE AF PORTSTYRING NC6005 3 X 400V 50Hz NORDISK CONTROL A/S FUNKTIONSBESKRIVELSE AF PORTSTYRING NC6005 3 X 400V 50Hz Portstyringen NC6005 er en CE-mærket universal 3-knaps styring interface for ABDL-Anlæg. Af primære funktioner kan nævnes: hukommelse

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

Manual til Dæk - 291 Nimalift.dk Manual, installations- og monteringsvejledning

Manual til Dæk - 291 Nimalift.dk Manual, installations- og monteringsvejledning Nimalift 2014 Manual til Dæk - 291 Nimalift.dk Manual, installations- og monteringsvejledning Nimalift.dk, Søgårdparken 20, 7250 Hejnsvig 2 FORSIKRING)OM)OVERENSSTEMMELSE)) Søgårdparken20 7250Hejnsvig

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

S26 MOTOR Original brugermanual

S26 MOTOR Original brugermanual S26 MOTOR Original brugermanual Indhold 1. Indledning 1 2. Liste over nødvendigt værktøj 1 3. Sikkerhedspåbud 1 4. Motor montering 2 4.1. Instruktion før montering 2 4.2. Samling af skinne 3 4.3. Opsætning

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

Hold 6 Tirsdag. Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe) Dato for aflevering: 29.

Hold 6 Tirsdag. Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe) Dato for aflevering: 29. ELA journal: Øvelse 3 Grundlæggende Op. Amp. Koblinger. Dato for øvelse:. nov. 00 & 9. nov. 00 Hold 6 Tirsdag Kristian Krøier, Jacob Christiansen & Thomas Duerlund Jensen Fag: ELA Lærer: Jan Petersen (JPe)

Læs mere

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner. Tams Elektronik LD-G-3 / LD-W-3 (1) Lokomotivdekoder LD-G-3 / LD-W-3 i Märklin-Motorola format Denne oversættelse omfatter monterings- og anvendelsesvejledningerne til LD-G-3 / LD-W-3 dekoderen. Den originale

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

NMT - /40, 60, 80 NMT ER - /40, 60, 80 EGHN SMART - /60

NMT - /40, 60, 80 NMT ER - /40, 60, 80 EGHN SMART - /60 NMT - /40, 60, 80 NMT ER - /40, 60, 80 EGHN SMART - /60 Instruktion Installation 7340041 IMP Pumper erklære at disse produkter er i overensstemmelse med følgende EU-direktiver: CE Overensstemmelseserklæring

Læs mere

Dansk Mink Papir. Teknisk brugermanual

Dansk Mink Papir. Teknisk brugermanual Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge

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

Betjeningsanvisning til model KCVR9NE Installationsanvisninger:

Betjeningsanvisning til model KCVR9NE Installationsanvisninger: Betjeningsanvisning til model Installationsanvisninger: Anvisninger til udtagelse af fedtfilter. Øverste udtagelige rude Nederste udtagelige rude 1) Faser til udtagning af øverste rude: NB: Gå frem på

Læs mere

Temperaturmåler. Klaus Jørgensen. Itet. 1a. Klaus Jørgensen & Ole Rud. Odense Tekniskskole. Allegade 79 Odense C 5000 28/10 2002.

Temperaturmåler. Klaus Jørgensen. Itet. 1a. Klaus Jørgensen & Ole Rud. Odense Tekniskskole. Allegade 79 Odense C 5000 28/10 2002. Temperaturmåler Klaus Jørgensen Klaus Jørgensen & Ole Rud Odense Tekniskskole Allegade 79 Odense C 5000 28/10 2002 Vejleder: PSS Forord.: Denne rapport omhandler et forsøg hvor der skal opbygges et apparat,

Læs mere

AGV Kursus August 1999

AGV Kursus August 1999 AGV Kursus August 1999 Dato: 26.08.99 Morten Nielsen Daniel Grolin Michael Krag Indledning: Princippet bag en AGV (Autonomous Guided Vehicle) er at få et køretøj til at bevæge sig rundt i nogle omgivelser,

Læs mere

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER GA 1000

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER GA 1000 INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER GA 1000 INSTALLATIONS MANUALEN SKAL GENNEMLÆSES OMHYGGELIG FØR IBRUGTAGNING ADVARSEL FOR SIKKER INSTALLATION Inden installation af automatikken skal balance fjederen

Læs mere

Betjeningsvejledning Elma 318 Mini automultimeter

Betjeningsvejledning Elma 318 Mini automultimeter Betjeningsvejledning Elma 318 Mini automultimeter El.nr. 63 98 910 288 BM318 Side 2 INDHOLDSFORTEGNELSE INDHOLDSFORTEGNELSE...2 1. SIKKERHED... 2 2. INTRODUKTION... 4 3. Beskrivelse... 5 3-1 Panel beskrivelse...

Læs mere

Switchmode Powersupply. Lasse Kaae 2009 Juni

Switchmode Powersupply. Lasse Kaae 2009 Juni Switchmode Powersupply Lasse Kaae 2009 Juni Agenda Teori (Mandag) Pspice simulering (Mandag) Bygge SPS (Tirsdag) Fejlfinding på produkter (Onsdag-Torsdag) EMC (Torsdag) Gennemgang af PSP-diagrammer (Fredag)

Læs mere

Ombygning af PC strømforsyninger

Ombygning af PC strømforsyninger Ombygning af PC strømforsyninger Jørgen Kragh OZ7TA Rev. 18. marts 2009 Hvad skal vi høre om? PC strømforsyningens virkemåde AT og ATX forsyninger Ombygningen Højere strøm eller spænding Omvikling Støjer

Læs mere

Genius laderegulator Monterings og brugervejledning

Genius laderegulator Monterings og brugervejledning Genius laderegulator Monterings og brugervejledning Laderegulatorens opbygning Genius er en avanceret laderegulator for solceller/solpaneler der kontroller, overvåger og styrer indladning og afladning

Læs mere

Computerens Anatomi Af Mathias og Mark

Computerens Anatomi Af Mathias og Mark Computerens Anatomi Af Mathias og Mark Planlægning af projekt Case Størstedelen af nutidens unge har deres egen smartphone, computer og fjernsyn. Computere i alle afskygninger bliver fortsat en større

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

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm. Computer Literacy Computer Literacy handler om at forstå hvad computer (hardware) og software kan gøre. Denne præsentation fokuserer kun på hardware februar 2002 Computerliteracy -hardware (15 dias) 1

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

DGMF Kursus i Digitalcentralen. Rev. 19 / 11-2009 Poul Erik Christiansen. DiMAX 1200Z Digitalcentral

DGMF Kursus i Digitalcentralen. Rev. 19 / 11-2009 Poul Erik Christiansen. DiMAX 1200Z Digitalcentral DGMF Kursus i Digitalcentralen. Rev. 19 / 11-2009 Poul Erik Christiansen DiMAX 1200Z Digitalcentral Funktioner i DiMAX -valgfri Strømstyrke 4, 7, 12 Amp. -separat programmerings udtag -spændingsbegrænsning

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

Side 1. Installationsvejledning for. systemet. Version 1 December 2004

Side 1. Installationsvejledning for. systemet. Version 1 December 2004 Side 1 Installationsvejledning for µ-pc systemet µ-pc Version 1 December 2004 Side 2 µ-pc systemet µ-pc systemet er opbygget af moduler som vist på figur 1. Hvert modul består af en kasse med stikforbindelser,

Læs mere

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONS MANUALEN SKAL GENNEMLÆSES OMHYGGELIG FØR IBRUGTAGNING ADVARSEL FOR SIKKER INSTALLATION Inden installation af automatikken skal balance fjederen på

Læs mere

MP3 player med DMX interface.

MP3 player med DMX interface. Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK MP3 player med DMX interface. Funktion: En avanceret Mp3spiller med forskellige styringsmuligheder, velegnet til brug i museer, teatre, udstillinger

Læs mere

Opgavesæt om Gudenaacentralen

Opgavesæt om Gudenaacentralen Opgavesæt om Gudenaacentralen ELMUSEET 2000 Indholdsfortegnelse: Side Gudenaacentralen... 1 1. Vandet i tilløbskanalen... 1 2. Hvor kommer vandet fra... 2 3. Turbinerne... 3 4. Vandets potentielle energi...

Læs mere

El-lære. Ejendomsservice

El-lære. Ejendomsservice Ejendomsservice El-lære Indledning 1 Jævnspænding 2 Vekselspænding 3 Transformator 6 Husinstallationer 7 Fejlstrømsafbryder 9 Afbryder 10 Stikkontakt 10 Stikpropper med jord 11 Elektrisk effekt og energi

Læs mere

Digital tæller Programerbar for MIX magnetisk målebånd

Digital tæller Programerbar for MIX magnetisk målebånd SERIE Z-20E.SN005 Digital tæller Programerbar for MIX magnetisk målebånd ELGO - ELECTRIC Gerätebau und Steuerungstechnik GMBH D - 78239 Rielasingen, Postfach 11 30, Carl - Benz - Straße 1 Telefon 07731

Læs mere

Projekt. HF-forstærker.

Projekt. HF-forstærker. Projekt. HF-forstærker. Rapport. Udarbejdet af: Klaus Jørgensen. Gruppe: Brian Schmidt, Klaus Jørgensen Og Morten From Jacobsen. It og Elektronikteknolog. Erhvervsakademiet Fyn. Udarbejdet i perioden:

Læs mere

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4. APPETITVÆKKEREN OZ6YM, Palle A. Andersen Efteråret 2017 Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4. DEMO-video

Læs mere

1 Titelblad. Synopsis Denne rapport omhandler et autonomt robotsystem bygget op omkring microcontrolleren MSP430 fra Texas Instruments.

1 Titelblad. Synopsis Denne rapport omhandler et autonomt robotsystem bygget op omkring microcontrolleren MSP430 fra Texas Instruments. 1 Titelblad P3-projekt: Robot til autonom husovervågning Gruppe: DE3-3-e08 Vejleder: Mikael Svenstrup Synopsis Denne rapport omhandler et autonomt robotsystem bygget op omkring microcontrolleren MSP430

Læs mere

uprocessorens hardware

uprocessorens hardware uprocessorens hardware 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed gemmes i en række registre. Når et tal skal hentes eller

Læs mere

ELMA BM 201/202 Side 1

ELMA BM 201/202 Side 1 ELMA BM 201/202 Side 1 INDHOLDSFORTEGNELSE ELMA BM 201/202 Side 2 INDHOLDSFORTEGNELSE... 2 1. SIKKERHED... 3 Beskrivelse af IEC1010 overspændings kategori... 3 OVERSPÆNDINGS KATEGORI I... 3 OVERSPÆNDINGS

Læs mere

Anpartsselskabet BG Teknik Århus Grenåvej 148 DK-8240 Risskov Tel. +45 8741 8010 Fax. +45 8617 4444 http://www.bgteknik.dk E-mail: info@bgteknik.

Anpartsselskabet BG Teknik Århus Grenåvej 148 DK-8240 Risskov Tel. +45 8741 8010 Fax. +45 8617 4444 http://www.bgteknik.dk E-mail: info@bgteknik. Værd at vide om Side 1 af 6 fra 12volt eller 24volt batterispænding til 230volt AC Anpartsselskabet BG Teknik Århus Grenåvej 148 DK-8240 Risskov Tel. +45 8741 8010 Fax. +45 8617 4444 http://www.bgteknik.dk

Læs mere

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Afrunding af OZ3VB's program Fra "almindelig C" til "microcontroller C" Lighederne

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

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

X88MV. Manual Version 1.26

X88MV. Manual Version 1.26 X88MV Manual Version 1.26 X88MV er udviklet til styring/fjernstyring af markvanding. Hurtig montering. Fleksibel. Hurtig. Kompakt. Billig. Intet abonnement. Indbygget timetæller. Kan køre på taletidskort.

Læs mere

INSTALLATIONS GUIDE. Air 4920 Trådløst access point FIBERBREDBÅND TV TELEFONI

INSTALLATIONS GUIDE. Air 4920 Trådløst access point FIBERBREDBÅND TV TELEFONI INSTALLATIONS GUIDE Air 4920 Trådløst access point FIBERBREDBÅND TV TELEFONI KÆRE KUNDE Med dette sæt trådløse access points får du et af markedets bedste produkter til at sikre optimal WiFi-dækning i

Læs mere

INSTRUKTION. Bernard el-aktuator

INSTRUKTION. Bernard el-aktuator INSTRUKTION IN113, Nr. B104DKE Bernard el-aktuator Type SQ100, SQ250 SQ400, SQ600, SQ1000 Indhold Opstart... 2 Normal lukkeretning... 3 Komplet leverance... 3 1. Indstilling af mekaniske anslag, 90 -drejende...

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

Alarmsystem. INSTALLATIONSVEJLEDNING Kun for kvalificerede teknikere

Alarmsystem. INSTALLATIONSVEJLEDNING Kun for kvalificerede teknikere 10034576 Alarmsystem INSTALLATIONSVEJLEDNING Kun for kvalificerede teknikere ADVARSEL! Producenten fralægger sig ethvert ansvar for og giver ingen garanti i forbindelse med fejl og fejlfunktioner, der

Læs mere

UniLock System 10. Manual til T550 Secure Radiomodtager og håndsender. Version 2.0 Revision 140220

UniLock System 10. Manual til T550 Secure Radiomodtager og håndsender. Version 2.0 Revision 140220 UniLock System 10 Manual til T550 Secure Radiomodtager og håndsender Projekt PRJ124 Version 2.0 Revision 140220 T550 Secure er en højsikker trådløs UHF-læser der benyttes, hvor det ønskes at oplåse på

Læs mere

SunFlux Varenr.: 03104

SunFlux Varenr.: 03104 SunFlux Varenr.: 03104 Guide og specifikationer for SunFlux Master Sensor LED loftlampe m. RF mikrobølge sensor & Master-Master trådløst netværk SunFlux Master Sensor Lampe V.2. er fjerde generations mikrobølgesensor

Læs mere

Gudenåcentralen. vand elektricitet energi klima. Opgaver for gymnasiet, HF og HTX

Gudenåcentralen. vand elektricitet energi klima. Opgaver for gymnasiet, HF og HTX Gudenåcentralen vand elektricitet energi klima Opgaver for gymnasiet, HF og HTX Forord Det følgende er en opgave om Gudenaacentralen, der er Danmarks største vandkraftværk. Værket ligger ved Tange Sø.

Læs mere

Digital Drejeskive Decoder til 7286 / 7686

Digital Drejeskive Decoder til 7286 / 7686 Digital Drejeskive Decoder til 7286 / 7686 7687 Marklin 7687 Drejeskive Decoderen kan anvendes på følgende måder til etablering af Styring til Drejeskiven fra Centralstation 2. (Dette dokument tager udgangspunkt

Læs mere

Computerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/3 2015. Planlægning af kommunikationsvalg og medieprodukt.

Computerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/3 2015. Planlægning af kommunikationsvalg og medieprodukt. Computerens Anatomi Planlægning af kommunikationsvalg og medieprodukt. Vi startede med at snakke om modtager, afsender og budskab og blev enige om at det skulle være simpelt for at få modtagernes interesse.

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

Samfundets elektriske energiforsyning

Samfundets elektriske energiforsyning Samfundets elektriske energiforsyning Niveau: 9. klasse Varighed: 8 lektioner Præsentation: I forløbet Samfundets elektriske energiforsyning arbejdes der med induktion, transformation og kraftværkers og

Læs mere

Metal Detektor. HF Valgfag. Rapport.

Metal Detektor. HF Valgfag. Rapport. Metal Detektor. HF Valgfag. Rapport. Udarbejdet af: Klaus Jørgensen. Gruppe: Klaus Jørgensen Og Morten From Jacobsen. It- og Elektronikteknolog. Erhvervsakademiet Fyn Udarbejdet i perioden: 9/- /- Vejledere:

Læs mere

1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4

1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4 Indholdsfortegnelse 1 System oversigt.. 3 1.1 Enheder... 3 1.2 Prioritering af signaler... 4 2 Installation 5 2.1 Kontrol Enhed. 5 2.1.1 Tilslutning af forsyning... 5 2.1.2 Tilslutning af højttalere...

Læs mere

TILSLUTNINGSANVISNING

TILSLUTNINGSANVISNING TILSLUTNINGSANVISNING STYREENHED TIL ROTERENDE VARMEVEKSLERE MiniMax V / VK Revideret 2014-10-06 Version 1.5.1 F21037901DK Overensstemmelseserklæring Producentens forsikring om produktets overensstemmelse

Læs mere

LUCAS JÆVNSTRØMS DYNAMOER

LUCAS JÆVNSTRØMS DYNAMOER Nedenstående er inspireret af en artikel sakset fra internettet, af en lykkelig selvlært BSA entusiast. LUCAS JÆVNSTRØMS DYNAMOER UDVIKLET AF JOSEPH LUCAS - MANDEN SOM OPFANDT MØRKET En ting som uretmæssigt

Læs mere

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner Det digitale niveau Niveauer af abstrakte maskiner Mikroarkitektur: Mic-1 Digitale kredsløb Logiske tilstande: 0 (0-1 V), 1 (2-5 V) Mikroarkitektur: Mic-1 Kombinatoriske kredsløb Logiske tilstande: 0 (0-1

Læs mere

TDC HomeBox VDSL. Installationsvejled ning til dig med telefoni og bredbånd

TDC HomeBox VDSL. Installationsvejled ning til dig med telefoni og bredbånd TDC HomeBox VDSL Installationsvejled ning til dig med telefoni og bredbånd 2 Udstyr fra TDC Følgende skal være i kassen, du har modtaget fra TDC: TDC HomeBox VDSL Installations vejled ning til dig med

Læs mere

EC-VENTILATORER: ENERGIBESPARENDE, EFFEKTIVE OG EKSTREMT LYDSVAGE

EC-VENTILATORER: ENERGIBESPARENDE, EFFEKTIVE OG EKSTREMT LYDSVAGE EC-VENTILATORER: ENERGIBESPARENDE, EFFEKTIVE OG EKSTREMT LYDSVAGE EC-ventilatorer hjælper dig med at spare energi, penge, tid og plads. Dertil kommer integreret trinløs, støjsvag hastighedskontrol, lang

Læs mere

Quickstart Guide. Dansk

Quickstart Guide. Dansk Quickstart Guide Dansk Support: For produktregistrering, besøg venligst ION hjemmeside: ionaudio.com For de seneste oplysninger om dette produkt, kan du besøge hjemmesiden ionaudio.com/blockpartylive.

Læs mere

SMD10 SMD11 SMD15 SMD30

SMD10 SMD11 SMD15 SMD30 SMD10 SMD11 SMD15 SMD30 Step Motor Driver Bruger Manual JVL Industri Elektronik A/S - Januar 1992 LB0009-02DK Revideret 3.7.95 Indhold 1.1 INDLEDNING 2 1.2 TYPEOVERSIGT 3 1.3 TILSLUTNINGSMULIGHEDER 4 1.4

Læs mere

Trust Energy Protector 325/525. Brugervejledning

Trust Energy Protector 325/525. Brugervejledning Trust Energy Protector 325/525 Brugervejledning Ophavsret/Copyright Tillige er det forbudt at reproducere eller overføre dele af denne brugsanvisning under enhver form og med ethvert middel, elektronisk

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

TDC HomeBox ADSL. Installationsvejled ning til dig med bredbåndstelefoni og alm. telefonstik

TDC HomeBox ADSL. Installationsvejled ning til dig med bredbåndstelefoni og alm. telefonstik TDC HomeBox ADSL Installationsvejled ning til dig med bredbåndstelefoni og alm. telefonstik Benyttes sammen med Windows XP styresystem. Version 6,0 Din TDC HomeBox er forsynet med muligheden Når du manuelt

Læs mere

Beskrivelse af tryghedsalarmen

Beskrivelse af tryghedsalarmen Denne vejledning fungerer som en hurtig og nem brugervejledning på dansk, oversat af GSM Teknik ApS. Skal man bruge alle detaljer, henvises til den engelske vejledning, der medfølger i kassen. Beskrivelse

Læs mere

El-tilslutning og programmering af aktuator

El-tilslutning og programmering af aktuator INSTALLATIONS- OG DRIFTSVEJLEDNING FlowCon SM 15-40mm, 1/2-1 1/2 Monter FlowCon SM-ventilen i enhedens fremløbs- eller returledning. Det anbefales, at der monteres en sigte foran ventilhuset for at forhindre

Læs mere

Gateway MP til Modbus RTU. Alle BELIMO motorer med MP-Bus kan tilsluttes til MP-siden af UK24MOD. Interface MP / Modbus RTU

Gateway MP til Modbus RTU. Alle BELIMO motorer med MP-Bus kan tilsluttes til MP-siden af UK24MOD. Interface MP / Modbus RTU Gateway MP til Modbus RU. Alle BELIMO motorer med MP-Bus kan tilsluttes til MP-siden af. Interface MP / Modbus RU ilslutning af MP / MF(2) motorer og BF-opLine motorer til Modbus RU Op til 8 motorer og

Læs mere

Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK. AC Motor Controller 370W. Brugermanual

Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK. AC Motor Controller 370W. Brugermanual Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK AC Motor Controller 370W Brugermanual WWW.WAHLBERG.DK TELEPHONE +45 86 18 14 20 CELL PHONE +45 40 52 20 88 EMAIL: mads@wahlberg.dk Marts

Læs mere

8. Jævn- og vekselstrømsmotorer

8. Jævn- og vekselstrømsmotorer Grundlæggende elektroteknisk teori Side 43 8. Jævn- og vekselstrømsmotorer 8.1. Jævnstrømsmotorer 8.1.1. Motorprincippet og generatorprincippet I afsnit 5.2 blev motorprincippet gennemgået, men her repeteres

Læs mere

SSI GSM PORT kontrol brugervejledning. SSI GSM PORT brugervejledning V1.2

SSI GSM PORT kontrol brugervejledning. SSI GSM PORT brugervejledning V1.2 1 13.04.2015 SSI 6000.0410 SSI 6000.0410 GSM PORT brugervejledning V1.2 Port / Dør åbner via telefon opkald eller SMS - op til 30 brugere SSIHuset Svane Electronic Arildsvej 27, Gråmose, 7442 Engesvang

Læs mere

EDR Frederikssund afdeling Almen elektronik kursus. Afsnit 9-9B-10. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG Formand

EDR Frederikssund afdeling Almen elektronik kursus. Afsnit 9-9B-10. EDR Frederikssund Afdelings Almen elektronik kursus. Joakim Soya OZ1DUG Formand Afsnit 9-9B-10 EDR Frederikssund Afdelings Joakim Soya OZ1DUG Formand 1 Opgaver fra sidste gang Pico, nano, micro, milli,, kilo, mega Farvekode for modstande og kondensatorer. 10 k 10 k m A Modstanden

Læs mere

APPLICATION SHEET Juli

APPLICATION SHEET Juli Indholdsfortegnelse 1. Beskrivelse 2. Anvendelse - Data 3. Valg af produkt og dimensionering 4. Motovario løsning 1. Beskrivelse Skærmene til cricketbaner er en del af det nødvendige udstyr til cricketspillet.

Læs mere

1. Hovedramme 2. Bag stabilisator 3. For stabilisator 4. Cykelstyrsstang 5. Cykelstyr 6. Computer 7. Sædestang 8. Sæde 9. Pedaler 10.

1. Hovedramme 2. Bag stabilisator 3. For stabilisator 4. Cykelstyrsstang 5. Cykelstyr 6. Computer 7. Sædestang 8. Sæde 9. Pedaler 10. 1. Hovedramme 2. Bag stabilisator 3. For stabilisator 4. Cykelstyrsstang 5. Cykelstyr 6. Computer 7. Sædestang 8. Sæde 9. Pedaler 10. Plastik beslag 11. Adapter (6VDC, 500mA) M8x70 bolt (4)-4 M8x15mm skrue

Læs mere

Hjertets elektriske potentialer og målingen af disse

Hjertets elektriske potentialer og målingen af disse Hjertets elektriske potentialer og målingen af disse Indholdsfortegnelse Indholdsfortegnelse... 1 Introduktion... 1 Grundlæggende kredsløbteknik... 1 Ohms lov... 2 Strøm- og spændingsdeling... 4 Elektriske

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

Automatisering Af Hverdagen

Automatisering Af Hverdagen Automatisering Af Hverdagen Programmering - Eksamensopgave 10-05-2011 Roskilde Tekniske Gymnasium (Kl. 3,3m) Mads Christiansen & Tobias Hjelholt Svendsen 2 Automatisering Af Hverdagen Indhold Introduktion:...

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

Applikationen Klip (dansk)

Applikationen Klip (dansk) Applikationen Klip (dansk) PMH Version 3.0-0315 Indhold 1 Manual 2 1.1 Vejledning................................. 2 1.1.1 Starten.............................. 8 1.1.2 Strækkene mellem posterne...................

Læs mere

Øvelse. Øvelse. D.1 CMOS-øvelse. Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1:

Øvelse. Øvelse. D.1 CMOS-øvelse. Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1: D.1 CMOS-øvelse Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1: A): Opbyg flg. kredsløb: Tilslut til 12 Volt. De to indgange er kortsluttede, og forbundet til en ledning

Læs mere

Compact Trappelift. Brugsanvisning. Juni 04

Compact Trappelift. Brugsanvisning. Juni 04 Brugsanvisning Compact Trappelift NEBA A/S - Baldersbuen 17 - Box 220 - DK-2640 Hedehusene - Telefon 46 59 01 77 Telefax 46 59 01 97 - e-mail: neba@neba.dk Juni 04 Brugsanvisning til Compact 2 Indholdsfortegnelse

Læs mere

GSM / SMS dør/port kontrol enhed

GSM / SMS dør/port kontrol enhed 11-07-2013 GSM / SMS dør/port kontrol enhed 6 stk. Digitale indgange med egen tekst besked via SMS 4 stk. Udgange med aktivering via SMS besked 4 stk. Administrator telefonnumre der modtager SMS alarm

Læs mere

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk Intro til AVR Mads Pedersen, OZ6HR mads@oz6hr.dk Projektidé Brug en AVR-microcontroller Mål temperatur vha. temperatursensor Vis på display Send til computer og vis temperatur Slide 2 Plan 27/10-2005:

Læs mere