Hay muchas opciones de sensores de temperatura para utilizar cuando se detecta la temperatura ambiente con Arduino.
Puede utilizar sensores NTC/PTC, termopares o RTD. Cuando se necesita la mayor precisión posible, los sensores RTD son la elección unánime.
Puede utilizar el CI MAX31865 para interconectar sensores RTD como PT100 o PT1000. Usted encontrará los módulos MAX31865 fácilmente disponibles en línea..
Este artículo nos enseñará cómo utilizar un IC MAX31865 con el sensor RTD para leer la temperatura.
Entenderemos los fundamentos del CI y las diferentes configuraciones posibles para los sensores RTD.
En las siguientes secciones, presentaré los diagramas de conexión, el código Arduino para el sensor RTD, y más.
En la última sección del artículo, encontrará las respuestas a las preguntas más frecuentes sobre el CI MAX31865 y los sensores RTD.
Comencemos.
Componentes necesarios para construir el proyecto del sensor RTD Arduino MAX31865
Componentes de hardware
- Alambre Dupont x 1 juego
- Cable USB Arduino (para alimentar Arduino y programar) x 1
Software
Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.
Fundamentos del sensor MAX31865 RTD
En esta sección, veremos los fundamentos de la detección de RTD y el CI MAX31865, que es un convertidor de resistencia a digital utilizado principalmente con los sensores RTD.
El CI MAX31865 mide la resistencia y la convierte en un valor digital equivalente.
El CI también puede informar si la condición del sensor es abierta o de cortocircuito.
Estas son las principales características del CI de temperatura MAX31865:
- Maneja sensores PT100 a PT1000.
- Simplifica el diseño del circuito y reduce el tiempo de desarrollo del proyecto.
- Admite sensores RTD de 2, 3 y 4 hilos.
- La resolución ADC de 15 bits ayuda a conseguir la mejor precisión.
- El tiempo máximo de conversión es de 21 ms.
La siguiente imagen muestra las conexiones típicas necesarias.
El CI MAX31865 viene en dos paquetes. Los nombres de los pines y las descripciones se proporcionan en la tabla siguiente.
Nombre de la clavija | Descripción de la clavija |
BIAS | Salida de tensión de polarización (VBIAS) |
REFIN+ | Entrada de tensión de referencia positiva. Conectar a BIAS. Conecte la resistencia de referencia entre REFIN+ y REFIN-. |
REFIN- | Entrada de tensión de referencia negativa. Conecte la resistencia de referencia entre REFIN+ y REFIN-. |
ISENSOR | Lado bajo de RREF. Conectar a REFIN-. |
FUERZA+ | Accionamiento de RTD del lado alto. Conéctelo a FORCE2 cuando utilice la configuración de conexión de 3 hilos. Protegido a ±45V. |
FUERZA2 | Entrada positiva utilizada sólo en la conexión a 3 hilos. En la configuración de conexión a 3 hilos, conectar a FUERZA+. En la configuración de conexión a 2 ó 4 hilos, conecte a tierra. Protegida a ±45V. |
RTDIN+ | Entrada de RTD positiva. Protegida a ±45V. |
RTDIN- | Entrada de RTD negativa. Protegida a ±45V. |
FUERZA- | Retorno de la RTD por el lado bajo. Protegido a ±45V. |
GND2 | Tierra analógica. Conectar a GND1. |
SDI | Entrada de datos en serie |
SCLK | Entrada de reloj de datos en serie |
CS | Selección de chip activa-baja. Poner CS bajo para habilitar la interfaz serie. |
SDO | Salida de datos en serie |
DGND | Tierra digital |
GND1 | Tierra analógica. Conectar a GND2. |
N.C. | No conectar |
DRDY | Salida activa-baja, push-pull, de datos listos. DRDY se pone a nivel bajo cuando hay un nuevo resultado de conversión en el registro de datos. Cuando se produce una operación de lectura de un registro de datos de resistencia de la RTD, DRDY vuelve a ser alto. |
DVDD | Entrada de tensión de alimentación digital. Conectar a una fuente de alimentación de 3,3V. Pasar a DGND con un condensador de bypass de 0,1µF. |
VDD | Entrada de tensión de alimentación analógica. Conectar a una fuente de alimentación de 3,3V. Pasar a GND1 con un condensador de bypass de 0,1µF. |
EP | Almohadilla expuesta (lado inferior del paquete). Conectar a GND1. Se aplica sólo al paquete TQFN. |
El código de Arduino leerá los registros para obtener el valor de la temperatura y el mensaje de estado del sensor.
La siguiente tabla resume los detalles de los nombres de los registros y la dirección correspondiente de los mismos:
NOMBRE DEL REGISTRO | DIRECCIÓN DE LECTURA (HEX) | DIRECCIÓN DE ESCRITURA (HEX) | POR EL ESTADO | LEER / ESCRIBIR |
Configuración | 00h | 80h | 00h | R/W |
RTD MSBs | 01h | - | 00h | R |
RTD LSBs | 02h | - | 00h | R |
Umbral de fallo alto MSB | 03h | 83h | FFh | R/W |
Umbral de fallo alto LSB | 04h | 84h | FFh | R/W |
Umbral de fallo bajo MSB | 05h | 85h | 00h | R/W |
Umbral de fallo bajo LSB | 06h | 86h | 00h | R/W |
Estado de la avería | 07h | - | 00h | R |
La ecuación que aparece a continuación se conoce como Ecuación de Callender-Van Dusen. Puedes utilizar la ecuación para convertir la resistencia de entrada.
La siguiente ecuación es más sencilla y es válida desde 0 °C s hasta 660 °C.
Donde
A = 3,9083 x 10-3
B = -5,775x 10-7
C = -4,183 x 10-12
Los sensores RTD vienen en muchas opciones. Las tres opciones se presentan en la imagen siguiente.
En el caso de la opción de 2 hilos, no se puede separar la resistencia del cable de la resistencia del elemento PT100.
Por lo tanto, tendrá un error que no podrá eliminar de las lecturas.
En el caso de la opción de 3 hilos, se puede anular la resistencia del hilo conductor y obtener resultados cercanos a los ideales. En este caso, se supone que la resistencia de los cables coincide.
Las configuraciones de 4 hilos son las más caras pero proporcionan una precisión superior a las otras dos.
La resistencia de la RTD se detecta sin el efecto secundario de la resistencia del cable.
En la siguiente sección, seguiremos la guía de conexión paso a paso para completar el cableado necesario entre Arduino UNO y el IC MAX31865.
Instrucciones paso a paso para conectar el sensor RTD MAX31865 con Arduino UNO
En esta sección, vamos a construir un proyecto utilizando Arduino UNO y el sensor RTD MAX31865.
Cubriré las conexiones de hardware y te proporcionaré también algún código de ejemplo.
¿Cómo conectar el sensor RTD MAX31865 al Arduino UNO?
A continuación se muestra la guía de conexión paso a paso para completar el Arduino y la resistencia a la interfaz del sensor de temperatura IC MAX31865.
En este proyecto, se conectará el IC MAX31865 al Arduino UNO a través del protocolo SPI.
Paso 1: Empezar con las conexiones GND
Puedes elegir cualquier pin GND en el Arduino para completar las conexiones GND. Es una buena práctica conectar primero los pines GND.
Paso 2: Conectar el pin SCLK
Conecta el pin CLK del módulo MAX31865 al pin 13 del Arduino. También puedes conectar el pin CLK a otros pines GPIO del Arduino UNO.
Por favor, no olvides actualizar el sketch de Arduino.
Paso 3: Conectar el pin SDO.
Conecta el pin SDO del módulo MAX31865 al pin 12 del Arduino.
Paso 4: Conecte la clavija SDI.
Conecta el pin SDI del módulo MAX31865 al pin 11 del Arduino.
Paso 5: Conecte la clavija CS.
Conecta el pin CS del módulo MAX31865 al pin 10 del Arduino.
También puedes conectar los pines relacionados con SPI a otros pines GPIO del Arduino UNO. Por favor, no olvides actualizar el sketch de Arduino.
Paso 6: Conecte la clavija de alimentación.
Conecta el pin VIN del módulo sensor MAX31865 RTD al Arduino UNO.
Conecte el sensor RTD a los conectores de los terminales proporcionados. Siga la etiqueta proporcionada en la placa.
¡Enhorabuena! Has completado todas las conexiones esenciales necesarias para la interfaz entre el Arduino y el módulo sensor MAX31865 RTD.
Ejemplo de código Arduino para el proyecto del sensor MAX31865 RTD
En esta sección, encontrarás el sketch de Arduino necesario para construir un proyecto básico de detección de temperatura utilizando el sensor RTD MAX31865.
Utilizaremos la biblioteca de Adafruit para probar nuestro proyecto. Si la biblioteca todavía necesita ser instalada, siga los pasos siguientes para instalarla.
Vaya a Herramientas → Gestionar biblioteca → Buscar MAX81365
Haga clic en Instalar. Si aparece un aviso pidiendo que se instalen bibliotecas de dependencia adicionales, diga que sí.
El código completo de Arduino para el CI MAX31865
#include "Adafruit_MAX31865.h" // Use software SPI: CS, DI, DO, CLK Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13); // use hardware SPI, just pass in the CS pin //Adafruit_MAX31865 thermo = Adafruit_MAX31865(10); // The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000 #define RREF 430.0 // The 'nominal' 0-degrees-C resistance of the sensor // 100.0 for PT100, 1000.0 for PT1000 #define RNOMINAL 100.0 void setup() { Serial.begin(115200); Serial.println("Adafruit MAX31865 PT100 Sensor Test!"); thermo.begin(MAX31865_3WIRE); // set to 2WIRE or 4WIRE as necessary } void loop() { uint16_t rtd = thermo.readRTD(); Serial.print("RTD value: "); Serial.println(rtd); float ratio = rtd; ratio /= 32768; Serial.print("Ratio = "); Serial.println(ratio,8); Serial.print("Resistance = "); Serial.println(RREF*ratio,8); Serial.print("Temperature = "); Serial.println(thermo.temperature(RNOMINAL, RREF)); // Check and print any faults uint8_t fault = thermo.readFault(); if (fault) { Serial.print("Fault 0x"); Serial.println(fault, HEX); if (fault & MAX31865_FAULT_HIGHTHRESH) { Serial.println("RTD High Threshold"); } if (fault & MAX31865_FAULT_LOWTHRESH) { Serial.println("RTD Low Threshold"); } if (fault & MAX31865_FAULT_REFINLOW) { Serial.println("REFIN- > 0.85 x Bias"); } if (fault & MAX31865_FAULT_REFINHIGH) { Serial.println("REFIN- < 0.85 x Bias - FORCE- open"); } if (fault & MAX31865_FAULT_RTDINLOW) { Serial.println("RTDIN- < 0.85 x Bias - FORCE- open"); } if (fault & MAX31865_FAULT_OVUV) { Serial.println("Under/Over voltage"); } thermo.clearFault(); } Serial.println(); delay(1000); }
Las líneas de abajo establecen los pines SPI del software. Si tienes que conectar los pines SPI a otros pines de Arduino UNO, por favor, cambia la línea de abajo en consecuencia.
// Use software SPI: CS, DI, DO, CLK Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
Si está usando PT100, mantenga las líneas de abajo intactas. Si está utilizando PT1000, actualice RREF a 4300 y RNOMINAL a 1000.
// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000 #define RREF 430.0 // The 'nominal' 0-degrees-C resistance of the sensor // 100.0 for PT100, 1000.0 for PT1000 #define RNOMINAL 100.0
Si las conexiones y la programación fueron exitosas, encontrará el registro en la terminal serial similar al que se muestra a continuación. Se utiliza un sensor de tipo PT100.
Preguntas frecuentes sobre el sensor RTD MAX31865 y los proyectos Arduino
He incluido una lista de las preguntas más frecuentes sobre los proyectos construidos con Arduino y el convertidor de resistencia a digital IC MAX31865.
Si tienes alguna otra pregunta relacionada con el sensor RTD MAX31865, por favor, publícala en la sección de comentarios.
Estaré encantado de responder a ellas.
1. ¿Para qué se utiliza un sensor RTD?
Se utiliza un sensor RTD para convertir la resistencia en una tensión. El IC MAX31865 convierte el valor de la resistencia en un voltaje que un Arduino UNO puede procesar.
RTD son las siglas de Resistor Temperature Detector. Cuando la temperatura cambia, la resistencia también cambia.
El sensor RTD necesita ICs dedicados como el MAX31865 para proporcionar resultados útiles.
En este artículo, hemos cubierto todos los aspectos necesarios para construir un proyecto de sensor RTD utilizando el IC MAX31865.
2. ¿Qué significa PT100 en RTD?
En las aplicaciones de sensores RTD, el tipo de material más utilizado es el PT100. El PT100 es una fina tira de platino.
La resistencia de la tira a 0 ℃ es de 100 ohmios. De ahí el nombre PT100.
PT se refiere al hecho de que el sensor está compuesto por material de platino. 100 se refiere al hecho de que la resistencia, cuando se mide, será de 100 ohmios a 0 ℃.
3. ¿Puede la RTD medir la temperatura?
Un RTD es el sensor de temperatura más utilizado cuando la precisión es la prioridad.
Los sensores RTD proporcionan la mejor precisión, estabilidad y repetibilidad.
Por ello, los sensores RTD se utilizan en aplicaciones industriales y científicas.
4. ¿Cuál es la diferencia entre las sondas RTD PT100 y PT1000?
Tanto la sonda PT100 como la PT1000 son sensores de resistencia a la temperatura. La resistencia del PT1000 será de 1000 Ohms a 0 ℃, mientras que el PT100 medirá la resistencia de 100 Ohms a 0 ℃.
El PT1000 es más económico que el PT100 debido a su mayor resistencia y a la menor demanda de la cadena de procesamiento de señales.
5. ¿Por qué los RTD tienen tres cables?
También encontrará RTDs con opciones de 2, 3 y 4 hilos. Los RTD de dos hilos no son precisos porque las conexiones de los cables influyen en la lectura de la tensión.
Cada conexión de plomo tendrá una resistencia finita.
Por lo tanto, añadirá otro cable de la misma longitud que ayudará a compensar el error introducido debido a la resistencia del cable.
Esto se llama un sensor RTD de 3 hilos.
La solución de cuatro hilos es la mejor de todas las versiones. Los RTD de cuatro hilos producirán las lecturas más precisas, ya que la inexactitud de la resistencia del cable se compensa al 100%.
Conclusión
En este artículo, repasamos el principio básico de funcionamiento, los tipos y las configuraciones de cableado del sensor RTD y la interfaz MAX31865.
Cubrimos la guía de conexión del MAX31865 y el Arduino UNO y los ejemplos de código de Arduino para verificar las conexiones.
Por favor, comparta las aplicaciones que piensa utilizar para los sensores RTD.
MAX31865 es un IC versátil que utiliza sensores RTD con Arduino. Me encantaría escuchar los proyectos que has construido.
Puedes compartirlas en la sección de comentarios.
Si tienes alguna opinión para mejorar el artículo, compártela en la sección de comentarios.
Su valiosa aportación me ayuda a mejorar la calidad del artículo y a aportar más contenido útil en el futuro.
Por favor, recuerda compartir el artículo con tus compañeros entusiastas de Arduino.
I am Puneeth. I love tinkering with open-source projects, Arduino, ESP32, Pi and more. I have worked with many different Arduino boards and currently I am exploring, Arduino powered LoRa, Power line communication and IoT.