PT1000 w/voltage divider circuit

I have set up a voltage divider circuit connected to an Arduino Mego2560 at the 5V and gnd.

The PT1000 temp sensor, analog pin 3, and a 10kOhm resistor in series.

The readings I get all are in a narrow range of 840 to 880 Ohm (matches to approx 5deg F when it should have been reading (approx 1040 Ohm) approx 40 deg F.

I assume that I have an incorrect resistor, but am not sure how to determine the correct one.

I also have the same setup with an NTC 10k, B=3950 temp sensor which seems to provide reasonably accurate readings.

Can you provide some help on the appropriate resistor for the PT1000 and any other comments on the set up.


How are you measuring the resistance? You would do much better using a constant current source and measuring the voltage across the RTD, the ballast resistor method commonly used with thermistors is not too good with RTDs.

Have a look here:

I will read the paper you suggested in your 2nd response. It may take awhile to digest it.

following is pertinent piece of sketch I am currently using.:

void loop() {
int ThermPin1 = 1; // Analog input pin for 1st thermistor voltage (o/p evac tubes)
int ThermPin2 = 2; // Analog input pin for 2nd thermistor voltage (o/p hw tank)
int V1,V2 = 0; // Integer value of voltage reading
float R = 9870.0, Ro = 1000.0; // Fixed resistance in the voltage divider
float logRt1,Rt1,T1,F1,logRt2,Rt2,T2,F2 = 0.0; // T is Temp Celcius F is Temp Farenheit
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; // needed constants
float pc1 = 3.9083e-03, pc2 = -5.775e-07, pc3 = -4.1833-12; // needed constants

// collect and display reading from 1st thermistor(PT1000) (o/p evac tubes)
// Callendar-Van Dusen formula simplified
V1 = analogRead(ThermPin1); // v1 Resistance ohms
Rt1 =+(float(V1) * 1.0); // Rt1 resistance as floating point number
T1 = ((Rt1/Ro) - 1.0) / pc1; // simplified formula
F1 = ((T1 * (9.0 / 5.0)) + 32.0); //

Current actual temp where PT1000 is located is approx 8deg C which should be approx 1030 Ohm, where reading I get is 905.

Note other variables in sketch are used elsewhere in loop().

Thanks for your help.

You might try a lower value resistor, closer to the RTDs room temp resistance but watch out for self heating from too high current. Do you have another RTD for comparison?
From the look of your sketch you are way ahead of me on RTDs.

some follow up info:

PT1000 Ohm meter reading: 1140
Result of AnalogRead(Thermpin): 460 with fixed resistor 1k Ohm (Brown black red gold)
Result of AnalogRead(Thermpin): 897 with fixed resistor 10k Ohm (Brown black orange gold)
Result of AnalogRead(Thermpin): 937 with fixed resistor 2.2k Ohm (Red red orange gold)
Result of AnalogRead(Thermpin): 1108 with fixed resistor removed from circuit

circuit used:
Ard power gnd to Breadboard(BB) -row
Ard power 5v to BB +row
BB -row to row A col 30
BB +row to row A col 26
BB row A col 27 to Ard Analog in pin A1
BB row B col 30 to row B col 27 (fixed resistor)
BB row C 26 and col27 (PT1000 leads)

Arduino powered by USB port of computer; thermpin readings from serialMonitor every 15 secs

So I think I have multiple problems/questions.

  1. How do I get the thermpin reading to match the ohm meter reading for the PT1000?
  2. Why do I get the closest reading with no fixed resistor in the circuit?
  3. Given the readings I show, what would be best next guess for proper resistor?
  4. Do I have the circuit set up properly?
  5. I will work on formula for getting temp after I have a good thermpin reading. Is there any preference for basing on the Callendar-Van Dusen formula or on the Steinhart-Hart formula?

Thanks for any help on any/all of this

The problem with the voltage divider scheme is non linearity, the further the variable resistance moves away from the fixed resistance the smaller the difference becomes. I'm sure theres a simple formula to compensate, but that's over my ol' head, if some of the great math minds here would chime in I'm sure they could help with that. That's why I mentioned a constant current source to excite the RTD, if the current was fixed the voltage across the RTD would follow the resistance exactly,then the Callendar-Van Dusen formula would be usable, although, since an RTD is pretty linear to start with, it may not be needed. Constant current sources are not expensive or difficult to use, and you can roll your own with an op-amp and a couple of resistors, google "constant current source" and take a look and keep checking back till a guru comes online.
Good luck.

No Guru here, but to me the most logical way of reading would be a low voltage across the sensor to minimise self heating, and a CC source. Crooked times crooked is not always straight.
Try Arduino's stable ~1.1volt Aref, and a current that keeps the voltage across the sensor just under the board's 1.1volt Aref at the temp range you want to measure.
Use pre-read, especially with multiple sensors, and smoothing code.