Thermistor basic question

I want to see if I understand the basics of reading a thermistor. Provided the voltage I send is a constant 3.3V and the thermistor is at it’s constant per the spec sheet, I should see a reading of 65535. Once the resistance increases as the temperature increases I should see the number get lower.

Or am I completely lost. (my guess is I am lost).

Have seen Toms thermistor

Yeah I have been through that a couple of times but just realized my potential problem. That instructable is a negative-temperature-coefficient thermistor which is the opposite of the RTD I am working with.

Ok I’s sure someone has used RTD? they might be able to help.

From memory you need to create a resistor bridge e.g 3 resistors and the RTD

Not sure how much this helps, but I found it this weekend and thought it was a good write-up.
http://openenergymonitor.org/emon/buildingblocks/rtd-temperature-sensing

That’s pretty helpful @solarishot! One thing that I don’t get is why they use a 1K Ohm resistor on a 100Ohm RTD. Perhaps that’s why I get erratic readings occasionally.

Not sure I can help much on this for another few days or so. I just started to read in depth about RTD’s this weekend but have not assembled any circuits. I will be getting to this soon though…for my current temperature monitor project I need to read pt1000 rtd’s which seem to be a standard for solar hot water monitoring.

Ahh cool! I will follow you and post anything I have learned thus far. I think my code might be a bit off but I can make it work around 20% of the time.

`// assign hardware.pinA and hardware.pinB to a global variable
therm <- hardware.pinA;
// therm2 <- hardware.pinB;
// configure pin5 to be an ANALOG_IN
therm.configure(ANALOG_IN);
// therm2.configure(ANALOG_IN);

// these constants are particular to the thermistor we’re using
// check your datasheet for what values you should be using
// b_therm value should be adjusted to normalize your RTD to 0C
const a_therm = 0.00385;
const b_therm = -5;

// the resistor in the circuit (100Ω)
const R2 = 100.0;

//set relay variables to off
// relaystrikeState <- false;
relaymashstate <- false;

function MashTemp_C() {
local Vin = hardware.voltage();

local Vout = Vin * therm.read() / 65535.0;
local R_Therm = (R2*Vin / Vout) - (R2-b_therm);

// local mashtemp_C = (R_Therm/R2 - 1) / a_therm
local mashtemp_C = (R_Therm/R2 - 1) / a_therm
return mashtemp_C;
}`

Then again we could just google RTD breakout boards and find these:

http://www.playingwithfusion.com/productview.php?pdid=25
http://www.playingwithfusion.com/productview.php?pdid=26

It looks like they are using the MIT open license for the boards.

http://www.playingwithfusion.com/include/getfile.php?fileid=7021

@theorem, Cool finds. Thanks!

Sorry I’m not more help today. The priority right now is making sure I have a handle on 50’+ runs of cat 5 cable for reading strings of ds18b20 sensors with the 1-wire code posted as an electric imp tutorial recently. It’s going great. I’m up to my eyeballs with cat 5 trimmings.

The rush is that I installed a huge solar hot water array this week which is optimized for winter heating (hydronic distribution). Since it’s summer, she’s gonna run hot. Now that I have ds18b20 running, I can run lines and read temps at multiple points along the collector array, down to the pump station and then on to the two storage tanks (200+ gallons of water). I have done many things like this before, but I’m very excited since its the first time I’m using the imp and ds18b20 with a long bus line to access areas where I can’t (or don’t want) to place a separate imp device.

@solarishot Fun project! Hey it’s cool, the breakout keeps me from having to keep debugging my horrible code attempts :slight_smile: