MCP9600 Breakout(PIM437)

I install library and run alerts.py.


Sometimes I get wrong hot junction temperature 16.0625.
It is far from real temperature. Do you have the same symptom?

Hi

I have the same problem - did you solve it?

It looks like the following process works:

  1. Clear register 0x04 - especially bits 6 & 7, the burst complete and Th Update bits.
  2. In a while loop read the temperature until the status register (0x04) reads higher than 0x40. This means the Th has updated, and/or the burst is complete.
  3. Then read the temperatures. I included a test that ignores any temp reading of 16.0625 to be sure they are not logged. This does create a gap between 16.000 and 16.125, but K-type thermocouples (which I am using) are only 1.5C accurate or less, thus I am not too concerned about missing that reading.

I did set the MCP9600 with the following registers:

  • Register 0x05 with 0x00 (K-Type with no filter set)
  • Register 0x06 with 0x1E (0.0625C resolution/18-bit/128 samples burst/burst mode)

The reason is because your i2c bus is too fast, probably the default 100000.

I puty this statement in the dtparam=i2c_arm=on,i2c_arm_baudrate=40000
in this file. “/boot/config.txt” Certainly it needs to be slower than the default for this device.

2 Likes

+1 for this reply. Should be added to the MCP9600 page and Github example because this was driving me nuts.

Could you explain which of the solutions worked for you? I’m having the same problem and see a number of solutions out there that led me nowhere.

I went ahead and tried the edit/addition to the dtparam line in the /boot/config.txt line recommended by SaxRay. It worked like a charm. Of course, now one of my probes reports -2000 plus degrees from time to time. Strangely, the spurious number changes slightly each time. The first probe is stable and is reading the correct temperature. Time to go down another rabbit hole.

I reduced the baudrate further to 10000 and it cleared up my spurious readings.