Você já utilizou algum servomotor que a velocidade era rápida de mais para o projeto?
Precisava controlar velocidade servo motor Arduino .. Se não precisou ainda, com certeza vai precisar futuramente.
Aprendendo usar a biblioteca VarSpeedServo, o que é muito fácil.
Nunca mais você vai ter problema com controle de velocidade de um servomotor.
Neste artigo vamos falar sobre como controlar a velocidade do servo motor utilizando a biblioteca VarSpeedServo, em um passo a passo detalhado.
Em seguida, vou mostrar também um projetinho de um braço mecânico Arduino utilizando esta biblioteca da mesma forma.
Sumário
Controlar servo motor com Arduino
Os servos motores são atuadores utilizados onde é necessário ter um controle de movimento, com posicionamento de alta precisão e reversão. São amplamente usados em projetos robóticos, máquinas CNC, sistemas automatizados, aeromodelismo, entre outros.
Os servos CC (corrente contínua) são formados basicamente por um pequeno motor CC, um potenciômetro interno como sensor de posição, uma caixa de engrenagens para alteração do torque e um circuito eletrônico para o acionamento.
Mas, então, como controlar?
Vamos utilizar as portas PWM (modulação por largura de pulso ) do Arduino para fazer este controle.
Controlar velocidade servo motor Arduino
Para controlar velocidade servo motor Arduino, o que mais irá diminuir seu trabalho é a biblioteca VarSpeedServo, pois com a biblioteca convencional Servo, teríamos que fazer um código maior para ter o mesmo efeito.
Então, vamos a montagem e programação?
Lista de materiais
- Arduino ( pode ser qualquer um, utilizei o uno no exemplo)
- Servo Motor
- Jumpers
Esquema de montagem
Será necessário fazer o Download da biblioteca VarSpeedServo
Clique aqui para download
Para Incluir a biblioteca basta ir em Sketch>Incluir biblioteca> Adicionar biblioteca .ZIP e posteriormente selecionar o arquivo que você acabou de baixar.
Vamos a programação, leia todos os comentários para poder entender o código desta biblioteca.
Servo motor Arduino código
// controlar velocidade servo motor Arduino
// Luan Alves - www.guiarobotica.com
#include <VarSpeedServo.h> // inclusão da bibliotecaa
VarSpeedServo servo;// criando objeto apartir da biblioteca
void setup() {
servo.attach(3); // pino PWM onde está conectaado o servo
}
void loop() {
//A velocidade varia de 0 a 255 onde 0 é parado e 255 maximo
servo.slowmove(90, 10); //posição, velocidade
delay (3000);// tempo de espera
servo.slowmove(0, 100);//posição, velocidade
delay (1000); // tempo de espera
servo.write(180);//posição com velocidade maxima
delay (1000);// tempo de espera
}
Desse modo, o servo motor vai variar sua velocidade 3 vezes.
servo.slowmove(90,10); Posição 90 com velocidade 10
servo.slowmove(0, 100); Posição 0 com velocidade 100
servo.write(180); Observe que este é diferente, foi utilizado .write e sem colocar a velocidade, ficando assim com velocidade total.
Por fim, basta você adaptar este código ao seu projeto.
Braço mecânico Arduino, exemplo de utilização
Vou mostrar aqui esta mesma ligação e programação com a biblioteca VarSpeedServo, para um braço mecânico Arduino.
Só para exemplificar a utilização.
As peças foram feitas em uma Impressora 3D, portanto, facilitou muito o projeto rs,
Esquema de Montagem:
Eu utilizei uma fonte externa de PC alimentação de 5V.
E um sensor de Obstáculo para que logo após que o sensor detectar um objeto, empurrar ele.
Com a biblioteca adicionada segue a programação que foi usada neste projeto
Lembrando que a programação para o seu pode variar conforme sua montagem, vc deve testar a angulação de cada servo no seu braço robótico.
// Braco mecanico com Arduino
// Luan Alves - www.guiarobotica.com
#include <VarSpeedServo.h> // inclusão de biblioteca
VarSpeedServo motora; //cria objeto apartir da biblioteca
VarSpeedServo motorb;
VarSpeedServo motorc;
const int sensor = 4; //sensor para detectar objeto
int estadosensor = 0; //variavel de controle
void setup() {
motora.attach(3); //motorA pino 3
motorb.attach(5); //motorB pino 5
motorc.attach(6); //motorC pino 6
pinMode(sensor, INPUT); // declara o sensor como entrada
}
void loop() {
//atribui o valor do sensor a variavel estadosensor
estadosensor = digitalRead(sensor);
if (estadosensor == LOW) { // se objeto estiver na frente
//retira objeto
delay (1000); //espera de 1 segundo
motorc.slowmove(80, 50); //posição , velocidade motorC
motorb.slowmove(120, 50); //posição , velocidade motorB
delay (1000); //espera 500 milissegundo
motora.slowmove(120, 150); //posição , velocidade motorA
delay (500); //espera 500 milissegundo
}
else { //se não detectar objeto fique ou volte nesta posição
motora.slowmove(60, 50); //posição, velocidade MotorA
delay (1000); //espera de 1 segundo
motorb.slowmove(100, 50); //posição, velocidade MotorB
motorc.slowmove(160, 50); //posição, velocidade MotorC
}
}
Estou utilizando apenas 3 servos motores neste exemplo.
Explicando a programação
Se nenhum objeto for detectado o servo motores ficarão parados nas posições motorA 60°, MotorB 100° e motorC 160°.
Quando o sensor de obstáculo detectar um objeto, o motorC vai para 80° e o motorB para 120° com velocidade 50, esperar 1 segundo e depois o motorA irá para 120° com velocidade 150, assim empurrando o objeto.
Então, com essa montagem, fica assim o braço mecânico Arduino.
Conclução
Controlar servo motor com Arduino
É utilizado as Portas PWM (modulação por largura de pulso ) do Arduino para fazer o controle de angulação do servo motor.
Controlar velocidade servo motor Arduino
Um modo simples de controlar a velocidade do servo, é a utilização da biblioteca VarSpeedServo.
Braço mecânico Arduino
Nesse projeto que eu mostrei, foi utilizado 4 servos motores necessitando de alimentação externa para poder funcionar e um sensor de obstáculo para detectar um objeto e executar um conjunto de ação baseado nisso.
Então é isso..
Para mais dicas e projetos acesse o blog do meu parceiro Lobo da Robótica.
Compartilhe esse material com seus amigos e…
Bons projetos.
Link permanente