Why is my thermocouple reading unstable?

I have a thermocouple + MAX31855 breakout board integrated with a ESP32 using ESPHome.

The temperature readings where way off so I assumed they needed calibration.
The MAX31855 spuriously reports both VCC and ground faults, but the temperature value is still “coherent”.

After ignoring faults and calibrating the readings, this thing is not long-term stable. Why would it display this behavior over a 24 hour period when it is located in the kitchen at a relatively constant 70F temp?

On average, it is near the 70F baseline, but I thought those things were supposed to be accurate…

is that like “inconceivable”

None of those readings look anywhere close to reality for a constant 70F room. Now, how do you know your room really is 70?

Since the graph says big green egg, I am guessing you are using this to measure the temperature of your BBQ/grill. I got a simple BT one that works well and gives believable readings at room temperature (+/- a degree or two) consistent with my other temperature sensors. So it is possible to get good readings from thermocouples.

I got an Inkbird IBT-4XS with 4 probes for about $40. I couldn’t make something that cheap and if I did it likely wouldn’t be as good. Getting the data to HA was easy.

Never seen such a board.
Post your hardware setup/wiring.

Definitely not normal behavior, as I use one for my coffee roaster I built and it’s quite consistent and reliable. No calibration was required either.

Sounds an awful lot like you have either bad connections or bad hardware.

I think there was definitely an issue on the power supply side. I took the entire assembly apart leaving only the ESP32, the MAX31855 and the thermocouple powered by a high quality USB suppy.

No longer major jumps but still a noisy reading at around 9C (that’s the raw reading – I have a calibration filter I haven’t bothered to remove).

I’ve ordered another MAX31855 and thermocouple to see if I have more bad hardware.

Why you supply MAX module from VIN(5V) ?
If your module has logic level at VCC, it’s not healthy setup.
Also, regulated 3.3V could give less noisy supply.

Are you wires soldered on Esp side?

Because the breakout board has it own 3.3V regulator and the output signal is going to be 3.3V reguardless. I assume letting it regulate its own voltage from a 5V supply would yield a more stable source.

Wires are not soldered on either end (yet).

If you are sure of it. I’m not, levels are commonly shifted to VCC.

So how they make contact on esp side?

As you can see on the photo, they are connected using jumper wires via soldered header pins.

Good!
But no way to see it on photo.

I just quickly soldered a pin on the 3.3V output and used it to power the 31855.

The reported internal temperature is still 20C but the thermocouple now reports -9C.

On 31855 Vin, right?

Also, are you sure your thermocouple is K-type?

The signals for a thermocouple are very small, and any connection can degrade performance. For example, your inline connector is not of a quality that would support a thermocouple as there are two metal-to-metal interfaces, which can move with temperature and can act as a thermocouple as well. Moreover, the wires at the screw terminal, which are likely copper, are another source of error. In addition, the A/D converter, which appears to have sufficient resolution, may not be stable enough for the measurement. You’ll have to dig a bit to find the stability specifications.

Edit: I see the MAX331855 has an internal A/D, so measurement stability is not an issue.

The thermocouple wires, which are polarized and of two different metals, should go directly to the screw terminals. This is your could junction, which is part of the measurement.

More details here:

[The Basics of Thermocouples | Analog Devices](The Basics of Thermocouples | Analog Devices

Lastly, look at the section “Addressing Noisy Environments.”

3 Likes

That’s what the label said – and the wires are red and green. So it is likely a K-type but maybe not.

You didn’t confirm that you have module powered from esp 3.3V to module Vin.

Doesn’t perfectly match the standard but yes, likely…
Also, play with the TS connector, maybe there is something wrong there.

I have switched to a different K-type that is directly connected to the MAX31855 screw terminals. Same results.

I’ve ordered a XY-T04. If I get figure out the pinout of the RS-432 connector, that should meet my requirements in a fully integrated solution.

I’m a firmware guy so getting the software to work is going to be much easier for me that dealing with all those analog real-world issues.

How odd. Is it stable now? If not, and if you have a good 0.1 uF plastic-film capacitor, I’d put one between the the two inputs to see if it smooths the readings.

Apologies in advance for double-checking things: Your colors line up with a German K-type thermocouple. The red wire should go to the + input (pin 3), and the green to the - input (pin 2). Of course, the part number should have a K on the end (i.e. MAX31855K).

Below is the datasheet. Note 4 states the accuracy doesn’t include “cold-junction temperature error or thermocouple nonlinearity.” Still, 20°C seems reasonable for temperature at the chip. Perhaps putting the whole thermocouple board in a small box can ensure the connection block and the IC are at the same temperature. It’d be helpful for the cold junction accuracy. As far as -9°C goes, that could indicate the wrong polarity on the leads.

https://www.analog.com/media/en/technical-documentation/data-sheets/MAX31855.pdf

Otherwise, I’m running out of ideas.

More importantly, it’s beyond the absolute maximum rating (4 volts) of the part. You may have damaged it.

Those modules have 3.3V voltage regulator on board, so it’s fine to power it from 3.3V or 5V to VIN pin. But (depending on module circuit) the level shifters are shifting spi lines to Vin voltage and that’s not ok with Esp at 5V.