Control de Motores VESC mediante Bus CAN y ESP-IDF
En Itsaslab, la eficiencia es innegociable. Para mover nuestras plataformas marinas, utilizamos controladores VESC (Vedder Electronic Speed Controller), que ofrecen un control FOC (Field Oriented Control) excepcional. Sin embargo, la clave no es solo mover el motor, sino saber qué está pasando dentro de él.
El Bus CAN: El Sistema Nervioso
Para comunicar nuestro ESP32-S3 con el VESC, utilizamos el bus CAN, que en el ecosistema ESP-IDF se denomina TWAI (Two-Wire Automotive Interface). Este estándar nos permite una inmunidad al ruido total, algo crítico cuando los cables pasan cerca de motores que manejan altas corrientes.
Configuración del Driver TWAI
A diferencia del uso de librerías simplistas, configurar el driver TWAI directamente nos permite filtrar solo los mensajes que nos interesan (como el voltaje de la batería o las RPM), ahorrando ciclos de CPU:
// Configuración técnica del bus CAN a 500kbps (estándar VESC)
twai_general_config_t g_config = TWAI_GENERAL_CONFIG_DEFAULT(GPIO_NUM_5, GPIO_NUM_4, TWAI_MODE_NORMAL);
twai_timing_config_t t_config = TWAI_TIMING_CONFIG_500KBITS();
twai_filter_config_t f_config = TWAI_FILTER_CONFIG_ACCEPT_ALL();
if (twai_driver_install(&g_config, &t_config, &f_config) == ESP_OK) {
twai_start();
}