Introduction: 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

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

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: