Gostaria de fazer um controle remoto compacto para sua diversão? Com apenas 2 canais PWM (1MS a 2MS)? Com opção de acionar mais 3 funções do tipo ‘on/off’? Então você vai querer ler mais…
Recentemente, foi publicado neste blog o artigo ‘FAÇA UM CONTROLE REMOTO PWM 8 CANAIS (1MS A 2MS) – COM PIC 16F628A’ com 8 canais PWM e 5 acionamentos do tipo ‘on/off’.
Mas para alguns hobistas, isto acaba sendo um exagero, sendo que alguns canais não são usados. Pensando naqueles que usam no máximo 2 canais PWM, e que querem uma montagem mais compacta, foi feita esta versão com PIC 12F675, de apenas 8 pinos, sendo ele pequeno e barato.
O padrão de muito servos se baseia no uso de um pulso entre 1ms a 2 ms . Quando ele recebe um pulso de 1ms corresponderá a posição inicial do servo. Se for colocado 1,5 ms de pulso, o servo se deslocará para a posição central e com 2ms irá para o extremo oposto. Valores intermediários irão resultar em posições proporcionais. Isto facilita o controle, por exemplo, da direção de um carrinho elétrico.
Veja o esquema abaixo do par transmissor/receptor:
O ‘TX’ é um módulo comercial de transmissão, cuja frequência deverá ser escolhida para a aplicação desejada (27mhz, 49mhz, 72mhz, etc). Para meus testes, usei um tx de 433mhz do tipo parecido com controle remoto de portão. Os 3 interruptores em modo on/off foram ligados aos pinos 4,6 e 7. Para obter o valor do PWM foram usados 2 potenciômetros de 4k7, sendo um ligado no pino 5 e outro no pino 3. Visto que o PIC12f675 tem internamente 4 canais de conversão analógica/digital, ficou mais fácil obter os valores proporcionais. O código ASM é bem simples e o HEX resultante da compilação é pequeno.
Na parte de recepção, foi usado outro PIC12f675, sendo que o receptor comercial entrega o sinal para o pino 4 e as outros pinos são unicamente saídas (excetuando a VCC e o GND).
O receptor tem que ser na mesma frequencia do transmissor. No teste, usei um receptor de 433mhz (comercial), mas, em uso, deverá ser usada as faixas legais permitidas para isto (consulte a legislação do seu país, quanto a potências e frequências, bem como de licenças de uso).
Em uma recepção completa são recebidos 5 bytes na sequência: byte de conferência (valida a transmissão), byte dos botões, byte pwm canal 2, byte do canal 1 e byte do serial number (sempre recebe o bit LSB de cada byte primeiro). Somando-se todos os bytes de dados tem que ter o mesmo valor do byte de conferência. Isto assegura a qualidade da transmissão. Quando ocorre um interrupção de sinal, o receptor mantém os valores anteriores nas saídas (tanto proporcionais como botões).
As saídas são PWM são acionadas sequencialmente, usando a rotina de interrupção do timer1 e timer 0 para controlar cada etapa.
O protocolo de transmissão de bits é o adotado nos receptores de HT6p20B, por já estar disponível com mais facilidade nos projetos deste blog.
Atenção: É importante separar a alimentação do PIC e também do receptor 433 mhz da alimentação dos servos controles. Estes, ao acionarem, geram picos de corrente que podem ‘resetar’ o PIC, ou mesmo, atrapalhar a recepção do sinal momentaneamente.
Obs. Esta montagem foi montada e testada em placa de protoboard apenas, sujeito a bugs ainda não identificados. Esta sendo fornecido o arquivo ASM e HEX que poderão ser alterados segundo as necessidades do hobista.
Segue o arquivo ASM do TX:
Segue o arquivo HEX do TX:
Segue o novo arquivo ASM do RX:
Segue o novo arquivo HEX do RX:
Também para os que desejam fazer esta montagem usando um compilador ‘C’, segue os arquivos do TX e RX , bem como a pasta zipada com todos os arquivos originais:
cr_tx_pwm2c_3b_c (transmissor)
cr_rx_pwm2c_3b_c (receptor)
projeto_cremoto_pwm_tx_rx (ambos, em pasta zipada)
Também, segue pasta zipada com uma versão de receptor com pulso de 750 a 2800 useg, ao invés de 1000 a 2000 useg. Isto produz um curso maior no servo controle:
Manuais:
PIC12F675
Servo-motor
Outros esquemas curiosos
Curiosidades:
Por que o mar é salgado?
O que aprendemos dos projetos da natureza
Impressionantes “aspiradores” do mar
Um mar extraordinário — mas morto!
Uma batalha contínua contra as águas
Fantásticas dunas do litoral polonês
Barcelona — galeria ao ar livre de cores e estilos
O passado e o presente dos brinquedos
Alguns mitos a respeito da morte examinados mais de perto
Como estimular o desejo de aprender
O abuso do álcool e a saúde
Projetado com a capacidade de aprender sempre
Sono: supérfluo ou necessário?
Os custos das minas terrestres
Um universo cheio de surpresas
O som da neve
O que estamos fazendo com nosso alimento?
Mestres medievais da astonomia
Outros assuntos:
Fortaleça seu casamento por meio de boa comunicação
Os desafios de uma família com enteados
Como ser feliz no casamento?
Como se sair bem na escola — seja organizado
Como conversar com seu filho sobre sexting
Aprenda a perdoar
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!!!
por conta propria, vou arriscar dizer que este codigo em c tambem seja( flex) pelas multiplas funções existente,pois ja alterei com sucesso praticamente quase todos os recursos que este notavel firmwere nos oferece, agora o que está me enculcando é o fato de apenas um servo motor funcionar e o outro não.será que estou fazendos a montagem errada lario?help me!!
Olá José! Vou dar uma olhada…
Cláudio
Olá José! Veja o arquivo com versão C aqui.
Cláudio
lario cordialmete meu muitissimo obrigado por ter doado de seu precioso tempo,e escrevido este codigo pwm em c,visto que tem feito o maximo possivel para contribuir com os internautas que te solicita por ajuda.mas nao sei como está distribuido o seu tempo,se nao for exigir demais,na medida do possivel que voce dispuser um tempinho voce poderia modificar uma dessa saida para 0 a 5 volts?obs não estou exigindo.
Olá José! Irei colocar entre os próximos, em prioridade, a ser feito.
Cláudio
Hello Claudio.How is be possible to change ‘pulse’ to ‘hold’ mode on this 3ch on off.I wont to use jumper to change from ‘pulse’ to ‘hold’ like you do in this project—- http://picsource.com.br/archives/3530/ also wont to keep 2ch PWM. What I need to change in program?I am not so good in programming.Thanks in advance By from Prague
Hi Digit99! If I understanding well you need a 3ch ‘hold’ mode without PWM, is it? I’ll like to know where will be used, if you can answer me, please.
Cláudio
Yes Claudio I need 3ch ‘hold’mode WITH PWM.(3ch+2ch PWM)I need to control led lightening on the roof in my living room.I will control about 500 led.Sometime I need
a lot of light sometime not.Also will control sun blind on the window.Many thanks for your fast answer. : 🙂
Hi Digit99! Could you see the article again, please? Because I put a code using ‘c’ compiler that work with ‘hold’ mode 3 ch on/off and 2 ch PWM 1 to 2 mseg. Use the hex of the zipped folder.
Cláudio
Hi Claudio!I check your new c compile and hold mode work fine!!!I am happy about that!But PWM you make to work for servo-motor (1to2 mscec),I dont need pwm 1to2 msec.I NEED PWM 0-5V!IS IT POSSIBLE TO CHANGE 1TO2MCES TO 0-5VOLTS BOTH CHANEL LIKE YOU DID HIRE http://picsource.com.br/wp-content/photos/2013/10/FORMA_PWM_1_2_E_5V.jpg MANY THANKS IN ADVANCE. pc. You have excellent project!
Hi Digit99! I’m Sorry. It was my mistake. Really, you talked about using with leds control and not to control a motor. I’ll see what I must change in the code.
Claudio
Hi Digit99! Please, see the zip folder here.
Claudio
Hello Claudio.I am so happy for this project!This is exactly what I have in mind.Many thanks for your project,and your waste time.I am follow all your project,they are so interesting for me.by from Prague
boa tarde companheiros:rapazes concluir que seria facil moleza faser alteraçoes neste codigo, e o e negocio é como se fosse um labirinto quando voce mexe daqui ele entorta dali rsrsr,na verdade eu nao entendo se devo continuar no aprendizado da linguagem asm ou a do pic.por enquanto finalizo minhas tentativas por aqui em outra ocasião quem sabe.rsrsr preciso me ausentar por alguns dias.valeu abraços a todos seguidores desta fonte de informações que é o site do claudio larios
rsrsr agora é que ficou pesado preciso alterar os dois codigos!!! alterei algumas declarações compilou mais não tenho certeza se está ok.vou continuar quem sabe… bom dia companheiros.