Leer temperatura con un PT100 de 3 lineas

hola a todos

alguien me puede ayudar para poder leer y mostrar temperatura por Serial usando un PT100 de 3 lineas?

Comienza ayudándonos tu a nosotros informando que PT100 vas a usar, que salida tiene, si es 0-5, 0-10V o 4-20mA. Si tienes un link al producto mejor, usa tags.

Ahora si no tienes nada de eso, si no tienes electrónica y solo la PT100 entonces mira esta página.

Básicamente lo que deberías hacer es una fuente de corriente constante. Eso asegura una caida de tensión en la PT100 sin deriva de temperatura. Muchos solo pones una resistencia como en el link que te pongo mas abajo pero es para tener una indicación rápida.

Aca tenes un ejemplo del que puedes extraer la información de como afectar la lectura en volts para que leas en Grados Celcius.

También esta en Wikipedia

Gracias por responder la que tengo es

Sensor PT100 clase B Rango de -50 a 400°C Norma IEC 751 Tres hilos

la primera duda es si se puede conectar directamente al arduino con un par de resoistenacias ya que he probado con el circuito que envias con una resistencia de 150ohm pero no funciona la lectura que obtengo no cambia solo probe leyecndo la entrada A0 sin converciones ni ajustes a la lectura pero solo muestra una lectura sin variacion

tiene 2 cables rojos y uno blanco? probá esto.

aca el post http://forum.arduino.cc/index.php?topic=215788.0

Solucionado gracias a la guía de un post de otro personaje es un poco difícil la calibración del sensor pero funciona en aceptable la medida

La conexión que me envió surbyte funciona yo lo hice sin las resistencias que van a AREF para que funcione mejor la pt100 es necesario un max31865 pero para mí finalidad es aceptable con ese circuito

Gracias por atención

//Control beta lazo de temperatura con rtd pt100
//Autor: Sergio Pablo Peñalve
//catriel - Rio Negro

#include <LiquidCrystal.h>
#include <PID_v1.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint,5,0.2,0.5, DIRECT);

//metodo de calibracion
// 1° usar hielo sobre la RTD PT100 con un termometro patron,pirometro o medidor con termocupla
//medir la temperatura y obtener el valor digital
//ej 7°C equivalen ---> 389 de la conversion ADC
//2° usar agua hervida y un termometro calentar la RTD PT100 y obtener el otro punto
//por ej 40°C ---> 525 ADC
//La RTD PT100 varia la resistencia de manera lineal a la temperatura por lo que tomando dos puntos en baja temp y alta temp
//podemos generar una funcion lineal con estos puntos y transformar el valor ADC en grados C°
//otra forma es calculando la resistencia el voltaje y por regla de tres con respecto al valor ADC obtener la T°

float y1= 9.35; //9.35°C puntos de calibracion
float x1=469; //adc
float y2=30; //40 °C
float x2=492; //adc
int i;
int t1;
float acum;
float m;
float c;
float temp,te;

void setup()
{
lcd.begin(16, 2);
//analogReference(INTERNAL1V1); //arduino mega 2560
analogReference(INTERNAL); //arduino uno
Serial.begin(115200);
//Input=temp;
myPID.SetMode(AUTOMATIC);
}

void loop()
{
lcd.setCursor(0, 0);
//muestreo de señal analogica
for (i=0;i<10000;i++)
{
t1 = analogRead(1);
acum=acum+(float)t1;
}
acum=acum/10000;

//calculo de temperatura por funcion lineal
// y=m * b + c
// donde m es la pendiente
// y - b son los puntos
//c es la constante

m=pendiente(y1,x1,y2,x2);
c=constante(m,y1,x1);
temp=obt_temp(m,c,acum);
lcd.print("PV:");
lcd.print(temp);
Setpoint=obt_adc(m,c,18);
Input = acum;
myPID.Compute();
lcd.setCursor(0, 1);
lcd.print("SP:");
lcd.print(obt_temp(m,c,Setpoint));

//este es para debug se puede sacar

Serial.print("rtd e :");
Serial.println(t1);
Serial.print("setpoint");
Serial.println(Setpoint);
Serial.print("ADC ");
Serial.println(t1);
if (Output>0)
{
lcd.print(" OUT:ON ");
}
else
{
lcd.print(" OUT:OFF");
}
analogWrite(11,Output);
}

//funcion pendiente con respecto a dos puntos se acuerdan de las matematicas
// y te preguntabas para que fuck servia esto jejeje

float pendiente(float y1,float x1,float y2, float x2)
{
m=0;
float m=(y2-y1)/(x2-x1);
return m;
}
//la constante la obtengo despejando
float constante(float m,float y1,float x1)
{
c=0;
float c=y1-(m*x1);
return c;
}

//esta es la funcion lineal

float obt_temp(float m,float c,float x1)
{
float y1=(m*x1)+c;
return y1;
}

//esta es una funcion inversa le damos la temp y nos devuelve el ADC para el PID

float obt_adc(float m,float c,float y1)
{
float x1=(y1 - c)/m;
return x1;
}

Ahh claro estaba esa opción pero supuse que no la usarias. Edita tu post anterior y usa los tags por favor para insertar codigos.

buenas amigos
el sensor que yo tenco es una termocupla sensor de tres hilos pt100 pero esta me da una salida en ohmnios quisiera saber como podria hacer la escalizacion para leerla con arduino gracias

Normalmente se utiliza una resistencia en serie a la RTD (variará su resistencia de acuerdo a la temperatura a la que esté sometida. Esa variación de resistencia producirá una variación de voltaje, es ese voltaje el que leer y luego escalas. Para ello determinas tu rango de operación (valores de temperatura, luego resistencia y voltaje), con eso trabajas el escalamiento. Si tienes más dudas avísame y trataré de ayudarte

si lo utilize con una resistencia de 47 ohmnios en serie y me dio una variacion en voltaje de :

3.6v=113ohm=24 grados 4.1v=212ohm =306 grados

esta es la variacion que me dio y la verdad no se muy bien como es la escalizacion ,soy estudiante y se muy poco de arduino si me podrias ayudar te agradeceria surrender

esta es la variacion que me dio y la verdad no se muy bien como es la escalizacion ,soy estudiante y se muy poco de arduino si me podrias ayudar te agradeceria surrender

Y arduino que tiene que ver? Perdona la respuesta si se quiere hasta grosera, bramon.

Tu rango de medición es muy pobre. Tienes poco rango dinámico para el AD del arduino y por ende los valores entre 24 y 306 °C. Un deltaT = 306-24 °C = 282 °C que pretendes discernir usando una diferencia de lectura entre (4.1 -3.6)=0.5V

Con 0.5V o sea 102 pasos del AD ya que 0 a 5V son 0 a 1023 pasos del AD del ATMEGA328 quieres o pretendes leer temperatura. Mira lo que va a pasar.

Supongamos algo lineal y si mira la respuesta de una RTD el cálculo no es como lo haré pero permiteme la licencia para que me entiendas.

Dije que tendrias un DT (Variacion de temperatura) = 282 °C y un dV (variación de tensión) = 0.5V 282/0.5 = 564 °C/Volt La resolución de arduino en 0-5V es 5/1023 = 4.88mV O sea que si lees 0.5V se correspondería con 24 °C y si lees 0.5V+4.88mV =0.50488V = 504.88mV => 564 °C/Volt * 0.00488V= 2.75°C

O sea que una variación del digito menos significativo, algo común en cualquier AD te dará una variación de lectura de 2.75°C supuesto lineal (ya dije que no es asi)

Leerías 24 y al momento siguiente 26.75 y porque no 29.5°C o bien hacia abajo algo parecido.

A que quiero llegar? A que debes usar alguna electronica con operacionales o un integrado dedicado a una RTD 100 ohms para que tengas una respuesta 0-5V correspondiente al rango de temperaturas que deseas medir.

Hola, como se obtienen los puntos adc de calibración?

surbyte:

A que quiero llegar? A que debes usar alguna electronica con operacionales o un integrado dedicado a una RTD 100

el compañero no lo consigue con las 3 resistencias del esquema?

Si pero el compañero no responde desde el 07-08-2015, 05:52:05 algo que debesver cuando respondes un mensaje viejo (casi 6 meses).

es por no hacer un nuevo tema desde 0 cuando ya hay uno desarrollado.

Sabes como se consiguen los puntos adc ?

para que sirven las resistencias que van a AREF ?

'

Hola,

El circuito de lectura de una PT-100, para que arroje una medida fiable, se debe realizar mediente un puente de wheatstone y un circuito amplificador.

Ya que estamos me gustaría aclarar que una PT-100 es una RTD (resistencia variable con la temperatura) y se llama PT-100 porque es de platino y da 100ohm a 0ºC. También hay PT-1000 (1000ohm a 0ºC) y NTCs (resistencias variables negativamente según la temperatura). Estos elementos son pasivos electrícamente hablando, necesitan una fuente para convertir la variación de resistencia en una variación de voltaje. Una termocupla o termopar, es un elemento bimetálico que genera una corriente variable según la temperatura, no tiene nada que ver con las anteriores y su circuito acondicionador es completamente diferente. Estos elementos son activos eléctricamente hablando, necesitan un circuito amplificador solamente para su acondicionamiento.

Uno de los problemas de las PT-100 es como habéis mencionado que el rango de tensión para linealizar el rango de temperatura es pequeño. Vamos que en pocos milivoltios tenemos un rango grande de temperatura. Por este motivo se suele poner un circuito de amplificación a la salida del puente de wheatstone con operacionales... Además, tal y como se ha mencionado antes, hay un problema con las PT-100 y es que hay una caida de tensión variable según la temperatura y la longitud en los cables en la propia PT-100, lo que hace que a veces se mida incorrectamente... Por esto se suele usar un circuito a 3 o 4 hilos en puente (cuanto mayor distancia entre el circuito sensor y la sonda mayores problemas), de tal forma que la caída de tensión en los cables se anula en el propio puente. Y como también se ha mencionado, es preferible alimentar con una fuente de corriente y no de voltaje para evitar precisamente estos problemas.

Resumiendo, el circuito de acondicionamiento de señal de una PT-100, para una respuesta fiable, es complejo. Yo me preguntaría, ¿es necesario usar una PT-100 en mi aplicación? Si lo que queréis es medir temperaturas "normales" hay instrumentos mucho más fáciles de integrar en nuestro arduino (LM35, DHT11...) que nos dan la medida en una escala 0-5v o por comunicación evitando circuitos complejos y con una resolución bastante aceptable en la mayoría de los casos... El uso de las PT-100 está muy extendido en la industria pero a nivel de aplicaciones "caseras" se pueden usar soluciones más sencillas, me parece absurdo usar una PT-100 con un simple divisor de tensión donde la medida va a ser poco fiable pudiendo usar un LM35.

Si la idea es hacer un sistema industrial, podéis comprar la PT-100 con un sensor con salida 0-5v (que los hay aunque son caros) y evitaros el diseño del circuito acondicionador...

Perdón por el rollo.

Por cierto, he recordado haber hecho un circuito hace tiempo con este fin… Es un circuito muy casero pero bueno, lo adjunto, es un excel con el circuito simulado en el proteus y los cálculos donde se ve el circuito acondicionador y las desviaciones de temperatura… Creo que también está el programa del arduino para simular en proteus…

Circuito PT100.zip (73.1 KB)

hola carmamezo, lo primero gracias por contestar.

El rango de temperatura con el que voy a trabajar es de 0 a 200 grados, los que comentas arriba son de 0 a 135 y de 0 a 50.

No se si conoces alguno como los de arriaba con este rango.

Por otro lado me he agenciado una pt100 y ya es por mera curiosidad, ya sabes....

Gracias.

PD: en tu proyecto por lo que veo temperatura maxima son 130 grados. Creo que con llegar a 180 me bastria, tampoco necesito mucha precisión, con un +- 5 grados me valdría.

Hola,

A mi sólo me interesaba un rango de 0-100ºC y por eso en su día hice ese circuito… Puedes cambiar las resistencias del circuito para conseguir una tensión distinta de salida y poder tener un mayor rango de temperatura.
El operacional multiplica por 33, si pones resistencias (R13 y R15) de 2M en vez de 3,3M el operacional amplificaría por 20, y te daría más juego para resistencias mayores (mayores temperaturas, mayores voltajes)… Aunque perderías algo de resolución y hay una desviación dependiente de la temperatura…
Te recomiendo que uses un simulador de circuitos como el Proteus para ver cómo se comporta tu circuito… Todo esto es una simulación, luego habría que ver cómo se comporta en la realidad…
Si te fijas hay un potenciómetro para ajustar la temperatura, la idea es tocar ese potenciometro con una tempratura conocida hasta que el arduino mida lo mismo que la temperatura y a partir de ahí no tocarlo más… Los cálculos a realizar en el arduino serían los mismos que los que hay en la tabla excel…

Te adjunto el excel modificado, como ves la dispersión aumenta según sube la temperatura… Pero mantiene el nivel de ±5ºC que buscas.

Calculos.zip (66 KB)

RV1 es el potenciometro? porque no esta en paralelo con la pt100?