Nota del editor: el otoño pasado, EEWeb anunció su lanzamiento. concurso de diseño, patrocinado por Arduino y Altium para desarrollar proyectos de diseño imaginativos e innovadores para sistemas de control de motores utilizando la placa Arduino Portenta H7.el ganador es Anunciado En noviembre, obtuvimos la licencia de Altium Designer para completar el proyecto con la placa Arduino Portenta H7. A continuación se muestra un recorrido por uno de los proyectos ganadores.
Universidad del Azuay por Carlos Zeas y Andres Cabrera
Tabla de contenido
Antecedentes: borrador original
Nuestro proyecto se enfoca en mejorar el sistema de control de motores de vehículos eléctricos, anteriormente utilizado en competencias de carreras por el E-Team de la UDA (abreviatura de Universidad del Azuay en Ecuador). En este proyecto, proponemos una tercera versión del controlador (la primera y la segunda versión se modelaron en diferentes microcontroladores). Con el nuevo Arduino Portenta, no solo queremos mejorar la eficiencia energética de los motores y agregar nuevos sensores de corriente y voltaje, sino que también queremos mejorar el diseño electrónico general de algunas etapas del controlador, como el precontrolador, etapa de potencia, etc. Estoy aquí.
Antecedentes: Equipo UDA E
La Universidad del Azuay ha participado anteriormente en competencias de movilidad eléctrica. En uno de estos contenidos, estudiantes y docentes de la UDA diseñaron e implementaron un kart eléctrico de carreras. Esta implementación involucró el desarrollo de circuitos eléctricos y electrónicos diseñados principalmente para controlar y monitorear motores de corriente continua sin escobillas (BLDC) de tamaño mediano.
Los estudiantes diseñaron muchos circuitos que contenían muchos tipos diferentes de transistores, como MOSFET, IGBT y COOLMOS. Estos dispositivos se utilizan para crear controladores trifásicos para motores. Sin embargo, esta tarea es una de las más complejas e importantes para el sistema. Se necesitó mucho diseño y experimentación para crear un controlador trifásico que pudiera mover un motor a las órdenes del usuario.
Además del problema original, el equipo enfrentó muchos otros inconvenientes: la fabricación de PCB es lenta en nuestro país debido al tiempo de envío y personalización. El diseño de PCB para sistemas de potencia es mucho más difícil debido a los grandes efectos de corriente de los dispositivos cercanos en la placa. Un mal diseño también crea problemas de calor. Las restricciones presupuestarias y la disponibilidad de dispositivos y equipos electrónicos para probarlos fueron otra limitación que el equipo tuvo que superar.
Por esta razón, los motores tenían circuitos diseñados para control en lazo abierto. El motor funcionó bien, pero necesitábamos monitorear otros parámetros y agregar un control de circuito cerrado para mejorar el rendimiento en una variedad de situaciones.
sugerencia
- Mejorando el controlador trifásico de un motor BLDC
- Controlador de bucle cerrado: control trapezoidal y orientado al campo (FOC)
- Adquirir la señal del sensor de pasillo del motor y la señal del sensor de corriente
- Integrar todas las partes usando Arduino Portenta
- Diseñe una nueva PCB para todos los componentes usando Altium Designer
Nuevo diseño
El nuevo diseño consta de múltiples PCBs adecuados para adaptar todas las partes al Arduino Portenta.
Portenta usa 3.3 V, así que decidí construir una pequeña placa adaptadora para proporcionar niveles de voltaje para el nuevo controlador.
La placa del controlador previo consiste en el chip STRDRIVE601, un controlador de puerta de alto voltaje de medio puente triple compatible con una entrada de 3,3 V (por ejemplo, Portenta) y se usa normalmente para controlar los transistores de potencia de la siguiente etapa. El chip está rodeado de otros elementos para albergar todas sus funciones. Por ejemplo, se puede usar un circuito simple con un amplificador y algunos pasivos para monitorear la corriente de las fases de un motor. Para las entradas, tiene control total sobre las tres fases del motor. También puede ingresar un nivel de voltaje para acelerar o frenar el motor.
La placa del controlador de potencia consta de seis controladores MOSFET de medio puente. Dado que el motor usa más corriente de la que puede manejar un solo MOSFET, colocamos tres MOSFET en paralelo para cada fase del controlador, proporcionando un total de 18 dispositivos.
Se agregaron resistencias de alta potencia de precisión a cada fase del controlador para permitir el monitoreo de la corriente absorbida por cada fase del motor.
código
Basé el código en una biblioteca de código abierto llamada . FOC simple, hecho para Arduino. Esta biblioteca implementa algoritmos FOC para BLDC y otros motores. Este algoritmo permite el control total de los motores BLDC, incluida la posición, el par y la velocidad de acuerdo con la retroalimentación (sensores) disponible en cada motor.
Para probar el motor, creé tres piezas de código diferentes basadas en el ejemplo de la biblioteca SimpleFOC.
- Vel1.ino Este boceto de Arduino es la primera prueba. Consta únicamente de entradas analógicas (acelerador/mariposa) que indican la velocidad del motor. Esta sencilla prueba nos permitió evaluar las características del motor y la funcionalidad de la PCB. En este modo, el motor funciona en control de bucle abierto.
- Vel2.ino Este boceto de Arduino se creó para probar la funcionalidad anterior con sensores Hall integrados en motores. Probé esto para ver la precisión de las lecturas del sensor Hall y pude ajustar las constantes.
- Vel3.ino Este boceto final llama a funciones en la biblioteca para realizar el control de velocidad FOC y establecer los parámetros del controlador PID.
Conclusión y advertencias
- Estamos muy contentos y emocionados de usar el nuevo Arduino Portenta. Previo a este concurso, repasamos las nuevas características de este dispositivo. Espero ver qué más puede hacer este dispositivo.
- Como se trata de un dispositivo nuevo, algunas funciones del nuevo Portenta no estaban disponibles en la biblioteca SimpleFOC. Por ejemplo, tenía una placa de conexión Portenta, pero la biblioteca no era compatible con la biblioteca de la placa de conexión. Entonces, aunque había más de 9 puertos PWM disponibles, solo podía usar 6 de ellos (los que venían con la placa Portenta). Esto fue suficiente para controlar el controlador del motor. Sin embargo, tuve que cambiar algunos valores en la biblioteca para usar todos los pines PWM. En última instancia, se necesita más experimentación para poder controlar todos los lados alto y bajo del controlador de medio puente. Portenta Board y sus bibliotecas actualmente no son totalmente compatibles con la biblioteca SimpleFOC.
- Para aprovechar la velocidad del procesador Portenta, necesitaba leer todos los valores actuales de las resistencias de derivación en la placa de transistores de potencia. Sin embargo, el procesamiento del comando Arduino analogRead() parece seguir siendo lento. Nuevamente, se debe realizar más experimentación para ejecutar el proceso analogRead() por separado de los algoritmos PID y FOC (por ejemplo, utilizando las capacidades de subprocesos múltiples de la placa).
- Estoy muy contento con los resultados, pero necesito experimentar mucho más y mejorar el código para lograr una implementación limpia utilizando solo la placa Portenta y todas sus características.
- Los archivos adicionales disponibles en este tutorial contienen el diseño y el código utilizados en este proyecto. Las fotos y los videos también muestran el sistema en acción.
Descargar Esquema/Código Arduino
descargar video