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

The acronym PWM stands for Pulse Width Modulation. For motor controllers, PWM can refer to both the input signal and the method the controller uses to control motor speed. To control the speed of the motor the controller must vary the perceived input voltage of the motor. To do this the controller switches the full input voltage on and off very quickly, varying the amount of time it is on based on the control signal. Because of the mechanical and electrical time constants of the types of motors used in FRC® this rapid switching produces an effect equivalent to that of applying a fixed lower voltage (50% switching produces the same effect as applying ~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

In general, all of the motor controller classes in WPILib take a scaled -1.0 to 1.0 value as the output to an actuator. The PWM module in the FPGA on the roboRIO is capable of generating PWM signals with periods of 5, 10, or 20ms and can vary the pulse width in 4096 steps of 1us each . The raw values sent to this module are in this 0-4096 range with 0 being a special case which holds the signal low (disabled). The class for each motor controller contains information about what the typical bound values (min, max and each side of the deadband) are as well as the typical midpoint. WPILib can then use these values to map the scaled value into the proper range for the motor controller. This allows for the code to switch seamlessly between different types of controllers and abstracts out the details of the specific signaling.

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