Help! How to control 8x8 matrix of tiny incandescent bulbs?

Hi Arduino forum!

I have a specific task at hand. I want to control a 8x8 matrix of E10 24V 0.04A 1W incandescent bulbs. Each bulb should be individually controllable in brightness. So not just on/off, but complete brightness control. Such that it will allow for nice animations.

You might asks, why don't use individually addressable LEDs? Well the incandescent bulbs are chosen for artistic reasons and therefore cannot be changed out for a different lighting source.

In total, I will use 6 of these 8x8 matrices to create a panel of 384 bulbs, which should be controlled by an esp32 or similar microcontroller. It is convenient to split it out in multiple 8x8 matrices, because this will significantly reduce PCB cost. Otherwise the PCB would be very large and expensive. Also, this makes it somewhat modular as well.

The question is, how to control the bulbs in such an 8x8 matrix? Should I use an individual transistor per bulb? Should I use multiplexing? I studied electrical engineering, but I am a bit lost on this :confused:

I would really appreciate any advice on which components and general approach I should use. Many thanks in advance!

The brightness of incandescent bulbs can only be controlled by changing the current to the bulb. So you need a series resistance for each bulb. A transistor can be that variable resistance. Therefore you must have a transistor in series with each light bulb. Then you can vary the current through each individual transistor by varying the base voltage.

I have controlled the brightness successfully of one bulb using PWM and a transistor, that was quite straight forward. But for 8x8, this would require 64 digital outputs on the microcontroller, that part is not possible.

There exist PWM expanders.

e.g.

https://howtomechatronics.com/tutorials/arduino/how-to-extend-arduino-pwm-outputs-tlc5940-tutorial/

https://www.sparkfun.com/products/10616

Someone will come along and tell you about shift register and other devices. You can get up to 8 transistors, I think, in a single package, so that will help.

I still haven't thought of how to do it! but I would try to involve CI Max7219.

Indeed, I looked at those as well. But a matrix multiplexing controller in combination with a transistor on each row and column (16 total) is not the way to go here? It would really need an individual transistor per bulb?

I looked at that, but it ofcourse is not high power enough. But I was thinking of using it in combination with a transistor on each row, and a transistor on each column, multiplexing. That would work in theory right?

Yes, combine the Max7219 with small mosfets.

The advantage of using the Max7219 is that you don't need a processor with many ports.

I don't remember if the Max7219 allows individual brightness control.

Will have to look into individual brightness control then, definitely needed.

But if that doesn't work, another option is to use shift registers in combination with a individual transistor per bulb?

Better to use PWM ?

Remember that the cold resistance of the filament is much less than the normal operating resistance.
Therefore the cold current will be much higher than the nominal 40mA rating.

You need to bear this in mind when selecting drivers...!

only if you will need to control more than 1 bulb at a time on a row or column. But you know that already.

It does but only seven levels of brightness per LED.
Or eight if you count off as a brightness level.

How about charlieplexing?

you'd need to add a diode in series with each bulb

I'm not sure multiplexing will be practical in this situation. These are incandescent bulbs, not LEDs. They will not get hot and therefore not light at all with low duty cycles. I'm guessing, and it will vary depending on the bulb design, but the bulbs may only begin to glow at around 50% duty cycle.

If you multiplex an 8x8 matrix in the conventional way, you can only achieve a maximum 12.5% duty cycle. To get the bulbs to full brightness with only 12.5% duty cycle, you would need to apply almost 200V 70V! (thanks for the correction @Paul_B) I doubt the bulbs are rated for that.

Another reason why max7219 would not be suitable.

I would consider 4x pca9685. 64 transistors will be needed to switch the 24V power. Maybe some MOSFET arrays would be suitable, I can't recommend a chip model, but maybe upa1601?

Or ULN2003A…

Yes, uln2003/8 is a possibility but it will drop a significant voltage, maybe 1.5~2V. You could increase the supply voltage a little if you don't like the reduced brightness.

I am considering switching to low voltage LED filament bulbs instead. I don't like the look as much, but incandescent has a lot of down sides.

If I were to use a ULN2003, do I then need shift registers in order to control them all with a ESP32? And can I get 8 bit PWM dimming per bulb?

Sounds like a contradiction. LED filaments normally have many led chips in series inside each filament, requiring a higher voltage.

Can you post a link to those?