Hobbybotics MAX6675 Thermocouple Breakout V1.0

Introduction

Documentation

Build It

Use It

Related Links

Disclaimer

Introduction

I designed a breakout board for the MAX6675 Cold-Junction Compensated Type-K Thermocouple interface.  My plans are to use the design for various heating control projects such as a Sous-vide cooker, wireless thermostat, smoker controller, reflow oven and some environmental projects.

The specifications for the MAX6675 are:

  • Works with any Type-K Thermocouple
  • Has a range of 0 to 1024 degrees Celsius in 0.25 degree increments
  • Operating voltage: 3.3 to 5V
  • SPI interface

A thermocouple is a device consisting of two different metal alloy conductors that produce a voltage that is proportional to a temperature difference between the joined end of the two conductors.  Dissimilar metals are chosen to maintain a predictable and repeatable temperature range profile.

Basically, two different metals are chosen in order to be able to measure a certain temperature range with an emphasis on stability.  These two metals are joined together at one end and when the junction is heated or cooled a small voltage is produced that can be correlated back to a temperature value.

Thermocouples are available in many different types of metals and/or calibrations with the most common being of type J, K, T and E.  Each calibration has a different temperature range but, the maximum range varies with the diameter of the wire used to create the thermocouple.  Refer to the following document for temperature limits based on wire size (Thermocouple Reference Guide).

Below is a picture of a Type-K Thermocouple:

Here are some pictures of the completed breakout board:

The MAX6675 is designed to work with a Type-K Thermocouple which is made up of chromel (90% nickel and 10% chromium) and alumel (95% nickel, 2% manganese, 2% aluminum and 1% silicon).

Common uses are in HVAC systems, kilns and heating controllers.

Documentation

  • Schematic – PDF
  • PCB – PDF
  • Board Files – PRJ
  • Manufacturing Files – GBR
  • Bill of Materials (With Data Sheets) – ZIP
  • Bill of Materials – PDF
  • MAX6675 Datasheet – PDF

The board files was developed with the freely available DesignSpark PCB.

Files and updates are available on the associated github page.

Build It

Reference the B.O.M above for a list of the parts necessary to complete the Hobbybotics MAX6675 Breakout.

Reference the below schematic and layout file for component locations.

Use It

I developed (modified) a couple of Arduino libraries to support the MAX6675 breakout board.  The files are available below:

  • MAX6675 Libary – ZIP
  • I2C LCD Library – ZIP
Files and updates are available on the associated github page.
The MAX6675 library provides Celsius and Fahrenheit temperature functions.  The LCD I2C library provides an interface to an HD44780 parallel LCD using an MCP23008 I2C I/O Expander.  The LCD library is not needed if you intend to only use the serial monitor for output.  The MCP23008_SDA and MCP23008_SCL pins of the I/O Expander are connected to the SDA (Analog 4, pin 27) and SCL (Analog 5, pin 28) on the Arduino.   The BKLT pin is connected to one of the I/O pins on the MCP23008 but, it can be connected to one of the PWM pins on the Arduino if you want to vary the LCD brightness with PWM.
The first example sketch prints temperature in Celsius and Fahrenheit to the Serial Monitor:

/*
Demonstration sketch for Hobbybotics MAX6675 Thermocouple breakout board.
Reads temperature from MAX6675 in celsius and fahrenheit. Prints results to serial monitor.
*/
#include <MAX6675.h>
MAX6675 thermocouple;
void setup() {
Serial.begin(9600);
thermocouple.init(4, 5, 6);
Serial.println("MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
Serial.print("C = ");
Serial.println(float(thermocouple.measure(TEMPC)));
Serial.print("F = ");
Serial.println(float(thermocouple.measure(TEMPF)));
delay(1000);
}

The second sketch prints temperature in Celsius and Fahrenheit to an I2C connected LCD:
/*
Demonstration sketch for Hobbybotics MAX6675 Thermocouple breakout board.
Reads temperature from MAX6675 in celsius and fahrenheit. Prints results to I2C LCD.
*/
#include <MAX6675.h>
#include <LCD.h>
#include <Wire.h>
MAX6675 thermocouple;
// Default I2C address for LCD is 0
LCD lcd(0);
// make a degree symbol
uint8_t degree[8] = {140,146,146,140,128,128,128,128};
void setup() {
lcd.begin(20, 4);
lcd.createChar(0, degree);
thermocouple.init(4, 5, 6);
// wait for MAX6675 to stabilize
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("MAX6675 test");
}
void loop() {
float temp_c;
float temp_f;
// Read values from the sensor
temp_c = thermocouple.measure(TEMPC);
temp_f = thermocouple.measure(TEMPF);
lcd.setCursor(0,1);
lcd.print(temp_c);
lcd.write((byte)0);
lcd.print("C ");
lcd.print(temp_f);
lcd.write((byte)0);
lcd.print('F');
delay(1000);
}
view raw MAX6675_LCD.ino hosted with ❤ by GitHub

Related Links

Hobbybotics MAX6675 Thermocouple Breakout V1.0 Gallery

Adafruit Arduino Library github page

Adafruit MAX6675 Breakout github page

The Brokentoaster Blog’s Breakout design page

Omega Engineering Thermocouple Connectors

Disclaimer

This example shows hardware and software used to implement the design.  It is recommended the viewer use sound judgment in determining and/or implementing this example for any particular application.  This example may include information from 3rd parties and/or information which may require further licensing or otherwise.  Additional hardware or software may be required.  Hobbybotics or any affiliates does not support or warrant this information for any purpose other than a design example and takes no responsibility for any mishaps (none being implied).

2 thoughts on “Hobbybotics MAX6675 Thermocouple Breakout V1.0

  1. You haven’t included the link from thermocouple negative to ground, as recommended in the Maxim datasheet.

Leave a comment