RF com PIC
picminas :: PIC 18F4550 :: PIC 18F4550 :: Firmware
Guilherme em Qua Fev 09, 2011 7:54 am
Tive uma ideia de fazer o projeto fim de curso, mais me surgiram algumas dúvidas e gostaria que alguém me esclarecesse se possível.
O projeto seria fazer um transmissor e receptor com PIC baseado no par de CI's da Motorola MC145026 (encoder) e MC145027 (decoder), que possuem 4 canais http://www.datasheetcatalog.com/datasheets_pdf/M/C/1/4/MC145026.shtml não sei se vocês se recordam mas levei um circuito desses funcionando durante o curso, no mês passado.
Até fiz uma boa parte da programação, no transmissor, se fosse apertado o botão 1 por exemplo, ele envia 5 pulsos, se fosse apertado o botão 2, ele envia 10 pulsos, se fosse apertado o botão 3, ele envia 15 pulsos e se fosse apertado o botão 4, ele envia 20 pulsos.
Dúvida: Assim como o MC145026 tenho que enviar alguns pulsos que nele são chamados de bits de endereçamento para que o receptor reconheça quem está comunicando com ele? Se sim como fazer para o receptor saber quais são os pulsos de endereço e quais os correspondentes aos botões apertados? E qual seria a taxa de transmissão?
No receptor usei o bino RB4 para receber os dados, já que toda vez que acionado ele gera interrupção. Conforme o número de pulsos fosse recebido, contaria, e ativaria uma saída de acordo com esse número. O programa funcionou somente simulando, apertando botões para gerar os pulsos.
Dúvida: Como fazer para que eu possa ativar somente a saída correspondente ao botão pressionado no transmissor, porque no meu programa, se apertasse o botão 2 ele ativaria antes o 1 e depois o 2? E como fazer se quiser apertar mais de um botão ao mesmo tempo?
O transmissor e receptor são de 433.92Mhz iguais a este:
http://loja.multcomercial.com.br/ecommerce_site/produto_9199_4689_Modulo-Transmissor-43392-MHZ
http://loja.multcomercial.com.br/ecommerce_site/produto_9200_4689_Modulo-Receptor-43392-MHZ
Re: RF com PIC
Bruno S. Avelar em Seg Fev 14, 2011 8:50 pm
Muito interessante estes CIs para fazerem comunicação RF através de pinos paralelos de um microcontrolador. Até hoje eu nunca trabalhei com eles. O seu projeto é criar, utilizando o PIC, o funcionamento destes CIs?
Dúvida: "Assim como o MC145026 tenho que enviar alguns pulsos que nele são chamados de bits de endereçamento para que o receptor reconheça quem está comunicando com ele? Se sim como fazer para o receptor saber quais são os pulsos de endereço e quais os correspondentes aos botões apertados? E qual seria a taxa de transmissão?"
A página 11 do datasheet que você colocou o link possui um diagrama explicando o funcionamento dele. Pelo visto os 5 primeiros bits enviados é de endereço em que o emissor identifica quem é o receptor daquela mensagem (com isto da para fazer uma pequena rede de sensores que atuariam comandados por um emissor ligado ao seu microcontrolador). Os próximos 4 bits é de mensagem indicando algo para o receptor fazer. A mensagem é transmitida 2 vezes por envio para aumentar a segurança (reduzindo risco de perda de dado).
Logo, sim. É preciso enviar bits de endereço(se não a comunicação será apenas entre 2 dispositivos). O receptor saberá quais são endereço e quais são dados pela ordem do envio. Os primeiros são endereço e os últimos são dados.
A frequencia de comunicação destes CIs é dita no datasheet. Se você ta fazendo um projeto que faça o mesmo que estes CIs você pode escolher a frequencia de comunicação. Basta implementar apara que mande um bit a cada x tempo. Isto pode ser feito com delay ou com interrupções do módulo timer.
Acredito que temos duas opções. Mantendo o formato de comunicação que voce propôs de numero de pulsos seriam a mensagem você pode ir contando os pulsos no decodificador e só acionar quando passar um tempo grande (tipo 1 segundo) após o ultimo pulso que aí voce teria certeza que a comunicação teve fim. Outra opção é definir que serão X bits de dados recebidos em vez de x pulsos. Sabendo a frequencia de comunicação (fixa) você consegue receber os X bits. Ai se a palavra recebida for 0000 ele faz uma coisa se for 0001 faz outra e assim por diante. Como a quantidade de bits recebidos é sempre a mesma (X) você saberá que terminou de receber quando o último bit for transmitido.