RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629 (REF126)

Hoje encontramos no mercado, transmissores de controle remoto para portão e alarmes com vários circuitos integrados. Que tal um único código em que pudéssemos optar qual modelo usar?

Analisando as muitas situações de uso para os controles remotos, desejei tentar fazer um programa que atendesse as mais variadas necessidades dos hobistas. Por exemplo: Um artigo é postado para um receptor usando um HT6P20b, com 2 canais. Surge alguém que precisa de 3 canais. Outro hobista deseja um canal invertido. Ainda outro, que a saída seja em modo ‘retenção’ para todos os pinos. Sem falar dos que desejam um pino em modo ‘pulso’ e outros em ‘retenção’. Realmente se torna um pouco ‘enfadonho’, escrever e reescrever os códigos já publicados, com estas simples alterações. Também, em muitas localidades não se encontra determinado integrado usado na montagem, mas existe de outros modelos. Surgiu a ideia de escrever um código em que fosse possível montar nosso receptor a ‘LA CARTE’. Cada hobista escolheria sua opção e marcaria no código. Depois é só compilar e carregar o PIC.

As características desejadas obtidas neste código são estas:

1) Opção de escolher qual integrado do transmissor iremos decodificar. Assim, poderá ser optado pelo ci HT6P20B, PT2262,PT2240B e família HCS 200 …301 (somente em modo fixo, sem usar o HOPPING CODE).
Obs. Apenas um modelo pode ser usado por vez.
2) Opção de escolher de forma individual, se as saídas serão em modo ‘PULSO’ ou ‘RETENÇÃO’.
3) Opção de escolha de forma também individual, se as saídas serão ‘invertidas’ ou ‘normais’.
4) Opção por aprendizado único de todos os botões (para uso em um único aparelho) ou aprendizado individual (para uso com vários aparelhos)
5) Escolher entre o PIC 12f675 ou 629.
6) Escolher carregar um byte de calibração provisório (em situações de perda deste de forma acidental). Os Pics ‘encostados’ , por não funcionarem em programas gerados em compiladores ‘C’, pela falta deste byte de calibração, poderão ser reaproveitados.
7) Possibilidade de mudar quais pinos serão usados, respeitando as limitações para pinos específicos.

Outra necessidade é que fosse em uma linguagem mais ‘usual’ e não no ‘Assembly’, pois muitos tem ‘aversão’, uma genuína ‘idiossincrasia’ só da menção do nome desta nobre linguagem. Dando os primeiros passos na linguagem “C”, portanto, esta foi a linguagem escolhida para este humilde projeto de iniciante. Creio que, para quem já é experiente nesta linguagem, não terá dificuldade em alterar e talvez simplificar as linhas de código. Mas foi o que consegui e portanto, estou compartilhando. Todas sugestões serão bem recebidas, de como fazer de uma forma melhor.

Voltando ao código, foi usado o compilador CCS C para a compilação, podendo ser usado a versão de demonstração. Logo no início do programa, podemos alterar nossas escolhas em ‘Opções do Usuário’, por comentar ou descomentar as linhas relacionadas as opções.
A rotina faz uso da interrupção do Timer 0 a cada 100 microssegundos, para analisar o estado da entrada que tem o sinal do receptor de 433mhz (RFIN, pino 3). Se for ‘0’, irá incrementar o contador ‘LC’ e acionar o flag_L. Depois, quando a entrada ficar ‘1’, irá incrementar o contador ‘HC’. Quando a entrada rfin ficar ‘0’ novamente, será analisado se o contador ‘LC’ estourou um valor máximo, o que indicaria um intervalo grande (pausa entre transmissões) e que servirá de sincronização do sinal. Se o valor de ‘LC’ ficou abaixo do permitido, haverá uma subtração de ‘LC’- ‘HC’, cujo valor do ‘carry’ será deslocado para dentro do buffer de recepção de 3 bytes e resetando ‘LC’, ‘HC’ e o ‘flag_L’, em preparação para um novo bit a ser recebido. Ao final de 24 bits recebidos (ou 64 no HCS) teremos uma recepção completa. Isto será sinalizado por setar o ‘flag_rok’. São feitas 2 recepções para comparar e eliminar erros de transmissão. Depois a rotina procura na memória pelo número transmitido (serial number), se já foi aprendido na memória. Se foi, irá acionar as saídas de acordo com as opções escolhidas pelo usuário. Se não, irá verificar se o botão ‘LEARN’ foi apertado (e o led ‘learn’ deverá estar aceso). No caso de ter sido apertado, será gravado este número recebido na EEprom e apagará o led “LEARN’. Com respeito a recepção do HCS, foi aproveitado apenas parte do serial number (HCS usa 28 bits + 4 botões= 32 bits ou 4 bytes da parte ‘fixa’ + 32 bits ou 3 bytes na parte encriptada, mas são gravados na EEprom apenas 22 bits + 2 bits dos botões). A razão desta decisão foi dar compatibilidade com os outros controles que usam apenas 3 bytes para o serial number.
Atenção: Este programa é de caráter didático apenas, sujeito a bugs ainda não detectados.

Segue o arquivo ‘C’:

RX_GEN_FLEX_C

Segue pasta zipada com os arquivos do projeto (10/11/2013):

arquivos_projeto_c

Segue pasta zipada com os arquivos do projeto ( atualizada em 17/12/2016):

RX_GEN_FLEX__

Segue pasta zipada com os arquivos do projeto, sendo esta uma versão que salva o estado das saídas em retenção na EEprom do pic e retorna no seu reset ( 17/12/2016):

rx_gen_flex__eep.c

E versão (em teste) para ht6p20d também:

RX_GEN_FLEX_4_C

Como a montagem permite muitíssimas combinações de circuitos integrados e modos de operação, ficará evidente porque não tentei fornecer o arquivo Hex. Cada hobista deverá escolher a suas opções e recompilar, para obter o arquivo HEX.
Obs. Ainda não obtive retorno do funcionamento do código para PT2262, sendo testado apenas com o clone do PT2262 deste blog.

Segue os esquemas de 4 sugestões de montagens, onde temos receptores de 1 a 4 canais:

Manuais:
HCS200
PT2262
PT2240b
Pic12F675

Curiosidades:
O rio que teve seu curso invertido
Outros grandes terremotos estão por vir
Será que Deus é o responsável?
Teve um Projeto? O econômico peixe-cofre
Por que a cooperação é essencial
Como poderá manter um conceito equilibrado sobre o dinheiro?
Sou viciado em aparelhos eletrônicos?
20 modos de criar mais tempo
Dengue — uma ameaça crescente
Preservados numa gota dourada
O “mundo perdido” da Bolívia

Outros assuntos:
Um site para você
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
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Perguntas Bíblicas Respondidas

Até o próximo artigo!!!

113 comments on “RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629 (REF126)

  1. Prezado Larios,

    Eu cometi um tremendo engano, estou envergonhado do meu erro.

    Eu lhe enviei um email, com uma dúvida sobre o chip 6p20B,

    Pois bem, o problema já foi detectado, era um erro de falta de atenção de nossa parte:

    Como o 6p20D utiliza 4 bits para as chaves ou seja d0, d1, d2 e d3 e o outro chip o 6p20b usa apenas as chaves d0 e d1, aquí estava o problema, estava-mos esquecendo de ajustar a leitura correta, ora para 20 bits, ora para 22 bits na recepção, dái o erro.

    Já descobrimos a falha que era nossa, portando os chips estão todos funcionando corretamente,

    ….Mas fica aquí adica para os amigos, não se esqueçam deste detalhe, quando forem receber outro chip da linha 6p20x, com relação aos bits de endereçamento que podem aumentar ou diminuir, depende da quantidade de chaves do chip 6p20x…

    Agradeço a atenção,

    Atenciosamente,
    Marcos

  2. Boa tarde, Larios, tudo bem.

    Meu amigo, eu estou tendo um problema e gostaria de compartilhar com você, no intuito de saber se você já notou um “DEFEITO” no HT6p20B. É o seguinte:

    No chip 6p20B existem dois pinos 1 e 2 (D0 e D1) destinados ao envio das chaves, de acordo com a seleção feita, certinho: Tipo: 11, 10 e 01.

    Eu tenho notado que em alguns chips HT6p20B (os que tem o carimbo da HOLTEK e os que não tem este carimbo), os que tem o carimbo da HOLTEK, funcionam corretamente ao se fazer a programação acima mencionada e recebemos direitinho no receptor com o pic12F629 que você desenvolveu o código, aliás parabéns…pela iniciativa.

    Mas nos chips 6p20B que não tem o carimbo HOLTEK sobre o chip, os códigos de programação dos pinos 1 e 2 não correspondem, são enviados códigos D0 e D1 que não tem nada a haver com a programação feita no 6p20b

    Será que existe, chips piratas…ou será que existe algum mistério nestes chips ou eu estou ficando maluco ou eu não estou entendendo o funcionamento…

    Eu fiz um relatório detalhado sobre, se possível me mande um email para trocarmos idéias a respeito.

    Atenciosamente,
    Marcos

    1. Olá Marcos! Eu pessoalmente não notei isto, provavelmente porque uso os mesmos controles repetidas vezes para testar os projetinhos. Mas se alguém puder retornar alguma informação, fica aberto esta questão para comentários.
      Cláudio

  3. lario voce conhece mesmo,suas ideias tem me ajudado a comprar varias horas,nao sei como te agradecer e nem tenho palavras para expressar o que eu gostaria,mesmo assim meus sinceros parabens e na oportunidade que voce tiver acrescente no seu small book um artigo de pwm em c valeu tambem e de grande elogio o nome (flex) bacana.

    1. Olá José! Obrigado por seu comentário incentivador. Acrescentarei também o pwm no ‘small boook’ (I think that ‘little book’ is better!).
      Cláudio

  4. Fico muito feliz amigo que vc tenha dado seus passos para linguagem C e isso nos inspira em não desanimar pois para quem conhece e gosta de outra linguagem se aventurar no desconhecido ,so posso dizer que vc é exemplo de força de vontade , obrigado mais uma vez pelo seus feitos

    1. Olá Liliano! Obrigado por seu comentário apreciativo. Fico feliz de ter sido de ajuda, de alguma forma. Mas os créditos cabem Aquele que nos permite ter ‘sabedoria’ e ‘conhecimento’, para fazer nossas vidas melhor.
      Cláudio

Comments are closed.

Back To Top