Hello,
I’m working on a project where an Arduino generates a 40 kHz PWM signal to drive a piezo transducer through a full-bridge (H-bridge). In LTspice, the H-bridge + IR2184 driver stage behaves as expected.
In hardware, I generate complementary PWM on Arduino Uno pins D9 (OC1A) and D10 (OC1B) using Timer1 fast PWM (mode 14, TOP=ICR1):
Problem: When connecting these outputs to the IR2184 input(s), the waveforms look different depending on whether I use D9 or D10. In particular, the driver output stage looks “correct” only when driven from D10, while driving from D9 produces ringing / an unexpected waveform after the IR2184. This is confusing because the Arduino outputs are complementary and come from the same timer.
What I’ve checked / observed:
Question:
Could this be explained by pin driver differences (OC1A vs OC1B), input capacitance of the IR2184, breadboard/jumper inductance, and/or probe ground inductance causing different ringing depending on the pin? If so, is the standard fix to add a small series resistor (e.g. 47–100 Ω) at each Arduino output right at the MCU pin to damp the edge and reduce ringing?
I’ve attached:
Any insight into why the driver outputs differ depending on D9 vs D10 (and how to make them behave consistently) would be appreciated.
Thanks!
I’m working on a project where an Arduino generates a 40 kHz PWM signal to drive a piezo transducer through a full-bridge (H-bridge). In LTspice, the H-bridge + IR2184 driver stage behaves as expected.
In hardware, I generate complementary PWM on Arduino Uno pins D9 (OC1A) and D10 (OC1B) using Timer1 fast PWM (mode 14, TOP=ICR1):
- f ≈ 40 kHz (ICR1 = 399 @ 16 MHz, prescaler = 1)
- 50% duty (OCR1A = OCR1B = 200)
- D9 non-inverting, D10 inverting (COM1B0 set)
Problem: When connecting these outputs to the IR2184 input(s), the waveforms look different depending on whether I use D9 or D10. In particular, the driver output stage looks “correct” only when driven from D10, while driving from D9 produces ringing / an unexpected waveform after the IR2184. This is confusing because the Arduino outputs are complementary and come from the same timer.
What I’ve checked / observed:
- Arduino 5V rail is about 4.64 V (USB powered), so GPIO high is ~4.6 V max.
- Both channels are measured with the same scope/probe, common ground.
- The effect becomes much more visible once the IR2184 input is connected (compared to probing the Arduino pins unloaded).
- Scope captures show ringing/overshoot on one path more than the other.
Question:
Could this be explained by pin driver differences (OC1A vs OC1B), input capacitance of the IR2184, breadboard/jumper inductance, and/or probe ground inductance causing different ringing depending on the pin? If so, is the standard fix to add a small series resistor (e.g. 47–100 Ω) at each Arduino output right at the MCU pin to damp the edge and reduce ringing?
I’ve attached:
- LTspice schematic
- Arduino timer code
- Scope screenshots / comparison table
Any insight into why the driver outputs differ depending on D9 vs D10 (and how to make them behave consistently) would be appreciated.
Thanks!
Attachments
-
966.6 KB Views: 7
-
43.5 KB Views: 15
-
507 bytes Views: 6






