ED BMSdiag – Arduino CAN‑BUS & OBD‑II Diagnostische Kit
Onderdelen en benodigdheden
| Onderdeel | Aantal | Opmerking |
|---|---|---|
| Arduino UNO | 1 | Hoofdcontroller |
| SparkFun CAN‑BUS Shield | 1 | Voor CAN‑bus communicatie |
| Male‑Header 36‑polig 1‑rij (0.1″) | 1 | Voor SparkFun CAN‑Bus shield |
| SparkFun OBD‑II naar DSUB‑9 kabel | 1 | Voor internationale makers |
| OBD‑II naar DSUB‑9 kabel | 1 | Voor Duitse/Europese makers |
| CANdiy‑Shield v2 CAN‑Bus Shield | 1 | IO‑spanning selecteerbaar 3.3V/5V |
| Arduino Box | 1 | Behuizing voor de printplaten |
Apps en online diensten
- Arduino IDE – Voor het programmeren van de Arduino
Over dit project
Doelstelling
Ik rij in een elektrische auto – een smart for two electric drive. De gezondheid van de tractiebatterij is cruciaal en wordt beheerd door een Battery Management System (BMS). Dit systeem monitort alle 93 cellen tijdens laden/ontladen en zorgt voor spanningsbalans. Normaal kunnen alleen servicetools informatie uitlezen van deze ECU.
De auto is uitgerust met een GSM‑modem voor statusdata zoals staat van lading (SOC), bereik en eenvoudige info. Een tijdlang stond de modem in uitgebreide modus voor diagnostische gegevens. Uit nieuwsgierigheid probeerde ik de CAN‑bus te 'sniffen' om te zien wat er werd verzonden.
Geïnspireerd door vergelijkbare projecten (zoals voor de Nissan Leaf) heb ik de complete CAN‑bus verkeersstroom opgenomen tijdens rijden en laden. De eerste opnames bevatten inderdaad diagnostische data – maar hoe decodeer je dit?
Details over CAN‑bus sniffing en reverse engineering vind je in een apart artikel.
Wat heb je nodig?
Moderne auto's gebruiken CAN‑bus als fysieke laag. Er zijn minstens twee CAN‑bus shields beschikbaar (zie componentenlijst). Je moet verbinden met de diagnostische poort van de auto – de OBD‑connector – dus koop een kabel of maak er zelf een.
Let op: Er zijn twee standaarden voor OBD‑naar‑DSUB‑9 kabels – kies de juiste! Zie de afbeeldingen hieronder voor de pin‑uitgang.
Bij zelf maken van de kabel: gebruik een oude twisted‑pair netwerkkabel. Gebruik één van de gedraaide paren voor CAN‑H en CAN‑L. Dit verbetert de signaalintegriteit. Ook: overschrijd niet 1 meter lengte om signaalreflecties te minimaliseren.
Aan de slag
Stap 1 – Hardware voorbereiden
Zet de hardware klaar en zoek een geschikte behuizing voor de printplaten.
Stap 2 – Software installeren
Download het project van mijn GitHub‑repository. Zie daar voor installatie‑instructies. Compileer de code en flash deze naar de Arduino.
Stap 3 – Verbinden met de auto
Sluit de kit aan op de auto en zet de contact aan. Start de diagnostische sessie en ontvang nuttige informatie over je batterijpakket.
Stap 4 – Data analyseren
Gebruik een spreadsheet‑programma om correlerende data te vinden. Vergelijk bijvoorbeeld de SOC van het dashboard met de echte SOC uit de BMS. Of plot de celspanningen en zie welke cellen het pakket beperken tijdens laden omdat ze de afsnijgrens als eerste bereiken.
Stap 5 – Uitbreiden en verbeteren
De SparkFun shield heeft een SD‑kaartlezer, zodat je een eigen CAN‑bus logger kunt bouwen. Of bouw een mooie frontend/app om de data te visualiseren. Ik hoop dat dit tooltje nuttig is – veel plezier!
Code
ED_BMSdiag Arduino Software
https://github.com/MyLab-odyssey/ED_BMSdiag.git
Schema's
- Voor SparkFun CAN‑Bus shield
- Voor CANdiy‑shield
(Schema‑afbeeldingen zijn beschikbaar in de originele projectpagina.)
Productieproces
- Professionele gids voor bitmap-animatie op de ILI9341 2,4″ TFT Touchscreen Shield
- Web-gestuurd DMX-verlichtingssysteem – Arduino Master Controller
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- HSV-klok: Levendige, aanpasbare klok voor Arduino-liefhebbers
- Bouw een Android-bestuurd extern voertuig met Raspberry Pi Motor Shield
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing