Technology Remaking the World

120 volt IGBT based H-bridge.
Fig. 1

IGBT Based High Voltage H-Bridge DC Motor Control

Date: August 2021. Fig. 1 is my 120V H-Bridge test circuit.

The goal here is to review transistors and the operation of H-bridge motor control circuits.

This is designed to be operated by an Arduino or similar microcontroller. I am dealing with high voltage here so read my warning page.

Also use a current limited power supply for testing.

Use this at your own risk. For information purposes only.

This should be developed at a lower voltage (18V), current limited to 1 amp, then debugged before moving to a higher voltage.

See Constant Current Source Theory Testing.

One also needs to review IGBTs and photovoltaic opto-couplers even though I will go over them here.

I also include my MOSFET based H-Bridge for a review.

H-bridge example using mechanical switches.
Fig. 2

What is an H-Bridge Motor Control?

An h-bridge consists of four switches arranged as in Fig. 2 with a permanent magnet DC motor connected between the switch pairs.

SW1 and SW3 will be referred to as "high-side" switches. Also known as "source" will switch the positive side of the power supply to the load.

SW2 and SW4 will be referred to as "low-side" switches. Also known a "sink" the current to common or ground.

These switches can be mechanical toggle switches, relay contacts, or various forms of transistor switches. Here I'm concerned with transistor switches.

If SW1 and SW4 are closed current flow from positive to negative terminals through the motor. The motor rotates clockwise.

Open SW1 and SW4. Never turn on SW1 and SW2 at the same time, never turn on SW3 and SW4 at the same time. The power supply will be damaged and so will the switches.

Close SW2 and SW3 current will flow from negative to positive terminals through the motor. The motor will rotate counter-clockwise.

All IGBT based H-bridge motor control schematic.
Fig. 3

All IGBT H-Bridge Circuit?

I had a visitor request to design a 120-volt DC H-bridge circuit using IGBTs or insulated gate bipolar transistors.

The working design is shown in Fig. 1, the schematic to an all IGBT using photovoltaic opto-couplers in Fig. 3.

They have the advantage MOSFET gate characteristics combined with bipolar transistor high-voltage switching.

The design solves the problem of isolating the high motor voltage from the microcontroller. When 5-volts or HIGH is input to the VOM1271 it generates 8-volts across the gate-emitter of the IGBT turning on the device.

IN1 can be turned on the same time as IN4 motor goes clockwise. IN2 and IN3 on the motor goes counter-clockwise.

All IGBT based H-bridge motor control photo.
Fig. 4

Fig. 4 is a close up view of the IGBTs and opto-couplers.

The VOM1271s are surface mount devices I had to solder onto a SOP carrier board. I got 25 for $5.

This works great as but has one flaw: motor speed control though pulse-width-modulation.

My test show the opto-couplers have slow response time on turn off. Yes they have internal gate shutoff but it is slow.

The other problem is the "high-side" IGBTs must use the photovoltaic opto-couplers. MOSFETs and bipolar transistors n-channel/p-channel or NPN/PNP compliments, the IGBT really doesn't.

I hunted around for them and found a few that are very rare and expensive. There is a way around this if one needs to use pwm.

Note Arduino PWM works OK as is with 4 VOM1271s.

All IGBT based H-bridge motor control with high voltage opto-coupler.
Fig. 5

Fig. 5 illustrates using high-voltage FOD852 type opto-coupler with the "low side" IGBTs. Switching on the FOD852 through a 5.6K 3-watt resistor allows the Zener 12-volt diode to turn on the IGBT.

To pulse width modulate turn on the corresponding "high-side" IGBT and use PWM on the "low-side" IGBT.

The FOD852 internal Darlington photo transistor is rated at 300-volts.

All IGBT based H-bridge motor control with low voltage opto-coupler.
Fig. 6

If one doesn't have a high-voltage opto-coupler use the schematic in Fig.6.

IGBT bipolar transistor comparison table.
Fig. 7 IGBT bipolar transistor comparison table.

Package connections and internal circuit for IGBTs.
Fig. 8 Package connections and internal circuit for IGBTs.

Some Arduino Code

Connect IN1 to IN4 then connect to Arduino digital pin 5.

Connect IN2 to IN3 then connect to Arduino digital pin 6.


#define IGBT1 5
#define IGBT1 6
#define IGBT1 9
#define IGBT1 10
#define POT 0
#define FOR 5
#define REV 6
int val;

void setup() {
  pinMode(FOR, OUTPUT);
  pinMode(REV, OUTPUT);
}

void loop() {
  val = analogRead(POT);

  analogWrite(FOR, val);
  // digitalWrite(FOR, 1);
  delay(2000);
  digitalWrite(FOR, 0);
  delay(1000);

  analogWrite(REV, val);
  // digitalWrite(REV, 1);
  delay(2000);
  digitalWrite(REV, 0);
  delay(1000);
 }

Electronics Bio

Related video to above:


Other Circuits