Publicado 2026-04-17
Este guia fornece uma explicação clara e prática de como exatamente um microcontrolador controla o ângulo de rotação de um padrão.servomotor. Você aprenderá o princípio de funcionamento básico, o sinal elétrico preciso necessário e o método passo a passo completo para gerar esse sinal usando qualquer microcontrolador comum. Não são mencionados nomes de marcas ou produtos específicos da empresa – apenas são usados princípios genéricos e amplamente aplicáveis e exemplos do mundo real.
Um padrãoservomotor faznãogire continuamente como um motor DC normal. Em vez disso, ele se move para uma posição angular específica (por exemplo, 0°, 90° ou 180°) e mantém essa posição. O ângulo é controlado inteiramente pela largura de um pulso elétrico enviado a cada 20 milissegundos (ms).
A relação direta é:
Largura de pulso entre 1,0 ms e 2,0 ms → Ângulo entre 0° e 180°(para servos mais comuns)
Um pulso de 1,0 ms → 0° (totalmente no sentido anti-horário)
Um pulso de 1,5 ms → 90° (posição central)
Um pulso de 2,0 ms → 180° (totalmente no sentido horário)
> Exemplo do mundo real:Em um braço robótico amador, para fechar completamente a garra (0°), o microcontrolador envia um pulso repetido de 1,0 ms. Para abrir totalmente a garra (180°), ela envia um pulso de 2,0 ms. Para uma posição semiaberta (90°), envia um pulso de 1,5 ms.
Este sinal é chamadoModulação por largura de pulso (PWM)– um método onde o microcontrolador emite um sinal digital que alterna entre ON (5V ou 3,3V) e OFF (0V) muito rapidamente, e a duração do pulso ON é o que o servo lê.
Siga exatamente estas etapas para controlar qualquer servo padrão com qualquer microcontrolador:
A maioria dos servos padrão opera com:
Tensão:4,8 V – 6,0 V (fonte de alimentação,nãodos pinos do microcontrolador)
Tensão do sinal de controle:3,3 V ou 5 V (corresponde ao nível lógico do microcontrolador)
Período de repetição de pulso:20 ms (frequência de 50 Hz)
Faixa de largura de pulso:1,0 ms a 2,0 ms (para 0° a 180°)
Importante:Verifique a folha de dados do seu servo para obter a faixa exata de largura de pulso. Alguns servos usam 0,5 ms a 2,5 ms para 0°–180°, ou 1,0 ms a 2,0 ms para 0°–90°. O princípio permanece idêntico.
Um servo padrão possui três fios:
Nota crítica de segurança:Nunca alimente um servo diretamente do pino de 5V de um microcontrolador. Um servo pode consumir 200–1000 mA, o que excede a maioria das classificações de pinos do microcontrolador. Use uma fonte de alimentação separada de 5 V com aterramento comum.
Cada microcontrolador possui temporizadores PWM integrados. A configuração requer a definição de dois parâmetros:
Frequência = 50Hz(período = 20 ms)
Resolução(normalmente de 8 a 16 bits, dependendo do microcontrolador)
Exemplo de cálculo genérico (para qualquer microcontrolador):
Se a sua resolução PWM for de 8 bits (0 a 255) e o período total for de 20 ms (20.000 µs):
Pulso de 1,0 ms → ciclo de trabalho = (1,0 ms / 20 ms) × 255 = 12,75 → uso 13
Pulso de 1,5 ms → ciclo de trabalho = (1,5 ms / 20 ms) × 255 = 19,125 → uso 19
Pulso de 2,0 ms → ciclo de trabalho = (2,0 ms / 20 ms) × 255 = 25,5 → uso 26
Caso do mundo real:Um microcontrolador comum de 8 bits configurado para PWM de 50 Hz escreverá um valor de 13 no registro de comparação PWM para atingir 0°, 19 para 90° e 26 para 180°.
A lógica do código é sempre a mesma em todos os microcontroladores:
1. Inicialize o hardware PWM com frequência de 50 Hz.
2. Calcule a largura de pulso necessária em microssegundos para o ângulo alvo usando a fórmula linear:
Largura de pulso (µs) = 1000 + (ângulo/180) × 1000(para intervalo de 1,0–2,0 ms)
Ângulo 0° → 1000 µs
Ângulo 90° → 1500 µs
Ângulo 180° → 2.000 µs
3. Converta a largura do pulso no valor do registro do ciclo de trabalho do microcontrolador.
4. Escreva esse valor no pino de saída PWM.
Pseudocódigo genérico (adaptar-se a qualquer microcontrolador):
// Suponha que o temporizador PWM já esteja configurado para 50 Hz, resolução de 8 bits int targetAngle = 90; // graus int pulseWidth_us = 1000 + (targetAngle1000/180); int dutyCycleValue = (pulseWidth_us255)/20.000; setPWMDutyCycle(PWM_PIN, dutyCycleValue);
Após carregar o código, use um osciloscópio ou analisador lógico para verificar o sinal:
A frequência deve ser 50 Hz(período = 20 ms)
A largura do pulso deve corresponder ao valor calculado(por exemplo, 1,5 ms para 90°)
Problema comum do mundo real:Se o servo tremer ou não se mover, a largura do pulso provavelmente está incorreta. Meça diretamente no pino de sinal. Um erro de 0,05 ms pode causar um desvio de 5°–10°.
Aqui está um exemplo completo e genérico que funciona em qualquer microcontrolador após uma pequena adaptação de sintaxe. A lógica é o que importa.
Cenário:Uma plataforma simples de câmera panorâmica. O servo deve varrer de 0° a 180° e voltar continuamente.
Lógica de implementação passo a passo:
1. Defina a frequência PWM para 50 Hz.
2. Defina uma funçãodefinirAngle(ângulo)que:
Ângulo de fixação entre 0° e 180°
Calcula a largura do pulso = 1000 + (ângulo × 1000/180) microssegundos
Converte para o valor do registro do ciclo de trabalho
Grava no pino PWM
3. No loop principal:
Incremente o ângulo de 0° a 180° em passos de 1°
ChamardefinirAngle(ângulo)para cada etapa
Aguarde 15 ms (permite que o servo se mova fisicamente)
Em seguida, diminua o ângulo de volta para 0°
Resultado esperado:O servo gira suavemente de uma extremidade à outra, parando precisamente em cada ângulo calculado.
Use esta tabela para verificação rápida sem cálculos:
Observação:Se o seu servo não atingir exatamente 0° ou 180°, ajuste ligeiramente as larguras de pulso mínima e máxima (por exemplo, 950 µs para 0°, 2050 µs para 180°). Isto é normal devido às tolerâncias de fabricação.
O método de controle de largura de pulso é uma interface servo analógica padrão da indústria usada há décadas. Cada servo padrão – independentemente do fabricante – responde à mesma faixa de pulso de 1,0–2,0 ms. Isso significa:
Você pode controlar qualquer servo padrão com qualquer microcontrolador que produza 50 Hz PWM.
A mesma lógica de código funciona para microcontroladores de 8 a 32 bits.
Não são necessárias bibliotecas proprietárias ou funções específicas da marca.
Princípio fundamental a ser lembrado:
> O ângulo do servo édiretamente proporcionalà largura de pulso entre 1,0 ms e 2,0 ms, repetida a cada 20 ms. Mude a largura do pulso e você mudará o ângulo – nada mais importa.
Plano de ação imediato a implementar hoje:
1. Verifique a faixa de pulso do seu servo– Verifique sua folha de dados para larguras de pulso mín/centro/máx. A maioria usa 1,0/1,5/2,0 ms para 0/90/180°.
2. Configure o PWM do seu microcontrolador– Configure um pino PWM para frequência de 50 Hz. Use PWM de hardware, e não bit-banging de software, para pulsos estáveis.
3. Escreva a fórmula de conversão de ângulo para pulso- Usar:pulso_us = 1000 + (ângulo_grau × 1000/180).
4. Teste com três ângulos conhecidos– Comando 0°, 90° e 180°. Meça a posição real do eixo. Ajuste as larguras de pulso mín/máx, se necessário.
5. Adicione uma rotina de calibração– Armazene as larguras de pulso mínima e máxima exatas do seu servo em código. Isso garante uma faixa perfeita de 0° a 180°, apesar das variações de fabricação.
Validação final:Depois de seguir este guia, você será capaz de comandar qualquer ângulo de 0° a 180° com precisão de ±1°. O mesmo método funciona para servos de rotação contínua (onde a largura de pulso controla velocidade e direção) e para servos com diferentes faixas de ângulo (por exemplo, 0°–90° ou 0°–270°) – basta ajustar a faixa de largura de pulso de acordo.
Repita a verdade central:Um microcontrolador controla o ângulo de um servo emitindo um sinal PWM de 50 Hz onde o tempo ON (largura de pulso) varia de 1,0 ms (0°) a 2,0 ms (180°). Domine essa relação pulso-ângulo e você poderá controlar qualquer servo com qualquer microcontrolador.
Hora de atualização: 17/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.