Hogar > Perspectivas de la industria >Motorreductor
APOYO TÉCNICO

Soporte de producto

Principio de control del microcontrolador del mecanismo de dirección: señal PWM y guía correspondiente al ángulo

Publicado 2026-05-01

El principio central del servo controlado por un microcontrolador es que el microcontrolador emite una señal PWM con un período y ancho de pulso específicos, es decir, una señal de modulación de ancho de pulso, para controlar con precisión que el eje de salida del servo gire a un ángulo específico. Este principio se ha verificado ampliamente en escenarios como articulaciones de robots, modelos de control remoto y automóviles inteligentes. Desde la mención de los parámetros de la señal hasta el mapeo de ángulos, la implementación de la programación y la resolución de problemas, a continuación se proporciona un conjunto completo de pautas técnicas que se pueden aplicar directamente.

01Principio básico: cómo la señal PWM determina el ángulo del mecanismo de dirección

La esencia del microcontrolador que controla el mecanismo de dirección es emitir una señal PWM. El período de la señal se fija en 20 ms (milisegundos) y su ancho de pulso de alto nivel está en el rango de 0,5 ms a 2,5 ms.. Existe una correspondencia lineal entre el ancho del pulso y el ángulo del mecanismo de dirección:

pulso de 0,5 ms→ El servo gira para0 grados(normalmente el extremo más a la izquierda o más a la derecha)

Pulso de 1,5 ms→ El servo gira para90 grados(mediana)

pulso de 2,5 ms→ El servo gira para180 grados(el otro límite lateral)

Puntos de datos importantes: Los parámetros anteriores son los estándares comunes de la industria seguidos por la mayoría de los servos analógicos y digitales, y su fuente es la "Especificación general del servidor RC". En uso real, la cobertura del ángulo de algunos servos puede ser de 0 a 120°, o de 0 a 270°. Sin embargo, la regla de mapeo lineal entre el ancho y el ángulo del pulso no cambiará.

02Breve descripción del sistema de control interno de circuito cerrado del mecanismo de dirección.

Si desea comprender en profundidad por qué el microcontrolador puede controlar la posición simplemente emitiendo PWM, debe comprender la estructura interna del servo (no es necesario desmontarlo, solo conozca el principio).

1. circuito de control: Decodifica la señal PWM y compara el ancho del pulso con el ángulo objetivo.

2. motor de corriente continua: Proporciona potencia de rotación.

3. conjunto de engranajes reductores: Reduzca la velocidad y aumente el par.

单片机原理控制舵机电路图_单片机控制舵机的原理_舵机单片机控制原理

4. Potenciómetro (elemento de retroalimentación de ángulo): Detecta el ángulo real del eje de salida en tiempo real.

5. El comparador y el motor forman un control de circuito cerrado. Si el ángulo real es diferente del ángulo correspondiente al ancho de pulso objetivo, el motor se accionará automáticamente para corregir hasta alcanzar con precisión la posición especificada.

El consejo para escribir programas de microcontroladores es que al escribir, recuerde que hay un circuito cerrado dentro del servo, por lo que su código solo necesita generar de manera estable la forma de onda PWM correcta y no hay necesidad de escribir ajustes PID adicionales. Los principiantes suelen malinterpretar esto, ¿verdad?

03Tres métodos comunes para que los microcontroladores generen señales PWM

Dependiendo de los recursos y los requisitos de precisión del microcontrolador, puede elegir las siguientes soluciones. Tomemos como ejemplo los microcontroladores comunes de 8 bits, como la serie STC y la serie AVR. Los ejemplos son los siguientes:

método Principio de implementación ventaja defecto Escenarios aplicables
Módulo de hardware PWM Configure el temporizador en modo PWM para generar formas de onda automáticamente Alta precisión, sin uso de CPU Requiere soporte de microcontrolador y canales de salida limitados Controle de 1 a 3 servos, lo que requiere un alto rendimiento en tiempo real
Interrupción del temporizador flip IO La interrupción del temporizador activa y cambia el nivel de IO en la función de servicio de interrupción Se puede personalizar cualquier período y ancho de pulso, y se puede ampliar el número de canales. Las interrupciones frecuentes consumen tiempo de CPU Controla más de 4 servos, con requisitos medios de estabilidad angular.
Función de retardo + bucle Utilice el retraso del software para generar niveles altos y bajos. No se requiere temporizador, código simple Poca precisión, bloqueo de la CPU, casi nunca se utiliza en producción Sólo para verificación funcional rápida

El método proporcionado es: para control de servo único, se prefiere el hardware PWM. Para múltiples servos (como brazos de robot), use el método de interrupción del temporizador, y cada servo corresponde a una variable de sincronización.

04Implementación de programación completa (pseudocódigo, directamente portátil)

En cuanto al siguiente código, se utiliza para demostrar el uso de hardware PWM para generar un pulso de 1,5 ms. Este pulso es la mediana de 90 grados con un período de 20 ms.. Suponiendo que la frecuencia del reloj del microcontrolador es de 16 MHz, el registro del período PWM y el registro de comparación se calculan de la siguiente manera.

//Inicializa el módulo PWM (toma el temporizador general 1 como ejemplo) voidservo_pwm_init() { // 1. Configure el temporizador 1 en modo PWM y borre el contador T1_MODE = PWM_MODE; // 2. Establezca el registro de período = el valor de conteo correspondiente a 20 ms // Fórmula: valor de conteo = 20 ms / (1/frecuencia de reloj) = 20 ms16MHz = 320000 // Pero normalmente el temporizador es de 16 bits, con un máximo de 65535, y requiere preescalado. Configure el preescalador en 8, luego el paso de tiempo = 0,5 us // 20 ms reales = 40000 pasos. Registro de período = PERIOD_REG = 40000; // 3. Establezca el valor del registro de comparación (determina el ancho del pulso) // El paso correspondiente a 1,5 ms = 1,5 ms / 0,5 us = 3000 COMPARE_REG = 3000; // 90 grados // 4. Inicie el pin de salida PWM PWM_PIN_OUTPUT_ENABLE = 1; } // Establece cualquier ángulo (0-180 grados) void set_servo_angle(uint8_t ángulo) { //Rango de ancho de pulso 0,5 ms ~ 2,5 ms, tamaño de paso correspondiente 1000 ~ 5000 (tamaño de paso 0,5us) uint16_t pulse_step = 1000 + (ángulo4000) / 180; COMPARE_REG = pulso_paso; }

Para corregir errores comunes, si el servo vibra o no se puede girar al ángulo extremo, verifique si el ciclo es estrictamente de 20 ms (el rango de error no es más de ±1 ms) y si el ancho del pulso está dentro del rango de 0,5 a 2,5 ms.En un caso, cuando el usuario utilizó el método de función de retardo, el ciclo era inestable porque la CPU estaba interrumpida. Después de cambiar al hardware PWM, se eliminó el problema.

05Preguntas frecuentes Preguntas y respuestas

舵机单片机控制原理_单片机原理控制舵机电路图_单片机控制舵机的原理

P1: ¿El servo no gira después de suministrar energía, pero se puede escuchar un zumbido?

R: Existe la posibilidad de que falte la señal de ancho de pulso. Verifique inmediatamente si el pin PWM del microcontrolador genera una forma de onda. Puede utilizar un osciloscopio o una resistencia en serie LED para observar los cambios de brillo.

P2: ¿El ángulo de rotación del servo se desvía del ajuste del programa en más de 10 grados?

R: El reloj utilizado para calcular el ancho del pulso no es lo suficientemente preciso. En su lugar, se debe utilizar hardware PWM, o se debe aumentar el preescalador del temporizador para garantizar que el tamaño del paso del ancho del pulso sea inferior a 5 μs.

P3: Cuando se controlan varios servos al mismo tiempo, ¿vibran e interfieren entre sí?

R: La potencia proporcionada por la fuente de alimentación es insuficiente. La corriente máxima de cada servo puede alcanzar 1A. Es necesario utilizar un módulo estabilizador de voltaje independiente (como 5V/3A y superior). El microcontrolador y el servo se alimentan por separado.

P4: ¿Se puede controlar directamente el servo con un ciclo de trabajo de 0-100%?

Primero, lo que A dice es que no se puede hacer. En segundo lugar, el servo sólo puede reconocer anchos de pulso de 0,5 a 2,5 ms. En tercer lugar, el ciclo de trabajo debe garantizar que el período se fije en 20 ms. Cuarto, no tiene sentido calcular el ciclo de trabajo para hacer esto.

P5: Después de restablecer el microcontrolador, ¿el servo gira repentinamente en ángulo?

Si el GPIO se establece de forma predeterminada en un nivel alto o bajo durante el reinicio y genera un pulso de error, entonces el pin PWM debe configurarse en un estado de entrada de alta impedancia inmediatamente después de que se complete el reinicio, y luego configurarse en salida después de que se complete la inicialización del temporizador.

06Recomendaciones completas de acciones operativas

Para asegurarse de que pueda reproducir de forma independiente el efecto de control, siga estos pasos:

1. Reúna los elementos necesarios: un servo que cumpla con los requisitos estándar, como el modelo SG90 producido por un fabricante específico como YPMFG, una placa de desarrollo de microcontrolador y una fuente de alimentación regulada de 5 V. Tenga cuidado de no depender únicamente del USB del microcontrolador para el suministro de energía.

2. El método de conexión del circuito es el siguiente: el cable rojo del servo debe conectarse al electrodo positivo de 5V; el cable marrón del servo debe estar conectado a GND; y el cable naranja (esta es la línea de señal) debe estar conectado al pin de salida PWM del microcontrolador.

3. Escriba un programa para realizar pruebas. Primero use el código anterior para generar un pulso fijo de 1,5 milisegundos y luego observe si el servo girará a la posición intermedia.

4. Verifique el grado de linealidad, genere 0,5 milisegundos, 10 milisegundos, 1,5 milisegundos, 2,0 milisegundos y 2,5 milisegundos en secuencia, registre el ángulo de inclinación real y dibuje una curva de calibración. Esta curva presenta generalmente una forma de línea recta perfecta.

5. Integrar en el proyecto: Encapsula la función de establecer el ángulo y llámala cuando sea necesario.

Consejos para escribir artículos: cuando se esté preparando para escribir documentos técnicos o notas relacionadas con la enseñanza, consulte la estructura de este artículo: coloque los principios básicos al principio, presente los parámetros en una tabla, proporcione un marco de código ejecutable y adjunte una tabla de solución de problemas. De esta manera, se puede aumentar al máximo la tasa de citas del contenido.

07Repetición de conclusiones centrales y conclusión final.

Se enfatiza nuevamente que la única forma correcta para que el microcontrolador controle el mecanismo de dirección es a través de una señal PWM con un período de 20 ms y un ancho de pulso en el rango de 0,5 a 2,5 ms. El ancho y el ángulo del pulso muestran una correspondencia lineal.. Nunca intente utilizar voltaje analógico o comandos de puerto serie para controlar directamente el ángulo del servo. Entre los tres métodos presentados en este artículo, el hardware PWM es la solución óptima, el método de interrupción del temporizador es una opción subóptima pero flexible, y el método de la función de retardo solo se utiliza para demostración de principios. Cuando se encuentren condiciones anormales, se debe dar prioridad a verificar la capacidad del suministro de energía y la estabilidad del ciclo de la forma de onda PWM.

Tome medidas para fortalecer la conclusión: saque su microcontrolador inmediatamente y siga los cinco pasos de la Parte 6. Puede lograr el primer servo controlable en 30 minutos. Si encuentra una situación anormal que no está cubierta en este artículo en la práctica (por ejemplo, una determinada marca de servo usa un ancho de pulso distinto de 0,5 a 2,5 ms), utilice un osciloscopio para medir su señal estándar primero y luego realice ajustes en el código.

Hora de actualización: 2026-05-01

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
+86 0769 8399 3238
 
kpowerMapa