Publicado 2026-03-10
Veo que durante elservoproceso de depuración, ¿a menudo le duele la cabeza por el valor de PWM correspondiente a ese ángulo? El ángulo se ha calculado con precisión, pero el motor no puede girar a la posición especificada o sigue temblando. De hecho, hay una fórmula matemática simple detrás de esto. Una vez que lo entiendas, podrás controlar con precisión cada grado delservo.
Para decirlo sin rodeos, la función delservoLa fórmula de cálculo de PWM le ayuda a establecer una correspondencia uno a uno entre "ángulo" y "ancho de pulso".
La señal de servocontrol comúnmente utilizada es PWM de 50 Hz con un período de 20 ms. Dentro de este rango de período, el ancho del nivel alto generalmente está entre 0,5 ms y 2,5 ms, y el rango de ángulo correspondiente a este intervalo de ancho es de 0° a 180°.
La fórmula de cálculo se puede escribir como:ancho de pulso objetivo = ancho de pulso mínimo + (ángulo/180°) × (ancho de pulso máximo - ancho de pulso mínimo). Esta fórmula muestra claramente cómo calcular el ancho del pulso objetivo en función de parámetros específicos. Por ejemplo, en el contexto del control de servo, si su servo 0° corresponde a 0,5 ms y 180° corresponde a 2,5 ms, entonces calcule la posición de 90° mediante esta fórmula y el resultado será 1,5 ms. Este proceso de cálculo es de gran importancia en la correspondencia entre el ángulo del mecanismo de dirección y el ancho del pulso, y puede determinar con precisión el valor del ancho de pulso requerido por el mecanismo de dirección en diferentes ángulos.
Conocer el ancho del pulso no es suficiente, porque generalmente es necesario configurar el registro del ciclo de trabajo en el microcontrolador. Ciclo de trabajo = ancho de pulso objetivo/20 ms. Por ejemplo, si necesita un ancho de pulso de 1,5 ms, el ciclo de trabajo es 1,5/20 = 0,075, que es 7,5%.
Implementado específicamente en el código, por ejemplo, si elige STM32 y desea establecer el valor de recarga automática en 2000 (este valor representa 20 ms), entonces el valor de comparación debe establecerse en 150 (este valor representa 1,5 ms). En realidad, este proceso convierte la relación de tiempo en un valor de registro para garantizar que el hardware pueda generar una forma de onda precisa.
En la operación de código real, tomando STM32 como ejemplo, cuando establece el valor de recarga automática en 2000 (que representa 20 ms), el valor de comparación debe establecerse en 150 (que representa 1,5 ms). Este proceso de convertir proporciones de tiempo en valores de registro juega un papel clave para garantizar que el hardware genere formas de onda precisas.
Esta es probablemente la trampa en la que es más fácil caer. Diferentes marcas y modelos de servos, o incluso servos del mismo modelo pero de diferentes lotes, tienen diferentes rangos de PWM. El valor PWM correspondiente de algunos servos cuando están en el estado 0° es 0,5 ms, mientras que otros son 0,6 ms; cuando está en el estado de 180°, el valor PWM correspondiente de algunos servos puede ser de 2,5 ms, mientras que otros pueden ser de 2,4 ms.
Por lo tanto, cuando utilice el servo, asegúrese de comprender de antemano su rango PWM específico; de lo contrario, es fácil causar varios problemas debido a la falta de coincidencia de parámetros, lo que afectará el uso normal del servo y el funcionamiento del equipo relacionado.
La forma más segura es consultar la hoja de datos oficial del servo. Si no puede encontrar el manual, se recomienda que lo mida usted mismo: primero aumente lentamente el ancho del pulso para encontrar el valor mínimo en el que el servo comienza a girar, y luego encuentre el valor máximo en el que el servo deja de girar. Sustituya estos dos valores obtenidos a través de mediciones reales en la fórmula, para que el servo pueda apuntar con precisión a la posición objetivo y evitar que el motor se dañe debido a una tensión excesiva.
La consecuencia más directa de cálculos inexactos es la "no linealidad". Por ejemplo, cuando espera que el servo gire a 45°, la situación real es que solo gira 40°. Lo que es más grave es que una vez que el ancho del pulso excede el rango permitido del servo, por ejemplo, si se da un ancho de pulso de 2,6 ms, el limitador dentro del servo se atascará con fuerza, provocando que el servo se sobrecargue, genere calor e incluso queme el chip del controlador.
Por otro lado, si el rango de ancho de pulso es demasiado estrecho, por ejemplo, solo se usa de 1 ms a 2 ms, entonces el rango de rotación real de su servo puede ser solo de 120°, lo que desperdicia su rendimiento mecánico. Por lo tanto, los dos valores finales de la fórmula deben corresponder exactamente a los límites físicos del mecanismo de dirección.
Al escribir código, normalmente encapsulamos la fórmula en una función. La entrada es el ángulo que desea y la salida es el valor de comparación del temporizador. Los pasos son simples:
1. Primero defina dos constantes:y, correspondiente a los anchos de pulso medidos de 0° y 180°.
2. Luego usa la fórmula:= + (ángulo / 180,0) * ( - ) .
3. No olvide convertir el resultado de coma flotante en un número entero y asignarlo directamente al registro de comparación de captura del temporizador.
De esta manera, cada vez que se llama a la función, el servo puede girar suavemente hasta cualquier ángulo que desee.
Si está trabajando en un brazo robótico o en un proyecto de seguimiento visual que requiere alta precisión, puede considerar introducir un control de circuito cerrado. La fórmula de bucle abierto anterior sólo puede garantizar "cuánto ancho de pulso se da, cuánto ángulo girar", pero si el servo se bloquea debido a la fuerza, la posición se perderá.
En este momento, puede agregar un potenciómetro o codificador al eje de salida del servo para leer el ángulo real en tiempo real y luego usar el algoritmo PID para ajustar dinámicamente el valor PWM. De esta manera, incluso si hay interferencia externa, el sistema puede devolver automáticamente el mecanismo de dirección a la posición objetivo, logrando un control realmente preciso.
Me pregunto si alguna vez se ha encontrado con una situación en la que el rango de oscilación de ambos lados de todo el mecanismo es asimétrico debido al valor medio inexacto del servo (90°) en proyectos reales. Bienvenido a charlar sobre su experiencia de depuración en el área de comentarios. Si te resulta útil no olvides darle me gusta y compartirlo con más amigos.
Hora de actualización: 2026-03-10
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.