Projektspecifikation för IR-sändare, digitalteknik 2005 1. Funktionsbeskrivning för IR-sändare IR-sändaren ska ge en standardiserad utsignal enligt RC5 kod för åtminstone 8 olika kommandon till en mottagare för IR-signaler. Sändaren ska styras av ett tangentbord och generera kod som motsvarar den aktiverade tangenten. Utrustningen ska ge en utsignal där hög spänningsnivå innebär att IR-dioden lyser och låg spänningsnivå innebär att IR-dioden är släckt. Sida 1
RC-5-kod RC-5-koden är en mycket vanlig kod som har utvecklats av Philips. Koden används av Philips för att styra olika elektroniska apparater med en fjärrkontroll. Kommunikationen sker via IRljus. Dataformat En kod som sänds via RC-5 består av 14 bitar. Varje kod består av 5-bitars adress (val av system) och 6 bitars kommando. Det innebär att 32 olika system (TV, CD, video etc.) kan väljas och att varje system kan erhålla 64 olika kommandon: S1,S2 T A4..A0 C5..C0 S1 S2 T A4 A3 A2 A1 A0 C5 C4 C3 C2 C1 C0 Alltid 1 i den ursprungliga RC-5-koden Togglebit, växlar mellan två kommandon Adressbitar, val av system Kommandobitar Tabellen och bitbeskrivningen gäller standard RC-5. I en nyare variant, extended RC-5, används S2 som en extra kommandobit (C6) och medger 128 olika kommandon. Andra varianter av koder från Philips är RC-6 och RC-MM. Tabellen nedan visar några exempel på koder. Address: Device: Command: 0 TV1 0...9 Numbers 0...9 (channel select) 1 TV2 12 Standby 5 VCR1 16 Master Volume + 6 VCR2 17 Master Volume - 17 Tuner 18 Brightness + 18 Audio Tape 19 Brightness - 20 CD Playe 50 Fast rewind 52 Fast run forward 53 Play 54 Stop 55 Recording Kodning av logiska värden RC-5 använder Manchester kod för att representera de logiska värdena 0 och 1. Varje bit sänds under en konstant tid (T) och i mitten av varje bit ändras den fysiska signalen med positiv eller negativ flank. En positiv flank innebär logiskt 1 och en negativ flank innebär logiskt 0. Kodningen innebär att en mottagare kan synkronisera med insignalen på ett enkelt sätt. En annan vanlig typ av kodning är NRZ (Non Return to Zero). Båda koderna visas i figuren, de logiska värdena är 1100101 bit-tid (T) X Z NRZ Manchester CLK Sida 2
Tider, modulation Tiden T ska enligt RC-5 vara 1.778 ms och för att sända ett fullständigt kommando med 14 bitar krävs en total tid T code = 14*1.778 ms = 24.892 ms. Tiden kan genereras av en kristall (keramisk resonator) med frekvensen 432 khz som delas ned till ett lämpligt värde. Tidigare fanns i alla radiomottagare en keramisk resonator som gav frekvensen 455 khz och en resonator av denna typ ger normalt tillräcklig noggrannhet för att generera RC-5-kod. När signalen i RC-5 ligger hög är den modulerad så att den består av 32 korta pulser med puls/paus-förhållande 3:1. Anledningen är att ljuset från IR-dioden kommer att bli mycket lättare att detektera av mottagaren och dessutom kommer strömförbrukningen i sändaren att minska till en fjärdedel. Figuren på nästa sida visar hur 1 är mudulerad. Tmod = 27.78 µs Tlow = 889 µs Thigh = 889 µs Tbit = 1778 µs Under den modulerade delen av signalen blir IR-diodens frekvens: Fdiod = 1 / 27.78 µs = 36 khz Mottagaren är försedd med ett filter som är känsligast för ett bestämt frekvensområde och i detta fall bör frekvensen vara samma som blinkningarna på lysdioden. Eftersom utsignalen genererar frekvensen 36 khz med ett puls/paus-förhållande på 3:1 kan utsignalen styras av en oscillator med frekvensen 144 khz för att ge en enkel logik. Se figuren: Clock (144 khz) Puls 3:1 Ytterligare information om RC-5 På Internet finns ganska mycket om RC-5.. Philips har ett datablad för kretsen SAA3010 som visar principen för en IR-sändare. Några länkar: (http://users.pandora.be/nenya/electronics/rc5/) (http://www.gis.net/~dnegro/ir/) http://www.xs4all.nl/~sbp/knowledge/ir/ir.htm http://www.xilinx.com/bvdocs/appnotes/xapp339.pdf http://www.sprut.de/electronic/ir/rc5.htm Även inlämningsuppgift 3 kan vara värdefull. Sida 3
Avkänning av tangentbord Keypad Scan Ett tangentbord är en naturlig komponent för att ge insignaler till ett elektroniskt system. Ett enkelt tangentbord består av ett antal rader och ett antal kolumner och kan ha nedanstående utseende. I tangentbordet finns kontakter som sluts när motsvarande tangent trycks ned. För att veta vilken kontakt som är sluten måste spänningar läggas ut på tex. kolumnerna och om någon tangent är nedtryckt kommer en av radledningarna att indikera hög nivå. Förfaringssättet att känna av tangentbordet kallas Keypad Scan eller att scanna av tangentbordet. Eftersom kontakterna ger kontaktstudsar (contact bounces) måste man ta hänsyn till även det. Ett vanligt sätt att genomföra avkänningen är följande: Lägg ut logiskt 1 på C2,C1 och C0 och vänta på att någon tangent blir nedtryckt. När detta sker kommer en av R3, R2, R1 eller R0 att bli en logisk etta. Lägg ut logiskt 1 på enbart C2. Om någon av tangenterna 3. 6, 9 eller # är nedtryckt har en giltig (Valid) tangent hittats. Sätt V till 1 och ge samtidigt rätt kod på N. Om ingen tangent upptäcktes i C2 ska C1 sättas till 1 och testas på samma sätt. Därefter testas C0. Om en giltig tangent har indikerats sätt C2=C1=C1 =1 och vänta tills ingen tangent är nedtryckt. Därefter kan en ny avkänning starta. Sida 4
Eliminering av kontaktstudsar Figuren nedan visar ett förslag till hur kontaktstudsarna kan elimineras (debouncing). Observera att periodtiden för klockfrekvensen måste vara större än studstiden. Contact closure Clock Qa Qb R0 R1 R2 R4 Qa Qb' > 1 & K > 1 CLK D >CLK Qa D >CLK Qb Kd Blockschema och tillståndsdiagram för en tangentbordsavkodare I figuren finns ett förslag till den kompletta konstruktionen av tangentborsdavkodaren. I projektet med IR sändaren behövs ett tangentbord och förslaget visar ett sätt att konstruera en avkodare för tangentbordet. Konstruktionen ska beskrivas med VHDL och vara anpassad för CPLD-kretsen XC9572. Troligen är det bättre att låta scannpulsen vara aktivt låg eftersom XC9572 har bättre drivförmåga vid låg nivå. Avkodaren är svår att simulera eftersom kontaktstudsarna varierar mellan olika tangentbord. Kontrollera funktionen både genom simuleringen och verklig test genom att ansluta den till ett antal lysdioder och kontrollera att rätt kod erhålles. Avkodaren ska styras med en frekvens på cirka 100 Hz till 1kHz för att kontaktstudsarna ska elimineras. Sida 5
Förslag till blockschema IR-sändare Tangentbord 4*4.7 kω C2 C1 C0 R3 R2 R1 R0 tg_decode count_div 144 khz clk 562,5 Hz clk/256 clk/4 clk/2 clk N3 N2 N1 N0 valid N3 N2 N1 N0 load clk '1' '1' 'T' sh_14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 send = 1 & IR_out Sida 6