MAX6675 Thermocouple

I have an big interest in car tuning and modifications, and exhaust temperature is a good way to gauge engine problems. In general the colder the exhaust gasses are, the richer the fuel mixture, the warmer the exhaust gasses are the leaner the fuel mixture. I don't recommend using this for tuning an engine, a wideband lambda is much more appropriate. And your engine should only be used by a engine tuning specialist. But if your like me, you might want build something like this for race purposes. Or on another note, it could be great way to monitor a home built reflow oven.



Reading The Temperature

#include "mbed.h"
#include "max6675.h"

SPI spi(p11,p12,p13);
max6675 max(spi,p18);

Serial pc(USBTX,USBRX);

int main() {

    while (1) {
        float temp = max.read_temp();
        printf("\n\rT: %f",temp );


K Type Thermocouple


A bit about the K Type thermocouple (Extract from Wikipedia, link below)

Type K (chromel–alumel) is the most common general purpose thermocouple with a sensitivity of approximately 41 µV/°C, chromel positive relative to alumel.[6] It is inexpensive, and a wide variety of probes are available in its −200 °C to +1350 °C / -328 °F to +2462 °F range. Type K was specified at a time when metallurgy was less advanced than it is today, and consequently characteristics vary considerably between samples. One of the constituent metals, nickel, is magnetic; a characteristic of thermocouples made with magnetic material is that they undergo a step change in output when the magnetic material reaches its Curie point (around 354 °C for type K thermocouples).




07 Aug 2012

At ambient temperature the reading works fine and even on the body. However,when the termocouple touches a hotter source like the hot side of my laptop, I read 0.000. Is it a problem of out of range values?

07 Aug 2012

I have had a quick look at the cod, and it does not appear to be wrong,

but I do remember that more than one second must be between each read of MAX6675,

I cannot find that entry in the data sheet ?



08 Aug 2012

It polls quicker then a second, i've found it works around the 100ms mark

	int m_speed = 100;

		if (m <= timer.read_ms()) {
			m = timer.read_ms() + m_speed;

			//if enabled poll temp;
			if (ENABLEMAX) {


29 May 2013

I made a new program which consisted of the copied text from this Cookbook entry, imported the library for the MAX6675 and got a compile-time error saying "More than one section matches selector - cannot be FIRST/LAST"

I'm a newbie and this means nothing to me.


06 Mar 2014

can anyone give the code for k type thermocouple??