Gostaria de montar um pequeno carrinho de controle remoto? Com controle de direção, velocidade para frente/trás regulável a PWM? Com 2 botões para acionar uma ‘buzina’ e ‘iluminação’?
Muitos leitores gostam de montar seus próprios veiculos controlados por RF. Muitos tem este hobby em alto grau de sofisticação. Este protótipo com certeza, não irá atender a quem já brinca a muitos anos com controle remoto. Mas, poderá ser uma iniciação a quem gostaria de começar com algo bem simples. Digamos que a simplicidade é marcante, apesar do muito que a montagem pode oferecer. Veja o esquema abaixo:
Usando um pequeno pic 12F675 no TX e outro no RX, podemos controlar, graças ao programa carregado neles, um motor de tração, em modo pwm de tensão e também um servo motor (de padrão de pulso = 1 a 2 ms), para acionar a direção do carrinho. Não vamos entrar no carácter descritivo da montagem mecânica, como fixação de rodas, tirantes, instalação de motores,etc., mas sim na parte eletrônica do dispositivo. Cada um poderá então escolher como fará seu próprio protótipo. Talvez possa aproveitar um carrinho quebrado e refazer a parte eletrônica, ou começar do zero, fazendo um inteiro projeto da estrutura e aparência.
Conforme pode ser observado, o Pic fornece 2 saídas separadas para PWM, modo tensão: 1 no pino 3 e outra no pino 2. A ideia é fazer o acionamento para frente em uma e para trás em outra. No TX, quando o potenciômetro se encontra na posição central de seu cursor, teremos a condição de desligado no motor de tração. Acionando o potenciômetro para aumentar irá gerar PWM na saída do pino 2 proporcional ao movimento do cursor. Em sentido contrário, irá gerar no pino 3. Portanto, no TX, teremos que manter o potenciômetro centrado por molas para dar exatamente a metade da sua resistência ôhmica.
Assim, em uso, mover a alavanca ligada ao potenciômetro para trás deverá produzir movimento do carrinho para trás (ré) , soltando o acionamento tem que desligar o carrinho. Se acionarmos para frente, deverá produzirá movimento para frente.
Com respeito a direção, o servo controle do tipo pwm 1-2ms, deverá acionar via tirante, a direção do carrinho. No TX, deverá ter um potenciômetro também centrado, de maneira que acionando para esquerda, o carrinho vá para esquerda. No meio, o carrinho deverá seguir em frente. E acionando para direita no TX, deverá virar a direção para direita no carrinho.
Os potenciômetros poderão ser adaptados com uso de alavancas ou engrenagens, ou usar um comercial retirado de carrinho de controle da sucata.
Os 2 botões poderão ser usados em modo ‘retenção’ para acionar leds que imitem os ‘faróis’ e também ligar um pequeno ‘buzzer’ para imitar uma ‘buzina’, sendo este botão em modo ‘pulso’. O modo pode ser trocado individualmente por alterar no arquivo c do receptor e recompilar.
Importante lembrar, que deverá ser separada a alimentação do PIC e receptor da alimentação do servo e motor de tração, uma vez que estes produzem muita interferência e ruídos elétricos na alimentação de tensão aos quais estão ligados. Isto pode ser feito usando pilhas grandes para o motor e uma pequena bateria de 9 volts com um regulador de tensão 7805, para obter os 5 volts do PIC.
Com respeito aos transistores da saída do motor de tração, foi optado o par BC548/558 por serem pequenos e de facil montagem. Mas se optar usar um motor de corrente maior que a corrente máxima suportada por eles, então poderá substitui-los por outros de maior potência, como os TIP41/42, por exemplo.
Um detalhe importante, é que foi usado um número serial no TX que tem que ser igual no RX, para funcionar. Isto impede que o receptor funcione com outro TX com a mesma montagem (exceto se tiver o mesmo serial, ou seja, um ‘clone’). Mas não é garantia de funcionamento, se vários conjuntos forem montados e ligados próximos. Poderão interferir entre si. Use canais de frequência diferentes se optar por montar vários pares diferentes.
OBS. Esta montagem foi testada apenas em placa de protoboard, sujeita a bugs ainda não observados. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobbysta.
Segue pasta zipada com os arquivos do TX e RX (em “C”), já atualizados ( em 30-11-2013) com a nova versão para o receptor. No anterior, o servo apresentava trepidações em algumas situações e o software foi modificado para corrigir isto. Nesta pasta, encontraremos o arquivo ‘C’ com possibilidade de ser compilado em modo normal para saída do servo ( 1-2ms , sendo 45° para esquerda e 45° graus para direita) ou modo ‘estendido’ (750-2750 useg, sendo 90º para esquerda e 90° para direita). Também , poderá obter os arquivos hex já compilado para as 2 versões e do transmissor:
Manuais:
Servo-Motor
Modulação por Pulso
PIC12F675
Curiosidades:
O “endereço” perfeito da Terra
A arca de Noé e a arquitetura naval
O túnel rodoviário mais comprido do mundo
Quando a montanha tentou juntar-se ao mar
Há algo de errado com o clima?
Use a tecnologia de modo respeitoso e econômico
Carros – no presente e no passado
Gás natural — energia para o lar
Outros assuntos:
Como ser feliz no casamento?
Como ser um bom ouvinte
Como lidar com as dívidas
Como resolver problemas no casamento
Aprenda a perdoar
Como lidar com os sogros
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Até o próximo artigo!!!
Sr. Cláudio, ficarei ancioso e atento ao blog.
Meus sinceros agradecimentos, obg !
Olá Sr. Lários, será que fica muito complicado fazer alterações no programa e circuito, para q se possa usar o pic para controlar os movimentos como em um tanque? tipo, ao ser acionado um pot pra cima ou baixo os motores irem pra frente/ré e outro pot que usaria para mover os motores dir/esq. porém teria de remover o servo motor ne? Obgr, abçs
Olá Emilio!
Deixa ver se eu entendi bem a sua sugestão. Ao invés de ter um servo de 0-2ms, trocar por mais uma saída para controle de motor DC iguais aos dos pinos 2 e 3. É isto mesmo?
Se for faltará um pino. Ou eliminar uma função como os leds ou buzina. Como seria usado? Para controlar um brinquedo usando 2 motores DC como um “tanque” com esteira usa-se exatamente 2 motores independentes. Mas a lógica de funcionamento teria que ser toda mudada. Seria algo similar ao usado em controle de cadeiras de rodas, onde acionando para frente gira ambos os motores, e quando aciona para um dos lados concomitantemente, dependendo do grau, desliga um dos motores ou até o inverte para obter o giro de 360°.
Pode compartilhar mais informações quanto ao uso?
Claudio
Isso msm sr. Lários, que bom q entendeu, é o mesmo funcionamento da cadeira. O projeto é apenas para hobby mesmo, utilizei seu projeto com o 12f675 de 5 canais, e fiz um robo usando motores dc com redução e corrente de bicicletas, fiz as inversões dos motores utilizando 4 relés em modo pulso, e um para led.. tudo funcionou muito bem, mas seria bem melhor com o controle pwm. Depois q vi esse projeto do automodelo, pensei na possibilidade de fazer da forma que falei. As placas que fazem este tipo de controle são caras e não achei na internet nenhum tipo de controlador com pic com o projeto e codigo disponivel. acredito q o grande problema nesse tipo de funcionamento, é fazer uma certa “mixagem” dos dois pot de acionamento dos motores. O sr. poderia me dar uma ideia de como posso fazer? usando ponte h não deu certo, nem msm com o l293 para dois motores,não consegui. agradeço a ajuda. obrigado !
Olá Emílio!
Obrigado por compartilhar a sua ideia. A “mixagem” que você se refere é o que exatamente? Você está usando potenciômetro duplo daqueles de controle de vídeo games?
Claudio
Eu q agradeço a imensa ajuda sr. Claudio.
Se puder, veja este link para o sr. poder ver como funciona a placa q falei: https://youtu.be/QcZqY7BJ1ow?t=1m33s
Este é o projeto que pretendo fazer, porém no robô: https://www.youtube.com/watch?v=hxSt73rgY5E —> não tem disponível o código fonte
O controle seria exatamente como uma cadeira de rodas. A mixagem q me refiro, seria “unir” os dados dos dois potenciometros para gerar o pwm necessário para cada motor independente, bem como o sr. disse, de acordo com o grau acionado, inverter a rotação fazendo um lado girar mais rapido que o outro ou um giro de 360°. Pretendo sim utilizar este potenciometro duplo de video games. Nos projetos que vi funcionam assim:
* Acionando a alavanca pra cima, motores sentido horario
*Acionando a alavanca pra baixo: motores sentido anti-horario
*Acionando a alavanca para esquerda, motor esquerdo sentido horario e direito anti-horario
*Acionando a alavanca para direita, motor esquerdo sentido anti-horario e direito horario
Fazendo o giro de 360°
*Acionando a alavanca nas diagonais: (aqui onde entra o “mixer”, que juntaria os sinais pwm dos dois potenciometros) motores com giros proporcionais ao lado da alavanca, pra cima ou baixo.
O sr. acha que é possível fazer este projeto utilizado este msm PIC? Grato pela ajuda!!!
Olá Emilio!
Parabéns! Bem explicado, com bastante linhas e links. A questão parece ser o tal “mixer”. Não saberia ainda como fazer isto, mas assim que tiver um tempinho, vou pegar um lápis e papel para analisar uma possível lógica.
Claudio
Olá Cláudio, me tire mais uma dúvida por gentileza… Estou querendo montar dois destes circuitos dentro de um controle de PS2 de vídeo game, e a primeira dúvida é: Os potênciometros acoplados são de 10K, é possível alterar no programa para que ele leia este valor? E a segunda é:
No TX 1, usaria a alavanca da esquerda para controlar os motores para frente/ré (cima/baixo) e para os lados (direita/esquerda)acionando a ponte H e no TX 2 na alavanca da direita, usaria dois servos para controlar uma câmera que ficaria no robô. Minha dúvida, é saber se ao acionar a ponte H, por exemplo com os motores indo pra frente, se daria algum tipo de curto se acionasse a alavanca para os lados, visto que o joystick move para todas as direções. Deu pra entender? =) Espero que possa me ajudar, estou vendo umas vídeos aulas de PIC no youtube, porém ainda não sei muita coisa e comprei um gravador e alguns PIC para poder por em prática meu projeto. Obrigado pela atenção. Abraços !
Olá Gerson!
Vamos ver se respondo certo:
Pergunta 1)Os potenciômetros acoplados são de 10K, é possível alterar no programa para que ele leia este valor?
r. Você pode usar o potenciômetro de 10k no lugar do de 4k7 sem precisa modificar nada no programa. Até outros valores funcionaria sem problemas.
Pergunta 2) Se ao acionar a ponte H, por exemplo com os motores indo pra frente, se daria algum tipo de curto se acionasse a alavanca para os lados, visto que o joystick move para todas as direções?
r. Acredito que não teria problema, uma vez que os potenciômetros do JoyStick são independentes um do outro.
A pergunta que lhe faço é : Como você vai fazer com as saídas? Vai usar 2 receptores com frequências diferentes?
Cláudio
Obrigado Cláudio.
Pretendo utilizar dois módulos RF 433mhz, vi que no seu código tem o serial number, porém vou testar amanhã pra ver se não dá conflito usando na mesma frequência, e tentarei também usar diodos na entrada do módulo RF pra ver se consigo enviar sinal dos dois PICs com um só módulo (vai que dá certo né, kk)… Caso contrário comprarei outro de 315Mhz.
Em relação a ponte H, é porque os motores que movem o robô pra frente, serão os mesmos que vão mover para os lados, tipo aqueles robôs de esteira.. Por isso acho que pode dar algum tipo de curto. Imagina
Complementando.. Sem querer saiu:
Imagina que o robô vai pra frente (joystick todo pra cima) caso eu coloque um pouco na diagonal iria acionar o outro potenciômetro e assim a saída da outra ponte H.
Valeu Cládio. Abraço !
Olá Gerson!
Creio que você deve ter um esquema em mente. Somente analise a questão do funcionamento para evitar a situação de um curto. Quanto a interferir, se for acionado dois ao mesmo tempo haverá conflito.
Cláudio
olar cludio liguei o led na saida do transmissor mais o led fica aceso direto e dando uma as piscadinhas aperto o botao nada acontece textei tanbem no simudador e ta amesma coisa nao sei o que ta acontecendo nao to fazendo nada de errado baxei o arquivo hex e gravei mais nada verifiquei o pic 12
f675 tudo ok e eu ja conseguir fazer uns do seus projetos que e SERVO_CAMERA_ e funcionou beleza
Olá José Carlos!
Não sei dizer o que pode estar acontecendo no seu caso. Eu e outros do blog já montaram e funcionou, conforme os comentários. De atenção aos pontos abaixo:
1) Confira as ligações conforme o esquema fornecido. Certifique que cada pino do pic esteja ligado aos componentes corretos. Confira e reconfira!
2) Certifique de estar alimentando o pic com 5 volts regulados.
3) Certifique que o byte de calibração não tenha sido perdido.
4) Verifique se o seu programador programou a palavra de configuração.
5)Certifique que o rx/tx sejam da mesma frequência.
6)Verifique se está ligando corretamente o seu rx e também o tx com o esquema do fabricante deles.
Faça testes por etapas:
1) Monte o circuito do tx
2) Programe o pic e coloque no circuito
3) Alimente o circuito com 5 volts e aperte o botão de transmissão (qualquer um)
4) Verifique se sai um sinal no pino 2 do pic (tx) nesta ocasião. Use um osciloscópio, ou um disco piezo elétrico ou um led com um resistor de 470ohms em série.
Nesta etapa, apertando e soltando o botão tem que fornecer sinal na saída do pic no pino 2;
Se não fornecer, tem algo errado:
1) O pic tem alimentação -> no pino 1 com 5 volts? No pino 8 tem o gnd?
2) O pic tem 5 volts no pino 4 através do resistor de 4k7? (senão ocorre um reset)
3)As ligações estão corretas – confira tudo de novo, inclusive se não está montando o pic ao contrário (marca indica o pino 1)
4)Se tudo ok acima -> leia o pic com o programador e confira se o programa gravado é igual ao do arquivo .hex fornecido.
5) Verifique o ultimo endereço se tem o byte de calibração intacto começando com 34 xx.
Se não tiver mas mostrar apenas 3f ff, não irá funcionar.
6) Leia a palavra de configuração e confira com o arquivo C ou ASM (depende de qual usou)
Quando consegui fazer o tx funcionar, então irá partir para o receptor da mesma forma como o acima.
Não desista! Todo começo é difícil!
Cláudio
Oi Larios, pode, se você tem tempo para escrever software em .asm !?.
Obrigado pela resposta.
Olá Ata!
Escrever código em asm é pelo menos 10 vezes mais demorado. Os compiladores ‘c’ geram um arquivo chamado ‘list’ que mostra como foi montado em assembly. Talvez isto possa ajudar você a entender o código gerado.
Cláudio
Obrigado. Vou tentar.
claudio tentei fazer todos os controles do seu brog mais acontece a mesma coisa oque pode ser
olar claudio esse nao consequi fazer funcionar mesmo coloquei o led no pino 2 e ele fica aceso sem eu apertar nem um botao textei no proteus e ficou amesma coisa oque pode ta acontecendo me ajuda por favor
Olá José Carlos!
A parte disto, você testou se o tx está realmente transmitindo? Quando aperta uma tecla ou gira um dos potenciômetros altera o sinal da saída? Verificou isto com um osciloscópio?
Se está transmitindo ok, o sinal chega no receptor no pino 4 do pic? Se chega, está alterando conforme aperta os botões ou gira algum potenciômetro?
Se estiver ok nesta parte mas a saída do pic do rx não reage, será que programou o hex correto? Será que não perdeu o byte de calibração? Será que as ligações estão corretas no receptor, correspondendo ao esquema passado? As tensões estão corretas?
Estes arquivos hex já foram usados por alguns do blog sem problemas, e desde então não houve nenhuma alteração neles, que talvez pudesse justificar isto.
Você disse que testou no Proteus. Você simulou ambos, o transmissor e receptor?
Cláudio