K-type Arduino Thermometer





Introduction: K-type Arduino Thermometer

About: Converting caffeine to code :)

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!



    • Oil Contest

      Oil Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Water Contest

      Water Contest

    10 Discussions

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

    1 reply

    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!

    1 reply


    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!

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


    2 replies

    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.

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

    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 = ");


    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?