Picture of Make your own programmable thermostat for $66 with Arduino

This project will show you how you can create your own programmable thermostat with temperature probe, an LED readout and ability to remote control outlets.

The core of this project is actually a driver for a 4 digit seven segment display.

There are lots uses for such a device. You can purchase something called a PID controller for about $120. The parts for this cost me about $66. If you can scrounge some of the parts you can do even better.
I use mine to control hot water baths for cooking meet. See my instructable on cooking perfect steak for why you might want this.

There are probably a dozen ways to do this. This was my way.

This project requires soldering small surface mount components (well one easy one IMHO). There are a lot of wires and it can be hard to debug certian problems. This is probably not a great project for a novice or the easily frustrated.

At this time the instructable isn't as detailed and foolproof as possible. My prototype works and this is my attempt to document the process. However, until I build my sweet new steampunk themed version, the instructable is going to be a little bit raw. You should be confident about these sorts of projects enough to do some minor debugging of the hardware and connections before you dive in. Just in case I got something wrong, you know. The software is solid at least. :)

Recomended Instructables:
Replace the $20 arduino in this project with $8 worth of electronics.
Generic Micro Controller switch outlets. I embedded this idea into this project. You can just build this stand alone version on hook it up to this project.

UPDATE: 2011-July-28 LM335A sensor version, cheaper, no surface mount soldering.

I am experimenting with replacing the thermocouple and booster with an LM335A sensor. It's not as accurate, and it won't go above 100 degrees C. However it's $1.50 compared to $28 for the thermocouple and booster. For souse-vide cooking it should work fine. There is a PCB123 diagram file in the diagram step if you want to see how to hook one up.
I have also gone to using the Atmega168 chip directly with the minimum hardware needed to support and program it. That's also in the PCB123 file along with a circuit board.
I plan to have circuit boards and solder your own kits available on Kickstarter soon. I am planning a run of 500. The kits will be ~$40 shipped. Let me know if you are interested. The Kickstarter never happened. I did another couple Arduino based Kickstarters and documented the projects on Instructables. Stay tuned, more to come I am sure.

msaari14 years ago
Could this code and equipment be adjusted to 100-1000 deg C range?
dustinandrews (author)  msaari14 years ago
You can use whatever range your thermocouple is rated for, no problem.
As long as the electronics themselves aren't being exposed to those temperatures...
ethanzonca4 years ago
Nice project! I'm working on something similar, but using PID and a solid-state relay. Tuning is a bit annoying, but the end result is pretty nice.

I'm also using the MAX6675, have you had any issues with it? I'm getting some temperature fluctuations in the output; I'm thinking it's because my current setup doesn't have a decoupling capacitor for the chip.


dustinandrews (author)  ethanzonca4 years ago
I am using the decoupling cap. It's cheap and easier to install that the 6675 itself. If I take readings in isolation, I see a lot of fluctuations. However if I sample about 10 times a second and average I get really solid, accurate readings.
atmorris4 years ago

Ok I'm starting to get a grasp on it now. The relay=voltage controlled switch. So the pot isn't in the wiring scheme  above right? But it would just be wired to the Vs, ground, and analog pin on the arduino. But does it matter which one, does it change the code?

I'm a bit confused on this part (image below) underneath the thermocouple amplifier. From the Vcc connection from the MAX6675 you have a wire running off into a 'little hole' on its way to the arduino. What is this? is this the Vsupply?

Now looking at the leftside of the arduino you have two offset connections. One these ports has a wire runt to another hole just to the right of the one I just asked about. What is this?
And just to the right of the one I asked about prior there's a liittle square port that runs a wire seemingly over the MAX6675. I'm confused about what this is too.

Last question. How would this thing do using a 9v battery? Would it still work fine, and have a decent 'lifetime.'

Sorry if I'm asking dumb questions. I'm ordering the parts this week so I can assemble it next week. I hope I get it working! Thx
dustinandrews (author)  atmorris4 years ago
1. Correct, the control pot is not on pictures. They are out of date. I will try to post updated ones soon. Check the uploaded eagle files. I think they have it.

2. MAX6675 the little holes next to the chip on Vcc and Gnd are to place a capacitor across. It evens out the voltage to the chip. The arduino has one built in.

3. The two offset connections are A4 and A5 on a pro mini. That diagram is a copy of the layout of the pro mini that I used for my project.

4. Should run fine off +5v to +12v. However, since you are controlling an outlet, it's pretty easy to just put a "wall wart" on the power for the outlet and scavenge your 5v there. Why would you want a battery? a $5 wall wart will keep this thing running forever.