I²C Bus Voltage/Current Conflict: MPR121 Dual Board Setup with LCD Failure

I’m running into a serious issue with my project where I’m using two Adafruit MPR121 capacitive touch boards on the same I²C bus as a standard I²C-based LCD (with a PCF8574).

Here’s a summary of my setup:

Microcontroller: Arduino Uno (5V logic).
Boards:
Adafruit MPR121 board #1 at address 0x5B.
Adafruit MPR121 board #2 at address 0x5A.
I²C LCD at address 0x27 (with 4.7kΩ pull-ups, now removed or disabled).
Power: Everything is powered at 5V from the Arduino’s 5V pin.
Pull-ups: The MPR121 boards each have their own 10kΩ pull-ups. I’ve removed the LCD’s built-in 4.7kΩ pull-ups to avoid an overly low total resistance on the bus.
When I connect just one MPR121 board plus the LCD, everything works perfectly—no problems, no damage. However, whenever I try to use both MPR121 boards together with the LCD, it initially works for a brief period. After some time, one of the MPR121 boards stops working. One time it has emitted smoke, effectively destroying the board.

Here are my questions and observations:

Pull-up resistors:
I realize multiple boards with individual pull-ups can lower the total bus resistance. I’ve attempted to remove the LCD’s 4.7kΩ pull-ups, leaving only the 10kΩ from each MPR121 (in parallel, ~5kΩ total). However, the damage still occurs.

5V vs 3.3V logic:
Adafruit’s MPR121 breakout states it’s 5V-tolerant on the I²C pins, but the logic internally is 3.3V. Could the repeated 5V signals from the LCD or Arduino be causing stress?

Bus current / surge:
Maybe some transient currents or noise are surging through the bus, especially when two boards are simultaneously pulling SDA/SCL low? But I thought ~5 kΩ was still safe.

Any known issues?
Are there known cases where two MPR121 boards plus an LCD cause voltage-level or pull-up conflicts that fry the MPR121?

I’ve tried multiple boards, and the same issue keeps happening: everything’s fine for a little while, then smoke from one MPR121. I’ve triple-checked wiring and verified addresses. If you have any insights or suggestions, I would appreciate your help!

Further information. Initially, both the LCD screen and the touch detection work correctly. However, after a while, both the screen and the MPR121 boards stop functioning. It appears that the first board always ends up failing completely, while the second board, when disconnected and reconnected along with the LCD, starts working again.

Regarding the pull-up resistors, I haven’t found an easy way to disable them individually since they seem to be mounted in an array rather than as separate components. Currently, both boards use their internal pull-up resistors, and I have removed those on the screen. However, the issue persisted even when the LCD still had its pull-ups.

Thank you in advance

Hi gpprinaldi,

Welcome to the TechForum.

Interesting problem. I don’t have any immediate answers, but as a help in studying the issue, which version of the MPR121 do you have? Adafruit makes at least 4 different boards with that part, and they may have different design features which may affect behavior:

1982
4830
2024
2340

Also, I’m not following the relation between the I2C LCD and the PCF8574. The PCF8574 is just an I2C I/O expander.

Hi David,

Thanks for the welcome!

The model I have is the 1982 STEMMA QT but I have the same problem with the chinese clones. I’m not sure how to disable the pull-up resistors on this board. The I2C interface of the LCD is one of those classic ones based on the PCF8574. Do you think I should disable the pull-up resistors on one of the two boards?