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



Relaterede dokumenter
Arduino kursus lektion 3:

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduino kursus lektion 4:

TinkerCad - Arduino simulator

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Microcontroller, Arduino

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

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

Microcontroller, Arduino

Start på Arduino og programmering

Lektion 6 / Analog Arduino

GSM port styring 400 brugere

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

Arduino Programmering

CANSAT & ARDUINO step by step

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

Undersøgelse teknologi og resurser: Eleverne skal lære om enkel produktudvikling fra ide til implementering.

ARDUINO PROGRAMMERING

CANSAT & ARDUINO step by step

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

Hvorfor & Hvordan lære Elever At programmere Arduinoer

GSM SMS Modem MODEL: SA RTU-1 V1.01

Optimering af fraværsregistrering

Fra programmering til mikroprocessor

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

Dokumentation af programmering i Python 2.75

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

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

Fable Kom godt i gang

Hvorfor & Hvordan lære. at programmere Arduinoer

Farmakonomskolen har valgt at udarbejde undervisningsmiljøvurdering hvert år.

Kom godt i gang med Fable-robotten

Fable Kom godt i gang

Arduino Programmering

Analoge indgange og A/D konvertering. Analoge udgange

Styringsteknik. Et projekt i faget styringsteknik. En rapport af Rune Zaar Østergaard

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm.

Programmering C RTG

Patent nummer: J.nr. US JK7343I. Tlf

Hvorfor & Hvordan lære Elever At programmere Arduinoer

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

Demonstration af transitmetoden

GPS trackeren virker ved hjælp af GSM netværket og GPS satellitterne, og kan bruges til at overvåge og bestemme hvor en enhed befinder sig henne.

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Modeljernbane elektronik for begyndere...og dem der vil igang med at bygge deres egne dekodere

COMPUTER ANATOMI klasse 23. FEBRUAR 2015 HTX - ROSKILDE

Sammenlign og byt. Et eksempel på dokumentering af et program

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

Sommerdrift på en NBE brænder.

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

USB-kabler og drivere

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

Clorius Energistyring. Besparelser med optimal komfort

Niko Home Control. Det smarte hjem

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.

Overbelastning af processor i Windows XP og i Ubuntu

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

Svane Electronic Timer universal med 8 funktioner 1

Fjernbetjening Flex Teknisk manual

Indholdsfortegnelse:

Indeklimaundersøgelse i 100 danske folkeskoler

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang

DC-Motor Controller. Brugermanual

VARMEPUMPE LUFT TIL VAND PRODUKT KATALOG 2011 DANSKSOLVARME APS

Instruktion. MINIGAM+ On/off og analog styring IN217DKA

Michael Jokil

Håndtørrere Design, besparelse og effektivitet

Montørvejledning for DTC2100 Temperaturtyring - Version 1. Generel beskrivelse

CLIMAWIN DET INTELLIGENTE VENTILATIONSVINDUE

LEGO Energimåler. Sådan kommer du i gang

Internt interrupt - Arduino

OMEGA-opgave for indskoling

CA hjertestarterskab HSS101 med AED sensor

Fremtidens kassesystem

INTELLIGENT BOLIGSTYRING

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

Micro:bit. Komponenter i CFU-kasser. Lær komponenterne at kende

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

Energivenlig ventilation til svineproduktion

Intelligent bolig uden besvær

hjertestarterskab/aed - din garanti for en tryg opbevaring!

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

BRUGERVEJLEDNING. El-cykel SCO Premium E-Cargo 2-hjulet, 9 gear / Premium E-Cargo 3-hjulet, 9 gear

NV Comfort Brugervejledning

Klasse 1.4 Michael Jokil

God luftkvalitet giver God livskvalitet!

Dansk El-montage manual Portautomatik

MVT380 Vejledning. Forord. Website: Kontakt: Tillykke med din nye GPS tracker MVT380.

KONSTANT REGN 6 BETJENINGSVEJLEDNING VERSION 18 DATO UDLÆSNING I DISPLAY. - Indtrækshastighed. - Total vandingstid

Pakkens indhold. Ordliste. Powerline Adapter

SSI GSM Fjernbetjenings system for porte/garage døre

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

Få en sund og energivenlig bolig. med 10 gode råd fra Boligkontoret Danmark

Agenda. Flowcomputer / Purgesystem - Menu opsætning

Transkript:

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq Projekt varmemåler wertyuiopåasdfghjklæøzxcvbnmqwe Afsluttende projekt prgrcvf rtyuiopåasdfghjklæøzxcvbnmqwerty Datoen grim Martin Olsen HTX 2.5 uiopåasdfghjklæøzxcvbnmqwertyuio påasdfghjklæøzxcvbnmqwertyuiopåa sdfghjklæøzxcvbnmqwertyuiopåduer entaberghjklæøzxcvbnmqwertyuiopå asdfghjkspahederandcvbnmqwertyui opåasdfghjklæøzxcvbnmqwertyuiopå asdfghjklæøzandrikqwertyuiopåasdf ghjklæøzxcvbnmqwertyuiopåasdfghj klæøzxcvbnjegerentaberiopåasdfghjk læøzxcvbnmqwertyuiopåasdfghjklæø zxcvbnmqwertykewlfghjklæøzxcvbn

Programmering C afsluttende projekt Problem indeklima Indeklima er noget der er blevet forsket meget i, for det er et indholdsrigt emne. Indeklima er også meget vigtigt idet et forkert indeklima kan medvirke til skimmelsvamp og en masse følgesygdomme af netop dette. Et godt indeklima er det mest optimale, og dermed det indeklima der ikke skaber problemer. Måske endda et indeklima der forbedrer folks helbred. Indeklima er noget der tages meget seriøst bla på arbejdspladser og i det offentlige rum (butikker, lufthavne etc.) fordi det kan være til stor gene og have stor indflydelse på mange forskellige ting såsom salg, tilbagevendelse af kunder og personale helbred. Derfor har jeg valgt at lave et produkt der hjælper på en lille del af indeklimaet og også den vigtigste; temperaturen. Når personer sidder stille i et rum med forkert indeklima i længere tid mærker de tydelig effekt. Folk får ofte svag halsbetændelse hvis de sidder i et for koldt lokale, eller i træk. Et for varmt lokale kan derimod desorientere og forsage overophedning. Hvad end det måtte skyldes er det vigtigt at have det komfortabelt indendørs. Mange mennesker er klar over dette, men hvis de er midt i en arbejdssituation har de ikke tid til at sørge for det gode indeklima. For disse mennesker er det essentielt at der er nogen der har tænkt på det, når de nu ikke selv har tid til det. Derfor kunne det være belejligt hvis der var et automatiseret klimaændrende system. Dette findes allerede bevares. Men de alternativer der findes er alle overdrevent avanceret og dyrt, men hvis man er som privatperson siddende derhjemme på sit eget lille hjemmekontor, så er det ikke allemandseje med et klimasystem Allerede eksisterende alternativer: Mange professionelle virksomheder benytter sig af aircondition anlæg. Dette er godt idet det tager luft udendørs luft og enten opvarmer der eller nedkøler det. Det er temmelig essentielt at det er frisk luft der bliver taget ind idet den friske luft er med til at give folk energi, i stedet for at de sidder og sumper i den samme luft hele dagen som efterhånden bare bliver mere og mere sur. Men det der ofte sker med airconditionere er at de larmer, ikke meget, men giver svag ambient irriterende baggrundsstøj. Derudover skaber det kun meget lidt cirkulation i luften, men den bliver dog udskiftet. Det stående problem ved dette er dog at folk ikke mere tænker over hvad et godt klima er da der noget der tænker for dem. Det er faktisk et problem igennem hele informationssamfundet, men det kan vi ikke komme ind på her. Desuden ville det være tvetydigt idet, jeg lige nu sidder og undersøger indeklima for at andre ikke skal tænke på det. Automatikken igennem hele dette fag er det der gør det unikt. Der læres for at andre kan spares. Jeg har derfor undersøgt de forskellige forhold for indeklima der er behov for før man kan kalde det for et godt indeklima. Scientific temperature research http://en.wikipedia.org/wiki/room_temperature Der er forskellige temperatur niveauer anbefalet alt efter hvilken type bygning det er og hvilke personer der skal bruge det. Det er generelt anbefalet at holde et temperatur niveau på mellem 18 og 25 grader. Et

komfortabelt stuerum er gennemsnitteligt 21 grader varmt. Men for et arbejdsrum bør det befinde sig lige omkring 20 grader. Hvis temperaturen er over 22 grader et sted hvor der arbejdes bliver medarbejdere let forstyrrede og for koncentrationsproblemer. Der findes yderligere betingelser for varmeniveauer, men for dette projekt vil jeg blot benytte mig af varmeintervallet 18-22, men det ville være ideelt hvis den maksimale og den minimale temperatur var bruger styret igennem et simpelt interface Kravspecifikationer Alt dette leder mig frem til at skulle lave et system der har forskellige egenskaber der tager højde for alle de følgende krav jeg vil liste op for mit produkt her: Dette produkt skal kunne regulere temperaturen i et rum igennem en åbne/lukke mekanisme af vindue, og i sammenhæng med det regulære varmeapparat der er lokalt placeret i den givne boligsituation. Dette skal den gøre ved at måle på temperaturen og angive om det er for varmt eller for koldt. Den skal kunne skælne mellem en gennemsnittelig rumtemperatur og en plduselig varmepåvirkning. Der kan være et problem i at have et temperatur regulerende system hvis måleren er udsat for en anden varmepåvirkning end den der er givet i rummet. Hvis nu måleren er placeret ved siden af en computerblæser hvor luften bag computeren let bliver over 40 grader. Idet systemet vil gøre alt for at nedsænke temperaturen i et rum som måske kun er 18 grader. Derfor skal systemet også kunne skælne mellem et pludselig påvirkning og en mere permanent temperaturpåvirkning. Systemet skal kunne køre automatisk og uden vedligeholdelse, det skal kunne fungere næsten ubemærket og lydløst. Dokumentation Hardware

Jeg har benyttet mig af et Arduino udviklingsmiljø og en hjemmelavet transducer. *transduceren er lavet af krympeflex, transducerhovedet, og ledninger lodet direkte på fødderne af transduceren så de kan række langt nok. Arduinoudviklingsmiljøet er et elektronikboard der tillader serial-kommunikation gennem et usb-stik til min computer. Dette har et integreret kredsløb indbygget der henter spænding fra computeren Arduino benyttes ved at man skriver et program direkte til chippen i modulet som den så kører. Programmet man skriver kører altså ikke direkte på computeren, men du kan manipulere input/output og hente masser af data ud af systemet som kan manipuleres enten igennem Arduino, eller i andre programmer. Transduceren får strøm igennem det integrerede kredsløb fra arduinoen. Den 3. og sidste ledning sender et signal som er en varierende spænding afhængig af varmen den bliver udsat for. Dette opfattes af computeren Jeg har versionen arduino UNO btw Program Dette program er ikke lig det sædvanlige program, eller application man ser. Dette program er netop skrevet til en chip og kan ikke vises direkte på computeren i nogen form. Derfor er det vigtigt at dette afprøves direkte på arduino boardet. Dette er måske ikke muligt for eksaminator, så jeg vil dokumentere det yderligere længere nede. Mine variabler int sensorvalue = 0; // variable to store the value coming from the sensor int hot = 855; int cold = 851; Dette er de forskellige variable jeg har benyttet mig af I mit program. Det er fixede værdier der definerer hvornår der er varmt og hvornår der er koldt. Disse værdier kan ideelt set ændres, men jeg har ikke lavet et User interface der muliggør netop dette. Derfor er disse givet på forhånd og er kun ændr-bare direkte i koden. De tal der er givet her som varm og koldt er på baggrund af empiriske undersøgelser af det output min transducer gav mig når den blev udsat for forskellig temperatur påvirkning. Disse tal kan omdannes til en mere meningsfuld kode ved at omregne dem til temperaturer, men da det ikke har nogen indflydelse på produktet og da kunden ikke skal kigge i koden, er det ikke relevant. tallene er meget høje og ikke særlig følsomme idet jeg mistede den lille modstand jeg var nede og låne i el.

Integeren for sensorvalue er sat som NULL idet den ikke kan gives på forhånd men i stedet opdateres hver gang et strømsignal modtages void setup() Serial.begin(9600); pinmode(13, OUTPUT); Programmet sættes op, med en baudrate på 9600. Dette er den mængde af informationer der kan sendes per tidsenhed og den er sat til 9600 som er et forholdvist lavt tal i denne sammenhæng fordi det ikke kræves for en følsom måling af temperatur. Jeg definerer også her at mit output er den lille LED lampe der er hægtet på pin 13 på arduino boardet. Denne lampe skal symbolisere en mekanisk handling der har sammenhæng til hele projektet, men her kun er idealiseret. void loop() // read the value from the sensor: sensorvalue = analogread(a0); Serial.print("sensor value: "); Serial.print(sensorValue); Her opsættes den lykke der skal gentages igen og igen forevigt mens programmet kører. Denne lykke afbrydes ikke af noget og kan derfor ses som konstant Variablen sensorvalue som ikke eksisterer endnu bliver defineret ud fra den værdi arduino genkender som analogread. Denne funktion er indbygget og det signal der modtages der bliver omdannet til et input som kan overvåges igennem arduinos monitor. for at organisere monitoren har jeg skrevet direkte til den igennem serial. Sensorvalue: (værdi) Sensorværdien er givet igennem det elektriske signal der sendes igennem signal ledningen. Det er spændingen der specifikt måles på if (sensorvalue>hot) Serial.println("too hot, drop them clothes"); digitalwrite(13, HIGH); Mit første if statement. Dette statement sammenligner sensorværdien på A0 og variablen hot (855) og hvis denne er over, gøres to ting. Den printer, sætningen der symbolisere at det er alt for varmt. Systemet meddeler at der er for varmt efter de standarter den er givet og den udfører en handling. I dette tilfælde,

for at give ideen, har jeg sat den til at tænde den lille lampe der findes på arduinoboardet. Dette ville i det færdige produkt for eksempel have været en motor der kunne åbne et vindue, men det havde jeg ikke til rådighed Den lille lampe der bliver tændt for eksemplet gøres ved at skrive direkte til chippen at den skal sende spænding igennem pin 13 og tænde lampen. else if (sensorvalue<cold) Serial.println("too cold, let's inform the polarbears"); digitalwrite(13, HIGH); I dette tilfælde er det basically det same som før, udover at det nu er afhængigt af at værdien er under den givne værdi for kold. Dette er givet ud fra et else if statement, idet der er to forskellige events der kan forekomme. Er det enten for varmt eller er det for koldt. Hvis ingen af disse, skal der ikke gøres noget else digitalwrite(13, LOW); delay(2500);

Hvis ingen af de to if statements opfyldes skal den ikke gøre noget. Lampen sættes til low hvilket betyder den slukkes. I dette tilfælde symboliserer det at temperatur niveuet er ok, og intet skal gøres. Den måling det baseres på er af forskellige årsager sat til hver 2,5 sekund. Dette gør det mere overskueligt at observere igennem monitoren. Hvis dette blev overvåget igennem et program såsom processing ville det være mere nyttigt at have en højere hastighed. Udvikling Dette program er blevet udviklet på en lidt underlig måde. Ved en kombination af varmemåler og elkedel har jeg haft god mulighed for at teste mit program direkte med masser af iterationer. udviklingsliste: 1. sensormålinger Jeg har lånt lidt af koden fra eksemplet analog read for at kunne måle inputtet fra min transducer 2. grænser Jeg har undersøgt almindeligt indeklima for at sætte to grænser på; for koldt og

for varmt. Disse værdier identificeres og sammenlignes 3. aktion Når grænserne overskrides skal der ske et eller andet for at gøre det godt igen. Dette symboliseres ved at en lampe tændes. Noget sker, men hvis det var et færdig produkt ville jeg programmere på en motor der kunne åbne et vindue. 4. arrays for at sikre at systemet ikke bliver snydt af midlertidige varmepåvirkninger vælger jeg at lave et gennemsnit over de sidste 5 målinger. Når dette gennemsnit er for højt er det et godt tegn på at den varme der er, er vedvarende og der skal gøres noget ved den. Denne array gemmer målingerne indtil de er forældede, og de findes kun i systemet så længe de findes i dette array. De skubbes en plads i indekset hver gang der forekommer en ny måling. int SensVals[5]; int i; int avgtemp;

her opsættes de variabler jeg har brug for i denne sidste iteration. I denne opsætter jeg min array, SensVals. Denne array bliver fyldt op med det direkte input fra sensoren igennem koden nedenfor; analogread(a0). Denne array bliver fyldt med information hver gang koden gentages hvilket den gør med et delay på 5000 milisekunder. Hver gang der kommer ny data flyttes den forhenværende data en plads i systemet, så der altid kun er den nyeste information tilstede. SensVals[4]=SensVals[3]; SensVals[3]=SensVals[2]; SensVals[2]=SensVals[1]; SensVals[1]=SensVals[0]; SensVals[0] = analogread(a0); for (i = 0; i < 5; i = i + 1) if(i!=0 && SensVals[i]) Serial.print("sensor value "); Serial.print(i); Serial.print(" measurements ago: "); Serial.print(SensVals[i]); avgtemp=((sensvals[4]+sensvals[3]+sensvals[2]+sensvals[1]+sensvals[0])/(i+1)); else if(i==0) Serial.print("sensor value now: "); Serial.print(SensVals[i]); I denne for statement forefindes der megen gøgl. Her fremvises avgtemp også for første gang. Denne opdateres i takt med min array. Og som en fin lille detalje så findes gennemsnittet vha i, da i også bruges til at angive mængden af dataobjekter i min array. Derfor er de første 4 læsninger også korrekt udregnet. **Yderligere betænkning vedr. dette projekt kunne være vedrørende markedsføring eller firmagrundlag. Et arduino board UNO koster 200 kroner alene og en transducer kan laves for cirka 10 kroners materialer. Jeg forestiller mig at at færdig produkt ville ligge i samme ende. Den specielmassefremstillede chip bliver nok meget billigere, og kan laves for måske lidt under 100 kroner, mens materialerne for en transducer ikke kan reduceres markant. Desuden ville et færdigt produkt have lagt et finish, således at man ikke direkte kunne se chippen men blot kunne se måleren. Måske var denne endda pakket ind i en kasse eller noget. Men alt i alt ville det hele nok ende i 150 kroner. Kunne man så tilkoble en motor til et vindue skulle det tilpasses til vinduet og spørgsmålet er om det skal tilpasses

specifikt hjemme hos en enkeltperson, eller om det skal tilpasses en stor række standardiserede vinduer. Hvis det skal skræddersys og løber det efterhånden nok op mod de 500 kroner hvis en håndværker skal sætte det i stand og en lille motor skal tilkobles. BILAG Ren kode int sensorvalue; // variable to store the value coming from the sensor int hot = 855; int cold = 851; int SensVals[5]; int i; int avgtemp; void setup() Serial.begin(9600); pinmode(13, OUTPUT); void loop() // read the value from the sensor: SensVals[4]=SensVals[3]; SensVals[3]=SensVals[2]; SensVals[2]=SensVals[1]; SensVals[1]=SensVals[0]; SensVals[0] = analogread(a0); for (i = 0; i < 5; i = i + 1) if(i!=0 && SensVals[i]) Serial.print("sensor value "); Serial.print(i); Serial.print(" measurements ago: "); Serial.print(SensVals[i]); avgtemp=((sensvals[4]+sensvals[3]+sensvals[2]+sensvals[1]+sensvals[0])/(i+1)); else if(i==0) Serial.print("sensor value now: "); Serial.print(SensVals[i]);

Serial.print("average temperature:"); Serial.print(avgtemp); Serial.println(""); if (avgtemp>hot) Serial.println("Note:"); Serial.println("It is too hot in here, i am opening your window"); digitalwrite(13, HIGH); else if (avgtemp<cold) Serial.println("Note:"); Serial.println("It is too cold, i am turning up the heat"); digitalwrite(13, HIGH); else digitalwrite(13, LOW); delay(5000);