Controladores de motor PWM en profundidad

Consejo

WPLib tiene un amplio soporte para el control de motores. Hay una serie de clases que representan diferentes tipos de controladores para motor y servos. Actualmente existen dos clases de controladores de motor, los basados en PWM y los basados en CAN. WPLib también contiene clases compuestas (como DifferentialDrive) que permite el controlar varios objetos con un solo objeto. Este artículo cubrirá los detalles de los controladores de motor PWM; los controladores CAN y las clases compuestas se tratarán artículos separados.

Controladores PWM, breve teoría de operación

El acrónimo PWM significa modulación de ancho de pulso por sus siglas en inglés. Para controladores de motor, PWM puede referirse tanto a la señal de entrada como al método que utiliza el controlador para controlar la velocidad del motor. Para controlar la velocidad del motor el controlador debe variar el voltaje de entrada percibido del motor. Para hacer esto, el controlador enciende y apaga el voltaje de entrada completo muy rápidamente, variando el cantidad de tiempo que está en función de la señal de control. Debido a la mecánica y eléctrica constantes de tiempo de los tipos de motores utilizados en FRC®, este cambio rápido produce un efecto equivalente a la aplicación de un voltaje inferior fijo (50% de conmutación produce el mismo efecto como aplicando ~ 6V).

La señal PWM que usan los controladores para una entrada es un poco diferente. Incluso en los límites del rango de señal (avance máximo o retroceso máximo) la señal nunca se acerca a un ciclo de trabajo de 0% o 100%. En cambio, los controladores usan una señal con un período de 5 ms o 10 ms y un ancho del pulso del punto medio de 1.5ms. Muchos de los controladores usan el típico controlador RC de 1ms a 2ms.

Valores de salida Sin Procesar vs Escalados

En general, todas las clases de controlador de motor en WPILib toman un valor escalado de -1.0 a 1.0 como salida a un operador. El módulo PWM en el FPGA en el roboRIO es capaz de generar Las señales PWM con períodos de 5, 10 o 20 ms y pueden variar el ancho del pulso en 2000 pasos de ~ .001ms cada uno alrededor del punto medio (1000 pasos en cada dirección alrededor del punto medio). Los valores brutos enviados a este módulo están en este rango de 0-2000 con 0 siendo un caso especial que contiene la señal baja (deshabilitada). La clase para cada controlador de motor contiene información sobre qué los valores de enlace típicos (min, max y cada lado de la banda muerta) son así como los valores típicos punto medio. WPILib puede usar estos valores para mapear el valor escalado en el rango apropiado para el controlador del motor. Esto permite que el código cambie sin problemas entre diferentes tipos de controladores y resúmenes de los detalles de la señalización específica.

Calibración de controladores de motor

Entonces, sí WPLib se encarga de todo este escalado, ¿Por qué tendrías que calibrar el controlador de motor? Los valores que usa WPLib para el escalado son aproximados, basados en la medición de un número de muestras de cada tipo de controlador. Debido a una variedad de factores, la sincronización de un controlador de motor individual puede variar ligeramente. Para eliminar definitivamente el «zumbido» (señal de punto medio interpretada como un ligero movimiento en una dirección) y conducir el controlador hasta cada extremo, se recomienda calibrar los controladores. En general, el procedimiento de calibración para cada controlador consiste en poner el controlador en modo en modo de calibración y luego conducir la señal de entrada a cada extremo, y luego volver al punto medio. Para ver ejemplos de cómo utilizar estos controladores de motor en su código, consulte Using Motor Controllers in Code/Using PWM Motor Controllers