Blinking LED at two speeds using 555 Timer

555blinkled

I'm trying to build a circuit that will blink a single LED twice a second for one second and then once a second for two seconds. I can get the individual frequencies with two different 555 timers but I don't know how to make a circuit that would provide the two frequencies in succession. I know I will need to use two 555 timers but I can't wrap my head around the circuit that would make it work.

Any help is greatly appreciated.

Best Answer

This is the most straightforward way that comes to mind. You could use another 555 timer (or an RC circuit equivalent) set to a period of 3 seconds and a duty cycle (ON-time) of 1 sec and OFF-time of 2 secs. The 555 output would be connected to an NPN transistor's (T1) base (standard CE config) to switch it on/off at intervals, according to its duty cycle. An inverter IC (or just another transistor) will also be needed. The supply pin of the 2-sec 555 will be connected to the collector of T1. The collector of T1 will also be connected to the inverter input, while the inverter's output should be connected to the supply pin of the 1-sec 555; this is so that both 555s are never ON at the same time. The outputs of both original 555s should be connected to the LED with a current-limiting resistor in series. A diode should be at each output to prevent current from flowing from one output to the other.

It should all work as follows: At first, the Master 555 output goes HIGH. During the Master 555's 1-sec ON-time, T1's collector is at 0V. Therefore, the 2-sec 555 is OFF and the 1-sec 555 is ON, because of the inverter. The 1-sec 555 generates its waveform within a second. T he Master 555 output then goes LOW, thereby turning off T1, and it begins its 2-sec OFF-time. T1's collector is HIGH, so the 2-sec 555 is ON and the 1-sec 555 is OFF, again because of the inverter. The 2-sec 555 generates its pulse. The Master 555 output goes HIGH again and so on.

Further tuning will be needed of course. An MCU would accomplish this with no more than a few lines and far lesser complexity so I presume you have a good reason for using this method instead.