Boa tarde pessoal,

  Meu servo motor fica "tremendo" quando ligado ao arduino junto com o sensor MMA7361. Já não sei mais o que fazer para ele ficar parado quando o acelerometro estiver em uma posição estatica. Por favor me ajudem. Segue o codigo do loop abaixo:

void loop()
{
val = accelero.getXRaw();
val = map(val, 320, 400, 0, 1790); 
myservo.write(val);
Serial.println(val);  
delay(50);
}

Exibições: 1958

Responder esta

Respostas a este tópico

Que servo motor é e com que tensão você está o alimentando?

Esta usando o 5v do arduino, ligado na USB?

Bom dia Jonatas,

   Estou utilizando um servo CS60 standard, e o mesmo é alimentado com 5 volts do power pins do arduino.

   Percebi fazendo a leitura via serial que existe uma grande variação dos dados enviados pelo acelerômetro  Mesmo quando o sensor esta em descanso (estático) os dados variam muito, por vezes o acelerômetro  que envia dados numéricos com valores entre 320 e 400, varia em ate 20, e isso faz com que o motor de umas giradas doidas.

  Muito obrigado por sua disposição em me ajudar.

 

Olá Moacir

 

Seu sistema esta com o "Mal de Parkinson" este fenomeno foi explicado por Norbert Wiener, quando projetava um sistema de apontamento de armas antiaereas controladas por radar no final da decada de 40. Dos seus estudos resultou a cibernética, hoje a popular informatica e mecatrônica. E ajudou em muito a medicina.

Bem por ai vc pode ver que o problema não é tão simples são necessárias mais informações a respeito do seu hardware e firmware para que possa ser ajudado. Conforme ja observado pelo Jonatas.

Vá em frente ...quem sabe daqui uns tempos vc também não estara ajudando a medicina ?

 

abços

Bom dia Joe,

    Li a respeito de Norbert Winer, e realmente ele enfrentou grandes desafios, mas vamos levar em conta que, a época era outra, e também que as tecnologias eram, de certa forma, precárias.

    Me agrada muito a ideia de ajudar a medicina, quem sabe eu de fato possa ajudar a humanidade.

    Muito obrigado por me responder e proporcionar o enriquecimento dos meus conhecimentos.

    Um grande abraço.

Olá Moacir, vou tentar ajudar, mas não estou bem certo...

eu dei uma brincada com servo (aquele miniservo 9g azul) e acelerômetro.

Considerando que vc está falando deste também, diria alguns detalhes:

o acelerômetro tem uma variação de leitura, como seu delay é pequeno o servo fica procurando compensar isso o tempo todo, se aumentar o delay, diminui a precisão mas para de tremer (não sei se é o caso);

Tb vi que na função map, vc esta posicionando o servo entre 320 e 400, os servos que eu conheço, trabalham de 0 a 180graus (<servo.h>). Se vc está usando outro servo que se aplica, desconsidere... 

tb já ouvi que para acelerometros o pessoal utiliza filtros de ruídos como filtro de Kalman, para minimizar isso. 

Espero ter ajudado, e boa sorte e se aprender mais, posta ai para eu aprender mais!

 

Bom dia Ricardo,

   Eu aumentei o delay, porem a perda velocidade de resposta é muito grande, e mesmo assim ele treme, menos, mas treme.

    Os 320 e 400 são os dados enviados pelo acelerômetro.

    Estou com dificuldades quanto a implementação do filtro de Kalman, não conheço nada a respeito, se vc puder me ajudar eu ficaria imensamente grato.

   Muito obrigado, um grande abraço.

Provavelmente é ruído. Qual hardware você está utilizando? Tem algum filtro anti-aliasing? Uma resposta rápida que provavelmente irá funcionar. Faça uma média móvel com algumas amostras e avalie seu sinal. Veja em quais bits o ruído está presente e elimine-os do seu valor calculado. O valor final deve ser bem mais estável.

Abraços

Bom dia Luis,

    Estou utilizando um arduino mega 2560, um servo CS 60 Standard e um acelerometro MMA 7361.

    Eu já percebi que um filtro é a melhor solução para meu problema, porem estou com muita dificuldade nisso, você poderia me dar uma luz?

   Muito obrigado, um grande abraço.

O certo ai seria usar um PID pra corrigir a posição. 

Segue ai um exemplo que fiz, utilizando 2 servo motor e 1 acelerometro MMA7361L

http://labdegaragem.com/forum/topics/acelerometro-mma7361l-servo-motor

Espero que ajude..

RESOLVIDO! Pessoal, muito obrigado pela disposição de todos em me ajudar. Resolvi mudando a alimentação. Implementei uma fonte externa para alimentar o servo. Está muito estavel agora.

   Um grande abraço a todos!

 

Valeu..é quase sempre assim, a solução é mais simples do que aparenta o problema. Desnutrição tb da tremedeira,  rsrsrs !

abços

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço