Thermocouples are widely used for temperature measurement. They are cheap and work across a wide temperature range.
The operation of the thermocouple is based on the Seebeck effect. A junction of two different types of metal wire generates a voltage proportional to the temperature. The magnitude of the voltage depends on the types of wire being used.

To obtain the desired measurement of Tsense , it is not sufficient to just measure V . The temperature at the reference junctions Tref must be already known. This is normally done by measuring Tref with a temperature sensor such as a thermistor. The Tref is then used to compensate the V reading before applying the thermocouple curve.

The thermocouple voltage is from the difference in temperature between the sense junction Tsense and reference junction Tref; the reference junction always exists and may be the connection of the thermocouple wires to your voltmeter; note that brass, copper, plating materials all form additional intermediate junctions that cancel if they are at a uniform temperature. Thermocouple tables are based on the reference junction being at 0C (ice-point reference, a convention) so that is why the sense junction temperatures in these tables are all 0V at 0C.
Thermocouple manufacturers and metrology standards organizations such as NIST provide tables of the function Voltage vs Temperature that have been measured and interpolated over a range of temperatures, for particular thermocouple types
Certain combinations of alloys have become popular as industry standards. Selection of the combination is driven by cost, availability, convenience, melting point, chemical properties, stability, and output. Different types are best suited for different applications. They are usually selected on the basis of the temperature range and sensitivity needed.
To use a thermocouple with a microcontroller we need:
– An Analog Front End (AFE) amplifier to increase the voltage range from the thermocouple from mV levels to the input range of the microcontroller’s ADC. So a 0 – 100mV voltage range generated by a thermocouple must be amplified to 0 – 3.3V or 0 – 5V input range of a microcontroller ADC.
– a high resolution A to D converter. Microcontrollers typically have 10 to 12 bit ADCs. Given the wide range of temperatures this is not sufficient. An ADC of 20 or so bits is needed.
– software that is cognizant of the response curves of different types of thermocouple to calculate the Temperature from the voltage reading.
– Vref temperature measurement. A thermistor is sufficiently accurate to do this measurement. Again an amplification and accurate analog to digital conversion stage is required.
An easier solution is to use a thermocouple interface IC. The LD100 system supports the Maxim MAX31856 device. This device is available on an inexpensive (<$10) board from a multitude of suppliers. I bought a couple from ebay and all worked fine.

The MAX31856 performs cold-junction (Vref) compensation using an internal precision temperature sensor and digitizes the signal from any type of thermocouple.
The output data is formatted in degrees Celsius.
With a 19 ADC, this converter resolves temperatures to 0.0078125°C, allows readings as high as +1800°C and as low as -210°C (depending on thermocouple type), and exhibits thermocouple voltage measurement accuracy of ±0.15%.
The thermocouple inputs are protected against overvoltage conditions up to ±45V.
A lookup table (LUT) stores linearity correction data for several types of thermocouples (K, J, N, R, S, T, E, and B).
Line frequency filtering of 50Hz and 60Hz is included, as is thermocouple fault detection.
A SPI-compatible interface allows selection of thermocouple type and setup of the conversion and fault detection processes.
Supported Thermocouples and Temperature Ranges
| TYPE | T-WIRE | T+ WIRE | TEMP RANGE | NOMINAL SENSITIVITY (μV/°C) | COLD-JUNCTION TEMP RANGE |
| B | Platinum/Rhodium | Platinum/Rhodium | 250oC to 1820oC | 10.086 (+500°C to +1500°C) | 0 to 125°C |
| E | Constantan | Chromel | -200°C to +1000°C | 76.373 (0°C to +1000°C) | -55°C to +125°C |
| J | Constantan | Iron | -210°C to +1200°C | 57.953 (0°C to + 750°C) | -55°C to +125°C |
| K | Alumel | Chromel | -200°C to +1372°C | 41.276 (0°C to + 1000°C) | -55°C to +125°C |
| N | Nisil | Nicrosil | -200°C to +1300°C | 36.256 (0°C to +1000°C) | -55°C to +125°C |
| R | Platinum | Platinum/Rhodium | -50°C to +1768°C | 10.506 (0°C to +1000°C) | -50°C to +125°C |
| S | Platinum | Platinum/Rhodium | -50°C to +1768°C | 9.587 (0°C to +1000°C) | -50°C to +125°C |
| T | Constantan | Copper | -200°C to +400°C | 52.18 (0°C to +400°C) | -55°C to +125°C |
A Thermocouple Application Using the LD100 board – Oven Control

Connecting thermocouple boards to LD100


Attaching thermocouple to oven grill with kapton tape.

Using 2 thermocouples to check temperature distribution in oven.

Select K-type thermocouple from the LD100 application.

Start monitoring the temperatures.

Oven controller written in Python.