3D Printer Thermal Runaway Watchdog / Thermistor Tester

Introduction: 3D Printer Thermal Runaway Watchdog / Thermistor Tester

You should never leave your 3D printer unattended... but you do. This device will cut power to your printer when it senses thermal runaway.

Most 3D printer firmware includes some sort of thermal runaway protection, a feature that monitors the heaters and shuts the printer down if it notices something gone wrong. You should always enable the thermal runaway protection in the firmware.

However, most printers use MOSFETs to switch power to the heating element. Unfortunately, when MOSFETs fail, they usually fail closed (i.e. conducting). This means that, even if the firmware detects something has gone wrong, it won't be able to do anything about it. Solid State Relays (SSRs) can fail in the same way. This can be dangerous if you have a powerful high wattage (mains-powered) heated bed.

This device provides extra protection against such failure by monitoring the temperature independently and control the printer power with its own thermistor. It is primarily designed for monitoring the heated bed, especially those powered by mains voltage. It also can be used for monitoring other parts of the printer that heat is of concern, such as the hotend or the step motor drivers to prevent hardware damage or fire.

There are many sensors can be used for measuring the temperature. In the design, the same type of 100K 3950 NTC thermistor as that is commonly found on 3D printers is used. Therefore the device can be also used as a thermistor tester.

Step 1: Part List

Parts are relatively simple. Below is the list of main parts:

1 × Arduino UNO or Nano (I used a Nano with expansion board)

1 × Serial LCD 1602 16x2 Module With IIC/I2C Adapter

1 x KY040 Rotary Encoder module

1 x 5V 1 Channel Level Trigger Optocoupler Relay Module For Arduino

1 × 5V Active Buzzer

1 x NTC 3950 100K Thermistor

1 x 100K resistor

1 × 3 Pin ICE320 C14 Male Power Socket 15A 250V (optional)

1 x 3 Pin US Power Socket Plug Panel Mount 15A 125V (Or other types of power socket for the countries you are in, optional)

1 x 12V power supply (optional). I installed a small PSU salvaged from a power adapter of a wireless router inside the Watchdog box. Alternatively, you can use an external power brick for the Arduino board.

Dupont jumper wires or 16-18 AWG stranded wires, several.

Additionally, you'll need some wires and screws, as well as access to a 3D printer to print the case, and a soldering iron.

Step 2: Print the Thermal Watchdog Enclosure

I printed all the parts use PLA with 25% infill. The STL files are attached.

Step 3: Electronics and Wiring

Wiring the rest of the circuit according to the wiring schematic as well as the comments in the Arduino sketch. You can use either Dupont jumper wires or solder the wires directly to the pin headers. When hooking everything together be sure to use enough wire to allow the electronics to fit into the enclosure. Note the Vref is connected to 3.3V for better precision.

You can use the power socket and plug as shown in the picture. Alternatively, the 3D Printer Thermal Watchdog can be spliced into the 3D printer power wire. Use caution when working with mains voltage.

The design uses normally-open contacts of power relay for extra protection. The power will only be supplied when there is no thermal run-away detected, and the Watchdog is powered up. Once thermal runaway is detected, the power will not resume unless the Watchdog is manually reset, even after power loss.

Step 4: Step 5: Programming

1. Add the LiquidCrystal_I2C and EEPROM library to your Arduino IDE if you haven't done so.

2. Connect your Arduino to the computer and install the sketch.

Step 5: How to Use

  • Once powered up, the screen will display the current temperature and the maximum temperature that has been observed.
  • The screen also will display the current temperature target in the setting.
  • To clear the maximum temperature, press the knob on the rotary encoder.
  • Set the new target temperature by turning the knob on the rotary encoder, press the knob to save the setting.
  • If the thermal runaway is detected, the Watchdog will shut off the printer power and generate alarm sound for 1 minute. The power will remain off until the Watchdog is manually reset.
  • To reset the thermal runaway alarm and restore the printer power, press the knob on the rotary encoder.
  • All the information including maximum temperature, target setting, and alarm status is saved in EEPROM against power loss.

Step 6:

Microcontroller Contest

Participated in the
Microcontroller Contest

1 Person Made This Project!


  • Anything Goes Contest

    Anything Goes Contest



3 years ago

Has anyone gotten this to work?

I have successfully printed the case parts, and have bought and assembled all the components according to the diagrams. (There is no schematic though it's referenced in the text.)

The code has an error at the line that says:


The error says, 'no matching function for call to 'LiquidCrystal)I2C::begin()'

I HAVE included the libraries as instructed, but unless I comment out that line, it won't even compile, and therefore of course it won't load/run.

If I comment that line out, it does compile, and will load to the board, but then of course it doesn't run correctly.

I've wired it up 3 times, and checked all the component orientations, wiring, etc. It's definitely wired per the diagram. The photos of the case with parts installed doesn't show much detail, but what I can see is correct.

I wired it 2 times on the breadboard exactly as indicated, even used the same color wires. Then I wired it with jumpers into the case, and it doesn't work no matter what I try. I've checked the connections several times.

When I power everything up, the LED's all light up, the LCD backlight comes on, and there are a line of dark boxes on it, but nothing else. No text, just blank with a row of boxes.

The beeper sounds continuously, and the power relay energizes. Nothing changes when I push reset or the encoder knob.

I'd appreciate any help anyone might offer. I really wanted this to work so I can safely run my 3d printer unattended. Not to mention that I have about $50US invested at this point.

Screen Shot 2019-11-20 at 4.41.58 PM.png

Reply 3 years ago

According the the error log you sent me:
"Multiple libraries were found for "LiquidCrystal_I2C.h"
Used: /Users/Ron/Documents/Arduino/libraries/LiquidCrystal_I2C-1.1.2
exit status 1"

You used a wrong library LiquidCrystal_I2C-1.1.2, please delete this library and install the correct one.


Reply 3 years ago

This is problem of library you have currently in your arduino library folder. the "no matching call" error mostly arrive because the function you are trying to access is not defined in the library you have used.
Actually there are multiple libraries available with the same name as "LiquidCrystal_I2C.h" or sometime It is older version of library installed, so when people use wrong libraries they get these errors.
The simple solution for this problem is to install correct library and delete existing libraries for i2c 16x2 LCD. You can try this one https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library


Question 4 years ago on Step 2

Dear ArtSuzhou,

thank you for sharing this nice project.

I like to build your watchdog as part of my Hypercube Evolution.

For this, unfortunate, i have to do changes at the Enclosure (EU plug, emergency switch and extrusion mounts). Please wouldt you share the construction files of the enclosure for this? Making this changes on the finalized STL is not so easy.

Best Regards



Answer 4 years ago

Sorry the case was designed in 123D which is no longer available. It's fairly easy to modify the STL file to fit your needs.


Reply 4 years ago

Dear ArtSuzhou,

thank you for your kind answer.

I own a functionally version of 123D.

Most of my designs i make with Fusion 360 after AD stopped supporting 123D.

Fusion have some problems importing bigger STL files (problem to convert files with many polygons). While manually reducing the polygons Fusion destroy the design.