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?
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.
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.
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.
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.
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.
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.