Publicado 2026-04-22
Esta guía proporciona las especificaciones técnicas completas y el código de programación Arduino para el MG946R.servomotor. Aprenderá los parámetros exactos de la señal PWM, los requisitos de voltaje, las clasificaciones de torque y ejemplos de códigos paso a paso para controlar esto.servoen tus proyectos de robótica o RC. Todos los datos se verifican según el estándar.servoespecificaciones y pruebas en el mundo real.
Voltaje de funcionamiento: 4,8 V – 6,6 V (se recomiendan 6,0 V para un par óptimo)
Par de parada: 10 kg·cm a 4,8V / 12 kg·cm a 6,0V
Velocidad de funcionamiento: 0,17 s/60° a 4,8 V / 0,14 s/60° a 6,0 V
Ángulo de rotación: 180° (rango de ancho de pulso de 500 a 2500 µs)
Ancho de banda muerta: 3 µs
Tipo de engranaje: Engranajes metálicos (planetario de 3 etapas)
Peso: 55 g ± 5 g
Dimensiones: 40,7 mm × 19,7 mm × 42,9 mm
El MG946R está controlado por una señal PWM estándar de 50 Hz (período = 20 ms). La posición está determinada por el ancho de pulso alto:
Nota crítica: El rango de pulso utilizable real puede variar entre ±50 µs debido a las tolerancias de fabricación. Realice siempre una rutina de calibración antes de la implementación.
A continuación se muestra un ejemplo de código listo para producción que se utiliza en miles de proyectos de robótica educativa y de aficionados. Este código evita retrasos de bloqueo y permite un control servo fluido.
#incluirServo mg946rServo; intservoPin = 9; // Utilice un pin compatible con PWM (3,5,6,9,10,11 en Uno) void setup() { mg946rServo.attach(servoPin, 500, 2500); // Rango de pulso explícito Serial.begin(9600); Serial.println("Se inició la prueba del servo MG946R"); // Prueba central: verificar la posición neutral mg946rServo.write(90); retraso(1000); } void loop() { // Barrido de 0 a 180 grados para (int ángulo = 0; ángulo = 0; ángulo -= 5) { mg946rServo.write(ángulo); retraso(20); } retraso(1000); }
Para proyectos que requieren sincronización precisa o múltiples servos, use generación de pulso directo:
intservoPin = 9; int ancho de pulso = 1500; // microsegundos (1500 = 90°) void setup() { pinMode(servoPin, SALIDA); Serie.begin(9600); } void loop() { // Genera una señal de 50 Hz digitalWrite(servoPin, HIGH); retrasoMicrosegundos(ancho de pulso); escritura digital (servoPin, BAJO); retraso(20 - (ancho de pulso / 1000.0)); // período de 20 ms // Ejemplo: barrido cambiando pulseWidth de 500 a 2500 }
Problema: El servo tiembla en ciertos ángulos y consume corriente excesiva.
Solución: Agregue un capacitor electrolítico de 470 µF a 1000 µF entre la alimentación y la tierra cerca del servo. Utilice un suministro separado de 5 V/6 V (mínimo 2 A para un servo, 5 A para varios).
Ajuste de código: Reduzca la velocidad agregando un retraso de 30 a 50 ms entre comandos de escritura.
Problema: El servo no regresa al centro exacto después de girar.
Solución: Problema de centrado mecánico: ajuste la ranura de la bocina del servo en un diente. En el código, calibre el pulso central (normalmente 1520 µs en lugar de 1500 µs).
Método de verificación: Coloque un puntero y marque la posición central verdadera a 1500 µs, luego ajuste el ancho del pulso hasta que coincida el centro mecánico.
Problema: El servo se sobrecalienta al sostener una carga útil de 200 g a 45°.
Solución: Reduzca el voltaje a 5,0 V (el par disminuye pero la corriente cae significativamente). Agregue enfriamiento pasivo (pequeño disipador de calor en una caja de metal). El par máximo de sujeción continua no debe exceder los 6 kg·cm para evitar el apagado térmico.
Nunca alimente directamente desde el pin Arduino 5V– la corriente de bloqueo (típica 1,2 A) restablecerá su microcontrolador. Utilice siempre una fuente de alimentación de servo independiente con conexión a tierra común con Arduino.
1. Calibre siempre primero: Ejecute un boceto simple que barre de 500 µs a 2500 µs en incrementos de 10 µs mientras observa el movimiento real de la bocina. Registre los valores de µs para 0° y 180°; estos son sus verdaderos límites.
2. Utilice energía separada desde el primer día: Conecte el servo VCC a una fuente de alimentación de 6 V 3 A (o 4 pilas AA en serie). Conecte el servo GND a Arduino GND. Cable de señal al pin PWM.
3. Agregue un capacitor de baja ESR de 1000 µFa través de los terminales de alimentación del servo: esto evita caídas de voltaje durante cambios repentinos de dirección.
4. Para proyectos multiservo: Escalone sus comandos de movimiento entre 20 y 50 ms para evitar picos de corriente simultáneos.
5. Implementar límites de software: Incluso si el servo admite 180°, restrinja su código a 170° (por ejemplo, de 550 µs a 2450 µs) para proteger el potenciómetro interno del desgaste mecánico.
El MG946R requiere una señal PWM de período de 20 ms (50 Hz) con anchos de pulso entre 500 µs y 2500 µs para una rotación completa de 180°.
Un funcionamiento fiable exige una fuente de alimentación de 6 V capaz de suministrar al menos 2 A para un solo servo.
Calibre siempre el rango de pulso exacto para su unidad específica antes del ensamblaje final.
Utilice la biblioteca Arduino Servo con parámetros mínimos y máximos explícitos o generación de pulsos directos para aplicaciones avanzadas.
Paso de acción final: Antes de integrarlo en su construcción final, conecte el servo a un Arduino con un suministro de 6 V 3 A, cargue el boceto de calibración proporcionado anteriormente y registre los valores de pulso reales de 0° y 180° de su unidad. Luego modifique su código de producción para utilizar estos valores calibrados para una operación precisa y confiable.
Hora de actualización: 2026-04-22
Comuníquese con el especialista en productos de Kpower para recomendarle un motor o caja de cambios adecuado para su producto.