Question about the correct resistor for MAX7219 RSET

I’ve done some searching about this, and there’s certainly lots of confusion & questions about this, but none that cleared up my question.

Here’s what I’m doing:
I wiring my own 64 LED matrices that I currently plan to drive with a number of MAX7219s. I have used the MAX7219 a number of times, so the code and wiring is something I have a handle on. What I don’t quite understand is how to arrive at the correct RSET resistor value when I’m wiring the matrix. For clarity, the MAX7219 uses a single resistor between the ISET pin and the 5V supply for all the LEDs controlled by the MAX7219.

The maximum current of the MAX7219 is rated for is 500mA:

I intend on using an LED such as this:

These LEDs individually have a 20mA forward current, and a 3.8V voltage. Do I multiply the amperage by 64 to get the value to apply to resistor table for the MAX7219? 64 x 20mA puts the value way outside the table in the datasheet, which is in a range of 10mA to 40mA. That single RSET resistor appears to set the peak for all LEDs, but in the MAX7219 datasheet RSET table, it refers to “segment current” and not overall device current.

What I’m really trying to figure out is the brightest LEDs I can use in a 64 led matrix with the 500mA ceiling of the MAX7219. In the use of the matrix, I will frequently be lighting all of the LEDs at the same time. I’m wiring the LED matrix myself because I need control of 64 x numberOfBoards LEDs, and they will not be in the usual 8x8 grid.

The MAX7219 RSET table is attached.


The table is for per-segment current, so about 22 is the value to use (I presume thats in k-ohms)

MarkT: The table is for per-segment current, so about 22 is the value to use (I presume thats in k-ohms)

Are you basing that choice on the spec of the individual LED, or the individual LED spec x 8? If you wouldn't mind typing out you calculation, it would be really helpful.

I always use 10K! :wink:

The adjustment for leds with different forward voltages is small, so I don’t worry about it. The ISET resistor sets the peak current, and with 64 leds, the average current will be one eighth of that. Most leds will take 4 or 5 times their max continuous current as long as the duty cycle is 1 in 10 or less and the pulses are short (eg. <1ms), so I figure 2 times the max continuous current with a 1 in 8 duty cycle is probably ok.

I did have some trouble with leds blowing when using '7219 like this but they were dirt cheap leds off ebay and I don’t think the quality was great. With better quality leds I’ve had no problems.


I always use 10K! :wink:

That’s exactly what I’m testing it with. It’s working fine, but I feel like there’s some obvious rule or common sense that I’m missing.

Two things to bear in mind:

thermal cycling tends to reduce component life, so higher frequencies are better for multiplexing as the temperature variation is less per cycle.

LED efficiency decreases on overload - the manufacturers have already tried to milk the best performance out of the LED chip already, so increasing the current density not only affects reliability but efficiency too.

Use a preset pot for Rset?

I also have an ldr attached to an analog pin on the Arduino, for every '7219 project I've done so far, so I can set the display brightness based on ambient light levels. So the average led current will be less still, except in bright conditions.

MarkT: Use a preset pot for Rset?

thanks. a potentiometer is a good idea.