Em muitas localidades existe facilidade para obter controles remotos (chaveirinho) com circuito integrado PT2240b, a preços modestos. Como usa-los em sua aplicação?
Este artigo mostra como fazer um receptor para controle remoto que use internamente o ci PT2240b.
Veja o esquema abaixo:
O circuito apresenta um PIC12F675 para decodificar os sinais recebidos por um receptor comercial de 433mhz. Se desejar usar um PIC12F629, basta alterar o modelo do microcontrolador no arquivo ASM e recompilar.
Temos as 4 saídas, que no circuito em questão, apenas acendem leds ao apertar os botões do transmissor.
Estes leds podem ser substituidos por transistores que acionem reles de carga, para controlar outros equipamentos.
Para usar um controle em conjunto com este receptor, será necessário primeiro aprender (learn) o controle. Para isto, basta apertar o botão ‘learn’ e também apertar um dos botões do controle remoto. Ao soltar o botão ‘learn’, deverá dar uma breve piscada no led ‘learn’ para indicar o aprendizado. Vários controles podem ser aprendidos. Querendo apagar os controles da memória, basta apertar o botão ‘learn’ por mais de 5 segundos. Ao começar a piscar o led ‘learn’, poderá soltar o botão, pois já terá sido concluido o apagamento da inteira EEprom (todos os controles apagados).
O protocolo do PT2240b é composto pelo envio de 20 bits de endereço (serial number), mais 4 bits de dados referentes aos 4 botões, se foram acionados ou não no controle remoto. Segue um bit de sincronismo, no qual está incluido uma pausa na transmissão, entre frames enviados.
Visto que nos transmissores existe um resistor que determina a frequência de clock, variando entre 4m7 a 430k, pode ser necessário, em alguns casos, alterar o valor de algumas ‘equates’ no ASM. Foi usado um valor, que reproduz um clock por volta de 100khz (valor muito usado nos controles comerciais).
No código ASM, a entrada de RF é verificada a cada 100 useg, e se for ‘0’ incrementará o contador ‘LC’ e se ‘1’, o contador ‘HC’.
A rotina faz uso de 2 flags para controlar a captura dos bits recebidos. São eles os ‘FLAGH’ e ‘FLAGL’. Somente quando os 2 estiverem setados e o contador ‘LC’ não ultrapassar a contagem máxima dada pela equate ‘Tmax’, que o bit será deslocado no buffer de recepção de bits, composto por Res2 a Res0. A subtração do conteudo de ‘HC’ menos ‘LC’ que determinará o bit a ser deslocado como ‘1’ ou ‘0’ (carry). Para garantir uma recepção sem erros, a primeira recepção é comparada com uma segunda recepção. Somente se houver igualdade é que será acionado as saídas correspondentes. Para mais detalhes do circuito integrado PT2240b e seu protocolo, veja o seu datasheet.
Obs. Este circuito foi montado apenas em protoboard, sujeito a bugs ainda não identificados. Está sendo fornecido o arquivo ASM que poderá ser odificado conforme as necessidades dos hobistas.
Poderá usar além de controles remotos comerciais com ci PT2240b, este tx feito com PIC 12f675 ‘clone_pt2240b’, publicado neste blog.
Segue pasta com os arquivos, atualizada em 12/03/2015:
Para os que desejam uma versão com possibilidade de escolher individualmente cada pino para modo pulso ou retenção, por comentar na opção de usuário e depois recompilar no Mplab, segue pasta com arquivos, atualizada em 12/03/2015:
Caso deseje uma versão em ‘C’ para compilador CCS, poderá obter os arquivos em pasta compactada clicando abaixo:
Nesta versão também podemos escolher o modo de operação pino a pino, por mudar a ‘opção do usuário’ e recompilar.
O modo de operação de aprendizado foi alterada: Aperte o botão ‘learn’ e acenderá o led ‘learn’. Acione o controle, que ao aprender, apagará o led ‘learn’. Uma atenção especial deverá ser dada ao ‘byte de calibração’ no pic, que deverá estar intacto. Se ele for perdido em um apagamento acidental, o circuito não funcionará. Foi previsto uma opção de usuário, para carregar um byte provisório, que permitirá o funcionamento nestas condições.
Curiosidade: Por que não funciona um programa sem o byte de calibração? No compilador ‘c’, de forma automática, no início do programa, irá buscar o byte de calibração usando uma chamada de rotina (call) para o endereço 0x3ff. Para retornar da rotina, precisa encontrar o ‘retlw’ + valor de calibração (por ex. 3480; onde 34= retlw e 80= 0x80 para a calibração). Se estiver ‘apagado’ encontrará um 0x3fff. Não ocorrerá o retorno da subrotina e o programa se perde e reseta (vai para org0x00) e recomeça…reseta…. em loop eterno. Caso tenha perdido o byte de calibração e não quiser usar um provisório, poderá seguir as instruções do artigo ‘como calibrar a frequência do oscilador interno do pic 12f675/629‘ deste blog.
Como descobrir se perdi o byte de calibração de meu PIC? Basta ler a Flash (a memória de programa) e procurar no endereço 0x3ff (último) se tem um número começando com 34xx. Se encontrar, então existe o byte. Mas se observar apenas um ‘0x3ff’ nesta posição, então ele foi apagado.
Curiosidades:
A passagem do Noroeste — realização de um sonho?
As ilhas Féroe — ligadas de um modo especial
Navegar orientando-se pelas estrelas
Os tesouros do maior lago da América Central
Recife — cidade que surgiu do açúcar
O mistério de Nan Madol
Os escravos esquecidos dos Mares do Sul
Os desastres naturais e o fator humano
O salmão — um “rei” em apuros
Lamu: a ilha perdida no tempo
Outros assuntos:
Deus é o culpado pelo nosso sofrimento?
O que os números significam na Bíblia? A numerologia tem base bíblica?
Lidar com sogros
Aprenda a perdoar
Lidar com dívidas
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Até o próximo artigo!!!
Hallo Claudio !! With new hex file everiting is OK. Any RC works OK.
Thank you for your help, attention end patience 🙂
THANKS END LUCK!!! REGARDS FROM BULGARIA 🙂
Hi Barlog!
You’re welcome!
Cláudio
thank you, i will test, end wtite about it 😛
LUCK !!! END THANKS 🙂
hallo again Claudio 🙂
I use this: RX_GEN_pt2240b_HEX from your site 🙂
have a nice day 🙂
Hi Barlog!
Please, wait for response. I’ll check for any problem.
Cláudio
Hi Barlog!
Please see the new files already updated. I believe that should solve the problem.
Cláudio