My application requires 11 thermocouples to be sampled and logged. Below is the circuit diagram, containing a differential and common mode filter, non-inverting amplifier (gain 111) and a second order LPF. The Vbuff voltage is a buffer voltage to ensure the output of the non-inverting amplifier is always positive, as the thermocouple needs to be able to read from -40C to 1000C. This Vbuff is shared between all 11 thermocouple circuits.
- U1 is a LMV844QMA/NOPB
- U2 is a TSX7191IYLT
- Temp sense IC is a TMP236AQDBZTQ1
The location of the CJC temp sensing IC is directly below the thermocouple connector plug as shown in the images below. It is stitched to the ground plane for more thermal mass. At the moment the cables to the thermocouple are around 15-20cm.
When holding four thermocouples in a hot water bath (I only have 4 on hand at the moment) I expect them to all read similar temperatures but the below plot shows they vary to each other by over 10 C. They also do not match the expected temperature well, as read by a thermometer. This plot includes cold junction compensation using a temperature sensing IC.
I have also tested them using a high-resolution power supply to simulate the thermocouple voltage. This showed similar discrepancies across the full input range, both between the thermocouple channels and to the expected value. The expected value in the below plot is the straight line, all other curves are the 11 thermocouples simulated using a power supply.
Power supply input for all 11 channels vs expected value
When calculating the difference between the highest and lowest channels it can be seen to approximate a linear slope with an offset component. The linear slope makes sense and would be due to tolerances on the resistors, which are all 1%. This was confirmed by swapping the resistors between the channels and the slope changed sign, as seen below.
Difference between highest and lowest channels
Difference between highest and lowest channels after swapping resistors
However, I am unsure what creates the offset, as this is the larger component of error. I understand that thermocouples can only achieve around +-2.5 C accuracy but I don't know where my larger errors between channels and compared to the expected value is coming from. Especially when simulating them using a power supply which means the errors are caused by my circuit, not the thermocouple itself. I am aiming for around 2-3 C of error between each thermocouple channel to the expected value.
Does anyone have any ideas for other things I could test to figure this out? I have plenty of other data and tests if you need any extra information. Any help would be greatly appreciated!