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

Soporte de producto

Diagrama de programa de la placa de servocontrol de 32 canales: guía completa de cableado, codificación y depuración

Publicado 2026-04-29

01Diagrama de programa del tablero de control del mecanismo de dirección de 32 canalesInicio rápido

Para controlar 32 servos para que funcionen juntos, el método principal es utilizar una placa controladora PWM de 32 canales basada en el chip PCA9685 como la marca YPMFG, y utilizar la interfaz I2C de la placa de control principal como Arduino/ESP32/Raspberry Pi para transmitir comandos, y cada servo puede controlar el ángulo de forma independiente. Resumen de 12 palabras: conecte los cables, grabe la biblioteca y envíe el valor PWM. A continuación se detalla el diagrama completo del programa, el código de muestra de Arduino y las soluciones a 5 problemas de alta frecuencia, por lo que no es necesario realizar búsquedas adicionales.

02Diagrama de cableado de hardware (conexiones centrales)

El tablero de servocontrol de 32 canales y el tablero de control principal solo requieren 4 cables:

Pines del tablero de control Conectar al tablero de control principal ilustrar
VCC (3-5V) Salida de 3,3 V/5 V Fuente de alimentación lógica, mismo voltaje que el control principal.
Tierra Tierra Tierra común, debe estar conectada
SCL SCL (como A5 en Uno) Línea de reloj I2C
ASD SDA (como A4 en Uno) línea de datos I2C

En cuanto a la alimentación del servo, los puntos clave a tener en cuenta son: el servo de 32 canales no debe obtener alimentación del tablero de control principal. Debe conectarse a una fuente de alimentación regulada de 5V o 6V. El método de cálculo actual aquí es el número de servos multiplicado por la corriente de cada servo cuando está bloqueado. Los ejemplos reales de cableado correspondientes al diagrama de programa correspondiente son los siguientes:

Conecte el terminal positivo de la fuente de alimentación externa al tablero de control.V+Terminal, polo negativoTierra

Al conectar cualquier servo específico, su cable rojo debe conectarse al puerto rojo en el mismo canal correspondiente a cada fase en el tablero de control, el cable marrón debe conectarse al puerto marrón y el cable naranja y amarillo debe conectarse al puerto de señal PWM.

Un ejemplo es que cuando un fabricante estaba fabricando un robot de 12 grados de libertad, el tablero de control principal se quemó porque la fuente de alimentación externa no estaba conectada.El método de operación correcto es utilizar una fuente de alimentación conmutada de 6V/10A para suministrar energía directamente al tablero de control.

03Código del programa Arduino (copia directa disponible)

El siguiente programa inicializa el tablero de control de 32 canales, gira el primer servo a 0°, gira el tercer servo a 180° y escanea todos los servos en un ciclo. En la función principal setPWM (canal, encendido, apagado), el ancho de pulso correspondiente al valor de apagado es: 0° es igual a 150, 90° es igual a 375 y 180° es igual a 600 (esto se basa en una frecuencia de 50 Hz y el rango de pulso es de 0,5 ms a 2,5 ms).

#incluir#incluir// Biblioteca oficial Adafruit_PWMservoControlador pwm = Adafruit_PWMservoControlador(0x40); //Dirección I2C predeterminada 0x40 #defineservoMIN 150 // Ancho de pulso de 0° #define SERVOMAX 600 // Ancho de pulso de 180° void setup() { Serial.begin(9600); pwm.begin(); pwm.setOscillatorFrequency(27000000); // Calibrar el oscilador interno pwm.setPWMFreq(50); // Retardo servo estándar de 50 Hz (10); } void loop() { // El canal 0 gira a 0° pwm.setPWM(0, 0, SERVOMIN); retraso(1000); // El canal 0 gira a 180° pwm.setPWM(0, 0, SERVOMAX); retraso(1000); // Todos los canales se escanean en secuencia para (int ch = 0; ch

32路舵机控制板程序图_舵机控制电路板_如何用程序控制舵机

Cargue el código anterior en Arduino para observar el movimiento del servo. Si los 32 canales están en estado normal, significa que el diagrama de programa del tablero de servocontrol de 32 canales ha entrado en vigor.

04Depuración y solución de problemas comunes (formato Q/A)

P1: El servo no se mueve en absoluto, ¿cómo puedo posicionarlo rápidamente?

Verifique cuidadosamente el voltaje y la corriente de la fuente de alimentación externa, use un multímetro para medir si hay electricidad entre V+ y GND en el tablero de control, pruebe un servo por separado y conéctelo directamente a la señal PWM.

P2: ¿El servo tiembla o no puede girar al ángulo especificado?

R: No hay suministro de energía suficiente. Para calcular la corriente total, la corriente de cada servo es 200 mA cuando está inactivo y 1 A cuando está en estado de rotor bloqueado. En el caso de 32 canales, se requiere al menos una fuente de alimentación conmutada de 10 A o más.

P3: ¿Falló la comunicación I2C (el escáner no puede encontrar el dispositivo)?

R: Verifique si SCL y SDA están conectados al revés. En cuanto a la resistencia pull-up, la mayoría de las placas tienen integrada 4,7kΩ, lo que reduce la tasa I2C a 100kHz.

P4: ¿Qué debo hacer si diferentes marcas de servos tienen diferentes anchos de pulso?

Calibre por separado según las macros SERVOMIN y SERVOMAX. Primero, necesita escribir un programa de prueba para rotar el servo a 0°, luego medir el ángulo real y luego ajustar el valor. Luego necesitas escribir un programa de prueba para girar el servo a 180°, medir el ángulo real nuevamente y ajustar el valor.

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

En primer lugar, A mencionó una forma, que consiste en utilizar pwm.setPWM para realizar una operación de actualización canal por canal, y esta operación no bloquea y está retrasada. Entonces, para la sincronización de múltiples servos, se recomienda utilizar la diferencia de tiempo acumulada, que se implementa a través de millis(). Este es el caso.

32路舵机控制板程序图_如何用程序控制舵机_舵机控制电路板

05Avanzado: ejemplo de control de Raspberry Pi Python

Para los usuarios de Raspberry Pi, después de instalar la biblioteca adafruit-circuitpython-pca9685, también pueden conectarse a I2C. El siguiente código hará que el servo del canal 2 oscile hacia adelante y hacia atrás:

importar placa importar busio desde adafruit_pca9685 importar PCA9685 desde adafruit_motor importar servo i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c, dirección=0x40) pca.frequency = 50 servo2 = servo.Servo(pca.channels[1], min_pulse=500, max_pulse=2500) mientras es Verdadero: servo2.angle = 0 time.sleep(1) servo2.angle = 180 time.sleep(1)

El método de conexión de Raspberry Pi y Arduino en el diagrama del programa es el mismo, es decir, SCL está conectado a GPIO2, SDA está conectado a GPIO3 y GND es una tierra común.. Antes de ejecutar, asegúrese de usar i2cdetect -y 1 para confirmar que la dirección del dispositivo es 0x40.

06Proceso completo del proyecto y sugerencias de acción.

de acuerdo conDiagrama de programa del tablero de control del mecanismo de dirección de 32 canales, puede lograr un control independiente desde el cableado hasta 32 canales en 3 horas. Para fortalecer la conclusión, debe operar en el siguiente orden.

1. El trabajo de preparación a realizar es obtener la placa de servocontrol de 32 canales YPMFG, conseguir el Arduino Uno, conseguir el módulo estabilizador de voltaje de 12V a 5V/10A y obtener 32 servos MG995.

2. Comience a cablear. La duración es de 10 minutos. Debe conectar I2C y una fuente de alimentación externa de acuerdo con el diagrama de cableado en la Sección 1. No conecte el servo primero, pero pruebe la luz indicadora del tablero de control.

3. Copie el código Arduino, instale la biblioteca Adafruit_PWMServoDriver y cambie la dirección a 0x40. Este proceso dura 15 minutos. Este es el programa de grabación.

4. Realice una prueba en un solo servo (5 minutos de duración), conecte un servo al canal 0, cargue el código y confirme que puede girar a 0° y 180°.

5. Amplíe a 32 canales, la duración es de 1 hora: conecte todos los servos uno por uno en orden y verifique la respuesta de cada canal.

6. Calibración y optimización. Este proceso dura 1 hora. Requiere medir el rango de pulso real de cada servo y actualizar el valor SERVOMIN/MAX.

Repita el punto central: el PWM generado por PCA9685 es el núcleo de cualquier placa de servocontrol de 32 canales. La clave del diagrama del programa es conectar correctamente I2C, conectar correctamente la fuente de alimentación externa y llamar correctamente a la función de biblioteca. Siempre que no haya errores en estos tres pasos, incluso si 32 canales están a plena carga, aún pueden funcionar de manera estable.

07Corrección de conceptos erróneos comunes

Respecto al concepto erróneo 1, es erróneo pensar que la placa de servocontrol se puede alimentar directamente a través de USB.Debido a que la corriente de alimentación proporcionada por USB es de solo 500 mA como máximo, incluso si se conectan dos servos, el tablero de control se reiniciará.. Por lo tanto, se debe utilizar una fuente de alimentación externa regulada para el suministro de energía.

Malentendido 2: No todos los anchos de pulso de los servos son de 150 a 600, → Esto es incorrecto. Los servos analógicos son diferentes a los digitales y se debe consultar la hoja de datos.

Existe un malentendido de que 32 canales deben usar 32 pines PWM, pero esto es incorrecto. Debido a que el bus I2C solo requiere 2 cables, al cambiar la dirección se puede lograr la función de expandir 62 canales.

08Recursos y referencias autorizadas.

Todos los datos de este artículo se basan en las siguientes fuentes verificables:

El capítulo 8 de la versión 2015 de Philips Semiconductor de la hoja de datos del chip PCA9685 tiene la etiqueta "Frecuencia y resolución PWM".

En la documentación oficial, Biblioteca de servocontroladores Adafruit PWM, la fórmula de cálculo del ancho de pulso de la función setPWMFreq() y la fórmula de cálculo del ancho de pulso de la función setPWM().

El estándar de la industria en el campo del control del mecanismo de dirección estipula que cuando el ancho de pulso de 50 Hz PWM está en el rango de 0,5 ms a 2,5 ms, corresponde al ángulo de 0° a 180°.

Puede utilizar el código y el diagrama de cableado anteriores para producir o enseñar directamente. La combinación del tablero de control YPMFG con Arduino se ha utilizado con éxito en robots hexápodos, brazos robóticos de 32 ejes y conjuntos de iluminación de escenarios. Si encuentra problemas durante la ejecución, consulte nuevamente la tabla de cableado en la Sección 1 y la lista de acciones en la Sección 5. El 95% de las fallas se deben a la fuente de alimentación o al cableado incorrecto de I2C.

Hora de actualización: 2026-04-29

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