Rapportsammanfattning. Optima Sous Vide

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

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

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

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

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

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

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Digitala Projekt(EITF40) - Larm

TEMPERATURMÄTARE MED GRAFRITARE

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

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

Projektrapport Målgång

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

Digitala Projekt (EITF11)

Digitala Projekt (EITF11) Hemlarm

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

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

Bilen som inte kan krocka

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

Pulsmätare med varningsindikatorer

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

Thunder s Truck projektrapport

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

DIGITALA PROJEKT (EITF40) Fartmätare

The Intelligent Timer

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

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

The Phenomenal Doorbell Bilaga 2. Källkod

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

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

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

Projektrapport - Feststation

Projektrapport - Roterande digital LED-klocka

Pulsmätare Digitala Projekt EITF11

Effektpedal för elgitarr

EITF11 - Digitala Projekt

Projektrapport i Digitala System

Digitalt Projekt: Radiostyrd Bil

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

Digitala Projekt(EITF40) - Larm

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

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

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

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

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

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

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

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

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

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

Digitala projekt Linjeföljande bil

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

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

Projekt Digitala system. Rörelsekänsligt Larmsystem

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

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

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

SIMON SAYS Projekt i EITF11 Digitala Projekt

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Helena Harrysson och Linnéa Wickberg

Digitala Projekt (EITF11) Larmanläggning

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

High Core Remote Car X8000 Cool

EITF11: Bandkanon Grp 05

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

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

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

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

DIGITALA PROJEKT Väderstation

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

Datorteknik 1 (AVR 1)

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

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

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

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

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

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

Innehåll. 1 Inledning 3

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

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

Digitala Projekt VT13. PING-Pong

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

Rörelse- och temperaturkänsligt larmsystem

DIGITALA PROJEKT - EITF11

Projektrapport - RoboWalter

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

Rapport i Digitala Projekt (EDI021)

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

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

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

Rapport: Väderstation

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

Source code. #undef F_CPU. #define F_CPU UL. #include <avr/io.h> #include <avr/delay.h> #include <string.h> #include <avr/eeprom.

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

Digitala projekt - Radiostyrd bil

Digitala Projekt. Chip Quiz. Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand. Grupp 9

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

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

Digitala projekt VT Myran

Transkript:

Rapportsammanfattning Optima Sous Vide Elektro- och informationsteknik, Lunds Tekniska Högskola Anton Bengtsson, Hannes Helin, Ingrid Hyltander Handledare: Bertil Lindvall 2017-05-20

Abstract The following report describes the project to build a functioning sous vide, a cooking device which allows a chef to heat water to a desired temperature and to maintain that temperature. The project is a result from the course EITF11 which is held at the Faculty of Engineering at Lund University. The report covers the process from specifying requirements, design, construction to reaching the final prototype. The reader will be given insight in chosen hardware, C-code and difficulties that was discovered and how they were handled.

Innehållsförteckning Rapportsammanfattning 0 Abstract 1 Innehållsförteckning 2 Inledning 3 Produktbeskrivning 3 Kravspecifikation 3 Teori 4 Genomförande 5 Resultat 6 Diskussion och slutsatser 7 Appendix A - Kretskoppling 9 Appendix B- Källkod 10

Inledning Studentens liv är en ständig balansgång mellan studier och vardagsbestyr. Böcker ska läsas och matlådor ska lagas. Grundtanken med författarnas Sous Vide-prototyp är att studenten inte ska behöva välja mellan att glänsa på tentor och att glänsa i lunchrummet. Med Sous Vide-prototypen sköter matlagningen sig till stor del själv och studenten kan ägna sig åt hårdvarunära programmering och andra mer kultiverade sysslor, utan att för den delen behöva skämmas i mikrokön. Syftet med projektet är att en producera en välfungerande Sous Vide-prototyp. På ett mer abstrakt plan är syftet att gruppmedlemmarna i arbetet mot en sådan prototyp, ska skaffa sig kunskaper inom elektronik och prototyputveckling. Vad som är en välfungerande Sous Videprototyp specificeras närmare i avsnitt Kravspecifikation. Återstoden av rapporten består av produktbeskrivning, kravspecifikation och en beskrivning av den använda mjuk- och hårdvaran. Därefter följer en beskrivning av genomförandet och resultatet. Rapporten avslutas med diskussionsdel. Produktbeskrivning I en Sous Vide tillagas livsmedel genom att de vakuumförpackas och placeras i ett vattenbad vars temperatur kan regleras. Detta gör att livsmedel bibehåller saftighet och blir jämnt tillagat. I projektet används en vattenkokare som behållare för vattenbadet och till uppvärmning av detta. Via återkoppling av vattentemperaturen till processorn reglerar denna vattenkokaren så att vattenbadet uppnår önskad måltemperatur. Kravspecifikation Den färdiga prototypen ska uppfylla följande krav: Mäta nuvarande temperatur i vattnet Redovisa den nuvarande temperaturen på en display Ställa in måltemperatur Redovisa vald måltemperatur på en display Se till att vattnet når vald måltemperatur Se till att vattnet behåller vald måltemperatur Teori Hårdvara: Processor Som processor användes en ATMega16, en 8-bitars Microcontroller. Processorn har 40 pinnar. 8 av dessa är reserverade till ett JTAG-interface vilken används för att programmera processorn. Display

Som display användes en SHARP Dot-Matrix display. Displayen kan visa både siffror och bokstäver. Vilket tecken som ska visas på displayen avgörs av via en 8-bitars signal från processor. Termometer Som termometer användes en LM35. Processorn mottar en spänning som är proportionell mot uppmätt temperatur mätt i Celcius. En grad Celsius motsvaras av en spänning på 10 mv. Knappar Två knappar kopplades till processorn för att möjliggöra för användaren att öka eller minska önskad måltemperatur. När en knapp trycks ner skickas en spänning till processorn och beroende på vilken knapp som signalen kommer ifrån höjer eller sänker processorn måltemperaturen. Kondensatorer För att motverka brus och felaktiga signaler kopplades kondensatorer till processorn och displayen. Resistorer Flera resistorer användes för att kunna reglera strömmen i kretsen. Vattenkokare Som behållare och för uppvärmning av vattenbadet användes en varmvattenkokare på 12 volt. LED-lampa En grön LED användes för att visa när varmvattenbadet uppnådde inställd måltemperatur. Mjukvara: Mjukvaran är skriven i programspråket C och skapades i AtmelStudio. En JTAG användes för att föra över kod till processorn och för att debugga. Huvudmetoden inleds av att alla portar ställs in på in- respektive utsignal, skärmen sätts på och ett välkomstmeddelande visas på skärmen. Därefter påbörjas en oändlig while-loop där vattentemperatur mäts av, vattenkokaren följer vald måltemperatur och ev. knapptryck registreras och därmed ändrar måltemperaturen. Källkoden finns i sin helhet i Appendix B. Genomförande Projektgenomförandet hade fyra huvudsakliga skeden: projektplanering, sammansättning av hårdvara, kodning samt testning. De fyra momenten genomfördes i huvudsak i nämnd ordning, men processen var inte helt linjär. Exempelvis reviderades ritningen och hårdvarans kopplingar under kod- och teststegen.

Projektplaneringen var projektets första moment. I denna initiala del av projektet fastställdes projektets mål, det vill säga vilken prototyp som skulle byggas. Vidare upprättades även en enkel kravspecifikation och ett kopplingsschema. Sammansättningen av hårdvaran var projektets andra moment och innebar att komponenterna löddes fast i en platta och kopplades ihop med koppartråd och virpistol. Kopplingsschemat som upprättats i projektplaneringen var ritningen som användes. I projektets tredje steg, hårdvarukodningen, kopplades Sous Vide-prototypen, mer precist ATMEGA16-processorn, via JTAG till en dator. I Atmel Studio 7 skrevs koden. Programspråket C användes. Kodningsarbetet delades upp i moduler, exempelvis kod till display och kod för temperaturreglering, och arbetet med varje modul fördelades mellan gruppens medlemmar. Testningssteget hörde tätt samman med hårdvarukodningen. Testningen genomfördes löpande i samband med att nya kodartefakter togs fram. I de fall artefakterna inte uppfyllde kraven återgick arbetet från testning till kodning. Genom sådana kodning-testning-iterationer arbetades en fungerande kod fram. Det praktiska testförfarandet var att via JTAG överföra kod till Sous Vide-prototypens ATMEGA16-processor och därefter använda Atmel Studio 7:s debugger för att lokalisera fel. Resultat Den färdiga prototypen uppfyller alla uppsatta krav i kravspecifikationen. Dock fungerar den endast felfritt när JTAG är inkopplad. Om JTAG inte är inkopplad kan processorn ibland återställa sig ( reset ) då måltemperatur uppnås, troligtvis på grund av brus. Figur 1 och Figur 2 visar hur prototypen såg ut. Figur 1, prototypen i sin helhet

Figur 2, närmare vy över display, processor och knappar Diskussion och slutsatser Sammanfattningsvis lyckades själva prototypbygget väl, men inte helt perfekt. Problemet med att processorn återställde sig i tid och otid var ett som inte lyckades lösas, trots omfattande försök. Gruppmedlemmarna anser trots den mindre defekten på slutprodukten att projektet har varit lyckat. Gruppens handledare med sin stora kunskap och många års erfarenhet kunde inte hitta anledningen till defekten i prototypen. Därmed anser gruppmedlemmarna med sin begränsade kunskap och erfarenhet att det är rimligt att de ej själva lyckas åtgärda defekten och att de är nöjda med sin slutprodukt trots allt. Vidare behöver ett mindre problem med slutprototypen inte nödvändigtvis stå i vägen för projektets större syfte, att lära gruppmedlemmarna om elektronik och prototyputveckling. Snarare är det tvärt om. En lärdom som författarna dragit av problemet med processoråterställningen är att prototyputveckling inte är så rättframt som det kan verka på pappret. Detta kan tyckas som en banal insikt, vilket det också är om man bara fått höra den. Om man emellertid fått uppleva processen och problemen själv rör det sig om en insikt på en helt annan nivå och en insikt som gruppmedlemmarna tror kan vara en viktig pusselbit i framtida arbetsroller. Ser man till detta mer övergripande syfte, är författarna alltså mycket nöjda och har lärt sig mycket. Från att tidigare aldrig ha sett ett datablad kan nu gruppmedlemmarna ta fram väsentlig information om olika hårdvarukomponenter. Ingen hade erfarenhet varken av programmeringsspråket C eller att koppla ihop hårdvarukomponenter men alla har efter att ha genomfört projektet avsevärt bättre förståelse för dessa områden. En av de viktigaste lärdomarna är hur mjukvara och hårdvara faktiskt fungerar tillsammans, inte minst på binär

nivå, och hur tidskrävande och svårt det kan vara att skapa en produkt som kombinerar dessa. Sammanfattningsvis är gruppen mycket nöjd med projektet och de lärdomar det har gett och vill rikta ett stort tack till sin handledare Bertil Lindvall! Appendix A - Kretskoppling Appendix B- Källkod /*

* berra.c * * Created: 2017-04-03 09:35:22 * Author : ine14abe */ #include <avr/io.h> #include <util/delay.h> #define F_CPU 8000000UL; #include <util/delay_basic.h>; //-------------Globala variabler---------- int goaltemp = 40; int currenttemp = 0; //------------- Port Setup -------------------------- void setupports(){ //Sätter riktningen på alla portar rätt. DDRA = 0x06; //0b00000110 DDRB = 0xff; //Sätter hela B-porten utåt. DDRC = 0x00; DDRD = 0xff; //Alla D-portarna utåt. ADMUX = 0b11000000; SFIOR = 0x00; //Testar att koppa denna från föreg rapport //DDRD = _BV(PD1); //DDRD = _BV(PD5); //DDRD = _BV(PD6); Pekar Rs, Rb, E -portarna utåt. //---------------LED------------ void lighton(){ PORTA = _BV(PA1); void lightoff(){ PORTA &= ~_BV(PA1); //--------------Värmeelement------------ void heaton(){ PORTA = _BV(PA2); void heatoff(){ PORTA &= ~_BV(PA2); //--------------Termometer------------ int readtemp(){ _delay_ms(1000); int sumread = 0; for (int i = 0; i < 8; i = i + 1){ ADCSRA = 0b11000110; while(adcsra == 0b11000110){//prescaler 64

// lämnar while-loopen då bit 6 slås om till 0 av hårdvaran vid färdig konvertering int readvolt = ADC; //potentiell felkälla sumread = sumread + readvolt; int temp = (sumread/8)*2.56; temp = temp/10; if(currenttemp!=temp){ currenttemp = temp; printcurrenttemp(); // -------------- Display ------------------ void displaycommand(char c){ //Utför ett command; vilket anges genom c. _delay_ms(200); PORTD &= ~_BV(PD1); // RS 0 PORTD &= ~_BV(PD5); // RW 0 PORTD = _BV(PD6); // E=1 FÖR ATT SÄKERT VETA VAD UTGÅNGSLÄGET ÄR PORTB = c; //Skickar datan. PORTD &= ~_BV(PD6); //Sätter E = 0. Nu läses data av. PORTD = _BV(PD6); // E=1 FÖR ATT SÄKERT VETA VAD UTGÅNGSLÄGET ÄR (ev. kaka på kaka men better safe than sorry) void displayon(){ //Gör skärmen helt redo för vår användning; sätter på skärmen och pekar alla databuss-pins utåt. DDRB = 0xff; //Sätter hela B-porten utåt. DDRD = _BV(PD1); DDRD = _BV(PD5); DDRD = _BV(PD6); // Pekar Rs, Rb, E -portarna utåt. PORTD &= ~_BV(PD1); // RS 0 PORTD &= ~_BV(PD5); // RW 0 PORTD = _BV(PD6); // E=1 displaycommand(0b00111000); //Ställer in FÖRUTSÄTTNINGARNA; antal bitar i databussen, antal rader osv. displaycommand(0b00001100); //Display on, cursor på och blinkande. //displaycommand(0b00000001); //Clearar //displaycommand(0b00000010); //Sätter cursorn på Home void writechar(char c) { _delay_ms(200);

PORTD = _BV(PD1); //Sätter RS till data mode PORTD &= ~_BV(PD5); //Sätter R/W = 0, dvs till write mode. PORTD = _BV(PD6); //Sätter E = 1. PORTB = c; //Skickar datan. PORTD &= ~_BV(PD6); //Sätter E = 0. Nu läses data av. PORTD = _BV(PD6); //Sätter E = 1. void writestring(char string[]){ int i = 0; while(string[i]!= '\0'){ // "\0" betyder "null" i ASCII. writechar(string[i]); //Skriver ut bokstaven. i++; void printstationarytext(){ writestring("temp: "); displaycommand(0b10001110); writechar(0b11011111); //Skriver ut gradertecknet writestring("c"); displaycommand(0b11000000); //Andra raden, första platsen writestring("goal Temp:"); displaycommand(0b11001110); writechar(0b11011111); writestring("c"); void printgoaltemp(){ displaycommand(0b11001100); //Flyttar cursorn till rätt plats char c = goaltemp; char str[3]; sprintf(str, "%d", goaltemp); writestring(str); void printcurrenttemp(){ displaycommand(0b10001100); //Flyttar cursorn till rätt plats char c = currenttemp; char str[3]; sprintf(str, "%d", currenttemp); writestring(str); void welcomemessage1(){ writestring("welcome to");

displaycommand(0b11000000); writestring("optima Sous Vide"); displaycommand(0b00000001); //Rensar displayen displaycommand(0x00); //Sätter cursor i ursprungsläge void welcomemessage2(){ writestring("perfect Food."); displaycommand(0b11000000); writestring("every Time."); displaycommand(0b00000001); //Rensar displayen displaycommand(0x00); //Sätter cursor i ursprungsläge' //--------------Händelser----------- void managetemp(){ if(currenttemp<goaltemp){ heaton(); else{ heatoff(); void signaltemp(){ if(currenttemp>goaltemp-2 && currenttemp<goaltemp+2){ lighton(); else{ lightoff(); int main(void) { setupports(); displayon(); welcomemessage1(); welcomemessage2(); printstationarytext(); printgoaltemp();

while (1) readtemp(); { readtemp(); managetemp(); signaltemp(); if(pind & (1<<PD2)){ //Om PD2 är hög dvs knappen trycks ned _delay_ms(700); goaltemp = goaltemp + 1; printgoaltemp(); else if(pind & (1<<PD3)){ //Om PD3 är hög dvs knappen trycks ned _delay_ms(700); goaltemp = goaltemp - 1; printgoaltemp();