Tuesday, 26 March 2019

arduino - Do I need zero-crossing detection for controlling a heater?


I need to control a heater element (about 500W) using arduino. For switching part I would go with zero-crossing SSR or zero-crossing optoisolator and triac (the second seems to be cheaper).



The question is do I still need a zero-crossing detection for the arduino. The time the load is switched on clearly depends on phase between arduino control pulses and line voltage.


case one


case two


In the first picture the load is switched on about half a cycle. And in the second it's switched on the whole time. But the only difference between these two cases is the phase of signals.


For controlling the heater I probably can make period of the pulses much longer which somewhat solves the problem.


But if I would like to use the same circuit to dimm a light bulb then I need to do zero-crossing detection in the micro controller to keep pulses in phase with AC line? And do I need zero-crossing SSR/optoisolator then?


Does this mean zero-crossing SSRs are suitable only in cases where switching period is long enough that the phase of control signal is not a problem?



Answer



You cannot smoothly dim a normal incandescent light bulb with zero-crossing control of normal 50/60Hz single-phase mains- the filament (even a really fat high-power one) will visibly flicker to an objectionable degree with even a small number of possible levels of control. Similarly, radiant heating is problematic with zero-crossing control because the temperature can change significant within a small number of cycles. In those cases, phase control is typically used.


Normally for zero crossing control we would like a cycle length of several seconds or more (up to maybe 30-60s), so that the number of half-cycles is at least in the low hundreds. That limits the applications to those where the low-pass filter formed by the heat capacity of the various elements will smooth out the power, so generally those applications with a time constant in the 1minute + range.



Phase control has problems that zero-crossing switching does not have (more EMI, there may filtering required for EMC compliance, undesirable audible noise from lamp filaments, nonlinear response power-vs-trigger angle). On the other hand, zero crossing switching of high current loads can cause visible light flickering (otherwise independent lights that happen to be powered from the same mains circuit).


For phase control or for zero crossing switching you need zero crossing detection. In the case of zero crossing switching, the micro can delegate that job to the triac driver and just tell it roughly when it wants the triac on or off, and the driver and triac will respond with some latency depending on when the zero crossing happens to hit.


There's a third alternative- the simplest- random switching, where the triac just switches on whenever it is asked to (and switches off at the zero crossing, since that's all it can do).


If you implement a zero-crossing detector for a micro and drive the triac with a non-zero-crossing opto (or use a random switching SSR) then you can select any of the three options with firmware.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...