Arduinostyret klimaanlæg Afsluttende projekt programmering C



Relaterede dokumenter
Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

danske karakterer på Lcd

Start på Arduino og programmering

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Analoge indgange og A/D konvertering. Analoge udgange

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

Fra programmering til mikroprocessor

LCD intro. LCD Character display-intro. Redigeret 4/6-2019

TinkerCad - Arduino simulator

Internt interrupt - Arduino

Arduino kursus lektion 3:

Enes Kücükavci Roskilde Tekniske Gymnasium Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.

Automatisering Af Hverdagen

Alt elektronik heri er købt via og arduino udviklingssoftware er hentet fra

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen.

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Arduino kursus lektion 4:

Michael Jokil

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Automatisk varmeregulering

EKSEMPEL PÅ ELEVOPGAVE TIL ARBEJDET MED PROGRAMMERING AF ARDUIONO MED LED BÅND

Computerspil. Hangman. Stefan Harding, Thomas Bork, Bertram Olsen, Nicklas Thyssen og Ulrik Larsen Roskilde Tekniske Gymnasium.

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner

Brug af digitale ind og udgange

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Af: Safa Sarac Klasse 3.4 Skole: Roskilde Tekniske Gymnasium, HTX Vejleder(e): Karl B Dato: 26. marts 2012

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq

Programmering 19/ ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen

Microcontroller, Arduino

Paul A. Jensen ApS. Driftvejledning. Beluftningsstyring RAKOTROL type LCD

Microcontroller, Arduino

Forord. Mathias Lønstrup Poulsen, Anders Kusk og Jacob Østergaard 25. april 2009 Eksamens projekt: Bil moduler

5/11/2015. Programmering. Hussein Al-Saidi ROSKILDE TEKNINSK GYMNASIE VEJLEDER: CHRISTOFFER S.

Fag: Projekt E1PRJ1 Emne: Testdokumentation Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Klasse 1.4 Michael Jokil

Sous-vide: Mad og elektronik i én skøn forening

Guide til din computer

Projekt Træningsmaskine

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

CANSAT & ARDUINO step by step

Optimering af fraværsregistrering

Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

Portfolio - prøvemappe. Navn: Rami Kaddoura Fødselsdagsdato: 26/08/1993 Klasse: 3.4 Skole: Roskilde tekniske gymnasium, HTX Dato: 31/03/2012

Valgfrit tema. Kommunikation/IT Jannik Nordahl-Pedersen. HTX - Roskilde. Klasse 3.5

Visualiseringsprogram

Sommerdrift på en NBE brænder.

ARDUINO PROGRAMMERING

Dokumentation af UR Med børnetimer til TV-visning

HTX, RTG. Rumlige Figurer. Matematik og programmering

CANSAT & ARDUINO step by step

Demonstration af transitmetoden

Lektion 6 / Analog Arduino

Programmering C RTG

Undervisningsbeskrivelse

Informationsteknologi

App til museeum Af Alan Mohedeen 3.5

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Computerspil rapport. Kommunikation og IT. HTX Roskilde klasse 1.4. Casper, Mathias Nakayama, Anders, Lasse og Mads BC. Lærer - Karl Bjarnason

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre

Intro til AVR. Mads Pedersen, OZ6HR

Arduino Programmering

Manual KlimaC SMS Box. Dioder for fjernbetjening skal pege mod varmepumpen (afstand 6 m.)

Temperaturmåler. Klaus Jørgensen. Itet. 1a. Klaus Jørgensen & Ole Rud. Odense Tekniskskole. Allegade 79 Odense C /

Manual. IMage Elektronisk styring med varmeregulering. Type

Brugervejledning. Fjernbetjening display MT-5

Af: OZ7EC Erik Christiansen Chiptemperatur med Arduino

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Computerens Anatomi KOM/IT

Det skrå kast, en simulation

Online billede filtrering

Infographic Klasse arbejdsmiljø

Undervisningsmateriale - Rapport

Informatik C robotter

Computerens - Anatomi

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

Undervisningsbeskrivelse

Termodynamisk oplader

Matematik A og Informationsteknologi B

Arduino Programmering

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

En krystalstabil oscillator til dit næste projekt

Projektbeskrivelse. IT B og Programmering C. Klasse 3.4. Louis Drejer, Markus Duus og Mikkel Jensen. Fra

Hvorfor & Hvordan lære. at programmere Arduinoer

Software Dokumentation

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

Rasmus Kibsgaard Riehn-Kristensen

Transkript:

Arduinostyret klimaanlæg Afsluttende projekt programmering C Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleverings-dato: 02-03-2012 Afleverings-dato: 11-05-2012 Programmeringvejleder: Karl G. Bjarnason ROSKILDE TEKNISKE GYMNASIUM Side 1 af 14

Indholdsfortegnelse Indledning...3 Problemstilling og løsning...3 Forudsætninger for løsning...3 Flowchart...4 Implementering...5 Prototype 1...5 Prototype 2...6 Prototype 2.1...7 Prototype 3...8 Færdige produkt og videreudvikling...9 Konklusion...10 Bilag...11 1. Diagram Prototype 1...11 2. Diagram Prototype 2...12 3. Diagram Prototype 3...13 4. Kildekoden...14 z Side 2 af 14

Indledning I forbindelse med eksamens-projektet i programmering, fik vi stort set frie tøjler. Vi skulle selv komme frem med en problemstilling vi ville løse. Til denne selv valgte problemstilling fik vi også selv mulighed for at vælge i hvilket udviklingsmiljø vi ville løse den. Projektet vil være en kombination mellem Informationsteknologi B og programmering C. Der vil være et fælles produkt, men hvert fag vil have hver sin dokumentation. Da jeg har valgt at arbejde alene i projektet har jeg også selv skulle vælge problemstilling og udviklingsmiljø. Det har hurtigt været besluttet at udviklingsmiljøet skulle omhandle et arbejde med Arduino, derfor er problemstillingen også nød til at være mulig at løse med Arduino. Problemstilling og løsning Den problemstilling der er fundet frem til at være gældene for mit projekt, er problemstillingen med indendørsklima. Et dårligt indeklima nedsætter ens præstationsevner og koncentration. Dette er en problemstilling jeg er kommet frem til da jeg selv ved hvordan det er at arbejde koncentreret i et dårligt indeklima. Der er også fundet videnskabelig dokumentation, der viser de negative effekter et højt CO 2 niveau og ubehagelig temperaturer har på en persons koncentration og præstationsevner 1. Da produktet der skal laves for at løse problemstillingen skal laves i med arduino, er det blevet besluttet at der skal laves et primitivt klimaanlæg som løsning. Dette klimaanlæg skal kunne måle og vise en temperatur, og i forhold til et valgt middeltemperatur kunne skrue op eller ned for varmen. Forudsætninger for løsning Forudsætningerne der er til produktet, omfatter de redskaber og værktøjer der skal være til rådighed for at prototyperne kan laves. De fordudsætnigner der kræves for at prototyperne kan fremstilles er: Arduino Uno board Fumlebræt LM35 standardkomponent Ledninger Modstande af forskellige størrelser Varme og kuldeblæser, men skolen har ikke nogen så har illustreret dem ved brug af dioder 2*16 bits display Arduino's egen software til kodeskrivning 1 http://www.indeklimaportalen.dk/indeklima/luftkvalitet/maaling/indendors_co2.aspx Side 3 af 14

Flowchart Der er blevet lavet et flowchart der skal vise hvordan gennemgangen af programmet skal foregå. Ud fra dette flowchart skal der skrives et program til arduinoen Temperaturmåler ARDUINO Sammenligner data i forhold Til angivet min/max temp. Over max. Under max. - Over min. Under min. Kuldeblæser starter Kulde/varme- Blæser slukket Varmeblæser starter Side 4 af 14

Implementering Prototype 1 Helt grundlæggende skal der laves en temperaturmåler, hvor arduinoen kan reagere på den målte data. En temperaturmåler har vi som et standardkomponent, en LM35. Datablad til dette komponent, vil være vedhæftet i bilag. Den første prototypes formål er egentlig at få arduinoen til at opfange og beregne en målt temperatur. Opstillingen og kildekoden er dokumenteret her, diagram over opstillingen er vedhæftet som bilag. Det lykkede at lave en opstillingen hvor LM35'eren reagerede på ændringer i temperaturen. Der blev skrevet en kildekode der omsatte de mv som temperaturmåleren sendte til arduinoen, om til en temperatur på celcius grader. Det har dog ikke løst problemstillingen med at starte en varme eller kuldeblæser, men som tidligere nævnt, så var den første prototypes formål, at få lavet en temperaturmåler der kan opfange temperatur i celcius grader. Kildekoden der er lavet her vil være den resten af projektet er bygget videre op omkring. Side 5 af 14

Prototype 2 Da arduinoen ikke har processerkraft nok til at den kan trække varme og kuldeblæsere, er de begge blevet erstatet af en rød og en blå diode for at illustrere varme eller kulden. Eftersom der skal være to dioder, skal der være en grænse imellem hvor de hver især tænder. Hvis de begge er tændt på samme tide, så udligner de bare hinanden og der vil ikke være nogen temperaturændring. Samtidig må vi også gå ud fra at der må være et eller andet temperatur interval der vil bliver betragtet som behagelig temperatur. Derfor skal der være en maximum og en minimumsgrænse der indikerer ved hvilke temperaturer de to forskellige blæsere skal starte. I den del af kildekoden der er vist, er der et melleminterval på 0.5 grader. Denne kan ændres efter hvad der nu ønskes. Denne prototype løser faktisk problemstillingen, men den er dog et bug. Lige omkring intervalskift er der en del flimren når dioden skifter mellem tændt og slukket. Dette skal rettes. For ellers vil blæseren hele tiden svinge mellem tændt og slukket imellem intervalskift. Side 6 af 14

Prototype 2.1 Kildekoden skal ændres således at den holder sin sidste værdi indtil den får noget nyt at vide. Istedet for et direkte intervalskift kommer der et nyt lille interval på 0.2 grad. I det lille interval holder dioden den sidste værdi den fik. Derfor kan temperaturen godt have nogle minimale små svingninger, men så længe de er mindre end 0.2 grad, så vil der ikke komme noget flimren Side 7 af 14

Prototype 3 Som vi så ved evalueringen af prototype 2, så er problemstillingen faktisk løst i forhold til dårligt klima ved ubehagelige temperaturer i et lokale. Dog er det meget primitivt. Det var selvfølgelig et krav at det skulle være simpelt, men ikke primitivt.da der også var et krav om at det kunne fungere uafhængigt af brugen af computer. Derfor skal der tilføjes et display som kan vise temperaturen i lokalet. Der er blevet tilkoblet et 16*2 bits LCD display. Dette displays formål er at vise den nuværende temperatur i lokalet. Side 8 af 14

Dette har ikke løst problemstillingen på nogen bedre måde, det er blevet mere brugervenligt og informationspræget at du kan se temperaturen i rummet. Derfor er den tredje prototype ikke en bedre løsning, men mere en mere informationspræget løsning. Færdige produkt og videreudvikling Dette er langs fra den færdige prototype. Der er stadig en del forbedringer at lave. Et produkt kan altid forbedres mere, eller man kan stille flere krav til det. Nogle idéer til videreudvikling på produktet kunnne være at det skal være muligt at ændre intervalerne mellem de to grænser. Altså du skal via nogle knapper og aflæsning i displayet kunne vælge hvilke temperaturer de forskellige blæsere skal starte ved. En meget passende videreudvikling kunne også være at kombinere mit løsningsforslag sammen med løsningsforslag 1, således at det blæserne også reagerer på om det er nogen, og hvor mange personer i et lokale. Side 9 af 14

Konklusion I dette afsluttende projekt er der er blevet arbejdet med en selvvalgt problemstilling der omhandler dårligt indendørsklima. Til den problemstilling, skulle vi selv finde på en løsning der måtte være lavet i hvilket som helst udviklingsmiljø. Der arbejdede jeg for første gang mere i dybden med arduino, og har prøvet at have en hvis form for interaktionen mellem alle elementerne der har været i min løsning. Altså interaktionen mellem måler og arduino og derefter den pågældene respons i form at dioder. Gennem flere implementeringer af forskellige prototyper med arduino er der begyndt at komme en indskrænkelse der nærmer sig et mere brugbart færdigt produkt. Det er bare et spørgsmål om flere iterationer. Side 10 af 14

Bilag 1. Diagram Prototype 1 Side 11 af 14

2. Diagram Prototype 2 Side 12 af 14

3. Diagram Prototype 3 Side 13 af 14

4. Kildekoden // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); float temp; int temppin = 0; const int ledtemplav = 8; const int ledtemphoj = 9; void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("temperatur:"); } void loop() { temp = analogread(temppin); temp = temp * 0.48828125; Serial.println(temp); if (temp >= 27) { digitalwrite(ledtemphoj, HIGH); } if (temp <= 26.8) { digitalwrite(ledtemphoj, LOW); } if (temp<= 24.8) { digitalwrite(ledtemplav, HIGH); } if (temp >= 25.0) { digitalwrite(ledtemplav, LOW); } lcd.setcursor(0, 1); lcd.print(temp); lcd.print((char)223); lcd.print("c"); } Side 14 af 14