Issue with Running IR2103 MOSFET driver IC

Hi everyone,

I'm working on driving an IR2103 half-bridge driver with an Arduino UNO. This is my first time with such a driver IC. I'm using the following setup for controlling a full H-bridge with two IR2103 chips. The code I've written is intended to test the motor control by alternating between forward, stop (coast), and reverse motion, with added dead-time to avoid shoot-through. The schematic screenshot can be found in my Dropbox link (please see below)

Code Overview:
The control signals are set up as follows:

  • HIN_A (Arduino pin 5): High-side input for Q1

  • LIN_A (Arduino pin 6): Low-side input for Q2 (active LOW)

  • HIN_B (Arduino pin 9): High-side input for Q3

  • LIN_B (Arduino pin 10): Low-side input for Q4 (active LOW)

Dead-time: Set to 3µs , and the transitions between the states (Forward, Reverse, and Coast) have delays of 10 seconds for forward, 5 seconds for coast, 10 seconds for backward, and 5 seconds for coast.

Problem:
When I run the code, the high-side voltage on the HO pins initially triggers as expected, but within a few milliseconds, the voltage gradually drops to 0V. The HIN pins are properly triggered, but the corresponding HO pins are not staying stable, which was supposed to stay steady for 10 seconds.

Here is a snapshot of the logic analyzer file from my Saleae Logic Analyzer, which shows the inputs to the IR2103. As you can see, the HIN_A, LIN_A, HIN_B, and LIN_B inputs seem fine, but the high-side HO voltage isn't staying up as expected. (see my Dropbox folder)

What I've Tried:

  • I've checked the bootstrap capacitor (C_boot) and made sure it’s connected properly.

  • Verified the voltage levels for both VSS and VDD to ensure they are stable.

  • Double-checked the timing to ensure there's enough dead-time to avoid shoot-through.

  • Ensured that the low-side MOSFETs are correctly switched on.

Could it be a problem with the bootstrap capacitor charging?
If anyone has experience with this type of issue, I would greatly appreciate your thoughts. Could this be due to inadequate charging of the bootstrap capacitor, or might there be another issue affecting the stability of the high-side voltage?

Also, you are welcome if you can find the problem anywhere else.

All the docs with code are below. Thanks in advance!
datasheet: https://www.infineon.com/assets/row/public/documents/60/49/infineon-ir2103-datasheet-en.pdf
My logic analyzer waveforms from arduino: Dropbox

/*
/*
  IR2103 Test with Serial Debug
  - Arduino UNO controls 2x IR2103 half-bridge drivers (full H-bridge).
  - Prints status messages so you know MCU is running.
  - Adds dead-time and "all-off" state to avoid shoot-through.
*/
// === IR2103 H-Bridge Pins ===

#define HIN_A 5   // High-side input for Left leg (Q1)
#define LIN_A 6   // Low-side input for Left leg (Q2) - active LOW!
#define HIN_B 9  // High-side input for Right leg (Q3)
#define LIN_B 10  // Low-side input for Right leg (Q4) - active LOW!

#define FW_BW 10000
#define COAST 5000

const unsigned DEADTIME_US = 3;  // 2–5 µs dead-time
void setup() {
  pinMode(HIN_A, OUTPUT);
  pinMode(LIN_A, OUTPUT);
  pinMode(HIN_B, OUTPUT);
  pinMode(LIN_B, OUTPUT);

  // Default all OFF (coast)
  digitalWrite(HIN_A, LOW);
  digitalWrite(LIN_A, LOW);  // OFF = HIGH because LIN is active-LOW
  digitalWrite(HIN_B, LOW);
  digitalWrite(LIN_B, LOW);

  Serial.begin(9600);
  Serial.println("H-Bridge Test Start");
  delay(10000); //Need preperation time to turn on salea for a clean capture without any noise
}

void loop() {
  // === Forward: Q1 + Q4 ===
  Serial.println("Forward...");
  digitalWrite(HIN_A, HIGH);   // Q1 ON
  digitalWrite(LIN_A, HIGH);   // Q2 OFF
  digitalWrite(HIN_B, LOW);    // Q3 OFF
  digitalWrite(LIN_B, LOW);    // Q4 ON (active-LOW)
  delay(FW_BW);

  // === Stop (Coast) ===
  Serial.println("Stop (Coast)...");
  allOff();
  delay(COAST);

  // === Reverse: Q2 + Q3 ===
  Serial.println("Reverse...");
  digitalWrite(HIN_A, LOW);    // Q1 OFF
  digitalWrite(LIN_A, LOW);    // Q2 ON (active-LOW)
  digitalWrite(HIN_B, HIGH);   // Q3 ON
  digitalWrite(LIN_B, HIGH);   // Q4 OFF
  delay(FW_BW);

  // === Stop (Coast) ===
  Serial.println("Stop (Coast)...");
  allOff();
  delay(COAST);
}

void allOff() {
  digitalWrite(HIN_A, LOW);
  digitalWrite(LIN_A, HIGH);   // OFF
  digitalWrite(HIN_B, LOW);
  digitalWrite(LIN_B, HIGH);   // OFF
}

Yes, the cap could be an issue. See https://www.ti.com/lit/an/slua887a/slua887a.pdf

Oscilloscope traces would be more informative.

What is the voltage across the bootstrap cap? Post a link to MOSFETs' datasheet.