Micro Servo Motor SG90 e MG90: Manual Técnico Completo

Introdução
Neste manual, será apresentado como instalar, configurar e utilizar o micro servo motor SG90 e MG90 com uma placa Arduino. Se desejar adquirir este produto, clique aqui.
Especificações técnicas
Principais especificações
O micro servo motor de 9 gramas (SG90) é um dos atuadores mais populares do ecossistema maker e robótico por aliar dimensões ultracompactas, baixo consumo e facilidade de acionamento. A seguir estão detalhadas as especificações do modelo SG90 padrão:
| Parâmetro | Especificação |
|---|---|
| Modelo | TowerPro SG90 9g |
| Faixa de rotação | 180° (± 90° a partir do ponto central) |
| Tensão de operação | 3,0 V a 7,2 V DC (Recomendado: 4,8 V a 6,0 V) |
| Torque estático | 1,2 kgf·cm (em 4,8 V) / 1,6 kgf·cm a 1,7 kgf·cm (em 6,0 V) |
| Velocidade de operação | 0,12 s / 60° (em 4,8 V sem carga) / 0,10 s / 60° (em 6,0 V) |
| Tipo de engrenagem | Nylon / Fibra plástica de alta resistência |
| Frequência do sinal de controle | 50 Hz (período de 20 ms) |
| Faixa de pulso PWM | ~500 µs (0°) a ~2400 µs (180°) / padrão industrial: 1 ms a 2 ms |
| Temperatura de operação | -30 °C a +60 °C |
| Comprimento do chicote | ~245 mm com conector padrão Dupont 3 vias (passo 2,54 mm) |
| Dimensões do corpo | 32 x 30 x 12 mm |
| Peso | 9 g (motor avulso) / ~10,6 g (com braço e parafusos) |
| SKU RoboBuilders | RB0019 |
Para aplicações que demandam maior resistência mecânica contra desgaste de dentes ou maior esforço de torção, existem variações com engrenagens de metal e tamanhos superiores, como o MG90S e o MG995:
| Parâmetro | SG90 (Nylon) | MG90S (Metal) | MG995 (Metal Alto Torque) |
|---|---|---|---|
| Material das engrenagens | Plástico / Nylon | Liga metálica (latão / alumínio) | Aço / Metal sinterizado |
| Faixa de rotação | 180° | 180° | 120° / 180° |
| Tensão de trabalho | 3,0 V a 7,2 V | 4,8 V a 6,0 V | 4,8 V a 7,2 V |
| Torque (4,8 V) | 1,2 kgf·cm | 1,8 kgf·cm | 8,5 kgf·cm |
| Torque (6,0 V) | 1,6 kgf·cm | 2,2 kgf·cm | 11,0 kgf·cm |
| Velocidade (4,8 V) | 0,12 s / 60° | 0,10 s / 60° | 0,20 s / 60° |
| Peso aproximado | 9 g | 13,4 g | 69 g |
| Dimensões | 32 x 30 x 12 mm | 35,5 x 32,5 x 12 mm | 40 x 19 x 43 mm |
| Aplicação recomendada | Modelos leves, pan-tilt, garras | Articulações mecânicas com impacto | Direção de carros RC e braços pesados |
Características elétricas e operacionais
- Consumo de corrente em repouso: aproximadamente 8 mA a 15 mA quando o motor atinge a posição comandada e não há carga mecânica no eixo;
- Consumo de corrente operacional: oscila tipicamente entre 100 mA e 250 mA em movimento contínuo sem esforço excessivo;
- Corrente de pico (Stall Current): pode atingir entre 500 mA e 800 mA no SG90 (e até 1,5 A no MG90S) se o eixo for impedido mecanicamente de girar ou sofrer sobrecarga repentina;
- Sinal de modulação PWM: o controle baseia-se em um sinal periódico com taxa de atualização de 50 Hz (ciclo total de 20 ms). A largura do pulso em nível alto (HIGH) determina rigorosamente o ângulo angular do eixo:
- Pulso de 1,0 ms (ou ~544 µs calibrado): desloca o eixo para 0°;
- Pulso de 1,5 ms (ou ~1500 µs calibrado): posiciona o eixo no centro (90°);
- Pulso de 2,0 ms (ou ~2400 µs calibrado): move o eixo para 180°.
Descrição do produto
O que é o Micro Servo Motor SG90?
O micro servo motor SG90 é um atuador eletromecânico compacto que combina em um único invólucro um pequeno motor de corrente contínua (DC), um trem de engrenagens redutoras para amplificação de torque, um potenciômetro rotativo acoplado ao eixo de saída como sensor de realimentação e uma placa controladora interna integrada.
Ao contrário de motores DC convencionais — que giram continuamente em uma velocidade determinada pela tensão aplicada — o servo motor é um sistema de controle em malha fechada (closed-loop). O circuito controlador compara continuamente o sinal de pulso recebido do microcontrolador com o sinal de tensão gerado pelo potenciômetro interno, corrigindo a posição do motor instantaneamente até que o erro de posição seja nulo.
Para que serve?
- Articulações mecânicas e robótica móvel: acionamento de braços robóticos, garras de fixação, pernas de robôs quadrúpedes (como o mePed) e suportes móveis de duas coordenadas (pan-tilt) para sensores e câmeras;
- Mecanismos de automação e modelismo: controle de cancelas automáticas de estacionamento, travas elétricas, esteiras seletoras, lemes e profundores de aeromodelos e barcos rádio-controlados;
- Dispositivos educacionais e maquetes: projetos acadêmicos, mostradores mecânicos analógicos, portões de ferromodelismo e protótipos de engenharia.
Por que devo usar?
- Controle de ângulo preciso em malha fechada: o motor mantém a posição angular definida com firmeza e corrige pequenos desvios mecânicos automaticamente através do circuito de realimentação interno;
- Interface simplificada de apenas 3 fios: requer apenas uma única via de sinal digital PWM do microcontrolador e duas vias de alimentação DC, dispensando circuitos de ponte H externos complexos;
- Excelente relação peso-torque e baixo custo: oferece até 1,6 kgf·cm de torque com peso unitário de apenas 9 gramas, tornando-se o padrão mais viável economicamente para montagens didáticas e prototipagem ágil.
Quando devo usar?
O micro servo motor SG90 é recomendado para:
- Projetos que exigem posicionamento angular exato entre 0° e 180° com cargas mecânicas leves ou moderadas;
- Equipamentos onde peso, consumo reduzido e espaço físico são restrições fundamentais de projeto;
- Acionamentos controlados por placas Arduino, ESP32, Raspberry Pi Pico ou outros microcontroladores com suporte a sinais PWM.
Não é a solução indicada quando:
- A aplicação exige rotação contínua e sem fim de 360° (neste caso, deve-se optar por servos específicos de giro contínuo ou motoredutores DC convencionais);
- A carga exige torques superiores a 1,5 kgf·cm contínuos ou há fortes choques mecânicos mecânicos contra as engrenagens (neste caso, prefira o modelo metálico MG90S ou servos padrão de alto torque como o MG995).
Pinout e diagrama de entradas/saídas
O conector do micro servo motor segue o padrão Dupont fêmea de 3 vias com espaçamento padrão de 2,54 mm. A pinagem respeita o código de cores clássico dos servos para rádio-controle e automação:
| Pino / Terminal | Cor do Cabo | Tipo | Função | Conexão no Arduino |
|---|---|---|---|---|
| Sinal (PWM) | Laranja / Amarelo | Entrada Digital | Recepção do sinal de pulsos para controle do ângulo (50 Hz) | Pino Digital PWM (ex.: D3, D9, D10) |
| VCC (+) | Vermelho | Alimentação | Polo positivo de alimentação DC (4,8 V a 6,0 V) | Pino 5V do Arduino ou Positivo (+) da fonte externa |
| GND (-) | Marrom / Preto | Alimentação | Referência de potencial 0V (Terra comum) | Pino GND do Arduino e Negativo (-) da fonte |
Como fazer a ligação
Requisitos de instalação e alimentação
- Alimentação para fins didáticos: Em testes de bancada rápidos com apenas 1 micro servo SG90 sem esforço mecânico no eixo, é possível alimentá-lo temporariamente através dos pinos
5VeGNDda própria placa Arduino. - Uso com fonte de bancada ou fonte externa dedicada: Em montagens definitivas, com mais de um servo ou sempre que o motor mover pesos reais (como braços de robô e garras), é obrigatório alimentar o servo com uma fonte externa de 5 V (ou bateria de 4,8 V a 6 V) capaz de fornecer no mínimo 1 A a 2 A.
- Ponto de terra compartilhado (Common Ground): Quando uma fonte externa for utilizada, o terminal negativo (
-/GND) da fonte deve ser conectado diretamente ao pinoGNDdo Arduino. Se esse terra comum for omitido, a linha de sinal PWM fica sem referência elétrica estável, fazendo com que o servo vibre ou ignore os comandos.
Diagrama de ligação elétrica

Para complementar a visualização das ligações dos fios em protoboard com cabos jumper macho-macho, utilize o esquema ilustrado a seguir:

Tabela de conexões dos terminais
A tabela a seguir resume as interligações elétricas necessárias entre o micro servo motor SG90 e a placa Arduino Uno:
| Terminal do Micro Servo | Cor do Fio | Conexão com Arduino (Didático) | Conexão com Fonte Externa (Recomendado) |
|---|---|---|---|
| Sinal de Controle | Laranja | Pino Digital D3 (ou D9) do Arduino | Pino Digital D3 (ou D9) do Arduino |
| Alimentação Positiva (VCC) | Vermelho | Pino 5V do Arduino | Terminal Positivo (+5V) da fonte externa |
| Referência Negativa (GND) | Marrom | Pino GND do Arduino | Terminal Negativo (GND) da fonte interligado ao GND do Arduino |
Cuidados e observações de segurança
⚠️ Atenção: Nunca force manualmente o braço do servo motor com o circuito energizado. O contratorque imposto às engrenagens plásticas pode quebrar os dentes de nylon ou induzir correntes reversas perigosas na placa controladora interna.
⚠️ Atenção: Ao alimentar o motor com fontes externas, verifique a tensão máxima permitida. Tensões superiores a 7,2 V danificarão de forma irreversível o circuito lógico e o motor DC interno do SG90.
💡 Dica: Em projetos com oscilações repentinas ou múltiplos motores em movimento sincronizado, conecte um capacitor eletrolítico de 100 µF a 470 µF / 16 V em paralelo com os trilhos de alimentação (entre VCC e GND) para filtrar transientes e quedas bruscas de tensão durante o arranque.
Como usar
Guia de operação passo a passo
- Instalação da IDE do Arduino: Caso ainda não tenha o software instalado no computador, faça o download gratuito da versão mais recente na página oficial do Arduino Software e realize a instalação padrão para o seu sistema operacional.
- Biblioteca nativa Servo.h: A biblioteca padrão
Servo.hjá vem integrada à instalação oficial do Arduino. Ela gerencia os temporizadores (timers) internos do microcontrolador em segundo plano, liberando o processador de calcular manualmente os pulsos de largura modulada. - Inclusão no código: No topo do seu sketch, inclua o arquivo de cabeçalho:
#include <Servo.h> - Criação do objeto e configuração do pino: Crie uma instância do servo e vincule o pino de controle dentro da função
setup()com o comandoattach():Servo meuServo; void setup() { meuServo.attach(3); // Vincula o controle do servo ao pino digital D3 } - Comando de movimentação: No loop do programa, defina o ângulo desejado de 0 a 180 graus com
write():meuServo.write(90); // Move o braço para o ponto central (90 graus)
Modos de operação e ajustes
- Calibração de limites com
attach(pino, min, max): O comando padrãoattach(pino)adota pulsos de 544 µs (0°) e 2400 µs (180°). Se o seu servo não atingir o curso completo ou apresentar esforço forçado nos batentes mecânicos de 0° e 180°, você pode ajustar os limites exatos em microssegundos:meuServo.attach(3, 500, 2400); // Calibração fina dos limites de pulso - Controle em microssegundos (
writeMicroseconds): Para movimentos com resolução angular muito mais fina que passos inteiros de 1 grau, utilize a funçãowriteMicroseconds(valor), ondevalorvaria entre 1000 µs e 2000 µs. - Desativação temporária com
detach(): Quando o servo precisar ficar imóvel por longos períodos sem resistir a forças externas, executemeuServo.detach(). Isso desativa os pulsos no pino de controle, reduzindo o aquecimento e o consumo de corrente.
Exemplos práticos de uso
Exemplo 1: Movimento com diferentes ângulos e pausas
O código abaixo reproduz o projeto prático deste tutorial. O eixo inicia no centro (90°), sobe gradativamente até 180°, retorna para a posição inicial e executa o movimento descendente até 0°, permitindo observar com clareza o comportamento do atuador:
#include <Servo.h> // Inclui a biblioteca oficial de controle de servos
Servo servo; // Cria o objeto para controlar o micro servo motor
int angulo = 0; // Variável para armazenar a posição angular atual (em graus)
void setup() {
// Vincula o pino de controle do servo ao pino digital D3 do Arduino
servo.attach(3);
// Posiciona o servo inicialmente na marca central de 90 graus
servo.write(90);
delay(1000);
}
void loop() {
// Laço 1: Aumenta gradualmente o ângulo do servo de 90° até 180° em passos de 15°
for (angulo = 90; angulo <= 180; angulo += 15) {
servo.write(angulo); // Envia o novo ângulo para o motor
delay(500); // Pausa de 500 ms para observar cada etapa do movimento
}
// Retorna o servo para a posição de referência (90°) e aguarda 1 segundo
servo.write(90);
delay(1000);
// Laço 2: Diminui gradualmente o ângulo do servo de 90° até 0° em passos de 15°
for (angulo = 90; angulo >= 0; angulo -= 15) {
servo.write(angulo); // Envia o novo ângulo para o motor
delay(500); // Pausa de 500 ms para visualização
}
// Retorna à posição central antes de reiniciar o ciclo
servo.write(90);
delay(1000);
}
Exemplo 2: Varredura contínua suave (Sweep)
Para movimentos suaves sem interrupções bruscas de 15 graus, podemos incrementar 1 grau a cada 15 milissegundos:
#include <Servo.h>
Servo servoMotor;
int pos = 0;
void setup() {
servoMotor.attach(3); // Pino de sinal conectado ao D3
}
void loop() {
// Varredura de 0 graus até 180 graus em passos de 1 grau
for (pos = 0; pos <= 180; pos += 1) {
servoMotor.write(pos);
delay(15); // Aguarda 15 ms para que o eixo alcance a posição
}
// Retorno suave de 180 graus até 0 graus
for (pos = 180; pos >= 0; pos -= 1) {
servoMotor.write(pos);
delay(15);
}
}
Exemplo 3: Controle analógico proporcional com potenciômetro
Conectando um potenciômetro linear de 10 kΩ entre o 5V e o GND, com o terminal central ligado ao pino analógico A0, o micro servo segue fielmente a rotação do botão manual:
#include <Servo.h>
Servo servoMotor;
const int pinoPotenciometro = A0; // Pino analógico do potenciômetro
int leituraAnalogica = 0; // Armazena a leitura ADC (0 a 1023)
int anguloMapeado = 0; // Ângulo proporcional calculado (0 a 180)
void setup() {
servoMotor.attach(3);
}
void loop() {
// Lê o sinal analógico de 0 a 1023 no pino A0
leituraAnalogica = analogRead(pinoPotenciometro);
// Converte a faixa de 0-1023 para a faixa angular de 0-180 graus
anguloMapeado = map(leituraAnalogica, 0, 1023, 0, 180);
// Envia a posição mapeada para o servo motor
servoMotor.write(anguloMapeado);
// Pequeno retardo para estabilizar as leituras do conversor ADC
delay(15);
}
Conclusão
Este manual abordou de forma completa o micro servo motor SG90 e MG90, cobrindo desde suas especificações até a instalação prática e modos de operação:
- Especificações técnicas: faixas de tensão operacional (3,0 V a 7,2 V), capacidade de torque estático de até 1,7 kgf·cm, dimensões compactas de 9 gramas e comparativo com as versões com engrenagens metálicas MG90S e MG995;
- Descrição e pinout: princípio de controle em malha fechada (closed-loop) com potenciômetro de realimentação interna, decodificação de sinal PWM de 50 Hz e mapeamento dos fios pelos padrões de cores laranja, vermelho e marrom;
- Como fazer a ligação: diagrama esquemático com a placa Arduino Uno, conexão correta de fontes externas de alimentação e garantia de terra comum (common ground) para eliminação de interferências;
- Como usar: utilização da biblioteca nativa
Servo.h, métodos de calibração de limites e códigos práticos completos para varredura contínua, movimentação angular parametrizada e controle direto por potenciômetro.
Com essas informações técnicas e rotinas práticas testadas, você está preparado para integrar os micro servos SG90 e MG90 em garras, robôs móveis, mecanismos pan-tilt e projetos de automação com total estabilidade e repetibilidade posicional.
Solução de problemas
Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Micro Servo Motor SG90 e MG90: Manual Técnico Completo e eu ajudarei a encontrar a solução.
O assistente usa IA e pode errar. Confirme informações críticas no datasheet oficial do fabricante.