Servo de control STM32: guía de ajuste de precisión y señal PWM_Custom Drive_Industry Insights_Kpower
Hogar > Perspectivas de la industria >Unidad personalizada
APOYO TÉCNICO

Soporte de producto

Servo de control STM32: guía de ajuste de precisión y señal PWM

Publicado 2026-05-08

tarde en la noche. Las luces del laboratorio siguen encendidas.

Miré fijamente al servo inmóvil, sosteniendo firmemente la placa de desarrollo STM32 en mi mano. La compilación del código pasó y la descarga fue exitosa, pero ¿por qué estaba inmóvil?

El depurador parpadeó en la pantalla, como si se riera de mí.

¿Alguna vez ha estado así, mirando la hoja de datos repetidamente, pero no puede encontrar esa línea de configuración que juega un papel clave?

Esa noche, hace cuatro años, utilicé STM32 para controlar el servo por primera vez. Creo que PWM es tan fácil como cambiar el ciclo de trabajo. Como resultado, el servo tembló y luego quedó completamente en silencio.

Luego me di cuenta de que me había olvidado del paso más crítico: habilitar el reloj.

Consejos de escritura: escribir controladores desde cero

01¿Por qué el servo no te escucha?

El servo es un niño obediente. Sólo requiere un idioma: PWM.

El período es de 20 milisegundos y el tiempo de alto nivel está entre 0,5 milisegundos y 2,5 milisegundos, lo que está relacionado con el servo estándar.

Hay una gran cantidad de modos de temporizador STM32 que se pueden seleccionar. ¿Cuál es la diferencia entre PWM1 y PWM2? Contando hacia arriba y hacia abajo, ¿realmente le importan al servo estas situaciones?

Hay tres servos a diferentes precios que probé en un proyecto. Uno de los servos de nivel básico tiene un buen rendimiento de respuesta de 0,5 ms. Pero otro servo de grado industrial debe hacer que el tiempo muerto tenga una precisión de 1 us.

Hay un caso como este: el año pasado, ayudé a un amigo a depurar un brazo robótico de cinco ejes. Lo que se utiliza es el servo de par medio común.El código parece estar en perfectas condiciones. Cuando el ciclo de trabajo se ajusta del 5% al ​​10%, el servo simplemente salta a dos posiciones extremas.

Cálculo de valores de preescalador y recarga automática.

Para STM32 en el estado de 72 MHz, si desea obtener una frecuencia PWM de 50 Hz, el coeficiente de división de frecuencia no se determina arbitrariamente. Cada servo tiene diferente sensibilidad, diferentes zonas muertas e incluso diferentes voltajes de alimentación, lo que hará que su "audición" cambie.

02De temblar a estar firme

He visto a mucha gente conectar el servo directamente al pin PWM de 3,3 V.

Luego se quejó: "La capacidad del controlador STM32 es demasiado débil".

No, te olvidaste de ponerte en cuarentena.

Indicaciones de escritura: comprenda el significado más profundo de la hoja de datos

La depuración duró hasta tres horas. Utilicé un osciloscopio para investigar cable por cable. Durante la investigación, descubrí que cuando el servo giraba, la corriente aumentaba a 1,2 A. Luego me di cuenta de que el regulador de voltaje de 3,3 V de la placa de desarrollo no podía soportar esa corriente.

La solución es simple: fuente de alimentación externa, tierra común.

控制舵机代码_控制舵机转动程序_stm32 控制舵机

Desde entonces, cada proyecto mío de mecanismo de dirección ha seguido tres reglas de hierro:

Fuente de alimentación separada para servo (4.8V-6V)

Cadena de señal de control Resistencia de 1kΩ

El cable de tierra de alimentación está conectado de manera confiable al cable de tierra STM32.

Estos tres elementos merecen todo el tiempo de depuración.

Pero el suministro de energía por sí solo no es suficiente. La precisión es el alma del servocontrol.

¿Qué pasa con las funciones regulares tipo retardo? Olvídalo, déjalo con decisión. ¿Qué pasa con las interrupciones causadas por temporizadores? Está bien y es utilizable.El método de operación que realmente se puede llamar profesional es usar el temporizador avanzado de STM32 para generar PWM complementario y activar la función de frenado.

¿Por qué? Porque cuando el servo se atasca, no querrás que se queme.

03La precisión está oculta en el documento.

Abra el manual de referencia de STM32. El capítulo 14 pertenece a los cronómetros, el capítulo 15 pertenece a los cronómetros, el capítulo 16 pertenece a los cronómetros y el capítulo 17 pertenece a los cronómetros.

Los principiantes se marean mirando las listas de registro. Yo también.

Pero hay una página que tiene la propiedad más importante: la tabla de configuración del modo de comparación de salida. Puede indicarle qué registro controla el ciclo de trabajo, qué registro controla la polaridad y qué registro controla la zona muerta.

Mensaje de escritura: la importancia del tiempo muerto

Mi próximo proyecto requiere una precisión del ángulo del servo de 0,5 grados. La mayoría de los servos del mercado generalmente sólo admiten una resolución de 1us.; En un período de 20 ms, 1 us corresponde exactamente a 0,18 grados. Desde un análisis teórico, esta precisión es suficiente.

Sin embargo, las pruebas reales encontraron que la diferencia de retorno de los servos baratos es de solo 2us.

¿Qué hacer?

Compensación de software.

En el código, construí una tabla de mapeo para asociar el ciclo de trabajo teórico con el ángulo real de acuerdo con la relación correspondiente. Utilicé interpolación lineal para corregirlo y la precisión final alcanzó 0,3 grados.

Este caso nos dice: el hardware tiene limitaciones, pero los algoritmos pueden remediarlo.

Preguntas y respuestas

P: El servo no se mueve en absoluto, ¿qué debo hacer?

R: Primero verifique el voltaje de la fuente de alimentación y la tierra común. Utilice un osciloscopio para ver si la señal PWM está presente.

P: El servo vibra mucho, ¿cuál es el motivo?

控制舵机代码_控制舵机转动程序_stm32 控制舵机

El período es de 20 ms y no hay ningún problema en la señal, pero la frecuencia PWM no coincide o el ciclo de trabajo no es estable y es necesario confirmarlo.

P: ¿Qué debo hacer si la resolución PWM de STM32 no es suficiente?

R: Reduzca el reloj del temporizador o use el modo de 16 bits, y también puede conectar un módulo PCA9685 externo.

P: ¿Cómo controlar varios servos para que se muevan al mismo tiempo?

R: Utilice varios canales del mismo temporizador para generar PWM y evitar conflictos de interrupciones.

04Áreas ciegas fuera del código

Mucha gente termina de escribir el código y da por terminado el día.

Pero un mecanismo de dirección es un dispositivo mecánico. Tiene su propio temperamento.

Temas de escritura: límites físicos y protección de seguridad

En el pasado, diseñé una cerradura de puerta automática en la que un servo giraba noventa grados para empujar el cerrojo. En ese momento, el programa se probó hasta cien veces y los resultados de cada prueba fueron normales. Sin embargo, al tercer día después de la instalación, la cerradura se atascó.

Cuando el servo continúa bloqueado, la temperatura del chip controlador interno aumenta a 120 grados.

¿Cuál es la lección?

Para cada proyecto de aparato de gobierno, se debe agregar protección de tiempo de espera y detección de corriente. El STM32 ADC puede monitorear la corriente del mecanismo de dirección en tiempo real. Si la corriente excede el umbral y continúa durante 0,5 segundos, la salida PWM se cortará inmediatamente.

Esto no es un exceso de ingeniería. Este es el punto de inflexión entre profesionales y aficionados.

También hay un punto ciego: la posición inicial del servo.

Si su brazo robótico está en una posición peligrosa cuando está apagado, el STM32 generará el nivel predeterminado en el momento en que se encienda. Si este nivel resulta ser el ciclo de trabajo máximo, el servo alcanzará el límite.

Primero, la solución es configurar el pin de salida del temporizador en un estado de alta impedancia antes de que se inicialice el GPIO.En segundo lugar, la solución es agregar una señal de habilitación de hardware y esperar hasta que el sistema esté estable antes de encender el servo.

La hoja de datos no le dirá estos detalles.

05Del código al trabajo

La placa de desarrollo STM32 que tiene en la mano puede hacer más que simplemente encender LED.

Permite que el servo dibuje círculos, escriba, agarre objetos y ajuste válvulas.

Pero la premisa es que esté dispuesto a tomarse el tiempo para comprender el origen de cada parámetro.

Mensaje de escritura: la retroalimentación de circuito cerrado es la solución definitiva

Si realmente busca una alta precisión, abandone el control de bucle abierto.

Me dediqué a un proyecto de robot biónico y agregué retroalimentación de potenciómetro a cada articulación. STM32 fue responsable de leer el valor de ADC, compararlo con el ángulo objetivo y luego usar el algoritmo PID para ajustar el PWM. De esta forma, no importa cómo cambie la carga, la posición siempre es precisa.

El control de circuito abierto es como caminar con los ojos vendados. El control de circuito cerrado es como caminar con los ojos abiertos.

¿Cuál eliges?

En este momento, mira hacia el laboratorio en medio de la noche. El mecanismo de dirección no giraba, no porque hubiera un error en el código, sino porque había un punto ciego en mi conocimiento que aún no había dominado por completo.

Cada fracaso es una experiencia de aprendizaje.

06tomar medidas

Si desea utilizar STM32 para controlar realmente el servo, recuerde estos pasos:

Lea atentamente la hoja de datos del servo para confirmar el período de modulación de ancho de pulso y el rango de ancho de pulso.

Utilice un osciloscopio para verificar la salida de forma de onda del STM32, no confíe en el cálculo.

Fuente de alimentación independiente, tierra común y resistencia protectora.

Se agregan al software mapeo de ángulos y protección de tiempo de espera.

Pruebe condiciones extremas: corte de energía y reinicio, rotor bloqueado, interferencia de señal.

Indicaciones de escritura: repita las ideas clave y actúe en consecuencia.

Sólo hay un núcleo: la precisión está oculta en los documentos y la estabilidad proviene de las pruebas.

Verifique su código hoy para ver si el valor del preescalador se calcula correctamente, verifique si está conectado a tierra y si el estado del pin es seguro en el momento del encendido.

Reprogramar.

Escuche el sonido del mecanismo de dirección girando.

Ya no tiembla.

Está funcionando para ti.

En el laboratorio, a altas horas de la noche, las luces todavía están encendidas.

Pero esta vez estás sonriendo.

Hora de actualización: 2026-05-08

Impulsando el futuro

Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.

Correo a Kpower
Enviar consulta
Mensaje de WhatsApp
+86 0769 8399 3238
 
kpowerMapa