SAM3X CHAdeMO - v2

Open CHAdeMO with SAM3X processor

As of August 2020, I have CHAdeMO working yet again, this time with new and reliable hardware designed and built by Damien Maguire of evbmw.com. Code is on Github with a short guide. Development occurred on the OpenInverter forum. Thanks to EVTV, Damien, and all other contributors! 

Development

The old JLD505 hardware, based on the ATMega328, was running out of storage space and expansion capabilities. So I spent some time working on adapting it for the GEVCU hardware, as previously noted here. However, the GEVCU hardware is expensive and not very user-friendly. So when Damien Maguire, of YouTube fame, began working on a custom CHAdeMO control unit with the Due processor, I got to work on the software. Starting with the modified JLD505 software, I changed libraries, simplified functions, rewrote sensor libraries, and finally had the code all ready to run on new hardware - specifically, Damien's Leaf VCU. 
On August 27, I plugged into a station and put 0.3KWh into my pack, at 39Kw charge rate. So I am documenting and releasing everything I have to help the community do the same.

How does it work?

CHAdeMO is a complicated protocol. It uses a combination of CAN communication and 12V signals to establish a connection, negotiate settings, and maintain communications. Each side can disconnect the battery voltage at any time in case of a fault, and both sides constantly monitor current and voltage levels and compare them to the other side's readings. The protocol provides for charging at up to 500V and 125A, allowing 50Kw charging for most EVs.


Damien's Leaf VCU has two digital inputs and three outputs, as well as a pair of CAN busses. Using 2 inputs, 2 outputs, and 1 CAN bus, it communicates with a CHAdeMO charging station to request power. The voltage and current limits are fully configurable, as are the safety features. Power is monitored by an Isabellenhuette IVT or IVT-S shunt, which can handle over 1000 amps while measuring down to the millivolt and milliamp. My custom BMS communicates over CAN to the VCU, ensuring that the total battery voltage, individual cell voltages, and battery temperatures stay within safe ranges. 
(Image credit to JeremyW of MyNissanLeaf.com)

Required hardware


Required software


Notes

  • There are a few configuration options in the software - press 'p' in the serial monitor to see them.
  • I am open to adding support for different CAN-bus BMS systems, and possibly different voltage and current sensors. If you want something added please at least send me the entire protocol.
  • The Leaf VCU requires a single modification to function correctly. Because its inputs are protected by voltage dividers, R17 (pulldown for IN2/D7) must be removed.
  • If you don't have a Leaf VCU or don't want to dish out 300 euros, you can use a standard Due. You will need an M24M02 EEPROM, two open collector outputs, and two 12V-tolerant inputs, as well as dual CAN transceivers.



How to use

  1. Get the correct hardware and software as detailed above.
  2. Follow the wiring diagram to set up the CHAdeMO port, contactors, relays, et cetera.
  3. Set up the IVT shunt -- it should be connected to the other CAN port (CHAdeMO goes on the big connector, ISA on the small one). There is a configuration sketch in the SimpleISA library. Make sure you're getting readings from it before moving on.
  4. Test CAN communication at a CHAdeMO station. Don't connect HV yet, and be sure to insulate those fat HV wires. The station should power up and try an isolation test. Then, it will attempt to start charging. If it fails you're all set to move on.
  5. Install the hardware in your vehicle, configure the software, and plug it in! With luck you will have a working DIY fast charge system.






Share by: