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

Relaterede dokumenter
Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt programmering C

danske karakterer på Lcd

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

Start på Arduino og programmering

Analoge indgange og A/D konvertering. Analoge udgange

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

Arduino kursus lektion 3:

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

Internt interrupt - Arduino

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

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

Brug af digitale ind og udgange

ARDUINO PROGRAMMERING

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

Automatisering Af Hverdagen

Fra programmering til mikroprocessor

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

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

CANSAT & ARDUINO step by step

Arduino kursus lektion 4:

Arduino Programmering

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

Microcontroller, Arduino

Lektion 6 / Analog Arduino

TinkerCad - Arduino simulator

Optimering af fraværsregistrering

Af: OZ7EC Erik Christiansen Chiptemperatur med Arduino

Automatisk varmeregulering

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

Microcontroller, Arduino

Software Dokumentation

GT2000 GT2000. Brugervejledning

// Definition af porte og funktioner

CANSAT & ARDUINO step by step

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

LCD Character display Intro

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

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

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

DM536. Rapport og debug

Indholdsfortegnelse:

LabQuest Manual Til indsættelse af hukommelseskort (SD-kort) til at forøge dataloggerens hukomelse

ELCANIC A/S. ENERGY METER Type ENG110. Version Inkl. PC program: ENG110. Version Betjeningsvejledning

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde

Mini SRP. Afkøling. Klasse 2.4. Navn: Jacob Pihlkjær Hjortshøj, Jonatan Geysner Hvidberg og Kevin Høst Husted

Hvorfor & Hvordan lære Elever At programmere Arduinoer

1. Installere Logger Pro

Projekt Træningsmaskine

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

Intro til AVR. Mads Pedersen, OZ6HR

Fang Prikkerne. Introduktion. Scratch

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

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

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

Dokumentation af UR Med børnetimer til TV-visning

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

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

Hvorfor & Hvordan lære. at programmere Arduinoer

Gruppemedlemmer gruppe 232: Forsøg udført d. 6/ Joule s lov

Bruger manual AGAM kontrolboks

Computeren inderst inde

Dyr i bevægelse. Måling af iltforbrug hos fisk. Arbejdsark til eleverne. Naturhistorisk Museus Århus

Programmering for begyndere Lektion 2. Opsamling mm

ProfiScale MULTI Multimeter

SOFTWARE DOKUMENTATION

Fysik og Arduino. Af Jan Boddum Larsen, Teknisk Erhvervsskole Center, TEC, HTX-Lyngby

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

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

Mircobit Kursus Lektion 1

Hvorfor & Hvordan lære Elever At programmere Arduinoer

SAS816WHB-0-RF TRÅDLØS RUMTERMOSTAT

Brugervejledning. Fjernbetjening display MT-5

Beskrivelse af vejrstation OM1 NETLON NETLON. Dette dokument indeholder en beskrivelse af en vejrstation OM1 fra Netlon.

Fjernbetjening Flex Teknisk manual

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

Arduino Programmering

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.

Undervisningsbeskrivelse

KOMPONENT BESKRIVELSE

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

ME Control Bruger Manual

QUICKGUIDE multiguard Klima

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

OVERVÅGNINGSSYSTEM FICO-64» MONTAGEANVISNING

Arduino opgaver. For at få hjælp til at lave opgaverne, brug Arduino-kompendiet, eller søg på nettet!

LOGO!Soft Comfort version 4.0 Hurtig i gang med LOGO! Soft Comfort

X88S. SMS fjernstyring til sommerhuse

BrunataNet GateGPRS med fast strømforsyning

Installationsmanual SuperSail Marine Alarm Marine Alarm Wireless

Michael Jokil

Vi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Manual. IMage Elektronisk styring med varmeregulering. Type

Arduino opgaver Teknologi

Transkript:

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4

Indledning I dette projekt skal vi arbejde med dataopsamling og regulering. Det vil vi gøre ved at opsamle værdier for noget i dagligdagen, f.eks. temperatur, luftfugtighed, tryk, kuldioxidkoncentration e.lign. Herefter skal data evalueres og bruges til at tænde/slukke for andre enheder, f.eks. en diode, ventilator, affugter e.lign. Til projektet bruger vi arduino platformen. Arduino er et opensource hardware- og softwaresystem, som er lettilgængeligt og nemt at komme i gang med. Arduinohardwaren er et stykke printplade med en programmerbar mikrochip, usb-tilslutning, 2.1mm ac tilslutning og diverse pins, både analoge og digitale, hvor alle mulige elektriske komponenter kan tilsluttes og give programmet mulighed for både input og output. Projektbeskrivelse Vi har valgt at lave et temperaturafhængigt reguleringssystem. Ideen med produktet er, at temperaturen skal måles. Hvis temperaturen er under en fastsat nedre grænse, så skal et varmelegeme tændes og hvis temperaturen er over, så skal en ventilator tændes. På den måde kan man bygge en simpel automatisk varmestyring, som bruges mange steder i hverdagen, som f.eks. i nyere biler med klimaanlæg. Vi erstatter dog varmelegemet og ventilatoren med hhv. en blå og rød diode, så man i stedet kan aflæse, at temperaturen ikke er i orden. Dette har vi valgt at gøre, da det gør den elektriske del af projektet mere simpelt og selve programmeringsdelen er stadig den samme. Hvis produktet skulle implementeres i et hus, så skulle man bruge nogle transistorer til at åbne for strømmen til f.eks. et varmelegeme, da det kræver en større spænding og strøm end selve styreenheden, som vi skal programmere. Dette bruger vi i projektet Komponenter Arduino printplade Temperaturmåler 3 farvet LED (rgb-led) Display Strømforsyning (9v blokbatteri) Software Arduino IDE Evt. Processing Arduino IDE bruges til at indskrive og kompilere programkode, som kan køres på arduino'en. IDE'en er simpelt opbygget med et tekstfelt til koden, en kompilerings- og en uploadknap. Der er også en række eksempler, som man kan uploade direkte for at teste funktionaliteterne. I Arduino IDE har man også mulighed for at skrive til og læse fra serielporte, så man f.eks. kan læse output fra arduino'en mest til test og debugging, da man ikke kan bruge serieloutputtet direkte i Arduino. Her skal man bruge programmet Processing i stedet, som indeholder kode, som i modsætning til Arduino IDE kan køres på computeren. Man kan i processing lave et program, som læser serieloutput og f.eks. tegner en graf over data. Sproget i Arduino IDE og Processing er det samme og kaldes Processing, som er baseret på andre kendte sprog som C

og java. Sproget minder utroligt meget om java efter vores mening så meget at man stort set ville kunne køre et simpelt Arduino program, som et java program. Kalibrering Den temperatursensor vi bruger har 10-bit præcision, hvilket betyder at den giver et analogt output mellem 0 og 1023. Hvis den f.eks. kan tåle temperaturer mellem -30 C og +50 C, så vil præcisionen være: 80 C/1024=0,08 C hvilket må siges at være rigelig p ræsision. Usikkerheden ligger altså i hvor præcist føleren indstiller sig, og bliver kalibreret. Vi kan jo ikke bruge en værdi, som 452,5. Vi vil hellere have et output som 23,2 C. Vi har målt temp eraturer forskellige steder, både med temperaturføleren og et digitalt termometer, som er kalibreret. På den måde har vi fået nogle datapar, som man kan analysere matematisk. Sensor værdi C 471 22,6 409 16,2 281 2,1 640 41,0 Herunder kan man se punkter fra vores lille dataopsamling indsat i et koordinatsystem. Det så ud til, at der var en lineær sammenhæng, så vi bedte programmet om at lave en lineær regression, hvorved vi fik nedstående funktionssammenhæng. Denne funktion bruger vi i programmet, når vi skal omsætte de målte værdier til noget, som et menneske skal kunne forstå. 45,0 40,0 35,0 30,0 25,0 20,0 15,0 10,0 5,0 f(x) = 0,11x - 28,26 R² = 1 0,0 250 300 350 400 450 500 550 600 650 700

Kildekoden Al kildekode i Arduino består af tre dele. I første del bliver alle variabler defineret. De to andre dele, er henholdsvis setup og loop. I setup delen, bliver al koden som kun skal køre én gang kørt. Loop delen er ligesom et hvert andet loop, som bliver ved med at køre. Her er selve programmets kode. I dette projekt som omhandler dataopsamling, vil komponenterne til at opsamle data initialiseres i setup delen, og dataen bliver opsamlet og processeret i loop delen. Variabler Første linje af kildekoden importerer et bibliotek, så der kan arbejdes med LCD-displayet. Dernæst initialiseres en variabel af typen LiquidCrystal, lcd. Objekttypen LiquidCrystal kommer fra det importerede bibliotek. De næste linjer (5-12) laver variabler som bestemmer de forskellige komponenters pinnumre og opsætter nogle variabler ved at give dem en start-værdi. De sidste to linjer er kommenteret ud. De beskriver de to ligninger der skal til for at konvertere Arduino ens input (0-1023) til grader celsius, og den anden vej. #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8); int sensorpin = 1; int bluepin = 10; int greenpin = 11; int redpin = 12; int sensorvalue = 0; int mintemp = 20; //Celsius int maxtemp = 25; //Celsius float temp = 0.0; //sensor->degree 0.10821788*x - 28.2626 //degree->sensor 9.2401825*x + 261.17276 Setup Setup delen af koden kører ligesom initialisationen af variablerne kun én gang. Setup delen er et krav for Arduino-koden, så den kan kompilere korrekt. Linjerne 1-4, sætter de tre dioders pins til output, så der kan sendes en tilstrækkelig spænding gennem dem. void setup() { pinmode(greenpin, OUTPUT); pinmode(redpin, OUTPUT); pinmode(bluepin, OUTPUT); lcd.begin(16, 2); lcd.clear(); lcd.print("temp:"); Femte linje starter displayet, så der kan sendes kommander til det. Sjette linje visker det rent, og syvende linje skriver Temp:. Syvende og sidste linje flytter cursoren til næste linje, så det næste der bliver skrevet starter der. Loop Loop delen er der hvor selve programmet kører. Derfor er det oftest den længste del af kildekoden. I dette tilfælde aflæses temperaturen og den konverteres til grader. Derefter sammenlignes den med variablerne mintemp og maxtemp, som blev initialiseret i starten af kildekoden. Ud fra disse resultater, tændes den rigtige diode, og temperaturen skrives til displayet. De tre dioder lyser således: rød = over maxtemp, grøn = mellem maxtemp og mintemp. Og den blå lyser når temperaturen er under mintemp. Temperaturen sammenlignes med variablerne mintemp og maxtemp med en række if-statements. Den korrosponderende diode tændes så, og de to andres slukkes. Den første linje læser værdien fra temperaturmåleren. Derefter bliver den konverteret til grader celsius, så den kan sammenlignes med start-værdierne. På linje 5 starter et if-statement, som tjekker hvilket interval temperaturen ligger i. Linje 6-8 tænder og slukker nogle af dioderne. De to input i syntaksen er henholdsvis pinnummer og tilstand. HIGH svarer til at tænde den, og LOW til at slukke.

Det næste if-statement tjekker om temperaturen er positiv eller negativ. Hvis den er positiv, skrives der et mellemrum først, både for at fjerne minusset hvis det har været der før, og for at temperaturen er indskudt ens. Til sidst skrives C for at vise at det er grader celsius. Da mange programmer bruger forskellige udvidede asciitabeller, vil det være svært at finde præcis den som bruges i et bestemt program. For at finde det rigtige tegn, kørte vi en lille løkke, som skriver hvert ascii tegn. Ud fra det kunne vi finde tegnets asciiværdi. Det viste sig at i dette tilfælde er ascii-værdien 223. void loop() { sensorvalue = analogread(sensorpin); temp = (float)((int)((((float)sensorvalue * 0.10821788) - 28.2626)*10))/10; if (temp > maxtemp) { digitalwrite(redpin, HIGH); else if (mintemp < temp && temp <= maxtemp){ digitalwrite(greenpin, HIGH); else if (temp <= mintemp) { digitalwrite(bluepin, HIGH); else { if (temp < 0) { lcd.print(temp); else { lcd.print(" "); lcd.print(temp); lcd.setcursor(5,1); lcd.print(" "); lcd.print(223, BYTE); lcd.print("c"); delay(100);