Go Down

Topic: Using cascaded MC14489 to drive 9pc 7-segment displays (Read 442 times) previous topic - next topic

ArtificialDemon

First of all, I've got this working-ish. I've reached a point where I'd like to have some input from others. I know others have used the same drivers, but the setup appears different and I haven't got a clue about the Arduino they used.

The goal:
I've got 9 pieces of Kingbright KCSC02-xxx 7-segment displays.
Datasheet: http://www.kingbright.com/attachments/file/psearch/000/00/00/KCSC02-123(Ver.9A).pdf

I've got 2 pieces of MC14489 drivers for these displays
http://cache.freescale.com/files/timing_interconnect_access/doc/inactive/MC14489B.pdf

The displays are in two arrays of 5 and 4 units, each array driven by one of the driver chips.
I'm using an arduino ProMini 5V 16MHz device for communication with the chips.

In order to drive the 9 displays, I'm cascading the devices.

Based on this tutorial I made some modifications to the code to drive one set of displays, and later more modifications to drive the cascaded setup.
http://tronixstuff.com/2013/05/12/tutorial-arduino-and-mc14489-led-display-driver/

The problems:
- The driver appeared to get wacky after a few iterations of switching to different outputs. It appeared to enable random segments, or drive only one of the displays.
I've put some delays in the code, which appeared to solve the problem.

- I'm using a 800ohm resistor on Rx for current limiting (limits to around 30mA, which equals the Forward Current of the display)

- When using the displays cascaded, I noticed a multiplexing difference in brightness, but very slow, iterating the array in a second. So, each display became slightly brighter for 1/5 of a second, then the next (in regular order!). It felt like brightness multiplexing with 1Hz.
Note that I was not sending any update commands.

- I let the displays (cascaded, 9 displays) "run" for a while without changing. One of the segments in the display started to get weak, as if the connection became faulty (which can actually be the case, but I couldn't reproduce with lab supply).

My actual questions:
- The displays are of course multiplexed by the chip, 700Hz - 1900Hz. This influences the current used by the LEDs in the displays. The (cathode) pins of the driver chip can source -40mA each, while the display's forward current is 30mA.
Peak fwd current of the displays is 150mA. Is this chip able to drive the displays at full brightness? I can go to 700ohm on the Rx pin, but that's about it for maximizing current through the chip.

- What causes the "brightness multiplexing" I described above? It must be something in the chip itself (overload?) since I disconnected the communications to the Arduino.

- The chip appears to have guaranteed clock frequency of 4Mhz (dc to 4.0, according to datasheet), could it be the 16Mhz ProMini is too fast? Since the delays between shiftOut commands and digitalWrite commands did actually have influence, the chip might get out of sync and "act weird".

- I directly connected 6 of the displays to my lab powersupply (all LEDs on, so displaying 8 + decimal point) and they drew a total of 222mA @ 2.0V, which would equal almost 37mA per display.
Would the datasheet of the display mean the maximum forward current is for the whole display, not individual LEDs in the display?
Since the chip limits the total current, this would mean there would be a clear difference in brightness when showing a 1 compared to an 8?

Thanks for any input. I've got a lot of other questions, but they are less important for now ;)

Go Up