Electronic – arduino – How to get proportional 240V AC output from an Arduino-based PID controller to “dim” a rice cooker for a Sous-Vide project

arduinopid controllersolid-state-relaytriac

I'm making a PID controller for Sous-Vide, using an Arduino.

I'm trying to decide how to control the output. Using an SSR as an on-off switch on 240V AC will probably give me the result I'm looking for. However, I'd rather have a more continuous proportional output, so the rice cooker can be effectively "dimmed" rather than switched on and off.

What do I need to do this? Is a TRIAC essential? Will certain SSRs do this? Will all SSRs be capable of this? Do I need to build a 240V circuit from components myself, or are such devices available at similar costs to an SSR?


I may have mislead with the word "proportional". I am building a PID with an Arduino. I will use it to drive a dumb rice cooker, and I'll have a temperature probe to detect temperature. This is the background to the question I'm asking.

I think it will be fairly easy to use a relay or SSR to turn the heater on or off every few seconds to control the heat appropriately. However, what I want is to be able to control the heating element so it runs at a fraction of full power, rather than turning on and off all the time. I would prefer this as it gives better temperature control, and I just prefer the idea of a constant electrical load as against switching 2000W or so every few seconds.

So I have a 5V digital output that I can control with a microcontroller (I believe I can control it far faster than 50Hz). I want to use this output to control the heat output of a heating element. I think the right device to use is a 240V SSR. My problem is deciding what sort of SSR I need, and then how to use it. I'd prefer a complete device with power plugs (like a powerswitch tail – http://www.powerswitchtail.com/ – but for 240V, and with the ability to dim rather than just switch on and off).

Best Answer

No need to use a PID. You can have a much simpler hysteresis control.

Thermal capacity of water is around $$4184 J/(kg·K)$$ In my case, the heater´s power was actually $$2kW = 2kJ/s$$ This means, it heats 1kg of water for about 0.5 K per second. In my case, 2kg water usually.

The bigger problem is precise measurement of the water temperature because of thermal convection. You want a circulator in there to keep thermal differences minimal.

Once you have established good measurement, you can do a simple hysteresis control, in my case I switched the heater on with a mechanical relays for 1s to have a 0.25 K rise.

Temp reading error is going to be around 0.5 K anyways, so don't bother with too much of a regulation.

For a purely resistive load, you will be fine with a simple relays, which also does the electrical isolation for you.

If you want to go for electronic switches, an optotriac will be just fine.