Módulo MAX31855, conversor digital de ±temperatura para termopar tipo KEl
MAX31855 es un circuito integrado diseñado para realizar mediciones de temperatura mediante termopares. Está fabricado por Maxim Integrated (actualmente Analog Devices) y existen diferentes versiones dependiendo del tipo de termopar utilizado.
En esta práctica se utiliza un módulo comercial equipado con el
MAX31855K, destinado a trabajar con termopares tipo K.
El circuito integra la conversión analógico-digital, compensación de unión fría y una interfaz serie compatible con SPI, lo que permite realizar mediciones de temperatura utilizando únicamente tres líneas de comunicación con el microcontrolador.
A diferencia del MAX6675, utilizado en una práctica anterior, el MAX31855 permite medir temperaturas tanto positivas como negativas y dispone de un sistema de diagnóstico más completo.
Características principales- Compatible con termopares tipo K (versión MAX31855K).
- Rango de representación de temperatura del termopar: -270 °C a +1800 °C.
- Resolución de temperatura del termopar: 0,25 °C.
- Resolución de temperatura de la unión fría: 0,0625 °C.
- Compensación automática de unión fría.
- Interfaz serie compatible con SPI, únicamente de lectura.
- Transmisión de datos de 32 bits, comenzando por el bit más significativo.
- Detección de termopar desconectado.
- Detección de cortocircuitos a GND y VCC.
- Alimentación del circuito integrado entre 3,0 V y 3,6 V.
El rango de temperatura realmente utilizable depende del termopar instalado y de las condiciones de funcionamiento. La resolución de lectura tampoco debe confundirse con la precisión de medida.
Conexiones del móduloLa comunicación utiliza las siguientes señales:
VCC - Alimentación del módulo
GND - Masa
CS - Chip Select
SCK - Serial Clock
SO - Serial Output (MISO)
La interfaz es únicamente de lectura, por lo que no se necesita una línea MOSI.
Para esta práctica se utiliza el PIC18F46K22 de la tarjeta HL-K18, funcionando a 64 MHz, con la siguiente asignación:
Symbol MAX31855_CS = LATC.2
Symbol MAX31855_SCK = LATC.3
Symbol MAX31855_SO = PORTC.5
Importante: El MAX31855 trabaja con alimentación de 3,3 V y sus entradas digitales no deben conectarse directamente a señales de 5 V. Si el microcontrolador trabaja a 5 V, deben adaptarse los niveles de CS y SCK. También es necesario comprobar si el módulo comercial incorpora regulador y adaptación de niveles.
Formato de los datosEn cada lectura, el MAX31855 transmite una palabra de 32 bits que contiene la temperatura del termopar, la temperatura de la unión fría y los indicadores de error.
D31........D18 Temperatura del termopar (14 bits)
D17 Reservado
D16 Indicador general de error
D15.........D4 Temperatura unión fría (12 bits)
D3 Reservado
D2 SCV
D1 SCG
D0 OC
Los dos valores de temperatura tienen signo, permitiendo representar temperaturas positivas y negativas.
La temperatura del termopar utiliza una resolución de 0,25 °C por bit:
Temperatura = Valor * 0.25
La temperatura de la unión fría utiliza una resolución de 0,0625 °C por bit:
Temperatura_interna = Valor * 0.0625
Para los valores negativos es necesario realizar la correspondiente extensión del bit de signo antes de efectuar la conversión.
Diagnóstico de erroresEl MAX31855 dispone de tres indicadores de error:
OC = Open Circuit
SCG = Short Circuit to GND
SCV = Short Circuit to VCC
En la librería se han definido las siguientes constantes:
Const MAX31855_ERROR_OC = 0x01
Const MAX31855_ERROR_SCG = 0x02
Const MAX31855_ERROR_SCV = 0x04
El bit D16 indica que existe un fallo y los bits D2..D0 permiten identificarlo.
Estos indicadores se han mantenido en la librería con los nombres originales del fabricante, facilitando su identificación en el datasheet.
Comunicación SPI por softwarePara esta práctica se ha utilizado una interfaz SPI implementada por software (bit-banging), evitando la necesidad de configurar el módulo SPI hardware del microcontrolador.
La secuencia de lectura consiste en seleccionar el MAX31855 mediante CS, recibir los 32 bits y liberar nuevamente el dispositivo.
La recepción se realiza desplazando los bits dentro de una variable de 32 bits:
SO_Input.0 = MAX31855_SO
data_raw = (data_raw << 1) | SO_Input
Una vez completada la recepción, la librería separa los campos correspondientes a las temperaturas y al diagnóstico.
El MAX31855 realiza las conversiones internamente, con un tiempo de conversión típico próximo a 100 ms. En el programa de prueba se ha establecido un intervalo de 500 ms entre lecturas.
Librería MAX31855La librería se ha desarrollado para Oshonsoft PIC18 Basic Compiler v6.10 y utiliza únicamente dos funciones principales:
MAX31855_Init()Configura las líneas de comunicación y establece su estado inicial.
MAX31855_Read(error_code, internal_temp)Realiza la lectura de los 32 bits y devuelve directamente la temperatura del termopar en grados Celsius.
Además, actualiza los argumentos:
error_code - Código de diagnóstico
internal_temp - Temperatura de la unión fría
Cuando se detecta un error, la función devuelve -999.0 como valor especial de indicación de fallo.
Ejemplo de utilización:
Dim Temp_termopar As Single
Dim Temp_Int As Single
Dim Codigo_Error As Byte
MAX31855_Init()
Temp_termopar = MAX31855_Read(Codigo_Error, Temp_Int)
Si no se detectan errores, las variables contienen la temperatura del termopar y la temperatura interna del MAX31855.
Ejemplo de lectura y diagnósticoEl siguiente fragmento muestra la lectura y la presentación de los resultados por el puerto serie:
Temp_termopar = MAX31855_Read(Codigo_Error, Temp_Int)
If Codigo_Error != 0 Then
If (Codigo_Error & MAX31855_ERROR_OC) != 0 Then
UART_Write "Thermocouple disconnected", CrLf
Endif
If (Codigo_Error & MAX31855_ERROR_SCG) != 0 Then
UART_Write "Short circuit to GND", CrLf
Endif
If (Codigo_Error & MAX31855_ERROR_SCV) != 0 Then
UART_Write "Short circuit to VCC", CrLf
Endif
Else
UART_Write "Thermocouple: ", #Temp_termopar, " C", CrLf
UART_Write "Cold junction: ", #Temp_Int, " C", CrLf
Endif
En este ejemplo los indicadores de error se comprueban independientemente, ya que están definidos como una máscara de bits.
Resultados de las pruebasSe han realizado pruebas de funcionamiento con temperaturas positivas y negativas, así como comprobaciones de los indicadores de error.
El comportamiento del MAX31855 ha resultado especialmente satisfactorio.Durante las pruebas se ha observado una lectura muy estable en todo el rango de temperaturas ensayado, tanto positivas como negativas, incluso presentando los resultados con un decimal.
Este comportamiento contrasta con el observado anteriormente utilizando un módulo MAX6675.
En las pruebas realizadas con el MAX6675 se apreciaban fluctuaciones de aproximadamente ±1 °C, e incluso superiores, por lo que se optó por presentar las temperaturas sin decimales.
La comparación práctica puede resumirse de la siguiente forma:
| Característica | MAX6675 | MAX31855 |
| Temperaturas negativas | No | Sí |
| Resolución termopar | 0,25 °C | 0,25 °C |
| Compensación unión fría | Sí | Sí |
| Diagnóstico | Circuito abierto | OC, SCG y SCV |
| Estabilidad observada | Fluctuaciones de ±1 °C o superiores | Lectura muy estable |
| Presentación utilizada | Sin decimales | Un decimal |
Es importante destacar que
ambos circuitos tienen la misma resolución de 0,25 °C para la temperatura del termopar.
Por tanto, la diferencia de estabilidad observada no puede atribuirse simplemente a una mayor resolución del MAX31855.
Los resultados corresponden a los módulos y condiciones utilizados en estas prácticas y no deben interpretarse como una comparación metrológica entre ambos circuitos integrados.
ConclusionesEl MAX31855 ha demostrado ser un dispositivo sencillo de utilizar y con un comportamiento muy satisfactorio durante las pruebas realizadas.
La estabilidad de las lecturas, la posibilidad de trabajar con temperaturas negativas y positivas, la compensación de unión fría y el diagnóstico de errores hacen que resulte especialmente interesante para experimentar con termopares.
En comparación con el MAX6675 utilizado anteriormente,
el MAX31855 ha proporcionado lecturas considerablemente más estables, permitiendo presentar los resultados con un decimal sin las fluctuaciones observadas en el módulo anterior.
No obstante, la presentación de un decimal no implica una precisión de 0,1 °C, ya que la resolución real de la medida del termopar es de 0,25 °C.
Como ocurre con otros módulos comerciales económicos, los resultados obtenidos durante las prácticas no garantizan que puedan utilizarse directamente en cualquier aplicación real. La precisión final depende del termopar, las conexiones, el diseño de la placa, las condiciones ambientales y las características de la instalación.
Para realizar prácticas con microcontroladores, el MAX31855 constituye una solución muy interesante, tanto por su sencillez de comunicación como por la información adicional que proporciona sobre el estado del sensor.
Observación sobre la compensación de unión fríaDurante las pruebas se ha observado que, al enfriar considerablemente el circuito integrado MAX31855, la temperatura indicada por el termopar puede resultar incorrecta, aunque la temperatura del extremo de medida permanezca constante.
Este comportamiento puede producirse cuando existe una diferencia de temperatura entre el circuito integrado y los terminales de conexión del termopar, ya que el MAX31855 utiliza su sensor interno para realizar la compensación de unión fría.
Por tanto, es importante evitar gradientes térmicos entre el MAX31855 y las conexiones del termopar. Esta precaución debe tenerse en cuenta tanto ante fuentes de calor como de frío próximas al circuito.
La observación no implica que el MAX31855 sea incapaz de funcionar a bajas temperaturas, sino que una compensación correcta requiere que la temperatura medida internamente represente adecuadamente la temperatura de la unión fría.
Diagrama de conexión del módulo usado y archivos necesarios: