DIGITALA PROJEKT (EITF40) Fartmätare

Relevanta dokument
Digitala Projekt(EITF40) - Larm

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

Digitala Projekt(EITF40) - Larm

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

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

Växtviskaren EITF11 Digitala projekt VT15, I12

The Phenomenal Doorbell Bilaga 2. Källkod

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

Projektrapport Målgång

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

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

TEMPERATURMÄTARE MED GRAFRITARE

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

Thunder s Truck projektrapport

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

Pulsmätare Digitala Projekt EITF11

Effektpedal för elgitarr

Digitala Projekt (EITF11) Larmanläggning

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

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

DIGITALA PROJEKT Väderstation

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

High Core Remote Car X8000 Cool

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

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

Projektrapport - Roterande digital LED-klocka

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

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

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

Pulsmätare med varningsindikatorer

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

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Digitala Projekt (EITF11) Hemlarm

EITF11 - Digitala Projekt

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

The Intelligent Timer

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

Bilen som inte kan krocka

EITF11: Bandkanon Grp 05

Digitala projekt Linjeföljande bil

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

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

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Digitala Projekt VT13. PING-Pong

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

Projektrapport - Feststation

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

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

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

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

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

Digitala Projekt (EITF11)

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

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

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

DIGITALA PROJEKT - EITF11

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Rapportsammanfattning. Optima Sous Vide

Helena Harrysson och Linnéa Wickberg

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

LUNDS TEKNISKA HÖGSKOLA. Väderstation. Digitala Projekt, EITF11. Martin Olofsson, I08 & Fredrik Oher, I08 Vt 2012

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

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

Whac A mole. Ett rektionstest i kursen Digitala Projekt EITF11 utfört av: Axel Spångberg I10 Marcus Witting I10. Handlett av: Bertil Lindvall

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

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

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Väderstation. EITF11, Digitala projekt RAPPORT. Isabella Bergvik, Emma Sandén & Hanna Åberg

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

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

EDI021 Digitala projekt. Rapport LARMSYSTEM. Utförd av: Niklas Eklund E03 David Olsson E04. Inlämnad:

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

Microprocessor / Microcontroller

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

Rapport i Digitala Projekt (EDI021)

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Digitala projekt - Radiostyrd bil

Projektrapport i Digitala System

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

Rörelse- och temperaturkänsligt larmsystem

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

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

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

Digitala projekt rapport

Digitalt Projekt: Radiostyrd Bil

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

RAPPORT: DIGITALA PROJEKT

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

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

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

AVR 5. Styrning av trafikljus. Digitala system 15 p

Projekt Digitala system. Rörelsekänsligt Larmsystem

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

PROJEKTTYP: Rapportsammanfattning STUDENTER: Larsson, J. ( ) och Oredsson, J. ( ) DATUM: 26 april, 2015

Jan Babor och Oscar Ågren Handledare: Bertil Lindvall 5/16/2011

SIMON SAYS Projekt i EITF11 Digitala Projekt

Datorteknik 2 (AVR 2)

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Transkript:

ELEKTRO- OCH INFORMATIONSTEKNIK DIGITALA PROJEKT (EITF40) Fartmätare Handledare: Bertil Lindvall Per Fernström, ie09pf7 Albin Nilsson, ie09an4 5/14/2012 1

Abstract The purpose behind this project is to produce a speedometer. The speedometer is supposed to be able to measure the time with which an object travels between two sensors. The basic method is to measure the time that it takes in between the two sensors are activated. This time is then used together with the knowledge of the distance between the sensors to calculate the speed. In this report all the different components will be briefly described together with the way with which they have been connected to each other. The software code will also be briefly explained. 2

Innehållsförteckning 1. Introduktion... 1 2. Kravspecifikation... 1 2.1 Hårdvarukrav... 1 2.2 Funktionella krav... 1 3. Hårdvara... 1 3.1 Processor... 1 3.2 LCD-display... 1 3.3 IR-emitter... 1 3.4 Fototransistor... 2 4. Blockschema... 2 5. Konstruktion... 2 6. Mjukvara... 2 7. Resultat... 3 8. C-kod... 5 3

1. Introduktion Hela projektet inleddes med att fundera ut vilka komponenter som skulle behövas. Därefter inleddes ytliga genomläsningar av varje komponents respektive datablad för att få någon slags introduktion till komponenten. Grundläggande saker så som vilka pinnar som gjorde vad utforskades. Därefter drogs en ritning/blockschema upp för att användas vid lödandet/virandet. Vidare testade vi ut en preliminär komponentplacering. Därefter började det spännande och stundom frustrerande arbetet att bygga ihop och programmera de olika komponenterna till en färdig fartmätare. 2. Kravspecifikation Vårt projekt är att bygga en fartmätare. Den färdiga fartmätaren skall uppfylla samtliga nedanstående krav. 2.1 Hårdvarukrav Konstruktionen skall ha en display som kan visa siffror. Konstruktionen skall ha två sensorer som kan känna av när något rör sig framför dem. Konstruktionen skall ha en processor som kommer användas för att sköta tidtagning samt beräkning av hastighet. 2.2 Funktionella krav När fartmätaren är i startläge skall displayen visa Ready När ett objekt far förbi sensorerna skall farten som objektet passerade sensorerna med visas på displayen med texten Speed: XX.X cm/s. Meddelandet i displayen skall visas i tre sekunder. Under denna tid skall sensorerna inaktiveras. 3. Hårdvara 3.1 Processor Som processor i vårt system har vi använt oss av en 8-bit AVR ATMega16. Det är till denna som alla andra komponenter kommer att kopplas och det är den som styr hela systemet. Processorn har ett 16 KB inbyggt flashminne. Vidare har den 40 pinnar varav 32 är programmerbara inutlinjer fördelade på de fyra portarna A, B, C och D. 3.2 LCD-display Fartmätaren skall kommunicera med användaren via en LCD-display. Displayen skall vara en alfa-numerisk display och kunna visa två rader med 16 tecken. Modellen vi valde var av sorten SHARP Dot-Matrix LCD. 3.3 IR-emitter För att sända ut en IR-signal som skall brytas vid tidtagning används en IR-emitter. Den sänder en konstant IR-signal och är därför ej kopplad via processorn. 1

3.4 Fototransistor För att ta emot IR-signaler har vi använt oss av en fototransistor. Den skickar en signal mellan noll volt och arbetsspänningen. Det innebär att när IR-signalen från emittern bryts så sjunker spänningen till noll för att sedan återgå till arbetsspänningen då signalen återvänder. 4. Blockschema Nedan följer vårt blockschema efter vilket vi har kopplat ihop vår fartmätare, se figur 1. Figur 1 5. Konstruktion Fartmätaren byggdes med en central display med vilken all kommunikation med användaren görs. Här kan användaren få reda på om fartmätaren är på eller av, om den är redo att mäta en ny hastighet samt med vilken hastighet ett objekt har färdats förbi sensorerna. Fototransistorerna kopplas till processorn på port A. Det är härifrån systemet hämtar information om det är tid att starta eller avsluta tidtagningen. Eftersom IR-emittrarna konstant skall vara påslagana kopplades dessa ej till processorn. 6. Mjukvara Mjukvaran till systemet skrevs i programspråket C. Eftersom tid är väldigt centralt för vårt program har vi byggt upp det kring avbrott med en frekvens på 30 Hz. Det är med dessa avbrott som vi mäter tiden. Därför begränsas också tidtagningens precision till en tretiondels sekund. 2

Detta är något som eventuellt skulle kunna tänkas höjas för ännu högre precision. För att programmet skall kunna hålla koll på om man befinner sig i eller utanför en tidtagning används två globala variabler kallade ready och running. Dessa initieras med värde noll. Då processorn har skrivit ready på displayen sätts också variabeln ready till ett. Detta är för att processorn inte skall skriva ready vid fel tillfällen. Variabeln running sätts till ett då en tidtagning startar. 7. Resultat Fartmätaren har konstruerats enligt det blockschema som vi ritade i början av projektet. Viss förvirring uppstod innan vi insåg att processorns piggar i blockschemat inte stämde överens med den processor som vi hade i handen. Flera liknande missförstånd skulle följa och vid flera tillfällen under arbetets gång har vi insett att sladdar kopplats fel. Att koppla in skärmen och få den till att fungera på ett önskvärt sätt var tämligen problematiskt. Förutom att vi insåg att vi virat sladdarna till processorn fel så insåg vi efter mycket möda att både displayen och processorn krävde två sladdar till jord. Vidare insåg vi att det ej räckte med en virning och var tvungna att löda sladdarna till spänningen. När vi väl lyckats koppla in displayen skulle det visa sig att den var trasig och tvungen att bytas. Vid inkoppling av fototransistorerna visade det sig att vi initialt använt oss av för stora motstånd och var tvungna att byta ut dessa till mindre för att lyckas få en tillförlitlig signal till processorn. Jämfört med att hantera hårdvaran gick mjukvaruprogrammeringen tämligen smärtfritt. Vi hade initialt vissa problem med mjukvaran innan vi insåg att processorns kommunikation med AVR Studio är relativt instabil och kräver regelbundna omstarter av systemet. Ett annat problem som uppstod under vår programmeringsdel av projektet var att det ibland lös upp två pinnar då fototransistorerna aktiverades och ibland en. Detta gjorde att vår ursprungliga if-sats, som räknade med att endast en pinne skulle aktiverades, inte fungerade som önskat. I övrigt var det främst att få igång lämpliga avbrott som ställde till vissa problem. Allt som allt tycker vi dock att projektet gick bra. Vid vissa tillfällen kunde vi uppleva viss frustration men detta övergick snart i stor tillfredställelse då vi succesivt överkom samtliga problem. När fartmätaren var färdig och fungerade i enlighet med kravspecifikationen kände vi stor stolthet då vi båda påbörjade detta projekt utan några som helst förkunskaper. Den färdiga fartmätaren kan ses i figur 2.1 och 2.2. 3

Figur 2.1 Fartmätaren i ready-state Figur 2.2 Fartmätaren med sladdarna exponerade 4

8. C-kod Nedan följer källkoden som har använts i vår fartmätare. #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 16000000UL // 16 MHz #include <util/delay.h> volatile uint8_t count; int running; int ready; void main() { TCCR0 =(1<<CS02) (CS01); //Prescaler igång TIMSK =(1<<TOIE0); //Overflow-interrupt igång sei(); // Sätter igång globala interrupts TCNT0 = 0; count = 0; //Initierar variabler running = 0; ready = 0; DDRC = 0x43; //Port C(0, 1 och 6) får riktning output DDRD = 0xFF; //Port D(alla) får riktning output display_init(); //Initierar LCD-skärmen //Evighetsloopen while(1){ //Om ingen av sensorerna ger utslag skrivs "Ready" ut if ((PINA == 0xFF) && (running == 0)){ if(ready == 0) { writeready(); ready = 1; //Om startsensorn ger utslag startas klockan och displayen rensas else if(((pina == 0xF7) && (running == 0)) ((PINA == 0xF3) && (running == 0))) { startclock(); display_clear(); running = 1; 5

//Om andra slutsensorn ger utslag och running = 1 så visas hastigheten //och sedan återgår programmet till grundläge. else if(((pina == 0xEF) && (running == 1)) ((PINA == 0xCF) && (running == 1))){ showspeed(); _delay_ms(1000); display_clear(); running = 0; ready = 0; // 3.3 = avståndet mellan sensorerna, count är timerns tick, ger hastigheten i cm/sek void showspeed(){ double temp = count; double v = 3.3 / (temp/30); //Delar upp hastigheten i ensiffriga variabler int num1 = v / 10; int temp2 = (int) v; int num2 = (temp2 % 10); int dec = (v - (num1*10) - num2)*10; writespeed(num1, num2, dec); //Skriver ut hastigheten som skickas in på displayen void writespeed(int num1, int num2, int dec) { //Konverterar till char char cnum1 = (char) (((int) '0') +num1); char cnum2 = (char) (((int) '0') +num2); char cdec = (char) (((int) '0') +dec); display_writech('s'); display_writech('p'); display_writech('e'); display_writech('e'); display_writech('d'); display_writech(':'); display_writech(' '); display_writech(cnum1); display_writech(cnum2); display_writech('.'); display_writech(cdec); display_writech(' '); display_writech('c'); display_writech('m'); display_writech('/'); display_writech('s'); 6

//Nollställer timern void startclock(){ count = 0; //Detta utförs vid varje interupt ISR(TIMER0_OVF_vect) { count++; void writeready(){ display_writech('r'); display_writech('e'); display_writech('a'); display_writech('d'); display_writech('y'); //Används för att ge en pin(char pin) på porten (char port) //ett speciellt värde(char state) void set_pin(char port, char pin, char state){ char set = 1 << pin; if(port == 'A'){ set &= PORTA; if(set &&!state){ // 1 -> 0 PORTA ^= set; if(set == 0 && state){ // 0 -> 1 set = 1 << pin; PORTA ^= set; else if(port == 'B'){ set &= PORTB; if(set &&!state){ // 1 -> 0 PORTB ^= set; if(set == 0 && state){ // 0 -> 1 set = 1 << pin; PORTB ^= set; else if(port == 'C'){ set &= PORTC; if(set &&!state){ // 1 -> 0 PORTC ^= set; 7

if(set == 0 && state){ // 0 -> 1 set = 1 << pin; PORTC ^= set; else if(port == 'D'){ set &= PORTD; if(set &&!state){ // 1 -> 0 PORTD ^= set; if(set == 0 && state){ // 0 -> 1 set = 1 << pin; PORTD ^= set; //Anropas när displayen skall ta emot ett kommando void display_cmd(char val) { PORTD=val; _delay_ms(3); set_pin('c', PC1, 0); //RW -> 0 set_pin('c', PC0, 0); //RS -> 0 _delay_ms(3); set_pin('c', PC6, 1); //E -> 1 _delay_ms(3); set_pin('c', PC6, 0); //E -> 0 //Anropas när displayen skall skriva ut ett tecken void display_writech(char val) { PORTD=val; set_pin('c', PC1, 0); //RW -> 0 set_pin('c', PC0, 1); //RS -> 1 _delay_ms(3); set_pin('c', PC6, 1); //E -> 1 _delay_ms(3); set_pin('c', PC6, 0); //E -> 0 void display_clear() { display_cmd(0x01); //Skickar in kommandot som rensar displayen display_cmd(0x38); //Functions set void display_init() { display_clear(); display_cmd(0x0f); //Skickar in kommandot som sätter på displayen display_cmd(0x06); //Entry mode set 8