Skip to Content

MAX31865 RTD Sensor And Arduino

MAX31865 RTD Sensor And Arduino

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

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.

Fundamentos del sensor MAX31865 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:

  1. Maneja sensores PT100 a PT1000.
  2. Simplifica el diseño del circuito y reduce el tiempo de desarrollo del proyecto.
  3. Admite sensores RTD de 2, 3 y 4 hilos.
  4. La resolución ADC de 15 bits ayuda a conseguir la mejor precisión.
  5. El tiempo máximo de conversión es de 21 ms.

La siguiente imagen muestra las conexiones típicas necesarias.

conexiones típicas

El CI MAX31865 viene en dos paquetes. Los nombres de los pines y las descripciones se proporcionan en la tabla siguiente. 

Nombre de la clavijaDescripción de la clavija
BIASSalida 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-.
ISENSORLado 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.
FUERZA2Entrada 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.
GND2Tierra analógica. Conectar a GND1.
SDIEntrada de datos en serie
SCLKEntrada de reloj de datos en serie
CSSelección de chip activa-baja. Poner CS bajo para habilitar la interfaz serie.
SDOSalida de datos en serie
DGNDTierra digital
GND1Tierra analógica. Conectar a GND2.
N.C.No conectar
DRDYSalida 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.
DVDDEntrada 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.
VDDEntrada 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.
EPAlmohadilla 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 REGISTRODIRECCIÓN DE LECTURA (HEX)DIRECCIÓN DE ESCRITURA (HEX)POR EL ESTADOLEER / ESCRIBIR
Configuración 00h80h00hR/W
RTD MSBs01h-00hR
RTD LSBs 02h-00hR
Umbral de fallo alto MSB 03h83hFFhR/W
Umbral de fallo alto LSB 04h84hFFhR/W
Umbral de fallo bajo MSB 05h85h00hR/W
Umbral de fallo bajo LSB 06h86h00hR/W
Estado de la avería07h-00hR

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.

Ecuación Callender-Van Dusen

La siguiente ecuación es más sencilla y es válida desde 0 °C s hasta 660 °C.

La ecuación es más sencilla

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.

Los sensores RTD están disponibles en muchas opciones

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

Comienza 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

Conecte 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

Conecta el pin SDO del módulo MAX31865 al pin 12 del Arduino. 

Paso 4: Conecte la clavija SDI.

Conecta el pin SDI

Conecta el pin SDI del módulo MAX31865 al pin 11 del Arduino.

Paso 5: Conecte la clavija CS.

Conecta el pin 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.

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

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.