Controlling the intensity of an LED with a 555 and a potentiometer is fairly straightforward. Like this circuit (feel free to criticize).
I would like to go one step further and have the duty cycle increase then decrease (almost) linearly with time with a period of a few seconds. With a potentiometer to adjust the period between 0.5 and 10 seconds. I would also like to be able to adjust between 0 and 100% the minimum and maximum duty cycle that drives the LED. The PWM frequency should stay above 1kHz (basically visually flicker free) and should probably be constant. Only its duty cycle should slowly increase and decrease.
Having a pair of potentiometers to set the min and max duty cycle would allow (among other uses) to get a constant duty cycle.
Additionally, I'd like to avoid the easy solution using a microcontroller and rather use mostly 555's, passive components and MOSFETs/BJTs for a few reasons:
- I'll learn a lot more and that's one of my main motivations here
- I have those parts readily available and hopefully in large enough quantity
- It'll looks cool and old school 😎
This task seems very much within reach of one or two 555, but I can't figure it.
Here are the bad ideas I've had so far.
- Change the voltage on the CONT/Ctl pin of the 555 to adjust the duty cycle. Unfortunately it would make the behavior very non-linear when the voltage gets close to GND or VCC.
- Use a MOSFET as a variable resistor. But the linear region of a MOSFET isn't that big. And I'd still need to generate a triangle voltage from GND to VCC.