Here we see this circuit diagram which is full H-Bridge using 4 power MOSFETs and 2 IR2111 high side driver ICs.
That means this circuit is for making full bridge inverter which converts DC into AC.

Power Supply Part
We have +600V DC at top rail, written as +600V max.
And ground (0V) at bottom.
Then load is connected between middle points of the bridge.
IR2111 Driver ICs
Each IR2111 has two important outputs:
HO (High Side Output)
LO (Low Side Output)
HO is used to drive upper MOSFET in each half bridge.
LO is used to drive lower MOSFET in each half bridge.
We apply +12V to Vcc pin of IR2111 for its internal power.
Also BA159 diode is used to charge bootstrap capacitor, because high side MOSFET needs voltage higher than +600V to turn fully ON.
So BA159 + 10uF bootstrap capacitor charges when low side is ON, then gives proper voltage to high side driver.
Arduino Code
// By Swagatam - Full Bridge Sine Wave Inverter Code with Soft Start Feature
const int pin1 = 8;
const int pin2 = 9;
const int softStartSteps = 100; // Number of steps in soft start
const int softStartDelayIncrement = 20; // Microseconds increment per step
void setup() {
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
delay(3000); // Booting delay (wait for 3 seconds before starting)
}
void loop() {
// Perform soft start gradually
for (int step = 0; step < softStartSteps; step++) {
int delayAdjust = step * softStartDelayIncrement;
runCycle(delayAdjust);
}
// After soft start, run normal cycle indefinitely
while (true) {
runCycle(softStartSteps * softStartDelayIncrement);
}
}
// Function to run one inverter cycle with given delay adjustment
void runCycle(int delayAdjust) {
// First pin (pin1) switching pattern
digitalWrite(pin1, HIGH);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(750 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(1250 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(2000 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(1250 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(750 + delayAdjust);
digitalWrite(pin1, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, HIGH);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin1, LOW);
// Second pin (pin2) switching pattern
digitalWrite(pin2, HIGH);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(750 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(1250 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(2000 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(1250 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(750 + delayAdjust);
digitalWrite(pin2, LOW);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, HIGH);
delayMicroseconds(500 + delayAdjust);
digitalWrite(pin2, LOW);
}
Arduino Control Signals
You need to connect Arduino PWM pins as following:
PWM#1 from Arduino pin#8 goes to IN pin of left IR2111 (first half bridge).
PWM#2 from Arduino pin#9 goes to IN pin of right IR2111 (second half bridge).
Arduino generates SPWM (sinusoidal pulse width modulation) signals in sequence.
Since soft start is important, Arduino first gives small duty cycle, then gradually increases it step by step over time.
That way no big inrush current happens suddenly.
How MOSFET Switching Happens
Let us say Arduino sends HIGH on PWM#1 and LOW on PWM#2:
Then left IR2111 will turn ON its HO and LO in sequence.
That makes upper-left and lower-right MOSFET conduct.
So current flows through load in one direction.
When Arduino gives LOW on PWM#1 and HIGH on PWM#2:
Then upper-right and lower-left MOSFET conduct.
That makes current flow in opposite direction through load.
So AC waveform is formed over time by alternating direction of current.
Why Bootstrap Capacitor and BA159 Diode is Needed
We must know that high side MOSFET gate needs voltage higher than Vcc to fully turn ON.
So BA159 diode plus bootstrap capacitor stores charge when low side is ON,
Then supplies high voltage during high side ON period.
Without this, high side MOSFET would not switch properly.
Soft Start Feature Importance
When Arduino starts operation, we start with very small PWM duty cycle.
Then step by step we increase duty cycle slowly.
That way load does not get sudden power shock, and no big current surge occurs.
Soft start protects the components and makes inverter start smoothly.



Comments
Hello Mr. Swagatam
if the frequency is between 1 and 60 Hz, are any changes necessary in Circuit H?
Hello Mazloumi,
No changes will be required in the circuit, because the circuit is not dependent on frequency, just make sure the frequency polarity alternates across the two PWM inputs, they should never be same at any instant…