Calibrating a PT1000 RTD sensor

Hello,

I am trying to calibrate a PT1000 for a range of 0-200C. For this I am using the schematic like in the picture below.

When trying to simulate the resistance at 200C it looks like the voltage gets capped at 3.59V and doesn't go beyond that value, so I am not able to achieve the needed voltage for this temperature.

const int PT1000_PIN = A0;
const float vt_factor = 1.85; // 1.88
const float offset = -22.4; // 0

float temp_c;

void setup() {
Serial.begin(9600);
}

void loop() {
int sensorvalue = analogRead(PT1000_PIN);
float voltage = sensorvalue * (5.0 / 1023.0);
temp_c = (((voltage * 100) / vt_factor) + offset);
Serial.print("Volt: ");
Serial.print(voltage);
Serial.print(" V Temp: ");
Serial.println(temp_c, 1);
delay(500);
}

Check the LM358 data sheet. It is not a rail to rail amplifier, and the output voltage will typically not exceed Vcc-1.5V.

I'm actually completely new to this and I have just followed this guide I have found only using a LM358. Is there anything else I could do to achieve 200C with basic stuff I got on hand right now?

This is not a simple problem, and the approach you are trying to follow is pretty much all wrong. You happened across a more or less worthless tutorial.

The PT1000 is an expensive sensor, capable of very accurate measurements. If you want to take full advantage of it, the best approach is to buy a PT1000 interface module.

See for example the Adafruit PT1000 sensor amplifier and the associated tutorial.

On the other hand, if you just want something to work, make a voltage divider with a precision 1K resistor and the PT1000, as shown below.

At 0 Celsius, R (PT1000) = 1000.0 Ohms, Vout = 2.500 V, ADC value = 512
at 200 Celsius, R (PT1000) =1758.6 Ohms, Vout = 3.187 V, ADC value = 653

Capture

Somebody suggested using this schematic


and amplifying it by 4 times using
ScFhh

It seems like it works as expected, at least the voltages read. The issue I'm facing right now is actually reading the correct temperatures. For a 1000 ohm resistor I got 1.80 V and for 1758 ohm (resistance at 200C) I got 2.98 V.
My logic is T = (((voltage * 100) / vt_factor) + offset). Where the vt_factor is 2.98V-1.80V and the offset is currently 0. Doing this it gets me T=152.8C at 1000ohm and T=252.8C at 1758ohm.
I have expected the temperature at 1758 ohm to be 352.8C, is it something I'm missing?

What I am missing is a clear and complete explanation of what you are actually doing.

The approach outlined in your last post will work, if done correctly.

I am essentially just trying to measure temperatures between 0-200C using a Nano + several PT1000's.
Not sure what am I doing wrong and why the difference between the temperatures at 1000 ohm and 1758 ohm is only 100C, instead of the expected 200C.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.