Controle Remoto InfraVermelho

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Controle Remoto InfraVermelho

Mensagempor rsdias » 03 Set 2008 11:12

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.
rsdias
Bit
 
Mensagens: 20
Registrado em: 01 Set 2008 17:51

Mensagempor Djalma Toledo Rodrigues » 03 Set 2008 11:42

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
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Re: Controle Remoto InfraVermelho

Mensagempor Maurício » 03 Set 2008 14:01

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
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor Djalma Toledo Rodrigues » 03 Set 2008 14:43

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
Editado pela última vez por Djalma Toledo Rodrigues em 03 Set 2008 19:24, em um total de 1 vez.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Maurício » 03 Set 2008 18:53

ah tá! Então, tá, então!

Falou, hein!?!?! :lol:

[]'s
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Re: Controle Remoto InfraVermelho

Mensagempor phophollety » 05 Set 2008 08:04

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



"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Controle remoto infravermelho

Mensagempor rsdias » 07 Set 2008 15:51

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.
rsdias
Bit
 
Mensagens: 20
Registrado em: 01 Set 2008 17:51

Mensagempor tcpipchip » 22 Set 2008 17:26

Imagem
Desenhei este...
Ele le os controles remotos norma RC5 e "gospe" na serial o codigo da tecla...
TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor phophollety » 22 Set 2008 18:17

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
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor mhagnumdw » 13 Abr 2010 20:22

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.
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor fabim » 14 Abr 2010 09:08

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..
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor mhagnumdw » 14 Abr 2010 10:19

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.
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Controle Remoto Infravermelho

Mensagempor jalves » 03 Mai 2010 19:56

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
jalves
Bit
 
Mensagens: 46
Registrado em: 18 Nov 2006 16:36

Mensagempor mhagnumdw » 22 Set 2011 15:17

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
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Controle remoto padrão NEC

Mensagempor jalves » 23 Set 2011 19:05

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.
jalves
Bit
 
Mensagens: 46
Registrado em: 18 Nov 2006 16:36

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x