DIY Thermal Differential Controller – Part 4: Building Your Own

Post image for DIY Thermal Differential Controller – Part 4: Building Your Own

by Tim Fulton on June 20, 2011

In our last episode, I explained how I redesigned the controller from what I first thought I was going to do. Now, I am going to explain how to make your own thermal differential controller based on mine. As it is, this setup will only control an AC load, but it would be fairly simple to convert it to run a DC load.

Here is the list of parts you’ll need. I’ve added links to where I like to get parts from.

  • Arduino – There are many forms of Arduinos out there. I like the kits from since you save some money not having things assembled for you.
  • 5V power supply – If you have a spare cell phone charger or wall wart laying around it’ll probably work fine, just make sure its 5 to 12V.
  • AC solid state relay – This will keep wiring a bit simpler. You can use a mechanical relay, but you would need to add a diode to protect the Arduino and you might need to add a transistor to help power it.
  • LM35 temperature sensors – You’ll need two of these.
  • 10uf capacitor – You can probably go with a bit larger or smaller capacitor here. I recommend finding one of similar capacity in some broken electronics component laying around the house if possible. That is what I did. If you have a long wire run to each temperature sensor, you may need a capacitor on both lines.
  • Telephone wire (4 conductor) – This will be used for wiring the temperature sensors.


Now that we have all the components, the circuit diagram is quite simple. Since it is so simple, to wire things up, I simply used some connectors on the arduino and ran wires to each component. That way there is no need for a bread board or shield.

Lastly, we need the code for the Arduino. If you haven’t yet, go to the Arduino website and download the Arduino development software. This is required to upload the program to the Arduino. Now, go ahead and download the code for the thermal differential controller.

Using the code should be pretty straight forward. I commented pretty throughly. To change the temperature differential to turn the load on, simply plug in a new number into the “int OnDiff =” line. By default its set to 3 degrees Celsius. The differential to control when to turn the load off is controlled likewise by “OffDiff”. There is an LED pin programmed to verify the load on/off status if you want to use it. There is also serial output for the two sensors if you want to uncomment it and datalog the temperatures.

So, that about does it. There is a bit more info on the controller in my forum thread. If you have any questions, feel free to ask. I am by no means an electronics wizard, but I’ll do what I can to help answer your questions.


1 Tiggy November 1, 2012 at 3:32 pm

Hi can you suggest a relay for those of us using 240v mains power? Would a change of relay be all that is required to duplicate your project?

2 Tim Fulton November 1, 2012 at 8:01 pm

Any solid state relay rated for a 240V load and a 5V DC input will work. There are tons out there. It really depends on how many amps your load is going to draw. Here is one example:

3 Noctura November 17, 2012 at 3:27 pm

Hi Tim, could you please tell me what the capacitor between pins A0 and A1 in your schematic does? I would also like to know what is it rated at?

Many thanks

4 Tim Fulton November 17, 2012 at 4:30 pm

Its a poorly designed filter to reduce interference. The rating I used was 10uF because that is what I had handy and it worked for me. Depending on the length of your wire runs you might not even need either of them.

5 Doug January 8, 2015 at 5:23 pm

Hi. Will the Arduino Uno work in this application? Thanks

6 Tim Fulton February 23, 2015 at 12:15 pm

Yes, an Arduino Uno will work.

7 Ovidiu May 25, 2015 at 11:47 pm

We can add a LCD to display the 2 temperatures?

8 Tim Fulton June 5, 2015 at 8:58 am

You absolutely can add an LCD to display the temps.

9 Ovidiu June 6, 2015 at 12:04 am

Ok, but please help me with schematics and code!

Comments on this entry are closed.