|
Você
pode ver os 14 bits do sistema RC-5 acima. A Vermelho bits são nível
"ON", enquanto a Blue estão "OFF".
Os primeiros dois bits, # 1 e # 2, são chamados ACG calibração. Eles são
"ON" nível, e servirão para calibrar o IR Receptores Auto Gain
Control.
Na Philips telecomandos, o bit # 3 é o CHECK pouco, cada vez que você
pressionar uma tecla no controle remoto, mesmo pressionando repetidamente a
mesma tecla, isto pouco muda estado. Esse recurso é interessante. Suponha que
você pressionou número "1" no remoto (tentando selecionar canal 15
na TV) e segurando ele por 2 segundos, então o seu outro lado apenas bloqueia
o sinal infravermelho.
A
TV iria receber dois trens de pulsos, gerados por seu lado quebrar um longo
comboio em dois. Outros sistemas de transmissão de compreender duas teclas
"1" selecionando canal "11", mas isso não acontece no
sistema Philips. Este bit vira estado cada vez que você pressionar uma tecla,
para bloquear o sinal com a mão não mudar este bit, de modo que a televisão
vai ainda perceber que a mesma tecla pressionada. Para seleccionar o canal
"11" você deve pressionar tecla "1" realmente duas vezes.
Os próximos 5 bits, # 4 a # 8, são utilizados para SYSTEM ENDEREÇO, ou para
identificar qual tipo de dispositivo deve executar o comando bits. Por
exemplo, a televisão utiliza ENDEREÇO ZERO. # 8 Bits é o menos significativo
Bit.
|
SYSTEM ADDRESS
|
EQUIPMENT
|
|
0
|
TV SET 1
|
|
1
|
TV SET 2
|
|
2
|
VIDEOTEXT
|
|
3
|
EXPANSION FOR TV 1 AND 2
|
|
4
|
LASER VIDEO PLAYER
|
|
5
|
VIDEO RECORDER 1 (VCR 1)
|
|
6
|
VIDEO RECORDER 2 (VCR 2)
|
|
7
|
RESERVED
|
|
8
|
SAT 1
|
|
9
|
EXPANSION FOR VCR 1 OR 2
|
|
10
|
SAT 2
|
|
11
|
RESERVED
|
|
12
|
CD VIDEO
|
|
13
|
RESERVED
|
|
14
|
CD PHOTO
|
|
15
|
RESERVED
|
|
16
|
AUDIO PREAMPLIFIER 1
|
|
17
|
RECEIVER / TUNER
|
|
18
|
TAPE / CASSETE RECORDER
|
|
19
|
AUDIO PREAMPLIFIER 2
|
|
20
|
CD
|
|
21
|
AUDIO RACK
|
|
22
|
AUDIO SAT RECEIVER
|
|
23
|
DCC RECORDER
|
|
24
|
RESERVED
|
|
25
|
RESERVED
|
|
26
|
WRITABLE CD
|
|
26-31
|
RESERVED
|
Na próxima 6 bits, # 9 a # 14, são usados
para comando informações para o dispositivo selecionado no endereço bits. Bit
# 14 é o menos significativo BIT, e é transmitida passado.
Por exemplo, COMANDO STOP # 54 (36h em hexadecimal), bits # 9, # 10, # 12 e #
13 deve ser ON, bits # 11 e # 14 deve ser desligado.
|
COMMAND (in decimal)
|
DESCRIPTION of
FUNCTION
|
|
0-9
|
NUMERIC KEYS 0 - 9
|
|
12
|
STANDBY
|
|
13
|
MUTE
|
|
14
|
PRESETS
|
|
16
|
VOLUME UP
|
|
17
|
VOLUME DOWN
|
|
18
|
BRIGHTNESS
+
|
|
19
|
BRIGHTNESS -
|
|
20
|
COLOR SATURATION +
|
|
21
|
COLOR SATURATION -
|
|
22
|
BASS UP
|
|
23
|
BASS DOWN
|
|
24
|
TREBLE +
|
|
25
|
TREBLE -
|
|
26
|
BALANCE RIGHT
|
|
27
|
BALANCE LEFT
|
|
48
|
PAUSE
|
|
50
|
FAST REVERSE
|
|
52
|
FAST FORWARD-
|
|
53
|
PLAY
|
|
54
|
STOP
|
|
55
|
RECORD
|
|
63
|
SYSTEM SELECT
|
|
71
|
DIM LOCAL DISPLAY
|
|
77
|
LINEAR FUNCTION (+)
|
|
78
|
LINEAR FUNCTION (-)
|
|
80
|
STEP UP
|
|
81
|
STEP DOWN
|
|
82
|
MENU ON
|
|
83
|
MENU OFF
|
|
84
|
DISPLAY A/V SYS STATUS
|
|
85
|
STEP LEFT
|
|
86
|
STEP RIGHT
|
|
87
|
ACKNOWLEDGE
|
|
88
|
PIP ON/OFF
|
|
89
|
PIP SHIFT
|
|
90
|
PIP MAIN SWAP
|
|
91
|
STROBE ON/OFF
|
|
92
|
MULTI STROBE
|
|
93
|
MAIN FROZEN
|
|
94
|
3/9 MULTI SCAN
|
|
95
|
PIP SELECT
|
|
96
|
MOSAIC MULTI PIP
|
|
97
|
PICTURE DNR
|
|
98
|
MAIN STORED
|
|
99
|
PIP STROBE
|
|
100
|
RECALL MAIN PICTURE
|
|
101
|
PIP FREEZE
|
|
102
|
PIP STEP UP
|
|
103
|
PIP STEP DOWN
|
|
118
|
SUB MODE
|
|
119
|
OPTIONS BUS MODE
|
|
123
|
CONNECT
|
|
124
|
DISCONNECT
|
Este sistema pode ser autómato com os seguintes chips:
SAA3049 ou TDA3048 para receptores e SAA3006, SAA3010 ou SAA3027 para
transmissores.
DECODAR
COM UM MICROCONTROLLER
Para
receber o sinal através de um micro controlador, segue o calendário a partir
da figura 7 acima. Note que o Receptor Infravermelho invertido o bit sinal, o
baixo nível significa pouco ON.
Durante inactividade (sem Infravermelhos presentes) a saída do receptor é
Infravermelhos UP (bit zero).
Pode ligar o receptor IR saída de qualquer porto de entrada pino ou
interromper o pino do seu micro controlador, e mantê-lo ou preparar o voto
interromper rotina para accionar sua leitura após a primeira baixa sentida.
Quando você pressiona uma tecla no controle remoto, ele transmite o trem de
pulsos, e seu micro controlador receberá bit # 1 em primeiro lugar. Vai ser
detectados logo após o meio do bit, quando ele muda de alto a baixo nível de
meio bit "1". Esta é a primeira vez que o micro controlador irá
"ver" a recepção de sinal IR.
Você não precisa descodificar os primeiros dois bits, nem mesmo o CHK bits
(excepto se você quiser controlar, como a TV e do descrito acima), assim você
pode pular os 3 bits e começar a receber os ENDEREÇO bits. Para fazer isso,
você precisa saltar 2,75 bits tempo, e ser-lhe-á exactamente no meio do
direito nível da primeira ENDEREÇO bits para ser lido (não invertido nível).

Figure 8
Então,
após a primeira detecção baixo nível, o software deve esperar 4,752
milissegundos e, em seguida, começar a ler os próximos 11 bits espaçadas
1.728ms cada. Os primeiros 5 bits são Endereço e os próximos 6 bits são
Comando, lógica nível correcto, LOW = 0, HIGH = 1.
Para
se certificar de que o seu software está esperando o momento correto, você
precisará usar um osciloscópio duplo canal, e este procedimento para ajustar
o seu software:
Na sua leitura pouco uso rotineiro disponível um microcontrolador porto pino
e gerar um pulso rápido para cima e para baixo, em seguida, utilize um canal
para exibir o alcance de pulso, eo outro canal para mostrar o alcance
recebidas sinal do receptor. Pressione e segure-chave número zero no
telecomando, e sincronizar o âmbito para mostrar uma onda forma completa, não
se preocupe com o calendário. O mais rápido 11 pulsos deve ser sempre no
lugar desses Vermelhos setas para baixo na figura 8 acima. Isso significa que
a "leitura bit" software rotina irá ler exatamente no meio do bit
nível correto.
O software será necessário ter dois horários atrasos, o primeiro para o
segundo e esperar 4.752ms de esperar 1.728ms. Ajustar o calendário do
circuito 4.752ms até o primeiro pulso rápido acontece exactamente como
indicado acima. Em seguida, ajustar o calendário 1,728 ms demora de tal
maneira que o último pulso rápido (# 11) bits leitura acontece exatamente no
meio da parte de baixo do último bit (# 14).
Verificar todos os outros bits e pulsos rápidos, devem ser toda
correspondência ok. Pequenos erros seriam aceites uma vez que a leitura seria
acontecer no meio do bit, poucos erros para mais ou menos não é um problema,
mas é melhor ser o mais possível no meio do baixo nível de cada bit. Esta é a
razão pela qual você deve ajustar o seu calendário 1.728ms rotina olhar para
os últimos dados pulso rápido e pouco, se algum jogo ok, todos os outros bits
deve ser boa também.
Lembre-se que qualquer outra chave remoto irá gerar um padrão diferente e
pode confundi-lo. Utilize sempre chave número zero para o software de
calibração.
Quando
você encontrar o timing correto atrasos, você pode substituir o FAST pulso
com instruções nops (verifique o chip set instrução para manter o mesmo
relógio count desperdiçada), ou manter o pulso rápido lá apenas para se
divertir, então você será capaz de reavaliar-lo em caso de problemas.
Lendo os 11 bits é fácil. Basta deslocar-los deixado em um registo 8 bits e
ignorar os elevados ordem 2 bits # 7 e # 6 (E 03Fh instrução), mantenha
apenas o último COMANDO 6 bits ... Você não vai querer decodificar o ENDEREÇO
bits, é você? A TV controle remoto irá sempre enviar Endereço Zero, você sabe
disso, certo?
Veja
alguns exemplos da onda completa (14 bits), o Receptor de Saída:

Valores à
direita estão o comando em hexadecimal
Red: AGC pulses (ON)
Blue: Check bit (flipping)
White: Address (00)
Green: Command
SEGURANÇA
Se você quiser incluir
alguma segurança (recomendado), verifique bits # # 6 e 7 de zeros, se for uma
TV Philips remoto. Você também não pode utilizar o 4.752ms atraso, em vez
disso, esperar apenas 3 / 4 de um pouco tempo e, em seguida, começar a ler o
bit # 2.
Você irá supor a
primeira foi um "1" e a segunda deve ser um "1" também,
se não, descartá-las, esperar 60ms recepção e ativar novamente, você deve
sincronizar correctamente no início do próximo trem de pulsos. Mas, mesmo
assim, você poderá ler erradamente um "1" bit seguido por outro, se
iniciar a leitura em qualquer lugar no meio do comboio.
Para se certificar de que seu controlador é nunca começar a ler o comboio no
meio, você pode descartar a primeira leitura sempre após um longo silêncio
(meio segundo ou mais), assim você terá certeza de que a segunda leitura será
em sincronia. Para fazer isso, depois da marcha lenta durante mais de meio
segundo, entra em uma rotina especial sincronia e após a primeira detecção
BAIXA nível bits (pode ser o primeiro real ou não), esperar 60ms e saltar
para o verdadeiro receber rotina e começar a acompanhar a Receptor de saída
novamente. Isso significa que o primeiro comboio será utilizado apenas para
fazer a sua rotina receber a empenhar-se em um timing correto para ler o
segundo trem de pulsos.
Lembre-se que há um atraso de 105ms entre trens de pulso, por isso não
importa o que você sentiu BAIXA pouco, espera 60ms irá colocar o seu
acolhimento rotina no meio do silêncio entre trens de pulso, permitindo-lhe
sincronizar no primeiro pedaço do próximo trem de pulsos
AT89C2051
IR RECEPTOR
O
seguinte código circuito e foram utilizados em um dos nossos equipamentos,
usando um controle remoto para mecânicos posicionamento. Os At89C2051 foram
seleccionados pela codificação rápida e de baixo custo. Hoje provavelmente eu
iria usar uma pequena estanífero AVR unidade. O software lista abaixo foi
retirado de outros elementos não essenciais codificação, necessário para a
nossa máquina, mas não necessária aqui.

8051 CODIGO ASSEMBLY
;
ÛÛÛÛÛÛÛÜ
ÜÛÛÛÛÛÜ
ÛÛÛÛÛÛÛÛ
; ÛÛ
ßÛÛ ÛÛß
ßÛ ÛÛ
; ÛÛ
ÜÛÛ
ÛÛ
ÛÛ
;
ÛÛÛÛÛÛÛÛ
ÛÛ
ÛÛÛÛÛÛÛÜ
; ÛÛ
ÛÛ
ÛÛ
ßÛÛ
; ÛÛ
ÛÛ ÛÛÜ
ÜÛ
ÛÛÜ ÜÛÛ
;
ÛÛ ÛÛ
ßÛÛÛÛÛß
ßÛÛÛÛÛß
;
; SOFTWARE FOR AT89C2051 TO
DECODE PHILIPS REMOTE CONTROL
; RC-5 CODIFICATION - INFRA-RED
RECEIVER LT1029-ND DIGIKEY
; CLIPPED PARTS FROM THE
ORIGINAL SOURCE TEXT:
; A) TRANSMITTER
; B) SELECTION FOR
PHILIPS / FC1 - (WORKING PHILIPS)
; AT89C2051 RUNNING AT 2MhZ
<== IMPORTANT
; WAGNER LIPNHARSKI - NOVEMBER
1999 - WAGNER@USTR.NET
; UST RESEARCH INC. - ORLANDO,
FL - WWW.USTR.NET
;
$MOD51
$NOPAGING
$LIST
;
; PIN 11 (P37) : 0 = RECEIVER
CIRCUIT
;
: 1 = TRANSMITTER CIRCUIT
;
; PIN 2 (P30) : 1 =
RECEIVER DECODES PHILIPS REMOTE
;
: 0 = RECEIVER DECODES FC1 REMOTE
;
; PIN 12 (P10) : PULLED UP =
FC1 CODE TRANSMITTER
;
: GROUND = PHILIPS CODE TRANSMITTER
;
; RECEIVER CONFIGURATION:
; -----------------------
; PIN 7 (P33) INPUT SIGNAL FROM
IR RECEIVER
; PINS 12-19 DECODER OUTPUT
(DRIVE TO GROUND)
; PIN 11 TO GROUND.
; CLOCK CERAMIC RESSONATOR 2MhZ
; RESET CAP 1uF TO +VCC
; PIN 9 (P35) CAN BE USED TO LITE
A LED WHEN RECEIVING VALID IR
; PIN 8 (P34) SCOPE GATE TIME
(SOFTWARE TIMMING ADJUSTMENT)
;
; ---___---___------______---___---___--- PIN 7 P33 IRDATA
; _|_____|_____|_____|_____|_____|_____|_ PIN 8 P34 SCOPE READ GATE TIME
;
; --__ 1 BIT
;
RX DATA
; __-- 0 BIT
;
; TRANSMITTER CONFIGURATION:
; --------------------------
; PINS 2,3,6,7,8,9 & 11
TIED TOGETHER TO DRIVE IR LED
; PINS 16-19 KEYBOARD MATRIX
DRIVE (4 PINS)
; PINS 14 & 15 KEYBOARD
MATRIX RETURN WITH PULL UP
; CRYSTAL 6MHZ
; RESET CONTROLLED BY FET
BS110, DIODES FROM KEYBOARD.
; PIN 12 GOES TO GROUND WHEN IN
POWER OFF
;------------------
; Receiver
;------------------
Led
BIT 0B5h ; P3.5
IrInput
BIT 0B3h ; P3.3
Scope
BIT 0B4h ; P3.4
RxTx
BIT 0B7h ; P3.7 ; Grounded if Receiver/High if TX
;------------------
; Transmitter
;------------------
TXLED
EQU P3 ; FF = Off, 00 = On
KO1
Bit 097h ; P1.7 Keyboard Output
KO2
Bit 096h ; P1.6
KO3
Bit 095h ; P1.5
KO4
Bit 094h ; P1.4
KI1
Bit 093h ; P1.3 Keyboard Input
KI2
Bit 092h ; P1.2
IRDATA
DATA 010H ; Memory to store IR code received
;======================================;
;
; P H I L I P
S R E M O T E
; CODE "10" AT AV6
UNIVERSAL PROGRAMMABLE REMOTE CONTROL
;
;======================================;
ORG 00H
MAIN:
Mov SP,#SPVALUE ;
PH0:
Mov
P1,#0FFh
; Reset Decoder Output High
Setb
LED
; Turn off IR Indicator
;
;
PH1:
Mov
4,#022
; 2MHz
Mov
5,#000h
; 2MHz Time loop
PH2:
Jnb IrInput,PH3 ;
Wait for Incomming IR (first low)
Djnz
5,PH2
; This time loop is to keep the last
Djnz
4,PH2
; ..pressed key available at P1 for few
Jmp
PH0
; ..time in case you press it again
; ..and avoid glitches at P1.
;-------------------------;
PH3:
Clr
A
; IR Receiver First Low level.
Clr
Led
; Lite IR Indicator
;
;
Mov
2,#110
; Time Loop (3/4 bit time)
Djnz
2,$
; Waste Time to sync second bit
;
; 2MHz = 1.296ms
Mov
B,#7
;
PH4:
Setb
Scope
; Scope Gate Indicator Pulse UP
Mov
C,IrInput ;
Shift IR state to Carry bit
Clr
Scope
; Scope Gate Indicator Pulse Down
Rlc
A
; Insert LEFT Carry Bit into A Reg
;
;
Mov
2,#145
; Waste time for next BIT
Djnz
2,$
; 2MHz clock, 1.728ms
;
;
Djnz
B,PH4
; Rotate 7 bits into A
;
; AGC#2, CHKbit, ADDRESS field (5 bits)
;-------------------------;
Anl
A,#0F7h
; Cut off CHECK Bit (Flipping bit)
Cjne A,#40h,PH5 ;
10h means second AGC UP & Address 00
;
; Not 10h?, wrong sync, go again (PH5)
;-------------------------;
Mov
B,#6
; Will Get the COMMAND field
PH4A:
Setb
Scope
; Scope Gate Indicator Pulse UP
Mov
C,IrInput ;
Shift IR state into Carry bit
Clr
Scope
; Scope Gate Indicator Pulse Down
Rlc
A
; Insert LEFT carry bit into A Reg
;
;
Mov
2,#145
; Waste time for next BIT
Djnz
2,$
; 2MHZ clock = 1.728ms
;
;
Djnz
B,PH4A
; Rotate 8 bits into A (Command)
;
; Here A holds Command bits
;-------------------------;
Mov
IRData,A
; Save Command at IRData memory
Cjne A,#25h,$+3 ;
Is Command >=25h
Jnc
PH5
; Yes? Wrong everything, go again PH5
;
;
Call
PH6
; Go get Conversion at Table
Cjne A,#0FFh,PH4B ; If
conversion <> FF, is valid.
Jmp
PH5
; ..Not Expected Command. go again PH5
;
;
PH4B:
Mov
P1,A
; Valid Command is post at P1 Port
Jmp
PH1
; Job done, go wait next pulse train.
;
;
;-------------------------;
PH5:
Mov
3,#8
; 2MHz
Mov
2,#112
; Wait 15 bit time
PH5A:
Djnz
2,$
; Wasting time to sync ok next train
Djnz
3,PH5A
;
Jmp
PH0
; Go back and wait for next train.
;-------------------------;
PH6:
Inc
A
; Table conversion, Inc skip RET
Movc
A,@A+PC
; Point to TABLE + Value at A (1-255)
Ret
;
;-------------------------;
; The following table bit values at the first column, means
; the translation from remote control key to the value to be
; be post at P1. The program ignores values of "FF".
; Change those bits according to your needs.
;
; Bit #7 is "0" when a valid key is pressed, otherwise is
"1"
; It can be used to recognize values as key "zero" pressed,
; when all bits UP means command ZERO.
;
; This TV remote uses only Address = "00"
;
; PHILIPS TV REMOTE CONTROL DECODING
;
; VALUE TO P1 REMOTE KEY COMMAND
CODE FIELD (HEX)
; ----------- ----------
------------------------
TABLE:
DB 01111111b ;
0 ; 0
DB 01111110b ;
1 ; 1
DB 01111101b ; 2
; 2
DB 01111100b ;
3 ; 3
DB 01111011b ;
4 ; 4
DB 01111010b ;
5 ; 5
DB 01111001b ;
6 ; 6
DB 01111000b ;
7 ; 7
DB 01110111b ;
8 ; 8
DB 01110110b ;
9 ; 9
DB 11111111b
; ; A
DB 11111111b
; ; B
DB 01110011b ; ON/OFF ; C
DB 01110010b ;
MUTE ; D
DB 01110001b ;
PP ; E
DB 01110000b ;
OSD ; F
DB 01101111b ; Volume+ ; 10
DB 01101110b ; Volume- ; 11
DB 01101101b ; Bright+ ; 12
DB 01101100b ; Bright- ; 13
DB 01101011b ; Color+ ; 14
DB 01111010b ; Color- ; 15
DB 11111111b
; ; 16
DB 11111111b
; ; 17
DB 11111111b
; ; 18
DB 11111111b
; ; 19
DB 11111111b
; ; 1A
DB 11111111b
; ; 1B
DB 01100011b ; Contrast+ ; 1C
DB 01100010b ; Contrast- ; 1D
DB 11111111b
; ; 1E
DB 11111111b
; ; 1F
DB 01011111b ; Program+ ; 20
DB 01011110b ; Program- ; 21
DB 11111111b
; ; 22
DB 11111111b
; ; 23
DB 01011011b ; Timer ;
24
DB 01010111b ; Special 1 ; 25
DB 01000001b ; Special 2 ; 26
DB 01000111b ; Special 3 ; 27
DB 01001110b ; Special 4 ; 28
DB 01000101b ; Special 5 ; 29
DB 01010010b ; Special 6 ; 2A
END
EU peço desculpa por alguns erros de
português.
Femajocri
|