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]:
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
- ^ MAX6675 datasheet on Maxim Integrated.
- ^ MAX6675 Sensor Module Thermocouple on Banggood.