Ham, here's 2 emails from the guy who helped me with this:

#1:

-----------

The spec says the MCP9700 output rises 10mV per ° C where 0° is scaled up to 500 mV so if 500mv is 0° C then 510mV is 1°C. 520mV is 2°C etc,

So at say only 240°F you have 115.55°C which is 115.555* 0.010V + 0.500V = you have 1.6555 volts The Xbee outputs a maximum of 10 bit value 1023 (0x3FF) at a max voltage of 1.2V so as you concluded you have to cut down the output of the active thermistor.

We discussed cutting it in half and that would give you the ability to read up to 2.4 volts which is about 374°F But the device can only measure up to 150°C or 302°F At that temp it only outputs 2 Volts.

So to go from 2 volts to 1.2 you need a divider that outputs 0.6X the input Since the MCP9700/9700A and MCP9701/9701A is designed to source/sink 100 μA (max.) we also need to keep the total resistance to the 2.0V above 20K

So I have plugged in the Input voltage at 2.0 Volts and output at 1.2V starting with R1 at the popular 10,000 (10K) value in this online calculator

http://www.raltron.com/cust/tools/voltage_divider.asp It calculates that R2 is 15000 so

R1 = 10K

R2 = 15K

The parallel impedance of those two is less than 10K which meets the Xbees requirement for the driving output impedance of the voltage source. Now that we have added all these resistors I would suggest paralleling a small capacitor of say 0.1 uF since you will probably now have some noise due to the higher resistances that you don’t have going straight in. .

So now a reading of 1023 (0x3FF) = about 302°F which is full scale Xbee input. I should have those and I will bring them in next time I swing by. Most likely this week.

Sincerely,

Albert R

------------------

#2

------------

Jaymer,

I am sure the way you do the math will work absolutely perfectly fine but I am bad at explaining things without a whiteboard or pen and pencil. Here is the way I would have approached the conversion problem. (bear in mind I usually do real time stuff so I try to simplify the math the processor does by doing most of the conversions ahead of time and not on a sample by sample basis.)

given,

1023 (0x3FF) = 150° C = 302° F = 2 volts

0 (0x000) = -50° C = -58° F = 0 volts

that’s a span of 360° F =302 – (-58) over 1023 units so each unit represents 360/1023 or 0.35190615835777126099706744868035 degrees F per unit starting at a base of -58° F (see bits per millivolt becomes absorbed in the definitions)

so the simple equation is:

temp_in_farenheight = (xbee_value*0.35191) - 58

when xbee_value =1023; temp_in_farenheight = 302° F

when xbee_value = 0; temp_in_farenheight = -58° F

everything in between is linear

glad it’s working for you.

Albert