MAX 7219 chip having dim LEDs on 7 Segment 6 digit LED display

Hello,

I was looking to reverse engineer those 7 segment mini LED displays to make a bigger one with 6 digits on them in order to display the time and other values.

I was successful in getting everything to work with a real time clock 1307 except that the leds are more dim than i need them to be.

I set Rset to be 10kohms at the beginning of the max7219 chip and each segment contained 4 LEDs connected with a common anode topology with each LED containing 200ohms as a current limiting resistor as shown in the attachments below. (Edit:The 1k resistors were later swapped out for 200 ohms)

I set the brightness to the max possible lc.setIntensity(0,15); I also tried used different LEDs, Rset, and current limiting resistor values to no avail.

I would get the brightness i want when plugging in the 5 volt line straight into the common anode node of one digit as compared to running it via the max7219 led driver chip which leads me to thinking that the max7219 is limiting the current being delivered to the leds…

Here is the datasheet of the LEDs i specified for the display https://datasheet.lcsc.com/szlcsc/1806080424_HONGLITRONIC-Hongli-Zhihui-HONGLITRONIC-HL-PC-3216H233W-9000-16000K_C219232.pdf

Any insight on this topic would be greatly appreciated

Schematic_Design mock up_Main PCB copy_20200327153258.pdf (549 KB)

The MAX7219 is a matrixing chip, meaning it switches one digit on at the time.
That reduces average current for one digit to 1/8 of the set current.
Nothing you can do about that.

The MAX7219, with 10k Rset, relies on the LEDs being 3.3volt, so it can push higher peak currents through the LEDs to compensate for that matrixing. You prevent that by using resistors.

Try removing the resistors, or reduce to 10 ohm or so if unequal brightness in the segment is a problem.
Leo..

Why are you using current limiting resistors with a chip that doesn’t need them? There’s no mention of it in the datasheet, that I can remember.

Does your display have 4 LEDs in parallel for each segment? Would that have something to do with it?

Ah, I found the schematic. It is as described in reply #3. This can work, but 1k is too high a value for this purpose.

iqasi096:
which leads me to thinking that the max7219 is limiting the current being delivered to the LEDs.

That is of course, its exact purpose. :grinning:

It appears you may have made a PCB while failing to prototype it first - a not infrequent blunder here. If your LEDs are all from the same batch, you likely can get away with no series resistors, otherwise something like 10 Ohms will permit as much brightness as available under the circumstances.

Failing that, you need to re-design your setup to use three MAX7219s, each driving all the LEDs in two displays. :sunglasses:

aarg:
Ah, I found the schematic. It is as described in reply #3. This can work, but 1k is too high a value for this purpose.

Ah yes i have realized that, I have however gone as low as 100 ohms for the current limiting resistors but that did not make much of a change as compared to the 200 ohms.

Paul__B:
That is of course, its exact purpose. :grinning:

It appears you may have made a PCB while failing to prototype it first - a not infrequent blunder here. If your LEDs are all from the same batch, you likely can get away with no series resistors, otherwise something like 10 Ohms will permit as much brightness as available under the circumstances.

Failing that, you need to re-design your setup to use three MAX7219s, each driving all the LEDs in two displays. :sunglasses:

I am sorry I'm a little confused to the last bit here:

[/quote] Failing that, you need to re-design your setup to use three MAX7219s, each driving all the LEDs in two displays. :sunglasses:

[/quote]

Why is it that i need three max7219s to drive 6 digits? Is it due to the fact that it can only handle delivering power to 64 LEDs at a time?

Wawa:
The MAX7219 is a matrixing chip, meaning it switches one digit on at the time.
That reduces average current for one digit to 1/8 of the set current.
Nothing you can do about that.

The MAX7219, with 10k Rset, relies on the LEDs being 3.3volt, so it can push higher peak currents through the LEDs to compensate for that matrixing. You prevent that by using resistors.

Try removing the resistors, or reduce to 10 ohm or so if unequal brightness in the segment is a problem.
Leo..

Would removing the resistors completely or reducing them to 10 ohms cause a risk to the LEDs by possibly drawing too much current from the Arduino nano and burning them out?? Also would that be sustainable for future implementations using a 3.7 V 6000mAH battery?? I am looking to potentially make this project self sustainable so I assumed current limiting resistors were essential in preventing the battery of quickly running out of charge.

Thank you for your feedback!

I think there is enough protection in the MAX to prevent LED damage. You will have to place resistors (or should) so you can use 10 ohms or zero ohm resistors. Place LEDs from the same tape reel.

so I assumed current limiting resistors were essential in preventing the battery of quickly running out of charge

Where in the MAX data sheet is there any indication that that could happen? There is an important line about MAX supply voltage in there, minimum 4.0V. So it won’t run on the 3.7 V 6000mAH battery.

aarg:
I think there is enough protection in the MAX to prevent LED damage. You will have to place resistors (or should) so you can use 10 ohms or zero ohm resistors. Place LEDs from the same tape reel.
Where in the MAX data sheet is there any indication that that could happen? There is an important line about MAX supply voltage in there, minimum 4.0V. So it won’t run on the 3.7 V 6000mAH battery.

Update: I used zero ohm resistors with LEDs from the same tape reel but they still however do not give me the same brightness as compared to when i supply the individual segments with 5 volts.

I forgot to mention that I was looking to implement a DC to DC boost converter to boost the battery voltage to 5 Volts.

Is it not possible to connect more than 2 LEDs in parallel per segment to the max7219 to recreate the max range of brightness possible for the LEDs?? As in do i require 3 max7219s in order to drive a total of 180 LEDs (30 per digit 4 per segment except for the DP which is 2 LEDs in parallel).

Thanks!

iqasi096:
I used zero ohm resistors with LEDs from the same tape reel but they still however do not give me the same brightness as compared to when i supply the individual segments with 5 volts.

Of course not.
As said, matrixing eight digits reduces the average LED current to 1/8.
That does not mean 1/8 of the brightness, but still quite visible.
Leo..

iqasi096:
Why is it that i need three max7219s to drive 6 digits? Is it due to the fact that it can only handle delivering power to 64 LEDs at a time?

Yes, if you want maximum LED brightness.

iqasi096:
Would removing the resistors completely or reducing them to 10 ohms cause a risk to the LEDs by possibly drawing too much current from the Arduino Nano and burning them out?

No, as the very purpose of the MAX7219 is to perfectly control and limit the current to the LEDs. Which means that four in parallel will share that specified current. They may or may not share it equally but will always be individually dimmer than a single LED.

iqasi096:
Also would that be sustainable for future implementations using a 3.7 V 6000mAH battery?

I doubt it. The MAX7219 datasheet specifies an operating range of 4.0 to 5.5 V.

iqasi096:
I am looking to potentially make this project self sustainable so I assumed current limiting resistors were essential in preventing the battery of quickly running out of charge.

The current limiting is already built into the MAX7219. And the MAX7219 is the most appropriate way of driving such displays.

I just realized that each segment outputs around 40mA which means that each LED is being supplied with 10mA, I would probably need to implement an external drive transistor. Time to figure that out! B-)

Thank you everyone for your input!

10mA should be more than enough for small smd LEDs.
Don’t forget that matrixing reduces that to 1.25mA average.
If you want max brightness, then better attack that.

You could use TPIC power shift register chips for that, one per digit. I use the smd TPIC6C596.
Then you should use the LEDs in series, because paralleling LEDs at max current is asking for trouble.
More current has of course an impact on battery, and LEDs in series need a higher battery voltage.
Leo…

iqasi096:
I just realized that each segment outputs around 40mA which means that each LED is being supplied with 10mA, I would probably need to implement an external drive transistor. Time to figure that out! B-)

Very bad idea!

Take the hint! If you are that desperate for the maximum current, use three MAX7219s so every LED has its own place in the matrix. Coding is easy - easier than wiring absurd numbers of transistors (like - sixteen or twenty-four) and resistors.

Paul__B:
Very bad idea!

Take the hint! If you are that desperate for the maximum current, use three MAX7219s so every LED has its own place in the matrix. Coding is easy - easier than wiring absurd numbers of transistors (like - sixteen or twenty-four) and resistors.

Why is it such a bad idea? Isn't this what maxim integrated suggested in their app notes here? Using the MAX7219/7221 to Drive Higher Vo - Maxim Integrated

Three ICs and three current-setting resistors with the necessary bypass capacitors, instead of a terrible mess of transistors and resistors.

Use code complexity instead of circuit complexity.