ED BMSdiag – Kit de diagnostic Arduino CAN-BUS & OBD-II
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Shield CAN-BUS SparkFun | 1 |
| En-tête mâle 36 positions 1 rangée - Long (0,1") | 1 |
| Câble SparkFun OBD-II vers DSUB-9 | 1 |
| Câble OBD-II vers DSUB-9 | 1 |
| Shield CANdiy v2 CAN-Bus | 1 |
| Boîtier Arduino pour Arduino | 1 |
Applications et services en ligne
- Arduino IDE
À propos de ce projet
Intention
Je conduis une voiture électrique — une smart fortwo electric drive. La santé de la batterie de traction est essentielle et est maintenue par un système de gestion de batterie (BMS). Il surveille les 93 cellules pendant la charge/décharge et veille à un équilibre de tension égal. Normalement, seuls les outils de service peuvent lire les informations de cet ECU.
La voiture est équipée d'un modem GSM pour accéder aux données de statut comme l'état de charge (SOC), l'autonomie disponible et d'autres informations simples. Pendant un certain temps, le modem était en mode étendu pour recueillir des informations de diagnostic sur la voiture. Curieux du contenu, j'ai essayé de renifler le bus CAN pour savoir ce qui était transmis.
Inspiré par des projets similaires pour d'autres voitures électriques — comme la Nissan Leaf — j'ai enregistré le trafic complet du bus CAN pendant la conduite ou la charge de la voiture. Les premiers flux reniflés incluaient vraiment ces données de diagnostic — mais comment les décoder ?
Vous trouverez des détails sur le reniflage du bus CAN et l'ingénierie inverse dans un article séparé ici.
Ce dont vous avez besoin
Procurez-vous le matériel requis. Sur les voitures modernes, la couche physique se fait via bus CAN. Au moins deux shields bus CAN sont disponibles — voir la liste des composants. Vous devez vous connecter au port de diagnostic de la voiture — le connecteur OBD, alors achetez un câble ou fabriquez le vôtre. NOTE : il existe deux normes pour les câbles OBD vers DSUB-9 — choisissez la bonne ! Voir les images ci-dessous :
Quand vous fabriquez votre propre câble, c'est une bonne idée d'utiliser un vieux câble réseau à paires torsadées. Utilisez l'une de ces paires de fils pour CAN-H et CAN-L. Cela améliorera l'intégrité du signal. Aussi, NE DÉPASSEZ PAS 1 m de longueur, pour minimiser les réflexions de signal.
Démarrage
Étape 1
Préparez le matériel et trouvez un boîtier sympa pour les cartes.
Étape 2
Téléchargez le projet depuis mon dépôt GitHub. Voir les détails là-bas pour l'installation. Compilez le code et flashez-le sur l'Arduino.
Étape 3
Connectez-vous à la voiture et mettez-la sous tension. Démarrez la session de diagnostic et obtenez des informations utiles sur votre pack de batteries...
Étape 4
Utilisez un tableur et trouvez des données corrélées. Par exemple, comparez le SOC (État de Charge, du tableau de bord) avec le SOC réel du BMS. Ou tracez les tensions de cellules et voyez que certaines cellules limitent le pack pendant la charge, car elles atteignent la limite de coupure en premier...
Étape 5
Améliorez le code si vous le souhaitez — faites votre propre piratage. Le shield Sparkfun a un lecteur de carte SD, donc vous pourriez construire votre propre logger de bus CAN.
Ou vous construisez une belle interface / application affichant les données...
J'espère que cet outil sera utile — Amusez-vous bien !
Code
Logiciel Arduino ED_BMSdiag
https://github.com/MyLab-odyssey/ED_BMSdiag.git
Schémas
Pour shield CAN-Bus Sparkfun
Pour shield CANdiy
Processus de fabrication
- Guide professionnel : Animation bitmap sur écran tactile ILI9341 2,4″ avec Visuino
- Système d'éclairage DMX piloté par web – Contrôleur maître Arduino
- Construire un Spybot Arduino piloté par Bluetooth
- FlickMote : Télécommande IR à gestes pour maison connectée
- TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
- Construire une horloge maître LED personnalisée avec alarme – Visible à 12 mètres
- Horloge HSV : Un Garde-Temps Vibrant et Personnalisable pour Passionnés d'Arduino
- Véhicule Télécommandé par Android avec Raspberry Pi et Shield Moteur
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth