Si estoy controlando múltiples servomotores PWM de hobby, ¿hay alguna ventaja en escalonar los pulsos enviados a cada servo?
Con lo que quiero decir, cada servo necesita ver un pulso de ancho ~ 1 ms cada 20 ms. Digamos que tengo 20 servos. Si envío un pulso de 1 ms cada ms a un servo diferente, ¿eso cambiará los picos del consumo de corriente o mejorará el circuito?
Intuitivamente, parece que enviar el pulso de 1 ms a 20 servos en el mismo tic de 1 ms podría causar un pico de corriente sincronizado, lo que maximiza las posibilidades de disparar un fusible en mi fuente de alimentación.
¿Es esto una preocupación real?
(Lo pregunto porque la biblioteca python Adafruit PWM tiene la capacidad de especificar los tiempos de subida y bajada de los pulsos de un servo dado, en lugar de solo especificar la frecuencia. No veo ninguna razón para construir la API de esta manera a menos que quieras tambalearte las señales por alguna razón).
Primero, asumiré que por "servo" realmente se refiere a servomotores de pasatiempo que están controlados por pulsos de 1-2 ms, no al significado general de "servo" en electrónica y sistemas de control. Realmente debería definir correctamente este término en su pregunta.
Estos servos de hobby solo usan el pulso de 1-2 ms como una forma de comunicar un nivel analógico. Los viejos servos de hobby completamente analógicos integraban el pulso, lo retenían y luego lo usaban como señal de control para comparar la señal de retroalimentación de posición. Los tipos digitales más nuevos miden el ancho del pulso digitalmente, luego usan ese valor para comparar la retroalimentación de posición.
De cualquier manera, la conducción del motor no está sincronizada con el pulso. La señal de accionamiento del motor se actualiza constantemente internamente al valor de control guardado derivado del último pulso. Un nuevo pulso solo cambia esta entrada de control.
Dicho esto, un paso repentino en la señal de control probablemente provocará un error a corto plazo, al que reaccionará el mecanismo de control impulsando el motor con más fuerza hasta que se asiente en la nueva posición. Por lo tanto, aunque el motor siempre está accionado, por lo general lo hará con más fuerza después de un cambio de paso en la entrada, lo que solo puede ocurrir inmediatamente después de un pulso.
En general, diría que es bueno escalonar los pulsos de múltiples servos de hobby si no es una carga para hacerlo. Tenga en cuenta que esto se produce automáticamente si utiliza un enlace de radio estándar. Estos enviarán los pulsos para cada uno de los servos de hobby que controla secuencialmente de todos modos. Si está controlando múltiples servos de hobby desde un solo microcontrolador, entonces la multiplexación también podría dictar pulsos secuenciales.
Si funciona más simplemente generar todos los pulsos al mismo tiempo, entonces adelante y no te preocupes por eso. 20 ms es poco tiempo, y la corriente adicional de un cambio repentino de entrada de control llevará más tiempo que eso en la mayoría de los casos. En el caso de cambios lentos, los pasos son pequeños de todos modos, por lo que la corriente debería ser relativamente pareja. Ponga un límite más grande en la fuente de alimentación si le preocupa.
Con los servos "analógicos" más antiguos, es muy probable que cualquier pico de corriente en el controlador del motor se corresponda con el pulso en la señal de control, por lo que su preocupación sería válida. Aunque tales pulsos tienden a ser muy estrechos y pueden manejarse con una capacitancia de desacoplamiento adecuada en su línea de alimentación, con poca probabilidad de quemar un fusible.
Con los servos "digitales" más nuevos, los pulsos de accionamiento del motor son esencialmente independientes de los pulsos de la señal de control, por lo que no hay ningún beneficio en jugar con la sincronización de estos últimos. Pero la frecuencia PWM del motor suele ser mucho más alta, con una ondulación correspondientemente menor en la fuente de alimentación, en comparación con los servos analógicos.
En un servo analógico, los pulsos PWM del motor se crean restando el pulso del servo del pulso de retroalimentación interna y luego estirando la diferencia para producir un rango PWM más amplio. Por lo tanto, el inicio de cada pulso del motor está débilmente sincronizado con el final de cada pulso de servo, y los pulsos de servo escalonados pueden reducir la corriente máxima de suministro de energía cuando se mueven múltiples servos.
La mayoría de los servos digitales generan pulsos PWM de alta frecuencia que son más fáciles de suavizar.
Servocorriente analógica HS-125MG (50 Hz PWM)
(horizontal 5 mS/div, vertical 500 mA/div)
Corriente servo digital HS-5475HB (~1kHz PWM)
En un período de 20 ms, tal vez haya problemas con el suministro de corriente. Puede encontrar útil un diodo amortiguador o de rueda libre. Sin embargo, ¿qué pasaría si enviara señales pwm digitales (0,4 mA por línea) a una fuente de corriente controlada por voltaje?
Tradicionalmente, los pulsos de los servos se alternaban de todos modos, porque se transmitían uno a la vez por un enlace de radio.
Si el movimiento de un servo en el peor de los casos toma más de 20 ms (lo que sucede), entonces varios servos se ejecutarán simultáneamente, por lo que escalonar los pulsos del servo no ayudará (mucho) a eliminar los pulsos actuales, durante los períodos de alta actividad.
Para garantizar que (digamos) seis servos nunca se ejecutarían simultáneamente a una velocidad de actualización de 20 ms, no solo tendría que escalonar los pulsos del servo, sino que cada movimiento del servo tendría que durar menos de 3 ms, una actividad muy ligera.
Entonces, ¿tal vez la API que limita la velocidad de movimiento se trata de controlar el impulso mecánico? No puedo ver que tenga mucho impacto en la fuente de alimentación.
Pulpo
Dwayne Reid
tomnexus