LusoRobótica - Robótica em Português

Robótica => Discussão geral sobre robótica => Tópico iniciado por: RAD em 09 de Maio de 2014, 15:32

Título: leitura de sinal ppm com arduino
Enviado por: RAD em 09 de Maio de 2014, 15:32
Olá galera.....
Tenho a necessidade de fazer a leitura da saída de um canal de radio TURNIGY 9X pelo arduino e reproduzir na saída do arduino o mesmo sinal que entrou. O propósito disso é usar em um robô com duas rodas independentes, cada uma com seu motor e controlador, visto que dessa maneira o robô quando recebe comando de ir em linha reta se desvia por conta de alguma diferença entre as rotações das duas rodas. O que eu pretendo fazer é ler o sinal do receptor com o arduino e depois gerar sinal de comando para os motores com o arduino, mas fazendo isso eu fico com a possibilidade de inserir um sensor acelerômetro entre o sinal do radio o a saída do arduino para corrigir a o desvio de direção indesejado que houver no percurso.
Primeiramente eu não sou Expert com arduino, por isso estou aqui, mas andei pesquisando a respeito e sei que se eu usar interrupções externas posso ler o sinal do receptor, acionar uma interrupção, habilitar um timer, contar o tempo decorrido do pulso de nível alto do PPM e depois coletar esse tempo para usa-lo na referencia de saída para os motores. O problema é que não sei como fazer para habilitar um timer no momento que eu quero e desabilita-lo quando quiser e também pegar esse tempo e usa-lo.
Eu também terei dificuldades para criar a logica para fazer a inserção do acelerômetro para que funcione bem o que eu pretendo.
Obs: Os canais 1 e 2 responsáveis pela locomoção das duas rodas são mixados, desta maneira quando movimento o stick profundor o robô movimenta as duas rodas para levar o robô para frente.
Caso alguém tenha sugestões ou algum projeto similar ficarei muito grato.

Desde já agradeço pela ajuda!
Título: Re: LEITURA DE SINAL PPM COM ARDUINO
Enviado por: metRo_ em 09 de Maio de 2014, 16:48
Olá,
Em relação a projectos, todos estes projectos (https://www.google.pt/search?client=ubuntu&channel=fs&q=quadcopter+arduino&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=avhsU929Bs7e8gfCiYCADQ) fazem isso :)

Tenho ideia de que os timers do avr têm um modo para fazer esse leitura sem dar tanto trabalho mas posso estar a confundir com outro, procurar no datasheet do atmega328
Título: Re: LEITURA DE SINAL PPM COM ARDUINO
Enviado por: senso em 09 de Maio de 2014, 18:51
Usando o arduino e só para um canal ou dois, é simplesmente usar o pulseIn().
Se não usa-se uma base de tempo, tipo milis(mais mais rápida) e conta-se o tempo entre a transição ascendente e descendente do sinal.

Só vais conseguir meter os motores a rodar precisamente á mesma velocidade implementado um encoder em cada motor, se não, um deles roda sempre no sentido contrário ao outro e nunca tem a mesma rotação para a mesma voltagem/corrente.
Título: Re: LEITURA DE SINAL PPM COM ARDUINO
Enviado por: RAD em 09 de Maio de 2014, 19:29
Esqueci de mencionar galera... não posso tem tipo de sensor que seja frágil, pois o robô vai participar de competições violentas e um sensor frágil não aguentaria. Quanto ao pulseIn, eu preciso ler dois canais é imprescindível, pois preciso controlar os dois motores de forma independente, dai a necessidade de usar a interrupção, mas eu gostaria de saber como eu posso acionar o timer na borda de subida do sinal PPM, parar a contagem na borda de descida e coletar o tempo que passou entre o evento.

Agradeço pelas postagens, vamos se falando que chegaremos a uma solução.
Título: Re: LEITURA DE SINAL PPM COM ARDUINO
Enviado por: metRo_ em 09 de Maio de 2014, 19:33
Esqueci de mencionar galera... não posso tem tipo de sensor que seja frágil, pois o robô vai participar de competições violentas e um sensor frágil não aguentaria. Quanto ao pulseIn, eu preciso ler dois canais é imprescindível, pois preciso controlar os dois motores de forma independente, dai a necessidade de usar a interrupção, mas eu gostaria de saber como eu posso acionar o timer na borda de subida do sinal PPM, parar a contagem na borda de descida e coletar o tempo que passou entre o evento.

Agradeço pelas postagens, vamos se falando que chegaremos a uma solução.

Acho que para começar devias dividir os dois problemas. Vai ver o que faz a função pulsein()
Título: Re: LEITURA DE SINAL PPM COM ARDUINO
Enviado por: senso em 09 de Maio de 2014, 19:59
E um encoder não é fragil, se bem que idealmente devias usar motores já com encoders.
Título: Re: leitura de sinal ppm com arduino
Enviado por: RAD em 10 de Maio de 2014, 00:00
Só pra terem uma noção do que ele irá ter que enfrentar da  uma olhada nisso.
https://www.youtube.com/watch?v=mpVK7GA6Ywk (https://www.youtube.com/watch?v=mpVK7GA6Ywk)

E ainda pode haver lutas mais violentas, não sei se um encoder suportaria tal impacto.

nosso amigo metRo sugeriu utilizar a função PulseIn, não sei se consigo ler dois canais com o PulseIn, vou dar uma olhada, mas ja andei lendo em outros posts que o melhor mesmo é o  interrupt.
Título: Re: leitura de sinal ppm com arduino
Enviado por: senso em 10 de Maio de 2014, 12:45
Os robots de desminagem usam encoders, volta e meia rebenta uma mina, e os encoders ficam vivos..
Já estou a falar em motores com encoders precisamente por ser mais robusto que um encoder na roda..