I am driving 15 LED's with a Charlieplexed circuit (using an Atmel ATTiny13). I've reached the current limit per I/O pin of 40mA and would like to drive the LED's higher (they're rated at 50mA).

Is there a way to incorporate transistors into a Charlieplexed array, or do I need to grab a micro with more pins and convert to a tranditional Multiplex?


You need an external tri-state buffer to support increased source and sink drive while maintaining the necessary high-Z state required for Charlieplexing.

This forum post discusses a few options. Several posts suggest a tri-state amplifier with a single microcontroller pin using a circuit similar to the following:

enter image description here

By biasing the pin at Vcc/2, a tri-state at the microcontroller's output pin causes the buffer to enter a state where neither FET is on, thereby properly replicating a tri-state output. The price you pay is bias current for each output pin; you haven't told us if dissipation is a design constraint or not. Note that while the schematic shows a bipolar supply, it will work with a unipolar supply.

| improve this answer | |
  • \$\begingroup\$ Interesting, so this tri-state arrangement of FETs would be necessary on each I/O pin? \$\endgroup\$ – JYelton Aug 14 '12 at 16:45
  • \$\begingroup\$ Yes, you'll need to increase the drive current on each tri-state output to support 50mA through each LED. \$\endgroup\$ – HikeOnPast Aug 14 '12 at 23:47
  • \$\begingroup\$ For the record, I switched to a multiplex arrangement (on an ATTINY26) rather than Charlieplex; I didn't necessarily need the fewer pins, and I've learned that Charlieplexing introduces this type of complication. I was able to achieve higher current with eight 2N2222 transistors and eight pins on the micro. Still, this solution helped me to better understand the need to maintain tri-state output when Charlieplexing. \$\endgroup\$ – JYelton Aug 21 '12 at 6:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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