Seria possível fazer com um único PIC 12F675, um receptor de 3 canais para controle remoto comercial (chaveirinho) com opção de pulso e retenção individual? Veja mais…
Já foram publicados varias versões de receptor para controle remoto usando o PIC 12F675/629, como no artigo ‘RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629‘, de forma didática. Agora, veremos um circuito prático, já incluído 3 reles com tensão de trabalho de 12 volts na bobina, e contatos para 10 amperes. Seus contatos poderão controlar cargas elétricas de aplicações das mais variadas possíveis.
Veja o esquema abaixo:
Trata-se, portanto, de um receptor de 3 canais, sendo que cada canal é controlado por um botão do controle remoto (chaveirinho).
A escolha deverá ser por controle remotos com 3 botões, que usem internamente o ci HT6P20B, pois o código ASM está preparado somente para este tipo de protocolo.
A novidade deste receptor está na flexibilidade que ele dá na questão de escolha do tipo de saída desejada. Ele permite que determinemos por meio de ‘Jumpers’ se a saída escolhida será no modo ‘Pulso’ ou no modo ‘Retenção’. Note que a escolha é individual, ou seja, podemos programar , por exemplo, a saída 1 para modo ‘Pulso’, a saída 2 para ‘Retenção’ e a saída 3 para ‘Pulso’ ou outras opções.
Com ‘Jumper’ colocado definimos ‘modo Pulso’ e sem colocar o ‘Jumper’ teremos o ‘modo Retenção’.
Toda vez que for redefinido a posição dos ‘Jumpers’ deverá ser dado um ‘Reset’ para que passe a funcionar corretamente o novo ajuste. Isto acontece por que, logo no início do programa, as ‘saídas’ são convertidas em ‘entradas’, com o objetivo de testar a condição dos ‘Jumpers’, sendo que os seus estados ficarão gravados nos flags nomeados de ‘Flagj1 a Flagj3’. Estes por sua vez, serão usados para definir o modo de operação de cada saída. Foram usados 3 resistores de pull up externos, para melhorar a polarização positiva, uma vez que os internos não foram suficientes.
Após montar o circuito, deverá ser carregado o arquivo hex no microcontrolador. Poderá usar um programa gravador (software) rodando em seu PC como por exemplo, o WINPIC800, e um gravador (hardware) como o ‘simples programador de Pic’ , deste blog.
Depois de gravado o chip com o firmware fornecido, deverá estar operacional, ao inseri-lo no circuito e ligar a fonte de alimentação.
O próximo passo é aprender o controle remoto. Para isto, basta apertar qualquer um dos botões e dar um toque no botão ‘Learn’. Em seguida, solte o botão do controle remoto, sendo que o led ‘Learn’ deverá piscar uma vez para indicar sucesso no aprendizado. Permite aprender até 42 controles diferentes antes de começar a subsescrever os primeiros controles gravados.
Para apagar todos os controles e limpar a memória, basta apertar o botão ‘Learn’ por mais de 10 segundos, após o que o led ‘Learn’ piscará algumas vezes para indicar o sucesso do apagamento.
É possível optar pelo uso do PIC12F629 ao invés do PIC12F675. Para isto, comente a linha apropriada em ‘Definições do usuário’ e recompile o arquivo ASM usando o MPLAB-IDE da MICROCHIP. Veja também o artigo ‘COMO COMPILAR OS ARQUIVOS ASM FORNECIDOS NESTE BLOG, JUNTO COM O MPLAB_IDE’.
Obs. Esta montagem foi testada apenas em protoboard (placa experimental), sujeito a bugs ainda não observados em uso prático. Esta sendo fornecido o arquivo asm que poderá ser alterado segundo as necessidades dos hobistas.
Segue o arquivo ASM (atualizado em 03/07/13):
Segue o arquivo HEX ( para PIC12F675, atualizado em 03/07/13):
Para os usuários de compilador “C” (CCS C), segue pasta zipada com 2 receptores alternativos de 3 canais, escrito em “C”, para Ht6p20b, com possibilidade de mudar para retenção ou pulso, modo normal ou invertido, alterando nas ‘configurações de usuário’ no arquivo ‘c’ e recompilando. A rotina de recepção é diferente, usando interrupção de mudança de estado do pino 4 (gp3) para iniciar a captação do tx para um programa e o outro, mais simples, apenas vigia o pino 4, procurando por alteração do seu estado. Cada parte do bit recebido é testada para melhorar imunidade a recepção de interferências (atualizado em 14/07/2015):
Caso deseje usar transmissores da família de circuito integrados Hcs 200…301 (chaveirinhos c/ HCS) poderá usar a versão abaixo, em modo Hopping Code. Lembrando, que para esta família, temos que recompilar o arquivo asm, com a chave (Key) igual a usada no Tx. Ela se encontra na rotina ‘Decrypt’ . Para gravar esta Key no ci HCS200 …301 do chaveirinho, você deverá usar um programador comercial, ou montar o programador segundo a Note Application AN217, ou um dos aqui publicado, como os artigos : ‘HCS_PROG_V628 – MAIS UMA OPÇÃO PARA PROGRAMAR HCS200…301 COM PIC 16F628A’ , ‘HCS_PROG_TINY – PROGRAMADOR DE HCS200..301 COM APENAS UM PEQUENO PIC 12F629 !!!’ e ‘HCS_PROG – PROGRAMADOR DE HCS 200/201/300/301 COM AT89S521’ .
A chave (Key) usada no arquivo hex é : ‘0123456789ABCDEF’.
Segue o arquivo ASM, Hopping Code (12f675):
Segue o arquivo HEX, Hopping Code (12f675):
Segue a versão ASM com opção de escolher as saidas em modo normal ou invertidas (somente HT6P20B, atualizada em 03/07/13 ):
Segue o arquivo HEX desta versão, compilada para modo de retenção e saída normal no pino 6 e os pinos 5 e 3 em ‘modo pulso’ e ‘invertidos’ (somente HT6P20B, atualizada 03/07/13 ):
Manuais:
Pic 12F675
Datasheet HT6P20B
Curiosidades:
Quem projetou primeiro?
O preço de levar uma vida muito corrida
A fábrica da morte
De onde vem a ameaça de guerra nuclear?
Comunicação — essencial nos ecossistemas da Terra
Uma das nozes mais úteis do planeta
Robert Boyle – lições do passado
Balolo – o caviar do Pacífico
A língua da selva — segredos da comunicação entre os animais
Ultimato “em nome de Deus”
Carros – no presente e no passado
O sistema de ‘spray’ do besouro
Ouvindo sons do espaço
Porque as estrelas são cintilantes?
Uma voz silenciosa que pode se ouvida
A ciência e a Bíblia são compatíveis?
Yellowstone: encontro de águas, rochas e fogo
Outros assuntos:
Como fazer seu segundo casamento dar certo
Como lidar com sogros?
Quando seu filho tem uma deficiência
O que fazer se tenho um problema de saude – Parte 1
O que fazer se tenho um problema de saúde – Parte 2
Como parar de discutir
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como acabar com a tática do silêncio
Como resolver problemas em seu casamento?
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?
Até o próximo artigo!!!
opa amigo ainda neste projeto tive um probleminha mas fiz aqui eu mesmo uma solução não sei se te ajudaria mas estava com pouco ganho no receptor só estava alcançando uns 2m de distancia , troquei o modulo RX nada , troquei o controle e nada resolvi fazer uns teste com resistores consegui um ganho melhor quando acrescentei um resistor de 3K9 do pino da data out do receptor para o negativo ai teve um bom alcance , quando vc tiver um tempo faz o teste ai pra gente e se for a solução vou mudar aqui no meu esquema . Valeu pelo projeto e entrei em contato pois não sei como vc fez o teste ai mas eu quando montei fiz o teste bem de perto então funciona uma maravilha vai saber né . eu fiz um layout se quiser te envio para disponibilizar ele aqui ok.
Não te entendi , vc me respondeu no projeto cujo eu coloquei o problema do resistor que tive que colocar mas foi sobre o resistor de 10M , neste projeto acima que estava falando do resistor de 3k9 que tive que acrescentar pois havia instabilidade na recepção do modulo Rf .
Projeto :
RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO (CI HT6P20B) E PULSO/RETENÇÃO INDIVIDUAL- COM PIC 12F675
abraços
Olá Liliano!
Parece que o problema foi que deixei o pullup ligado na entrada de RF, por engano. Já corrigi o ASM e o HEX. Tente ver, por favor, se resolveu, sem ter que usar o resistor de pulldown de 3K9, conforme bem sugerido por você.
Obrigado pela ajuda.
Claudio
ola Claudio onde posso acha o Mplab_Ide 6.61 só acho os mais atuais.
Olá George! Tente achar neste link OLD MPLAB.
Claudio
Ola Claudio bom dia meu nome é Edmilson e seu site tem sido muito proveitoso para meu aprendizado na area de microcontroladores. Eu venho acompanhando seus projetos ja a algum tempo e pela sua experiencia em controles remoto acredito que podera me ajudar com uma duvida que é a seguinte meu chaveiro do alarme do carro usa o ci pt2240b e eu gostaria de saber como faço para emular este ci usando um pic ou como faço para casa lo com os receptores publicados em seu site .Obrigado Edmilson LS
Olá Edemilson! O protocolo do pt2240b é um pouco diferente do Ht6p20b. Necessitaria mudar a rotina de recepção para este protocolo.
Claudio
Errei no comentário setei o J2.
Amigo montei este projeto tive apenas um problema ai fiquei na duvida , sera que foi na gravação , o canal do pino 5 se não tiver o transistor ligado ele fica em modo retenção se eu ligar o transistor ele não aceito o modo retenção de nenhuma maneira , na minha montagem coloquei um led pensei que fosse isso desliguei mesmo assim pois conforme seu enunciado quando alimenta o circuito ele faz a leitura dos pinos e identifica se é modo pulso ou retenção mas isso esta certo só este problema que deu amigo assim que tiver um tempo . me diz o que posso fazer ?
Olá Liliano! Você está seguindo de perto os valores do esquema? Não teria algum resistor de valor errado montado?
Claudio
respeitei tudo sim amigo , a unica diferença foi a que eu te falei que havia acrecido os leds de cada canal , mas mesmo deligando ele o defeito acontece somente neste canal , agora outra coisa que eu fiz foi gravar o pic e colocar o codigo de proteção para não ser visualisado o hex , mas fora isso montei 2 iguais e deu o mesmo defeito , a´te cheguei aumentar o resistor da base deste canal e nada , mas fora isso os outros 2 canais estão ok
Olá Liliano! Vou montar em um protoboard e assim que tiver uma resposta, retorno.
Claudio
Olá Liliano! Gostaria que você fizesse o seguinte: Mude os 3 resistores de pull_up de 4k7 para 2k2 (os que estão ligados ao vcc e aos pinos 3,5 e 6). Esta mudança garantirá o nivel ‘1’ de forma correta.
Claudio
ok amigo vou fazer as modificações , o estranho é que sem nada o pino 5 funciona bem tb , mas deve ser isso a soma de resistencia alterando pull -up , mais uma vez muito obrigado , te enviei o layout do projeto do bloqueio veicular com codigo não sei se vc recebeu , depois vou te envia o layout deste tb e quiser postar ok , fiz ele para uma versão de menor corrente usando reed sw , ficou muito bom só faltou isso mesmo .
amigo só mais uma coisa sei que vc esta sem tempo mas quando tiver e se vc souber postar alguma coisa com usb , tipo um sistema de comando pela usb , ou uma key lock com usb , alguma coisa assim pois hoje tenho aprendido muito com seus projetos , se o seu objetivo é espelhar o conhecimento , pode acreditar ja tem conseguido isso amigo .
Caro amigo me da uma luz tem um amigo que gostou deste projeto de 3 canais porem ele me perguntou se teria como fazer ele no modo pulso se ele pulsasse o rele , tipo 3 pulsos em um determinado intervalo tipo 2 pulsos em 500ms , não sei bem ao certo pra qual finalidade ele quer assim mas derrepente pra acionamento de algum aviso sonoro por um intervalo ma diz teria como no asm mudar para que as 3 saidas fizessem e teria como deixar de maneira que pudesse ajustar os intervalos independentes de cada saida ? , só me diz onde posso alterar
Olá Liliano!
Não entendi bem. A saída irá pulsar um rele a uma dada frequência? Para que fim?
Claudio
nem eu sei a finalidade foi um amigo que me pediu , mas deve ser para acionamento de aviso sonoro ou algo assim , ele me diz que tinha que ser assim , Canal 1 : 02 pulsos com intervalo de 500ms entre cada pulso.
Canal 2 : 05 pulsos com intervalo de 500ms entre cada pulso.
Canal 3 : 10 pulsos com intervalo de 500ms entre cada pulso. mas poderia tb ser no mesmo canal mas para cada botão um intervalo diferente
Olá Liliano!
Saber a finalidade é importante para avaliar o tipo de temporização. Se forem precisas será difícil obter. Os pulsos também tem uma duração que precisa ser informado, além do valor do intervalo.
Claudio
opa claudio , mas uma vez obrigado pela atenção , eu andei olhando os projetos antigos e um dos primeiros com clone do chaveirinho tem um projeto com pulsos (RX_GEN_HT6P20B_V8)
dai mudei o asm para o jeito que te falei e acho que deu certo agora sobre o intervalo dos pulsos não sei se deu os 500ms pois seria assim tanto para ligado quanto para desligado , mas no seu projeto me deu esta opção de colocar o tempo nele vc coloca que 1= 50ms dai eu coloquei 10 que seria igual a 500ms certo e neste projeto vc pois que pode ser escolhido a quantidade de pulsos tb , ficou igual ao que o meu amigo pediu só não sei se vai dar certo no intervalo mas mesmo assim fico muito agradecido
amigo no caso este projeto teria como mudar no asm para ele funcionar no modo tempo e pulsos igual ao antigo receptor gen de versão 8 pois assim eu poderia escolher com o jump a quantidade de pulsos ja definidas tipo determino no arquivo asm para cada saida um botão e para cada botão uma quantidade de pulsos tipo botão 1 com jumper 2 pulsos sem o jumper 5 pulsos e poder escolher o intervalo de acesso e intervalo de apagado . seria ao inves de escolher modo pulsos ou retenção eu escolheria pulsador 1 /pulsador 2
Olá Liliano!
Por favor, experimente você mesmo, alterar o asm, pegando as partes de um asm e agregando ao outro. isto poderá ajuda-lo a desenvolver na arte. Infelizmente, não poderei mexer com isto no momento.
Claudio