DIY Electric Car Forums banner

Another DIY DC controller mock

56K views 167 replies 22 participants last post by  valerun 
#1 · (Edited)
...there is something mystically attractive in power electronics...

so after getting my 10kW charger design to a reasonably good place, I wanted to live dangerously and have wired some 1200V, 600A IGBTs together for a quick DC controller setup. Would love to get your feedback. The idea is more about learning advanced power electronics rather than building any kind of production version (which we got covered quite well by the EVnetics guys ;-)

Having read a bunch of docs on how to design these things without having them blow up right away, I am using, among other things:
1. Laminated DC input bus with 1/4" polycarbonate between 2 large copper plates.
2. Lots of parallel caps mounted with studs on one line with IGBT leads to reduce current loop area
3. On-IGBT control boards with SMD 8A drivers (all to minimize inductance between driver and gate)
4. +/- 15V driver to ensure turn-off
5. Emitter current balancing resistors (0.3Ohm) to sync turn on and turn off of the parallel IGBTs
6. Output cables connected to the opposite sides of the controller to avoid concentration of current in one pair of devices

You can see some pics of the setup below - including my very sophisticated 'load system' - a bucket of cold water with a 5" iron powder toroid with ~80 turns of 8x14 gauge copper wire (15 mOhm, 800 microHenry at zero current; according to micrometals.com software, saturating to ~1/3 of the inductance at 100A etc).

In my first test run, I've used a 30V battery (I know, not super-impressive but hey, I didn't want to have to catch plasma balls in case something went wrong ;-), switched at 10kHz, and went to 250A 'motor' current.

Couple of scope captures attached. You can see (images numbered in order they appear - some images in the next post due to limit of 10 per post):
1.1. no ringing on gates. good thing
1.2. Turn-on/off takes ~1us. ok for 100us cycle.
2. Peak gate current of 4A both ways. Rg=5Ohm. I drive both SMD drivers by one A3120 isolated 2.5A driver.
3. There is some ringing on the +/-15V DC rail for SMB driver boards - to the tune of ~2V at ~0.5Mhz. I thought it's passable - let me know what you think.
4. Now this is where I'd REALLY love to hear your input: at 250A, I can see negative IGBT emitter spikes of -80V at turn-off (ringing back to zero within 400ns or so at ringing frequency of ~10Mhz). At the same time, I can see positive IGBT collector spikes of +40V. So the total spike swing is ~120V, or ~4x the input DC voltage - for the total voltage stress of 5x the input DC voltage. That is not cool. I made a conclusion that I am driving these IGBTs too fast for freewheeling diodes (which are same model IGBTs with shorted G and E) to catch the negative inductive undershoot from the load. So I am going to try 10Ohm Rg (now at 5Ohm) and lower the switching frequency to 5kHz. What do you guys think????

Thanks,
Valery.

PS. I am using the same control board I've developed for my charger (http://www.emotorwerks.com/cgi-bin/VMcharger.pl). Just finished adapting code to the controller duty, as well. Surprising amount of stuff seems to be reusable (current limiters, precharge circuits/logic, etc).
 

Attachments

See less See more
10
#94 ·
Went with 6r8 on each gate and 15r "main" and a 10r with schottky in parallel with the 15r for faster turn on. Time will tell if i need to make changes but i figure i've tested it as far as i can on the bench.

I'd be very interested in those devices :) Got a part number?
 
#96 ·
long time no update. Lots of time consumed by polishing the charger - see http://www.diyelectriccar.com/forums/showthread.php/10kw-60a-diy-charger-open-source-59210.html for updates (PFC stage, EEPROM storage of parameters, etc).

Anyway, now getting back to this. Hope to have some update end of weekend. In the meantime, some IGBT porn: http://cgi.ebay.com/NEW-1PCS-FZ1600...ltDomain_0&hash=item35ae6197d0#ht_2009wt_1110

1200V 1600A contunuous collector current (3200A repetitive pulse)! Rise time 230ns, fall time 150ns! 1.3V Vce drop at 1000A!

$500 new on ebay!

The only potential issue is it requires external connection of switch emitter to freewheeling diode's cathode. Which adds 50nH or so, or 250V spike for 1000A switched at the max capability of this device... Still, even with 600VDC rail (for, say, dual 11" Kostovs in series), you are far from 1200V rating... hmm, some food for thought.

Also, 15uC gate charge means 30A driver chip...
 
#98 ·
Have you had any problems with EMI? My school project, a 500amp IGBT controller keeps crashing. Tapping RESET on the board brings it back to life. First thing i plan to do is make all wires as short as possible, and move the Microprocessor away from the IGBT driver, with the driver bolted to the IGBT, as that run is supposed to be as short as possible, from what i have read.

Any tips?
 
#101 ·
trying to size up the cap bank for this controller. Question: what is the appropriate amount of voltage sag to allow during the IGBT on-period? I know that high-frequency current pulsing is bad for the batteries so the caps have to provide most of the energy to the power stage. Do you know what it means in terms of allowable voltage sag during the on-time? Or the voltage sag does not matter and as long as I have much lower ESR on caps than on battery pack, I will be fine?

thx!
 
#102 ·
so on the long drive back from LA (with 150 more CALB cells, no less - woohoo!), did some calculations. In R(cap)<<R(battery) approximation, I got for the battery current during on-time of the IGBT (Ton):

I(battery) = Ioutput * (1 - exp(-Ton/(R(battery)*C)))

So if one wants battery current ripple to not exceed 100A at output current of 1000A, one would need exp(-Ton/(R(battery)*C))=0.9, which means

Ton/(R(battery)*C)=0.1, or C=Rb * 0.1 / Ton

Which, at R(battery)=50mOhm (100 CALB 100AH cells in series), switching frequency of 10kHz, and duty cycle of 50% (worst for the caps), would mean

C = 0.05 * 0.1 / 5*10e-5 = 10,000uF

Something like that. I might have missed a factor of 2 here to account for the fact that the battery continues to supply 500A current in this case so the caps need to supply only extra 500A during Ton (not full 1000A). In which case, 10,000uF would be sufficient for 2000A output.

Of course, to get R(b)>>R(c) you need film caps or a lot of elcaps. In the former case, you will need a lot of film cap to get the right capacitance. In the latter case, you need a lot of elcaps to get the ESR low enough and at that point your capacitance is overkill...

After looking at some elcap datasheets, seems to me 1000-2000uF caps are a sweet spot in terms of hitting both capacitance and ESR requirements roughly at the same time for 10kHz switching. And one would need 10 or so of those...

Am I on the right track here?
 
#103 ·
largely talking to myself on this thread it seems ;-)

Anyway, hooked up with the guys at SBE who make sweet power ring caps - film, 1000uF 600V in a 2" thick, 7.5" diameter with just TWO nanohenry inductance! Think of using 2-4 of those. If anyone is interested in a group buy, let me know.

Also, considering switching from a micro-based PWM driver to a dedicated chip-based driver. Something like LM2524D, datasheet at http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS008650.PDF. Page 9 has a reference circuit. Variable frequency, fully accessible error amp, cycle-by-cycle current control.

The arduino would run throttle readout loop and set the current reference for a PWM chip. Would also run less time-critical stuff like comms, temp control, etc.

What do you guys think?

V
 
#104 ·
Hello V, not much to add but since you ask for it... :D

Anyway, hooked up with the guys at SBE who make sweet power ring caps - film, 1000uF 600V in a 2" thick, 7.5" diameter with just TWO nanohenry inductance! Think of using 2-4 of those. If anyone is interested in a group buy, let me know.
I think you mean these, shown here: http://www.engineeringtv.com/video/SBE-Power-Ring-Film-Capacitor. Are those $1,200 a pop or so?

Also, considering switching from a micro-based PWM driver to a dedicated chip-based driver. Something like LM2524D, datasheet at http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS008650.PDF. Page 9 has a reference circuit. Variable frequency, fully accessible error amp, cycle-by-cycle current control.
Dedicated PWM is the way to go unless you do FPGA or something similar. I like analog loops with digital references but that chip looks good.

The arduino would run throttle readout loop and set the current reference for a PWM chip. Would also run less time-critical stuff like comms, temp control, etc.

What do you guys think?

V
I've never done anything with Arduinos and it might be a good platform for what you need at the moment. But I'd start looking into breaking away from that and running your own micro with the things you need and none of what you don't. The Atmel micro on those is really great and can stand on it's own with little peripheral devices. I put them on everything I make, short of sprinkling them on my cereal. They come in dozens of packages and can run up to 20Mhz with external crystals or 8 Mhz with their internal resonator. They are so cheap and flexible I rarely use other logic, I/O expanders, etc and instead use a small micro instead.

Anyway, there's some babbling for ya...:)

JR
 
#111 ·
So that little circuit will produce a pwm output that is dependent on throttle position and motor current? Can the frequency be changed? If so that is very interesting. It would need a little bit of extra logic to ensure the transistors never run at 100% duty and that if they do it shuts down the driver. Also probably a hardware overcurrent stage. Not very difficult to implement ......

My next thought then would be ramp rate. Can it be controlled?
 
#112 ·
Yes.

Yes, but. Frequency is set via external RC network so yes it is adjustable. Just not on the fly.

re 100% duty - is that the trigger or rather over-current is the right trigger? this circuit will shut down on over-current (threshold set via a resistor divider on pin 4).

The ramp rate is easy. Two ways:
1. My idea is to use this in addition to the microcontroller which will set the reference throttle voltage to this circuit. Micro can manage the slew (ramp) rate. Micro also can watch over the rest of the controller and shut things down if something's not right (e.g., zero throttle, non-zero current, etc).
2. If you don't want micro at all, then you can add an RC low-pass filter after your throttle pot midpoint and bypass the R with a reverse diode. You would set ramp rate by RC values. Diode would quickly drain cap when throttle is reduced. One issue will be that even Schottky diodes will have 0.3-0.4V drop on them so last 50-100A of current reduction to zero will happen at your slew rate (i.e. not immediately).

One critical thing this does not have (without a micro, that is), is a protection against IGBT failure. If they short out, this thing will detect overcurrent and shut down the PWM but that would not have any effect. That, and a slew rate, are my primary reasons to keep the micro. OTOH, you can just rely on your manual emergency breaker in such a case...

V
 
#113 ·
That sounds very good indeed. Regards a shorted igbt , what you can do is use something like a cmos nand gate. If pwm=0 and current is not zero then open main contactor. I have this in software on my controller right now. It aloso uses a brake signal input to disable throttle. So another avenue is if brake is on and current is non zero after say 100ms then open main contactor.
 
#115 ·
are you talking about the clock for PWM or throttle ramp RC? Either case, temp stability is dependent on RC components. Using mica cap probably best for temp stability (http://en.wikipedia.org/wiki/Types_of_capacitor). But why would we care so much about PWM frequency stability? no harm IMO if it moves by 10% or so, no?

V
 
#116 · (Edited)
Valerun,

why don't you like the PWM output of the Arduino? A normal Arduino has serveral hardware PWM channels, they should do more or less the same thing as the separate logic chip you are planning to use...

And how is your throttle input controlling the current in your circuit? You don't want the throttle signal controlling the pulse width (which corresponds to the average voltage), but the current. Since voltage and current are not directly related in a motor, you have to use a PID loop or something similar to change the pulse width based on the requested current / throttle signal.

The pulse width will change while the car is accelerating, even if you keep the throttle at a constant value/position...

Or does the PWM chip contain some kind of PID loop / comparator (I haven't looked into the data sheet yet )? If so, please ignore my mumbling... :)

Update:
Ok, just looked into the data sheet (and your circuit). There is a comparator and you compare the throttle input with the current measured by the hall sensor, very clever...
 
#118 ·
Thanks guys for comments.

Got the circuit done on a breadboard (I know, not the best practice but couldn't wait for the PCBs ;-).

Hooked the throttle to the Arduino which did the recalibration into the right reference voltage range and then fed that into the PWM chip circuit. Could run throttle directly to the PWM chip circuit, as well - recalibrating with resistors instead.

It does work. The PWM circuit automatically adjusts the duty to maintain the current commanded. Tested to 1000A at 100V battery voltage (using the inductor as load). Hooked up to the Kostov 11 - worked as expected in neutral. Next step is putting into the car and trying to move around.

Which we will try tomorrow with a proper emergency disconnect system we just built.

V
 
#119 ·
almost forgot - we do have a bit of a noise issue. Does not affect the operation but makes a bit of irregular acoustic noise so somewhat annoying. Sounds like an over-sensitive current limiting picking up noise. We've done some no-brainer tweaks such as low-pass filters on potentially noisy inputs etc. Next step is shielding I think. Will report if it helps. Let me know if you have any other ideas..
 
#120 ·
I used to be the guy who went from theory to practive in 2.7 seconds. You've stolen my job!:D:D

When you say you used the arduino to scale the throttle do you mean the throttle was read into the adc and then worked some maths and outputted a scaled pwm to the circuit?

I would like to see a hardware overcurrent sense and shutdown just in case. And i'd be VERY interested to see the emergency disconnect. I have yet to see one that I like....
 
#123 ·
Arduino is used to remap the throttle input into a reference signal that has to be matched to sensor zero-current point and sensitivity. That ref signal is fed into the pwm chip circuit which automatically adjusts PWM duty to keep the current through the motor steady. Hardware overcurrent and shutdown are parts of this chip.
 
#122 ·
Thanks JR. Check out our emergency disconnect below ;-) Worked like a charm.

Also, guys, those SBE caps (10 pieces) are in the mail - let me know if you want a couple of pieces before we put them all into some use ;-) Datasheet attached.

V
 

Attachments

#124 ·
went around the block yesterday. No issues (heating or otherwise). The scope shows familiar 200V overshoots on turn-off which is not an issue for us with a 300V pack and 1200V devices.

Funny part of the story. At some point last week we have got a bit tired of our PID loop issues and got a couple of Paul's Open Revolt boards - just in case. This weekend, assembled both. Tested working as expected. So all good - except the fact that we also managed to tune our own boards in the same time. So now we have 4 working control boards and one power stage ;-)

Some more road testing tomorrow & Tue.
 
#126 ·
PID loop fully tuned in the car - per http://en.wikipedia.org/wiki/PID_controller using Ziegler–Nichols method.

Starting on the next-gen power stage tomorrow - 4x 600V 600A half-bridge devices with laminated bus and power ring film caps from SBE. Will post some pics once we get the bus machined.
 
#130 ·
to test these new intelligent 600A 600V half-bridge IGBT modules, we have assembled what I think may be the smallest 600A (peak) 300V controller. Based on the control board adopted from our open-source charger, and using one PM600 module. It holds 250A for ~2 min without ANY forced cooling - just an upside down heatsink in the picture ;-)

On the scope, overshoot of ~100V at 600A output. No snubbing (apart from the film cap on DC bus). With a simple RCD turn-off snubber, can probably go to 400VDC pack voltage...

$100 bill for size reference, overall probably 10x6x7 inches... Fans would add ~1 more inch to the latter dimension. That would be 500 cubic inches. Or almost 400W/in^3 peak ;-))

In other news, the 650VDC PFC was tested to 15kW output (more details in the charger thread - http://www.diyelectriccar.com/forums/showthread.php/10kw-60a-diy-charger-open-source-59210p9.html). Same power stage tested as a DC-DC booster from a 100V battery)
 

Attachments

#132 ·
Hello V, sort of unrelated to the main topic but, how did you get a shop to take your car for painting without having had an accident? Around here in Miami, no shop will paint your car unless there's an insurance claim involved that they can scam. I mean, you can go to Maaco and get a $4.95 paint job but it'll look that price.

Don't forget the before/during/after pictures!

JR
 
#133 ·
Hello V, sort of unrelated to the main topic but, how did you get a shop to take your car for painting without having had an accident? Around here in Miami, no shop will paint your car unless there's an insurance claim involved that they can scam. I mean, you can go to Maaco and get a $4.95 paint job but it'll look that price.

Don't forget the before/during/after pictures!

JR
Dude I'm sure you just need to ask around more. That would be like a repair shop saying they wont repair your car if its not warenty.

The auto customizing/painting industry is huge!!!
 
#134 · (Edited)
quick photo update. Those 14 gauge plates turned out to be such an overkill!! Bending those is a b**ch. Should have gone with 22 gauge or so. After all, 1000A continuous at 4-6A/mm^2 across a foot-wide bus needs <1mm thick sheet. The rings on the right side of the sheet are for mounting 9-inch diameter film caps - one on each side of the bus.
 

Attachments

This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top