RC5 Decodering met µcontroller Patrick De Wachter 15 december 2007
Agenda Het doel IR Theorie Een aantal protocols RC5 in detail Uitbreidingen : RC5X en RC6 Een aantal algoritmes
Een filosofische noot DOEL = Als groep iets leren over de werking van IR, afstandsbedieningen, interrupts, statemachines en PICs en er plezier aan beleven!
IR Theorie : Infrarood licht Ultraviolet Infrarood Het zichtbare spectrum van licht heeft een golflengte tussen 380 nm en 780 nm (in een vacuüm). Bij golflengtes boven de 780 nm spreekt men van infrarood licht, bij golflengtes onder de 380 nm van ultraviolet licht. Beide zijn niet door de mens waarneembaar. Sommige dieren kunnen licht(straling) zien die de mens niet met het oog kan waarnemen. Bv. Ratelslangen hebben speciale groefjes tussen neusgat en oog waarmee ze warme prooien kunnen detecteren. Infrarode stralen zijn onzichtbaar voor het menselijk oog, maar op de huid waarneembaar door hun warmtewerking; ze werken ook in speciale fotografische emulsies en kunnen ook zichtbaar worden gemaakt met een warmtebeeldkijker: thermografie. Dit is een speciale camera met een detector gebaseerd op halfgeleidermateriaal, zoals germanium. Met een digitale camera kan men IR licht zichtbaar maken.
IR Theorie : Afstandsbedieningen Modulatie : Infrarood licht is overal aanwezig. Een fototransistor zal dit allemaal opvangen. Om deze storingen tegen te gaan men het uitgezonden signaal pulseren (30 60Khz) en de ontvanger alleen op die frequentie van pulsen laten reageren.
IR Theorie : Afstandsbedieningen Zender : Deze is gevoed door een batterij en moet dus zo efficient mogelijk zijn. Daarom zal men een duty cycle van 1/3 tot 1/4 hanteren (1/3 tijd aan 2/ tijd uit) en bevatten ze zuinige ICs die in slaapmode gaan. moet schokbestendig zijn. Daarom zal men geen kristal gebruiken maar een resonator. Deze is minder nauwkeurig (ontvanger moet hiermee rekening houden) maar ook minder fragiel. Gewoon Circuit Emitter volger Moet een zo groot mogelijke afstand overbruggen. Een LED kan gemiddeld maar 25mA 250mA verdragen, maar door het pulseren kan men dit opdrijven tot kortstondige pieken 100mA tot zelfs 1A en zo grotere afstanden overbruggen. Aangezien ze op batterijen werken moet men rekening houden met afnemend spanningen. Om dit op te lossen wordt een emitter volger gemaakt met 2 diodes (= 1,2V) zodat er een constante amplitude is van 0,6V aan de emitter. Deze constante spanning met een constante weerstand resulteert in constante sterkte.
IR Theorie : Afstandsbediening Ontvanger : Typisch blokdiagram van de ontvanger : Het ontvangen IR signaal wordt door een IR diode opgevangen. De eerste 2 stadia versterken en begrenzen het signaal. Deze zorgen er voor dat er een constant signaal gegenereerd wordt onafhankelijk van de afstand van de zender of de sterkte van het ontvangen signaal. Het AC signaal wordt nu aan een dual band bypass-filter (BPF) aangeboden. Daarna volgen nog een demodulator, een integrator en een comparator. Deze drie delen zijn verantwoordelijk voor het detecteren van de aanwezigheid van de modulatie frequentie. Als dat gezien wordt, zal de uitgang van de comparator naar beneden getrokken worden (omgekeerde logica : 1= laag, 0 = hoog) Deze volledige schakeling is ondergebracht in één geintegreerde component (+- 1,5) Een aantal leveranciers : Siemens (SFH506-xx), Telefunken (TFMS5xx0,TK18xx series), Vishay (TSOP12xx, TSOP48xx, TSOP62xx), Sharp (GP1UD26xK, GP1UD27xK,GP1UD28xK, enz..) waarbij xx typisch de frequentie aanduidt waarvoor de ontvanger gevoelig is. Dit is echter niet zo krisch. Ze ontvangen ook de andere frequenties in de buurt, maar zijn uiteraard het meest gevoelig voor hun eigen frequentie. Vandaar dat er ook typisch zijn die een het gevoeligst zijn ergens tussen 2 frequenties in (bv. 36,7 Khz ontvangers werken zowel voor 36Khz als 38Khz) Opmerking : de versterker heeft de neiging om snel te gaan oscilleren. Om dit op te lossen kan men een capaciteit van enkele µf aanbrengen bij de stroomaansluitingen van de ontvanger.
Protocol 1 : Sony SIRC Drie versies : 12 bit, 15 bit en 20 bit Pulse width modulation (40Khz) 7 data bits, 5 adres bits, LSB first Zolang men de knop inhoudt worden commando s om de 45 msec herhaald.
Protocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulse distance modulation (38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd elke transmissie duurt even lang), LSB eerst Herhaling om de 110 msec zolang men knop inhoudt. Extended protocol : NEC protocol wordt veel gebruikt en de 256 adressen volstonden niet. Dit werd opgelost door de adresredundantie te laten vallen (64K adresmogelijkheden)
Protocol 3 : JVC Sterk gelijkend op NEC : Pulse distance, 38Khz, 16 bit Geen herhaling van adres/command, dus variabele lengte Herhaling om de 50 of 60msec zolang men de knop inhoudt. Veel JVC apparaten gebruiken geen JVC remote!
Protocol 4 : ITT Geen modulatie : 14 pulsen van 10usec, elk gevolgd door 90 of 190 usec pause 14 pulsen is één bericht Lead in = lead out = 300 usec Zeer snel : een volledige boodschap duurt maar 1,7 2,7 msec
Protocol 5 : Philips RC5 (1/3) Het meest gebruikte protocol. Manhattan encoding : bi-phase coding 36Khz, constante bit time van 1.778 msec Datalengte : 2 start bits + 1 toggle bit + 5 adres bits (MSB eerst) + 6 command bits (MSB eerst)
Protocol 5 : Philips RC5 (2/3) Duur volledige signaal = 14 x 1,778 msec = 24,889 msec. Herhaling om de 114 msec zolang men de knop ingedrukt houdt. Togglebit : verandert telkens men een knop indrukt, maar blijft dezelfde als knop ingedrukt blijft
Protocol 5: Philips RC5 (3/3) Voor-gedefinieerde Adressen & Commando s :
Protocol 5 : Philips uitbreiding RC5X : Gebruikt maar één startbit. De andere wordt toegevoegd aan het commando (Men moet S2 dan wel inverteren. RC6 : Manhattan encoding, maar 0 en 1 zijn omgekeerd aan RC5. 16 bit code, 8 mogelijke modes. Header field : 3 componenten : Leader (2,66ms hoog + 0,889 msec laag). Daarna volgenen 3 mode bits en dan één trailer bit. Deze laatste is de toggle bit van RC5. Control field : 8 bits die het adres bevatten (MSB eerst) Information field : 8 bits die het commando bevatten (MSB eerst) Signal free : Gedurende 2,66msec mag er geen andere data verstuurd worden. Dit dient om de correcte ontvangst te kunnen controleren
Overzicht protocols Frequentie Techniek Lengte Sony 40 Khz Pulse width Modulation : 1.2ms of 0.6 ms per bit 12-15-20 bit (7+5) NEC 38Khz Pulse distance : 1.125msec of 2.25 msec 16 bit (8+8) Extended : 24 bit JVC 38Khz Pulse distance : 1.05 msec of 2.1 msec 16 bit (8+8) Nokia 38Khz Manhattan encoding (bi-phase coding) 12 bit (4+8) Sharp 38Khz Pulse Distance 13 bit (5+8 ITT Geen Geen Modulatie : Puls van 10usec, pause 90 of 190 usec 10 bit (4+6) RC5 36Khz Manhattan encoding (bi-phase coding) 14 bit (2+1+5+6) RC5X 36Khz Manhattan encoding (bi-phase coding) 14 bit (1+1+5+7) RC6 36Khz Manhattan encoding (bi-phase coding, maar omgekeerd aan RC5) 21 bit (1+1+3+8+8)
RC5 : Algoritme 1 polling Algoritme : actief scannen poort wacht tot we low zien (via scanning op willekeurige poort of na interrupt op RB0). Zodra we die zien starten we. Wacht 444usec = (1/4 van een periode = midden 1e helft) Test om de 889usec de bitwaarde (2 startbits van 1, een toggle bit, 5 adres en 6 databits). Na 889 usec moeten we telkens een phase change zien. Zoniet : error. Daarna begint de volgende bit. Stockage dmv schuifregisters. Startbits moeten 1 zijn
RC5 : alg 2 Interrupt sampling Algoritme : state machine via timer Zet een timer op die om de xxx usec een interrupt genereert. (50usec 444 usec?) In de interrupt routine testen we de waarde van de IR poort. Adhv de verlopen tijd kunnen we een state bijhouden en aanpassen De transities (hoog>laag en laag>hoog) gebruiken we om te bepalen welke de volgende state mag zijn en fouten te detecteren De gevonden bits worden opgeslagen in schuifregisters. Zodra we 14 bits hebben weten we dat het signaal volledig is.
RC5 : alg 3 Edge detection Algoritme : State Machine via edge detectie Genereer een interrupt als er een dalende of stijgende flank is op RB0 (alternerend!) Meet de tijd tussen twee interrupts via een timer. Deze moet binnen aanvaardbare grenzen liggen (afwijkingen van de clock in zender) Hou er rekening mee dat als een 0 op een 1 volgt of omgekeerd dat er geen statechange is op de bit grens. Om eventuele missers te vinden moeten we ook een interrupt genereren als de volgende change te lang op zich laat wachten (bv. na 3msec)
RC5 : Mogelijke problemen Onnauwkeurige timing : sommige algoritmes zijn zelfregelend. Ze gebruiken de lengte van de 2 startbits om zichzelf te calibreren. Interferenties : niet te vermijden, dus errorchecking moet aanwezig zijn. Advies op sommige sites : niet te strikt zijn. In het hoofdprogramma kunnen we testen op de adrescode. Die moet overeenstemmen met die van de afstandsbediening (bv. TV =00000)
Tot slot Het doel : Als groep iets leren over de werking van PICs, IR en interrupts. Een RC5 routine die door iedereen kan gebruikt worden (dus aanpasbaar aan de gekozen IR input poort en het kristal van de controller) De processor vrij laat voor andere zaken Die als library kan ingelinkt worden en taalonafhankelijk is. Alternatief : een voorgeprogrammeerde µcontroller die via I 2 C communiceert? Plezier beleven!