Problem in Adafruit Max 31856 module while measuring temperature

Hello guys, I'm using the Adafruit Max 31856 module to measure the temperature of a T-type thermocouple at a particular point in a hose. There is a heater which heats up the liquid flowing through the hose, and I want to monitor the temperature of the liquid after it is heated.

When the heater is not heated (the water just flows without absorbing heat) the module is able to show the temperature values dynamically (as in for every delay time it updates the serial monitor with updated values). But when I supply heat to the heater and the water absorbs heat, after a minute or two the serial monitor, just displays the last recorded temperature value (and repeats the same value after delay time) and does not update the new temperature value.

The heater is a separate circuit and the (thermocouple/ arduino/ Adafruit module) are separate circuits. They have no interconnections. I don't know why the arduino displays the same temperature value without updating, when the heater is heated (which heats the liquid).

I've attached the circuit I use for the temperature measurement.

P.S.

  • I've double checked the type of thermocouple and their connections to the Adafruit module and with arduino.

Your topic has been moved to a more suitable location on the forum. Installation andTroubleshooting is not for problems with (nor for advice on) your project.

Can you show your code please so someone can check if there are no issues in there.

Lots of possibilities;

  1. Do the readings start updating after the heater is turned off?
  2. Without seeing your code, could it be updating with the same number?
  3. Is your thermocouple insulated or in contact with the water? How clean is the water? Try a 1meg ohm resistor for either of the T/C inputs (at the board) to ground of the board.

I would add some code to toggle the onboard LED each time through the measurement portion of the loop, to verify the loop is being executed.

How is the project powered? Schematics shows no powering. Not likely the fault but spending time when basic things are not clear is no no.

1 Like
// This example demonstrates continuous conversion mode using the
// DRDY pin to check for conversion completion.

#include <Adafruit_MAX31856.h>

#define DRDY_PIN 5

// Use software SPI: CS, DI, DO, CLK
//Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
Adafruit_MAX31856 maxthermo = Adafruit_MAX31856(10);

void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10);
  Serial.println("MAX31856 thermocouple test");

  //pinMode(DRDY_PIN, INPUT);

  if (!maxthermo.begin()) {
    Serial.println("Could not initialize thermocouple.");
    while (1) delay(10);
  }

  maxthermo.setThermocoupleType(MAX31856_TCTYPE_T);
  //j E K N T
  Serial.print("Thermocouple type: ");
  //switch (maxthermo.getThermocoupleType() ) {
    //case MAX31856_TCTYPE_B: Serial.println("B Type"); break;
    //case MAX31856_TCTYPE_E: Serial.println("E Type"); break;
    //case MAX31856_TCTYPE_J: Serial.println("J Type"); break;
    //case MAX31856_TCTYPE_K: Serial.println("K Type"); break;
    //case MAX31856_TCTYPE_N: Serial.println("N Type"); break;
    //case MAX31856_TCTYPE_R: Serial.println("R Type"); break;
    //case MAX31856_TCTYPE_S: Serial.println("S Type"); break;
    //case MAX31856_TCTYPE_T: Serial.println("T Type"); break;
    //case MAX31856_VMODE_G8: Serial.println("Voltage x8 Gain mode"); break;
    //case MAX31856_VMODE_G32: Serial.println("Voltage x8 Gain mode"); break;
    //default: Serial.println("Unknown"); break;
  //}

  maxthermo.setConversionMode(MAX31856_CONTINUOUS);
}

void loop() {
  // The DRDY output goes low when a new conversion result is available
  int count = 0;
  while (digitalRead(DRDY_PIN)) {
    if (count++ > 200) {
      count = 0;
      Serial.print(".");
    }
  }
  Serial.println(maxthermo.readThermocoupleTemperature());
  delay(1000);
}

I've posted the code as a comment.

The adafruit module is powerd by 5V from the arduino. The heater is powered by a separate DC power supply.

  1. Yes, the readings start updating once the heater is turned off.
  2. I've commented the code. Please check into that to see if there is any problem/bug that I might have coded.
  3. I'm using this thermocouple ( Thermocouple Probe for Liquids and Gases, Bendable, without Cable, Type T, Flat Pin Connection, 12" Probe | McMaster-Carr).

It is not exactly water. It is PG-25 (25% propylene glycol and 75% water). And it is clean without any impurities.

I didn't get this "Try a 1meg ohm resistor for either of the T/C inputs (at the board) to ground of the board."

That ought to work, not studying the power requirements of that module. Still the controller is not powered.....
Heater power is external. Good. How is the heater controlled by the controller? That ought to be shown in the schematics.
You use D0 and D1. They are often used for downloading code and debug printing. How do You handle debug printing? I'm an UNO guy and maybe Your controller uses other pins.

  • "You use D0 and D1. They are often used for downloading code and debug printing. How do You handle debug printing? I'm an UNO guy and maybe Your controller uses other pins."
    I did not use D0,D1, D2, D3, D4, D5, D6, D7, D8, D9. Only D10-13 are used, that too for the adafruit module.

  • the heater is controlled by the microcontroller/Arduino Uno.

By the way I'm using Arduino uno.

Correct. My mistake.

How?
A link to the datasheet of the heater would help.

I'm sorry I meant that the heater is not controlled by the microcontroller/Arduino Uno.

I'm sorry I meant that the heater is not controlled by the /Arduino Uno.

This is reply number 15 and we still don't know the full project. You have wasted a lot of helpers time.
Sharpen up!

I'm a mechanical engineering grad student. I do not know much about electrical stuff. I was hoping to get guidance form the community. I'm new to this forum.

So, I have a separate circuit for measuring the thermocouple readings using arduino uno. The heater is made of a ceramic material and it is heated by a separate circuit. There is no electrical connection between the thermocouple circuit and the heater circuit. I'll try to get the heater's data sheet if that will help.

Read this: How to get the best out of this forum - Using Arduino / Project Guidance - Arduino Forum

I'm out.

The link says the sensor type is "grounded", which means that the hot junction is connected to the metal tube. Those types are not compatible with max31855 and 31856. I've also bumped into that problem.

You need the "ungrounded" type of thermocouple. You can confirm that it's grounded with a multimeter, through checking for continuity between the metal tube and the terminals.

Scratch this suggestion.
The Max31856 has a BIAS pin which accomplishes the same thing. I've been using the Max31855 which does not have the BIAS.

I'm going to guess the issue is the pump creates enough electrical noise that something is getting overwhelmed.

Just becase there are no connecting doesn't mean there cannot be interference. Can you post a photo or a sketch of the physical wiring?

can you let me know which module is compatible for grounded T- type thermocouples?