Developer information

For some applications we want to drive several LEDs for displaying runtime parameters. The LEDs are usually arraged in a matrix form electrically (not necessarily on the display!), and driven multiplexed, to minimize semiconductor usage, and make operation somewhat more efficient (smaller dissipation on series resistors).

Common requirements for LEDcount

That sums to about 6*8 .. 10*8 matrix in most applications.

The software load for the multiplexed driving is noissue, handler2k has a few lines which supports the 10*8 matrix with about 100 Hz display refresh with marginal CPU load.

LED power

We are concerned of

front-view LED displays

LP3943 for injector PWM-ing ?

Are you, Keith, suggesting LP3943 for injector PWM-ing?

Eg. if one wants different PWM percentages for his injbanks? GenBoard/VerThree HW supports 1 common PWM duty% (besides the 100% / 0%): should be perfect for any reasonable setup.

I guess you suggest it for LED-driving...


Head-up-display, requires

The latch might be inside the driver, or might not be necessary, if the uC has enough outputs (8*8 matrix requires 16 outputs that way).

[Osram] has some [Golden Dragon] high intensity LEDs which may be suitable for HUD use. They have some suggested drivers too. has a description of BMWs 5-Series HUD display, which appears to use an Amber LED array behind a TFT screen.

Use Chip On Glass (COG) graphical LCD with transmissive polarizer - white text on black background with a LED lightsource behind it would do. A quick overview of LCD options is [here]. This suggests FSTN display should be used, with a suitable display color provided by the lightsource. Doesn't have to be COG, but that technology offers nice packaging. A regular graphical or character display could be prototyped with a hacked up backlight. The 11000 mcd SMT LEDs used by BMW retail for $10 each, so possibly $0.50 7600 mcd SMT [LEDs] could be tried first...

An example of an white text on black background:


We've located an LCD that is sppears to be suitable, the 13265-34-FN-M-ET-6 from Pacific Display (not the one shown above!). It's 132 x 65 resolution, it's got all the specs we want, and as a bonus it's got a controller with a serial data port. Bigger might be nicer, but this is a good starting point.

I've waited 2 weeks and sent a follow up email after 1 week to get some action, but nothing happens. I guess Pacific Display doesn't want our business. Time to find someone else, maybe Hantronix or similar in Asia...

Backlighting could get interesting however... The BMW unit appears to pack around 750 cd into it's 55mm x 26mm area. I think the best we can do without spending crazy money is about 300 cd (maybe ~400 if pushed) into a slightly smaller area. We'll be using considerably less power to do so, but heat is still going to be an issue. This 55 LED (11x5) array wants as much as 10 Watts, so the mounting might have to be creative. I don't think we'll get enough light if we stick to the recommended pads and spacing, so some kind of integrated heatsink/socket array might be in order.

Here's an example layout. The LEDs cover the entire display area, with vias sinking to additional cooling area on the bottom layer - small heatsinks could be added to the back. Just don't ask me how to solder it...


The projection surface may need to be considered. Newer cars with HUD option, such as GM use a DuPont laminate for their projection. Some others use an adhesive glare reducing patch, but this may or may not be necessary. Word is that the Defi units look ok without the patch. Have to try it and see eh?

Aftermarket options already exist -

lowside switches

Maybe some unipolar stepper driver, like

but apparently none have latches, or maybe

highside switches

LED gauges and quantity-display

There are 2 types:

Each can be used from 2..24 LEDs. Arranged in circle, crescent or linear (linear doesn't read nearly as efficiently from the corner of one's eyes)


Because of the PWM-ing: 1 LED can also be useful in some cases (special case of the many; becomes a simple PWM-ed output - that can drive other loads too, not just LED):

struct ledbar_t {
  uint8_t last_position; // useful to update .259 output fast; FF=uninitialzed (all LEDs must be set)
  uint8_t position;  // output to display
  struct softpwm_t .... // needed for PWM-ing
struct ledbar_conf_t {
  uint8_t ledbar_first_channel; // typically addressing P259
  uint8_t ledbar_last_channel;  // can be merged with the above (3+3bits) if we assume P259 
  uint8_t ledbar_conf;    // type (ledbar/movingdot); boundary-strategy; can be merged with above two as 3+3+2 bits


Input selection

something like GenBoard/Manual/DigitalOut, but for the inputs and internal values.

Shift Light idea:

I've got another idea.I'd like to make an attractive shift light.My plan is 6 Leds.These could flash up in pairs at three given RPM.Look at this pic for example:


This has been implemented for long, with the generic (RPM, kPA, CLT based) switches. You can use the P259 outputs, and connect some LEDs in series (also a series resistor). At least 2 LEDs in series to get the described effect.


See also