Página 1 de 2

Controle Remoto InfraVermelho

MensagemEnviado: 03 Set 2008 11:12
por rsdias
Preciso fazer um controle remoto com pic estou usando PIC12F675 programando em assembly, porém preciso saber como faço para medir pulsos de entrada em um unico Pino (receptor) -como identifico o sinal enviado, e como envio este sinal também em um unico pino (transmissor). Agradeço se alguem puder me ajudar.

MensagemEnviado: 03 Set 2008 11:42
por Djalma Toledo Rodrigues
Em primeiro lugar Parabens por estar programando em Assembler

Me parece que existe no site da Microchip uma AN sobre isso.

O que vc pode fazer é baixar Data Sheet de CI de controle remoto.

Para ir adiantando http://eletronicos.hsw.uol.com.br/controle-remoto2.htm

esta no final da pág. Um desavisado pode até achar que não tem nada ali.

Abraço e bom contrôle

Re: Controle Remoto InfraVermelho

MensagemEnviado: 03 Set 2008 14:01
por Maurício
Salve, rsdias.

rsdias escreveu:Preciso fazer um controle remoto com pic estou usando PIC12F675 programando em assembly, porém preciso saber como faço para medir pulsos de entrada em um unico Pino (receptor) -como identifico o sinal enviado, e como envio este sinal também em um unico pino (transmissor). Agradeço se alguem puder me ajudar.


Não conheço PICs, mas, não há a possibilidade de disparar uma interrupção por mudança de estado de algum pino?
Se houver... Facinho, facinho.
Quando o pino mudar de estado, verifique se está no nível alto ou baixo, e dispare o timer para começar a contar o período.
Mudou de estado de novo, paralise a operação do timer e capture os valores.

E Djalma: "parabéns em programar em assembler.... ?". Essa é boa! Porque?

[]'s

MensagemEnviado: 03 Set 2008 14:43
por Djalma Toledo Rodrigues
Porque o Assembler é a linguagem mais eficiente, resulta programa com menor número de instruções e portanto de maior velocidade que qualquer Linguagem Compilada.

Outra vantagem "colateral" é que te obriga a se aprofundar no uC e no Hardware tmb.

O "C" já fica uma coisa abstrata, é claro que para programas muito grandes é vantajoso

MensagemEnviado: 03 Set 2008 18:53
por Maurício
ah tá! Então, tá, então!

Falou, hein!?!?! :lol:

[]'s

Re: Controle Remoto InfraVermelho

MensagemEnviado: 05 Set 2008 08:04
por phophollety
rsdias escreveu:Preciso fazer um controle remoto com pic estou usando PIC12F675 programando em assembly, porém preciso saber como faço para medir pulsos de entrada em um unico Pino (receptor) -como identifico o sinal enviado, e como envio este sinal também em um unico pino (transmissor). Agradeço se alguem puder me ajudar.


Todos os pinos do PIC tem interrupção, isso vai te ajudar bastante...

Primeiro você tem que escolher um padrão de infravermelhos, existem muitos, os mais famosos são SONY SIRC ou Philips RC5/6, existem outros, a Sharp tem o seu, a NEC também...

Mas por uma questão de padrão procure usar ou o SIRC ou o RC5/6

Antes de mais nada, você precisa escolher e entender um dos protocolos, este site é repleto de informação:

http://www.sbprojects.com/knowledge/ir/ir.htm

SIRC http://www.sbprojects.com/knowledge/ir/sirc.htm
RC5 http://www.sbprojects.com/knowledge/ir/rc5.htm

Escolhido o protocolo, escolhe-se também a frequência 36KHz ( RC5/6 ) ou 40KHz ( SIRC ) esta escolha é fundamental, pois terá impacto no seu receptor e logo, no seu alcance.

A maioria dos receptores tem frequência de 38KHz (TSOPxxxx por exemplo), para os testes iniciais, pegue qualquer um ( de TV, DVD etc.. tem muitos para vender por ai)

E o controle remoto do protocolo que você quer (vamos começar pelo receptor)

Ligue o TSOP em qualquer IO do 12F675, por que todos tem interrupção de mudança de estado.

Imagem

Agora vamos supor que você escolheu o SIRC, veja como funciona os bits dele, o BIT 1 tem 1.2ms de modulação ligada e 0.6ms de modulação desligada e para o BIT 0 0.6 ms ligada e 0.6ms desligada.

Vimos que o que difere é o 1 tempo de modulação.

Fazendo a rotina.

Crie um registrador:

tempoBit

Quando o seu pic notificar mudança de estado no IO trate a interrupção e set um flag, pelo MAIN entre na rotina (call ou goto, tanto faz, prefira call neste caso, logo mais te digo por que...) NÃO CHAME A ROTINA DENTRO DA INTERRUPÇÃO!!!

Faça assim:




Código: Selecionar todos



btfss IR_IN ; Testa o bit
retlw .255      ; É zero, retorna, tem que ser 1

CALCULA_TEMPO_BIT
incf tempoBit,f

call delay10us ; crie um delay de 10us!
btfss IR_IN
goto  TRATA_BIT ; Fim de sinal, checa tempo de bip
goto  CALCULA_TEMPO_BIT ; Ainda há sinal, teste novamente
 
TRATA_BIT
; aqui tem-se o valor do bit em 1, este valor é 10
;vezes menor que  tempo de bit real, por que usamos um delay de 10ms
;sem falar do tempo de instrução

: Tolerância de bit
; 1 de 1ms( até 1.4 ms
; 0 de .4ms até .8ms

; faça subtrações
; São 4 ifs
; se estiver dentro do tempo de bit 1 é 1 se dentro de tempo 0 é 0
; retoro por retlw 0 para bit 0 e 1 para bit 1
; Depois chame um delay de 600ms e ignore o segundo pulso, por que ele nunca muda.
;
; Você tera uma rotina de contabiliza bit e uma de contabiliza byte
; A contabiliza byte chama a contabiliza bit que vai retornando bit a bit o recebido
; faça o teste do que retorna em work ( 0 ou 1 )
; pode fazer um andwf com a sua variável de byte e depois faça um rrf,f (pois começa pelo lsb) quando encher 8 bits
; chame o próximo byte, são 12,15 ou 20 bits, depende do protocolo.
; se retornar .255 que é erro, aborte e comece denovo...




Controle remoto infravermelho

MensagemEnviado: 07 Set 2008 15:51
por rsdias
Olá Renan, obrigado por responder a minha dúvida, mas como estou começando , ainda não consegui entender completamente , será que seria possível vc me enviar um exemplo, por exemplo considere uma transmissão de 8 bits apenas , sendo o primeiro o bit de start e os demais dados, como ficaria um código em assembler para a identificação deste sinal de controle utlizando o protocolo SIRC como base. Aguardo, desculpe a ignorancia, é que estou aprendendo PIC sem aulas apenas lendo alguns livros.

Abraços e obrigado.


Roberto S. D.

MensagemEnviado: 22 Set 2008 17:26
por tcpipchip
Imagem
Desenhei este...
Ele le os controles remotos norma RC5 e "gospe" na serial o codigo da tecla...
TCPIPCHIP

MensagemEnviado: 22 Set 2008 18:17
por phophollety
tcpipchip escreveu:Imagem
Desenhei este...
Ele le os controles remotos norma RC5 e "gospe" na serial o codigo da tecla...
TCPIPCHIP


Não faça o cara passar vontade!

Dê o esquema e o firmware também! eheeh

MensagemEnviado: 13 Abr 2010 20:22
por mhagnumdw
Alguém sabe o padrão de infravermelho usado pelo controle remoto do drive de CD Creative Infra? (SIRC, RC5/6, ...)
Foto do controle: http://www.audiodesignguide.com/cdplaye ... remote.gif

Retirei o receptor do drive e vou fazer uns testes.

MensagemEnviado: 14 Abr 2010 09:08
por fabim
mhagnumdw escreveu:Alguém sabe o padrão de infravermelho usado pelo controle remoto do drive de CD Creative Infra? (SIRC, RC5/6, ...)
Foto do controle: http://www.audiodesignguide.com/cdplaye ... remote.gif

Retirei o receptor do drive e vou fazer uns testes.


cara tu é algum viajante no tempo é ? algum pula pula tempo espacial ?
RC5/6 é utilizado pelas marcas mais conhecidas, esse creative deve ser SIRC ou RC7..

MensagemEnviado: 14 Abr 2010 10:19
por mhagnumdw
fabim escreveu:
mhagnumdw escreveu:Alguém sabe o padrão de infravermelho usado pelo controle remoto do drive de CD Creative Infra? (SIRC, RC5/6, ...)
Foto do controle: http://www.audiodesignguide.com/cdplaye ... remote.gif

Retirei o receptor do drive e vou fazer uns testes.


cara tu é algum viajante no tempo é ? algum pula pula tempo espacial ?
RC5/6 é utilizado pelas marcas mais conhecidas, esse creative deve ser SIRC ou RC7..


Rapaz, foi o Marty e o Dr (Emmett Brown) que trouxeram essa relíquia pra mim.
Vou dar uma checada se usa um desses dois.
Valeu.

Controle Remoto Infravermelho

MensagemEnviado: 03 Mai 2010 19:56
por jalves
Olá colega,
O controle que você menciona utiliza o protocolo NEC.

PROTOCOLO CREATIVE INFRARED REMOTE CONTROL CIMR100
CODIGO SEMELHANTE AO NEC


|<--------------------110mS--------------------->|
|<--START BIT-->| |
| 9mS | |
---+ +-----+-+-+-+-+-+-+-+-+ +--------------+ +--
| | |8 4 3 5 A B A B| | | |
+---------+ +-+-+-+-+-+-+-+-+-+ +---------+
|<----- G ----->|<--H-->|<D>|<F>|S|


TOLERANCIAS

1T = 400uS...767uS ( 560uS)
3T = 1792us...2303us (1700uS)
8T = 4352us...4607us (4500uS)
16T = (9000uS)



BIT DE START NIVEL 1 NIVEL 0
-+ +--------+ +--+ +--+ ///-+ +----------////--------+
| | | | | | | | | |
+----------------+ +------+ +--+ +-/// +--+ +-
|<------16T----->|<--8T-->| 3T |1T|1T|1T| |1T| |
|<--------------------------------197T----------------------------------->|


+-+-------------------+---------+---------+-------------+---------------------+
| | HEADER | DATA | /DATA | | DESCRIÇÃO |
+-+-------------------+---------+---------+-------------+---------------------+
G 1000 0100 0011 0101 0000 0001 1111 1110 - 8435 01 FE- PAUSE
G 1000 0100 0011 0101 0000 0010 1111 1101 - 8435 02 FD- >>|(PLAY/SKIP)
G 1000 0100 0011 0101 0000 0011 1111 1100 - 8435 03 FC- STOP/EJECT
G 1000 0100 0011 0101 0000 0100 1111 1011 - 8435 04 FD- MENU
G 1000 0100 0011 0101 0000 0101 1111 1010 - 8435 05 FA- << (BACKWARD)
G 1000 0100 0011 0101 0000 0110 1111 1001 - 8435 06 F9- |< (PREVIOUS TRACK)
G 1000 0100 0011 0101 0000 0111 1111 1000 - 8435 07 F8- >> (FORWARD)
G 1000 0100 0011 0101 0000 1000 1111 0111 - 8435 08 F7- ACTIVATE MOUSE
G 1000 0100 0011 0101 0000 1001 1111 0110 - 8435 09 F6- 1
G 1000 0100 0011 0101 0000 1010 1111 0101 - 8435 0A F5- 2
G 1000 0100 0011 0101 0000 1011 1111 0100 - 8435 0B F4- 3
G 1000 0100 0011 0101 0000 1100 1111 0011 - 8435 0C F3- MUTE
G 1000 0100 0011 0101 0000 1101 1111 0010 - 8435 0D F2- 4
G 1000 0100 0011 0101 0000 1110 1111 0001 - 8435 0E F1- 5
G 1000 0100 0011 0101 0000 1111 1111 0000 - 8435 0F F0- 6
G 1000 0100 0011 0101 0001 0000 1110 1111 - 8435 10 EF- VOL+
G 1000 0100 0011 0101 0001 0001 1110 1110 - 8435 11 EE- 7
G 1000 0100 0011 0101 0001 0010 1110 1101 - 8435 12 ED- 8
G 1000 0100 0011 0101 0001 0011 1110 1100 - 8435 13 EC- 9
G 1000 0100 0011 0101 0001 0100 1110 1011 - 8435 14 ED- VOL-
G 1000 0100 0011 0101 0001 0101 1110 1010 - 8435 15 EA- SHIFT
G 1000 0100 0011 0101 0001 0110 1110 1001 - 8435 16 E9- 0
G 1000 0100 0011 0101 0001 0111 1110 1000 - 8435 17 E8- ENTER
G 1000 0100 0011 0101 0001 1000 1110 0111 - 8435 18 E7- ZOOM

MensagemEnviado: 22 Set 2011 15:17
por mhagnumdw
Achei esse tópico onde eu postei e esqueci de dar um retorno. :D

jalves, a tabela é justo essa! Show de bola. Na mosca!

Até montei o decodificador e deu certo (no proteus e no hardware). Inclusive simulei o sinal pelo proteus usando a linguagem EasyHDL antes de montar no hardware!

Valeu!

--
MhagnumDw

Controle remoto padrão NEC

MensagemEnviado: 23 Set 2011 19:05
por jalves
Legal cara. Comecei a fazer, por bincadeira e para aprender assembler, o que você conseguiu e como não estava conseguindo os resultados desejados e devido ao pouco tempo parei. Se poder passar pra mim o esquema e programa ficarei muito feliz.