Electronic – Freewheel diodes and shoot-through prevention required on this low-voltage H-bridge

back-emfh-bridgemosfetshoot-through

I have built the following h-bridge:
h-bridge schematic

  • VMOT1 is at logic level (3.3V)
  • FWD and REV are driven by MCU (no PWM in the scope examples given)
  • Q7/Q8 are DMP1045
  • Q9/Q10 are BSS138
  • D3/D4 are 4 x 4148
  • the 2 voltmeters are the color-coded scope probes with common ground
  • M2 is one of those cheap yellow Chinese DC motors

The scope measurements are representing a switch from the motor running at full speed in one direction, switching to the opposite direction. If I have understood well, this is the most likely scenario for either shoot-through or back-EMF.

When I leave the motor disconnected, the transition looks like this:

motor disconnected

This looks fine to me, the timing between P-MOSFET and N-MOSFET is not exactly the same, but I see no concern for shoot-through (correct me if I'm wrong).

Now with the motor connected, it starts getting interesting:
motor connected

What do I see here? Is the (yellow) dip below 0V the power returned to the circuit by the braking motor or is this the back-EMF? And what are the spikes showing up just before that dip? I have seen them in all samples taken.

And more practically speaking: Do I really need those freewheeling Schottky diodes or are they just not doing anything at all in this circuit?

Another question, is there any shoot-through happening here during the ±200ns transition or can that be neglected? There is an option to control all 4 MOSFETs independently and switch the P-MOSFETS's 1us later.

— edit —

I was asked to add a .1R resistor accross GND and measure that. I didn't have one handy, so used 1R instead.

Yellow shows the logic level at FWD, and pink the voltage accross the ' current sense resistor'. First images shows one full FWD->REV->FWD cycle:

enter image description here

The circuit uses a switching boost converter (TPS61322) on a dual alkaline battery so that is probably causing the ripple (?). Averiging it out, the voltage is at about -125mV, so that makes a 125mA current draw at the battery terminals. But of course the 200ms period after switching direction is more interesting:

enter image description here

Here's there's a brief peak to 1A at the moment of switching over then 300mA without ripple for a while and then about 80ms of 1A max! I wouldn't be surprised if that is the current limit of the switch (1.8A max, inductor used Ir is 1.6A) . So I guess I have a case of shoot-through after all?

— edit —

I compared the behaviour with a TI DRV8835 H-bridge IC, and actually it shows a very similar output. I will also make another measurement with a lab supply instead of the boost converter. Hopefully this clears things up even more.

— edit —

This is without the boost converter, just 3.3V from the lab supply:
enter image description here

And this on the DRV8835:
enter image description here

Best Answer

Here's what I think is going on: You have three separate issues. Shoot-through occurs only at the very edge of your switching circuit because of the difference between turn-on delay time and turn-off delay time of your parts. This is current spike on the pink traces. If this is the cause, you can easily solve it with a modification to the gate drive circuit to slow down the "on" time so that you always turn "off" first. However, since this occurs so infrequently, (only when you change directions) you might get away without it.

schematic

simulate this circuit – Schematic created using CircuitLab

The short excursion below ground is from the motor inductance. Current flows briefly back through the body diode of the FET.

The rest is from your boost inverter, because you have to supply sufficient current to provide torque to decelerate the rotor and accelerate it to the running speed. If you put an inertial load on your motor shaft (a disk or similar that would act like a small flywheel) you will likely be able to see on the trace that the recovery time of your circuit is lengthened. The current levels out when the motor is back up to speed.