Integración de sensor termopar con Arduino Portenta H7 usando MAX6675
Componentes y suministros
| Arduino Portenta H7 | ×1 |
| Accesorio de prueba: Termopar y adaptador | ×1 |
| Breakout Termopar SparkFun – MAX31855K | ×1 |
Aplicaciones y servicios online
- CircuitMaker by Altium
Sobre este proyecto
En este tutorial recorro la conexión de un termopar de alta temperatura al Arduino Portenta H7, aprovechando el conversor termopar-a-digital MAX6675. Los puertos SPI duales del Portenta proporcionan una interfaz robusta, y el MAX6675 entrega resolución de 12 bits hasta 1024 °C – ideal para monitorización de grado industrial.
Qué aprenderás
- Cómo un termopar genera voltaje y cómo este varía con la temperatura.
- Selección y cableado de un IC MAX6675 al bus SPI del Portenta H7.
- Interpretación de datos del sensor en Arduino IDE y visualización en Monitor Serie.
Suministros
- Arduino Portenta H7
- Termopar Tipo-K (vía breakout SparkFun MAX31855K)
- Placa Portenta Throne (PCB personalizada con headers SPI duales)
- Condensadores de desacoplo estándar 0.1 µF
- Bloque terminal de tornillo 4 pines para inserción del sensor
Cómo funcionan los sensores termopar

Un termopar consiste en dos metales disímiles unidos en un extremo. Cuando esa unión se calienta, se genera un voltaje termoeléctrico proporcional a la diferencia de temperatura entre la unión y el extremo de referencia. Como el voltaje es minúsculo —típicamente unos pocos milivoltios— debe amplificarse y digitalizarse antes de que un microcontrolador pueda leerlo.
Los termopares Tipo-K, hechos de cromel y alumel, son la opción más común para detección de temperatura industrial. Cubren –200 °C a 1260 °C con precisión típica de ±1 °C cuando se emparejan con un conversor adecuado como el MAX6675.
Requisitos de hardware del sensor

Para operación fiable, el MAX6675 debe alimentarse desde el mismo rail de 3.3 V que el Portenta H7, y un condensador de desacoplo 0.1 µF debe colocarse lo más cerca posible del pin VCC del IC. Los cables del termopar deben insertarse en los terminales de tornillo dedicados en la placa breakout, respetando polaridad (rojo = positivo).
Volviendo a nuestro esquemático Throne

Usando Altium Designer, ruteé los dos buses SPI disponibles del Portenta a los ICs MAX6675 en la placa Throne personalizada. La primera interfaz SPI (pines 38, 40, 42 en conector HD 2) sirve al primer MAX6675, mientras que la segunda (pines 33, 59, 61 en conector HD 1) alimenta al segundo IC. El diseño sigue las recomendaciones del datasheet del MAX6675 para ancho de trazas y colocación de desacoplo.

El montaje es sencillo — suelda los MAX6675 y condensadores de desacoplo con soldador de precisión, luego fija el termopar al breakout usando los terminales de tornillo.


Pines de conexión del sensor
Al cablear el termopar, observa las marcas de polaridad del fabricante: el cable rojo es +, el negro es –. Conecta el sensor a los terminales de tornillo del breakout, luego enlaza los pines VCC, GND, DO, CS y SCK del breakout a los headers correspondientes del Portenta como se muestra en el esquemático.
Software y prueba
El sketch Arduino usa la librería MAX6675 de Adafruit para comunicar por SPI. Tras inicializar el LED integrado del Portenta (PC_7) para retroalimentación visual, el programa imprime lecturas en Celsius y Fahrenheit cada segundo.


Una vez subido el sketch, el Monitor Serie muestra un aumento constante de temperatura al calentar la placa caliente el termopar — confirmando comunicación SPI exitosa y conversión precisa.


Esto concluye el proyecto. La experimentación continua con sensores y la versátil E/S del Portenta profundizará tus habilidades embebidas. ¡Feliz hacking!
Código
Archivo sin título (Arduino)
// Ejemplo dominio público – demo rápido MAX6675
// Fuente: www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
// Pines SPI en Portenta H7 (ajustar según necesidad)
const uint8_t thermoCLK = 9;
const uint8_t thermoCS = 8;
const uint8_t thermoDO = 10;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
void setup() {
pinMode(PC_7, OUTPUT); // LED integrado
digitalWrite(PC_7, HIGH);
delay(500);
digitalWrite(PC_7, LOW);
delay(500);
Serial.begin(9600);
Serial.println("MAX6675 test");
delay(500); // permitir estabilización del chip
}
void loop() {
float tempC = thermocouple.readCelsius();
float tempF = thermocouple.readFahrenheit();
Serial.print("C = ");
Serial.println(tempC);
Serial.print("F = ");
Serial.println(tempF);
// Parpadear LED cuando temperatura supera 30 °C
digitalWrite(PC_7, tempC > 30 ? HIGH : LOW);
delay(1000);
}
Esquemáticos
Ver esquemático completo y layout PCB en los archivos PDF adjuntos.
Proceso de manufactura
- Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Sensor de seguimiento de línea con Raspberry Pi – Detector simple KY‑033 para puerta/línea
- Construya una API robusta de temperatura y sensores en Raspberry Pi usando el módulo GY‑91
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos
- Tu primer proyecto IoT con Raspberry Pi, DHT11 y ThingSpeak
- Construye un sistema aeropónico automatizado con Raspberry Pi y sensor de humedad
- Verifica y calibra tu sensor de humedad para mediciones precisas
- Sistema de Seguridad Doméstico con Raspberry Pi: Detección de Movimiento PIR y Alertas por Email con Cámara
- Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core