Pages: [1]   Go Down
Author Topic: MAX7219 and higher voltage LED displays - how?  (Read 1493 times)
0 Members and 1 Guest are viewing this topic.
Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
http://www.maxim-ic.com/app-notes/index.mvp/id/1196

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
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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. ;-)

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

* MAX7219 high voltage LEDs (Schematic)_final.pdf (41.15 KB - downloaded 29 times.)
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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. ;-)
Hopefully tomorrow...
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Global Moderator
Boston area, metrowest
Online Online
Brattain Member
*****
Karma: 437
Posts: 23673
Author of "Arduino for Teens". Available for Design & Build services. Now with Unlimited Eagle board sizes!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Designing & building electrical circuits for over 25 years. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


* MAX7219_higher_voltage_explained.png (765.21 KB, 1377x1620 - viewed 107 times.)
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


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 smiley

Feedback welcomed!


* drm_led_markup.JPG (151.51 KB, 972x726 - viewed 47 times.)
Logged

Berkshire, UK
Offline Offline
Full Member
***
Karma: 0
Posts: 120
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


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

Quote
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

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

Quote
3) 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.
Logged

Chris

Location: Berkshire, UK
My Astro and DIY projects website: http://yesyes.info/

Pages: [1]   Go Up
Jump to: