PWM Controller


I'm building a LED workspace light spotlight which consists of ~60 LEDs which are arranged in parallel Groups of three serial LEDs (and a resistor per group of course). I'm using a supply voltage of 12V and those LEDs will draw a current of approximately 500mA.

I'd like to be able to dim the LEDs using a PWM controller, but I don't want to use a microcontroller (i.e. Arduino) but a dedicated PWM IC instead. I've been googling for some time now and so far I have found the TL494 IC which provides about 400mA max but it comes in a DIP-16 package and has a lot of options which I do not need, so it's a little oversized.

Essentially I'm looking for a PWM IC (DIP-8 preferred) with an adjustable duty cycle, which can be supplied by and can supply (as U_OUT) 12V. Does anyone know of an IC capable of this (and maybe has a schematic for wiring it)?

How about just a 555 timer set up as astable oscillator, driving an transistor to turn the 500mA on/off?

I found a schematic of that too, but I'd like to use as few parts as possible and therefore thought about an IC designed for only that purpose. I guess if there's no other solution I'll go for the 555, but still, maybe someone knows an IC that gets it done in one chip.

I found this circuit documented all over the place, very nice general purpose PWM dimmer, simple and inexpensive. I’m using one for an LED light strip, works like a charm.

Is 8 parts (excluding connectors) few enough?
1 555 IC
2 capacitors: .1uF and 1uF
2 1N4148 diodes (could use others)
1 100K potentiometer
1 resistor (4.7K for no good reason)
1 MOSFET (I used an STP16NF06, overkill)

This page is pretty sweet if you’re curious about 555’s:

pwm_gen_002.sch (136 KB)

pwm_gen_002.brd (11.8 KB)

Another option is to use chip like ATTiny25V/45V/85V, a potentiomter, and a transistor.

Use ADC to read voltage from the pot, use PWM to control the resistor. Internal oscillator, just need 100nF cap on Vcc.

First of all thanks for your responses!

@salsaman: What is the input header in the schematic used for?

@CrossRoads: Can I program the ATTiny using an ICSP-Header and the Arduino IDE?

I guess I’ll be ordering both of them and fiddle a little to see which one works better and fits into the enclosure.

I believe it is possible to program the ATTiny using an ICSP-Header and the Arduino IDE, with some additions to boards.txt so the ATTiny shows up as a part. Probably have to download some cores from, or you can search for Teensyduino & see how that is loaded, I think that uses ATTiny also.

The input and output on the 555 board are for 12V input power and output PWMed 12V power. I picked screw terminals for flexibility.

The ATtiny solution is cool, I new to start using those for small projects! Note that you'll need to get it 2.7-5.5V from your 12V source, so an LDO regulator and a cap or two in addition.

So the input header is essentially the VCC, correct?

I guess for thee ATTiny solution I need a MOSFET as well, I doubt that the ATTiny can source 500mA.

I'll be ordering both parts and look into it, maybe borrow an oscilloscope from the university where I study to check the PWM capabilities of the 555-circuit. But while digging some more I found the UC 3842 IC (datasheets ). I don't know whether it can be used to PWM some LEDs because there is no similar example in the datasheet but it's description says it's a "Current Mode PWM Controller" so I guess this could be used for PWMing the LEDs as well, right?

Depending on who you get it from, the UC3842 will have a fixed switching frequency of 50 KHz, 400KHz, or 500 KHz. Your current drive transistor will need to match up with that.

So the input header is essentially the VCC, correct?

Um… both headers are polarized, + and - leads on both. Check out the schematic :wink:

Really, the 555 is just the timer outputting a PWM signal, with the MOSFET doing the power switching. The same is the case with the UTtiny approach-- it can output a PWM signal and you can use that however you like. I use my 555 board with an LED strip that draws ~400mA at 12V, but it could handle much more than that.