This post is part EE, part PIC. I've been trying to get a 12f675 to read and linearize a thermocouple.The setup is as follows: A LM35 directly connected to the PIC for Cold Junction Compensation. A Type 'K' Thermocouple connected to the input amp The input amp is the same 2 OPAMP amp as in AN844 with a combined Gain of 240 (10 * 24). Obviously, the amp's output is connected to the Pic as well ;-) 2 'calibrated' Temperature controllers for reference. of 'J' and 'K' type Thermocouples. All 3 thermocouples hooked up to a 500w heater. The 12f675 talks to a 16f28 which has got RS232 and a 4 digit seven seg display. The only difference is that I've used MCP602 instead MCP61x used in AN844. MCP602 has a max offset voltage of 2mv, while the newer MCP612 has only 0.15mv. But I'm trimming out the offest from the ADC reading in software. And the temperature of the board is pretty much constant, so I don't think the offset can vary. Now for the software part. I tried using the table based approach used in AN844. The when the temperature is on the rise, the reading would fall for about 10 degrees and then rise up again. I initially suspected an analog Problem, but after a little scoping around, I found that it was not. It has got something to do with the twin table lookups in AN844. Has anyone tried the technique described in this appnote succesfully? I tried assuming the thermocouple voltage output to be a constant 41 muV per Degree(as in MAX6675 thermocouple ADCs).Initially, untill about 150 degrees, but when the temperature rose up to 250 degrees, the errors between the the calibrated temp controllers was 30 degrees. The next approach I'm trying is building a 50 point muV to Temperature table With a python script and putting it into the pic. Then, multiply the adc_reading To get the TC input in mu Volts and interpolate the results from the table, Finally adding the LM35s temperature reading to the resulting temperature. If that fails, I'll use a bigger pic(16f873) and try using floating point arithmetic to fit the curve (And I believe floats are a big pain in assebler). Is there something very wrong I'm doing here ? Any bits of code floating around ? (Googling didn't turn up anything significant) ASM, C, BASIC whatever I can comprehend (not Forth :) Thanks, Jeethu Rao -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.