Thunder s Truck projektrapport

Relevanta dokument
High Core Remote Car X8000 Cool

Digitala Projekt(EITF40) - Larm

Bilen som inte kan krocka

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

EITF11: Bandkanon Grp 05

Växtviskaren EITF11 Digitala projekt VT15, I12

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

The Phenomenal Doorbell Bilaga 2. Källkod

TEMPERATURMÄTARE MED GRAFRITARE

DIGITALA PROJEKT (EITF40) Fartmätare

RAPPORT: DIGITALA PROJEKT

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

Digitala Projekt (EITF11) Hemlarm

Självgående fordon Rapport i kursen digitala projekt, EDI021

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Projektrapport - RoboWalter

Projektrapport - Roterande digital LED-klocka

Pulsmätare Digitala Projekt EITF11

Digitalt Projekt: Radiostyrd Bil

Digitala Projekt(EITF40) - Larm

Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4

Projektrapport Målgång

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

Effektpedal för elgitarr

LOOKY LUKE. Caroline Hellström och Ville Orlander Arvola Industriell ekonomi I10. - Att välja en lyckosam väg EITF11 Digitala projekt

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

Digitala projekt Linjeföljande bil

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC Handledare Bertil Lindvall

Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz

Projektrapport i Digitala projekt EITF11. Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola

EITF11 - Digitala Projekt

Digitala Projekt (EITF11) Larmanläggning

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Projektrapport - Feststation

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Rapportsammanfattning. Optima Sous Vide

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

Pulsmätare med varningsindikatorer

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Linjeföljare. Digitala projekt

Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

Rapport i Digitala Projekt (EDI021)

The Intelligent Timer

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Rapport Digitala Projekt EITF Grupp 12 Elin Blomstergren, Victor Sundgren Handledare: Bertil Lindvall. Fyra i rad

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Microprocessor / Microcontroller

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

DIGITALA PROJEKT Väderstation

Digitala Projekt (EITF11)

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Servicemanual. Autonomous Pallet System 800 Prototyp. Utfärdat:

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Department of Information Technology Digitala Projekt Frysboxregulator. 10 december 2007

THE VISUAL EGGTIMER. Skola: Lunds Tekniska Högskola Institution: Elektro- och informationsteknik Kurs: Digitala projekt (EITF11)

Från idé till skapelse av en äkta RoomBot

HockeyMate Projektarbete i EITF40 - Digitala Projekt Institutionen för elektro- och informationsteknik

Digitala Projekt(EITF40) Robert Linjeföljaren

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Datorteknik 1 (AVR 1)

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

EDI022. Digitala Projekt. Rapport. Björn Åkesson 5/20/2011

Digitala projekt, EITF11 - Rapport Handledare: Bertil Lindvall. Fredrik Nylund (ine12fny) Johan Ekman (ine11jek) Olof Wikman (ine11owi)

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Aml Abbas, Ali Darwish, Ehsanolah Hafezi, Fatima Zahra Doussi Grupp 15

Laborationskort - ML4

Helena Harrysson och Linnéa Wickberg

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Rörelse- och temperaturkänsligt larmsystem

SIMON SAYS Projekt i EITF11 Digitala Projekt

Digitala projekt - Radiostyrd bil

Det finns en handledning till kortet på hemsidan. AVR STK500.

Institutionen för informationsteknologi

Musen. Författare: Joel Guedj e02jg Erik Dahlbäck e02ed. Handledare: Bertil Lindvall. Digitala Projekt SK 2005

Transkript:

LTH Thunder s Truck projektrapport EITF11 Digitala projekt 2012-05-10

Abstract The goal of this project was to build a truck operated by an IP-remote. The robot is built using standard parts such as two DC-motors, an H-bridge, a stepping motor to operate the truck function, an IR-receiver as well as an IR-decoder. The processor used in the project is an ATmega 16 micro processor programmed using the C programming language. 2

Innehållsförteckning Abstract... 2 1 Inledning... 4 2 Kravspecifikation... 4 3 Teori... 4 3.1 Processor... 4 3.2 H-brygga... 4 3.3 Motorer... 4 3.4 IR-mottagare... 4 3.5 IR-dekoder... 4 3.6 Spänningsregulator... 5 3.7 Stegmotor... 5 4 Utförande... 5 5 Resultat... 6 6 Källförteckning... 7 Appendix A Kopplingsschema... 8 Appendix B Källkod... 8 3

1 Inledning Syftet med projektet var att utveckla kursdeltagarnas kunskaper inom ellära, programmering och digitalteknik genom praktisk erfarenhet. För att uppnå detta valdes som projekt en fjärrstyrd robot som svarar på IR-signaler och som har en truckfunktion. 2 Kravspecifikation Thunder s Truck skall styras med hjälp av en infraröd fjärrkontroll. Thunder s Truck skall kunna köras framåt och bakåt. Thunder s Truck skall kunna svänga till höger och vänster. Thunder s Truck skall ha en lyftanordning som skall kunna lyfta mindre objekt. 3 Teori 3.1 Processor Processorn som används i projektet är en Atmel AVR ATmega16. Detta för att denna energisnåla processor lämpar sig väl för enklare projekt så som detta. Processorn programmerades genom anknytning till dator via en JTAG och programspråket är C. För att förenkla programmeringen användes port D till H-bryggan och port A till IR-dekodern. 3.2 H-brygga I projektet används en dubbel H-brygga av typen L298N för att stödja de två motorerna. H-bryggan används för att möjliggöra styrning av motorerna, som drivs av 6V, med signaler från processorn. 3.3 Motorer För att driva Thunder s Truck används två likströmsmotorer som styrs av H-bryggan och driver högerrespektive vänsterhjulet. 3.4 IR-mottagare I projektet används en IR-fjärrkontroll för att styra Thunder s Truck. För att detta ska vara möjligt krävs en IR-mottagare som kan ta emot signalerna från fjärrkontrollen och kommunicera dessa till IRdekodern. IR-mottagren som används i projektet är av typen TEW9062 och reagerar endast på IR-ljus som blinkar med en specifik hastighet som överensstämmer med fjärrkontrollen. 3.5 IR-dekoder De IR-signaler som tas emot av IR-mottagaren kan inte läsas av processorn och måste därför dekodas innan processorn kan ha användning av informationen från fjärrkontrollen. För detta används en IRdekoder av typen SAA3049A som skickar ut omvänd binärkod då en siffra trycks på fjärrkontrollen. Om en etta trycks på fjärrkontrollen skickas alltså signalen 011111 till pinnarna PA0 till PA5 på processorn (se Appendix A). I projektet används endast fjärrkontrollens siffror för att styra bilen. 4

3.6 Spänningsregulator Då motorerna kräver en spänning på 6V används ett batteri med den spänningen för att driva Thunder s Truck. Dock kan de digitala komponenterna endast hantera en spänning på 5V. Detta problem löses med hjälp av en spänningsregulator av typen LP3852-5.0 som konverterar 6V till 5V. För att fortfarande förse motorerna med önskad spänning kopplas dessa runt regulatorn och direkt till batteriet. 3.7 Stegmotor En stegmotor är en digital motor som kan styras direkt från processorn och därför lämpar sig bra för att driva Thunder s Trucks truckfunktion. I en stegmotor omvandlas digitala pulser, i detta projekt alltså från processorn, till en stegvis rotation av motoraxeln. I detta projekt användes stegmotor SM 30-2003 som har fyra faser. 4 Utförande Efter en vecka av teori i form av föreläsningar inleddes projektet av skapandet av en kravspecifikation. I denna fas av projektet var förståelsen för arbetsprocessen låg och det fanns en problematik med att så tidigt formulera krav för projektet. Av denna anledning hölls kraven simpla. Efterhand som projektet fortskred visade sig detta vara till fördel då friheten vid programmeringen blev större än om t.ex. vilka knappar på fjärrkontrollen som skulle kontrollera styrningen var specificerat redan i kravspecifikation. I nästa steg i arbetsprocessen skapades ett kopplingsschema som inkluderade alla huvudsakliga komponenter så som motorer, processor och IR-komponenter (se Appendix A). I detta skede av arbetsprocessen inkluderade kopplingsschemat även ett drivsteg till stegmotorn som senare insågs vara överflödigt och plockades bort. Ett problem kopplat till kopplingsschemat som uppstod då kopplingen påbörjades var att kopplingsschemat inte inkluderar strömkällor och behovet av en regulator och motstånd därför inte var uppenbart förrän senare i projektet. Brist på erfarenhet inom ellära och ovana av att läsa datablad ledde till att vissa nödvändiga kopplingar missades och kopplingsschemat fick kontinuerligt uppdateras under arbetets gång. För att kunna styra Thunder s Truck med IR-signaler behövde processorn programmeras för att ta emot signaler från IR-dekodern och skicka signaler till H-bryggan och stegmotorn. För att möjliggöra kontinuerlig avläsning av A-porten, som är kopplad till IR-dekodern, och anpassning av utsignaler från D-porten, vars pinnar PD1-PD6 är kopplade till H-bryggan, och B-porten, som är kopplad till stegmotorn, genererar processorns interna 8MHz klocka interrupts vid overflow. Vid varje interrupt läses A-porten av och utsignalerna från D- och B-porten anpassas. Med hjälp av en count som räknas upp vid varje interrupt då en metod, t.ex. forward() (se Appendix B), kallas kan Enable A och Enable B på H-bryggan sättas till 0 för att stänga av motorerna och på så sätt kontrollera hastigheten. I den sista fasen av projektet, testning, upptäcktes att trots att Thunder s Trucks styrning fungerade galant då hjulen inte var i kontakt med marken generade de inte tillräckligt mycket kraft för att driva roboten framåt. Spänningen till likströmsmotorerna blir för låg då hjulen utsätts för motstånd och H- bryggan hettar upp. För att åtgärda detta byttes H-brygga, kopplingar och motstånd men resultat förblev det samma. Trots mycket analyserande av kopplingsschemat kunde problemet inte åtgärdas och problemet ligger troligtvis i den gamla utrustningen snarare än ett misstag i projektet. 5

5 Resultat Resultatet av projektet är en robot med truckfunktion vars hjul kan styras med en IR-signal men som inte kan drivas på mark. Truckfunktionen kan lyfta och sänka en ej påmonterad truckgaffel. Detta demonstreras genom att vifta en påmonterad flagga. Överlag bedöms projektet som framgångsrikt. 6

6 Källförteckning ATMEL (u.d.) ATmega16 Datasheet. Hämtat från: http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega16.pdf Stegmotorstekning, All motion technology. Hämtat från: http://www.allmotion.se/files/pdf/amt_stegmotorteknik.pdf H-brygga, KTH. Hämtat från: http://www.ict.kth.se/courses/il1390/elmotorstyr/hbrygga/ 7

Appendix A Kopplingsschema 8

Appendix B Källkod #include <avr/io.h> #include <avr/interrupt.h> #define ENL1 _BV(PD5) // Enable left på #define ENL0 ~_BV(PD5) // Enable left av #define ENR1 _BV(PD4) // Enable right på #define ENR0 ~_BV(PD4) // Enable right av #define L_F1 _BV(PD3) // Left motor fram #define L_F0 ~_BV(PD1) #define R_F1 _BV(PD6) // Right motor fram #define R_F0 ~_BV(PD2) #define R_B1 _BV(PD2) // Right motor bak #define R_B0 ~_BV(PD6) #define L_B1 _BV(PD1) // Left motor bak #define L_B0 ~_BV(PD3) #define OFF 0x00 // Båda motorer av #define ONE 0x3E //hard left #define TWO 0x3D //forward #define THREE 0x3C //hard right #define FOUR 0x3B //left #define FIVE 0x3A //backward #define SIX 0x39 //right #define SEVEN 0x38 //sänker gaffel #define EIGHT 0x37 //viftar flagga #define NINE 0x36 //höjer gaffel #define NO_SIGNAL 0x3F //ingen signal volatile uint8_t count; void main(void) init(); // ställer in alla startvärden sei(); //tillåt interrupt while(1) return; /* Här ställs alla startvärden in void init() PORTA = _BV(PA7); PORTA &= ~_BV(PA7); 9

DDRA = 0xC0; //decoder, mode och reset utportar DDRB = 0xFF; //stegmotor, utportar DDRD = 0xFF; //till h-brygga TCNT0 = 0x00; //Reset timer 0 TCCR0 = 0x04; //Sätter prescaler FCPU/256 till timer 0 TIMSK = _BV(TOIE0);// Enable timer 0 & 1 overflow interrupt. count = 0; /* Ett interrupt genereras vid timer overflow ISR(TIMER0_OVF_vect) count++; switch (PINA) case ONE: case TWO: case THREE: case FOUR: case FIVE: case SIX: case SEVEN: case EIGHT: case NINE: rightforward(); // Hard left leftbackward(); rightforward(); // Forward leftforward(); leftforward(); // Hard right rightbackward(); rightforward(); // Left leftslowforward(); rightbackward(); // Backward leftbackward(); leftforward(); // Right rightslowforward(); forkup(); // Sänker gaffel flagwave(); // Viftar på flagga ;) forkdown();// Höjer gaffel 10

case NO_SIGNAL: enginesoff(); default: enginesoff(); if(count == 21) count = 0; /* Sätter bits på PORT D så att vänster hjul kör framåt. Regelerar hastigheten genom att ändra på Enable för vänster motor void leftforward() PORTD = L_F1; PORTD &= L_F0; if(count == 21) PORTD &= ENL0; else if(count == 1) PORTD = ENL1; else /* Sätter bits på PORT D så att höger hjul kör framåt. Regelerar hastigheten genom att ändra på Enable för höger motor void rightforward() PORTD = R_F1; PORTD &= R_F0; if(count == 21) PORTD &= ENR0; else if(count == 1) PORTD = ENR1; 11

else /* Sätter bits på PORT D så att vänster hjul kör bakåt. Regelerar hastigheten genom att ändra på Enable för vänster motor void leftbackward() PORTD = L_B1; PORTD &= L_B0; if(count == 21) PORTD &= ENL0; else if(count == 1) PORTD = ENL1; else /* Sätter bits på PORT D så att höger hjul kör bakåt. Regelerar hastigheten genom att ändra på Enable för höger motor void rightbackward() PORTD = R_B1; PORTD &= R_B0; if(count == 21) PORTD &= ENR0; else if(count == 1) PORTD = ENR1; else /* Sätter bits på PORT D så att vänster hjul kör framåt. Regelerar hastigheten genom att ändra på Enable för vänster motor void leftslowforward() 12

PORTD = L_F1; PORTD &= L_F0; if(count == 1) PORTD = ENL1; else if(count == 11) PORTD &= ENL0; else /* Sätter bits på PORT D så att höger hjul kör framåt. Regelerar hastigheten genom att ändra på Enable för höger motor void rightslowforward() PORTD = R_F1; PORTD &= R_F0; if(count == 1) PORTD = ENR1; else if(count == 11) PORTD &= ENR0; else /* Stänger av båda motorerna void enginesoff() PORTD = OFF; /* Genererar en sekvens som får stegmotorn att föra gaffeln nedåt void forkdown() switch (count) case 1: PORTB = 0x1B; 13

case 6: case 11: case 21: PORTB = 0x33; PORTB = 0x36; PORTB = 0x1E; /* Genererar en sekvens som får stegmotorn att föra gaffeln uppåt void forkup() switch (count) case 1: case 6: case 11: case 21: PORTB = 0x1E; PORTB = 0x36; PORTB = 0x33; PORTB = 0x1B; /* Genererar en sekvens som får stegmotorn att föra gaffeln nedåt och sedan uppåt void flagwave() switch (count) case 1: case 4: case 7: PORTB = 0x1B; PORTB = 0x33; 14

case 10: case 12: case 15: case 18: case 21: PORTB = 0x36; PORTB = 0x1E; PORTB = 0x1E; PORTB = 0x36; PORTB = 0x33; PORTB = 0x1B; 15