Programmable Temperature Controller + Hot Plate

FeaturedContest WinnerContest Winner
Heating things up is one of the most performed tasks in a lab. Quite a lot of times it is not enough to simply hold something at a certain temperature, but the rate at which something is heated and for how long is just as important. Especially when you try to develop catalysts for chemical processes, the temperature program and exact temperature control is crucial and you probably do not want to stay in the lab for 16 hours to manually adapt your temperature program. Unfortunately, programmable temperature controllers that can automate processes are really expensive. So I decided to build a highly customizable controller that is able to run temperature ramps and read multiple different temperature programs from a SD card. It also provides a logging function on the SD card that allows you to evaluate the resulting temperature profile after running a program.

It is a great hack for your heating devices, since it can be easily connected to almost any heating apparatus you can think of, as long as it allows you to also connect a thermocouple. So If you have ever thought about building the perfect electric kiln (there are multiple really good explanations online) or hot plate (take a look at the steps 6 and 7), now is your time.

Overall the controller should cost you about $45 and the hot plate about $55. You should easily be able to build this as a weekend project.
Remove these adsRemove these ads by Signing Up
1-40 of 47Next »
andrea biffi7 months ago

Wow, your projects are so well built... I love all of them.

For this one you could also use a commercial PID controller (digital temperature controllers on eBay), btw your design is much more unique!

BrittLiv (author)  andrea biffi7 months ago

Hi, yes you can, but they are not programmable and therefore pretty useless in chemical engineering.

ynze7 months ago

YOU WON A MILL!! Congrats! Again :-)


BrittLiv (author)  ynze7 months ago

Thank you! *happy dance*. Greetings from Matthias (I still couldn't convince him to write his first instructable...)

bajablue7 months ago

High five, BrittLiv!!!

BrittLiv (author)  bajablue7 months ago

Thank you! Any plans for your hundred instructable yet?

bajablue BrittLiv7 months ago
Hey Britt!

Lot's of plans, but they have to wait. I cannot find the battery charger for my camera!

No mail service here in the Baja boondocks, so I'll need to buy another one when I visit the States again. I'm just in no hurry to leave this warm and sunny paradise. :-D

Thanks for asking! Congrats again!!!!
blakhachib7 months ago


BrittLiv (author)  blakhachib7 months ago

Thank you!

Congratulations,being a girl,you are more awesome than we boys :)
BrittLiv (author)  abhishek7xavier7 months ago

Haha, thanks! Good luck in the hardware hacking contest.

Britt,i have sent u a friend request on facebook,accept if u don't mind or just ignore it!!
A big fan of yours!!

BrittLiv (author)  abhishek7xavier7 months ago

Hi, I just did. My facebook account is quite boring, though since I don't post much stuff.

Oh,but atleast i will be connected!!

kymyst7 months ago

Congratulations on winning the Grand Prize Britt. Your temperature profile controller would be an excellent addition to my "Melt-o-matic" digital melting point apparatus, allowing automated melting point determinations. I wish I knew how to write program code like yours, but I'm just an old chemist from the pre-computer dark ages.

BrittLiv (author)  kymyst7 months ago

Thank you! Congrats on your win, too. I am impressed how you use mainly cheap or recycled materials.

Good job congrats on the win :)

BrittLiv (author)  ElectricBlue1237 months ago

Thank you *happy dance*

antoniraj7 months ago
hi, congratulations on winning the Grand Prize in Build My Lab Contest... mine got the Judges' Prize: Build Their Lab
BrittLiv (author)  antoniraj7 months ago
Congratulations to you, too! I am sure you will put the 3D printer to a good use.
Ian017 months ago
I have a programmable hotplate that I need to refurbish at some point. If I can't get its existing controller to work well, I'll probably use yours. (I got it out of the electronics recycling; I don't know if it works at all!)
hmascarenhas8 months ago
Man i dont have time/patience/knoledge to do this project but i need this tool so my question is,could you make it for me and send to TN?
Please let me know. or whatsapp +59160780320
BrittLiv (author)  hmascarenhas8 months ago
Hi, I am glad that it is helpful. Sadly I don't have the time to build an other one. I hope you can find somebody else.
danm_daniel8 months ago
Inspiring, legit !!
clazman9 months ago
At the start of the read I wanted to say PID control, then utilize auto learning , You are using PID and are considering the latter. Kudos to you.

PID is required and auto learning is great. But both features are dependent on the heat load. So several heating profiles will be required.

On the other hand, I am not very happy with the plates temperature profile. More cartridges are needed. I don't know if there are variable wattage cartridge heaters in th\is size range. I've used that feature in say 5/8" X 24" heaters to help create a more uniform temp. profile in rubber molding platens. Have you considered heat mats? They could help in heat distribution.

Again, I am still impressed with your prototype design.
BrittLiv (author)  clazman8 months ago
Thank you! 4 cartridge heaters are not going to change as much as you might hope. I have uploaded another simulation and since you could be interested one after applying insulation.
In my case two are really enough, since I doubt, that I will ever heat something of exactly the same size as the the plate.
I didn't know that heat mats can provide such high temperatures, I will definitely have a look into that.
hbouwens9 months ago
there is another way to save the program steps. I use one line of text as in :

With no maximum to the number of steps

The first number is the number of steps, the rest is in blocks of 3, the rate, Temperature and rest-time. With a function I read these values int an array.

I could upload the code and a picture , but apparently I don't know how to :(

BrittLiv (author)  hbouwens9 months ago
Thanks, but the step limit is actually given by the array-space I allocate in the Atmega. When running a program I want to load the whole program into the RAM so you can remove the SD card without canceling your run
hbouwens BrittLiv9 months ago
Dear BrittLiv, how can I upload a pdf and ino file as comment? I'm new to Instructables, and don't know how to
Pushing the button add Images and select files seems not to be enough :(
BrittLiv (author)  hbouwens9 months ago
Hi, thanks a lot for your effort! As far as I know you can't add ino files to instructables.
That's why I used a text box. Since you are a pro member, just click on "Rich Editor" then "Source" and add one like this:
<pre><textarea cols="75" name="code" readonly="" rows="20" style="width: 600.0px;height: 294.0px;">your code </textarea></pre>

About the pdf I am not sure whether you can add it to comments. Can you maybe upload it somewhere else (e.g. dropbox) and share a link?

The simplest solution to the space problem is probably to get a second Atmega connect it with the IC2 interface and to split all the tasks. Especially since the SC-Card library literally eats up your space (~16 kByte) and the spare amount of free SRAM (apparently only a few bytes are left, as initializing new variables kills the program) might interfere with most of the more sophisticated approaches.
hbouwens BrittLiv9 months ago
I don't know why but now the selecting of files worked

You will find my .ino file, a pdf with the result ( in Dutch but the graph is International :)), a photo of the oven and control and last but not least a curve file.

By the way it is a setup to heat glass , to shape and fuse

regards, Harrie
BrittLiv (author)  hbouwens9 months ago
Wow, great job! Thanks for sharing your code! I will definitely take a look at it.
I haven't checked your code (sorry) but have you thought about quantizing your temperature so it is only specified in steps of 5 for example. This way you can use a uint8_t (i.e. unsigned char). Doing this with all the data you might want to use a C bit-field (

You may also could reduce the memory usage further with a basic zip/delta compression. A simple approach you store the delta/change (+-128) between steps so that each value can be stored as a int8_t (i.e. signed char) . This incurs a slight increase in complexity and requires extra steps for large step changes. There are many ways you could take this further including RLE encoding and a 3bits step header which determines what has changed between steps. Complexity of the code goes up a significantly there though so would probably never be worth the effort!
You couldn't check as I didn't upload it so far. If you could tell me how to upload files, You could see what the code is doing, "good" the wanted curve is followed :)
dvdwlmn9 months ago
Wow - very impressed with the 328 coding in this project! i will have to read through it carefully again to really lean the most from this one!!
mbaker7509 months ago
Awesome writeup!

The autotunig library you mentioned would be to fine tune the PID parameters and help prevent the slight overshoot of the initial temperature ramp?

What software did you use for the temperature simulations?
BrittLiv (author)  mbaker7509 months ago
Hi, thank you!  The autotuning library automatically determines tuning constants. You can find out more about it here.
I used COMSOL Multiphysics.
Great! Thanks for the reply (and link)!
bwheat9 months ago
Your instructables are always amazing and professional!!! Fantastic Work!!!

PS... Voted :)
BrittLiv (author)  bwheat9 months ago
Thank you! Getting feedback like yours motivates me a lot!
1-40 of 47Next »