Programmable Temperature Controller + Hot Plate Using Arduino

Programmable Temperature Controller + Hot Plate (2)

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.

Programmable Temperature Controller + Hot Plate (2)

Step 1: Things you need

Programmable temperature controller:


  • Solid state relays (5V control voltage, 16 A load current)
  • LCD (e.g. on
  • SD card board
  • MAX 6675 controller board (e.g. on
  • Atmega 328 chip & socket
  • 5 x 10 kΩ Resistors
  • 4 x 1 kΩ Resistors
  • 4 x 560 Ω Resistors
  • 1 µF Capacitor
  • 100 pF Capacitor
  • 2 x 22pF Capacitor
  • 16 MHz quartz oscillator
  • LM7805 5V linear voltage regulator
  • Rotary encoder
  • Mechanical 110 V switches
  • 10 A fuse and fuse holder

For the casing:

  • 4 mm ply wood
  • Wood glue
  • Laser cutter
  • Primer
  • Paint

Hot plate:

  • Metal case as support (e.g. an old computer power supply)
  • Small plastic case
  • Aluminum plate 20x20x1 cm
  • 2 Cartridge Heaters (1/4’’ or 6 mm) (e.g. on or from China on
  • Type K thermocouple (1/4’’ or 6 mm)
  • Steel thread rod (¼ ‘’ or 3/8’’) and nuts
  • Locking screws
  • Lead
  • Copper paste


  • Long (ca. 30 cm) drill for the heating cartridge and thermocouple
  • Tap & die for Locking screw and steel thread rod
  • Drill press

Programmable Temperature Controller + Hot Plate schematic (2)

Step 2: Building the case part 1

You can of course use any casing you want, but I decided to laser cut a custom one. I uploaded the files to this step (the three different file types all include the same design. I just wanted to offer you options depending on which file type works best for you). You can see in the first image where every piece goes. Start by glueing the LCD distance holder to the back of the front-top panel. While the wood glue sets, attach the side panels to the back and the top panel. A corner clamp is certainly helpful to do so. Than add the front-bottom and front-top piece.

In case you are wondering whether wood is a good material choice for the casing, let me reduce your fears. Its autoignition temperature is about 572°F [1]. Since I have added a thermal switch to the hot plate that shuts it off at 338°F, you can be very sure that it is safe. Even after more than a thousand days at a constant temperature of 300°F, studies showed that wood would not self ignite [2]. Furthermore air is know to be an extremely good thermal insulator. If you are planning on running the temperature controller with a apparatus that heats up the surrounding air to more than 500°F: DON’T! Even if you are building a kiln the outside shouldn’t be getting that hot.

Read more: Programmable Temperature Controller + Hot Plate

Leave a Comment

Your email address will not be published. Required fields are marked *