I want to build an accurate (±2 °C) water heater (sous vide) that heats water somewhere between 30-100 °C according to user input.

Although I have an engineering background I have no experience whatsover with building controllers and have no clue on how to start. I don't want to spend to much money on the project (< 100 €) thus money is an issue. The good thing is that I already have a power thyristor.

What I (probably) need:

Temperature sensor PT100

Input device to define water temperature (digital?)

Controller (PID?)

Resistor to heat the water (can be taken from old water cooker I assume)

My question is how I can best make the link between the sensor and the heating element. I of course need to build/program a circuit that does this but do I make an analog or digital circuit?

I have a thyristor but is this really necessary or should an on/off regulation also work? Don't forget that I also should be able to define the water temperature.

The JLD612 is pretty much self-contained, and has displays for current & target temperatures. It also has an auto-tune feature that configures the PID parameters for your particular setup. A downside is it's workings are a bit of a black box -- you don't really know what's going on inside. On my To-Do list is to build a combination PID/data-logger on the Arduino platform.

This uses a thermistor as the temperature sensor, and a potentiometer as the thermostat setting. You then just need to hook up your heater to the relay's switch contacts.

You'll just need to calibrate your pot by testing the water temp with a thermometer in different positions of the pot.

The parts should cost no more than around €11/£10/$18. You can power it with an AC adaptor (might be a good idea to add a 470uF capacitor across the supply as well. You can then use the rest of your budget for the heater.

You'll want some hysteresis on that comparator or your relay will chatter at the setpoint. This is an excellent solution though. It's cheap, it's effective and it works.
–
akohlsmithFeb 1 '11 at 14:39

1

thanks for the answer. How would I design that hysteresis (it should be more than 2 C)?
–
TarscherFeb 1 '11 at 16:10

I think you'll need to add a schmitt trigger to it, which will basically set the 'on' threshold lower than the 'off' threshold.
–
BG100Feb 1 '11 at 16:18

I'm pretty sure the way to do that is to add a resistor between the output of the op amp and the non-inverting input. I'm not sure of the value of the resistor though, it might be a good idea to use a variable resistor here so you can adjust the difference between the on and off thresholds.
–
BG100Feb 1 '11 at 16:49

BG100's solution will work as a temperature controller, but I don't think it will hold temp within ±2 C unless the volume of water you're heating is fairly small. Water has a lot of thermal capacity and heats up and cools off slowly so it will probably overshoot the set temperature.

Are you building a sous vide cooker? If so, an easier way to do this, especially with that budget, is to look for a PID temperature controller on one of the surplus sites like All Electronics, surplusdirect, etc.

If you want to build it yourself, you can do it much cheaper though.

Where to start? Well first do a little research on Proportional control loops. It's simple: basically read the current temperature, subtract your setpoint temperature and use the difference to control the output. In this case the output control can be how long you turn on your thyristor for (duty cycle).

This can be accomplished with an Arduino or a Teensy (I prefer to just wire up raw AVRs since it's easy and they're much cheaper) and an analog sensor like the easy to use LM35 mentioned earlier, or a digital sensor like a MAX6675. You can set the desired temperature with a rotary encoder and use an LCD display for feedback. Even easier is to use an analog input to read a potentiometer that has a dial behind it.

Proportional control will result in an offset from the setpoint. If it's small enough you can ignore it, or if it's constant, then you can calibrate the setpoint "dial" to allow for offset. Otherwise, you can add an Integral term to your controller. I'm going to stop here because there are many references online that can explain basic control theory better than I probably can. But I hope you get the gist of it.

What you're trying to do isn't too difficult and makes for a fun little project and a great learning experience.

I would use an arduino as a controller, it is probabably the easiest for a beginner. A LM35 may be ok in a wet enviroment up to 100 C but you might also consider a temperature dependent resistor or thermistor. To control the power a relay might be a good choice ( old microwave ovens can give you these and parts for a power supply ) Coffee cup heaters are a pretty good source of heaters that are well sealed against water or if you can use the whole device an electric kettle, croock pot or similar may serve. You want to keep the high voltage away from the low voltage, in part for your own safety. If you use semiconductors consider an optical isolator for this purpose.

agreed on arduino and lm35, was just typing basically the same answer. ,
–
posipietFeb 1 '11 at 13:38

An advantage of this route is that you can set it up to output the temperature over a serial port and during development connect a PC to take data which you can plot to evaluate its performance.
–
Chris StrattonFeb 7 '11 at 15:10

I've done this from the ground up for a water heating system for my dog kennel. I liberated a 2,4KW kettle heater element and built a brass boiler around it. I have a K type thermocouple for measuring the temperature of the water and a pump which circulates it to the heating tubes under the floor.

The setup is pretty straight forward. The PID controller has a 4-20mA linear output which I use to control a Vactrol (LDR driven through an LED) which in turn is used to regulate the firing angle of a Triac circuit, which finally drives the heating element. The firing range it gives me may be set anywhere from 36VAC to full 230VAC depending on the Process/set point error. Alternatively you could drive the heater element with the full 2,4KW capacity but through an SSR controlled by the PID. This way you could eliminate the linear control aspects but still maintain reasonable regulation.

The most expensive parts in this exercise were the 1,6mm brass sheets which were 15cm x 15cm. Iused 4 of them to construct the boiler. The 4 sheets cost me AUD$44 and the controller was USD$36 from Ebay. The remaining miscelanous parts came from Jaycar and plumbing stores. The pump was USD$12 from Ebay. Apart from a little carpentry, soldering and brazing, the whole setup cost about AUD$100 to build.