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!

<p>Hi, how do I change celcuis to fahenheit using the file downloaded for your link to GitHub?</p>
<p>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)?<br><br>Many thanks!<br><br></p>
Hi,<br><br>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!
<p>Sorry guys, some issues with azure. Link is up.</p><p>http://www.devacron.com/k-type-thermometer-lcd-arduino-nano/</p>
<p>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.</p>
<p>I'm having the same issue. Did you find a fix?</p>
<p>The code as found in Google cached page:</p><p>(http://webcache.googleusercontent.com/search?q=cache:qrqakUdqLtQJ:www.devacron.com/k-type-thermometer-lcd-arduino-nano/+&amp;cd=1&amp;hl=el&amp;ct=clnk&amp;gl=gr)</p><p>And the Arduino code which is making use of library <a href="https://github.com/adafruit/Adafruit-MAX31855-library" rel="nofollow">Adafruit-MAX31855-library</a></p><pre>#include &quot;Adafruit_MAX31855.h&quot; <br>#include &lt;LiquidCrystal.h&gt; <br> <br>int thermoCLK = 3; <br>int thermoCS = 4; <br>int thermoDO = 5; <br> <br>// Initialize the Thermocouple <br>Adafruit_MAX31855 thermocouple(thermoCLK, thermoCS, thermoDO); <br>// initialize the library with the numbers of the interface pins <br>LiquidCrystal lcd(7, 8, 9, 10, 11, 12); <br> <br>void setup() { <br> Serial.begin(9600); <br> lcd.begin(16, 2); <br> lcd.print(&quot;MAX31855 Init&quot;); <br> delay(500); <br>} <br> <br>void loop() { <br> // basic readout test, just print the current temp <br> lcd.setCursor(0, 0); <br> lcd.print(&quot;www.devacron.com&quot;); <br> lcd.print(&quot; &quot;); <br> <br> double c = thermocouple.readCelsius(); <br> lcd.setCursor(0, 1); <br> if (isnan(c)) <br> { <br> lcd.print(&quot;T/C Problem&quot;); <br> } <br> else <br> { <br> lcd.print(&quot;Temp = &quot;); <br> lcd.print(c); <br> lcd.print(&quot;c&quot;); <br> } <br> <br> delay(1000); <br>} <br></pre>
<p>Hi,<br>the link for the code is broken</p>
<p>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?</p><p>Cheers</p>

About This Instructable




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