Controlar los motores y servos de CC con un solo pca9685

1

Tengo un proyecto de Raspberry Pi (robot con ruedas y servos) y me gustaría controlar los motores y los servos al mismo tiempo. Estoy tratando de usar PCA9685 + L298N para conducir los motores.

El problema al que me estoy enfrentando es que parece que el PCA9685 tiene un solo reloj, por lo que solo puedo configurar la frecuencia PWM una vez para todos los pines.

Hasta ahora, tengo entendido que si quiero conducir motores de CC con PWM necesito configurar la frecuencia PWM en al menos un par de 100Hz, digamos 500Hz

Sin embargo, si quiero conducir un servo (SG90) necesita que el reloj se configure en 50Hz

¿Significa que solo puedo usar la placa para servos o motores de CC?

¿Existen mejores enfoques para manejar motores de CC desde RPi? Me gustaría mantener la salida de sonido mientras estoy conduciendo, así que no quiero usar pines PWM directamente desde RPi :)
Me gustaría mantener el uso de la CPU lo más bajo posible, así que tampoco estoy seguro de si debería usar el software PWM para eso.

    
pregunta Leonti

1 respuesta

0

El PCA9685 no es ideal para la conducción de servos, ya que proporciona una resolución muy baja aparte de la frecuencia de cuadros de salida fija. Pero dado el bajo precio de la placa, podría ejecutar fácilmente dos de ellas (admite múltiples direcciones I2C) y utilizar una velocidad de fotogramas diferente para cada placa.

La velocidad de fotogramas de su señal de servo en el SG90 debería alcanzar al menos 100Hz, y he usado la placa PCA9685 de Adafruit para controlar muchos servos y LED, y es fácil de programar. Por supuesto, hay variaciones del fabricante en los servos para YMMV. Si desea ejecutar la velocidad de fotogramas del servo a 300Hz, normalmente tendrá que pasar a un Servo Digital, lo que la mayoría hace para lograr una respuesta de comando más rápida. La MCU utilizada en los servos digitales normalmente funcionará con cualquier velocidad de cuadro desde aproximadamente 40Hz hasta 300Hz. Sin embargo, parece que los 300 Hz son bajos para los requisitos de la unidad PWM del motor de CC, por lo que, de nuevo, creo que dos placas serían la mejor solución.

El mayor problema con el PCA9685 es la baja resolución cuando se conduce un servo. Tiene un intervalo de 4096 y si está ejecutando sus servos a 50Hz (20 ms), significa que su rango de pulso de 1 - 2 ms solo tiene un conteo de 204 (menos de 8 bits de resolución), lo que le brinda una resolución de 100 puntos por encima y por debajo del punto cero centro 1.5ms. Algunos servos funcionarán desde 0,5 ms hasta 2,5 ms (y, sin duda, la mayoría de los digitales pueden ajustarse para esto), pero esto solo le da un recuento de 406 puntos que tiene una resolución inferior a 9 bits.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas