I want to design a system that allows me to control different LED arrays that I have, which can be either conventional multiplexed arrays (MP) or charlieplexed arrays (CP), by just plugging them into the board and send the instructions (logic) via a GUI.

The size of the arrays can be very varied, but always being MP or CP. They can be as small as 16 LEDs (4x4 MP) or 144 LEDs (14 contacts CP.)

In order to help myself with an explanation, I'll add a basic block diagram:

enter image description here

For now, the design of the supply stage and which microcontroller I'm going to implement is not yet defined, since what has given me most problems and will probably condition the supply is what is inside the blue square.

The Problem

The "lines" after the connector that feeds every LED have an impedance around 200-300 Ohms, so, in order to achieve a minimum current of 10mA, a voltage of roughly 9 to 10 Volts is required.

Simulation with Vled=3.4@11mA

In the case of MP arrays it is not a big problem, but for CP arrays it has turned out to be quite a challenge, since I cannot find the arrangement of components that allow me to do that.


My first approach was to look for a driver that is capable of sourcing and sinking current from every contact in a small package, I searched and searched and came across to the IS31FL3731 from Lumissil Electronics. The problem isit can only provide a maximum of 5.5 volts.

After that, I came accross this video from Pileofstuff, where at the end he drives some more demanding charlieplexed LEDs using some optocouplers and transistors. That idea led me to search alternatives for tri-state configurations and the use of buffers, where endevor100 really saved me a lot of time with his hackaday post where he basically covers approaches that I was considering.


How can I control charliplexed arrays that require 10 volts with an Arduino?


1 Answer 1


You could use comparators such as LP339 and transistors (such as prebiased types) to buffer and level-translate tri-state GPIOs.



simulate this circuit – Schematic created using CircuitLab

For 14 pins it would require 7 dual prebiased transistors, 4 LP339 chips and 4 quad resistor packs, plus some dividers to get the +1/+1.5/+2 voltages. You can use an op-amp to buffer the 1.5V.

However trying to Charlieplex 144 LEDs with 10mA is probably a very bad idea if you expect to illuminate a large number of them such that they appear to be on continuously. That's only 70uA average per LED which is very little current, even for a good LED. To get mA of average current means that you'll exceed the maximum peak current rating of most small LEDs, which will affect reliability and lifetime.

I suggest you do some experimentation to determine what average current is acceptable before settling on an approach.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.