I have a PWM output from one device (Arduino) and want to use that output to dim an incandescent 230V 60W light bulb.

I found this circuit online which does what I want it to do.


From the way I understand it, the bulb will light up with full brightness when the Arduino is turned off.

Now I would like to modify the circuit in two ways:

  • Power to the light bulb should be turned off completely when the Arduino is off. Note that I have not yet tried building the circuit, so I might misunderstand something here. Or does the optocoupler work differently from a TRIAC in that it will turn off when there is no voltage applied on the left side?

  • I would like to use 4 PWM signals to control 4 bulbs. Which parts of the circuit can I re-use?

  • \$\begingroup\$ you normally would use a triac or thyristor and phase angle control if im correct \$\endgroup\$
    – Jogitech
    Nov 10, 2017 at 16:08
  • \$\begingroup\$ @Jogitech is right. I had a roof fan in my home that had a remote control and permited dimmering of an incandescent lightbulb. It was built with a PIC sensing and controlling the phase angle of the mains with its output feeding a triac's gate. I remember when I learned about "snubberless triacs". EDIT And Tony Stewart answer is right too. \$\endgroup\$
    – mguima
    Nov 10, 2017 at 16:58

1 Answer 1


When Arduino is off , there is no current thru R1 and thus R2 will keep the FET turned off with low Vgs. There are no shared parts in this design without expecting some changes in performance depending on how the Optocoupler loads are enabled. We call this load regulation when a series string of Rs/(Rs+Rload) causes a change in output voltage due to variations in load. If you drive all Optos together then R2+R3 the load is reduced to 25% in series with R4.

With some effort you can simplify this to make some DC parts common, but then you will quickly realize it is far simpler to create a ZCS and software phase control with a triac for 4 ports and possibly even get away with non-isolated DC power if your interface to communicate to Arduino is isolated.

Misc info.

But in general, there are many reasons why PWM is a bad choice for tungsten bulbs.

PWM switches are efficient only when the switch impedance is relative low compared to the load. i.e. < 5% for 5% loss of load. This is not the case for cold start on tungsten and is why even triac dimmers surge on from off and have hystereis in the low range.

Tungsten resistance from cold to hot, will rise to 10x the cold value due to the ~2500'K rise in temp.

Tungsten coils are slightly inductive so rise time causes a phase shift.

This is why PWM is never used for tungsten bulbs and only use line frequency Triac phase controls.

Consider a 120W bulb @ 120V is 120Ω when hot, then the R_cold ~ 12 Ω and it's power dissipation at P=V²/R= (120V)²/12 = 1200 W or 10 times the steady state.

If using a FET bridge to drive PWM the conduction state depends mainly on the Vgs/Vgs(th) ratio and not the load resistance and if you set a low duty cycle where the filament does not heat up much like 10% of 120W or 12W, your bridge can be overheating.

Why ? because of the RdsOn/ load ratio when the bulb is relatively cool.

Why do triacs work better?

Triacs will not fire if the load resistance is too low or in other words current ratio of the load to trigger current is too high. this is due to the internal saturation or ESR of the Vbe junctions not being driven hard enough to latch.

( Triacs are basically two BJT's PNP & NPN with cross connections between CE to drive BE so they are trigger current and load sensitive with current gains dropping to <20% of hFE at saturation.)

So what happens is as the phase angle is increased, the bulb jerks on well above the minimum when dimming down. But this would not be the case for a voltage controlled FET bridge in PWM mode. The lamp would turn on and the bridge would consume almost as much as the bulb if you chose RdsOn to be 10% of the load.

But if you chose a bridge with much lower RdsOn like < 1% of load , OK, but this then becomes costly compared to Triacs.

Examine this design choice of FET

60W @ 230V , R_hot= V²/P = 230V²/60W = 882 Ω , R_cold= 88 Ω , RdsOn @ Vgs = 10 V = 0.40 Ω = 0.5% of load , so good choice but if you try a couple 100W bulbs , what out for hot device when slow rampup.

  • \$\begingroup\$ Thank you! That is a lot of information to process. Actually, in my specific case it's 4 40W filament style light bulbs so I guess the rise in resistance is not as big. That's beside the point though. From my understanding, a design with TRIACS would leave the bulbs on when the Arduino is off, correct? Also, only my input is PWM and this is not something I can change since it's an external device that is generating the PWM signal. How I process it or how I do the actual dimming is up to me. Is there an alternative circuit that you would recommend? \$\endgroup\$ Nov 10, 2017 at 20:21
  • \$\begingroup\$ No the rise in resistance is not determine by power but rather the colour of the light intensity which implies temperature. triacs with a some shunt resistor can be safely off when no input signal so they dont flicker on from some transient noise. \$\endgroup\$ Nov 10, 2017 at 20:28
  • \$\begingroup\$ I know and that is what I meant -- these filament style bulbs have a temperature of 3000K. \$\endgroup\$ Nov 10, 2017 at 20:31
  • \$\begingroup\$ It is ueful to understand all your options. I might use Triacs, others might prefer PWM instructables.com/id/… \$\endgroup\$ Nov 10, 2017 at 20:31
  • \$\begingroup\$ @winternight: Your lamp description is ambiguous. I don't know what type you are describing. Specify whether it is a "tungsten filament incandescent lamp" or an "LED filament bulb". Is your 3000 K the filament temperature or the "colour temperature". \$\endgroup\$
    – Transistor
    Nov 10, 2017 at 21:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.