Datakommunikation med -ljus. I den här uppgiften skall du kommunicera med hjälp av infrarött () ljus. Du skall kunna sända tecken från tangentbordet samt ta emot tecken och visa dem på skärmen. Genom att rikta ditt -ljus mot en annan liknande uppställning skall du etablera en trådlös kommunikation. Den teknik att kommunicera med hjälp av infrarött ljus som vi använder är hämtad från hemelektroniken. Den används bl.a. för fjärrkontroll av TV, video, ljudanläggningar, larm m.m. Som sändare använder man lysdioder som sänder på våglängden 90 nm. Lysdioder tillverkade av kisel blir väldigt effektiva i detta våglängdsområde eftersom bandgapet hos kisel ligger just vid denna våglängd. Som mottagare använder man en fototransistor, även den tillverkad av kisel för att vara optimalt känslig just för denna våglängd. För att avskärma sig från ljus av andra våglängder brukar lysdioden och fototransistorn vara inkapslade i färgad plast som är maximalt genomsläpplig för denna våglängd. För att ytterligare öka skyddet mot störande ljus och därmed förbättra känsligheten, modulerar man ljuset med en bärfrekvens på khz, ungefär på samma sätt som man använder en bärvåg i vanlig radiokommunikation. Själva informationen lägger man sedan ovanpå bärvågen i form av en modulation, t.ex. frekvensmodulering eller amplitudmodulering. I vår -länk skall vi använda oss av amplitudmodulering. Det gör vigenomattsläppapåbärvågennärvisänderenetta,ochstängaavdennärvisänderen nolla. För att generera bärfrekvensen på khz och modulera den, använder vi den välkända timerkretsen. Den kopplar vi som en astabil vippa och väljer komponentvärden så att den oscillerar på just khz. Timerkretsen har en ingång, kallad reset, med vilken vi kan styra oscillationen. Om resetingången läggs hög (en etta) så oscillera kretsen på khz, och om den läggs låg (en nolla) så upphör oscillationen och timerkretsens utsignal stannar i lågt läge, och lysdioderna slocknar. Mottagningskanalen + 0 Sändningskanalen. k k OP c:a k RES DI S TRI G TRES CT OUT k.nf 0. uf BD A 00-09-0 -kommunikation - PN
Timerkretsen orkar inte driva lysdioderna direkt, utan vi tar hjälp av en transistor. Egentligen är det två transistorer kopplade i ett s.k. Darlingtonpar, för att få tillräckligt stor drivförmåga. Strömmen genom lysdioderna är som mest c:a 00 ma, vilket är mycket mer än man normalt kör genom vanliga röda lysdioder. Som mottagare använder vi oss av en färdig integrerad krets som innehåller fototransistor, förstärkare, bandpassfilter och diskriminator och som ger en etta ut när den får in -ljus som är modulerat med khz, och som ger en nolla ut när den inte får rätt ljus in. Kretsen är masstillverkad för att sitta som mottagare i hemelektronik. Lägg märke till att mottagarens utgång är aktivt låg, dvs när mottagaren får in ljus(etta) skickar den ut en låg spänning, och när den inte får något ljus (nolla) skickar den ut en hög spänning. Lysdioden lyser alltså när mottagaren tar emot -ljus (etta). För att sända ett tecken (en byte) är vi tvungna att sända en bit i taget, dvs vi sänder bytens åtta bitar en efter en i en given takt. Det står oss fritt att välja, men vi beslutar att sända bytens minst signifikanta bit först och avsluta med den mest signifikanta. Eftersom mottagaren inte vet när vi tänker börja sända är det nödvändigt att först sända en startbit som väcker upp mottagaren och därefter sända databitarna. Efter det att vi säntettteckenbörvigöraettlitetuppehållsåattmottagarenhinnertahandomtecknet. Vi får då följande bit-ström: Startbit första databit sista databit mellanrum nästa startbit osv... För att få rätt sändhastighet kan du utnyttja timern eller använda en vänteloop. Detta sätt att sända är mycket likt den metod man använder i s.k. seriell sändning i RS-. I det protokollet har man infört följande standardiserade hastigheter:, 0, 00, 00, 00, 00, 00, 900... bitar per sekund. Vikanjuväljaenavdessahastigheter,t.ex.00bitarpersekund.Detinnebärattvarje bit skall vara /00 sekund lång, dvs 0. ms. För varje bit du sänder skall du alltså se till att den blir c:a 0. ms. Du bör trimma dina vänteloopar så att avvikelsen inte är större än någon procent. Närduskallmottagaettteckenkandugöradetpåtvåolikasätt.Dukangöradetgenom att ständigt kontrollera den bit i en port som mottagaren är kopplad till, det kallas för pollning. Ett annat sätt är att låta signalen från mottagaren generera ett avbrott, ett interrupt, och därmed starta en interruptservice rutin som läser in det mottagna tecknet till en mottagarbuffert i minnet, sätter en flagga för att visa ett man mottagit ett tecken och därefter återgår till det program som blev avbrutet av avbrottet. När du gör inläsningen med hjälp av pollning ligger du i din inläsningsrutin och väntar påstartbiten.närdumärktattdufåttettomslagtillenetta(lågnivå)påmottagarensut- 00-09-0 -kommunikation - PN
gångväntarduenhalvbittidochläsersedanåteravmottagarensstatus.duläserdåmitt istartbiten.omdufortfarandefårinenettakanduvarasäkerpåattdetärenstartbitoch attdetkommerdatabitar.omdudäremotläsetennollamittistartbitenharduråkatfå in en störning och avbryter inläsningen och återgår till att vänta på en riktig startbit. Efter det att du konstaterat att du fått en riktig startbit väntar du en bittid (0. ms) och läsersedaninförstadatabiten(lsb).detuppreparduochläserindeövrigasjudatabitarna. Slutligen väntar du ytterligare en bittid och läser därefter in statusen efter sista biten. Där skall det då ligga en nolla, en s.k. stoppbit, som är mellanrummet mellan tecknen. När du konstaterat att stoppbiten ligger där den skall är du klar med inläsningen och kan returnera tecknet till huvudprogrammet, lämpligen i ett register. Inläsningen med hjälp av en interruptrutin sker på samma sätt. När du är klar med inläsningen måste du emellertid returnera tecknet på ett lite annorlunda sätt. Du lägger det i en buffert i minnet och sätter en räknare som visar hur många tecken du har i bufferten. Det är ju inte säkert att huvudprogrammet vill ha tecknet just nu, utan att det vill ha det lite senare. Tangentbordet. Förattmataindeteckenduskallsändaanvänderdutangentbordskortet.dethartangenter, 0..9,#, * och A..D. Avkodningen av tangentbordet sker med en särskild krets (C9) som scannar av tangenterna och som aktiverar sin utgång DA (Data Available) när en knapp trycks ned. Den signalen är vidarekopplad till enchipsdatorns interrupt ingång eller till PB. Vilken den går till kan man själv välja med hjälp av en bygel på kortet. När denna signal(da) blir aktiv skall ditt program hämta in koden för tangenten. Det gör du genom att aktivera scannerkretsens OE (Output Enable) ingång. Då lägger kretsen ut tangentkoden på D-portens fyra lägsta bitar, och du kan läsa in den. Kopplingen mellan tangenkoden och tangenten framgår av tabellen. Omvandlingen mellan tangentkoden och motsvarande ASCII-tecken gör du lämpligen via en indexerad tabellslagning. Programmet: Du skall skriva ett program som hämtar tecken från tangentbordet och sänder iväg dem via -ljuset. Samtidigt skall ditt program ligga och känna efter om det kommer in några tecken, och när det gör det skall du läsa in tecknen och skriva ut dem på skärmen. Målet är att du skall kunna kommunicera med en liknande uppställning i rummet. Tangent Kod 0000 000 000 A 00 000 00 00 B 0 000 00 9 00 C 0 * 00 0 0 # 0 D Tangentbordskoden 00-09-0 -kommunikation - PN
Om du har en tvåraders LCD-display kan det vara lämpligt att visa de tecken som du sänder på den översta raden, och de tecken du tar emot på den undre raden. Mottagningskanalen + V 0 Sändningskanalen.k + V DS RST 0. u VDD + RST 0. u Vcc Out OSC OSC Q VSS MCHC90JL AC 0.u + V +0V A0 A A 9 A A A A B0 0 B B B B B B 0 B D0 9 D D D D D D D J B A B A B A + A + +v B A UR EG AC A A PA0 A PA A9 PA A PA A PA PA A0 A PB 0 A PB B PB A PB B PB A PB B PB PB B B PD 0 B0 PD B9 PD B PD B PD B PD B PD PD B INT J + V + V +v UREG AC PA0 PA PA PA PA PA PB0 PB PB PB PB PB PB PB PD0 PD PD PD PD PD PD PD INT B A B A B A A B A A A A A9 A A A0 A A B A B A B B B B0 B9 B B B B B + k RE D RS R/W E D0 9 D 0 D D D D D D C OP c:a k.nf K K.u RES DIS TRIG TRES 0.uF A B C D OE DA OSC KM +. uf V G CT 9 R R R R C C C C OUT 0 C9 k BDA A B 9 C * 0 # D TANGENTBORDSKORTET PI NJL PINJL LCDKORT BCB Mätning med Oscilloskop. För att se hur signalerna ser ut kan man enkelt studera dem med ett oscilloskop. Eftersom signalerna är engångaförlopp bör man ha ett minnesoscilloskop, men det går även att använda ett vanligt oscilloskop. Om möjligt bör du använda ett tvåkanalsoscilloskop. Sändkanalen. För att titta på sändarens signaler kopplar du lämpligen in den ena proben på timerkretsens ingång, pin. I schemat är punkten utmärkt som Test S". Den ligger i den nedre raden längst till höger på IC-kretsen. Denna signal kallas hos timerkretsen för RES (Reset) men är egentligen en enable-(tillåt-) signal. När den signalen är hög oscillerar timerkretsen och data sänds via -lysdioderna. Jordfinns påstiftetlängsttillvänsterpåden-poligakontakten.duserhurdenbreda ledarbanan på kortet går till denna pinne, och till pin. 00-09-0 -kommunikation - PN
START START Startbit? Nej Lägg ut startbiten Vänta us Ja Vänta ½ bittid Skifta ut LSB till Carryflaggan sänd LSB som första bit Startbit? Nej vänta us Ja Vänta bittid Skifta ut nästa bit till Carryflaggan och sänd den biten Läs första biten vänta us Vänta bittid Läs sista biten Skifta ut sista biten till Carryflaggan och sänd sista biten Vänta bittid vänta us Stoppbit? Vänta bit-tider ( ms) som teckenmellanrum ( stoppbitar) KLART: Returnera tecknet FEL KLART Flödesschema för mottagning av ett tecken Flödesschema för sändning av ett tecken 00-09-0 -kommunikation - PN
Den andra proben kopplar du till timerkretsens utgång, pin, som ligger ansluten till ett motstånd på kohm Den punkten är i schemat utmärkt som Test S". Du hakar enklast fast kroken på din oscilloskopprob på motståndet. Vrid kortet så att texten står rättvänd.dåskalldukrokafastprobenpådenövreändanavdetfjärdemotståndeträknat från vänster. Det är på kohm och har färgmärkningen brun-svart-rög-guld. Signalen här ligger på låg spänning när man inte sänder något och när man sänder ser man bärfrekvensen som oscillerar på 0 khz. Oscillationen pågår så länge som biten sänds. Ställ in oscilloskopet så att det triggar på signalen Test S. När du sänder ett tecken ser du hur bitarna kommer in till timerkretsen på Test S" och på timerkretsens utgång, Test S", ser du hur databitarna blivit modulerade med en bärvåg på khz. Mottagarkanalen. Test S Jord Test S Test M För att kunna studera mottagarkanalen måste du ha ytterligare en -kommunikations modul som kan sända tecken till dig. Koppla in proben på mottagarkretsens utgång, i schemat utmärkt som Test M. Mottagarkretsen tar emot det modulerade -ljuset och de-modulerar det så att man får fram de ursprungliga databitarna. I mätpunkten Test M ser du alltså samma bitström som går in till timerkretsen på sändarsidan, dock med den skillnaden att de mottagna signalerna i Test M är aktivt låga, så att den signalen är vänd upp-och-ner jämfört med sändarens signal i Test S". Den inverteringen tar man enkelt han om i det enchipsdatorprogram som styr -modulens sändare och mottagare. 00-09-0 -kommunikation - PN