Antecedentes y motivación
Inicialmente, dependíamos de la preinstalación. Controladores de velocidad electrónicos (ESC) que acompañaron a nuestro demostrador de pelotón, que utiliza pequeños autos RC para aficionados, en nuestros continuos esfuerzos por desarrollar y mejorar su rendimiento. Al utilizar una señal PWM, estos ESC interactuaban con los motores de los automóviles, permitiendo así un control fundamental. Sin embargo, tenían importantes inconvenientes, incluido el control de velocidad inestable y poca retroalimentación del ESC. Estas deficiencias nos llevaron a crear un controlador de motor personalizado que se adaptara a nuestras necesidades particulares.
Problemas con los ESC actuales
Los principales problemas con los ESC preinstalados consistieron en:
La falta de información sobre la velocidad del motor o los estados de error por parte de los ESC complicó el diagnóstico de problemas como la protección contra sobrecorriente, que solo señalaba fallas mediante un LED parpadeante.
El control de velocidad era errático y cambiaba a medida que cambiaba el voltaje de la batería. Para nuestro escenario, donde mantener una velocidad constante era vital, esta inconsistencia era inaceptable.
Después del accidente se reinicia el ciclo de energía humano necesario de los ESC, comprometiendo así la eficiencia y la automatización de nuestro sistema.
Diseño personalizado de controlador de motor BLDC
Comenzamos a construir nuestro propio ESC con las siguientes características principales para resolver estas dificultades:
Control de velocidad en circuito cerrado: capacidad de regulación autónoma de la velocidad del motor.
Facilita la retroalimentación y el control en tiempo real a través de una interfaz serie en comunicación bidireccional.
Los errores se detectan, notifican y resuelven automáticamente en Informe y manejo de errores.
Opcionalmente regula el servodirección de los automóviles en función de su compatibilidad con el Steering Control.
Enfoque técnico metódico
Software
Hicimos uso de la biblioteca SimpleFOC, conocida por fuerte control del motor BLDC capacidad. SimpleFOC utiliza técnicas de control orientado a campo (FOC) para habilitar la velocidad, el ángulo y el par, entre otros modos de control. Para mantener un control exacto sobre el motor, esta biblioteca interactúa con sensores como codificadores rotatorios y sensores Hall.
Hardware
La escasez mundial de semiconductores limitó nuestras opciones de hardware, por lo que nos decidimos por el circuito integrado Trinamic TMC6140, que ofrece funciones necesarias que incluyen monitoreo de corriente y detección de cortocircuitos incluso con problemas de disponibilidad. Por su capacidad de procesamiento y disponibilidad, lo combinamos con un microcontrolador STM32 programable a través del marco Arduino.
Proceso de desarrollo
Creamos un prototipo del controlador en placas utilizando placas de desarrollo para TMC6140 y STM32, mejorando así iterativamente la configuración.
Desde placas de pruebas hasta PCB a medida, utilizamos KiCAD para el diseño utilizando técnicas exhaustivas de conexión a tierra y distribución de energía para ayudar a reducir los picos de voltaje.
Después de la validación del hardware, creamos un nodo ROS2 para incluir el controlador del motor en nuestro entorno de software actual, permitiendo así un control y retroalimentación impecables dentro del demostrador de pelotón.
conclusiones y resultados
Mediante un diseño iterativo y pruebas exhaustivas, creamos de manera efectiva un controlador de motor BLDC personalizado que cumpliera con nuestros requisitos particulares. Este nuevo controlador mejoró enormemente la confiabilidad y el rendimiento de nuestra demostración de pelotón al ofrecer un control de velocidad constante, amplios sistemas de retroalimentación y un sólido manejo de errores.
Tenemos la intención de apoyar los esfuerzos de la comunidad en general en la creación de sistemas sofisticados de control de motores mediante la publicación pública de nuestros diseños de hardware y software. Este proyecto enfatiza la necesidad de una cooperación de código abierto, así como de soluciones personalizadas para manejar ciertas dificultades técnicas.