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