ED BMSdiag – Kit de diagnóstico Arduino CAN‑BUS y OBD‑II para vehículos eléctricos
Componentes y suministros
| Componente | Cantidad | Notas |
|---|---|---|
| Arduino UNO | 1 | Placa principal |
| Shield CAN-BUS SparkFun | 1 | Interfaz CAN para Arduino |
| Header macho 36 posiciones 1 fila (0.1") | 1 | Para el shield CAN-BUS SparkFun |
| Cable OBD-II a DSUB-9 (SparkFun) | 1 | Estándar internacional para makers |
| Cable OBD-II a DSUB-9 | 1 | Estándar alemán/europeo para makers |
| CANdiy-Shield v2 CAN-Bus Shield | 1 | Voltaje de E/S seleccionable 3.3V/5V, compatible con placas de 3.3V |
| Caja para Arduino | 1 | Agotada en tienda oficial, disponible en distribuidores |
Aplicaciones y servicios online
- Arduino IDE
Sobre este proyecto
Intención
Conduzco un coche eléctrico, un smart fortwo electric drive. La salud de la batería de tracción es esencial y se mantiene mediante un sistema de gestión de baterías (BMS). Este monitoriza las 93 celdas durante la carga y descarga, asegurando un equilibrio de voltaje uniforme. Normalmente, solo las herramientas de servicio pueden leer información de esta ECU.
El coche lleva un módem GSM para acceder a datos de estado como el estado de carga (SOC), la autonomía disponible y otra información básica. Durante un tiempo, el módem estuvo en modo extendido recopilando información de diagnóstico del vehículo. Por curiosidad, intenté escuchar el bus CAN para saber qué se transmitía.
Inspirado por proyectos similares para otros coches eléctricos, como el Nissan Leaf, registré todo el tráfico del bus CAN mientras conducía o cargaba el coche. Las primeras capturas incluían esos datos de diagnóstico, pero ¿cómo decodificarlos?
Encontrarás detalles sobre el sniffing del bus CAN y la ingeniería inversa en un artículo separado.
Qué se necesita
Consigue el hardware necesario. En coches modernos, la capa física se realiza mediante bus CAN. Hay al menos dos shields CAN disponibles (ver lista de componentes). Debes conectar al puerto de diagnóstico del coche (conector OBD), así que compra un cable o haz el tuyo propio. NOTA: Existen dos estándares para cables OBD a DSUB-9; elige el correcto. Ver imágenes abajo:




Al fabricar tu propio cable, es buena idea usar un cable de red de par trenzado viejo. Usa uno de esos pares para CAN-H y CAN-L, mejorando la integridad de la señal. También NO superes 1 metro de longitud para minimizar reflexiones de señal.
Primeros pasos
Paso 1: Preparar el hardware
Prepara el hardware y busca una caja adecuada para las placas.
Paso 2: Descargar y programar
Descarga el proyecto desde mi repositorio de GitHub. Consulta los detalles de instalación allí. Compila el código y flashea el Arduino.
Paso 3: Conectar al coche
Conecta al coche y enciéndelo. Inicia la sesión de diagnóstico y obtén información útil sobre tu paquete de baterías.


Paso 4: Análisis de datos
Usa una hoja de cálculo para encontrar datos correlacionados. Por ejemplo, compara el SOC (Estado de Carga, del salpicadero) con el SOC real del BMS. O grafica los voltajes de las celdas y observa cómo algunas limitan el paquete durante la carga al alcanzar primero el límite de corte.


Paso 5: Mejoras y personalización
Mejora el código si lo deseas. El shield SparkFun tiene lector de tarjeta SD, así que podrías construir tu propio registrador de bus CAN. O crea un frontend/app bonito para visualizar los datos.
¡Espero que esta herramienta sea útil! ¡Diviértete!
Código
Software ED_BMSdiag para Arduino
https://github.com/MyLab-odyssey/ED_BMSdiag.git
Esquemáticos
Para shield CAN-BUS SparkFun:
Para CANdiy-shield:
Proceso de manufactura
- Guía Profesional de Animación Bitmap en Pantalla Táctil ILI9341 2.4″ con Shield para Arduino
- Sistema de Iluminación DMX Controlado por Web – Controlador Maestro Arduino
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Reloj HSV: Reloj Vibrante y Personalizable para Entusiastas de Arduino
- Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón