Publicado 2026-03-10
Vejo isso durante oservoprocesso de depuração, você costuma ter dores de cabeça com o valor PWM correspondente a esse ângulo? O ângulo foi calculado com precisão, mas o motor não consegue girar para a posição especificada ou continua tremendo. Na verdade, existe uma fórmula matemática simples por trás disso. Depois de entendê-lo, você poderá controlar com precisão cada grau doservo.
Para ser franco, a função doservoA fórmula de cálculo PWM serve para ajudá-lo a estabelecer uma correspondência individual entre "ângulo" e "largura de pulso".
O sinal de servocontrole comumente usado é PWM de 50 Hz com um período de 20 ms. Dentro desta faixa de período, a largura do nível alto está geralmente entre 0,5 ms e 2,5 ms, e a faixa de ângulo correspondente a esse intervalo de largura é de 0° a 180°.
A fórmula de cálculo pode ser escrita como:largura de pulso alvo = largura de pulso mínima + (ângulo/180°) × (largura de pulso máxima - largura de pulso mínima). Esta fórmula mostra claramente como calcular a largura de pulso alvo com base em parâmetros específicos. Por exemplo, no contexto de controle de servo, se seu servo 0° corresponde a 0,5ms e 180° corresponde a 2,5ms, então calcule a posição de 90° através desta fórmula e o resultado será 1,5ms. Este processo de cálculo é de grande importância na correspondência entre o ângulo da caixa de direção e a largura do pulso, e pode determinar com precisão o valor da largura de pulso exigido pela caixa de direção em diferentes ângulos.
Conhecer a largura do pulso não é suficiente, pois o registro do ciclo de trabalho geralmente precisa ser configurado no microcontrolador. Ciclo de trabalho = largura de pulso alvo/20ms. Por exemplo, se você precisar de uma largura de pulso de 1,5 ms, o ciclo de trabalho será 1,5/20 = 0,075, que é 7,5%.
Implementado especificamente no código, por exemplo, se você escolher STM32 e quiser definir o valor de recarga automática como 2.000 (este valor representa 20 ms), então o valor de comparação precisará ser definido como 150 (este valor representa 1,5 ms). Na verdade, esse processo converte a proporção de tempo em um valor de registro para garantir que o hardware possa produzir uma forma de onda precisa.
Na operação de código real, tomando STM32 como exemplo, quando você define o valor de recarga automática como 2.000 (que representa 20 ms), o valor de comparação deve ser definido como 150 (que representa 1,5 ms). Este processo de conversão de proporções de tempo em valores de registro desempenha um papel fundamental para garantir que o hardware produza formas de onda precisas.
Esta é provavelmente a armadilha mais fácil de cair. Diferentes marcas e modelos de servos, ou mesmo servos do mesmo modelo, mas em lotes diferentes, possuem diferentes faixas de PWM. O valor PWM correspondente de alguns servos quando no estado 0° é 0,5ms, enquanto outros são 0,6ms; quando no estado de 180°, o valor PWM correspondente de alguns servos pode ser 2,5ms, enquanto outros podem ser 2,4ms.
Portanto, ao usar o servo, certifique-se de entender sua faixa PWM específica com antecedência, caso contrário, é fácil causar vários problemas devido à incompatibilidade de parâmetros, afetando o uso normal do servo e a operação dos equipamentos relacionados.
A forma mais segura é verificar a ficha técnica oficial do servo. Se você não conseguir encontrar o manual, é recomendável que você mesmo meça: primeiro aumente lentamente a largura do pulso para encontrar o valor mínimo no qual o servo começa a girar e, em seguida, encontre o valor máximo no qual o servo para de girar. Substitua esses dois valores obtidos por meio de medições reais na fórmula, para que o servo possa apontar com precisão para a posição alvo e evitar que o motor seja danificado devido ao estresse excessivo.
A consequência mais direta de cálculos imprecisos é a “não linearidade”. Por exemplo, quando você espera que o servo gire 45°, a situação real é que ele gira apenas 40°. O que é mais sério é que uma vez que a largura do pulso excede a faixa permitida do servo, por exemplo, se uma largura de pulso de 2,6 ms for fornecida, o limitador dentro do servo ficará preso com força, fazendo com que o servo sobrecarregue, gere calor e até queime o chip do driver.
Por outro lado, se a faixa de largura de pulso for muito estreita, por exemplo, apenas 1ms a 2ms for usado, então a faixa de rotação real do seu servo poderá ser de apenas 120°, o que desperdiça seu desempenho mecânico. Portanto, os dois valores finais na fórmula devem corresponder com precisão aos limites físicos do aparelho de governo.
Ao escrever código, geralmente encapsulamos a fórmula em uma função. A entrada é o ângulo desejado e a saída é o valor de comparação do temporizador. Os passos são simples:
1. Primeiro defina duas constantes:e, correspondendo às larguras de pulso medidas de 0° e 180°.
2. Em seguida, use a fórmula:= + (ângulo / 180,0) * ( - ) .
3. Não se esqueça de converter o resultado do ponto flutuante em um número inteiro e atribuí-lo diretamente ao registro de comparação de captura do temporizador.
Desta forma, toda vez que a função é chamada, o servo pode girar suavemente para qualquer ângulo desejado.
Se você estiver trabalhando em um braço robótico ou em um projeto de rastreamento visual que exija alta precisão, considere introduzir o controle de circuito fechado. A fórmula de malha aberta acima só pode garantir "quanta largura de pulso é dada, quanto ângulo girar", mas se o servo for bloqueado devido à força, a posição será perdida.
Neste momento, você pode adicionar um potenciômetro ou codificador ao eixo de saída do servo para ler o ângulo real em tempo real e, em seguida, usar o algoritmo PID para ajustar dinamicamente o valor PWM. Desta forma, mesmo que haja interferência externa, o sistema pode puxar automaticamente a direção de volta para a posição alvo, alcançando verdadeiramente um controle preciso.
Eu me pergunto se você já encontrou uma situação em que a faixa de oscilação de ambos os lados de todo o mecanismo é assimétrica devido ao valor servo mediano impreciso (90°) em projetos reais? Bem-vindo a conversar sobre sua experiência de depuração na área de comentários. Se você achar útil, não esqueça de curtir e compartilhar com mais amigos.
Hora de atualização: 10/03/2026
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.