Pesquisar

Como Usar o Micro Servo Contínuo SG90/MG90

Neste tutorial, mostraremos como usar o micro servo contínuo e como controlá-lo usando um Arduino Uno.  Trazemos como exemplos os modelos SG90, MG90 e MG995. Para comprar esses produtos em nossa loja, 

SG90: clique aqui;

MG90S: clique aqui;

MG995: clique aqui.

Sumário

Informações gerais

Os servo motores contínuos, são uma versão modificada dos servo motores de 180 graus que podem girar continuamente.  Ao contrário dos servos tradicionais que têm limite de rotação de 0° a 180°, os dispositivos de rotação contínua não tem um controle preciso da posição angular e tem total liberdade de movimento.

Modelos

Servo motor 9g SG90s (360°)

Figura 1 - Servo Motor SG90

Especificações Técnicas:

  • Modelo:  9g SG90;
  • Posição: 360°; 
  • Tensão de operação: 3.0 à 7.2V
  • Peso: 9g
  • Velocidade: 0.1s/60graus
  • Torque: 1.2kg.cm (4.8V), 1.7kg.cm (6.0V)
  • Temperatura de operação: -30 a 60ºC
  • Tipo de engrenagem: Fibra de vidro
  • Braços e parafusos incluídos;
  • Tamanho: 22 x 11.5 x 27mm.

 

Servo Motor Mg90s (360°)

Figura 2 - Servo Motor MG90S

Especificações Técnicas:

  • Modelo: MG90S;
  • Posição: 360°;
  • Tensão de operação: 4.8 a 6V;
  • Peso: 13.4g;
  • Velocidade: 60° em 0.10s (4.8V sem carga no eixo);
  • Torque: 1,8 Kg/cm (4,8V) e 2,2 Kg/cm (6V);
  • Temperatura de operação:  ;
  • Tipo de engrenagem: metálica;
  • Dimensão: 35,5 x 32,5 x 12mm.

 

Servo Motor Mg995 Metal (360°)

Figura 3 - Servo Motor MG995

Especificações Técnicas:

  • Modelo: MG995;
  • Posição: 360°;
  • Tensão de operação: 500 mA – 900 mA (6V);
  • Peso: 69g;
  • Velocidade: 0.20seg/60 graus (4.8V), 0.16seg/60 graus (6.0V);
  • Torque: 8.5 kg/cm (4,8V)
    e 11 kg/cm (6V)
  • Temperatura de operação: 0 ~ 55ºC;
  • Tipo de engrenagem: metálica;
  • Dimensão: 40 x 19 x 43 mm.

 

Diferença entre o servo tradicional e o contínuo

Figura 4 - Sistema servo motor

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°.

Figura 5 - Sinal de controle e posição do angular do servo motor

Já para o controle do servo contínuo(360°) o controle também é feito através do comprimento de onda enviado. No entanto não é a possível controlar a posição dele, apenas o sentido de rotação e velocidade. Para ondas de 1,5ms a posição será mantida, para ondas menores que essa até 1ms seu giro será anti-horária acelerando à medida que se aproxima de 1ms. Já para comprimentos maiores que 1,5 até 2ms seu giro será horário e mais rápido à medida que se aproxima dos 2ms.

1ms ≤ Rotação Sentido anti-horário < 1,5ms
Motor parado = 1,5ms
1,5ms < Rotação Sentido horário ≤ 2ms

Conexão do micro servo com o Arduino

Para conectar o servo ao arduino, faça a ligação como na Figura 6.

  1. O fio laranja do servo motor é o pino do sinal PWM e deve ser conectado ao pino digital 3;
  2. O fio do meio (vermelho), é o pino de alimentação e deve ser conectado ao 5V;
  3. O fio marrom é o pino do terra e deve ser conectado na porta GND.

É 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.

Figura 6 - Conexão Servo motor

Instalando a IDE

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.

  1. Vá até o site oficial de download da IDE do Arduino clicando aqui;
  2. Escolha o seu sistema operacional como mostrado na imagem abaixo e clique para efetuar o download;

Caso seu Sistema Operacional não apareça, tente as opções do IDE Legacy.

  1.  Após baixado, prossiga com a instalação. Em caso de dificuldade, assista o vídeo abaixo.

Programando o Arduino

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.

  1. Utilize a biblioteca “Servo.h” que implementa as funcionalidades de um servo motor tornando sua aplicação mais simples. Esta biblioteca já se encontra instalada no Arduino IDE. Na barra de ferramentas vá para: Sketch > Incluir biblioteca > Servo;
  1. Ao selecionar a opção da biblioteca “Servo”, o comando #include <Servo.h> aparecerá no editor de texto.
				
					#include <Servo.h> //Inclui a biblioteca

				
			
  1. Após isso deve-se declarar o servo e criar a variável responsável pelo armazenamento do ângulo. Lembre-se de que o ângulo para o servo contínuo se trata do sentido de giro e velocidade apenas. Não sendo possível controlar a posição.
    • Ângulos>90 representam um sentido horário de rotação com velocidade máxima em 180;
    • Ângulos<90 representam um sentido anti-horário de rotação com velocidade máxima em 0;
    • Ângulo=90 representa um estado imóvel.
				
					Servo servo; //Declara a existência de um servo
int angulo = 0; //Cria uma variável para armazenar o angulo do servo
				
			
  1. Em void setup (), declare as conexões entre os fios do servo e as portas que serão utilizadas, para isso usamos a função attach (pino digital)Nesse exemplo, o fio laranja, de controle do servo (PWM) será conectado ao pino digital 3 do Arduino.
				
					void setup(){
	servo.attach(3); //Anexa o servo à porta 3
}
				
			
  1. No loop, deverão ser criados dois laços de repetição usando o comando for: um para controlar a velocidade do servo motor de 90º a 180º e um segundo para fazer o processo inverso, ou seja, do 90º a 0°. Quando o micro servo retorna a posição inicial (90°), ele fica parado 1 segundo “delay (1000)”.
				
					void loop(){
	//Loop que aumenta gradualmente a velocidade no sentido horário
	for(angulo = 90; angulo<180; angulo++){
		//Define a velocidade e sentido do giro
		servo.write(angulo);
		//Um delay pra tornar o experimento mais observável
		delay(50);
	}
	//Adiciona uma pausa entre os giros
	servo.write(90);
	delay(1000);
	//Mesmo bloco de código para aumentar a velocidade de giro gradualmente,
	//porém no sentido anti-horário
	for(angulo = 90; angulo>0; angulo--){
		servo.write(angulo);
		delay(50);
	}
	//Adiciona uma pausa entre os giros
	servo.write(90);
	delay(1000);
}
				
			
  1. O código final desse projeto terá a seguinte estrutura:
				
					#include <Servo.h> //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 a velocidade no sentido horário
	for(angulo = 90; angulo<180; angulo++){
		//Define a velocidade e sentido do giro
		servo.write(angulo);
		//Um delay pra tornar o experimento mais observável
		delay(50);
	}
	//Adiciona uma pausa entre os giros
	servo.write(90);
	delay(1000);
	//Mesmo bloco de código para aumentar a velocidade de giro gradualmente,
	//porém no sentido anti-horário
	for(angulo = 90; angulo>0; angulo--){
		servo.write(angulo);
		delay(50);
	}
}
				
			

Conclusão

Os servos contínuos são amplamente utilizados em esteiras e sistemas de movimentação que exigem rotação constante e controlada. Suas principais vantagens incluem o controle preciso de velocidade e direção, facilidade de programação e custo acessível. Por outro lado, apresentam desvantagens como a ausência de feedback de posição, torque limitado comparado a motores e consumo energético relativamente alto em operação contínua. 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 ou precisão posicional.