Dig i tal Termometer I den här upp giften skall vi mäta tem pera turen på ditt kaffe. Vi använ der en ter mis tor som tem pera - turkäns lig gi vare och timerkret sen som A/D om vand lare. Tem pera turen pre sen terar vi se dan på en LCD dis play. Efter som ter mis torn har ett olinjärt sam band mel lan tem pera tur och re sistans måste vi göra en poly no man passn ing av re sis tan sen mot tem pera turen. Vi kom mer att använda oss av lab- modul nr.12. Termistorn har en negativ temperaturkoefficient (NTC), dvs dess re sis tans sjunker (mycket olinjärt) med stigande tem pera tur. Än drin gen är verkli gen stor, re sis tan sen än drar sig med en tio - po tens för en än dring av några tio tal grader. Det gör att vi kan använda ter mis torn som en en kel och bil lig tem pera tur gi vare. För att kon vertera tem pera turen till ett tal som en chips da torns pro gram se dan kan be handla vidare låter vi först re sis tan sen hos ter mis torn styra tiden hos en monosta bil vippa. Den är byggd med timerkret sen. Tiden hos vip pan mäter vi se dan ge nom att räkna da torns klock pulser (K) under den tid vip pan är om ställd. V V CC RES GND Reset DS1233D 1 27 26 4 MHz 24 2 2 V RESET OSC1 OSC2 TCMP IRQ TCAP/PD7 PA0 PA1 PA2 PA3 PA4 PA PA6 PA7 AD2/ PC4 AD1/ PC AD0/ PC6 VR/PC7 PD SDO/PB SDI/PB6 SCK/ PB7 PC0 PC1 PC2 AD3/ PC3 10 9 8 7 6 4 3 18 17 16 1 23 11 12 13 22 21 20 19 7 8 9 10 11 12 13 14 4 6 3 V D0 D1 D2 D3 D4 D D6 D7 RS R/W E C LCD V 2 TRIG CV 0. 1uF Q 3 DIS 7 THR 6 V TERM ISTOR 330 nf MC68HC70 P6A Ter mome tern använ der timern och ett NTC- motstånd. Tiden ( t ) som vip pan är om ställd i sitt in sta bila läge ges av for meln: t =1.1RC där R är termistorns resistans och C är 0.33 mikrofarad. Vid rumstemperatur, c:a 2 grader, är termistorns resistans 10 kohm. Vi får då att vippan står i sitt instabila läge un der c:a 3 ms. Timern i enchipsdatorn har en klockfrekvens på 0. MHz eftersom vi använder 4 MHz kristall. Vi kommer alltså att räkna c:a 100 klockpulser un der denna tid. An ta let räk nade klock pulser (K) är alltså pro por tionellt mot tiden (t). Vidare vet vi att termistorns re sis tans (R) är någon funk tion (f) av tem pera turen (T). 2001-04-17 Termometer- 1 PN
Kom binerar vi dessa ut tryck får vi att tem pera turen (T) är någon (mate ma tiskt okänd) funk tion (g) av an ta let klock pulser (K). T=g(K) Nu skall vi kon vertera de räk nade klock pulserna (K) till tem pera tur (T). Tyvärr råder det ju i nte ett en kelt linjärt sam band mel lan ter mis torns re sis tans och tem pera turen, utan det är något krokigt logaritm- artat okänt sam band. Har man ett olinjärt sam band kan man all tid an taga att det gäl ler ett polynom- samband i ett de lin ter vall. Går man till ex trem vär den spricker det, men det skall vi passa oss för. Vi antar alltså helt frankt att vi kan ange tem pera turen T som ett poly nom av de räk nade klock pulserna K (dvs in di rekt tiden t), dvs att: T=A0 +A1K^1 +A2K^2 + A3K^3 +... där A0, A1, A2 osv är poly nom ets koef fi cien ter som ger sam ban det mel lan klock pulser och tem - peratur. Då gäl ler det att på något sätt be stämma koef fi cien terna i poly nomet så att vi, när vi se dan kän ner an ta let klock pulser, bara kan sätta in dem i poly nomet och helt en kelt beräkna tem pera turen. För att be stämma koef fi cien terna i poly nomet använ der vi oss av ett sepa rat poly no man passn ing spro - gram kal lat SEN SOR. Det pro gram met vill som in data ha en ta bell med tem pera turen given för olika an tal klock pulser. Du måste alltså mäta upp gi var ens egenskaper ge nom att mäta an ta let klock pulser vid några olika tem pera turer. Du går se dan in i pro gram met SEN SOR och ta lar om nam net på den da tafil där du kom mer att la gra dina mät vär den. Där star tar du edi torn och skriver in dina mät vär den som e n tvåk - olumners ta bell, med klock pulserna i den för sta kolum nen och tem pera turen i den an dra. Lämna edi torn och spara dina mät vär den i en fil. Du kan nu prova att göra poly no man passn in gen för några olika grad tal. San no ligt blir det bra med tredje grad ens poly nom. När du är nöjd med an passn in gen sparar du koef fi cien terna som en ny fil i da torn. Koef fi cienterna kom mer då att sparas på en form som en chips da torns as sem bla tor och bib lio tekspro gram di rekt kan hantera. När du nu kän ner koef fi cien terna i poly nomet är det en kelt för en chips da torn att uti från ett upp mätt antal klock cyk ler beräkna tem pera turen. Du använ der subrutinen POLYNOM som ligger i biblioteksmodulen POLYNOM.LIB, som du helt en kelt kop ierar in i ditt eget pro gram. Nu gäl ler det att få ut den beräk nade tem pera turen på LCD- displayen. Du måste då först om vandla tal for - matet för tem pera turen från flyt tals for mat (dvs med tal del och ex po nent) till ett van ligt binärt hel - tal. Det finns det en biblioteks- rutin föri biblioteksmodulen MATH687.LIB. Därefter skall talet om vand las från binärt tal (tal basen två) till deci malt tal (tal basen tio). Det gör du med bib lio teks ru - tinen BINBCD.LIB. Och slut li gen skall BCD- talen göras om till AS CII tecken med BCDAS - CII.LIB och matas ut på dis playen. Nu är det dags att börja skriva pro gram met. Till din hjälp finns ett flö des dia gram som du kan ut nyttja för att få en snygg struk tur på ditt pro gram. I kop plingssche mat över kret sen ser du att det finns två förbin del ser mel lan en chips da torn och -kretsen. Den för sta går från bit 3 i C- porten till - kretsens trig- ingång. Den sig nalen används för att trigga och där med göra en mät ning av tiden. trig gas av en nega tivt gående sig nal (en nega tiv flank). Ome del bart efter triggnin gen måste denna sig nal tas till baka till hög nivå för att inte 2001-04-17 Termometer- 2 PN
skall tvin gas kvar i sitt in sta bila läge, utan tillåtas gå till baka till sitt sta bila läge se dan RC- tiden för flu tit.denna sig nal skall alltså nor malt ligga på hög nivå. Den andra sig nalen går från -kretsens Q- utgång till Interrupt (IRQ) och Timeringångarna (TCAP) på enchipsdatorn. Ge nom att sig nalen går till In ter rupt ingån gen kan du avgöra när -kretsen tippar tillbaka till sitt stabila läge. Anslutningen till Timer ingån gen är till för att kunna läsa av tidpunkterna för Q-signalens upp och nedgång så att man därifrån kan räkna ut hur länge vippan stod i sitt instabila läge. 1. Börja med att skriva ett pro gram som gör en mät ning med timerkret sen men bara skriver ut an ta - let klock pulser på dis playen. Det pro gram met skall du ha för ka li brerin gen. Tänk på att in n an du trig gar måste du ha ställt om i timerns kon troll regis ter så att den läser in start tiden på posi tiv flank av Q- signalen (TCAP) från. För att mäta tiden läser man först av starttiden och lagrar den i de två bytarna T1H och T1L. Se d an ställer man om timern så att den nästa gång läser av tiden på negativ flank hos timerpinnen ( dvs när Q faller). Därefter nollställer man en flaggan (KLAR) som användas för att markera att mätningen pågår, samt tillåter avbrott med instruktionen CLI. Sedan är det bara att vänta på att flaggan KLAR skall bli skild från noll. Det blir den av avbrottsrutinen som startas när Q faller och därmed genererar ett avbrott. När -kretsen går tillbaka till sitt stabila läge genereras ett avbrott som 1-ställer KLAR-flaggan och därmed avslutar väntan. Då läser man av sluttiden och lagrar den i bytarna T2H och T2L. Se dan beräknar man den tid som gått med en två-bytes subtraktion. LDA ICRH ;Hämta starttidens höga byte STA T1H ;och lagra den i T1 LDA ICRL ;Hämta starttidens låga byte STA T1L ;och lagra den BCLR 1,TCR ;Lagra sluttiden på negativ flank MÄT: CLI ;Tillåt avbrott CLR KLAR ;Markera att mätning påbörjas TST KLAR ;Kontrollera KLAR BEQ MÄT ;Vänta medans mätning pågår LDA ICRH ;Hämta sluttidens höga byte STA T2H ;och lagra den i T2 LDA ICRL ;Hämta sluttidens låga byte STA T2L ;och lagra den LDA T2L ;Räkna ut tiden som R1=T2-T1 SUB T1L STA R1L LDA T2H SBC T1H ;obs ev. Borrow STA R1M 2001-04-17 Termometer- 3 PN
I variabelerna R1M & R1L har vi nu antalet klockpulser som ett 16-bitars heltal. Avbrottsrutinen skall bara ett-ställa flaggan KLAR. Den ser alltså ut så här: AVBROTT: COM KLAR ;Komplementera KLAR-flaggan RTI ;Avsluta avbrottet. Tänk på att du måste definiera den externa avbrottsvektorn. Det gör du med satserna: ORG EXTVEK ;Gå till rätt plats i minnet DW AVBROTT ;Lägg in adr. till avbrottsrutinen 2. Mät upp an ta let klock pulser för minst10 olika tem pera turer i in ter val let 60-20 grader. Tappa upp lite varm vat ten och låt det svalna. Termisk jämvikt inträder så småningom, så det gäller att ta det lite lungt. Använd en van lig sprittermometer. Skriv in mät vär dena i en fil på da torn med hjälp av SENSOR- programmets edi tor. Tänk på om det är tem pera turen el ler an ta let klock pulser som skall stå i för sta kolum nen. Observera att denna mätning måste göras med själva enchipsdatorn och inte med emulatorn. Det beror på att emulatorn går mycket långsammare än enchipsdatorn och här gör vi ju en absolutmätning av tiden. Om man gör en mätning med emulatorn kommer man att få helt andra tider. 3. Gör se dan själva poly no man passn in gen. Prova med olika grad tal. Kon trol lera att in gen da ta - punkt av viker allt för kraf tigt så att man kan be fara en felmät ning i den punk ten. Spara de fram räk - nade koef fi cien terna som en fil i da torn. 4. Utöka nu ditt pro gram så att det tar an ta let klock pulser och sät ter in det i poly nomet och räknar fram tem pera turen. Så låter du pro gram met skriva ut tem pera turen i stäl let för an ta let klockpulser på dis playen. Ob servera att samma vari abler kan upp träda i flera bib lio teks ru tiner. Det finns alltså en risk för dub beldek la ra tion. Tänk även på att vissa vari abler måste stå i den ordning som de är dek lar erade i MATH687.LIB modu len. Det beror på att man använ der in dex erad ad resser ing, och därför förvän - tar sig vari ablerna i den dek lar erade ordnin gen. Detta gäl ler ex em pel vis vari ablerna i mat teru tin - erna. Titta efter i tex ten som in le der bib lio teksmod ul erna vad som gäl ler.. Utöka pro gram met med lite snygg text i dis playen, t.ex. TEMP=. 6. Efter temperaturen skall du skriva ett gradtecken och C på displayen. Gradtecknet har ASCII-värdet $DF. 7. Om du hin ner kan du utöka an ta let sif fror till att om fatta även en deci mal. Då skall du mul ti pli cera tem pera turen med 10 in nan du om vand lar till binärt hel tal, och se dan stoppa in deci mal punk ten på rätt ställe när du skriver ut talet. Observera dock att det är lätt att få fram en massa sif fror m ed en da - tor, med att de skall ha nån sig ni fi kans också! 2001-04-17 Termometer- 4 PN
Flödesdiagram för termometern. INITIERINGAR Bit 3 i port C riktas utåt och sätts till 1 Hela port A riktas utåt (LCD) Bitarna 7,6, i port B utåt (LCD) Initiera LCD-displayen Invänta att är klar at t triggas Ställ Timerns trigvillkor till positiv flank Trigga Mät tiden UTÖKNING FRÅN KALI BR ERING TILL MÄTNING Nollställ exponenten R1E Ladda IX med adressen till polynomet Beräkna temperaturen ur polynomet Gör om temperaturen från flyttal till hel tal Gör om från binärt heltal till decimalt tal (BCD) Gör om BCD-talen t ill ASCII-tecken Flytta cursorn till början av raden på displayen Skri v ut texten "Tem p=" på displayen Skri v ut temperaturens ASCII-tecken 2001-04-17 Termometer- PN