Hello,
I am just trying to simply test out a thermocouple amplifier MAX 31855 using an Arduino UNO. The thermocouple is reading but it is just giving me 0 values. I have tried changing the voltage from 5 to 3.3 V but hasnt working. I have also recently try to solder the cables into the thermocouple pins and have also try using male to female jumper wires to connect the amplifier to the Arduino. Also, try to change the position of the Thermocouple K itself to see if I didnt mess up the 2 connections.
I am leaving with you the code that I am using to program the MAX31855 thermocouple amplifier. I dont think I am having issue on that area, but feel free to comment on that.
#include <SPI.h>
#include "Adafruit_MAX31855.h"
// Default connection is using software SPI, but comment and uncomment one of
// the two examples below to switch between software SPI and hardware SPI:
// Example creating a thermocouple instance with software SPI on any three
// digital IO pins.
#define MAXDO 3
#define MAXCS 4
#define MAXCLK 5
// initialize the Thermocouple
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);
// Example creating a thermocouple instance with hardware SPI
// on a given CS pin.
//#define MAXCS 10
//Adafruit_MAX31855 thermocouple(MAXCS);
// Example creating a thermocouple instance with hardware SPI
// on SPI1 using specified CS pin.
//#define MAXCS 10
//Adafruit_MAX31855 thermocouple(MAXCS, SPI1);
void setup() {
Serial.begin(9600);
while (!Serial) delay(1); // wait for Serial on Leonardo/Zero, etc
Serial.println("MAX31855 test");
// wait for MAX chip to stabilize
delay(500);
Serial.print("Initializing sensor...");
if (!thermocouple.begin()) {
Serial.println("ERROR.");
while (1) delay(10);
}
Serial.println("DONE.");
}
void loop() {
// basic readout test, just print the current temp
Serial.print("Internal Temp = ");
Serial.println(thermocouple.readInternal());
double c = thermocouple.readCelsius();
if (isnan(c)) {
Serial.println("Something wrong with thermocouple!");
} else {
Serial.print("C = ");
Serial.println(c);
}
//Serial.print("F = ");
//Serial.println(thermocouple.readFahrenheit());
delay(1000);
}
This is how I have setup the wiring of the thermocouple amplifier and I am also putting in the thread pictures of how I have soldered the thermocouple amplifier
@dlloyd I am not that experienced in the soldering and wiring aspect of electronics. As I am working with a male header pin, is there any way to just use a male to female jumping wire into the amplifier without a breadboard, or I need to neccesary use one? Also, do I just solder the bottom part of the amplifier with the male header pins?
Using jumper wires like these can make solder-less wiring quick and easy. Shorter or longer lengths are available. Can also make longer wires by connecting several together.
Hi there, I have the same problem (internal and TC temperatures always display as 0.00).
I used jumper wires to connect a pre-soldered max31855 breakput board to the Uno R3 board. I've looked closely at the soldered terminals on the max31855 breakboard and (to the naked eye) they look clean with not visible cross-connections. I have tried different arduino max31855 libraries (e.g., serielthermocouple - from Adafruit Thermocouple Sensor w/MAX31855K library and max31855_demo1 from the max31855_RT library) but get the same consistent 0 C temp readings. I've checked and confirmed electrical continuity (with multimeter) between the jumper lead connected terminals on the arduino UNO R3 and max31855K breakout boards - so that's OK. Power supply to breakout board confirmed at 3.3 V DC. I've moved the TC between ice/water and hot water baths -and can observe voltage change between the TC terminals (-0.5 mV for ice water and +0.9 mV for hot water)...so that seems functional. I have no idea how to confirm that there is a correct functional output from the max31855 board (from the DO pin i would assume).
Is there any additional diagnostic testing that I can perform (with multimeter &/or laptop) or do I assume that the breakout board is at fault and buy another?
One further point...I'm using a K Type Thermistor Temperature Sensor Probe Temperature Controller,100mm / 4" Long Probe Thermocouple Probe Diameter : 5mm / 0.2"MT-205-100mm5x100x2. This has a DN5x100mm SS probe with 1 m SS shielded cable...if that makes a difference
If that's the case, then you most likely have a "grounded thermocouple", which means that the hot junction (point where both thermocouple wires intersect) is physically connected to the metal tubing.
Those grounded thermocouple's don't work with the MAX31855 or MAX31856. They do work with the MAX6675 module's though.
Only "ungrounded thermocouples" work with MAX31855 or MAX31856. An example of an ungrounded thermocouple is a kiln thermocouple, with a ceramic (non-metal) tube.
But there also exists ungrounded thermocouple's with metal tubes, however there is a non-conductive layer between the hot junction and the metal tube, to physically separate them .
Hi there GNTR, thanks for you response. I'm glad I added the TC details! The TC I'm using is https://www.ebay.com.au/itm/313898410304?var=612616135650 (which "looks" identical to the TC you identified).
I can't see any reference to whether it's grounded or ungrounded but....having now checked it with a multimeter I can confirm that you are correct - its grounded!!!
Q: How could you tell from the photo/ebay description that it was a grounded TC?
Thank you again - I've spent many hours trying to figure this out
I have purchased quite a few of those generic brand thermocouple's and I confirmed that all of them were grounded using a multimeter. I think the grounded one's are more commonplace.