I'm having trouble getting sensible readings from a MAX31855 breakout board connected to my arduino via a bidirectional level shifter. For the longest time I couldn't get it to read anything and eventually found by looking at the bits in an integer that the SPI function returns that it was showing the error "Thermocouple is connected to ground". Sure enough I got the magnifying glass out and there is a trace on the PCB from Ground to T-. Is there any reason this would be suitable? It is a cheap eBay copy that looks nothing like it did in the picture suppose that is to be expected.
That is not the issue anyway, I ran a razor blade through that trace and I am now getting readings on my thermocouple that look something like this from the serial monitor.
MAX31855 test
Internal Temp = 22.56
C = 16.50
Internal Temp = 22.50
C = 16.50
Internal Temp = 22.56
C = 16.25
Internal Temp = 22.56
C = 16.25
Internal Temp = 22.56
C = 16.25
Internal Temp = 22.56
C = 16.25
The TC has been resting at room temperature for hours so it should read closer to the internal temp of the IC right? If I pinch it with my fingers it raises to ~25 or so and if I touch it to an ice cube it drops to -4 or so.
Is there anything I can do to improve the accuracy of this device? Is this a common issue running from a dirty arduino MCU? I have got a small 100pF capacitor across the TC terminals which seems to help a little but not much.
Thanks for replies. I couldn't imagine it is the breakout board, since it only has one other component being a capacitor across Vcc and Ground as data sheet requests. The chip - maybe... Being all the way down here in NZ Adafruit want almost $40 for shipping the $15 board which makes the eyes water. The eBay one was $3 and free shipping to NZ haha... How the Chinese manage that I have no idea.
I played around with it some more today, boiling water and ice slurry, it is actually not terrible - are these results within the ballpark or I still have a dodgy chip?
MAX31855 test
Internal Temp = 20.94
C = 18.25
.....
Internal Temp = 20.94
C = 55.25
Internal Temp = 21.00
C = 96.25
Internal Temp = 20.94
C = 96.50
Internal Temp = 21.00
C = 98.00
Internal Temp = 21.00
C = 96.50
Internal Temp = 21.00
C = 98.00
.....
Internal Temp = 21.06
C = 67.00
Internal Temp = 21.06
C = 50.75
Internal Temp = 21.06
C = -0.75
Internal Temp = 21.06
C = -1.00
Internal Temp = 21.12
C = -0.75
Internal Temp = 21.12
C = -0.25
Internal Temp = 21.12
C = 0.00
.....
Internal Temp = 21.19
C = 2.25
Internal Temp = 21.19
C = 96.50
Internal Temp = 21.25
C = 96.25
Internal Temp = 21.19
C = 94.75
Internal Temp = 21.25
C = 97.00
Internal Temp = 21.25
C = 97.00
Actually, I have no idea what you mean. The ATMega chips used in the Arduino are perfectly functional, completely debugged computers, and they do exactly what your program tells them to do.
You didn't tell us which Aduino you're using, which level shifter, and how you power that breakout board.
The datasheet shows a possible CJ temp error of four degrees (-2C to +2C).
Same for the thermocouple result.
You could calibrate that away in software.
Leo..
I'm using an Arduino Uno, a no-name 4ch level shifter identical to the one in the image. I have the Max31855 breakouts Vcc, and the level shifters low voltage reference tied to the 3.3V pin on the arduino.
I have made some changes and am getting quite acceptable results now. I've done away with USB power and gone to a 9V battery (now writing results to an SD card), and soldered the thermocouple wires and capacitor directly to breakout board. I tested between each step and both proved helpful. The raw output for boiling/iced water was something like 98.5 and 1.0. The output below is after 2 point calibration.
USB power is incredibly dirty usually, its not good for sensitive analog electronics. In general the
best way to do analog is with a linear regulator or a battery.
MarkT:
USB power is incredibly dirty usually, its not good for sensitive analog electronics. In general the
best way to do analog is with a linear regulator or a battery.
Yep I do realise that and is what I was getting at re dirty Arduino. Soldering the TC to the board helped at least as much as switching to stable power too. Definitely worth doing away with the terminal block.
Halo, I have a problem with Max31855 reading. It's okay when reading ambient temperature but whenever I place it into boiling water (either with the electricity turned on or turned off), the reading became nan. I don't know what to do, kindly help me.
thankyou
It's okay when reading ambient temperature but whenever I place it into boiling water (either with the electricity turned on or turned off), the reading became nan.
The MAX31855 isn't constructed to be put into water, the same is true for most thermocouples on the market. Have tried to put the thermocouple on the pot containing the boiling water? Does it provide meaningful data? Why is there OneWire code in your sketch?