Windchilludregner. Eksamensrapport Teknik A Design og Produktion Elektronik. Roskilde Tekniske Gymnasium



Relaterede dokumenter
El-Teknik A. Rasmus Kibsgaard Riehn-Kristensen & Jonas Pedersen. Klasse 3.4

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Logik Rapport - Alarm. Klaus Jørgensen Itet. 1a. Klaus Jørgensen & Ole Rud 9/ Vejledere: PSS & SKH

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

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

Arduino Programmering

Microcontroller, Arduino

Bestemmelse af kroppens fysiske tilstand

Indholdsfortegnelse:

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

Analog Øvelser. Version. A.1 Afladning af kondensator. Opbyg følgende kredsløb: U TL = 70 % L TL = 50 %

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Microcontroller, Arduino

Programmering for begyndere Lektion 2. Opsamling mm

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

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

Dokumentation af programmering i Python 2.75

Talsystemer I V X L C D M Hvad betyder halvanden??. Kan man også sige Halvtredie???

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

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

Oversigts billedet: Statistik siden:

Mange USB-stiks er udstyret med en lille datadiode, som lyser når der hentes eller

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Klasse 1.4 Michael Jokil

TinkerCad - Arduino simulator

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

Boolsk algebra For IT studerende

Sug det op. Sug det op. Ingeniørens udfordring Elevhæfte. Materialet er udarbejdet i forbindelse med EU- projektet;

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9

Projekt Træningsmaskine

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

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

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

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

Strømforsyning +/- 12V serieregulator og 5V Switch mode

Hvordan laver man et perfekt indkast?

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

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

Så har jeg boret huller i aluminiumsprofilen, og boret den fast i den nederste MDF-plade.

Digital dataopsamling hvordan og hvorledes?

MP3 player med DMX interface.

Grundliggende regning og talforståelse

CPUer og maskinkode DM534. Rolf Fagerberg

Yamaha FS1 Spændingsregulator.

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

Repræsentation af tal

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

Analyseopgaver. Forklar kredsløbet. Forklar kredsløbet. 3.0 DC Adapter med Batteri Backup.

Pædagogisk vejledning til. Materialesæt. Sphero.

Simulering af stokastiske fænomener med Excel

0.1 Modultest af hardware

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren.

Boolsk algebra For IT studerende

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

Michael Jokil

Forsøg del 1: Beregning af lysets bølgelængde

Velkommen til. EDR Frederikssund Afdelings Almen elektronik kursus. Steen Gruby OZ9ZI

Det er nødvendigt for brugeren at læse, forstå og følge vejledningens instruktioner.

Indhold Problemstilling... 2 Solceller... 2 Lysets brydning... 3 Forsøg... 3 Påvirker vandet solcellernes ydelse?... 3 Gør det en forskel, hvor meget

Svendeprøve Projekt Tyveri alarm

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

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

MJPower engineering Ecu Link.

SSI GSM PORT kontrol brugervejledning. SSI GSM PORT brugervejledning V1.2

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

GT2000 GT2000. Brugervejledning

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

ViKoSys. Virksomheds Kontakt System

Matematik og Fysik for Daves elever

Tilbagemeldingsbus S88 med besatmelder

Projekt - RoboNet Del Journal.

Natur/teknik Lidt om vejret Side 1. Lidt om vejret

fortsætte høj retning mellem mindre over større

Mads Peter, Niels Erik, Kenni og Søren Bo

Varme fødder i Grønland Ingeniørens udfordring. Navn: Klasse: Skole:

Maskiner og robotter til hjælp i hverdagen

3 Algebra. Faglige mål. Variable og brøker. Den distributive lov. Potenser og rødder

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

Elektronikken bag medicinsk måleudstyr

Svane Electronic Universal timer med 4 relæer og et valg af 18 funktioner hver 1. 4 kanals timer med 18 funktioner

GSM / SMS dør/port kontrol enhed

Andengradsligninger. Frank Nasser. 12. april 2011

Analoge indgange og A/D konvertering. Analoge udgange

Excel - begynderkursus

Brugermanual til System 2000

Repræsentation af tal

Øvelse. Øvelse. D.1 CMOS-øvelse. Under øvelsen laves notater, som senere bruges i den efterfølgende journal! Opgave 1:

CANSAT & ARDUINO step by step

Varme fødder i Grønland Ingeniørens udfordring. Navn: Klasse: Skole:

Materialer: Strømforsyningen Ledninger. 2 fatninger med pære. 1 multimeter. Forsøg del 1: Serieforbindelsen. Serie forbindelse

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Projekt. Analog Effektforstærker.

Intro til AVR. Mads Pedersen, OZ6HR

Transkript:

Windchilludregner Eksamensrapport Teknik A Design og Produktion Elektronik Martin Jørgensen & Andreas Lamhauge 05-05-2009

Indhold Indledning... 4 Projekt beskrivelse... 4 Problemstilling... 4 Formål... 4 Analyse... 4 Løsning... 5 Windchill... 5 Design fasen... 7 Kredsløbet... 8 PIC / Peripheral Interface Controller... 9 Model... 9 I/O...10 Instruktionssæt...10 Sprog/programmering...10 Multiplikation...10 Komma tals multiplikation...11 Kvadratrod...12 Brug af PIC...13 Windchill Beregner...13 Tabel/Opslagsværk...13 Display Driver...15 Sammensætning af PIC dele...16 Udregninger...18 Værkstedsarbejde...19 Arbejdsform...19 Forløb...19 Bedømmelse og konklusion af værkstedsarbejdet...19 Komponentliste...20 Liste:...20 PIC:...20 Temperatur sensor:...20 Invertere:...20 Side 2 af 22

Dioder:...20 Operationsforstærkere:...20 Analog -> Digital Converter:...20 Timer:...20 Tæller:...20 Modstande:...20 Kondensatorer:...20 Andet:...21 Priser:...21 Konklusion...21 Bilag...22 Side 3 af 22

Indledning Vores projekt går ud på at hjælpe alle de mennesker der dagligt befinder sig i kolde og vindfulde egne. Det kan være folk der bor i bjergene, folk på skiferie, ekspeditioner og andre mennesker der kan risikere at befinde sig i kolde egne. I denne rapport vil vi beskrive hvordan vi har bygget vores windchill måler, hvordan den fungerer og hvad den består af. Projekt beskrivelse Problemstilling Vi kender det alle sammen, fænomenet kaldes Windchill, eller Chillfaktor. Det er den effekt der opstår når et objekt bevæger sig med en vis hastighed. Når kuld luft bevæger sig om objektet føles det som om der er koldere end der faktisk er og temperaturen falder på objektet selv. Dette er i normal forstand ikke farligt men bare ubehageligt, men i koldere områder som på bjergtoppe eller kolde egne som Grønland. Temperaturen som føles falder betragteligt efterhånden som vindhastigheden(eller objektets fart) øges og hvis der allerede er meget koldt bliver det utroligt koldt. Temperatur fare områderne er delt op i 4 zoner, eller 4 intervaller af temperaturer med hver deres beskrivelse; således: Temperatur interval[c o ] Effekt ved vedvarende ophold med korrekt påklædning 0 til -20 Minimal risiko for skader, men kan give en falsk sikkerhed ved længerevarende ophold, skader kun mod bare overflader af kroppen. -20 til -40 Større risiko, der er chancer for lettere forfrysninger mod blottet hud. -40 til -60 Der er stor chance for at blottet hud for forfrysninger inden for kort tid. Under -60 Meget store risiko. Blottet hud får forfrysninger inden for ekstremt kort tid. Kilde: kuldeindeks fra DMI.dk Disse temperaturer er temperaturer målt ved huden. Det vil sige at ordentligt påklædte kropsdele lider ikke af samme effekter så hurtigt men kan jo stadig nedkøles over tid. Det store problem heri er at bestemme den faktiske temperatur ved huden da et termometer ikke kan måle temperaturen og chillfaktoren sammen og derfor måske giver en følelse af tryghed som er helt ubegrundet. Formål Formålet med vores produkt er at sætte folk i stand til at udregne den faktiske temperatur og hjælpe dem med at bedømme den fare der er ved at bevæge sig udenfor i området. Det skal kunne gøres med et praktisk lille apparat så man kan have det med ud og ikke er afhængig af en vejrstation eller andre vejrservices for at vurdere risikoen ved færdsel udenfor. Vi har ikke tænkt os at kunne bedømme eventuel ekstra nedkøling ved f.eks. snefald og isning på tøj/udstyr. Analyse Problemet ligger i at det er svært at vurdere effekten af vinden præcist. Og da et termometer ikke tager højde for vindhastigheden må vi finde en måde at blande de to data sammen og give et resultat som et Side 4 af 22

almindeligt menneske kan forstå. Dette vil involvere at samle data om vindhastighed og samle data om temperatur. Det kan enten løses ved at slå værdierne op i en tabel eller ved at udregne det faktiske tal. Løsning Vi har bestemt os for at lave en anordning som samler vindhastighed og temperatur og derefter returnere den temperatur det vil føles som når chillfaktoren er taget i betragtning. Dette skal ske som en numerisk udløsning på et LED display. Hvor den faktiske temperatur vises. Løsningsudgaverne er meget ens, den eneste forskel er måden hvorpå den skaffer windchill temperaturen. Løsningsudgave1 Her vil dataen blive indlæst i en PIC som udregner windchilltemperaturen og spytter den ud så brugeren kan se den. Dette bliver meget kompliceret da det indebærer brugen af negative og kommatal. Da dette ikke uden videre kan repræsenteres med binære tal kan der opstå problemer. Løsningsudgave2 Her vil dataen blive brugt til at slå den færdige værdi op i en tabel med allerede udregnede værdier. Eksempel(fiktive tal): Vind/temperatur -1-2 -3-15 1-2 -4-5 -24 2-3 -6-7 -26 3-4 -7-9 -30 7-10 -14-19 -29 For at slå det op kan vi bruge en PIC og bruge et enkelt bit til bare at lyse i en diode der betyder minus (-) når tallet er negativt. Vi kan faktisk lave vores egen protokol til at vise tal i stedet for at bruge binær visning. Windchill Windchill, eller kuldeindex, er et begreb der bruges til at beskrive den temperatur kroppen registrerer, i blæsevejr. Alle kender det fænomen at have det varmt, og når der så kommer et vindpust, føles luften koldere. Dette fænomen bliver i daglig omtale, omtalt som windchill. Dette finder også sted når det er koldt. Blæsevejr i frostvejr kan resultere i alvorlige forfrysninger og i værste tilfælde død. I vindstille vejr holder den menneskelige krop en konstant temperatur på huden. Det der så sker når det blæser hen over huden, er at den varme som kroppen har lavet bliver blæst væk, samtidig med at huden bliver udsat for afkøling af den kolde luft. Dette resulterer i at kroppens overfladetemperatur bliver sænket så meget at det kan skade hudvævet, og, hvis det udsatte område et stort nok, kan det resultere i nedkøling af kroppen. Hudvævet tager skade, når det bliver så koldt at vandmolekylerne i huden, krystalliseres og bliver til is, der så skærer i huden. Normalt er dette ikke et problem da kroppen selv sørger for at holde varmen, men hvis denne varme bliver afledt, kan det hurtigt gå galt. En decideret nedkøling af kroppen sker når kernetemperaturen (den temperatur der er i kernen af vores krop) falder bare en lille smule. Dette kan resultere i ubehag, kvalme, rødme, ujævn puls og i værste tilfælde organfejl. Når kroppen bliver nedkølet er dens første reaktion, at sætte gang i blodcirkulationen, dette oplever mange når de er udenfor i frostvejr, og kan ses som røde kinder, ører og næse. Det næste kroppen gør, hvis ikke en øget Side 5 af 22

blodcirkulation gør udslaget, er at den begynder at lukke de mindre vitale kropsdele, som f.eks. hænder og fødder. Dette oplever nogle mennesker også i frostvejr, og er til dels ufarligt, ens hænder og fødder bliver følelsesløse. Hvis ikke det bliver behandlet ordentligt kan det have en dødelig udgang, men i de fleste tilfælde sker der ikke noget. Når man så har været udsat for ekstrem kulde i lang tid, begynder kroppen at lukke de mere vitale dele, som arme og ben ned. Dette resulterer i at arme og ben bliver følelsesløse, og gør bevægelse umulig, på dette tidspunkt vil de fleste mennesker blive bevidstløse. Til sidst, når der ikke er mere energi tilbage i kroppen, stopper hjertet med at slå, og så er det, at man får et hjertestop. Den første tabel over kuldeindex blev lavet af Paul Allman Siple og Charles Passel i 1970 erne. Den var blevet udarbejdet, ved at spænde en plastikflaske og i en flagstanglignende mast, i blæsevejr, og så se hvornår indholdet, som var vand, frøs til is. Den første formel der var, fortalte noget om hvor meget energi der var pr. kvadratmeter pr. time, og så sådan her ud. Hvor WCI er antallet af Kcal per kvadratmeter per time. Hvor V er vindhastigheden i m/s Og T er lufttemperaturen i grader celcius. Denne formel er så blevet tilpasset i tidens løb, og i dag ser den sådan her ud: Hvor T wc er antal grader celcius som windchill, T er temperaturen i grader celcius, og V er vindhastigheden i km/t. Nedenfor ses et skema over hvordan hvilken temperatur der føles ved forskellige temperaturer og vindhastigheder. T i C 25 20 15 10 5 0-5 -10-15 -20-25 -30-35 -40-45 -50 Kmt m/s kt 0 0 0 25 20 15 10 5 0-5 -10-15 -20-25 -30-35 -40-45 -50 7 2 4 25 20 15 9 5-1 -6-11 -16-21 -26-31 -36-41 -46-51 14 4 8 23 17 12 5 0-6 -12-18 -24-30 -36-42 -48-54 -60-66 22 6 12 23 16 10 3-3 -10-16 -23-29 -36-42 -49-55 -62-68 -75 29 8 16 22 15 8 1-6 -13-19 -26-33 -40-47 -54-61 -68-75 -82 36 10 19 21 14 7 0-7 -15-22 -29-36 -43-50 -58-65 -72-79 -86 43 12 23 14 6-1 -9-16 -23-31 -38-46 -53-61 -68-75 -83-90 50 14 27 13 6-2 -10-17 -25-32 -40-47 -55-63 -70-78 -85 58 16 31 5-3 -10-18 -26-33 -41-49 -57-64 -72-80 -87 65 18 35-11 -19-26 -34-42 -50-58 -65-73 -81-89 72 20 39-27 -35-43 -50-59 -66-74 -82-90 Side 6 af 22

Som det ses på det ovenstående skema kan der være meget stor forskel på de forskellige temperaturer i forskellige vindhastigheder. I de grønne felter (mellem 0 og -20 o C) er der ingen eller minimal risiko for skader ved ophold udenfor. I de lysegrønne felter (mellem -20 og -40 o C) er der en tiltagende risiko. I de lyseblå felter (mellem -40 og -60 o C) er der fare hvis man opholder sig ud i kort tid. I de blå felter (under -60 o C) er der stor for at opholde sig ude, og stor risiko for forfrysning. Design fasen Designet på vores projekt har ikke ændret sig særligt meget siden starten, det er stadig det samme overall design, den eneste større ændring er den måde som windchill temperaturen fremskaffes på og fjernelsen af hukommelsesdelen. Vi startede med en tegning der så sådan ud: Men lige nu er den eneste tegning vi har der dækker designet denne: Side 7 af 22

Det er det helt basale design bag vores produkt og sådan den ser ud. Design forløber et sket meget løbende, da vi ikke har designet den ned til mindste detalje fra starten, men derimod med at bygge kerne komponenterne som temperatur sensor og et takometer til vindmåleren, vi har så lavet tabel delen go display drivere. Designet er blevet justeret lidt, til den ændrede PIC opsætning. Kredsløbet Vores vejrstation består af flere små enheder. Den første del, er en temperaturmåler, der måler temperaturen, og derefter sender et analogt signal videre til en analog/digital converter (ADC). Denne ADC omdanner det analoge signal på mellem 0,01 og 0,30 volt, til et binært output. Dette output bliver sendt videre til en displaydriver, der omdanner det binære output til et signal der kan vises på et display. Selve den komponent der måler temperaturen er en LM35, denne komponent har et måleområde på mellem -55 grader celsius og 150 grader celsius. Grunden til vi brugte en LM35 i stedet for alt muligt andet, var den nemme virkemåde, og så det at den arbejder med celsius i stedet for kelvin. Hvis vi havde brugt en føler der arbejdede med Side 8 af 22

kelvin, ville vi konstant skulle trække 271,2 grader fra outputtet på vores føler. Selve vores vindmåler, den komponent der måler vinden, består af fire plastikskeer der er sat fast på en pind, hvor der i bunden er fastgjort noget sølvpapir, med en rille i. Det er så tanken at vi skal lyse på den med en infrarød lampe, dette lys bliver så reflekteret ned på vores IR modtager, der sender en puls videre. Det er så meningen at når lyset når rillen på vores måler, bliver det afbrudt, og det er så det signal som vores modtager venter på. Når dette sker, aktiveres vores tæller, og den tæller så en op. Dette får den hjælp til af en timer og en operationsforstærker. Operationsforstærkeren bruges til at forstærke det signal vi får fra IR modtageren, så det er muligt for vores tæller tydeligt at registrere hvornår der kommer en puls. Timeren bruges til at fortælle tælleren hvornår den må læse. Da vi ikke havde den i vores kredsløb, havde vi problemer med interferens, fra de lysstofrør, der er lige over vores arbejdsplads. Dette resulteret i at vores tæller talte med 50 hertz. Vores vindmåler skal også kunne fastlåse outputtet indtil den får læst data over til en displaydriver der skal skrive resultatet på et display. Dette har vi ordnet med en 4518 BCD tæller. Det er to tællere der er sat sammen i en chip, vi har så valgt at sætte de to tællere sammen, således at vi kan få meget langsomme frekvenser, helt ned til en hertz. Det skal så begrænses af en timer, der sender en besked til tælleren at den skal indlæse data hvert sekund, og lige så snart den er færdig med at indlæse på driveren, skal tælleren resættes og startes igen. De to binære output fra henholdsvis temperaturføleren og vindmåleren, bliver sendt ind i en PIC, en programmerbar chip, denne chip skal sammenligne de to tal, og ud fra dem, skal den udsende et binært output til to displaydrivere, der omdanner det binære til BCD, der kan indsættes i et display. PICen får et input fra en timer, der fortæller den, hvornår den skal læse fra temperatur, og fra vind. PIC / Peripheral Interface Controller Model Til vores projekt bruger vi en PIC16F628 produceret af Microchip. Til at skrive programmerne bruger vi den gratis MP labs IDE med kompiler og debugger. Til at skrive det på chippen bruger vi PicProg 2009 og et board fra Velleman. 16f628 er en 8-bit mikroprocessor. Side 9 af 22

I/O Den har 18 ben hvor et af dem er stelforbindelsen og strømforsyningen. Udover det har den 2 porte, port a og port b. de er begge to bi-direktionelle porte. Det betyder at de kan virke både som ind og udgange. Instruktionssæt Denne PIC bruger et meget begrænset instruktionssæt, dette reducerer pris og kompleksitet. Det indeholder kun meget basale instruktioner som f.eks. mov, add, sub, dec, inc, goto, and, xor og lign. Det betyder at vi selv må skrive mere avancerede funktioner for at kunne udregne windchill faktoren. Vi skal bl.a. skrive funktioner for at gange tal, og for at fremstille kvadratroden af et tal. De fleste instruktioner i sættet opererer mellem et filregister og arbejdsregistret (et specifikt fil register.) Eller med en enkelt konstant og arbejdsregistret. Sprog/programmering Vi har forsøgt at gennemføre programmeringen af PIC chippen med 2 forskellige sprog, c++ og ASM. C++ var at foretrække da det er et mere udbygget sprog med flere instruktioner end ASM men den kompiler vi brugte (BoostC) lavede meget dårlige koder og virkede ikke generelt. Derfor gik vi over til at kode i ren assembler kode. Assembler kode er det tætteste man kan komme på maskinkode; på f.eks. en normal computer vil assemblerkoden nop bare svare til tallet 0x90. Alle assembler instruktionerne på PICen består af samme 3 dele. <kommando> <arg1>,<arg2> Kommando er den funktion man vil udføre, og arg1 og arg2 er to argumenter. Ikke alle instruktioner kræver samme mængde af argumenter, og nogen kræver slet ingen. Her er nogle eksempler på instruktioner: Nop ;ingen operation Goto mylabel ;hopper til en bestemt label/adresse i koden Incf myreg, 1 ;ligger 1 til myreg og ligger resultatet tilbage Xorwf myreg, 0 ;xor myreg med work og ligger resultatet i work. Bemærk at alle funktioner med argumenter adskiller dem med et enkelt komma(, ). Multiplikation For at lave en multiplikations funktion til PICen bruger vi 3 filregistre. Vi antager at formen på multiplikationsstykket er x y z, de tre filregistre vil få navnene mulc, mulf og mulr. Da der ikke er nogen indbygget multiplikations funktion må vi finde en måde udenom det. Da multiplikation i grunden bare er et antal additioner kan vi bruge addwf og decfsz. Forløbet af funktionen er således: Side 10 af 22

Det koden gør er at først rydde den variabel der skal holde resultatet og rydde work. Herefter flytter den y(mulf) over i work. Så ligger den work(y) til resultatet og gemmer det i mulr. Bagefter trækker den 1 fra mulc(x) og hvis resultatet er 0 går den til return og ellers hopper den op til countlbl. Komma tals multiplikation Tallene i vores formel kan meget groft rundes op til 0,5 og 0,05. Her kan multiplikationsfunktionen fra før ikke bruges da PICen ikke kan regne med kommatal. Her skal der i stedet divideres. At gange med 0,5 er det samme som at dividere med 2. Vi kan nemt dividere et tal med 2 pga. de binære tals natur. Da systemets tal altid ganges med 2 for hvert ciffer. Altså således: 128 64 32 16 8 4 2 1 Så hvis vi for eksempel har 64 og ønsker at gange det med 0,5 eller dividere det med 2, skal vi blot rykke det 1tal der udgør 7. Bit en enkelt plads til højre. Heldigvis har PIC16F628 en indbygget funktion til at flytte bits rundt på den måde, rrf og rlf, det står for Rotate Right File og Rotate Left File. Begge funktioner roterer gennem C bitet i status registret. Eksempel: Før instruktion C-bit 128-bit 64-bit 32-bit 16-bit 8-bit 4-bit 2-bit 1-bit 0 1 1 0 1 0 0 0 1 Det giver 209 i decimal. Efter rrf C-bit 128-bit 64-bit 32-bit 16-bit 8-bit 4-bit 2-bit 1-bit 1 0 1 1 0 1 0 0 0 Decimal: 104. Side 11 af 22

Læg dog mærke til at dette er rundet ned, det rigtige resultat er 104,5. For at gange med 0,05 skal denne funktion udføres flere gange. Vi kan ikke komme helt ind til dette tal, men ved at udføre følgende regnestykker kan vi se hvilke binære tal der er tæt på: 1 16 1 32 0, 0625 0, 03125 Vi kan der se at 16-bit giver det tætteste resultat. Vi kan derfor se at vi skal udføre rotationen 5 gange. Eksempel: Før instruktion C-bit 128-bit 64-bit 32-bit 16-bit 8-bit 4-bit 2-bit 1-bit 0 1 1 0 1 0 0 0 1 Det giver 209 i decimal. Efter instruktionerne: C-bit 128-bit 64-bit 32-bit 16-bit 8-bit 4-bit 2-bit 1-bit 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 Dec = 22 Hvis vi havde brugt et andet tal, med flere høje bits, f.eks. 11111111 ville denne teknik selvfølgelig ikke virke uden noget tilpasning. For at bruge den øverste (0,5) skal man rydde 128bitet for at sikre sig at resultatet passer. For at bruge den nederste (0,05) skal man rydde 128-, 64-, 32- og 16-bitet. Kvadratrod Da jeg ikke selv har lavet kvadratrods funktionen men kun tilpasset den vil den ligge i bilaget. Jeg har tilpasset den på den måde at jeg har ændret koden så i stedet for at fungere med 16bit tal fungere den nu Side 12 af 22

med 8bit tal. Det gjorde jeg ved at lave de 8 højeste bit til konstante 0 er i stedet for at læse dem fra en port. Koden til kvadratrodsberegningen er fundet på: http://www.dattalo.com/technical/software/pic/picsqrt.html Den funktion vi brugte var den nederste, for at komme uden om 16 bit input lagde vi bare 0x00 i N_hi og xh. (som er to filregistre man selv opretter.) Brug af PIC Vi har brugt PIC chips til 2 ting, til at lave tabelopslaget og til at drive 7-segment LED displays. Her er beskrevet hvordan begge dele virker og hvilken opsætning der bruges til dem. Windchill Beregner Denne beregner var designet til at tage nogle tal ind, regne dem sammen og så skrive et tal ud. Den skulle fungere efter denne formel: T w c 33 T 33 0, 474 0, 454 S 0, 0454 S T R 33 C S R 1, 79 m / s Twc er den temperatur som man vil føle mod huden. o Den opsætning den bruger er hvor de 5 første bit på både port a og port b er brugt som input til henholdsvis temperatur og vind. Og de overskydende bit sættes sammen til output. Koden kan ses i bilaget, vi ville ikke inkludere den her da den ikke bliver brugt i vores produkt men kun underudviklingen. Grundlag for udelukkelse fra produkt Chippen i sig selv gav fine nok tal så længe den kun fik positive tal ind, den fungerede også fint gennem alle funktionerne. Men resultatet afveg meget fra den korrekte værdi fordi PICen selv runder ned på tallene og nogle af metoderne ikke var helt præcise (se f.eks. på gange005 funktionen.) Da vi f.eks. gav den dataen fra værkstedet (24 grader og 0 m/s) udregnede den at slut temperaturen var over 100 grader celsius. Da det var for besværligt at fortsætte på den måde eliminerede vi PICen. Tabel/Opslagsværk At lave opslagsværket var ikke en specielt avanceret ting at programmere, det var sådan set bare en bunke if-statements. Vi begyndte at lave denne chip da beregneren slog fejl og blev for besværlig at præcisere. Til at begynde med prøvede vi at lave denne del i BoostC++ men den kode som programmet gav virkede ikke og lignede ikke noget man kunne læse og fejlfinde i desværre, derfor gik vi over til ASM meget hurtigt. Opslagstabellen kan kun bruge positive tal da den bare virker som et proof of concept altså den er ikke et færdigt produkt men første udviklings iteration i forløbet. Side 13 af 22

For at kunne have nok bit til at vise negative tal som output blev vi nød til at finde en metode at spare bits på. Dette gjorde vi ved at indlæser vindhastighed og temperatur på forskellige tidspunkter, således at den læser temperatur og vind på de samme ben, og gemmer dem i forskellige registre alt efter hvad et bestemt bit er sat til, dette betyder den kan styres fra en enhed udefra som også bestemmer hvilken sensor der sender data på databussen. De 5 første bit på port a er input bit, de bruges til at læse binære tal fra databussen. 5 bit giver mulighed for tal mellem 0 og 31. RA5 er Master Clear Reset og sættes derfor til høj for at undgå at den genstarter hele tiden. RA6 er et ubrugt bit og sættes bare til stel for at give logisk 0. RA7 bliver brugt som det bit der bestemmer og det er vind eller temperatur der måles og gemmes. Hele port-b bruges som output og er fordelt således: 1.-4. bit = enere. Dvs. tallene 0-9 kommer ud her. 4.-7. bit = tiere. Dvs. hvis tallet i tabellen overstiger 9 skrives der 1-7 på disse bit, ellers skrives der bare 0 8. bit = minus, denne udgang forbindes direkte til en diode der indikere minus, eller til en del af 7-segment displayet der giver en vandret streg som indikerer minus, dette gør at vi kan skrive alle negative tal som normale og så bare sætte det 8ende. bit højt. Hver af de 2 porte sendes til en hjemmelavet display driver som er beskrevet nedenfor. Måden som opslaget sker på virker ligesom displaydriverens opslag som er beskrevet nedenfor De værdier vi har skrevet ind i tabelopslaget er afrundede værdier fra et VisualBasic NET program vi har lavet som udregner windchill temperaturen helt præcist efter formlen ovenfor. Programmer ser således ud og koden kan ses i bilaget: Side 14 af 22

Display Driver Denne chip skal der bruges to af, den tager et 3 eller 4 bit input og konvertere det til et output som kan bruges til et 7-segment display. Der er ikke brug for mere end 4 bit da det giver rigeligt med muligheder, og den som kun for 3 bit kommer ikke til at vise mere alligevel. Det hele forbindes sådan her: Koden til displayet bestemmer tallet ved hjælp af exclusive or metoden. For f.eks. at se hvad der står gøres således: 1) Det tal man vil tjekke for flyttes til work. 2) Så xor res work med indholdet på port a. 3) Så bestemmes det om det er indeholdt vil at kontrollerer Z bitet i STATUS registret. (hvis tallet er korrekt sættes Z til høj, ellers sættes det til lavt.) vha. btfsc bestemmes det. Denne hopper over den næste linje hvis z er lav. Side 15 af 22

4) Hvis z = 1 goto <label> denne label er det sted hvor man sætter det korrekte output på port b. Outputtet er formateret således. Hvert segment får sit eget bogstav og port b forbindes således: 64 32 16 8 4 2 1 g f e d c b a Dette tillader fuld brug af displayet. I opslagsværket springer man ikke direkte til outputtet men i stedet for til en anden sammenligning. Først finder vi ud af vinden ved hjælp af xor som før, men i stedet for at gå til et sted hvor den laver output, går den til et sted hvor den finder temperaturen, herefter går den til et sted hvor den sætter output. Sammensætning af PIC dele Her er et billede og diagram af hvordan PICerne er sat sammen og stellet og derefter forbundet til displays Side 16 af 22

Det næste billede er den første testopsætning af hele PIC delen, den opsætning på billedet virker ikke korrekt pga. nogle fejl i assemblerkoden til driveren og desværre også i opslagskoden, det er nu rettet og virker som det skal: Side 17 af 22

Det nederste display er 1ere og det øverste er 10ere. Den røde diode lyser hvis tallet er negativt. Tallene skal selvfølgelig ikke stå sådan her på det færdige produkt men dette var bare en test opsætning. Udregninger I vores arbejde med de forskellige komponenter, har vi skulle lave en masse udregninger. Den udregning vi mest har brugt var forskellige versioner af ohms lov. Ohms lov siger at hvilket betyder at spændingen er lig med den samlede modstand, ganget med strømmen. Ohms lov er en gældende fysisk lov, Side 18 af 22

som gælder alle steder hvor der er elektriske kredsløb. Hvis man omskriver formlen til, er det muligt at udregne den samlede modstand i kredsløbet. Det er selvfølgeligt også muligt at bruge ohms lov på en mindre del af kredsløbet, og ikke det hele. For at udregne frekvensen i en oscillator, skal vi bruge en formel. Denne formel bruges til at udregne frekvensen i en oscillator: modstand og kondensator, der sidder i oscillatoren. denne formel siger at frekvensen i en oscillator afhænger af den Den frekvens man opbygger med modstand og kondensatorer, bliver sendt ud på den udgang der hedder Q1, for hver gang man går en udgangsport op, til f. eks Q2, bliver frekvensen halveret, det betyder at hvis man har en frekvens på 20 KHz på Q1, har vi en frekvens på 10 KHz på Q2, 5 KHz på Q3 og så videre ned. Dette kan beskrives med formlen hvor F er frekvensen, og n er udgangsnummeret. Værkstedsarbejde I dette kapitel har vi beskrevet vores arbejdsmetode i værkstedet of det forløb vi har været igennem ved at udvikle produktet. Arbejdsform Vi har arbejdet med en meget skiftende arbejdsform, vi har begge to siddet det samme sted hele tiden for at vi kan spørge hinanden til råds og hjælpe med eventuelle kommentarere og kig i datablade osv. Det har ofte været sådan at den ene har siddet og planlagt/tegnet og den anden har arbejdet på fumlebræt, eller samlet noget med lodninger osv. Så vi har arbejdet forskudt for at maksimere udbyttet af arbejdstiden i værkstedet. Forløb Forløbet har kørt som forskudt: og det kan faktisk beskrives med et skema: Person 1: Person 2: Tegninger Skrive / datablade Fumlebræt Tegning Fumlebræt PIC programmering Lodning Tegning og PIC programmering Fumlebræt lodning Lodning på 1 del. Lodning på 2. del Det er selvfølgelig ikke helt præcist da vi ikke har ført arbejdsbog eller lignende optegnelser over hvad vi lavede forskellige dage eller tidspunkter. Bedømmelse og konklusion af værkstedsarbejdet Værkstedsarbejdet er gået meget godt og mere flydende/optimalt end sidste projekt da vi har lavet forskellige opgaver i stedet for at sidde over samme fumlebræt eller printplade. Der kunne dog stadig gøres mere hvis man lagde en tidsplan og måske arbejdede på hver sit modul af produktet uafhængigt af den Side 19 af 22

anden i gruppen. Jeg mener dog at tiden i værkstedet er blevet brugt optimalt selvom de tog lidt lang tid at komme igennem design fasen. Komponentliste Da vi ikke har brugt nogen dyre komponenter, eller ting som vi har måttet bestille. Vi har brugt basale komponenter som alle er ekstremt billige, den dyreste ting er PICen. Som koster 20-30 kroner. Liste: PIC: PIC 16F628 Temperatur sensor: Lm35 Invertere: 4049 Dioder: Infrarød modtager Operationsforstærkere: LM358P Analog -> Digital Converter: ADC0804LCN Timer: LM555N Tæller: CD4060BE Modstande: 100k, 20k, 10k, 2,7k 50k variabel modstand Kondensatorer: 47µF, 10nF Side 20 af 22

Andet: Ledning, blå, rød, grøn, sort og brun. Plastic skeer til vindmåler. Aluminiumsfolie. (sølvpapir) Malertape. Del af blomsterpind. Priser: Komponent/del Pris pr. stk. Antal Total Pris 4049 1,73 2 3,46 kr LM358P 1,53 4 6,12 kr ADC0804 13,68 2 27,36 kr LM555 1,4 2 2,8 kr CD4060BE 2,52 4 10,08 kr PIC16F628 25,41 6 152,46 kr Ledning 108 0,2 21,6 kr LM35 22,33 3 66,99 kr Skeer 10 1 10 kr TOTAL 300,87 kr Skeer er det eneste som ikke var forsynet af laboratoriet og er købt i Føtex. Tallene inkludere dele der evt. er brændt af eller ikke virkede korrekt efter implementering i produktet. Priserne er taget fra el-supply.dk for ved køb af 100. Konklusion Vi har fundet ud af at effekten af vinden på den følte temperatur er meget voldsom i forhold til hvad vi havde regnet med den ville være. Vi har også fundet ud af at man kan få seriøse langvarige skader hvis man ikke passer på men vi mener til gengæld at en færdig udgave af vores produkt kan mindske risikoen for sådanne skader. Vi har også fået mere erfaring med pic kredsløb og fundet ud af deres begrænsninger med vores evner. Side 21 af 22

Bilag Side 22 af 22