Ola, comprei meu servo motor a pouco tempo e quando fui testa-lo ela só ta fazendo +ou- 0° a 100°! e quando ele ultrapassa esse limite, ele fica emitimo um som que parece que as engrenagens estão se forçando! Alguém pode me explicar oque está acontecendo. (servo motor - tower pro, micro servo 9g, sg90)
em anexo o video e a programação
#include <Servo.h>
#define SERVO 6 // Porta Digital 6 PWM
Servo s;
// Variável Servo
int
pos;
// Posição Servo
void
setup ()
{
s.attach(SERVO);
Serial.begin(9600);
s.write(0);
// Inicia motor posição zero
}
void
loop()
{
for
(pos = 0; pos < 90; pos++)
{
s.write(pos);
delay(15);
}
delay(1000);
for
(pos = 90; pos < 0; pos--)
{
s.write(pos);
delay(15);
}
}
Tags:
Veja se é isso:
No segundo for troque "pos < 0" por "pos > 0"
Eu costumo usar sempre na verdade "!=" diferente, que é um vicio de quem compila pra 8051. O 8051 tem o comando CJNE em assembler, que facilita a compilação nesse modo. Quando vc usa maior ou menor ele faz umas tretas com os flags e tal, mas só por curiosidade. Hoje em dia não existem mais essas preocupações.
Olá Diogo. ^^
Antes de pensar no problema do ângulo indo de 0º à 100º apenas (que pode estar relacionado com o barulho), nos testes que já fiz em diversos servos, descobri que eles não possuem uma resposta "tão linear" quanto deveriam. Mesmo pegando servos do mesmo código e lote, eles possuem respostas de funcionamento diferentes. Talvez pela baixa qualidade de alguns componentes, ou forma de montagem. Enfim, existem diferenças, e elas são vistas quanto à diferença entre o comando de posição que você dá, e a posição real que o servo executa.
Apenas para compreensão, segue uma figura:
Vemos que a largura de pulsos é quem determina a posição do servo. E quem gera a largura de pulsos é a sua biblioteca que atua sobre um PWM. E a biblioteca recebe valores de 0 a 180 respectivos ao ângulo de funcionamento.
Mas, como disse a resposta não é linear(deveriam ser) entre os servos, então como no exemplo, a largura de 1ms pode não corresponder à 0º , e nem a de 2ms pode ser de 180º.
Fiz testes com geradores de funções, e encontrei servos que funcionam com 0.4ms para 0º e 1.6ms para 180º. Assim como bibliotecas que não era possível usar valores abaixo de 10º e 180º por exemplo, pois eles forneciam uma largura de pulso "fora" do que o servo estava atuando.
Solução rápida: "Criar uma calibração para o servo." Seja ajustando a largura mínima e máxima para os ângulos que os servos atuam.
Se você tiver um osciloscópio, e um gerador de funções, poderá identificar os valores correspondentes para controle do seu servo.
Voltando ao barulho, realmente ocorre quando o servo está sendo "forçado". Isso é devido à resposta da posição e das "travas internas" dele.
Segue a figura do funcionamento:
Nessa figura percebe-se que as engrenagens estão "amarradas" ao potênciometro, que por sua vez é responsável por "dizer" qual a posição do servo. Ok, lembrando do que falei sobre existir diferenças e nem todo servo para em 180º com 2ms, e que você pode ter um modelo que para com 1.6ms em 180º. O que aconteceria se você colocasse 2ms? Ele iria querer "passar" os 180º. Mas, internamente ele possui uma trava que limita o movimento das engrenagens em 180º. Logo, ele fica a todo momento tentando passar os 180º e dai surge o barulho do movimento forçado.
Soluções:
1) Ajustar o PWM da biblioteca. Seja com offset, calibração ou ajustes.
2) Desmontar o motor e verificar se o potênciometro está na posição correta.
Para isto deve-se colocar o potênciometro na posição central, e o eixo do servo em 90º.
Segue foto do servo desmontado:
Caso desmonte, faça com cuidado para não peder nenhuma peça, que podem ser bem pequenas.
O barulho está explicado, agora o movimento de 0º a 100º é estranho.
Eu começaria pelo software. Tente fazer um PWM na mão, alterando a largura de pulso desde uns 0.2ms até uns 2.4ms. E veja se o servo consegue executar todo o movimento até 180º. Se não der certo, só penso que o potênciometro interno está fora de posição. Então terá que realmente abrir o seu servo.
Verifique a alimentação também. Tem alguns tópicos aqui no fórum que disseram ter problemas com as fontes.
No mais, espero que seja mais fácil que tudo isto. ^^
Espero ter ajudado. Fico no aguardo por novidades.
T++.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por