Increasing Output Current of the MCP23017 I/O Expander IC

Greeting :slight_smile:

I am working on a project where I need a lot ( about 90 ) of output pins. Obviously the UNO does not have enough pins and even the Mega isn’t quite there. So I found the MCP23017 IC online, it is a 16-Bit I/O Expander with a Serial Interface. Multiple of these IC’s can be connected to the arduino to get up to 128 extra I/O pins.

My problem is that the maximum current that each of the IC’s can output is 150 mA, which means that I can only get about 9.375 mA per pin (150 / 16 = 9.375) . Can I increase this output current by stacking two of these IC’s in parallel? Or can you recommend something better to get more pins?

And what is the current that is needed to light a standard 3mm LED, because most of the pins will be used to light leds.

Find the attached datasheet for the IC.

Please help me. :slight_smile:

MCP23017.PDF (948 KB)

There is no standard, 3mm leds are 2mA (low current leds) to 20mA (20mA is too much for many 3mm leds).

Do you have a sample of the leds that you are going to use ?
If you give it 9mA, is that enough brightness ?

There are high current shift registers: TPIC6B595 High Power Shift Register [TPIC6B595] : ID 457 : $1.95 : Adafruit Industries, Unique & fun DIY electronics and kits.

Perhaps you could use led strips. There are also led strips without leds, so you can add your own load.

I think it is not okay to stack/piggyback the MCP23017. It has a I2C interface, perhaps that will cause slight timing differences. If one pin is high and the other low, that could cause nasty current spikes.
When chips can be stacked, it is often mentioned in the datasheet.

If you are only driving LEDs, the easiest way to do that would be to purchase some 5V LED strips (WS2812 chips) and all you need is an external power supply and one data pin from your nano/Uno and you can make it all work. If you don't like the strip version, there are singulated versions so you can wire them all together and then do the same thing. (Adafruit NEOPIXEL RGB 5050 LED 100 pack). Waaaaaay easier than wiring up each LED individually.

But, you didn't say exactly what you where doing or what the project is, so only you know for sure.

Yet another XY problem. :astonished: :roll_eyes:

Failure to specify the actual requirement.

"Standard 3 mm LEDs" will light just fine at 8 mA. They would be somewhat brighter at 20 mA, but not a great deal.

WS2812, "NeoPixel" would be one way, draw 60 mA each at full brightness, but if you only want white, are distinct overkill (and not available in 3 mm).

And finally, a MAX7219 will on its own, control 64 LEDs wired in a matrix, thus two of them would control 128 LEDs with very adequate brightness and require only three pins to control them.

Thanks for all the help guys!