SparkFun Qwiic Thermocouple Amplifier - MCP9600 (Screw Terminals) AMBIENT READS 240.00 ON 2 CARDS

The ambient (cold ) junction reads 240.00 no matter what resolution settings are used, it will for one pass in about 50 passes com back with 24.?? which is what it should be. It is being read through an arduino Uno with 3.3v power

Art B

Can you share a photo of the apparatus?

Hi Art (@Art_Bouvier ),

Please check your voltages:

The MCP9600 is 5V tolerant. It can operate from 3.3V or 5V. Most SparkFun Qwiic devices are 3.3V-only. This one is an exception.

The original Arduino Uno (if that is what you have?) is a 5V board. It uses 5V signals on its GPIO pins. It expects I2C signals to be 5V also.

If you power the MCP9600 from 3.3V, you may get errors in the I2C data because 3.3V is not a reliable “high” signal for a 5V microcontroller.

You either need a level-shifter to convert 3.3V to 5V. Or - for this MCP9600 breakout only - you can try powering the MCP9600 from 5V.

I hope this helps,
Paul

@Art_Bouvier :

Also, please check you have your thermocouple connected up the right way round. With screw terminals, it’s easy to connect them the wrong way round:

I hope this helps,
Paul

I reversed the t-couple leads, nothing
changed, also went to 5V no change
ambient resolution is .0625/ k t-couple is14


I pulled all the relevant code and made a new sketch the printout also has a few of the settings for the MCP9600. I reinstalled the library it is version 1.05 the print out looses the settings as seen in the filter coefficient it always goes to a 0 from what ever number it is set to. it happens to the cold or ambient junction but not at the same time, it goes from240.?? to 24 or 25 for 1 pass. I have a 500 delay it doesn’t show as often as it does at 100 delay. This is the key to this whole project when it works correctly it will be controlling two 1 mill. BTU burners in a home foundry.

I’m not sure why but reducing the clock timing below 9000 resolved the stability problems and the 240 dropped to 68. It doesn’t seem to be actually reading the t-couple correctly but that is a new problem.

Hi Art (@Art_Bouvier ),

Thanks for the update. Looking at the library repo, there is a bug reported for setFilterCoefficient. Link below. Perhaps that explains your issue? I will try to take a look next week.

Best wishes,
Paul

Hi Art (@Art_Bouvier ),

I have fixed the bug in setFilterCoefficient - version v1.0.6 of the library will be available via the Arduino Library Manager in a day or so.

The bug meant that calling setFilterCoefficient also set the thermocouple type to Type-K.

But this doesn’t explain your issue with the ambient temperature…

Looking at your code, you are running the I2C bus very slowly - at 10kHz. The MCP9600 doesn’t seem to like being run that slowly. I recommend setting it back to 100kHz (100000 Hz).

At 100kHz, I see:

08:35:17.518 -> Device will acknowledge!
08:35:17.565 -> Device ID is correct!
08:35:17.565 -> Setting Thermocouple Type!
08:35:17.612 -> Thermocouple Type set sucessfully!
08:35:17.612 -> Setting Filter coefficient to 6!
08:35:17.612 -> Filter Coefficient set sucessfully!
08:35:17.612 -> Thermocouple: 20.69 °C   Ambient: 21.37 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.612 -> Thermocouple: 20.69 °C   Ambient: 21.37 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.659 -> Thermocouple: 20.69 °C   Ambient: 21.37 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.706 -> Thermocouple: 20.69 °C   Ambient: 21.37 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.706 -> Thermocouple: 20.69 °C   Ambient: 21.37 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.753 -> Thermocouple: 20.69 °C   Ambient: 21.31 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.800 -> Thermocouple: 20.69 °C   Ambient: 21.31 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.846 -> Thermocouple: 20.69 °C   Ambient: 21.31 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6
08:35:17.893 -> Thermocouple: 20.69 °C   Ambient: 21.31 °C   Temperature Delta: -0.75 °C   Filter Coefficient: 6

At 10kHz, I see:

08:37:34.537 -> Device will acknowledge!
08:37:34.537 -> Device ID is correct!
08:37:34.537 -> Setting Thermocouple Type!
08:37:34.537 -> Thermocouple Type set sucessfully!
08:37:34.583 -> Setting Filter coefficient to 6!
08:37:34.583 -> Filter Coefficient set sucessfully!
08:37:34.583 -> Thermocouple: 20.56 °C   Ambient: 21.19 °C   Temperature Delta: -11.19 °C   Filter Coefficient: 6
08:37:34.631 -> Thermocouple: 10.63 °C   Ambient: 21.19 °C   Temperature Delta: -10.88 °C   Filter Coefficient: 6
08:37:34.678 -> Thermocouple: 10.88 °C   Ambient: 21.19 °C   Temperature Delta: -10.63 °C   Filter Coefficient: 6
08:37:34.724 -> Thermocouple: 11.13 °C   Ambient: 21.19 °C   Temperature Delta: -10.13 °C   Filter Coefficient: 6
08:37:34.771 -> Thermocouple: 11.38 °C   Ambient: 21.19 °C   Temperature Delta: -9.88 °C   Filter Coefficient: 6
08:37:34.818 -> Thermocouple: 11.63 °C   Ambient: 21.19 °C   Temperature Delta: -9.63 °C   Filter Coefficient: 6
08:37:34.866 -> Thermocouple: 12.13 °C   Ambient: 21.19 °C   Temperature Delta: -9.38 °C   Filter Coefficient: 6
08:37:34.912 -> Thermocouple: 12.38 °C   Ambient: 21.25 °C   Temperature Delta: -9.13 °C   Filter Coefficient: 6
08:37:34.960 -> Thermocouple: 12.63 °C   Ambient: 21.25 °C   Temperature Delta: -8.63 °C   Filter Coefficient: 6
08:37:35.005 -> Thermocouple: 12.81 °C   Ambient: 21.25 °C   Temperature Delta: -8.44 °C   Filter Coefficient: 6

If the bus speed doesn’t explain your issue, then I strongly suspect you are having I2C voltage / signal level issues. Or perhaps your I2C cable is too long? Please ensure your cables are as short as possible. 10cm is the ideal length.

Please also ensure you only have one set of pull-ups connected on the I2C bus. If you have other I2C devices attached, you may need to disconnect the pull-ups on those other devices.

I hope this helps,
Paul

@Art_Bouvier : I spoke too soon. I can replicate your issue:

Previously I was testing with an ESP32. I dug out an old Arduino Uno R3, and I see:

09:38:28.723 -> Device will acknowledge!
09:38:28.723 -> Device ID is correct!
09:38:28.723 -> Setting Thermocouple Type!
09:38:28.770 -> Thermocouple Type set sucessfully!
09:38:28.770 -> Setting Filter coefficient to 6!
09:38:28.770 -> Filter Coefficient set sucessfully!
09:38:28.770 -> Thermocouple: 20.81 °C   Ambient: 240.38 °C   Temperature Delta: -0.50 °C   Filter Coefficient: 6
09:38:28.818 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:28.866 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:28.962 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:29.056 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:29.103 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:29.197 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:29.291 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6
09:38:29.339 -> Thermocouple: 20.37 °C   Ambient: 240.38 °C   Temperature Delta: -1.56 °C   Filter Coefficient: 6

Looking at the I2C bus with a logic analyzer, I see:

Register 0x02 is the Cold Junction Temperature. 0x0158 is 344 * 0.0625 = 21.5C. So the chip is outputting correct values. But the I2C clock waveform is so terrible, the Uno is not reading the data correctly. This is with setClock(10000); . The clock speed should be 10kHz, but it is actually ~250kHz. It is too fast.

OK. This appears to be a known bug with the Arduino Uno. If you select 10000 Hz, you actually get 250000 Hz.

Please use setClock(100000); and all should be well.

Best wishes,
Paul

setting the clock does work on the original problem, I’m going to wait for the new version and it hopefully will solve the incorrect reading problem. If it doesn’t do you want me to address it on this thread or start a new one?

Art B

Hi Art (@Art_Bouvier ),

setting the clock does work on the original problem

Excellent! I’m glad that’s working.

Please check your thermocouple type and wiring. If you have it connected the wrong way round, or have selected the wrong type, you’ll get very strange results.

Please continue to post here - thanks.

Best wishes,
Paul

  1. the second board plugged in shuts down the first Board first Brd is 0060 second is 0067 second brd has i2c tabs and adddr open
  2. t-couple is a verified type K
    
  3. reverssing t-couple polarity doesn't change anything
    
  4. tcouple does respond to heating but scale is of by approx. 30C
    
  5. changing t-couple type doesn't Change anything
    
  6. is there a way to reset all settings on the MCP9600
    

Art b