Ir ao conteúdo
  • Cadastre-se

Controle IR com PIC


Posts recomendados

Bom, venho mais uma vez pedir ajuda.

O problema é o seguinte: quero implementar a função de controle remoto IR num PIC 16F628A, porém todas minhas tentativas fracassaram e não acho muito material para PIC ainda mais em C. Utilizo o MikroC mas por ser em Pascal ou Basic, também.

Agraço os que ajudarem.

Link para o comentário
Compartilhar em outros sites

Primeiro voce tem que escolher um protocolo,tipo,NEC,SONY RC5,6 etc.

Depois voce deve dizer se quer receber o sinal ou transmitir.

É muito fácil programar isso em ASM pois voce calcula certinho a portadora de 38KHZ que o receptor usa e transmite ou recebe,eu não tentei usando C mas não deve ser tão doloroso.

Link para o comentário
Compartilhar em outros sites

Esse protocolo depende do receptor que será usado ou é de livre escolha?

Quero receber sinal. O CI que estou usando é um TK19 tirado de sucata e não consegui encontrar o datasheet, apenas algumas fotos e esquemas de ligação.

Bom, não sei programar em ASM mas tenho muita vontade de aprender, tenho algum material aqui para estudar ta faltando mesmo é coragem. sauhsuash

Achei o datasheet: http://www.oppermann-electronic.de/assets/applets/tfms5360.pdf

ele é o TFMS 5360

Link para o comentário
Compartilhar em outros sites

Ok. De acordo com o datasheet ele trabalha numa frequência de 36KHz.

Dos protocolos mencionados, há algum que me recomende ou seria bom conhecer todos? Para transmitir dados usa-se os mesmos protocolos?

Cada controle remoto (Televisão, som, etc) usa um protocolo específico ou todos operam da mesma forma?

Grato pela atenção.

Link para o comentário
Compartilhar em outros sites

Cara, muito bom o site. Consegui criar um código:


sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;

sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
//----------------------------------------------------------------------------//

sbit IR_Bit at RA3_bit;
sbit IR_Bit_Dir at TRISA3_bit;
//----------------------------------------------------------------------------//

void IR_Init(){
IR_Bit_Dir=1;
IR_Bit=0;
}
//----------------------------------------------------------------------------//

unsigned short IR_Receber(){
unsigned short BRI[8]={0,0,0,0,0,0,0,0}, BRIT=0;
if (!IR_Bit){
Delay_us(13500);
for (BRIT=0;BRIT<8;BRIT++){
Delay_us(1125);
if (IR_Bit)BRI[BRIT]=0;
else {
Delay_us(1125);
BRI[BRIT]=1;
}
}
BRIT=0;
if (BRI[0]==1) BRIT = BRIT + 1;
if (BRI[1]==1) BRIT = BRIT + 2;
if (BRI[2]==1) BRIT = BRIT + 4;
if (BRI[3]==1) BRIT = BRIT + 8;
if (BRI[4]==1) BRIT = BRIT + 16;
if (BRI[5]==1) BRIT = BRIT + 32;
if (BRI[6]==1) BRIT = BRIT + 64;
if (BRI[7]==1) BRIT = BRIT + 128;
}
return BRIT;
}
//----------------------------------------------------------------------------//

void main(){
char TXT[3];
unsigned short Receber=0, Cont=0;
CMCON=0x07;

IR_Init();

Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);

Lcd_Out(1,1,"Teste com IR");
Lcd_Out(2,1,"Byte:"); //6

while(1){
Receber=IR_Receber();
if (Receber != 0){
ShortToHex(Receber,TXT);
Lcd_Out(2,6,TXT);
Delay_ms(200);
}
}
}
//----------------------------------------------------------------------------//

Porém os botões variam entre três valores. O botão ON/OFF varia entre:


0001 1000
0000 1111
0000 1100

O que acha que pode ser?

Link para o comentário
Compartilhar em outros sites

O algoritimo é o seguinte.

1-primeiro voce espera um sinal pelo receptor de 9 milessegundos,se for continua(é o protocolo NEC,não outro).

2-Depois aguarda um espaço de 4.5 milessegundos,se não for sai da rotina.

3-Caso tudo ok,começa a decofificar os bits para formar um byte.

4-Bit 1 é +- 1.2 milessegundo,Bit 0 é +. 560 µ.

5- Decodifique 8 bits.

Isso é o básico.

Outro detalhe,voce tem que usar um IR receiver de 38KHZ para o protocolo NEC.

Em vez de reinventar a roda,usae o código e explicações do link abaixo;

>Protocolo NEC IR HitechC <-

Foi programado para Hitech,mas talvez voce possa mudar para outro compilador.

Link para o comentário
Compartilhar em outros sites

  • 8 anos depois...

@vtrx

Amigo, estou desenvolvendo uma ideia de produção de controles remotos. Já inclusive consegui fazer a programação, mas preciso de assessoria técnica para resolver algumas questões. Você parece ser um profissional capaz, teria interesse nesse trabalho? Poderia me dar seu contato?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...