3
\$\begingroup\$

I have a 10 character x 16 segment display that I'm driving using multiplexing off a PIC. The problem is, however, that with each display only being on 1/10th of the time, the display appears much dimmer than it normally would. Currently the LED's are getting their recommended voltage - 2.2 volts across each red segment. Would increasing the voltage across the display be a safe way to make it brighter? Is there a way to do this in software?

\$\endgroup\$

3 Answers 3

3
\$\begingroup\$

You can overdrive an LED with more than the rated current. The destruction of an overdriven LED is caused (mostly) by the heat generated in the junction (P=IV, and I scales exponentially with forward voltage, V, so power is a higher exponential in V). If you can contrive to keep the heat within reasonable boundaries, probably by overdriving for only short periods to allow heat to dissipate, you can put as much current though an LED as you want. @Anindo Ghosh's answer has a link describing the limits of this.

Another solution, which you can do if you have the ability to add components to the design, is to use shift register/LED driver. This means you can push the data in to a chain of ICs and have all the LEDs constantly driven at a constant current (some driver ICs also include things like dimming controls). When you have pushed in new data, you flip all the chips to the new values at once. Many driver chips have 16 outputs, which sounds like a good match for your displays.

Additionally, you only need 2 pins from your MCU for an I2C device (4 for an SPI), do you can potentially downside on the MCU. You might need another couple for things like output enable and latch strobe if this is not part of the serial protocol used, but it should still be less than the "outputs * log2(devices)" for a basic multiplexer. Also, the time taken to write out to the displays is very short (you only need a few cycles per LED to toggle the lines, and if you can use an interrupt-drive hardware module, it becomes even easier!), freeing processor cycles for other things. You can also ditch whatever multiplexers you currently have.

An example part is the Texas Instruments TLC5925, which has 16 constant-current outputs up to 45mA with analogue dimming control. You need 2 lines to clock data in, one line to en/disable the output and one line to strobe the register latches. This part costs about £1 in single-unit quantities, half that in bulk. It is an SOIC, so soldering is easy, but you can also get much more compact packages if space if limited and your hand is steady.

\$\endgroup\$
6
  • \$\begingroup\$ A display whose peak current is much higher than the allowable continuous current for a digit will be destroyed very quickly if for whatever reason a single digit or "row" gets left on. It's possible to design circuitry to force a safety-shutdown if scanning fails, but unless you're trying to make a really big display, it may be easier to simply use shift registers to directly drive the segments. \$\endgroup\$
    – supercat
    Commented Oct 28, 2013 at 17:17
  • \$\begingroup\$ Exactly - while you CAN overdrive LEDs like this, a single bug or debugging it using a breakpoint could fry slices of your display in a fraction of a second. Or you could be causing damage to your display that causes all the segments to fail after a few million cycles. You might not notice it during development, but the devices may start to fail one after another soon after sale/installation/shipping. \$\endgroup\$
    – diwhyyyyy
    Commented Oct 28, 2013 at 19:03
  • \$\begingroup\$ I wonder why I fairly often see expensive commercially-produced signboards with a row "stuck" on? Guarding against all problematic drive scenarios is difficult, but there are some pretty simple approaches which should guard against a failed processor or wiring harness (e.g. if rows are driven by transistors, a capacitor and diode on the signal driving the transistor could ensure that the transistor could only turn on strongly if the signal's duty cycle was at least somewhat reasonable). \$\endgroup\$
    – supercat
    Commented Oct 28, 2013 at 19:11
  • \$\begingroup\$ For something like a 16x10 display, using ten 16-segment-driver chips (and thus not needing row drivers) may be easier than using e.g. two 16-segment drivers and five beefy row drivers, and having to include shutdown logic on the rows; for displays with relatively-wider rows, though, I would think a simple shutdown circuit per row should be pretty cheap. \$\endgroup\$
    – supercat
    Commented Oct 28, 2013 at 19:15
  • \$\begingroup\$ Supercat: the stuck rows could be a blown row-driver MOSFET, either from inadequate I/V rating, heat dissipation problems (i.e. not enough heatsinking, using in high temperatures or in unventilated enclosed spaces), or maybe even ESD (as I doubt many cheaply-made, but still expensive-to-buy, displays have a lot of protection built in). If the MOSFET fails-to-short, any of these could leave the row stuck on. \$\endgroup\$
    – diwhyyyyy
    Commented Oct 29, 2013 at 10:23
3
\$\begingroup\$

To increase brightness of a multiplexed display, the current through each LED segment needs to be increased (to a limited extent), while ensuring that the average current and power ratings of each LED are not exceeded. It isn't about raising the voltage to the LEDs.

The current may be limited by either a constant-current driver, resistors on each LED, or a resistor array serving multiple LEDs. Changing this current limiting mechanism can be done, but is not for the faint of heart. Also, the display then will be unsuitable for direct (non-multiplexed) drive, as the LEDs would blow due to too much current.

Alternatively, if resistors or a resistor array have been used, the voltage source feeding these resistors could be increased, thereby increasing current through the segment.

Also, keep in mind that increasing the current through an LED significantly over the rated current, for however short a period, can have detrimental or outright destructive effect on the LEDs. See this answer for further insight into this.

Another approach that merits investigation is whether the multiplexing algorithm is optimal, as in, is it keeping individual segments lit as long as it can per cycle. If not, then software fixes can improve the brightness somewhat.

\$\endgroup\$
1
  • \$\begingroup\$ Ok thank you, I'll give those a try; I'll start by swapping out the resistors on some infrequently-used segments and seeing if they can handle the heat, as it were. I've also optimized my code, the display fairly bright now, but nowhere near it's potential. Thank you! \$\endgroup\$
    – Chris
    Commented Mar 19, 2013 at 20:36
2
\$\begingroup\$

No... upping the current is what you want to do to increase brightness. Said differently, LED brightness is a function of current passed through them. Many LEDs can handle upwards of 100mA at 10% duty cycle. So long as you control the duty cycle, that's the way to go.

\$\endgroup\$

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.