Quick Charge Mod - CH4D3M0

Ford Focus Electric Forum

Help Support Ford Focus Electric Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.


Well-known member
May 20, 2016
The Valley of the Sun
Since taking possession of the CHAdeMO quick charge hardware from Sefs, I've posted most of the code to Github (https://github.com/truss-cpi/FFE-CHAdeMO) along with some other data. In parallel I've designed a "shield" for the EVTV CANDue that should contain every low voltage thing needed to manage a CHAdeMO connection. Combine that CANDue and Shield with the port, contactors and HV wiring, and you have everything you need.

I've sent out for a set of 3 prototype boards which should be arriving in the next few days. I found 3 ADM3052 ICs (the least common component) and I've bought them to use with these three boards. From there I'm looking to build one out completely to test, and if it works I'm happy to sell the others to anyone that's considering installing this mod on their Focus.

If I'm doing my math right the rest of the board components, beyond the ADM3052 chips I've bought, would total about $45. There's some wiggle room particularly with pin header selections but that doesn't change it much. So, if anyone is interested in one of these 2 other boards, let me know and I can sell you one to use for yourself.

Just to keep numbers round, let's say $55 for a board with the ADM3052, you add your $45 in other components (I'll have a list up on the GitHub soon) and a $99 EVTV CANDue and you're got all the low voltage stuff ready to pair with a CHAdeMO port and contactors.

Obviously this is all contingent on validation of the one I build out and the ADM3052s won't be here for a few weeks. Stay tuned.
The boards have arrived

At this point I have all components with the exception of the ADM3052 CAN Transceiver chips - but I just got confirmation they shipped out from Shenzhen. Not sure how long it will take them to get here but once they do, I can reflow the three SMD chips on the boards and then start hand soldering the rest.


Unrelated to the CHAdeMO board itself; now that I have that CCS module it's apparent there are "bolted" bus connections inside it so anyone with a CCS enabled Focus has a more easily accessed point to tap in for a CHAdeMO port if they are so inclined, rather than opening the TCM and tying in there. They are located under the CCS control board so you couldn't really go in from the "back" but it would be possible to drill into the top, bottom or front to get directly to the bus bars.
Soldered up the board and tested what I could. All joints seemed good. No smoke when I have it power. I did find out I used the wrong size resistor for an indicator LED I added.

Took it to run a test - no dice. The charger acted like nothing was plugged in. Started rechecking the schematic and found out I had misplaced a cap early on. Easy enough to modify the board with some green wire repair.

Ran another test, same deal. The Arduino is running and outputting serial monitoring data, so that's not a problem. Dug deeper into the schematic and found I also missed a 1K resistor, but that was REALLY easy to put into the system.

Tried again, still the same. At this point I'm going to need to dig pretty deep to see where this is stumbling.
Been a while, figured it was time for an update.

I've found various issues in the board as you expect with a first prototype, stuff missing, stuff that's wrong, stuff that wasn't caught in the original circuit mapping and errors that propagated through the chain.

At this point I've validated the basic mechanical functions of the board - it correctly reads inputs, can set outputs and trigger the relays. CAN bus traffic from the car is getting into the Arduino and output is writing to the correct pins, but it seems that the output from the ADM3052 is dead. I get CANBus data if I hotwire the original eval board into the system.

Not sure if the chip was damaged during soldering, fake/counterfeit or DOA. I'm going to take the chip off the eval board and try again. Then use the empty board to test the other chips and see if any of them work. I'll let you know how it goes.
I'm going to order a new set of optocouplers along with all the various passives and start on a new board. Pretty sure I burned out one of the chips while testing. Haven't given up.
Alright, slow going. Since I was ordering a bunch more stuff - and since it's obvious my current boards would need rework to be usable at all - I figured I may as well start over with a breadboard version for validation.

The older circuit used some sparkfun optocouplers that I copied over as is, but was always sort of skeptical of. They were intended for 5v/3.3V isolation and were being used for 12V with some higher value resistors. Since at least one optocoupler seems to have failed (though possibly from heat), I went looking for a proper 12V/3.3V isolation circuit and found one to copy. Since I can decide if the logic will be inverted or not in software, I was able to omit a few components and simplify things along the way. The new version also uses through hole optocoupler chips, so the CANBus chip is the only surface mount component left.

In the process of integrating those changes I found out I had some output pins flipped. Not likely to smoke anything but I'm sure it didn't help things work. So add that to flipped CANBus lines, misrouted data lines, incorrect placement of components that turned out to be not needed at all and a few other things; I'm pretty much running out of ways to do it wrong.

So now I'm trying to build it up on the breadboard and see if it behaves correctly. If so, I'll see about doing another shield prototype. Might put the CANBus chip on a breakout to help with routing and future assembly too.
I know that is a breadboard, but it looks like a spagetti board. ;)
Fingers crossed!
Tested that circuit with one of my "new" ADM chips and saw NOTHING coming out of the CAN pins. I'm going to desolder the known good chip to test this circuit again but, given the difficulty of sourcing that chip, I've ordered high speed optocouplers to use with a regular CAN transceiver.

That ADM3052 isn't crazy special, it just has optocouplers built into it to be a single chip solution. It's pretty clear Sefs wanted as many pre-fabbed parts as possible, so I certainly don't fault the choice.

With the change away from the ADM3052, all of the components will be through-hole form factor, so it should be possible to set this up on a proto board like this one:

The shipment of components would have been here Thursday, but apparently UPS destroyed the package. I'll continue to keep you posted. That package also has a bistable solenoid to use with my EVCC to test CCS charging.
Got my new chip and the high speed isolators. Been making progress setting up the new circuit and have learned some interesting things along the way.

If the Rx pin on the Due isn't pulled high, it will not output on the TX pin. That lead to a bit of head scratching. Basically it thinks a higher priority device has control of the bus and it's waiting for it's turn. Might actually be why I wasn't getting output from the other chips. I'll have to re-check.

The lowest speed the CAN spec supports is 40kbit/sec and that's confirmed as the lowest bitrate that still gives output from the Due. Building and testing at low speed since I'm using an Arduino as an Oscilloscope and it maxes around 15K samples/sec. I can't view the waveform in full detail, but I can at least see the frames.

I had hoped I could avoid needing to to use transistors to undo the inversion that happens through optoisolators, but that doesn't look workable. I was able to drop them from the monitoring isolators since I can invert the logic in SW, so the count hasn't changed.

Maybe, just maybe, I'll have this ready to try this weekend.
Alright. Good news and bad news. Bad news, I don't have a final version of this circuit working.

Good news, I now truly know why. Turns out the original power supply in the circuit I documented and traced - the one that says +DC In, -DC In, Ground and +5V - is actually a 12V to 12V isolated supply. That meant the ADM3052 was getting 5V when it expects 7+, so it was never enabling CAN output to the charger side.

Only fried 1 supply figuring it out.

That means the original version of the shield could be made to work with a new rev and an updated supply chip. Not sure how I'm going to proceed.
So, work continues. After realizing I needed to get a 12V source to drive a relay, the contactors and the CAN chip, it dawned on me just how much power that would require. The contactors alone need ~16W with the 12V relay and CAN chip adding on top of that. It's not an excessive amount of power BUT the Arduino Due has a 1A diode on the input - meaning I would either need to have some parallel 12V hookup that bypassed that or risk burning that diode out during use. Past that, 15W+ isolated 12VDC-12VDC supplies are not cheap or particularly compact.

I managed to get legitimate access to the CHAdeMO spec documentation and confirmed that pin 2 of the charger connection is required to be able to provide up to 2A of current at a nominal 12V. That gives me a budget of 24W that does not need to pull from the car at all, meaning I can get away with a far smaller supply.

But it gets better. Turns out the optoisolator components are not a strict requirement and the isolation test is actually just done between the positive and negative DC conductors to ensure it is not at risk of arcing/shorting when it ramps up current. Obviously that would be bad. The spec explicitly notes that the optoisolators shown in the reference circuit can be replaced with transistors or relays as needed. Optos are still often used to help with noise and level mismatches but are not strictly required.

So with all that said, I may be able to drastically simplify things on this design. No isolated supply, no difficult to source isolated CAN chip, no optoisolators to support a non-isolated CAN chip, no optoisolators on my control relays, no optoisolators on the monitoring pins. Conceivably, I might even be able to drop 2 of the relays, which makes this whole thing WAY easier to build.

So, keep an eye out, a new minimalist rev is coming.
This is further than I've ever gotten with anything but the original hardware/circuit

24 parts total. All easily sourced. Going to need to bring along my laptop and CAN sniffer to monitor what's going on. Possibly write in some extra debugs on the Arduino program to track the process. It "started" the session but didn't actually start sending current - though the current requests come from the car side.

If nothing else, I have to make sure that it's not just shutting down the CAN output - this chip will stop transmitting if it doesn't see any other activity on the CANBus. I'd hope the charger keeps sending frames but if it does not, I might need to make some more changes.

Edit: I need to remember the Due runs 3.3V I/O. I'm going to smoke my CAN1 RX pin without even realizing. So, add 2 resistors to the part count...

Edit2: Confirmed I did NOT kill my secondary CAN RX pin. I now have a voltage divider on that output from the CAN transceiver and I'm just sending raw 3.3V to the TX input since that is high enough to read as logic high for 5V.

This is what I'm working with currently: