Módulo 4

Bus CAN: aplicaciones automotrices

Periféricos Digitales

ESP32 Mecatrónica IoT UNAM

Introducción Teórica

El bus CAN (Controlled Area Network) es un protocolo de comunicación serial estándar diseñado para permitir que dispositivos microcontroladores y dispositivos inteligentes interactúen entre sí en aplicaciones sin la necesidad de una computadora host. En el ámbito de la mecatrónica e IoT, el bus CAN tiene un papel crucial en la comunicación entre dispositivos y sensores, proporcionando una forma eficiente y confiable de intercambiar datos.

La principal importancia de CAN en mecatrónica es que permite la integración de varios sistemas en un vehículo, como la gestión del motor, frenos, dirección, entre otros, a través de una única línea de comunicación. Esto resulta en una reducción del cableado necesario y una mayor eficiencia en la transmisión de datos.

En la industria automotriz, el bus CAN es la columna vertebral de la mayoría de los sistemas de comunicación en vehículos modernos, debido a su robustez, fiabilidad y capacidad para operar en ambientes ruidosos.

Explicación Técnica Detallada

El ESP32 es un microcontrolador de bajo costo con capacidades de WiFi y Bluetooth, que también incluye un controlador CAN integrado. Para utilizar el bus CAN en el ESP32, primero debes instalar la biblioteca ESP32 CAN en el IDE de Arduino.

El ESP32 tiene tres registros importantes para el bus CAN: el registro de control, el registro de estado y el registro de error. El registro de control se utiliza para configurar el modo de operación del bus CAN, mientras que los registros de estado y error se utilizan para monitorear el estado del bus y detectar errores respectivamente.

A continuación, se muestra un ejemplo de código para inicializar el controlador CAN en el ESP32 y enviar un mensaje:

C++
#include 

void setup() {
  // Inicia la comunicación serial a 9600 baudios
  Serial.begin(9600);
  
  // Inicia el bus CAN a 500 kbps
  if (!CAN.begin(500E3)) {
    Serial.println("Iniciando CAN fallido!");
    while (1);
  }
}

void loop() {
  // Envia un mensaje CAN
  CAN.beginPacket(0x001);
  CAN.write(0xDE);
  CAN.write(0xAD);
  CAN.write(0xBE);
  CAN.write(0xEF);
  CAN.endPacket();
  
  Serial.println("Mensaje CAN enviado");
  delay(1000);
}

Ejercicios Prácticos Visuales

1

Comunicación entre dos ESP32 vía CAN

Intermedio 45 min

Objetivo: Lograr la comunicación entre dos microcontroladores ESP32 utilizando el bus CAN.

Materiales: Dos ESP32, cables de conexión, resistencias de 120Ω, transceptor CAN.

Resultados esperados: Intercambio exitoso de mensajes entre ambos ESP32.

2

Sensor con transmisión CAN

Intermedio 60 min

Objetivo: Leer datos de un sensor y transmitirlos a otro ESP32 a través del bus CAN.

Materiales: Dos ESP32, sensor de temperatura, cables de conexión, resistencias de 120Ω.

Resultados esperados: Recepción correcta de datos del sensor en el ESP32 receptor.

3

Control de actuador vía CAN

Avanzado 90 min

Objetivo: Controlar un actuador mediante comandos enviados desde otro ESP32 a través del bus CAN.

Materiales: Dos ESP32, servo motor, cables de conexión, resistencias de 120Ω.

Resultados esperados: Control remoto exitoso del actuador vía bus CAN.

Proyecto Aplicado

Sistema de monitoreo y control vehicular con CAN

Aplicación práctica en mecatrónica: Implementación de un sistema de monitoreo y control para un vehículo teledirigido utilizando el bus CAN para la comunicación entre el control remoto y el vehículo.

Integración con sensores/actuadores: Sistema completo con sensores de velocidad, temperatura y actuadores de dirección y motor.

Lista de materiales:
  • Dos o más ESP32
  • Transceptores CAN (MCP2515)
  • Sensores (temperatura, velocidad, proximidad)
  • Actuadores (motores, servos)
  • Resistencias de terminación 120Ω
  • Cables de conexión
  • Chasis de vehículo o robot
Características del sistema:
  • Comunicación robusta y confiable
  • Tolerancia a fallos y ruido electromagnético
  • Escalabilidad para múltiples nodos
  • Monitoreo en tiempo real

Evaluación y Troubleshooting

Problemas comunes:
  • Incorrecta terminación de la red CAN
  • Errores en la configuración del controlador
  • Problemas de ruido en la línea de comunicación
  • Velocidades de baudios incompatibles
  • Conexiones físicas defectuosas
Soluciones:
  • Verificar resistencias de terminación (120Ω)
  • Revisar configuración de velocidad del bus
  • Usar cable trenzado para reducir ruido
  • Verificar conexiones CANH y CANL
  • Implementar manejo de errores en código
Criterios de evaluación:
  • Configuración correcta del controlador CAN
  • Transmisión y recepción exitosa de mensajes
  • Implementación de manejo de errores
  • Funcionamiento en condiciones de ruido
  • Integración con sensores y actuadores