Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
Komponenten und Zubehör
| Arduino Portenta H7 | × | 1 |
| Test-Zubehör: Thermoelement und Adapter | × | 1 |
| SparkFun Thermoelement Breakout – MAX31855K | × | 1 |
Apps und Online-Dienste
- CircuitMaker by Altium
Über dieses Projekt
In diesem Tutorial führe ich durch das Anschließen eines Hochtemperatur-Thermoelements an den Arduino Portenta H7, wobei der MAX6675 Thermoelement-zu-Digital-Wandler genutzt wird. Die dualen SPI-Ports des Portenta bieten eine robuste Schnittstelle, und der MAX6675 liefert 12-Bit-Auflösung bis 1024 °C – ideal für industrielles Monitoring.
Was Sie lernen werden
- Wie ein Thermoelement Spannung erzeugt und wie diese mit der Temperatur variiert.
- Auswahl und Verdrahtung eines MAX6675 IC an den SPI-Bus des Portenta H7.
- Sensordaten in der Arduino IDE interpretieren und im Serial Monitor visualisieren.
Materialien
- Arduino Portenta H7
- Typ-K Thermoelement (via SparkFun MAX31855K Breakout)
- Portenta Throne Board (custom PCB mit dualen SPI-Headern)
- Standard 0,1 µF Entkopplungskondensatoren
- 4-poliger Schraubklemmenblock für Sensoreinsatz
Funktionsweise von Thermoelement-Sensoren
Ein Thermoelement besteht aus zwei ungleichen Metallen, die an einem Ende verbunden sind. Wenn diese Verbindung erhitzt wird, entsteht eine thermoelektrische Spannung, die proportional zur Temperaturdifferenz zwischen der Heißstelle und dem Referenzende ist. Da die Spannung winzig ist – typischerweise wenige Millivolt – muss sie vor der Auslesung durch einen Mikrocontroller verstärkt und digitalisiert werden.
Typ-K Thermoelemente, aus Chromel und Alumel gefertigt, sind die häufigste Wahl für industrielle Temperatursensorik. Sie decken –200 °C bis 1260 °C ab mit typischer ±1 °C Genauigkeit bei Paarung mit einem geeigneten Wandler wie dem MAX6675.
Sensor-Hardware-Anforderungen
Für zuverlässigen Betrieb muss der MAX6675 von derselben 3,3 V Schiene wie der Portenta H7 gespeist werden, und ein 0,1 µF Entkopplungskondensator sollte so nah wie möglich am VCC-Pin des IC platziert werden. Die Thermoelement-Drähte sollten in die dedizierten Schraubklemmen des Breakout-Boards eingesetzt werden, wobei die Polarität zu beachten ist (Rot = Plus).
Zurück zu unserem Throne-Schaltplan
Mit Altium Designer habe ich die zwei verfügbaren SPI-Busse des Portenta zu den MAX6675 ICs auf dem custom Throne Board geroutet. Die erste SPI-Schnittstelle (Pins 38, 40, 42 am HD-Connector 2) bedient den ersten MAX6675, die zweite (Pins 33, 59, 61 am HD-Connector 1) den zweiten IC. Das Design folgt den Empfehlungen des MAX6675-Datenblatts für Leiterbahnbreite und Entkopplungs-Platzierung.
Montage ist unkompliziert – MAX6675s und Entkopplungskondensatoren mit Präzisionslötkolben verlöten, dann Thermoelement über Schraubklemmen am Breakout befestigen.
Sensor-Anschlusspins
Beim Verdrahten des Thermoelements beachten Sie die Polaritätsmarkierungen des Herstellers: Der rote Draht ist +, der schwarze Draht ist –. Verbinden Sie den Sensor mit den Schraubklemmen des Breakouts, dann verknüpfen Sie die Breakout-Pins VCC, GND, DO, CS und SCK mit den entsprechenden Portenta-Headern wie im Schaltplan gezeigt.
Software und Test
Der Arduino-Sketch nutzt die Adafruit MAX6675-Bibliothek für die SPI-Kommunikation. Nach Initialisierung der onboard LED (PC_7) für visuelles Feedback gibt das Programm Celsius- und Fahrenheit-Werte jede Sekunde aus.
Nach dem Hochladen des Sketches zeigt der Serial Monitor einen stetigen Temperaturanstieg, während die Heizplatte das Thermoelement erwärmt – was erfolgreiche SPI-Kommunikation und präzise Wandlung bestätigt.
Das schließt dieses Projekt ab. Kontinuierliches Experimentieren mit Sensoren und den vielseitigen I/Os des Portenta wird Ihre Embedded-Fähigkeiten vertiefen. Viel Spaß beim Basteln!
Code
- Unbenannte Datei
Unbenannte Datei
// Public domain example – a quick MAX6675 demo
// Source: www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
// SPI-Pins am Portenta H7 (anpassen falls nötig)
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); // onboard LED
digitalWrite(PC_7, HIGH);
delay(500);
digitalWrite(PC_7, LOW);
delay(500);
Serial.begin(9600);
Serial.println("MAX6675 test");
delay(500); // Chip stabilisieren lassen
}
void loop() {
float tempC = thermocouple.readCelsius();
float tempF = thermocouple.readFahrenheit();
Serial.print("C = ");
Serial.println(tempC);
Serial.print("F = ");
Serial.println(tempF);
// LED blinken wenn Temperatur 30 °C übersteigt
digitalWrite(PC_7, tempC > 30 ? HIGH : LOW);
delay(1000);
}
Schaltpläne
Siehe vollständigen Schaltplan und PCB-Layout in den beiliegenden PDF-Dateien.
Herstellungsprozess
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- Robuste Temperatur- & Sensor-API auf Raspberry Pi mit GY-91 Modul bauen
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
- Raspberry Pi Sensor & Aktuator Steuerung meistern: Beschleunigungsmesser, Servo und Datenstreaming
- Erstes IoT-Projekt mit Raspberry Pi, DHT11 und ThingSpeak bauen
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Feuchtigkeitssensor verifizieren und kalibrieren für präzise Messungen
- Raspberry Pi Heimüberwachung: PIR-Bewegungserkennung mit Kamera-E-Mail-Benachrichtigung