MAX7219 and higher voltage LED displays - how?

Hi,
I'm looking for a solution to drive 3 inch 7-segment common cathode LED displays with a MAX7219.
The displays require 9V 20mA per segment. The 20mA is well within the MAX7219's max segment current of 40mA.

However, the MAX only provides 5V to the segments. I've tried this and the only segment that comes on is the decimal point (through a zener diode).

I've found several ways to do that but they all don't really apply to my situation.

I've found a MAXIM application note that describes driving displays with higher voltage but they require common anode displays. I have already bought the common cathode displays and wouldn't want to spend more money on common anode displays.

The other thing I found is in the MAX7219 datasheet on page 12. It uses the MAX394 quad analogue switch IC to drive a MOSFET per digit. 2 problems with that solution are that a) it seems to be for higher current, not higher voltage (supply voltage still at 5V) and b) I can only find the MAX394 as SMD and I don't have SMD soldering equipment.
http://datasheets.maxim-ic.com/en/ds/MAX7219-MAX7221.pdf

I've been thinking about this for a while but just can't work it out. If this was logic outputs I'd probably find a way. But since both anode and cathode of each segment are connected to the MAX directly in a matrix kind of way I just can't get my head around this.
The best thing I could come up with is to use a matrix of 64 opto-isolators. But that would be slightly exaggerated, I hope.

Does anyone have any further ideas, please?

Chris

Even though nobody replied here, for reference I'll post a schematic showing how I got this working in the end.

I took a few pictures of my testing. First few show the circuit on breadboard. Then half the display in action. Then I soldered everything on strip board. The first board is the one with the MAX that I had already made. The second one I made today is the "driver board". On this board you can see why it was a lot easier to use another 2803 as inverter. Only one wire on the whole board. :wink:

https://picasaweb.google.com/chris.yesyes/ObservatoryClock#

MAX7219 high voltage LEDs (Schematic)_final.pdf (41.1 KB)

this is a really helpful thread, although im struggling to get my head around what the different chip are that have been used. like you i have used a max 7219 chip and have got the prototyping board all sorted out using 2 or 3 smaller seven segments.

Now im trying to move onto the larger displays and they are not bright enough. What were the chips that you have used to allow for a greater voltage to power the display?

any help would be greatly appreciated. cheers

Hi,
just a quick note that I will reply to this. Just need to find a quiet moment as it will take a while to write the reply. :wink:
Hopefully tomorrow...

Sorry yesyes, I have been busy with a new job & losing lots of the free time I had when I got layed off in November. Missed your original request for help. Glad to see you got it working.

adknotty:
this is a really helpful thread, although im struggling to get my head around what the different chip are that have been used. like you i have used a max 7219 chip and have got the prototyping board all sorted out using 2 or 3 smaller seven segments.

Now im trying to move onto the larger displays and they are not bright enough. What were the chips that you have used to allow for a greater voltage to power the display?

any help would be greatly appreciated. cheers

OK, let me try to explain how it works...
Since you've been using the MAX7219 already, I don't need to explain that one. So I'll concentrate on the drivers only.

Attached is the schematics again with a few additions.

On the anode side of the LED displays I used a UDN2981. This is a 8 channel source driver. Basically a darlington array that switches the output to the voltage applied to the chip when the input is high. On the attached schematic I have "zoomed in" to one of the drivers inside the chip.

On the cathode side I used a ULN2803. This is a 8 channel sink driver. It's very similar in function to the UDN2981 but it switches to GND when the input is high. Because of that it does not need a voltage connected to it, just GND .

But because it switches to ground when the input is high, it is inverting the input signal. That's why I have just put another one in front to invert the signal again. I could have just used a TTL level inverter chip instead of the first ULN2803 but I didn't find an 8 channel one and the ULN2803 has a pin-out that is very convenient to use on strip board PCBs.

The resistors between the 2 ULN2803 are pull-ups for the inputs of the second one. The first ULN2803 only switches to ground so we need pull-ups here to provide a high state to the input of the second ULN when the output of the first one is not low.

You would need to calculate the input voltage on the UDN2981 depending on your displays. There is a combined voltage drop over the ULN and UDN of about 2V. Add that to the voltage of one segment of the display and add another 1-2Volt that will drop over the current limiting resistors. Then calculate the resistors from that. Bear in mind that on most displays the decimal point needs a much lover voltage than the other segments. Either use a higher value resistor for the point or drop the excess voltage over a reverse polarity Zener diode in line with the decimal point segment line.

Well, I hope that helps. Let me know if you have more questions.

Oh, by the way, the intensity setting inside the MAZ7219 still works with this circuit.

I just finished building this out and noticed a couple of issues/items. See attached for image of layout marked up with notes

  1. I needed a pull-up resistor (array) between the max7219 SEGs and 2981. Without this it didn't work at all. I

  2. The cathode 2803 (bottom right in your pic) I had to plug it's ground into the +15v ground. Using the +5 ground (from the arduino) didn't work

  3. iset for the 7219 doesn't seem to do anything. I can run all of this without even a resistor in there

I'm going to get some 8" digits and make a large clock/timer. Once this gets flushed out I'm going to make some boards and maybe even try putting it on kickstarter.com :slight_smile:

Feedback welcomed!

Kotoc:
I just finished building this out and noticed a couple of issues/items. See attached for image of layout marked up with notes

  1. I needed a pull-up resistor (array) between the max7219 SEGs and 2981. Without this it didn't work at all. I

That's odd. Works fine for me without pull-ups

  1. The cathode 2803 (bottom right in your pic) I had to plug it's ground into the +15v ground. Using the +5 ground (from the arduino) didn't work

Yes. That ground is the ground for the LEDs. On my build the +5V and +15V have common ground.

  1. iset for the 7219 doesn't seem to do anything. I can run all of this without even a resistor in there

Funny you should mention that. I also built 8x8 LED matrix modules with the MAX7219 (driving the LEDs directly from the MAX) and changing the Iset resistor does seem to do nothing at all. For this particular circuit here I would expect it to have almost no effect as there isn't much current going through the input of the drivers anyway.

If you only need higher voltage and less than 40ma it does not need to be complicated. You only need a driver on the high side (the segments). The digits can continue to connect back to the MAX7219 directly. I have tested using a pair of N-channel MOSFETS. You need two to invert the signal twice.

To make it easier I found a high side driver instead of using 16 MOSFETS. I am using a (TBD62783) with a resistor on each drive line output. I have not built it yet, but I did test using MOSFETS for one segment. If it works like that, then the driver should do the trick.

So far as the ISET resistor, the datasheet indicates to set it to 47K to reduce current draw when you are using an external driver.

You DO realise you have revivied a dead thread.
And things have changed in seven years.

Now we mostly use TPIC6B595 shift registers for large displays.
No extra transistors/mosfets needed.
Leo..

Thanks Wawa. Old threads were all that I was finding when I was searching, so perhaps it was a good thing that I revived it. Old threads never die.. live on and prosper...

However, the part that you mention would not work so easily in my project. I am using the Max7219, so I need eight lines in, eight out. I would need different code to use that part too. I will keep the TPIC shift register in mind in case I need something like it.

Actually, Wawa was referring to one-chip-per-digit.

And only common anode displays. :roll_eyes:

Yes, I figured that I would need one per digit, unless I could figure out a way to matrix them like the MAX7219 does. Plus, I purchased common cathode displays and I want to use them. There might be cheaper chips than what I picked out (I actually had an engineer help me pick something, I was not finding what I wanted because I did not know what to search for. "High Side" driver was the key). I have ordered some circuit boards made, fingers crossed.

I'm glad you revived this thread. I am getting ready to do the same thing. Loads of ideas here.

Thanks!

The schematic in #8 above seems like the best solution. There are a number of "source drivers" available such as the UDN2981A on EBAY for about a buck. Use them to boost the segment drivers. Add current limiting resistors to the segments depending on your power supply and use the 47k resistor on ISET.

The digit drivers built into the MAX7219 are pretty powerful. They should handle just about anything you need. You should still use Common Cathode devices. I think they will sink almost 400ma so they don't need any more help.

Nice simple solution.

I am about to build one with 3ea 2.3" 7-segment digits I found on EBAY. This one is going to take me a while but I will post the results when I am done.

Greg

Common anode 7-segments displays and a TPIC6B595 (or other member of that family) per digit is cheap and easier.
And not matrixed means full brightness, while it's still possible to PWM/dim them.
Leo..

Another option for High Side driving of common cathode displays is MIC5891

Available at Digikey.com, good for higher voltage and current for large displays.

The UDN2981A is obsolete, I tend to avoid buying obsolete parts. However it looks like the UDN2981A is pin for pin compatible with the part I chose, and specs are pretty much the same too.

I did not realize the MAX7219 could sink so much. I checked the data sheet and you are correct. I was not paying attention to that since I will be operating in the 6mA range on this project.

Thanks Greg

My board came back and I built the project. I am happy to confirm that my schematic (see post 8) does work well. I am using the TBD62783 as the highside driver. Display segment brightness is consistent.

amdkt7,

My understanding is that the MAX7219 switches off a digit by pulling the common cathode high. In your case, the MAX7219 would pull it high to 5V but each segments could be pulled high at 12V (to control a different digit). This would mean you have 7V being applied to each segment.

If that isn't enough to light up a segment, then I guess that's okay?