2016 Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN
Innehållsförteckning INLEDNING... 3 KRAVSPECIFIKATION AV PROTOTYP... 3 FUNKTIONELLA KRAV... 3 Mäta temperatur... 3 Visa temperatur... 3 Lagra temperatur... 3 Varna för avvikande temperatur... 3 KVALITETSKRAV... 3 Dataupplösning... 3 Dataavvikelse... 3 Displayupplösning... 3 HÅRDVARUSPECIFIKATION... 3 PROCESSOR... 3 KEYPAD... 4 KEY ENCODER MM74C922... 4 DISPLAY GDM12864C (RED)... 4 USB- MODUL USB/PARALLELLPORT DIL, UM245R... 4 DIODER... 4 ÖVRIGT... 4 ARBETSGÅNG... 4 PLANERING... 4 KONSTRUKTION... 5 MJUKVARA... 5 DISKUSSION... 5 KÄLLHÄNVISNING... 6 BILAGOR... 6 BLOCKSCHEMA... 6
Inledning Denna rapport beskriver det projektarbete som utförts av grupp 14 under vårterminen 2016 inom ramarna för kursen Digitala Projekt under handledning av Bertil Lindvall. Projektet är en konstruktion av en prototyp av en temperaturmätare och syftet med projektet är att illustrera industriellt utvecklingsarbete. Kravspecifikation av prototyp Funktionella krav Ordet temperatur nedan syftar på inomhustemperatur. Mäta temperatur Väderstationen skall mäta den aktuella temperaturen. Visa temperatur Väderstation skall visa den aktuella temperaturen på en display. Detta ska ske via en graf med tidsaxeln över de senaste 24 timmarna. Lagra temperatur Väderstationen skall lagra den aktuella temperaturen. Historisk data ska gå att visa på displayen med tillhörande tidsstämplar. Temperaturen ska lagras på en extern dator. Dessa datapunkter ska lagras på formen Temperatur - Minut: Timme - Dag / Månad Varna för avvikande temperatur Väderstationen skall varna om temperaturen sjunker under 0 eller stiger över 25 grader Celsius. Denna varning skall ske med en röd respektive blå diod. Kvalitetskrav Dataupplösning Temperaturen skall visas med en upplösning om 0.1 grader Celsius. Dataavvikelse Den uppmätta temperaturen får avvika max 0.5 grader Celsius ifrån den reella temperaturen. Displayupplösning Displayen skall ha tillräckligt god upplösning samt layout för att kunna avläsas med enkelhet utan manual. Hårdvaruspecifikation Processor Vi blev tilldelade en 8- bitars ATmega16 processor. Denna processor har ett inbyggt minne på 16kb. Detta är alldeles för lite minne för att kunna lagra all den historiska data som vi vill
kunna göra. Därför valde vi att komplettera processorn med extern USB- lagring för att kunna lagra tillfredställande många mätpunkter. Processorns 8 A- portar har inbyggd A/D omvandlare som kan omvandla ett spänningsvärde till ett digitalt värde. Denna funktionalitet kommer att användas för att tolka insignal från termometern. Keypad En knappsats med 4x4 stycken knappar användes. Key Encoder MM74C922 För att framgångsrikt tolka signalen ifrån knappsatsen används en key encoder av modell MM77C922. Signalen ifrån knappsatsens åtta ut- pinnar översätts i key encoder till en binärkod från fyra vidareportar. Koden ifrån key encoder till processorn består alltså av binära kombinationer av fyra signaler, vilket ger 2^4 möjliga signaler till processorn. Dessa 16 olika kombinationer motsvarar därför en av de 16 knapparna på knappsatsen. Utan key encoder hade antalet möjliga kombinationer varit 2^8, vilket hade försvårat arbetet med att tolka signalerna betydligt. Display GDM12864C (RED) För att grafiskt kunna representera temperaturen, eller mer specifikt kunna representera temperaturförändringar, använder vi oss av GDM12864C 128x64 Graphic Display. Valde denna display av två anledningar 1) Den kan generera en grafisk presentation och 2) den innehåller två skärmar, vilket lämpar vårt krav om att kunna representera både ute och innetemperatur. Vardera skärm innehåller 64x64 pixlar, vilket tillsammans utgör hela skärmen. USB- modul USB/Parallellport DIL, UM245R För att effektivt kunna använda extern lagring genom en USB kontakt så valde vi en UM245R USB omvandlare. DIODER Två lysdioder (en röd och en grön) används för att varna vid för kall eller för varm temperatur. Övrigt I övrigt användes bland annat motstånd, kondensatorer och sladdar. Arbetsgång Planering Planeringsfasen av projektet inledes med att vi beslutade om önskad produkt och diskuterade vilja funktionaliteter vi önskade implementera. Denna diskussion tog sedan
formen av en kravspecifikation, där de olika kraven delades in funktionella och kvalitativa krav. Efter att kravspecifikationen förbättrats genom en iterativ process med handledaren så började arbetet med att välja lämpliga komponenter. I detta steg erbjöd handledare Bertil Lindvall mycket hjälp och olika komponenters begränsningar diskuterades utförligt. Efter detta valdes komponenter. När komponenterna hade valts fortsatte arbetet och gruppen fokuserade på att upprätta ett kopplingsschema. För att upprätta kopplingsschemat användes programmet PowerLogic och datablad för de ingående komponenterna. Det var även i detta steg som de faktiska beslutet om vilka komponenter som skulle dela buss togs. Konstruktion I enlighet med kopplingsschemat i PowerLogic så började vi arbetet med att löda fast komponenterna på lämpliga ställen på kretskortet. Sedan fästes alla sladdar, resistorer, och kondensatorer. Mjukvara Programkoden skrivs i programmeringsspråket C i kodhanteringsprogrammet och kompilatorn Atmel Studio version 6. En J- Tag används för att överföra koden till processorn. I samband med detta kunde vi kontrollera våran konstruktion genom att slå på olika portar och mäta strömmen High respektive Low med en Strömpenna. Koden testas genom iterativa undersökningar på den fysiska konstruktionen. Diskussion En av de största utmaningarna som gruppen ställdes inför var att sätta sig in i det nya programmeringsspråket C. Framförallt har det varit svårt att samtidigt växla mellan olika programmeringsspråk ( C, C++ och C#) och olika programkompilatorer. Debuggern var mycket hjälpsam för att lösa problemen med koden. Även datablad har varit mycket hjälpsamt och samtliga gruppmedlemmar har lärt sig att sålla den stora mängden information som presenteras och ta ut det som är viktigt. Konstruktionen däremot gick relativt smärtfritt, mycket tack vare de laborationer och föreläsningar som förbättrat förståelsen kraftigt innan. Förståelsen för samspelet mellan mjukvaran och hårdvaran var också en utmaning och möjligtvis också det absolut mest lärorika då det är något som utmärker denna kurs från övriga kurser i utbildningen som vi går. Ytterligare en värdefull erfarenhet som gruppmedlemmarna tar med sig är hur givande det kan vara att be om hjälp och tips från kurskamrater och handledare och samtidigt dela med sig av kunskaper till andra. Även internet, med videor och tutorials, är en guldgruva för effektiv informationssökning.
Källhänvisning Atmel Corpoartion (2004). 8- bit AVR Microcontroller with 16K Bytes In- System Programmable Flash ATmega16 Bilagor Blockschema