Unlike many LED matrix displays you might find out there, this one is not multiplexed
. Each LED is driven by it's own dedicated control signal. The reasons we did it this way are:
* we wanted it to be brighter than a multiplexed display would allow (since any subset of LEDs can be turned on at once)
* we wanted to reduce software complexity that is inherent to multiplexing
* we didn't want there to be any flickering artifacts on video footage of the display
The display is driven by an Arduino-compatible development board called Nanode
interfaced to chain of custom made circuit boards
hosing Texas Instruments TLC5926
16-bit Constant Current Source Sink Driver. Sixteen of these boards provide the 256 current sinks needed to drive the display. These chips have a similar interface to the familiar 74HC595 shift registers
, except that:
* using a single resistor per chip you can set the current that each channel will sink when it's enabled
* they can handle sinking up to 120 mA per channel
(!) (we only set the current to about 20 mA on our boards)
* when you set a channel to one it sinks the preset constant current on that channel, whereas a zero pulls no current on that channel
The boards also each have a 74HC125 quad-buffer on board to ensure good signal quality all the way to the end of the chain of boards.
In summary, for our 16 x 16 display, we used one of these boards per row of LEDs and chained them all together to drive all 256 displays.