Building a temperature-controlled water bath

You can build this with a very simple op-amp comparator circuit:

schematic

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.


I just put together a sous-vide setup with a commercial PID. Originally I had planned on using a crockpot/slow-cooker, but was able to pick up an indoor turkey fryer via a post holiday sale.

My setup & costs:

  1. JLD612 PID temperature controller ($33.50)
  2. PT-100 0.1 degree Thermocouple ($19.00)
  3. 40A Solid State Relay ($16.50)
  4. Indoor turkey fryer ($25.00)

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.

FYI, Make Magazine just had a Sous Vide Immersion Cooker project using a similar PID controller.


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.