TEMPERATURMÄTARE MED GRAFRITARE

Relevanta dokument
Växtviskaren EITF11 Digitala projekt VT15, I12

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

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

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

The Phenomenal Doorbell Bilaga 2. Källkod

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

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

Digitala Projekt(EITF40) - Larm

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

DIGITALA PROJEKT (EITF40) Fartmätare

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

Effektpedal för elgitarr

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

Digitala Projekt (EITF11)

Bilen som inte kan krocka

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

Projektrapport Målgång

Digitala Projekt(EITF40) - Larm

Thunder s Truck projektrapport

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

Projektrapport - Feststation

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

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

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

The Intelligent Timer

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

Rapportsammanfattning. Optima Sous Vide

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

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

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

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

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

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

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

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Digitala Projekt (EITF11) Hemlarm

Pulsmätare med varningsindikatorer

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

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

DIGITALA PROJEKT Väderstation

Rapport i Digitala Projekt (EDI021)

Digitala Projekt (EITF11) Larmanläggning

SNOOZE SNOOZE REVOLUTION

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

Pulsmätare Digitala Projekt EITF11

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

Projektrapport - Roterande digital LED-klocka

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

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

EITF11 - Digitala Projekt

Digitala projekt Linjeföljande bil

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

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

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

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

Innehåll. 1 Inledning 3

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

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

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

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

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

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

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

Projekt Digitala system. Rörelsekänsligt Larmsystem

Projektrapport i Digitala System

High Core Remote Car X8000 Cool

EITF11: Bandkanon Grp 05

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

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

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Rörelse- och temperaturkänsligt larmsystem

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

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

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

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

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

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

Helena Harrysson och Linnéa Wickberg

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

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

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

Projektrapport - RoboWalter

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

SIMON SAYS Projekt i EITF11 Digitala Projekt

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

Blinkande discogolv. Lunds Tekniska Högskola, LTH Elektro- och informationsteknik. EITF11 Digitala Projekt VT 2014

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

Väderstation. Datum: Projektarbete vid elektro och informationstekniks institution

RAPPORT: DIGITALA PROJEKT

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

Microprocessor / Microcontroller

Pong Mayhem. Innehållsförteckning Inledning Kravspecifikation Komponenter/Hårdvara Arbetsprocess Reflektion...

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

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

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

Linjeföljare. Digitala projekt

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

Digitala projekt VT Myran

Guitar tuner Digitala Projekt (EITF40)

Transkript:

LUNDS TEKNISKA HÖGSKOLA TEMPERATURMÄTARE MED GRAFRITARE Grupp 6 Jesper Henrikson & Viktor Sköld Handledare: Bertil Lindvall 1

Innehållsförteckning Innehållsförteckning 2 Inledning 3 Kravspecifikation 4 Teori Processor 5 Temperatursensor 5 LCD-display 5 Knapp 5 Resistorer 5 Genomförande 6 Resultat 7 Diskussion 8 Referenser 9 Kopplingsschema 10 Källkod 11 2

Inledning, eller Digitala Projekt, är en kurs vars syfte är att ge grundläggande kunskaper inom elektronik, digitalteknik samt att skapa färdigheter i själva konstruktionen. Alla kursdeltagande ges möjlighet att valfritt välja projekt inom vissa rimliga ramar. Projektet går sedan ut på att skapa en fungerande prototyp och samtidigt dokumentera detta. Gruppen valde att konstruera en temperaturmätare som mäter temperatur inomhus såväl som utomhus. Temperaturen redovisas dels som en graf av temperaturen som en funktion av tiden under den senaste veckan, men även utskrivet i teckenform. Skiftandet från redovisning i form av en graf till teckenform och vice versa sker genom ett knapptryck. Eftersom gruppen ej hade någon förkunskap inom ämnet var det svårt att förutse vad som skulle komma att vara utmanande och vad som skulle gå smärtfritt. 3

Kravspecifikation Temperaturstationen ska kunna Avläsa aktuell temperatur Visa senaste veckans timvisa temperatur i ett linjediagram Visa inomhus- respektive utomhustemperaturen i teckenform Byta mellan de två alternativa redovisningarna med hjälp av ett knapptryck 4

Teori Nedan följer hårdvarukomponenter som har använts i projektet. Processor Processorn som används är en 8-bitars ATmega16 med ett minne på 16kb. En A/D-omvandlare finns inbyggd i processorn och denna styrs av 2st register - ADMUX och ADCSRA. På processorn finns 40st pinnar varav 32st av dessa är till för de fyra 8-bitars portarna (A-D). Interfacet JTAG tar upp 4st pinnar och gör så att processorn kan programmeras i C. Resterande pinnar är kopplade till GND samt spänning. Temperatursensor Den temperatursensor som används är LM335. Denna ger en spänning proportionell mot temperaturen angiven i Kelvin. 10mV motsvarar en grad. På så sätt kan temperaturen beräknas av processorn och låta denna omvandlas till temperatur angiven i Celcius. Då både ute- och innetemperatur ska mätas används två stycken temperaturmätare. Temperaturmätarna använde sig av varsin resistor för att få rätt spänning in till temperaturmätaren, se figur. Figur 1, LM335 LCD-display Displayen som används är en GDM12864C (Red). Det är en grafisk display med storleken 128 x 64 pixlar. Knapp För att kunna skifta displayens innehåll från redovisning i form av ett linjediagram till redovisning i teckenform används en knapp. Knappen fungerar som en strömbrytare och så fort denna trycks ned skickas en spänning in till den pinne som knappen är kopplad till. Genom J-tagen programmerades vad som skulle ske när knappen trycktes in. Önskemålet var att det till knappens pinne antingen skulle skickas 5 V spänning alternativt 0 V. För att möjliggöra detta kopplades pinnen dels till GND och dels till knappen. Mellan GND och pinnen kopplades det in en resitor enligt datorblad. Utan kopplingen mellan pinnen och GND skulle insignalen skifta mellan 5 V och ingenting istället för mellan 5 V och 0 V. 5

Genomförande Inledande tillgavs gruppen de komponenter som ansågs esentiella för vårt ändamål samt en verktygslåda med de instrument som skulle kunna användas vid konstruktion. Ett kopplingsschema skapades sedan i programmet Power Logic. Detta fungerade sedan som en mall för hur kopplingarna skulle utföras på det verkliga kretskortet. Till vår hjälp, med syfte att förstå hur kopplingsschemat skulle kopplas, användes datablad till de olika komponenterna. Processor, display, temperatursensorer, knapp, resistorer samt spänning och jord kopplades sedan samman genom lödning och virning av trådsladdar mellan de olika pinnarna. Slutligen skrevs C-kod i syfte att få hårdvaran att göra som önskat. Källkoden skrevs och testades i programmet Atmel Studio 6.0. 6

Resultat Temperaturgivaren slutställdes till slut efter mycket om och men. Gruppen ändrade efterhand några av sina krav vilket gjorde att slutprodukten blev lite skild från vad som önskades initialt. Gruppen lyckades framställa en dubbeldisplay som redovisar inomhustemperaturen i det ena halvplanet och utomhustemperaturen i det andra halvplanet. Temperaturerna representeras i form av linjediagram. Initialt önskades en knappfunktion som skulle skifta från grafisk till skriftlig redovisning. Denna slopades dock senare då vi insåg att det skulle krävas mer tid än vad vi hade, på grund av de problem vi stötte på. 7

Diskussion Arbetet i kursen Digitala Projekt () har varit mycket lärorikt. Mycket tålamod har krävts men samtidigt har nya vet- respektive kunskaper erhållits. Under arbetets gång har vi till slut enats om att databladens information är vettigare och matnyttigare än vad gruppmedlemmarna initialt trodde. Således gick gruppen från att till en början vara närmast helt beroende av assistans till att senare leta efter information på ett mer självständigt sätt. Gruppmedlemmarna har även lärt sig att skriva källkod i språket C. I det stora hela har det varit en mycket lärorik kurs där kursdeltagarna har fått testa sig själv inom områden som tidigare varit helt okända. 8

Referenser http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega16_sum.pdf http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/sensors/lm335.pdf http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/display/gdm12864h.pdf 9

10

KOD**************** /* * GccApplication1.c * Created: 2014-03-26 15:47:35 * Author: digpi06 */ #include <avr/io.h> #include <util/delay.h> #include <math.h> #include <avr/interrupt.h> char advalout; char advalin; long int count=0; void init(void) { set_data_direction(); init_disp(); PORTD=0b11010001; //display i utgångsläge //cs1, cs2, rst, RS och E höga. RW låg write_cmd_right(11000001); //set display start line void clear_display(void) { PORTD=0b00011011; //utgångsläge fast ändrat pin 6 och 7 PORTB=0b01000000; //vi har satt Y-adress till 0. for(int x=184;x<192;x++) { //vi anger PORTB i decimalform. 184 motsvarar //att vi ska skriva x-adressen 000. for(int y=64;y<128;y++) { // samma som ovan. set_dot_left(x, y, 0); set_dot_right(x,y,0); _delay_ms(2); void init_disp(void) { write_cmd_right(0b00111111); write_cmd_left(0b00111111); //höger halvplans display sätts på //ange vilket håll datan ska gå i de olika portarna void set_data_direction(void) { DDRD=0b11111010; //nollan motsv knappen som ska peka in DDRA=0b11111100; DDRB=0b11111111; DDRC=0b11000011; void write_cmd_right(char value) { PORTD=0b10011001; //RS (D/I) och CS1 ändras till låga PORTB=value; 11

toggle_e(); PORTD=0b11010001; //PORTD tbx till utgångsläget void write_cmd_left(char value) { PORTD=0b10010011; //RS och CS2 ändras till låga. PORTB=value; toggle_e(); PORTD=0b11010001; //PORTD tbx till utgångsläget void write_data_right(char val) { PORTB=val; PORTD=0b11011001; //CS1 till låg toggle_e(); PORTD=0b11010001; //PORTD tbx till utgångsläget void write_data_left(char val) { PORTB=val; PORTD=0b11010011; //CS2 till låg. toggle_e(); PORTD=0b11010001; //PORTD tbx till utgångsläget void toggle_e(void) { PORTD = (1<<PIND7); //PD7 sätts till 1 PORTD &= ~((1<<PD7)); //PD7 sätts till 0 PORTD = (1<<PIND7); //PD7 sätts till 1 void set_dot_right(char x, char y, char val) { write_cmd_right(y); //koordinat för prick i y-led write_cmd_right(x); //koordinat för prick i X-led write_data_right(val); void set_dot_left(char x, char y, char val) { write_cmd_left(y); //koordinat för prick i y-led write_cmd_left(x); //koordinat för prick i X-led write_data_left(val); void timer1_init(void) { TCCR1A=0b00000000; TCCR1B=0b00000101; //prescale 1024 TCNT1=57734; //sätter initialt värde.. dvs den behöver bara räkna //härifrån till 65.355 typ TIMSK=0b00000100; //overflow interrupt enable void adc_init(void) { ADCSRA=0b10001100; //ADC sätts på. Interrupt möjliggörs. prescaler //sätts till 16 void create_frame_left(void) { 12

for(int y=64;y<128;y++) { //översta linjen int x=184; set_dot_left(x,y,1); _delay_ms(10); for(int y=64;y<128;y++) { //nedersta linjen int x=191; set_dot_left(x,y,128); _delay_ms(10); for(int x=184;x<192;x++) { //vi anger PORTB i decimalform. 184 //motsvarar att vi ska skriva x-adressen 000. int y=64; set_dot_left(x,y,255); _delay_ms(10); void create_frame_right(void) { for(int y=64;y<128;y++) { //översta linjen int x=184; set_dot_right(x,y,1); _delay_ms(10); for(int y=64;y<128;y++) { //nedersta linjen int x=191; set_dot_right(x,y,128); _delay_ms(10); for(int x=184;x<192;x++) { //vi anger PORTB i decimalform. 184 //motsvarar att vi ska skriva x-adressen 000. int y=64; set_dot_right(x,y,255); _delay_ms(10); //xxxx for(int x=184;x<192;x++) { // höger linje, int y=127; set_dot_right(x,y,255); _delay_ms(10); char convert_x(char kelvtemp) { if(kelvtemp< 56){ return 184; if(kelvtemp>= 56 && kelvtemp<64){ return 185; if(kelvtemp>= 64 && kelvtemp<72){ return 186; 13

if(kelvtemp>= 80 && kelvtemp<88){ return 187; if(kelvtemp>= 88 && kelvtemp<96){ return 188; if(kelvtemp>= 96 && kelvtemp<104){ return 189; if(kelvtemp>= 104 && kelvtemp<112){ return 190; if(kelvtemp>= 112){ return 191; char convert_value(char value) { if(value%8 == 0) { return 1; if(value%8 == 1) { return 2; if(value%8 == 2) { return 4; if(value%8 == 3) { return 8; if(value%8 == 4) { return 16; if(value%8 == 5) { return 32; if(value%8 == 6) { return 64; if(value%8 == 7) { return 128; int main(void) { init(); clear_display(); adc_init(); timer1_init(); create_frame_left(); create_frame_right(); sei(); while(1) { 14

ISR(TIMER1_OVF_vect) { TCNT1=57734; //startvärde för timern if(count%2==0) { ADMUX = 0b00100000; else { ADMUX = 0b01100001; //Starta A/D-omvandlaren ADCSRA = 0b11001100; //omvandling påbörjas TIFR=0b00000100; //infogar en overflow flag. count++; if(count>=10000000) { count=0; //sammanfattning: startvärde för timern sätts. Var och en av sensorerna konverterar i varannan interrupt. Flagga sätts ISR(ADC_vect) { //läs A/D if(count%2==0) { advalout=adch; //kontrollera vilken som är inne resp ute else { advalin=adch; ADCSRA=0b10011100; //interrupt flag har satts set_dot_left(convert_x(advalin),1,convert_value(advalin)); set_dot_right(convert_x(advalout),0,convert_value(advalout)); 15