El sensor PT100 o sensor de temperatura es un RTD, esto es una resistencia variable en función a la temperatura. Este sensor es compatible con cualquier sistema digital con ADC, como Arduino o Micrococontroladores. Usualmente, la manera más sencilla de medir la temperatura con este sensor es mediante un divisor de voltaje. El sensor PT100 tiene una respuesta casi lineal. La variación de la resistencia depende de la dispersión de los electrones en el metal en función a la temperatura. En este caso el sensor PT100 es de platino, material que tiene alta linealidad. Este sensor lo puedes comprar en la tienda virtual de HETPRO.

En primer lugar, debido a las cualidades resistivas de este sensor PT100 RTD de temperatura, se puede usar en varias configuraciones. La configuración para este sensor de temperatura mas sencilla es la del divisor de voltaje, que es la que se utilizará aquí. Sin embargo, para aplicaciones de mayor precisión se recomiendo usar configuraciones de amplificador operacional o puente de Wheatstone. A continuación podemos observar la configuración de el divisor implementado para el sensor RTD. En este caso el pin de 5V es el del Arduino y el A0 es el canal analógico 0 del Arduino.
Para empezar, si se requiere analizar el comportamiento de este divisor podemos determinar el voltaje de salida que va al nodo A0 con la siguiente ecuación.
De cualquier manera, el sistema se encarga de esto, más adelante explicaremos a detalle como es que podemos tomar las lecturas. Sin considerar realmente el voltaje generado por el divisor.
Conexiones físicas del sensor PT100 de temperatura
Como se puede observar en las siguientes figura, las conexiones se hicieron solo sobre el Arduino.


Caracterización del sensor de temperatura PT100
Primeramente, es importante considerar que necesitamos un sistema calibrado que mida temperatura para tomar como referencia. Puesto que sin este sistema, es posible que estemos leyendo la información sin posibilidad de corrección de desviación de error. En nuestro caso, hicimos uso de un Termómetro infrarrojo MS6520A de Mastech, con este medimos las temperaturas de nuestras muestras. Se puede usar un termómetro de mercurio o digital, sin ningún problema. Es posible que si tienes otro sensor ya calibrado, puedes usarlo, como el LM35, el DHT11, o tal vez Termopar.
Para empezar, se llenaron dos vasos de agua, uno con agua caliente y otro con agua fria. Esto para tomar dos puntos de referencia. Ten en cuenta que lo más recomendable seria tomar los puntos extremos del sistema que se requiera medir. Puede ser 0°C y 100°C. Para este caso, por prácticidad se tomo 22°C (temperatura ambiente) y 67°C (El agua para el cafe). Toma en cuenta que al tener dos puntos podemos determinar la pendiente de el sistema. Para esto vamos a sacar 2 punto de temperatura y tomar los datos de voltaje (convertidos a numero decimal capturado por el ADC). Los puntos de temperatura serán Y1 y Y2, y los puntos de ADC serán X1 y X2. La pendiente la llamaremos m. Entonces, nuestro valor dependiente serán las Y’s, y los independientes (que leemos del ADC) son las X’s.
Ecuaciones para el código de Arduino del sensor PT100
En primer lugar, seguimos las siguientes ecuaciones.
Además. consideramos las mediciones de los 2 puntos para determinar la pendiente m. OJO observar la linea 80 del código de Arduino, que es donde se determina esta pendiente. Una vez, con el valor de m y con los dos puntos de referencia podemos considerar ya la determinación de una temperatura «Y» en función de un valor de ADC cualquiera «X». OJO ver la linea 25 del código.
Como resultado, se presentan las imágenes de las pruebas realizadas.




Código de Arduino para el sensor PT100 de temperatura
En conclusión se presenta el código implementado para las pruebas de este tutorial. Cabe señalar para finalizar, que el mismo asume ya los datos presentados con anterioridad. La metodología de uso para el siguiente código es la siguiente.
1) Tener listas las muestras de referencia térmicas. Considerar que la temperatura varia de manera constante, tratar de mantener las temperaturas de manera estable.
2) Modificar las variables «temperatura1» y «temperatura2» de el código. Lineas 7 y 8. Poner en °C las temperaturas que tiene en sus muestras. Poner la mayor en el la variable 1.
3) Cargar el programa en Arduino y abrir la terminal serial. Seleccionar «S» y dar Enter.
4) Poner el sensor de temperatura PT100 en contacto con el primer elemento de temperatura y esperar un tiempo. Considere que el sensor tarda un tiempo en estabilizar sus lecturas (puede monitorear esto con un multimetro en la terminal A0 o simplemente esperar un par de minutos).
5) Enviar cualquier carácter a la terminal serial y dar Enter. Esto iniciara un proceso de lectura de 100 datos y calculará un promedio. Estos datos los enviara el Arduino para visualizar el valor del ADC correspondiente a esa temperatura. OJO se puede ver en la linea 5 de datos de salida.
6) Retirar el sensor RTD de la muestra y ponerlo en la otra muestra. Recuerde que tarda un tiempo en estabilizarse. Una vez estable o esperando un par de minutos, damos otra vez en Enter y esperamos el nuevo dato. OJO se puede ver en la linea 9 del archivo de datos de salida.
7) Con esto, el sistema tiene suficientes datos para calcular la temperatura y podemos iniciar el proceso de lectura enviando otro carácter.
Salida de la terminal para código de Arduino y sensor PT100
Finalmente, ejemplo de los datos de salida para una corrida de prueba.
ATENCIÓN
Por ultimo, si te gusto este tutorial, favor de dejar un comentario, lo agradeceremos mucho. Por lo tanto te recomendamos visitar nuestra pagina principal para que veas los nuevos tutoriales en HETPRO. Tenemos tutoriales de Arduino, PCBs, programación y muchos más. En conclusión, esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional.
Autor: Dr: Hector Hugo Torres Ortega
El Pt100 es de 2 hilos ?, si fuera asi se puede usar el de 3 hilos y como?
Gracias:D
Felipe, el tercer cable es extra, lo puedes dejar desconectado sin ningún problema. Saludos.
Cual es la vida útil para un sensor de temperatura RTD ( PT-100 ), en que parte de la ficha técnica lo indica?
Gonzalo, solo de larga duración, no se tiene un estimado exacto.
BUENOS DIAS, muy buen aporte, lo colare en prectica e informare resultados
tienes algún correo para pedirte un poco mas de información? sobre la conexión del pt100
Hola, ¿como determinas el valor de la resistencia R1 que sea 150 ohm?
Pablo Enero ,13,2019
Hola ,necesito saber como incorporar en libreria arduino control de temperatura pt 100,para programar
Buenas.
Puede el arduino medir y visualizar mas de 6 sensores a la vez?
Es aconsejable usar un PLC para la medicion y visualizacion de valores si son muchos sensores, o con el arduino es suficiente.
Si pudieran dejar un correo de contacto para recibir ayuda lo agradecería.
jon, 6 sensores es viable con Arduino sin problemas. Te paso un correo de contacto contacto@hetpro.com.mx
HOLA hice el mismo montaje pero cuando caliento el sensor muestra que se enfría alguna idea?
Puede ser que el RTD que tengas sea de coeficiente negativo. Para esto puedes solo sacar el complemento, por ejemplo valor máximo menos valor actual, esto te da en terminos numericos la respuesta deseada.
¿Está bien el código? A mi no me funciona
Si, que es lo que no te funciona?
Hola buenas tardes,
El código está mal, las variables de temperatura1, temperatura2, sensorValue1 y sensorValue2 se deben inicializar como float, en caso contrario la desviación que se obtiene de los datos reales es de más de 3ºC en algunos casos, tal y como se puede comprobar si se hacen los cálculos a mano con los mismos datos que obtienes de tus medidas. Por ejemplificar, tu código calcula una pendiente de 1.00, en vez de 0.7826.
Además, puedes realizar una comprobación rápida utilizando la función map la cual no te dará la pendiente, pero podrás comprobar que los cálculos no son correctos, además de darte un valor más exacto:
tempF = map(sensorValue, temperatura1, temperatura2, sensorValue1, sensorValue2);
Así que, como conclusión, utiliza las variables de tipo float en vez de int para que al hacer los cálculos los dígitos no se redondeen y comprueba tus algoritmos a mano.
Espero haber ayudado,
Un saludo
Corrección:
tempF = map(sensorValue, sensorValue1, sensorValue2, temperatura1, temperatura2);
Hola. Gracias por el tutorial. ¿Estoy esperando que me llegue el pt100 para probarlo con una arduino mega. ¿Se podria utilizar una salida de 3.3V en vez de la de 5V? (tengo las de 5V muy ocupadas). Supongo que los datos variarian, pero de la misma forma que se pueden aplicar las ecuaciones con temperaturas parecidas pero no iguales, supongo que lo mismo pasaria con el voltaje… ¿No?… ¿saldrian unos datos validos pinchando la pata de la resistencia a 3.3V en vez de a 5V?. Gracias.
¿Como puedo modificar el código para meter un segundo Pt100 al mismo tiempo y tener dos temperaturas?