Circuit to connect light an incandescent light (3 v /150ma) from Arduino I/O

I'm making a project where I would like to use mini-incandescent Christmas tree lights instead of LEDs. The incandescent lights draw in the 2.5 to 3 v range at 150 ma. (Far more than 40 ma each I/O pin can produce.

I was thinking of using transistor, but not sure which one or what resistor biases to use. Could use a bit of assistance. I understand in theory how transistors work, but not how to figure out/calculate the values for the resistors.

Is there a better way of doing this?
For the project I am working on I will be using 30 incandescent bulbs. At any time a max of 5 will be lit at the same time. I plan on using an Arduino Mega for the additional I/O pins. So one transistor circuit per bulb?

Or is there a better way of doing this?

Thanks

Yes, one transistor per bulb. You can get fancy with "Charlieplexing" but that's going to make your head spin.

Check out MOSFET as a switch and read the rest of that series if you like that page.

For only 150mA and a large number of bulbs, I would consider using an LED driver such as the MAX6971. That will drive 16 LEDs with only 3 Arduino pins and only one resistor to set the current. (I forget the max current on that chip, it probably can't do 150 but it's something to look at.)

Got it thank you.

So instead of using a Mega use a MAX6971 /16 channels. Still need to use the MOSFET with the MAX6971, right? The chip handles up to 36 volts, but still limited in the current to 55 ma.

Look for another similar chip with more current capability.

Or replace the filament in the globes with a yellow LED.

An LED would just not be the same. An incandescent has different fade up/fade down properties which is critical for this project.

Morgan thanks, this has been really helpful.

With a little programming, you can make an LED fade look like incandescent. Remember, for the Arduino, a millisecond is a long time. You can update thousands of LEDs in a millisecond.

My latest project uses a fade just a bit longer than a normal lamp and it does it in discrete steps which makes it kind of flicker in an unusual way. There's just a tiny perception that the light isn't coming on smoothly and then it's on and you forget about it.

MorganS:
Yes, one transistor per bulb. You can get fancy with "Charlieplexing" but that's going to make your head spin.

Check out MOSFET as a switch and read the rest of that series if you like that page.

For only 150mA and a large number of bulbs, I would consider using an LED driver such as the MAX6971. That will drive 16 LEDs with only 3 Arduino pins and only one resistor to set the current. (I forget the max current on that chip, it probably can't do 150 but it's something to look at.)

You cannot reliably use LED drivers to drive incandescents, since filaments change their resistance by
about a factor of ten as they heat up - using constant current may leave the filament cold in a low-resistance
state unless you set the current too high for the bulb.

So would best solution to use a MOSFET as a switch?

30 MOSFETs are hard to manage physically, unless you get a PCB made.

I offer a board with 32 MOSFETs that can sink higher currents like incandescents.
Shift data into 4 shift registers to turn them on & off.
http://www.crossroadsfencing.com/BobuinoRev17/