Neste tutorial, mostraremos como usar o micro servo motor e como controlá-lo usando um Arduino Uno. Trazemos como exemplos os modelos SG90 e MG90. Para comprar esses produtos em nossa loja,
SG90: clique aqui;
MG90S: clique aqui;
MG995: clique aqui;
O micro servo é um atuador eletromecânico cuja posição você pode controlar com sinal proporcional. Normalmente utilizado como juntas mecânicas para braços robóticos, direção de veículos, cancelas, portões, rampas entre outros.
Os motores do tipo servo motor são sistemas que contém um encoder acoplado, do tipo potenciômetro, e uma unidade de controle que permitem o controle preciso da rotação (Figura 4). Os modelos de 180° são assim conhecidos por terem limitadores físicos que permitem o giro apenas em 180°. Seu controle se dá através do envio de pulsos com comprimentos de onda que vão de 1ms para 0° até 2ms para 180°. Por isso seu controle deve ser feito em portas PWM (Pulse Width Modulation), essas são especializadas para controlar o comprimento das ondas enviadas pelo arduino.
Para conectar o servo ao arduino, faça a ligação como na Figura 6.
É recomendado usar uma fonte 5V externa para alimentação do servo motor para que não danifique a sua placa Arduino caso tenha um pico de corrente acima do limite (1A) em caso de travamento no eixo. Para fins didáticos, podemos usar os pinos 5V e GND da placa.
O primeiro passo para começar a usar o servo motor com a placa Arduino é instalar a IDE (integrated development environment) no seu computador. Caso já tenha a IDE do Arduino Instalada, pule para o próximo tópico.
Caso seu Sistema Operacional não apareça, tente as opções do IDE Legacy.
Após a montagem e verificação do circuito elétrico do projeto, vamos a programação. Este projeto visa comandar o servo motor de maneira que o eixo do servo execute movimentos com diferentes velocidades.
#include //Inclui a biblioteca
Servo servo; //Declara a existência de um servo
int angulo = 0; //Cria uma variável para armazenar o angulo do servo
void setup(){
servo.attach(3); //Anexa o servo à porta 3
}
void loop(){
//Loop que aumenta gradualmente o ângulo do servo em 15 graus por passo
for(angulo = 90; angulo<180; angulo+=15){
//Define a posição do servo
servo.write(angulo);
//Um delay pra tornar o experimento mais observável
delay(500);
}
//Adiciona uma pausa entre os giros e volta ele para a posição inicial
servo.write(90);
delay(1000);
//Mesmo bloco de código para aumentar o ângulo gradualmente, mas agora o diminuindo
for(angulo = 90; angulo>0; angulo-=15){
servo.write(angulo);
delay(500);
}
//Adiciona uma pausa entre os giros
servo.write(90);
delay(1000);
}
#include //Inclui a biblioteca
Servo servo; //Declara a existência de um servo
int angulo = 0; //Cria uma variável para armazenar o angulo do servo
void setup(){
servo.attach(3); //Anexa o servo à porta 3
}
void loop(){
//Loop que aumenta gradualmente o ângulo do servo em 15 graus por passo
for(angulo = 90; angulo<180; angulo+=15){
//Define a posição do servo
servo.write(angulo);
//Um delay pra tornar o experimento mais observável
delay(500);
}
//Adiciona uma pausa entre os giros e volta ele para a posição inicial
servo.write(90);
delay(1000);
//Mesmo bloco de código para aumentar o ângulo gradualmente, mas agora o diminuindo
for(angulo = 90; angulo>0; angulo-=15){
servo.write(angulo);
delay(500);
}
//Adiciona uma pausa entre os giros
servo.write(90);
delay(1000);
}
Os micro servos motores são amplamente utilizados em braços, portas e direção, que exigem controle posicional com precisão. Suas principais vantagens incluem o controle preciso da posição, facilidade de programação e custo acessível. Por outro lado, apresentam desvantagens como a ausência de controle sobre a velocidade, limitação de movimento e torque limitado comparado a motores. Essa combinação de características os torna ideais para projetos educacionais e protótipos, mas menos adequados para aplicações industriais que demandam alta potência.