Therm: a Tiny PID Controller

Therm PCB top

Therm is a very small PID controller with an OLED display, thermocouple interface, and USB port. It can switch an external solid-state relay for driving large loads, or a transistor for driving small loads. When attached to a computer, it enumerates as a USB serial port for easy control and logging of data. The design is based around a STM32F0 microcontroller and the MAX31855 thermocouple-to-digital IC (note: an RTD version of therm is in the works).

Therm PCB powered on

All PID parameters and settings are configurable from the on-screen menu. Therm also has a menu option to reboot to the DFU bootloader so the firmware can be updated without a hardware programming dongle. Currently, therm only supports a single setpoint, but we plan on implementing multiple setpoint support for reflow oven control and other applications in the near future.

Therm PCB bottom
Therm has screw terminals to connect power input (up to 12v), a solid-state relay, and a thermocouple. Pads on the bottom of the board expose the SWD interface for debugging and programming in a fixture or with a PogoProg adapter.

While all the core features of therm are complete, some have yet to be implemented (namely saving settings to non-volatile memory and setpoint control over USB). In the coming months we plan on cleaning up the firmware, finishing up the missing features, as well as performing some extensive testing on our latest hardware spin.

Ethan is a computer engineer and open source hardware/software developer from Michigan. He enjoys AVR and linux development, photography, mountain biking, and drinking significant amounts of home-roasted coffee. Find out more at

Tagged with: , , , ,
Posted in Projects, therm
13 comments on “Therm: a Tiny PID Controller
  1. Ruslan says:

    Hi, how do you sold OLED on a PCB? Looks very nice.

    • The OLED has a flex connector that’s wrapped around to the back of the board and surface-mount soldered. Drag soldering works pretty well for this too.

  2. James says:

    This looks fantastic, any idea when it’s going to be available to purchase? 🙂

  3. Tim hawkins says:

    Is there anywhere you can buy this device?, its perfect for a 3d printer heatbed.

  4. Ken says:

    When you have some for sale, I’d like to buy one (for a popcorn popper coffee roaster).

  5. Mitchell Voyantzis says:

    Is this available for sale now?

    • Bryan Smith says:

      For sale or open source? Prepopluated PCBS? VERY VERY interested in your project

      Single set point is great for my desired purpose as long as its user editable whilst using the PID (I would expect so)


  6. Zai says:

    Hi Ethan, is there any chance you or Matthew would sell me one of the controllers? I tried emailing about a month ago but I’ll try again now. I’ve seen many diy-PID solutions but none so elegant as yours, and with a couple of Classics kicking around for the long term I’d love to fit one – especially as I already have the other ingredients.

  7. Kevin Martini says:

    Was this ever made for sale?


    do the unit have an input for setpoint and analogue process variable and an analogue input

2 Pings/Trackbacks for "Therm: a Tiny PID Controller"
  1. […] Therm: a Tiny PID Controller – [Link] […]

  2. […] RTD is an addition to the Therm PID Controller family, with support for RTD temperature sensors. RTDs (or Resistance Temperature Detectors) use a […]

Leave a Reply

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