Arduino driving a 2000w heating element

Hi all,

I have intention to use a triac to drive a 2000w heating element and also use the triac to dim the power of the heating element itself.
I've found tons of examples of circuits to dim a light bulb using Arduino (zero crossing detection+moc3021 to drive the triac), and I was wondering if I can use the same principle for the heating element.
I'd like also to ask of you think the BTA16 is an appropriate triac to drive the 2000w load)

Thanks a lot

my project with 2kW heater and Robotdyn Triac module. (contains a small library for Triac module.)

1 Like

For a heater you are better off using burst mode triggering of the triac, not the phase control used for lighting. This means you turn the triac on for some number of cycles then off for some. For example if you want 25% heating power you could have the triac on for 5 cycles then off for 15. This works with a heater because they respond slowly to the change of input so you don't notice it. With a light if you tried to do this it would flicker horribly.

1 Like

Thanks for that! For "cycle" you mean the time between two zero crossings, right?

Cycle means one positive and one negative part of the mains waveform in succession, so in terms of zero crossings look for a zero crossing then after 2 more you have a cycle.

The time between 2 adjacent zero crossings is a half cycle.

Ideally you should only switch cycles not half cycles because a half cycle represents DC, you need the equal opposite half cycle for true AC, although this is probably a pendant point and not really a problem for a heater.

1 Like

FWIW, phase-control cannot be done with a ZCD-type opto.

It may not have occurred to you to explain what your mains voltage is! :face_with_raised_eyebrow:

The BTA16 being a 16 A Triac, is clearly not rated for controlling 2 kW at 110 V. OK for 220 V.

A pendant point?

It mostly matters to the transformer, but the extra half cycles would generally not be missed amongst all the other loads on a common mains supply.

A MOC3021 isn't. :grin:

1 Like

Oh, you must mean PEDANTIC. :grin:

1 Like

Yes yes, 220v
I am so used to it I think the entire world has 220v :slight_smile:

The US uses 110 V.

And they think that they are the entire world. :earth_americas: :rofl:

1 Like

What would you use for 110v?
And what is the general physical equation that tells me the max driving power of the triac based on the voltage?

P = V * I

One more question Sir.
Shall I give a pulse (like 100microseconds) to the triac at every cycle or I can keep the triac on for the entire duration of the cycles I want to keep it on?
This means if I want to have full power, I need to have the triac gate always ON?

I tested bursts with this sketch:


const byte INTERRUPT_PIN = 2;
const byte TRIAC_PIN = 9;

volatile int onCount = 0;
volatile int offCount = 0;
volatile bool state = false;
volatile int counter = 0;

int nextOnCount = 0;
int nextOffCount = 0;

void zeroCrossing() {
  counter++;
  if (counter >= (state ? onCount : offCount)) {
    counter = 0;
    if (!state ? onCount : offCount) {
      state = !state;
    }
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(TRIAC_PIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), zeroCrossing, RISING);
}

void loop() {
  digitalWrite(TRIAC_PIN, state);

  if (Serial.available()) {
    nextOnCount = Serial.parseInt();
    nextOffCount = Serial.parseInt();
    Serial.find("\n");
    Serial.print(nextOnCount);
    Serial.print(':');
    Serial.println(nextOffCount);
    onCount = nextOnCount;
    offCount = nextOffCount;
    if (nextOnCount == 0) {
      onCount = 0;
      offCount = 0;
      state = false;
    }
  }
}
1 Like

You need a short pulse at the start of every half cycle that you want the triac on, so 2 pulses for a complete cycle. As far as I know you won't do any harm by driving the gate for the whole half cycle, other than wasting some power.

1 Like

A "standard" U.S power outlet is rated for 15A, so you can't normally get 2000W. :wink: (There is actually 220V "split phase" into the house and there are special 220V outlets for electric clothes dryers, electric, ranges, water heaters, etc. For these, 30A is not uncommon.)

And what is the general physical equation that tells me the max driving power of the triac based on the voltage?

The limiting factor is CURRENT. More precisely the POWER dissipated by the TRIAC which depends on the current and the on-voltage drop/loss across the TRIAC. The off-voltage isn't usually a problem. So it's actually "easier" with 220V since the current is half for the particular
wattage. In any case, you'll probably need a heat sink!

Shall I give a pulse (like 100microseconds) to the triac at every cycle or I can keep the triac on for the entire duration of the cycles I want to keep it on?
This means if I want to have full power, I need to have the triac gate always ON?

I's OK to hold a TRIAC on with DC. That's done "everyday" with AC solid state relays.

Note that almost all heating & cooling systems work by cycling on & off, especially if there is temperature feedback. Your home furnace & air conditioning work this way, your oven, your refrigerator, etc. When you turn-on a heater it normally turns-on at full power and then it shuts-off when it reaches the target temperature. (Usually, there is some slight hysteresis or "swing" so it goes slightly-above and slightly below the target and doesn't turn on & off several times per minute, etc.). If you try to continuously adjust the power to "exactly the right amount" you can easily get an unstable system that undershoots & overshoots the target even more!

And with a simpler on-off system and zero-crossing opto-isolator makes sure it only turns-on at zero crossing and the latching nature of a TRIAC means it only turns-off at a zero crossing and you don't need any phase detection.

2 Likes

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.