I’m using LED strip lights for a model I’m working on. The trouble is, they are too bright. You can buy dimmers for LED strips fairly cheaply, but they are overkill for my purposes – I’m only using a portion of the strip therefore the current is low and I want a small, non-bulky circuit that I can pack in neatly with the rest of the electronics.
LEDs are always on, or off, so dimming is done by switching them on an off very fast – PWM, or Pulse Width Modulation. I’ve noticed I’m very sensitive to the flicker rate on dimmed LEDs (low refresh rates can give me headaches), so another benefit of building my own dimming circuit would be to get a higher cycle rate than a purchased dimmer might offer.
The first step was to use the trusty Arduino to get the parameters for the pulse width and duty cycle, i.e. how often to refresh, and how long each pulse needs to be low to achieve the right amount of dimming. A quick bit of breadboard work and a little code told me that I needed a pulse width of 2ms or less and a duty cycle of <10%.
Armed with that, I designed a hardware circuit to mimic those outputs using a 555 timer IC in astable operation. Low duty cycles with a 555 need some special allowances in the circuit (a Schottky diode). LTSpice is great for mocking up circuits, to confirm the calculated component values and test the outputs by tweaking them:
R2 is the key component that controls the duty cycle (hence the amount of dimming). To allow for a bit of adjustment and leeway, I used a trimmer potentiometer for this so I could adjust it in-place on the model to account for varying ambient light conditions.
Finally, I added a current amplifier to the output to ensure the 555 was not drawing excessive current. A 2N222 transistor could supply 800mA – comfortably more than the 400mA for the meter length of LED strip.
A little on-line shopping and soldering on veroboard, and here’s the final circuit in action, ready to go: