rc5 decodering met µcontrollerprotocol 2 : nec 16 bit : 8 bit adres + 8 bit commando....

21
http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen RC5 Decodering met µController Patrick De Wachter 15 december 2007

Upload: others

Post on 23-Mar-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

RC5 Decodering met µController

Patrick De Wachter15 december 2007

Page 2: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

Agenda

� Het doel

� IR Theorie

� Een aantal protocols

� RC5 in detail

� Uitbreidingen : RC5X en RC6

� Een aantal algoritmes

Page 3: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

Een filosofische noot …

DOEL =DOEL =Als Als groepgroep iets iets lerenleren over de over de werking van IR, werking van IR, afstandsbedieningen, afstandsbedieningen, interruptsinterrupts, , statemachinesstatemachinesen en PICsPICs

… en er … en er plezierplezier aanaanbeleven !beleven !

Page 4: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

IR Theorie : Infrarood licht

� 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 kunnenlicht(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.

Ultraviolet Infrarood

Page 5: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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.

Page 6: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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 hiermeerekening houden) maar ook minder fragiel.

� 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.

“Gewoon Circuit”

“Emitter volger”

Page 7: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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 comparatornaar 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 aanbrengenbij de stroomaansluitingen van de ontvanger.

Page 8: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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.

Page 9: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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)

Page 10: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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 !

Page 11: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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

Page 12: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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)

Page 13: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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

Page 14: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

Protocol 5: Philips RC5 (3/3)

Voor-gedefinieerdeAdressen &

Commando’s :

Page 15: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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

Page 16: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

Overzicht protocols

21 bit (1+1+3+8+8)Manhattan encoding (bi-phase coding, maar omgekeerd aan RC5)

36KhzRC6

14 bit (1+1+5+7)Manhattan encoding (bi-phase coding)36KhzRC5X

14 bit (2+1+5+6)Manhattan encoding (bi-phase coding)36KhzRC5

10 bit (4+6)Geen Modulatie : Puls van 10usec, pause 90 of 190 usec

GeenITT

13 bit (5+8Pulse Distance38KhzSharp

12 bit (4+8)Manhattan encoding (bi-phase coding)38KhzNokia

16 bit (8+8)Pulse distance : 1.05 msec of 2.1 msec

38KhzJVC

16 bit (8+8)Extended : 24 bit

Pulse distance : 1.125msec of 2.25 msec

38KhzNEC

12-15-20 bit (7+5)Pulse width Modulation : 1.2ms of 0.6 ms per bit

40 KhzSony

Lengte TechniekFrequentie

Page 17: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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 togglebit, 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

Page 18: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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.

Page 19: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

RC5 : alg 3 ‘Edge detection’

� Algoritme : State Machine via edgedetectie� 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)

Page 20: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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)

Page 21: RC5 Decodering met µControllerProtocol 2 : NEC 16 bit : 8 bit adres + 8 bit commando. Pulsedistancemodulation(38Khz) 8 adres bits + 8 data bits, 2x verzonden, 2e keer geïnverteerd

http://www.robotmc.org - de club van ROBOTica en Micro Controller enthousiastelingen

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 I2C communiceert ?

� Plezier beleven !