Publicado 2026-04-07
Esta guía proporciona todo lo que necesita para controlar con precisión el ángulo de rotación de un micro estándar.servoutilizando un microcontrolador. El principio básico es simple: elservoLa posición del eje de salida está determinada por el ancho de una señal de pulso. Para los micro más comunesservos, un ancho de pulso de 1,5 milisegundos (ms) centra el eje a 90°, 1,0 ms lo mueve a 0° y 2,0 ms lo mueve a 180°. Sin embargo, los servos del mundo real varían. Este artículo le brinda métodos verificados, ejemplos de códigos y pasos de calibración para lograr un control preciso grado por grado sin depender de ninguna marca específica.
AmicroservoContiene un pequeño motor de CC, un potenciómetro de retroalimentación y un circuito de control. El circuito compara el ancho del pulso entrante con la posición del potenciómetro. Cuando el ancho del pulso coincide con la posición deseada, el motor se detiene. La relación entre el ancho del pulso y el ángulo es lineal dentro de los límites mecánicos del servo.
Especificaciones de señal estándar:
Tasa de repetición del pulso:50 Hz (período = 20 ms)
Rango de ancho de pulso utilizable:Normalmente de 1,0 ms a 2,0 ms
Rango de ángulo correspondiente:0° a 180°
Esto significa que el servo espera un pulso cada 20 ms. Al cambiar el ancho del pulso de 1,0 ms a 2,0 ms, controla el eje de 0° a 180°.
compras dosmicroservos del mismo lote. Uno se centra perfectamente a 90° cuando envías un pulso de 1,5 ms. El otro se detiene en 85°. Esto sucede debido a tolerancias de fabricación en el potenciómetro de retroalimentación y el conjunto mecánico. Por lo tanto, calibre siempre cada servo individualmente.
La mayoría de las plataformas de microcontroladores proporcionan una biblioteca de servos incorporada que genera pulsos estables de 50 Hz. A continuación se muestra un ejemplo de código genérico que funciona con cualquier microcontrolador que admita bibliotecas de servocontrol y salida PWM.
Conecte el cable de alimentación del servo (rojo) a una fuente de 5 V capaz de proporcionar al menos 500 mA.
Conecte el cable de tierra (marrón o negro) al GND del microcontrolador.
Conecte el cable de señal (naranja, amarillo o blanco) a un pin compatible con PWM (por ejemplo, pin 9).
#incluirServo miServo; configuración vacía() { myServo.attach(9); // Conecta el servo al pin 9 } void loop() { myServo.write(0); // Comando 0 grados de retraso(1000); miServo.write(90); // Comando retraso de 90 grados(1000); miServo.write(180); // Comando retraso de 180 grados(1000); }
Elescribir (ángulo)La función convierte automáticamente el ángulo al ancho de pulso correspondiente utilizando el mapeo predeterminado (0°→1,0 ms, 180°→2,0 ms). Sin embargo, es posible que este valor predeterminado no coincida con su servo específico.
Para lograr ángulos precisos, debe determinar los anchos de pulso exactos que producen 0° y 180° en SU servo.
1. Coloque un puntero o marque la posición neutral del eje.
![]()
2. Envíe un pulso de 1,5 ms. El eje debe estar cerca de 90°. Tenga en cuenta cualquier compensación.
3. Disminuya el ancho del pulso en pasos de 10 µs hasta que el eje deje de moverse. Ese es su verdadero ancho de pulso de 0°.
4. Aumente el ancho del pulso desde 1,5 ms en pasos de 10 µs hasta que el eje deje de moverse. Ese es su verdadero ancho de pulso de 180°.
Resultados medidos típicos de tres servos comunes:
Estos valores muestran que asumir entre 1000 µs y 2000 µs puede provocar errores de hasta 15°. Utilice siempre valores calibrados.
La mayoría de las bibliotecas de servo le permiten configurar rangos de ancho de pulso personalizados usando unadjuntar()sobrecarga o una función separada. Ejemplo:
myServo.attach(9, 540, 2420); // Pin, ancho de pulso mínimo (μs), ancho de pulso máximo (μs)
Después de conectar con límites calibrados,miServo.write(90)enviará el pulso central exacto (1480 µs en este caso), dando 90° verdaderos.
Paso 1: calibre siempre cada servo individualmente– No asuma especificaciones de fábrica. Dedique 5 minutos a medir los anchos de pulso reales de 0° y 180°.
Paso 2: utilice una fuente de alimentación dedicada– No alimente los microservos directamente desde el pin de 5V del microcontrolador. Un consumo repentino de corriente puede restablecer el controlador. Utilice un UBEC de 5V 1A o un suministro externo regulado.
Paso 3: almacene los valores de calibración en su código– Después de la calibración, codifique los anchos de pulso mínimo y máximo. Ejemplo:
#define SERVO_PIN 9 #define SERVO_0_PULSE 540 // µs medidos para 0° #define SERVO_180_PULSE 2420 // µs medidos para Servo de 180° myServo; myServo.attach(SERVO_PIN, SERVO_0_PULSE, SERVO_180_PULSE);
Paso 4: Verifique con una prueba simple– Comando 0°, 45°, 90°, 135°, 180°. Utilice un transportador para comprobar la precisión. Si algún ángulo está desviado en más de 2°, repita la calibración.
Paso 5: documente su configuración– Anotar los anchos de pulso calibrados para cada servo. Cuando reemplace un servo, vuelva a calibrarlo inmediatamente.
El ángulo del microservo se controla directamente mediante el ancho del pulso. El mapeo estándar (1,0 ms = 0°, 1,5 ms = 90°, 2,0 ms = 180°) es un punto de partida. Los servos reales requieren una calibración individual de los anchos de pulso mínimo y máximo para lograr una precisión real de 0° a 180°. Sin calibración, es posible que experimente compensaciones de 10° a 20°.
Si sigue el procedimiento de calibración y personaliza el rango de ancho de pulso en su código, logrará un posicionamiento de servo preciso y repetible para cualquier aplicación, desde brazos robóticos hasta estabilizadores de cámara. Pruebe siempre los verdaderos límites de cada servo y ajuste su código en consecuencia. Esta práctica elimina las conjeturas y garantiza que su proyecto funcione de manera confiable en todo momento.
Hora de actualización: 2026-04-07
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.