Publicado 2026-04-07
Este guia fornece tudo que você precisa para controlar com precisão o ângulo de rotação de um micro padrãoservousando um microcontrolador. O princípio fundamental é simples: oservoA posição do eixo de saída é determinada pela largura de um sinal de pulso. Para os micro mais comunsservos, uma largura de pulso de 1,5 milissegundos (ms) centraliza o eixo em 90°, 1,0 ms move-o para 0° e 2,0 ms move-o para 180°. No entanto, os servos do mundo real variam. Este artigo fornece métodos verificados, exemplos de código e etapas de calibração para obter um controle preciso grau por grau, sem depender de nenhuma marca específica.
UMMicro Servocontém um pequeno motor DC, um potenciômetro de feedback e um circuito de controle. O circuito compara a largura do pulso de entrada com a posição do potenciômetro. Quando a largura do pulso corresponde à posição desejada, o motor para. A relação entre a largura e o ângulo do pulso é linear dentro dos limites mecânicos do servo.
Especificações de sinal padrão:
Taxa de repetição de pulso:50 Hz (período = 20 ms)
Faixa de largura de pulso utilizável:Normalmente 1,0 ms a 2,0 ms
Faixa de ângulo correspondente:0° a 180°
Isto significa que o servo espera um pulso a cada 20 ms. Ao alterar a largura do pulso de 1,0 ms para 2,0 ms, você comanda o eixo de 0° a 180°.
Você compra doisMicro Servos do mesmo lote. Um centraliza perfeitamente em 90° quando você envia um pulso de 1,5 ms. O outro para em 85°. Isto acontece devido às tolerâncias de fabricação no potenciômetro de realimentação e na montagem mecânica. Portanto, sempre calibre cada servo individualmente.
A maioria das plataformas de microcontroladores fornece uma biblioteca servo integrada que gera pulsos estáveis de 50 Hz. Abaixo está um exemplo de código genérico que funciona com qualquer microcontrolador que suporte saída PWM e bibliotecas de controle de servo.
Conecte o fio de alimentação do servo (vermelho) a uma fonte de 5 V capaz de fornecer pelo menos 500 mA.
Conecte o fio terra (marrom ou preto) ao GND do microcontrolador.
Conecte o fio de sinal (laranja, amarelo ou branco) a um pino compatível com PWM (por exemplo, pino 9).
#incluirServo meuServo; void setup() { meuServo.attach(9); // Anexa o servo no pino 9 } void loop() { myServo.write(0); // Comando 0 graus delay(1000); meuServo.write(90); // Comando 90 graus delay(1000); meuServo.write(180); // Comando 180 graus delay(1000); }
Oescrever (ângulo)A função converte automaticamente o ângulo para a largura de pulso correspondente usando o mapeamento padrão (0°→1,0 ms, 180°→2,0 ms). No entanto, este padrão pode não corresponder ao seu servo específico.
Para obter ângulos precisos, você deve determinar as larguras exatas de pulso que produzem 0° e 180° em SEU servo.
1. Anexe um ponteiro ou marque a posição neutra do eixo.
![]()
2. Envie um pulso de 1,5 ms. O eixo deve estar próximo de 90°. Observe qualquer deslocamento.
3. Diminua a largura do pulso em passos de 10 µs até que o eixo pare de se mover. Essa é a sua verdadeira largura de pulso de 0°.
4. Aumente a largura do pulso de 1,5 ms em passos de 10 µs até que o eixo pare de se mover. Essa é a sua verdadeira largura de pulso de 180°.
Resultados medidos típicos de três servos comuns:
Esses valores mostram que assumir 1000 µs a 2000 µs pode causar erros de até 15°. Sempre use valores calibrados.
A maioria das bibliotecas de servo permitem definir faixas de largura de pulso personalizadas usando umanexar()sobrecarga ou uma função separada. Exemplo:
meuServo.attach(9, 540, 2420); // Pino, largura mínima de pulso (µs), largura máxima de pulso (µs)
Depois de anexar com limites calibrados,meuServo.write(90)enviará o pulso central exato (1480 µs neste caso), fornecendo 90° verdadeiros.
Passo 1: Sempre calibre cada servo individualmente– Não assuma as especificações de fábrica. Gaste 5 minutos medindo as verdadeiras larguras de pulso de 0° e 180°.
Etapa 2: use uma fonte de alimentação dedicada– Não alimente micro servos diretamente do pino 5V do microcontrolador. Um consumo repentino de corrente pode reiniciar o controlador. Use um UBEC 5V 1A ou uma fonte externa regulada.
Etapa 3: armazene os valores de calibração em seu código– Após a calibração, codifique as larguras de pulso mínima e máxima. Exemplo:
#define SERVO_PIN 9 #define SERVO_0_PULSE 540 // µs medidos para 0° #define SERVO_180_PULSE 2420 // µs medidos para 180° Servo myServo; meuServo.attach(SERVO_PIN, SERVO_0_PULSE, SERVO_180_PULSE);
Etapa 4: verifique com um teste simples– Comando 0°, 45°, 90°, 135°, 180°. Use um transferidor para verificar a precisão. Se algum ângulo estiver errado em mais de 2°, repita a calibração.
Etapa 5: documente suas configurações– Anote as larguras de pulso calibradas para cada servo. Ao substituir um servo, recalibre imediatamente.
O ângulo do micro servo é controlado diretamente pela largura do pulso. O mapeamento padrão (1,0 ms = 0°, 1,5 ms = 90°, 2,0 ms = 180°) é um ponto de partida. Servos reais requerem calibração individual de larguras de pulso mínimas e máximas para alcançar uma precisão real de 0° a 180°. Sem calibração, você poderá experimentar deslocamentos de 10° a 20°.
Seguindo o procedimento de calibração e personalizando a faixa de largura de pulso em seu código, você obterá posicionamento de servo preciso e repetível para qualquer aplicação – de braços robóticos a gimbals de câmera. Sempre teste os verdadeiros limites de cada servo e ajuste seu código de acordo. Essa prática elimina suposições e garante que seu projeto funcione sempre de maneira confiável.
Hora de atualização: 07/04/2026
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.