CONTROLE REMOTO PARA 32 CANAIS (ON/OFF – MODO PULSO) COM PIC16F628A (DIDÁTICO)

Determinadas atividades necessitam que certos dispositivos sejam ligados por controle remoto e a distância. Como obter muitos canais com um simples PIC 16F628A? Veja como…

Este artigo trata de uma forma que se pode multiplexar os canais com um PIC16f628a (ou outros). Não entraremos na parte de RF, por ser mais delicada e também, porque podemos obter receptores/emissores comerciais de boa qualidade, a um prêço razoável.

Veja o esquema abaixo do transmissor:

GERANDO SINAL PARA O TRANSMISSOR

A idéia consiste em multiplexar 4 conjuntos de 8 interruptores (ou botões), usando diodos do tipo 1N4148 ou mesmo 1N4007 e resistores, no portB do PIC. No loop principal, continuamente é testado o conjunto de interruptores. Enquanto houver interruptores acionados haverá transmissão, cessando quando todos interruptores estiverem desligados.
Em cada transmissão, são enviados 2 bytes com o número serial (que pode ser alterado no arquivo ‘ASM’e tem que ser igual no tx e rx), seguido de 4 bytes que contém a informação do estado dos 4 conjuntos de 8 interruptores, além de um byte final de conferência da integridade da transmissão. Este último byte contém a somatória dos bytes anteriores, truncado em 8 bits. O bit a ser enviado, consiste de 3 partes com 500 microsegundos cada uma. Para enviar o bit ‘1’ usamos as seguintes linhas de código:

BCF OUT ;desliga a saída para o tx
CALL DELAY1CK ;espera 1000 microsegundos
CALL DELAY1CK
BSF OUT ;liga a saída
CALL DELAY1CK ;transmite por 500 microsegundos
BCF OUT ;desliga a saida

Já para o bit ‘0’:

BCF OUT ;desliga a saída para o tx
CALL DELAY1CK ;espera 500 microsegundos
BSF OUT ;liga a saída
CALL DELAY1CK
CALL DELAY1CK ;transmite por 1000 microsegundos
BCF OUT ;desliga a saida

A transmissão começa pelo bit inicial (startbit), seguido pelo bit menos significativo do número serial (RESX) até o mais significativo do byte de conferência (RES5), totalizando 56 bits em um periodo total de 84 milisegundos. Ao acionar um interruptor e logo desliga-lo, será transmitido 5 vezes esta informação, para garantir boa recepção. Este valor pode ser mudado no equate ‘NVEZES_TX’, localizado logo no inicio do programa.

Veja agora, o esquema do receptor:

RECEBENDO SINAL DO RECEPTOR
A rotina do receptor fica verificando o pino 16 (porta,7 como entrada) e dependendo do seu valor, irá incrementar a cada 50 microsegundos aproximadamente, os contadores LC ou HC. Ao receber um startbit, reseta estes contadores e passa a aguardar o recebimento dos bits. Se LC não estourar (quando seu valor for maior que ‘T_MAX’, como no intervalo entre transmissões), ocorre uma comparação entre LC e HC, e o valor do ‘carry’ será deslocado para os registradores ‘RESX a RES51, no total de 56 bits.
Ao receber uma transmissão bem sucedida, primeiro será comparado o número serial do aparelho. Se não for igual, não aceita a transmissão. Sendo igual, ocorre a comparação da somatória dos bytes recebidos com o byte de conferência, e sendo iguais, comprova sua integridade. Do contrário, houve falha na recepção, sendo a mesma desprezada. Com uma recepção correta, será colocado o valor de um byte de conjunto de interruptores (RES1 ou RES2 ou RES3 ou RES4) no portB e acionado a saida correspondente no portA, sequencialmente, controlado pela interrupção do timer 0. Esta interrupção ocorre a cada 2048 microsegundos acionando um dos transistores ligados aos pinos 1,2,17 e 18, referente as colunas de interruptores. Somente um transistor fica em corte e os outros 3 ficam em condução, curtocircuitando o sinal por meio de diodos de uso geral (1N4148, por ex.), e evitando que outras colunas liguem seus reles ao mesmo tempo. O capacitor de 1 microfarads/10v em cada base dos transitores serve para acumular tensão e mantê-la , pelo periodo morto da multiplexação. Seu valor é crítico, se for pouco, irá ficar ligando e desligando o rele, se for muito, irá demorar muito para desligar o rele após desligar o interruptor correspondente.

Com um número enorme de 32 reles, deve-se prever que a fonte possa fornecer corrente suficiente, especialmente quando todos estiverem ligados (2 Amperes no mínimo). De preferência a reles minaturas com bobinas de 12 volts (tendo a resistência do fio entre 250 a 500 ohms) e contatos para 10 Amperes. Cada rele tem junto dele um led para indicar o acionamento. Pode-se testar o funcionamento sem acionar os reles, por se desligar o interruptor ‘teste/uso’. Este interrompe a alimentação dos reles, de forma geral.

Para uma operação correta, deve-se usar um TX, cuja potência seja compativel com a distância do receptor a ser controlado e logicamente, usando frequências/potências permitidas pela lei. Cuidado especial deve ser tomado com o comprimento da antena no rx e tx.
Uma fórmula para o tamanho da antena (fio simples e 1/2 onda ) é esta: 142,5/frequência (em mhz)
Ex: Tx e rx para 27mhz -> 142,5/27 = 5,27 metros
Tx e rx para 433mhz -> 142,5/433 = 0,329 metros (33 cm)

No caso do receptor, uma boa opção são os receptores superheteródinos, de preferência, com frequência intermediarias e controle automático de ganho. Para teste, com alcance curto, foi usado um tx e rx de 433mhz (destes usados em portões automáticos). Com estes, não se aconselha uso móvel, pois varia muito o sinal com a posição do tx ou rx. Para uso fixo, deve-se escolher a melhor localização, que permita estabilidade do sinal de recepção. Esta faixa também têm muito uso nos portões residenciais, podendo receber interferências ou interferir na recepção do sinal de outros, portanto, não sendo muito aconselhada.
Obs. Esta matéria trata-se de uma montagem didática apenas, sujeita a bugs ainda não detectados. A montagem foi testada apenas em placa de protoboard.

Segue o arquivo ASM para o transmissor:

TX_32_ASM

Segue o arquivo HEX para o transmissor:

TX_32_HEX

Segue o arquivo ASM para o receptor:

RX_32_ASM

Segue o arquivo HEX para o receptor:

RX_32_HEX

Datasheet PIC16F628A

Curiosidades:
Como melhorar sua memória
Al_Jazari – ‘pai da robótica’?
O ‘pim’ – confirma relato biblico
Jockeys ‘robos’
Controle remoto e o efeito estufa
O que é mnemônica
Ouvindo sons do espaço
Porque as estrelas são cintilantes?

Outros assuntos:
O que fazer se tenho um problema de saúde
Como se comunicar com filhos adolescentes
Como lidar com dívidas
Como resolver diferenças no casamento
Como tratar o conjuge com respeito
Como evitar ferir com palavras
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

Até o próximo artigo!!!

9 comments on “CONTROLE REMOTO PARA 32 CANAIS (ON/OFF – MODO PULSO) COM PIC16F628A (DIDÁTICO)

    1. Olá José! Se manter apertados os 32 botões, deverão ligar os 32 reles. Capricha na fonte, porque haja corrente!!! Este sistema mostra o uso da multiplexação para obter mais saídas, só que não é muito prático, pela quantidade de diodos e capacitores necessários a sua construção. Diria que seria mais ‘didático’!
      Cláudio

  1. Olá Cláudio,

    É necessário alterar alguma coisa no código, ou posso gravar da forma que ele está?

    Ainda não entendo muito sobre.

    Muito obrigado pelo projeto.
    Abraços.

    1. Olá Refanjos!
      Se você estiver usando o WinPic800 (software) e o simples programador de pic (hardware), basta abrir o arquivo hex no WinPic com o filtro em ‘*.*’. Em outros programadores que somente aceitam arquivo com extensão ‘.hex’, você deverá salvar o arquivo ‘_hex’ fornecido neste blog para a extensão ‘.hex’. Procure ler alguns tutoriais que explicam como pode ser gravados programas simples. Pode ter certeza que é algo bem simples.
      Cláudio

        1. Olá Refanjos! Infelizmente não tenho, minha praia é ‘ASM’, a chamada ‘ linguagem do além'( risos!). Talvez alguém tenha feito uma versão em ‘c’ e se puderem disponibilizar …
          Claudio

  2. Alguns meses atrás eu tive aqui perguntando sobre um controle desses com 16 canais, mas você superou!!!Muito legal!!!

  3. Muito bom este projeto amigo , uma otima maneira de usar varios canais em um só pic , fico imaginando onde vai o seu limite , seu blog já é hoje o mais importante na area de projentos com microcontroladores e incentiva muito a aprender a linguagem Assembler , peço a você indicações de livros , programas ou até mesmo paginas dedicadas a essa linguagem .
    Sobre o projeto é de muita utilidade afinal onde vamos encontra um projeto em que possamos mudar os codigos de TX e RX tornando um sistema exclusivo , dando uma imaginação grandiosa para uso pois em um sistema que a pessoa precise acionar motores , lampadas e outros imagine um placa interligada por 2 fios nem precisaria de ser por RF , poderia ser feito como sistema de interfone onde somente o codigo cahamado fosse alertado , otimo projeto muito obrigado pelo seu esforço e tempo pois suas ideias me fortalece e me inspira a realizar novos projetos alem de colaborar para um progresso .

    1. Olá Liliano! Agradeço seu comentário e incentivo. Para começar a brincar com programação assembly você pode ler o livro: Desbravando o Pic (Davi José de Souza) Editora Erica. Ele serve para as constantes consultas nas instruções dos pics, bem como tem vários exemplos de como usar recursos do pic como timers, interrupções, etc. Baixe também o Mplab_ide para realizar a compilação. E um simples programador de pic já é suficiente para começar. No começo, não é fácil. Parece que tudo não quer funcionar. A medida que vai aprendendo com os erros, esses ocorrerão em quantidades menores. Existem também vários tutoriais na internet que poderá ser usado para começar a conhecer o ambiente de programação. Com o tempo, poderá também desejar aprender a programar em ‘C’. Depende unicamente de você e de ‘sua persistência’.
      Claudio

Comments are closed.

Back To Top