Pesquisar

Micro Servo Motor SG90/MG90 180°

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;

Sumário

Informações gerais

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.

Modelos

Servo motor 9g SG90

Figura 1 - Servo Motor SG90

Especificações Técnicas:

  • Modelo:  9g SG90;
  • Posição: 180°; 
  • 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

Figura 2 - Servo Motor MG90S

Especificações Técnicas:

  • Modelo: MG90S;
  • Posição: 180°;
  • 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

Figura 3 - Servo Motor MG995

Especificações Técnicas:

  • Modelo: MG995;
  • Posição: 120°;
  • 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.

Funcionamento do Micro Servo Motor

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

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

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.
				
					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 será conectado ao pino digital 3 do Arduino.
				
					void setup(){
	servo.attach(3); //Anexa o servo à porta 3
}
				
			
  1. No loop, serão criados dois laços de repetição usando o comando for: um para aumentar o ângulo do servo motor de 90º a 180º e um segundo para fazer o processo inverso, do 90º a 0°. Entre os loops é adicionado uma pausa e um comando para que ele volta aos 90°.
				
					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);
}
				
			
  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 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);
}
				
			

Conclusão

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.