Publicado 2026-04-21
Este guia fornece uma explicação completa e prática de como controlar a rotação de um padrãoservomotor.servoos motores não giram continuamente como os motores CC normais; em vez disso, eles se movem para uma posição angular específica (por exemplo, 0°, 90° ou 180°) e mantêm essa posição. O método mais confiável e amplamente utilizado para obter esse controle direcional preciso é gerar um sinal de modulação por largura de pulso (PWM) com um padrão de temporização específico. Este artigo aborda o princípio de funcionamento exato, as conexões de hardware necessárias, exemplos de lógica de codificação, etapas comuns de solução de problemas e um plano de ação final. Todas as informações são baseadas em especificações padrão da indústria e práticas verificadas.
UMservoo ângulo de rotação do motor é determinado exclusivamente pela largura de um pulso elétrico enviado a cada 20 milissegundos (ms). Este sinal é conhecido comopulso de controle.
Período de sinal: 20 ms (frequência de 50 Hz) – consistente em quase todos os servos padrão.
Faixa de largura de pulso: Normalmente de 0,5 ms a 2,5 ms.
Pulso de 0,5 ms → girar para 0° (posição totalmente no sentido anti-horário)
Pulso de 1,5 ms → girar para 90° (posição central/neutra)
Pulso de 2,5 ms → girar para 180° (posição completa no sentido horário)
> Fonte verificável: Este padrão de temporização é publicado nas folhas de dados oficiais dos principais fabricantes de servos (por exemplo, Futaba, Hitec, Tower Pro) e é consistente com o protocolo da indústria de hobby RC.
Conclusão importante: O circuito de controle interno do servo compara a largura do pulso de entrada com o feedback da posição atual de um potenciômetro conectado ao eixo de saída. Qualquer diferença faz com que o motor gire na direção correta até que os dois correspondam. Este sistema de circuito fechado oferece controle angular preciso e repetível.
Para implementar o controle de rotação do servo, você precisa dos seguintes itens (não são necessárias marcas específicas):
Caso do mundo real: Um hobby que construiu um braço robótico com controle remoto usou exatamente esses componentes. O servo foi alimentado separadamente do microcontrolador para evitar quedas de tensão. Variando a largura do pulso de 0,5 ms a 2,5 ms em passos de 0,1 ms, a articulação do braço moveu-se suavemente de 0° a 180°.
A maioria dos servos padrão usa um conector de 3 pinos com os seguintes códigos de cores (verifique a folha de dados do seu servo):
Marrom ou Preto→ Aterramento (GND) – conecte ao aterramento comum da fonte de alimentação e do microcontrolador.
Vermelho→ Alimentação (Vcc) – conecte à fonte de +5V ou +6V DC. Não alimente um servo diretamente do pino de 5 V de um microcontrolador se ele consumir mais de 200 mA; use uma bateria separada.
Laranja ou Amarelo→ Sinal (entrada PWM) – conecte a um pino digital compatível com PWM no microcontrolador.
Conexão passo a passo:
1. Conecte todos os aterramentos (servo GND, microcontrolador GND e terminal negativo da fonte de alimentação) juntos.
2. Conecte a alimentação do servo (fio vermelho) ao terminal positivo da bateria externa.
3. Conecte o sinal do servo (fio laranja) ao pino PWM escolhido no microcontrolador.
> Nota crítica de segurança: Nunca conecte o fio vermelho de um servo diretamente à saída de 5V de um microcontrolador se o servo exigir mais de 500mA de corrente de pico – isso pode danificar a placa. Sempre use uma fonte de alimentação separada para servos de alto torque.
Abaixo está uma lógica de código genérica que funciona em praticamente qualquer plataforma de microcontrolador. O exemplo usa funções padrão para gerar um sinal PWM de 50 Hz e alterar a largura do pulso.
Pseudocódigo (para compreensão):
setup(): define o pino PWM como saída define a frequência PWM para 50 Hz (período = 20 ms) loop(): // Gira para 0° define a largura do pulso = 0,5 ms delay(500) // espera 0,5 segundos para o servo se mover // Gira para 90° define a largura do pulso = 1,5 ms delay(500) // Gira para 180° define a largura do pulso = 2,5 ms delay(500)
![]()
Implementação prática (estilo C para placas compatíveis com Arduino):
#incluir// Biblioteca servo padrão Servo myServo; // Cria o objeto servo void setup() { myServo.attach(9); // Pino de sinal 9, 50 Hz autoconfigurado } void loop() { myServo.write(0); // 0° (configura internamente o pulso de 0,5ms) delay(1000); meuServo.write(90); // atraso de 90° (pulso de 1,5ms)(1000); meuServo.write(180); // atraso de 180° (pulso de 2,5ms)(1000); }
Se sua biblioteca não fornece um método write(), você pode gerar manualmente o PWM usando interrupções de temporizador. A largura exata do pulso deve ser mantida pela duração necessária e, em seguida, o pino do sinal deve ser definido como baixo pelo restante do período de 20 ms.
Mesmo com o código correto, você pode observar que o servo não gira para os pontos finais esperados. Isto se deve às tolerâncias de fabricação.
Situação comum: Um usuário comprou dois servos idênticos. Um girou exatamente 0°–180° com pulsos de 0,5–2,5 ms, enquanto o outro apenas se moveu de 10° a 170° com o mesmo sinal.
Solução – Calibrar os limites de pulso:
1. Comece com um pulso de 1,5 ms (centro).
2. Diminua gradualmente a largura do pulso em passos de 0,01 ms até que o servo pare de se mover. Esse pulso mais baixo corresponde à posição física de 0° do seu servo.
3. Aumente gradualmente a largura do pulso de 1,5 ms até que o servo pare de se mover. Esse pulso mais alto corresponde à posição física de 180° do seu servo.
Registre esses valores calibrados e use-os em seu código em vez dos 0,5 ms e 2,5 ms nominais. A maioria dos servos funciona dentro de 0,6–2,4 ms após a calibração.
Algumas aplicações (por exemplo, rodas de robôs) requerem rotação ilimitada, e não apenas movimento de 180°. Servos padrão podem ser modificados em servos de rotação contínua removendo o batente mecânico na engrenagem de saída e substituindo o potenciômetro de feedback por dois resistores fixos. No entanto, para a maioria dos usuários, é recomendado comprar um servo de rotação contínua especialmente desenvolvido.
Método de controle para servos de rotação contínua:
Pulso de 1,5 ms → parar
>1,5 ms (por exemplo, 1,7 ms) → gire no sentido horário em velocidade proporcional
Ponto central a lembrar: Alcançar a rotação precisa do servo envolve gerar a largura de pulso correta (0,5–2,5 ms) dentro de um período de 20 ms. Nenhum outro método oferece a mesma precisão e simplicidade.
Recomendações acionáveis:
1. Comece com um circuito de teste– Use um único servo, uma bateria de 5V e qualquer placa microcontroladora. Carregue o código de exemplo que varre de 0° a 180° em etapas de 10°.
2. Calibre cada novo servo– Sempre execute a rotina de calibração (seção 5) antes de finalizar seu projeto. Isso elimina erros de posicionamento.
3. Use uma fonte de alimentação dedicada– Nunca confie no pino de 5V do microcontrolador para mais de um pequeno servo. As fontes externas de 5V/2A são baratas e evitam reinicializações.
4. Verifique com um osciloscópio ou analisador lógico– Se você encontrar problemas persistentes, meça a largura real do pulso no pino de sinal. Deve ser estável e dentro de 0,5–2,5 ms.
5. Documente seus valores calibrados– Anote as larguras de pulso mínima e máxima para cada servo em seu projeto. Isso garante a repetibilidade se você substituir um servo posteriormente.
Seguindo este guia, você obterá controle de rotação do servo motor confiável e repetível em qualquer projeto de robótica ou mecatrônica. Consulte sempre a folha de dados do seu servo para especificações exatas e, em caso de dúvida, teste empiricamente a faixa de largura de pulso usando o método de calibração descrito acima.
Hora de atualização: 21/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.