Working on thermocouple sensors MAX6675

Hi, everyone ..
I am working on a project for measuring temperature in 10 different points for a heat exchanger using thermocouple with Arduino to send the data to Excel sheet. The problem is that the measurements from thermocouple are not stable, and gives illogical values some times. I will attach a photo for connection and the code I used in the following.

#include "max6675.h"



MAX6675 thermocouple1(2,3,4);
MAX6675 thermocouple2(5,6,7);
MAX6675 thermocouple3(8,9,10);
MAX6675 thermocouple4(14,15,16);
MAX6675 thermocouple5(17,18,19);
MAX6675 thermocouple6(22,23,24);
MAX6675 thermocouple7(25,26,27);
MAX6675 thermocouple8(28,29,30);
MAX6675 thermocouple9(31,32,33);
MAX6675 thermocouple10(34,35,36);

void setup() {
  Serial.begin(9600);

  Serial.println("MAX6675 test");
  // wait for MAX chip to stabilize
  delay(2000);
}

void loop() {

   Serial.print(thermocouple8.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple2.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple3.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple4.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple5.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple6.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple7.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple1.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple9.readCelsius());
   Serial.print(",");
   delay(250);
   Serial.print(thermocouple10.readCelsius());
   Serial.println();
   delay(250);
   
   
   // For the MAX6675 to update, you must delay AT LEAST 250ms between reads!
   delay(15000);
}

At what point in adding new thermocouples and amplifiers did you first see the errors?
Paul

Hi, Pail.. :grinning:
For the first reading: CH5 has an error reading. for the second reading: CH2 & CH4 for the third reading for the third reading: CH1 & CH2.

It seems the error appearing randomly in different sensors :expressionless:

Hi @Barahim.
how is power to the modules being supplied?
From the datasheet each module consumes about 50 mA,
with 10 modules it will have a total consumption of 500 mA.

RV mineirin

Hi, @ruilviana
it is supplied by Arduino regulator 5V , which can supplied 1A. I think this is enough. :thinking:

The picture shows that you're not using the 5volt regulator.
You're using USB supply, which has a 500mA fuse inline.
Note that the Mega itself uses 70mA.
Leo..

@Barahim Which 5V arduino regulator are you referring to?
By the photo the arduino is being powered by USB.

USB normally supplies a voltage slightly lower than 5V, and cannot supply much current.
In most PCs only 800 mA, remembering that besides the sensors there is the consumption of the arduino.

RV mineirin

It is always best to start small, and test the system as you add components. Are you sure that you can get reliable data from just one or two thermocouples?

There are any number of things that could be wrong with your present setup. Long, dangling wires, especially with serial connections, are just asking for trouble.

Also, with that sensor, you must have an EXCELLENT ground system, all T- grounds should be connected with solid wire to a common point (star ground). A few mV ground loop bias will ruin the measurement.

Suggestions,

  1. verify the T/C neg is not tied to ground.

  2. if not add a 100k resistor from the T/C to ground.

  3. are your T/C bare? i.e. are they electrically connected to your heat exchanger? If so you should isolate them.

  4. Keep all your T/C in a bunch and away from other wires. Break them out closest to the heat exchanger as possible.

Remember these eBay boards have NO noise filtering on them. The best I have done with the Max31855's (newer Max T/C IC) is to take 9 readings, discard the highest 2 and lowest 2 then average the remaining.

The "open thermocouple" fault does not work if T- is not very well grounded. This is what the MAX6675 data sheet says:

Open Thermocouple
Bit D2 is normally low and goes high if the thermocouple
input is open. In order to allow the operation of the
open thermocouple detector, T- must be grounded.
Make the ground connection as close to the GND pin
as possible.

There is of course an additional problem if the thermocouple tip is in electrical contact with a point that is not at the common ground potential.

With eBay boards, which are very likely to have counterfeit or reject chips, all bets are off.

Thanks, I didn't read the whole spec and missed the ground explanation. The MAX31855 is not that way and historically all my T/C measurements have been differential, which proved to be superior that grounding one leg of the T/C.

This being the case, it is even more important the T/C do not make electrical connection to any other metal.

I wonder it performance would be better if the open T/C detection was sacrificed to make the T/C isolated.

With eBay boards, which are very likely to have counterfeit or reject chips, all bets are off.

I agree except my eBay MAX31855's have performed well.

I'm going to guess that that is the cause of the OP's problem.

That would be great..... easy fix.

Hi,
I bought a couple of these many years ago and set it up with a calibrator, they are to a point quite noisy devices.
I "quietened" mine down with 0.1uF across the thermocouple terminals.
AND
0.1uF across the power and gnd pin of EACH module at the module pins.

Tom... :smiley: :+1: :coffee: :australia:

1 Like

The connections using those leads are not terribly reliable and can give intermittent results .
Are you using thermocouple compensating cable , if not expect big errors .

You are also measuring fairly low temperatures , so thermocouple output is low and amplifier errors at their worst , and the accuracy of the cold junction temperature important . Thermocouples are not the best choice for low temperatures .

For best accuracy a single thermocouple amplifier would be used and the thermocouples switched into it - you often want temperature differences and that gives the best accuracy , as any difference in cold junction compensation is removed . It would be worth checking how accurate the reading you get are ( after you’ve tidied the wiring and got a decent power supply..)

Note the data sheet for that amplifier - cold junction is +- 3C , so you could have an error of 6C across your readings + the thermocouple error ( +- 9 lsb ; +-2C) .

Datasheet

Type K T/C is good for extreme conditions and low thermal mass. But @0.4mV/°C the output is going to have noise on the signal.

Best way is to put an RC before the Arduino. Perhaps a 10k and 0.1 or 1µf.

I see you have T/C wire right up to the boards, this is good.
You can also get finer wire for more flexibility. I use #24 or 26 Type K. On any setup like this you should test each T/C individually making sure the output is stable enough for your test, at ~constant temperature.

Then I would test all in a warm water liquid bath. Even if you put all your T/C in a plastic bag, they should all track.

John

We can ask our CEO / Lead engineer (John Shanahan) from Pyrosales - if you haven't got the answers you are looking for? Please let us know by messaging us