I have a design for a dimmer circuit, but I am unsure of its correctness or if there are issues with it. It's meant to be controlled by a 50% duty cycle PWM signal - the dimming responds to the phase angle between the PWM wave and mains AC:


simulate this circuit – Schematic created using CircuitLab

EDIT: An earlier version of the schematic had had frankly ridiculous resistor values on the voltage divider, but they should be correct now.

I'm also not sure if there even are half-bridge optocoupler ICs like that. I could just use individual optocouplers but if anyone knows of a specific part that would be helpful.

The main motivation for this design is to reduce the number of output transitions the MC will need to make to control the device.

The device would be controlled with a waveform like this to adjust the dimming level:


Note that I've included what I'd have to output to control a regular triac at 50% for comparison.

Would this design work? Is it a good design? How can I improve this design?

  • There is one limitation that I'm already aware of: The failure mode in case the MC dies is to output a half-wave rectified waveform to the output, rather than shutting off or giving full output. If there are other limitations I'd be glad to know them though. – AJMansfield Mar 22 '17 at 16:29

Your circuit won't work. I know of no opto-coupler that will withstand the voltages you'll have.

Try something like this for driving SCR's:


simulate this circuit – Schematic created using CircuitLab

Is there an overriding reason not to use a Triac as the main switch?

  • The main motivation for the design is so I can control it using the fixed square wave rather than needing to pulse twice per phase (as I would need for a triac). I can generate the former without any software intervention using a hardware timer on my MC, but pulsing a triac would require some interrupt code to handle (and incur the associated risk of missing an event). – AJMansfield Mar 22 '17 at 17:11
  • Not sure what you are getting at. What makes you think your square wave is not pulsing the drive? In the drive schematic I showed you could permanently turn on the LED in the MOC3020 and use as a simple on/off switch ...you could equally use your square wave to drive the LED and phase control the turn-on. You have to respond to zero crossings to generate your phase turn-on time square wave ....if you miss a zero crossing indicator your timing will be out of course. A Triac drive (turn-on signal) does not have to be a pulse, just as with an SCR. – Jack Creasey Mar 22 '17 at 17:53
  • It would still need to have four edges per period though, not just two. In any case I realized that I had completely messed up the voltage divider feeding the optocouplers - it should be fixed now. – AJMansfield Mar 22 '17 at 18:07
  • What I mean, driving a triac I'd need to switch back off at the start of both the positive and negative halves of the wave. The point is to have the transition to high trigger it during the positive half, and have the transition to low trigger it during the negative half. Pull it high to trigger positive phase, just leave it high, and only pull it low again when its time to trigger negative phase. – AJMansfield Mar 22 '17 at 18:17
  • Nope, your circuit still won't work. And I simply don't understand your reference to 4 or 2 edges?? SCR or Triacs are NOT edge driven. The major difference between them is that the Triac will trigger in any quadrant with either positive or negative current in the gate, the SCR will not. With the schematic I showed, turning on the MOC3020 will turn on only the relevant SCR (the one with the Anode positive wrt to Cathode. The devices turn off when the current through drops to close to zero (below holding current). – Jack Creasey Mar 22 '17 at 18:31

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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