Introduction: K-type Arduino Thermometer

Picture of K-type Arduino Thermometer

Hi all,
Recently I had to measure the temperature in a place where ordinary temp sensors like LM35 or TMP36 wouldn't fit. And not only this but the temperature was many degrees below zero. To be precise -70c to -80c. Traditional sensors are not working below -50c so the solution I came up was to use a k-type thermocouple. In order to make arduino read the k-type thermocouple values I had to use a Thermocouple-to-Digital Converter. Thankfully Adafruit is selling MAX31855 in good price and also you can download an Arduino library from them. What more can you ask?

Step 1: Schematic

Picture of Schematic

The schematic of the circuit is very simple. As you can see the Max31855 except the volt and ground has three more pins. The DO, the CS and CLK. I connected those to Arduino D5,D4 and D3 respectively. Then the only thing that was left was to connect the LCD. As you can see in the schematic LCD uses 6 pins from Arduino. For the lcd i used the LiquidCrystal library which comes with the Arduino IDE, so no need to download.

Step 2: Arduino Code

Picture of Arduino Code

Last step was to upload the code to Arduino. Code is available here. All went smooth and temperature showed up to the lcd.
Here is a small video:
Thanks for reading and good luck!


MichaelM50 (author)2016-12-14

Hi, how do I change celcuis to fahenheit using the file downloaded for your link to GitHub?

eroche100 (author)2016-07-07

Thanks for sharing. You stated that you had success reading down to -80 deg C... Do you know if the Arduino is able to support the full range of the type K thermocouple (which I believe goes up to from -200 deg C to 1260 deg C)?

Many thanks!

unseen1980 (author)eroche1002016-07-08


I don't see why it can't read down to -196. Arduino acts like the middle man between the Max31855 and the display. Good luck!

unseen1980 (author)2015-10-05

Sorry guys, some issues with azure. Link is up.

jfm8561 (author)unseen19802016-01-09

Thanks you for sharing your project! I am having an accuracy issues, in a 70 degree F room the thermocouple is reading around 107 degrees, and I did change read celsuis to read farenheight. Thanks in advance.

Woodfield1 (author)jfm85612016-02-16

I'm having the same issue. Did you find a fix?

f-bone (author)2015-09-30

The code as found in Google cached page:


And the Arduino code which is making use of library Adafruit-MAX31855-library

#include "Adafruit_MAX31855.h" 
#include <LiquidCrystal.h>

int thermoCLK = 3;
int thermoCS = 4;
int thermoDO = 5;

// Initialize the Thermocouple
Adafruit_MAX31855 thermocouple(thermoCLK, thermoCS, thermoDO);
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
lcd.begin(16, 2);
lcd.print("MAX31855 Init");

void loop() {
// basic readout test, just print the current temp
lcd.setCursor(0, 0);
lcd.print(" ");

double c = thermocouple.readCelsius();
lcd.setCursor(0, 1);
if (isnan(c))
lcd.print("T/C Problem");
lcd.print("Temp = ");

pintail120 (author)2015-09-02

the link for the code is broken

will_raymo2000 (author)2015-05-27

Would it be possible to increase the number of inputs to 4 on this project? I understand I'd need separate ADC for each thermocouple but how would I then interface these with the Arduino so the display shows T1: T2: etc etc?


About This Instructable




Bio: Converting caffeine to code :)
More by unseen1980:K-type Arduino thermometer
Add instructable to: