Como Usar o Micro Servo Motor SG90/MG90 de rotação contínua (360°)

Neste tutorial, mostraremos como usar os servos motores de rotação contínua 360° e como controlá-los usando um Arduino Uno.  Trazemos como exemplos os modelos SG90, MG90 e MG995. Para comprar esses produtos em nossa loja, clique aqui. Veja mais informações dos produtos.

Informações gerais

Os servo motores de 360 graus de rotação contínua, 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.

Modelos

Servo motor 9g SG90s (360°)

Figura 1 - Servo Motor SG90

Servo Motor Mg90s (360°)

Figura 2 - Servo Motor MG90S

Servo Motor Mg995 Metal (360°)

Figura 3 - Servo Motor MG995

Especificações técnicas:

SG90

  • 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;

MG90

  • 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;

M995

  • Modelo: MG995;
  • Posição: 360°;
  • Tensão de operação: 500 mA – 900 mA (6V);
  • Peso: ;
  • 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:

Diferença entre o servo motor tradicional (180°) e o de rotação contínua (360°)

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 eles terem limitadores físicos que é permitido o giro apenas em 180°. Já os modelso de 360°, não contém esse limitador físico. O controle da posição nos modelos SG90, MG90 e MG995 é feito através da largura de pulso de um sinal de onda quadrada de 50Hz. Essa largura de pulso é a duração da onda que varia entre 1 e 2ms. Com isso, se um pulso de 1ms for enviado para o motor, a posição do seu eixo será movida para 0° definida pelo sistema do motor. Caso a largura de pulso for de 1,5ms, o motor irá girar para sua posição de 90° e manterá o ângulo até que a largura de pulso seja alterada. Se a largura do pulso for 2ms, a nova posição será de 180°. A imagem abaixo ilustra o sinal enviado para o motor e sua respectiva posição para os modelos citados.

Figura 4 - Sistema servo motor

O controle da posição nos modelos SG90, MG90 e MG995 é feito através da largura de pulso de um sinal de onda quadrada de 50Hz. Essa largura de pulso é a duração da onda que varia entre 1 e 2ms. Com isso, se um pulso de 1ms for enviado para o motor, a posição do seu eixo será movida para 0° definida pelo sistema do motor. Caso a largura de pulso for de 1,5ms, o motor irá girar para sua posição de 90° e manterá o ângulo até que a largura de pulso seja alterada. Se a largura do pulso for 2ms, a nova posição será de 180°. A imagem abaixo ilustra o sinal enviado para o motor e sua respectiva posição para os modelos citados.

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

Os servos de rotação contínua, por outro lado, não fornecem controle de posição angular por não possuirem o encoder do tipo potenciômetro. O controle desses modelos modificados são também por sinais com variação na largura de pulso entre 1 e 2ms. 

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

Como usar o micro servo motor de rotação contínua com o Arduino

Passo 1: Conexão do micro servo com a placa Arduino

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

  • O fio laranja do servo motor é o pino do sinal PWM e deve ser conectado ao pino digital 2;
  • O fio do meio (vermelho), é o pino de alimentação e deve ser conectado ao 5V;
  • 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.

Passo 2: Instalação da IDE do Arduino

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;

Passo 3: Elaborando o código

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:

  • Ângulos entre 90 e 125 graus executam movimentos com velocidade normal, no intervalo de 125 a 180° a velocidades diminui;
  • O ângulo de 90 graus determina um momento de parada para o Servo Motor.
  • Ângulos entre 90 e 65 graus executam movimentos com velocidade normal, no intervalo de 65 a 0 graus a velocidades diminui;

 

Para isto, vamos utilizar 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 e você pode encontra-la por meio do seguinte caminho na barra de ferramentas: Sketch > Incluir biblioteca > Servo.

Ao selecionar a opção da biblioteca “Servo”, o comando #include <Servo.h> aparecerá no editor de texto. 

				
					#include<Servo.h>
				
			

Em void setup (), vamos declarar 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 2 do Arduino.

				
					void setup(){
    servo.attach(2); //declara pino digital utilizado
}
				
			

No loop, deverá ser criado dois laços de repetição usando o comando for: um para controlar a velocidade do servo motor de 125º a 180º e um segundo para fazer o processo inverso, ou seja, do 65º a 0°. Quando o micro servo retorna a posição inicial (90°), ele fica parado 1 segundo “delay (1000)”. Note que no intervalo de 65° a 125° a velocidade do servo é normal.

				
					void loop(){  
    for (angulo = 125;angulo <= 180; angulo++){
        //manda comando pro servo
        servo.write(angulo);
        //intervalo de execução
        delay(100);                            
    }
    servo.write(90);   // Ponto de parada
    delay(1000); 
	for (angulo = 65; angulo >= 0; angulo--){
        servo.write(angulo);
        delay(100);
    }
}
				
			

O código final desse projeto terá a seguinte estrutura:

				
					#include <Servo.h>
Servo servo; // cria o objeto servo
int angulo = 0; // declara origem do angulo como 0°
void setup(){
    servo.attach(2); //declara pino digital utilizado
}
void loop(){  
    for (angulo = 125;angulo <= 180; angulo++){
        //manda comando pro servo
        servo.write(angulo);
        //intervalo de execução
        delay(100);              
    }
    servo.write(90);   //Ponto de parada
    delay(1000); 
	for (angulo = 65; angulo >= 0; angulo--){
        servo.write(angulo);
        delay(100);
    }
}
				
			

ROBOBUILDERS IMPORTACAO E COMERCIO DE PRODUTOS DE SISTEMAS E AUTOMACAO - CNPJ: 27.338.195/0001-30 © Todos os direitos reservados. 2022