The problem is that my 1200 watt conventional heating element is creating a mechanical buzzing noise. Shown below is a schematic of my setup:

enter image description here

PD4 is the output from a 5v microcontroller and is triggered high based on an interrupt from a zero-cross over circuit.

AC hot out and AC neutral are connected to the conventional heating element. The triac is ultimately used to control the duty cycle of the heating element.

From what I've read, the mechanical buzzing is due to the high change in current vs change in time (di/dt) caused by varying the phase of the triac. The step in current can be as high as 15 amps.

Based on some research this problem sometimes surfaces as "light bulb ringing" in light dimming applications. Some solutions people have proposed is to use a choke inductor.

I setup a 39uH inductor in series with the hot load line thinking it would reduce the di/dt of the circuit however it made no change to the buzzing.

  • \$\begingroup\$ is it 60hz buzzing? \$\endgroup\$ – crasic Jul 30 '13 at 4:50
  • \$\begingroup\$ Yes, it's buzzing at roughly 60 Hz. I can't measure it, but the buzzing only occurs when the triac changing the start phase of the output. The buzzing is loudest at 90 degrees off phase and very quiet when at 100% duty cycle or 0% duty cycle \$\endgroup\$ – Dub Jul 30 '13 at 5:00

One method you might consider is to only trigger the triac at the beginning of half-cycles and then only trigger a percentage of half-cycles based on the desired heat output. If, for example, you wanted a 50% heat output, you would trigger the triac for 50 out of 100 half-cycles. For 25% output, you would trigger for 25 out of 100 half-cycles. You will need to take care not to make your trigger pulse too short or the triac may not turn on.

Similarly, you could change your opto-triac (MOC3023M) to a zero-crossing type (possibly MOC3043M) and then either use the above mentioned method, or simply time the on-time of the trigger for the desired percentage of on time, remembering that the coarseness of the control will be in increments of half-cycle times. By using a zero-crossing type opto-triac you no longer need your external zero-crossing detector.

For more on what I am describing (zero-crossing-mode) see: http://www.oztekcorp.com/blog/bid/45104/Controlling-Power-with-SCR-Phase-Angle-vs-Zero-Crossing-Mode

If you decide to use this method, you should probably get rid of the inductor as it is not needed and may cause problems with triac turn-off unless you add a snubber circuit. For more on this see: http://www.onsemi.com/pub_link/Collateral/HBD855-D.PDF


  • \$\begingroup\$ I think I understand your first point. Basically you're suggesting using only the positive or only the negative parts of the AC sine wave to avoid the oscillating magnetic field created by the di/dt. \$\endgroup\$ – Dub Jul 30 '13 at 16:33
  • \$\begingroup\$ I don't completely understand your second point. How can the MOC3043M can replace the zero cross over circuit? I'm using the zero cross over circuit to trigger an interrupt. I don't completely understand your second point. Once the interrupt is triggered, my micro controller knows exactly when to trigger the triac. Without that intirrupt feedback, how would I know when to trigger the triac for a particular duty cycle? \$\endgroup\$ – Dub Jul 30 '13 at 16:40
  • \$\begingroup\$ @DsaR No, I am suggesting always triggering at the zero-crossings (two per cycle). Heaters in general have long persistence. To avoid current surges, trigger at the zero-crossing (the inductor is not needed), but do not trigger on every cycle, but only on some of the cycles. You could for example turn the heater on for a quarter-second and off for three-quarters of a second to achieve one quarter power instead of triggering your triac for the last quarter of every cycle (or every half-cycle). Lamp dimmers chop up the cycle because my method would result in visible flicker. \$\endgroup\$ – Tut Jul 30 '13 at 16:51
  • \$\begingroup\$ @DsaR With my method, you want to turn on the triac at (or near) the zero crossing to avoid the current surges. The MOC3043M will do this automatically. You can then generate a longer period PWM signal (for example a second or two depending on the resolution you need) to control your heat. This is what you would send to the opto. The duty-cycle would regulate the heat. \$\endgroup\$ – Tut Jul 30 '13 at 16:56
  • \$\begingroup\$ @DsaR You could still use you zero-crossing interrupt to count cycles in order to generate the PWM signal. For 1/4 power, count 1 cycle on and 3 cycles off for example (or 25 cycles on and 75 cycles off). \$\endgroup\$ – Tut Jul 30 '13 at 17:16

What is the heater heating. It matters. (eg Sous Vide bath room heating, ... . )

Operate heater directly off mains (hard short on IC4 mains connections )(DO ghet the right leads to connect together.


IF the heater buzzes when mains operated directly as above then you need to address this . Operating from a bridge rectifier to give full wave DC may help. If still not good enough insert the inductor in the (pulsed) DC side of the circuit.

BUT buzzing may be due to non full cycle TRIAC control. Even with a true zero crossing driver, if you are switching on most cycles with few long pauses it may be audible as hum etc. A heating element usually has a time constant of seconds and can be switched at say a one second rate or slower with minimal problems.

If the zero crossing detector and switching are not working at zero crossings you could put a true zero crossing opto coupler in in place of the random triggerable one you have now.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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