MAX6675 Thermocouple Amplifier

The MAX6675 [1] will measure K type thermocouples over a range of 0 °C to 1024 °C, which is ideal for many applications such as a cooking thermometer, or for measuring soldering temperatures. Although it has been superseded by the MAX31855, which offers a wider temperature range of -270 °C to 1800 °C, the MAX6675 has the advantages of low cost, and the fact that it will work at 5 V, whereas the MAX31855 is 3.3 V maximum.

Boards are available on eBay, Banggood, and AliExpress, often with a sensor included [2]:

 MAX6675.jpg

 

Reading the thermocouple

The MAX6675 needs to be connected to the Arduino via five cables: 5V, GND, and the three SPI lines SO, CS, and CLK.

Here's the uLisp interface:

(defvar so 8)
(defvar cs 9)
(defvar clk 10)

; Initialise pins
(defun max6657-init ()
(pinmode so nil) (pinmode cs t) (pinmode clk t) (digitalwrite cs 1)) ; Read temperature in units of 0.25 degrees C (defun max6657-temp () (let ((dat 0)) (digitalwrite cs 0) (dotimes (i 16) (digitalwrite clk 1) (when (digitalread so) (incf dat (ash 1 (- 15 i)))) (digitalwrite clk 0)) (digitalwrite cs 1) (ash dat -3)))

The I/O pins used to connect to the MAX6675 are defined by the three defvar statements, so change these if you want to use different pins.

First call (max6657-init) to initialise the I/O pins. Then call (max6657-temp) to read the temperature. This returns an integer in 1/4s of a degree Celsius. For example:

> (max6657-temp)
89

means that the temperature of the probe is 22.25 °C.

See also: Thermocouple interface


  1. ^ MAX6675 datasheet on Maxim Integrated.
  2. ^ MAX6675 Sensor Module Thermocouple on Banggood.