Project sEVen Pt9: Traction DC2DC converter Bring Up

Posted

in

, ,

by

Tags:

Another video out…

Project Update

Well I didn’t kill myself, that’s always a bonus!

In fact I didn’t get anywhere near… yet!

This post is a bit late, I wrote it a few weeks ago but didn’t finish it off… but here it is now 🙂

This is where things start to get real. Until now I’ve been playing around with mechanicals, a bit of 3D scanning and some low voltage electronics. But now I need to get the Traction DC2DC converter running.

Background

So, I’ve

  • bought a project car,
  • got it road legal,
  • pulled it apart and scanned it
  • Then we got into a rabbit hole with gearboxes

But the whole gist of the project revolves around the motor. Switching a 2.0L Duratec for an electric motor in a Caterham Seven is no mean feat. There’s just so little room. I wanted to try and achieve the same performance in the conversion as I had in my 420R, which meant I was going to need about 200+bhp and a sensible range to be able to do some sensible road trips that didn’t just turn into a “Public EV charging stations of the UK” tour.

But there’s the problem. I couldn’t find a motor that had enough power and that would fit in the car. I’ve covered this a few times, so won’t go over it again, but I do still get people ask me why I ended up where I am.

And the motor choice ended up creating three core design decisions:

  • Motor
  • DC to DC Converter
  • Gearbox

The Motor

So, the reason comes back to the motor. The only motor I could find that would deliver the power I wanted AND would fit in the car (a bit of basic requirement) was the Helix SPX-177 – which critically sits in the transmission tunnel of my SV chassis.

But that motor, and it’s associated inverter, is an 800V system.

And that meant I’d either need to find a battery pack design that could deliver at least somewhere near the 800V, or I’d have to think of another way of getting 800V DC to the inverter.

No matter how I tried to slice it, I couldn’t find an 800V battery pack solution. The problem always came down to volumetric density. I didn’t care too much about gravimetric, that would just have to be what it was, but the amount of kWh I could fit in any given volume was going to be my problem. And I couldn’t make anything work.

So about the time I was thinking about this, back in 2024, I came across a solution – probably not an elegant solution, in fact a bit of a sledgehammer to crack this nut, but it was at least a solution. And that was to use a ma-hoosive DC2DC converter. Something that would convert from whatever maximum voltage I could cram into the car, to the 800V I needed.

DC to DC Converter

Bring in the Brusa BDC668. Brusa seems to have developed this for the Hydrogen fuel cell market – where the fuel cell voltage are usually quite low and need to be boosted up to the drivetrain voltage. Perfect for what I wanted, if not a little of the big side – only just fitting in my chassis.

So this component, the DC to DC Converter, takes whatever voltage I can cram into the car and converts it to the 800V I need for the motor.

Gearbox

The next problem the motor threw up was that to achieve its max power it needed to run at up to 24,000rpm (there’s some caveats there that I won’t get into here).

A Caterham Seven needs about 2,000 rpm at the wheel to deliver 120+mph. And because the motor was fitting in the front of the transmission tunnel, I could also retain the prop-shaft and crucially the diff.

With the combination of 24,000rpm motor, 2,000rpm at the wheel and a 3.6ratio differential, I was light on gearing. 2,000rpm multiplied by the 3.6 diff ratio gets you to about the max speed of the Duratec motor (of course) or about 7,5000rpm. But my motor’s spinning at 24,000, I’m way short of being able to use the full speed of the motor.

So I need another gearbox between the electric motor and the differential… of about 3.5:1.

It also helped that a gearbox on the motor would bridge the physical gap to the prop-shaft. A gap that couldn’t really be stretched by just making the prop-shaft longer… increasing the prop-shaft length reduces it’s maximum speed, and extending one all the way from the diff to where I could realistically shove a motor down the transmission tunnel resulted in a max speed way below the 7000 rpm I needed. So a gearbox helps to bridge the maximum prop-shaft length.

Big gap to fill between differential and motor (shown with gearbox helping)

So… long story short:

  • I needed the motor I chose because it was the only one that fit
  • Which meant I needed an massive DC2DC converter
  • And also a new gearbox

Those are the main biggies, when it comes to project choices. I’m sure others may have come to a different set of conclusions from the ones I made… but of the 4 other Seven conversions that I’ve got close to, 3 have made some sort of compromise similar to mine.

Bringing Up the DC2DC Converter

So given all of that, I needed to get all my new components up and running.

I had initially thought I’d get the battery pack running first, along with the charging and battery management for it.

But I soon realised, with a set of ID3 batteries that I’d just bought and that were fully charged, I actually couldn’t charge them until I’d taken some energy out of them. And I might as well get the drivetrain running first, to do exactly that.

And the first chunk of the drivetrain I’d need to get going was to be able to generate the 800V needed by the inverter and motor from somewhere, so why not get the traction DC2DC converter running first (there’s another low-voltage DC2DC that manages the 12V battery recharging, so I need to refer the the Brusa unit a the traction-DC2DC).

Now, this Brusa traction-DC2DC converter isn’t just something you plug in, turn on and it does its thang. It needs to be programmed. And that gets done on a CANbus.

So I need a reasonably intelligent device sat on the Brusa’s CANbus telling it what to do.

I originally thought an AIM Technologies PDM could do that.

It would also be able to soft-fuse and manage the rest of the 12V systems in the car, but in the end I decided it wasn’t programmable enough.

Which is what led me to the EVBMW.com, OpenInverter.org ZombieVerter. This project was originally conceived to control Tesla drive units. But since I first looked at it a few years ago it has matured to support other drivetrains and also more flexibility in its software model. So I selected the ZombieVerter as my vehicle control unit – the brain of the car.

(Just to be clear, the ZombieVerter is actually quite a small brain, with a single core STM32 processor. The DC2DC converter and Inverter almost certainly have more processing power than the ZombieVerter “vehicle brain”, but you’ll just have to run with the analogy for the moment).

And that gets us to the first big project task.

To get the Traction-DC2DC running, I’ll also need:

  • to get the ZombieVerter running so it can program the T-DC2DC over CANbus AND
  • I’ll need to get the AIM PDM running so I can control the various 12V devices (T-DC2DC, Zombie, etc).

AIM PDM

AIM Technologies PDM32

The AIM PDM is a bit of a luxury. In theory I could just use regular thermal fuses and be done with it. But a project like this has different power needs at different stages of the project. Early on, I want to be treading carefully… keeping current limits low until I get confidence in the electronics, electrical and software.

So a PDM makes a lot of senses. I can run different configurations from the AIM Race Studio software – setting various limits for all the different components depending on what I’m testing. I can have a low-current config when I add a new device and move to higher levels configs as I get more confidence. That’s a whole lot better than using regular blow-able fuses.

Getting the AIM PDM to work was a bit of a brain-ache. It all makes perfect sense when you know how it works, but it’s not at all intuitive… IMHO.

My initial bring-up was hampered by a bad USB cable (spent a few days trying to figure that out) and then getting the 12 button keypad to work was also a few days scratching my head until the AIM support guy did a screen share with me and could say the keypad had a bad config. Both issues were resolved really quilky by AIM, but even so… frustrating.

But the idea is that the AIM PDM will do the basic 12V powering of the new EV bits. I’ll leave the existing 12V fuse board in the Caterham for the moment, no need to break something that’s working fine at the moment. Eventually the whole car 12v will be switched the the AIM, but not now.

I also have a 6-inch display connected to the PDM. That may get used as a main dash-screen (removing the dials in the current dash) or I might feed the dials from the ZombieVerter – it can do that.

There’s also a 12 button keypad attached to the AIM unit that I’m using at the moment as an ignition switch and starter button. I also have some basic logic set up for 3 buttons to be used as the DNR controls (Drive, Neutral, Reverses) of the car. I’ll mount the keypad where the gearstick used to be.

The PDM also has an intertial measurement unit and a GPS. The latter isn’t really something I’m after, but could be a future project. But the IMU is going to be useful. Seven’s have a mechanical inertia switch in line with the fuel pump in case you get too tilted on a track. I can use the AIM IMU for that function and so power the car down if that happens.

ZombieVerter

With the AIM PDM running it was over to the ZombieVerter.

It’s basically a STM32 processor running a 1ms tick that then services, 10ms and 100ms timer routines. There’s a basic 10ms state machine controlling the run-mode of the car while the charging logic runs at the 100ms tick.

The software has some rudimentary support for “device drivers” where different drive-train components can be selected from a web-interface (more accurately they can be set over a serial port, but the Zombie can be ordered with an ESP8266 daughter card that implements a web-interface which in turn drives the serial interface to the STM32).

My first job here was to get the ZombieVerter working with what I had, without any changes to its source code.

The first problem there was the the interface from the STM32 to the web server ESP8266 was proving very unreliable. This is now accepted as a problem with the ESP8266 (not enough memory, and probably not fast enough… and some non-ideal Wifi Access Point code), but my reporting of problems didn’t generate a lot of interest, so I had to fix it myself.

But once I’d figured that out I could control the STM32 fine from the web-interface and could get it running… after I’d wired up an accelerator, and calibrated it, and set some reasonable voltage thresholds – the ZombieVerter won’t go into run-mode unless it thinks it has a decent voltage coming out of a battery pack.. but you can just fudge those parameters in its web interface. It’s less easy to fudge an accelerator, so I just wired one up and calibrated it.

OK, so the Zombie is running.

Next I needed to try and get the Brusa DC2DC converter connected and running.

Brusa BDC668 (Traction) DC2DC Converter

This is a beast.

I’m sure the national grid has beastier DC2DC’s but for a road going vehicle, this one’s pretty beefy.

The documentation for this devices is pretty ok. Not great, but also not bad. But the one thing it isn’t, is a manual for my project. I’d looked pretty closely at the data for the device before buying one, but there were gaps. It looked like it would do what I wanted – and be just the ticket – but the documentation was mainly written to solve a Hydrogen Fuel Cell problem and not a Battery Electric Vehicle problem. So this was a big project jeopardy.

Some basics: the Brusa 668 is a bidirectional DC2DC – perfect for me when I want to “motor”, taking power from the battery pack. But also great in reverse (not as in the direction of the car… as in the direction of the current) where we’re generating, or “regen” mode. So, when we’re motoring, the device boosts a low voltage from it’s low-side to a high voltage on it’s high-side.

Then when we’re generating, it goes into a “buck” mode and drives current from the high-side, high voltage, to the low-side, low voltage.

Perfect for what I want.

But the jeopardy is around the pre-charging of both the low-side and high-side of the device. The manual is a bit vague in places and you could infer that both the low-side and high-side need to be pre-charged before the converter will fire up.

That might mean I’d have to precharge to the low-side to something around 250v AND the high side to 800V. But hang-on, I need the DC2DC converter to generate the 800V, how can I pre-charge to 800V if the thing generating the 800V won’t start ‘cos it’s not precharged!

But I took a punt. It just seemed bonkers that I would have to do that. It couldn’t work the way the manual implied. But then the whole basis of my project was at risk if it didn’t work the way I thought it should.

Ok… time to wire it up and see.

I spent a few days checking and double checking the comms connector on the BDC668. I really really didn’t want to blow it up ‘cos I’d read the pinout wrong and fed 12v in GND and GND into 12v. I was playing it ultra cautious.

But that sort of went ok, and I managed to hook it up and could see it was chatting on the CANbus.

Then I realised a really should try and get some voltage to it on its low-side.

Low Side Contactor Box

And so next up was to get a connection from a low-side voltage source (battery or desktop power supply etc) into the BDC668.

In the final vehicle I’ll need contactors sitting between the battery pack and the BDC668. The contactors provide a safety feature, quickly disconnection the traction power from the drivetrain if there’s a problem, and also the contactors provide a pre-charge – limiting the in-rush current into the BDC668.

Seeing as I was going to need to get all that working in the final vehicle, I decided I might as well get it running on my test bench now. That way I can test all the timings for the contactors in my software, and that’s sort of what this test bench is all about… doing stuff on a bench so I don’t have to test it for the first time in the vehicle.

It’s also another important point here. I’m new to a bunch of stuff in this sort of project. I’m an electronics and software guy, but I’ve not handled the sorts of connectors needed here, nor all the systems and software. So the test bench is a way for me to try out things like connector crimp tools and software applications, before I need to do it for real on my car. So… it might look way over the top that I’m using orange high-voltage cables everywhere, but that’s me trying out, and getting used, to playing with them before it becomes really important that I don’t screw things up.

I was going to just throw the contactors and pre-charge resistor into a project box from Farnell or RS, or something.

Oh… and by the way… I wanted all the contactors and resistors in a box so I didn’t accidentally brush into the high-voltage electronics while I was moving around my desk. And I didn’t want to sit with PPE on every time I fired up the bench. So putting these bits and pieces in a box was for safety and so I could more quickly bring the bench up and down without putting on all the gloves and stuff.

So… a project box.

Well, the project box was going to need holes for wires and bosses for the contactors to be fixed to. I could have had the components loose in a box, but that sounded like a recipe for disaster if the box fell over or even worse fell of a desk. So firmly fixing the contactors and resistors down was important to me. And keeping away from my swinging arms as I moved around my office.

That led me to making my own 3D printed contactor box. I could print it in orange so I subconsciously knew it was dangerous, and I could make it a perfect fit for my components.

One evening’s sofa time later, and an overnight print, and I had a contactor box.

I also threw in a Vero-board with 3 12v LED’s on it. That way I could tell if the contactors were energised or not. These contactor thingies go clunk when they switch, but that can happen really quickly and there’s no obvious external display that they are open or closed.

Also given that I’m putting them in a box and so couldn’t just reach over and “feel” if they click when energiesed (let alone the danger in constantly touching something with high voltage on it) I decided that LEDs and a perspex top for the box was the perfect development setup.

No high voltages I can touch and nice visible indication that the contactors are working.

There’s also something about the human visual system where you can see the LED’s sequence at high speed much better than you can feel the sequencing when you touch them. Lets not talk about touching high voltage components again though… it ain’t gonna happen!

So I have a contractor box.

coding a Zombie

Right, so I have:

  • The AIM PDM, display and keypad are configured
  • The ZombieVerter is powered and the web-interface works
  • There’s an accelerator pedal configured on the Zombie
  • A contactor box is connected to the Zombie and the Zombie can sequence the contactors in the right order.

Time to get the Brusa DC2DC working.

And that meant writing code for the ZombieVerter STM32.

But that was a lot easier than I thought. An evening’s googling and I had the Zombie code compiling and downloading to the STM32.

I just had to write a bunch of code for the STM32 to talk to the Brusa 668 now.

I now had a decision. The Zombie code has a few “device types” that it knows about. Vehicles, inverters, shunts, transmissions etc.

You can select a device for say, vehicle, from a list and the code then works with that device.

But there’s no options for my 668 or inverter. So code needs to be written.

But the Zombie code also doesn’t have the concept of a traction-DC2DC converter. I’d either need to add that whole concept to the code or find another way.

Another factor here is that the Zombie code is open source. And the guys that administer the code, rightly, are very protective of it changing. They’ve done a lot of testing of the code in a dangerous use-case. So they don’t like accepting code from newbie’s like me. And that means any changes I make are probably not going to get accepted upstream (into their GitHub repository), even if they did want to support the Brusa BDC668 and my Helix inverter/motor combo.

So… because I can’t get my changes accepted upstream and they’re likely to make a lot of future updates, I don’t want my fork of the code to diverge too far from the upstream.

Which means I probably don’t want to make the wholesale change needed to add the traction-DC2DC concept to the code. I need a different way.

After pondering this for a few days while I was doing other stuff, I realised my traction-DC2DC was actually doing quite a lot of what the Zombie shunt device is doing. Measuring battery pack voltages and currents etc. So if I make my traction-DC2DC look like a Zombieverter shunt device then maybe I don’t need so many changes.

And so that was my way forwards. I added new devices to the Zombie project, but did so by adding whole files supporting my bits and pieces. I made the fewest number of changes to the main Zombie code I could.

And that got me a Zombie build that was talking to my Brusa BDC668.

At this point I took a few more detours looking at CANbus sniffing and Wireshark, but I’ve already written about those.

Getting it All Working

Now I could talk to the traction DC2DC, I needed to see if I could get it running.

But I didn’t want to just fire it off at max power and see what happened. I didn’t even want to get it running at any high voltages. I just wanted to see it boosting low-side voltage up to a high-side voltage. And in doing so I could probably also check that I could do that in such a way that the 668 way limiting it’s high-side current to a low enough level that it was effectively doing it’s own high-side precharging.

So I set all the 668 voltage and current limits to the lowest I thought I could get away with and connected up a 9V battery to the low-side inputs, through the contactor box.

Yes, that’s right a 9V battery. I wanted to start as small as I thought I could get away with. and AA battery was going to be too small. And a 12V car battery had too much energy in it.

I was a little worried that the internals of the 668 were in some way capably of charging pumping. So if I got the CANbus messaging wrong and I set the device up backwards or something, then I didn’t want it pumping any current back into my voltage source and causing it to do something silly, like blow up. So I started small.

And as it happens, I really wasn’t sure what direction the 668 thought was forwards. The user manual said one thing, but the currents being reported by the device on the CANbus (even without any low or high-side voltage applied) were all negative. That wasn’t very encouraging.

But without any support from Brusa (“all the application notes are in the support portal”.. errr… there are no application notes) I had to keep going, carefully.

So I upped a few of the current limits, from 5A to 10A and also made the lower limits negative (-1A). That stopped the device from issuing current limit warnings at least.

Ok. So nobody’s dead yet. Proceed.

That was as much as I could do with the 9V battery. I was going to need a bigger board… power supply.

However, I didn’t want to just plug in an ID3 battery. There’s as much energy in a 1kWh battery as in 1kg of dynamite. And an ID3 battery has 6.8 equivalent kg of dynamite holed up in its aluminium casing. So I was being cautious and wanted more control.

Time to break out the trusted bench power supply. This thing’s moved 5 or 6 times to different offices and lab setups over the past 25 years. We bought a ton of them in about 2000 and this is the only one left. 🙁

So I hooked the two sides of it up in series and set it to output the same 9V I’d had with the 9V battery.

And I got the same result… that was good.

With a bench multi-meter on the high-side (output in this sense) of the 668 I could see that any voltage I applied to the low-side was leaking through to the high-side with about a 2V drop.

So it definitely wasn’t boosting, but the high-side was doing something at least.

I thought about this for a few hours, then decided I’d increase the low-side voltage in 5V steps and see what happened.

9v, 15v, 20v, 25v

All no joy.

I paused there and thought about things for a few more hours. But decided there wasn’t much for it and so I proceeded. I’m not sure I’d thought about where I’d stop, but I was probably going to sleep over things at 50V going in.

I should also mention that I’d set the 668 to output 260V (constant voltage high-side mode) on the high-side. The manual is very clear that it won’t boost to anything lower than 250V, so 260 seemed to make sense. I wasn’t going to go anywhere near 800V yet.

So I started again.

30V – noop.

35V… hang on a minute. There’s 260V reading on my multi-meter. It’s working. Blimey!

I really wasn’t expecting that. I was sort of expecting to get to 50V and have to rethink. I was expectingn some other setting to be needed somewhere that I hadn’t appreciated.

But I didn’t need anything else. I’d got it going!

That was it. I’d been telling myself that getting the 668 going was the next milestone. And that ws the point I was going to do another youTube video. I’d originally thought, after the last video, that I was going to be a couple of weeks to get to this point. But it had been two months.

Time to spend a week getting a YouTube done and then get back to the 668.

Errr… that didn’t happen. The YT took me the best part of a month… grrr! I really should stop doing all these whizzy YouTube info-graphics that nobody watches!

YouTube Video: Behind the Scenes

Another one of those big videos I say I’ll never do again.

Here’s the timeline…

PTEVIS Pt 9 Final Cut Pro Timeline

Comments

Leave a Comment

Discover more from PurpleMeanie

Subscribe now to keep reading and get access to the full archive.

Continue reading