H-bridge driver for a 90VDC motor

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
I've now re-made the PCB and completely assembled it. Among the changes I've made are:
  • The use of an ir2101 high-low side fet driver, with independent inputs
  • The inclusion of a 100k resistor between gate and source of every FET, to guarantee an off-state bias at power up
  • I'm now using HCPL-9030-000E digital isolators, instead of optos. These isolators are far faster, about 20ns minimum pulse width vs 5us to that of optos.

That last chip has a very serious setback that I hadn't considered when I designed the thing. From its datasheet:

Capture.PNG

That means that on power up, the output is at an ambiguos state. Regardless of the input state. And they need to be initialized as described to have a known state afterwards.

This is dangerous. How can I possibly initialize each isolator without risking the possibility of a short circuit? Worse yet, what if there's already a short circuit situation even before power up?
 

kubeek

Joined Sep 20, 2005
5,796
I suggest you use an optoisolator with logic output, but not those capacitive coupled or whatever like the one you have shown.
 

GopherT

Joined Nov 23, 2012
8,009
I've now re-made the PCB and completely assembled it. Among the changes I've made are:
  • The use of an ir2101 high-low side fet driver, with independent inputs
  • The inclusion of a 100k resistor between gate and source of every FET, to guarantee an off-state bias at power up
  • I'm now using HCPL-9030-000E digital isolators, instead of optos. These isolators are far faster, about 20ns minimum pulse width vs 5us to that of optos.

That last chip has a very serious setback that I hadn't considered when I designed the thing. From its datasheet:


That means that on power up, the output is at an ambiguos state. Regardless of the input state. And they need to be initialized as described to have a known state afterwards.

This is dangerous. How can I possibly initialize each isolator without risking the possibility of a short circuit? Worse yet, what if there's already a short circuit situation even before power up?

Don't connect your MOSFET drivers directly to power. Have the Microcontroller turn them on through an I/O pin and a transistor. One for the two low side, make sure they are off, then the high sides.
 

ronv

Joined Nov 12, 2008
3,770
Would you happen to know one that is that fast?
I've now re-made the PCB and completely assembled it. Among the changes I've made are:
  • The use of an ir2101 high-low side fet driver, with independent inputs
  • The inclusion of a 100k resistor between gate and source of every FET, to guarantee an off-state bias at power up
  • I'm now using HCPL-9030-000E digital isolators, instead of optos. These isolators are far faster, about 20ns minimum pulse width vs 5us to that of optos.

That last chip has a very serious setback that I hadn't considered when I designed the thing. From its datasheet:


That means that on power up, the output is at an ambiguos state. Regardless of the input state. And they need to be initialized as described to have a known state afterwards.

This is dangerous. How can I possibly initialize each isolator without risking the possibility of a short circuit? Worse yet, what if there's already a short circuit situation even before power up?
There are quite a few here.
http://www.mouser.com/Optoelectroni...Rl=6zsftZer5jZ1ywtex5Z1z0smizSGT&Ns=Pricing|0
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
Thanks Gopher and Ron for the suggestions.

Three things, though:
  • My current digital isolator allows for a minimum pulse width of about 6 us (considering rise and fall times), while kubeek's is 35 ns, although it's an obsolete part.
  • I already did a through search in digikey, and the one I liked the most (due to its characteristics and price) is the TLP2662(F)
  • The thing that's bothering me now, is that all of those fast digital optos have an inverted output! :mad:. That is, on power up, there's the chance that the thing will start conducting before the MCU has a chance to shut if off. Besides, if there's some sort of power loss at the MCU, things could be disastrous. One of my goals is to keep the circuit as simple as possible, and I don't like the idea of buffering the opto's output through an inverter before it reaches the fet driver.
 

kubeek

Joined Sep 20, 2005
5,796
The thing that's bothering me now, is that all of those fast digital optos have an inverted output! :mad:. That is, on power up, there's the chance that the thing will start conducting before the MCU has a chance to shut if off.
That is easy, all micros will have their I/O pins configured as high impedance inputs during reset and after startup, so just use a pullup or pulldown to ensure the required safe state.
After the mcu boots you just set the registers to start outputting the correct values.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
SUCCESS!!!! YES, YES, YES!


Finally did all the programming. The driver is working by switching the high side fet, and only the opposite low side is kept steadily on. While the motor is running, no counter-switching to the low side fet is being applied, allowing the motor to freewheel while the high side fet is off.

Only when the run button is released, the MCU then switches both low side fets on, applying the dynamic brake technique. And yes, Gopher, you were right. The motor does stop very quickly indeed!

plankton.png

I had to be very careful during programming, so as to include proper deadtime where it was needed, such as when stopping the motor. Also, a wait of 1/8 of a second after stopping the motor is performed by the MCU if a sudden change in direction is instructed.

The Fets do not get warm at all! ... of course, this is without a load being applied to the motor. But I'll be including heatsinks pretty soon, and possibly one mini-fan for each heatsink if it's needed.

Only two things remain:
  1. The inclusion of the digital isolators, which will be arriving in a couple of days. Right now the circuit is sharing grounds between the rectified 120VAC and the 5 and 12VDC supplies. And I do not like that. I've included several instructions in the MCU that will properly reset each isolator during startup. The worst case scenario (which might never happen, since the MCU never ever activates the fets in a short circuit configuration) is that the fets are short circuited for less than 1/2 a us. And considering that the ramp-up time of their gates stands at around 10 us, a short circuit is extremely unlikely.
  2. Adding extra code to control a second motor with the same MCU. The PCB is already prepared for that. It's gonna be tricky, but I'm sure I'll be able to manage without too much effort.
 
Last edited:

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
And another thing, Ron. I'll soon be testing the thing with a 0.1 uf cap across the motor, as you suggested. Are you sure that no resistor is needed?
 

kubeek

Joined Sep 20, 2005
5,796
While the motor is running, no counter-switching to the low side fet is being applied, allowing the motor to freewheel while the high side fet is off.
I don´t think it works quite like that. In the phase where the top left and bottom right fets are on, the current goes from vcc, through the top fet, through motor, and through bottom fet to ground.
Now when you turn the top left mosfet off and keep the bottom right on, the current through the inductance wants to continue flowing, so the left side of the motor swings negative until it starts to forward bias the diode in the bottom left fet.
This diode will then dissipate motors energy as heat, so the motor is not really freewheeling but it acts as a brake anyway. (see these two pictures http://www.mcmanis.com/chuck/robotics/projects/esc2/hbridge_spiking.html)

If however you turn the bottom left fet on, the votlage drop on the fet is very small, and the effect on slowing the motor down will be smaller, due to power being lost only in the reistance of the winding and not in the diode drop.

This is similar to turning a relay or a solenoid off, the magnetic field collapses faster if you burn the energy in a zener diode instead of a regular one.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
I don´t think it works quite like that. In the phase where the top left and bottom right fets are on, the current goes from vcc, through the top fet, through motor, and through bottom fet to ground.
Now when you turn the top left mosfet off and keep the bottom right on, the current through the inductance wants to continue flowing, so the left side of the motor swings negative until it starts to forward bias the diode in the bottom left fet.
This diode will then dissipate motors energy as heat, so the motor is not really freewheeling but it acts as a brake anyway. (see these two pictures http://www.mcmanis.com/chuck/robotics/projects/esc2/hbridge_spiking.html)

If however you turn the bottom left fet on, the votlage drop on the fet is very small, and the effect on slowing the motor down will be smaller, due to power being lost only in the reistance of the winding and not in the diode drop.

This is similar to turning a relay or a solenoid off, the magnetic field collapses faster if you burn the energy in a zener diode instead of a regular one.
Very interesting link, kubeek. Thanks.

This drew my attention:

snubbed-bridge.gif

I've never seen a snubber like that one. And on the other hand, it's connected across the power supply, and not across the motor!
The article suggests a huge value for the capacitor!
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
Update:

The MCU did its nasty trick of resetting itself again when I raised the PWM duty cycle to 50%. So I changed the fet's gate resistors from 715 ohms to 1k, and it's now working as smoothly and problem-free as ever. But now the fets are beginning to (very barely) warm up. They feel slightly warm (but not hot) to the touch after 1 minute of continuous operation.

What I'm going to do now is install a diode in reverse-parallel to those resistors to allow the gates to discharge faster... see what happens. I'll be using an UF4004 for that purpose. I considered using a BAT54WX instead, since they're faster, smaller, and have a lower voltage drop, but I don't think they'd be able to handle the amount of current running through them.
 
Last edited:

Thread Starter

cmartinez

Joined Jan 17, 2007
8,788
Just installed the diodes in parallel with the resistors at the gates, and the fets are no longer warming up. But most importantly, the MCU is not resetting itself either, even with a duty cycle of up to 50% (I don't intend to use more than that)
I'll be installing those diodes on the high-side fets only, since they're the only ones being switched for PWM.

This tells me an important thing: the EMI responsible for MCU reset is produced only during switch-on. That is, the inrush current to the motor is the one affecting the circuit, and not its disconnection.
 

ronv

Joined Nov 12, 2008
3,770
Let me research that. I've never done it at your voltages.
Hmm, Might be better to use a 250 volt or so TVS instead. Right at the motor.
The resistor get pretty big otherwise, and the ripple current is to high without one.
 
Top