LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: michael em 17 de Março de 2011, 13:40

Título: medir velocidade com o arduino
Enviado por: michael em 17 de Março de 2011, 13:40
Olá, estou desenvolvendo um projeto onde tenho a necessidade em calcular a velocidade em metros por segundo usando um encoder e o arduino, será que alguem pode me ajudar.
objetivo e través dos pulsos do encoder saber qual a velocidade em metros por segundo.

ou qualque coisa q eu possa medir a velocidade, não sei como proceder com o arduino, como conseguir medir o tempo.

antecipadamente agradeço.

Michael
Título: Re: medir velocidade com o arduino
Enviado por: metRo_ em 17 de Março de 2011, 13:57
Olá, estou desenvolvendo um projeto onde tenho a necessidade em calcular a velocidade em metros por segundo usando um encoder e o arduino, será que alguem pode me ajudar.
objetivo e través dos pulsos do encoder saber qual a velocidade em metros por segundo.
ou qualque coisa q eu possa medir a velocidade, não sei como proceder com o arduino, como conseguir medir o tempo.
antecipadamente agradeço.
Michael

O procedimento que deves fazer é o seguinte:
1-Saber quantos pulsos por volta tem o encoder. Sabendo o diâmetro da roda, consegues saber qual a distancia percorrida em cada pulso.
2-Para ler os impulsos o ideal é utilizar interrupções externas, isto é, tens o sinal do encoder ligado ao arduino, sempre que este sinal passa de 0 para 1 quer dizer que passou um pulso. ver http://www.arduino.cc/en/Reference/AttachInterrupt (http://www.arduino.cc/en/Reference/AttachInterrupt)
3-Cada vez que der um pulso incrementar uma variável, assim sabes que se deu 10 pulsos andou x metros.
4-Gerar uma interrupção temporal, isto é, se gerares por exemplo um interrupção a cada 1 segundo podes calcular a velocidade pois tens o tempo que é 1segundo e tens os pulsos que te dizem a distancia. ver http://www.arduino.cc/playground/Main/MsTimer2 (http://www.arduino.cc/playground/Main/MsTimer2)

ver também: http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_F%C3%ADsica/Movimento (http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_F%C3%ADsica/Movimento)
Título: Re: medir velocidade com o arduino
Enviado por: Sérgio_Sena em 17 de Março de 2011, 14:24
O ATMEGA do Arduino não tem uma entrada externa de pulsos?

Então basta ter uma interrupção temporizada. Ex.: a cada 100ms (interrupção), vai ler qts pulsos estão no contador de entrada externa.

De certeza q da´para fazer isso! afinal, o Arduino é um IDE, o hardware é um ATMEGA :)
Título: Re: medir velocidade com o arduino
Enviado por: michael em 17 de Março de 2011, 14:35
Fico muito agradecido com a resposta, vou continuar pesquisando.
Eu sei como funciona o encoder e sei também como gerar o algoritimo para converter nas medidas que necessito, o maior problema é relaciona ao próprio arduino, sou iniciante com microcontroladores.
Exemplo, no pino 7 do arduino eu recebo os pulsos do  encoder, meu encoder tem uma resolução de 300, 300 pulsos por rotação.
Qual seria o código para eu calcular o tempo que levou para passar todos os pulsos?
Em outras linguagens que  eu conheço  faria um start em um timer q ficaria contando até que uma variável seja igual a 300, aí eu paro o contador e vejo quantos segundos, ou milésimos de segundos foi esse intervalo e é exatamente isso que quero fazer, mas não sei como fazer isso com o arduino, não conheço todos os comando e funções.
Será que poderia fazer um exemplo simples para eu entender melhor.

Obrigado Novamente.
Título: Re: medir velocidade com o arduino
Enviado por: metRo_ em 17 de Março de 2011, 14:44
Tens aqui um exemplo: http://www.arduino.cc/playground/Main/MsTimer2 (http://www.arduino.cc/playground/Main/MsTimer2)
Simplesmente em vez de ver quanto tempo mudou quando contou 300pulsos, vais ver quantos pulsos contou(bem mais facil) quando atingiu um determinado tempo.
Título: Re: medir velocidade com o arduino
Enviado por: senso em 17 de Março de 2011, 17:38
Este exemplo com interrupções externas é bem mais simples, dá rotação por minuto, depois é só multiplicar pelo tamanho da roda.
Título: Re: medir velocidade com o arduino
Enviado por: beirao em 17 de Março de 2011, 20:34
Se queres um cálculo de velocidade preciso e exacto, deves calcular o tempo que passa entre cada pulso (ou entre cada x pulsos). Digo isto porque no caso de teres poucos pulsos por rotação, pode acontecer teres "2,5" pulsos por rotação.. Se activares um timer num pulso e lendo esse timer no pulso seguinte é muito mais preciso

No teu caso, com 300 pulsos por rotação, o erro de contares os pulsos num determinado tempo em vez de contares o tempo entre pulsos deve ser desprezavel (depende da gama de velocidade)