Not quite a tri-state buffer

Discussion in 'General Electronics Chat' started by davidbear, Feb 5, 2013.

  1. davidbear

    Thread Starter New Member

    Jan 12, 2009
    I am looking for a circuit to aid in charlie-plexing higher voltages (up to 12V) and currents (up to 100 mA) than my little microprocessor will handle. The circuit I would like is one which would take a high (3.3V or 5V) or low or high-Z input and produce a Vdd, GND, or high-Z output. Does such a circuit exist? Yes, I know that I could find a micro with more pins or a port expander and use a transistor or MOSFET to change voltage and handle higher current in a non-charlieplexed arrangement, but I am curious about "buffering" a high-Z input and getting a high-Z output.
  2. MrChips


    Oct 2, 2009
    Does such a circuit exist? I don't think so. How would you detect a high-Z input?
    Unless you use a window comparator to detect 1/2 VDD.
  3. JMac3108

    Active Member

    Aug 16, 2010
    Detecting a high-z input is not hard, its generating the high-z output from the high-z input that takes some work.

    If you put a pull-up and pull-down resistor of equal value on the input, then the input will be VCC, GND, or VCC/2 (depending on if the input is high, low, or high-z). Run this into a buffer.

    Then maybe use a window comparator to look at the input and disconnect the output of the buffer when the input is around 2.5V. This gives you the high-z output with a high-z input.

    Seems like an awful lot of trouble. There surely is a better way.
  4. WBahn


    Mar 31, 2012
    Another way to detect it would be to sense the current on a line trying to pull it to something not HI or LO (say VDD/2).
  5. thatoneguy

    AAC Fanatic!

    Feb 19, 2009
    No 1.5 Watt Tri State buffer exists, that I can find.

    Best solution would be either a microcontroller with more I/O, or a port expander that switches MOSFETs to turn the LEDs on and off. Optimal solution would be current sources or sinks controlled by the I/O expander or uC. The latter would avoid losses in current limiting resistors, but expense would increase as well.

    Charlieplexing is a neat trick for low power LEDs, but inapplicable for high power LEDs or large matrices (>100 ea axis) due to the added code complexity and difficulty of loading animations for the matrix.
  6. MMcLaren

    Distinguished Member

    Feb 14, 2010
    How many I/O pins are you using and how many LEDs are you driving, please?

    Of course you probably know that if you're just trying to obtain better brightness with an existing Charlieplexed matrix that you can add column or row driver transistors which allow you to reduce duty cycle by lighting more than one LED at time, right? In this case you would use NPN transistors in active high emitter follower configuration as high side drivers or PNP transistors in active low emitter follower configuration as low side drivers in order to maintain Charlieplexing signal rules.


    I suspect you'll find that as soon as you can justify adding a driver IC of some kind to your Charlieplexed matrix, you can switch to traditional multiplexing and the main advantage of using Charlieplexing, namely reducing the number of I/O pins to drive a particular size matrix, practically disappears.

    Last edited: Feb 6, 2013
    davidbear likes this.