Integreren van een thermocouple-sensor met de Arduino Portenta H7 via de MAX6675 IC
Onderdelen en benodigdheden
| Arduino Portenta H7 | × | 1 |
| Testaccessoire, Thermocouple en Adapter | × | 1 |
| SparkFun Thermocouple Breakout – MAX31855K | × | 1 |
Apps en online diensten
- CircuitMaker by Altium
Over dit project
In deze tutorial loop ik door het aansluiten van een hoge-temperatuur thermocouple op de Arduino Portenta H7, gebruikmakend van de MAX6675 thermocouple-naar-digitale converter. De dubbele SPI-poorten van de Portenta bieden een robuuste interface, en de MAX6675 levert 12-bit resolutie tot 1024 °C – ideaal voor industriële monitoring.
Wat je zult leren
- Hoe een thermocouple spanning genereert en hoe die spanning varieert met temperatuur.
- Selecteren en bedraden van een MAX6675 IC naar de SPI-bus van de Portenta H7.
- Sensor-data interpreteren in de Arduino IDE en visualiseren op de Seriële Monitor.
Benodigdheden
- Arduino Portenta H7
- Type-K Thermocouple (via SparkFun MAX31855K breakout)
- Portenta Throne Board (aangepaste PCB met dubbele SPI-headers)
- Standaard 0,1 µF decoupling condensators
- 4-pins schroefklemblok voor sensorinvoeging
Hoe thermocouple-sensoren werken
Een thermocouple bestaat uit twee ongelijke metalen die aan één uiteinde samengevoegd zijn. Wanneer dat samengevoegde punt wordt verwarmd, wordt een thermo-elektrische spanning gegenereerd die evenredig is met het temperatuurverschil tussen het samengevoegde punt en het referentie-einde. Omdat de spanning minuscuul is – typisch enkele millivolt – moet het versterkt en gedigitaliseerd worden voordat een microcontroller het kan lezen.
Type-K thermocouples, gemaakt van chromel en alumel, zijn de meest voorkomende keuze voor industriële temperatuursensing. Ze dekken –200 °C tot 1260 °C met een typische ±1 °C nauwkeurigheid wanneer gepaard met een geschikte converter zoals de MAX6675.
Sensor hardwarevereisten
Voor betrouwbare werking moet de MAX6675 gevoed worden vanaf dezelfde 3,3 V-rail als de Portenta H7, en een 0,1 µF decoupling-condensator zo dicht mogelijk bij de VCC-pin van de IC geplaatst worden. De thermocouple-draden moeten in de speciale schroefklemmen op het breakout-bord worden gestoken, met inachtneming van polariteit (rood = positief).
Terug naar ons Throne-schema
Met Altium Designer heb ik de twee beschikbare SPI-bussen van de Portenta gerouteerd naar de MAX6675 IC's op de aangepaste Throne-print. De eerste SPI-interface (pinnen 38, 40, 42 op HD-connector 2) bedient de eerste MAX6675, terwijl de tweede (pinnen 33, 59, 61 op HD-connector 1) de tweede IC voedt. Het ontwerp volgt de aanbevelingen van de MAX6675-datasheet voor spoorbreedte en decoupling-plaatsing.
Montage is eenvoudig – soldeer de MAX6675's en decoupling-condensators met een precisie-bout, bevestig daarna de thermocouple aan het breakout met de schroefklemmen.
Sensor-verbinding pinnen
Bij het bedraden van de thermocouple, observeer de polariteitsmarkeringen van de fabrikant: de rode draad is +, de zwarte draad is –. Verbind de sensor met de schroefklemmen van het breakout, koppel vervolgens de VCC, GND, DO, CS, en SCK pinnen van het breakout aan de corresponderende Portenta-headers zoals getoond in het schema.
Software en test
De Arduino-sketch gebruikt de Adafruit MAX6675 bibliotheek om te communiceren via SPI. Na het initialiseren van de onboard LED van de Portenta (PC_7) voor visuele feedback, print het programma Celsius en Fahrenheit metingen elke seconde.
Zodra de sketch geüpload is, toont de Seriële Monitor een stijgende temperatuur naarmate de hitteplaat de thermocouple verhit – wat succesvolle SPI-communicatie en nauwkeurige conversie bevestigt.
Dit concludeert dit project. Continu experimenteren met sensoren en de veelzijdige I/O van de Portenta zal je embedded-vaardigheden verdiepen. Veel hack-plezier!
Code
- Untitled file
Untitled file Arduino
// Public domain voorbeeld – een snelle MAX6675 demo
// Bron: www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
// SPI-pinnen op Portenta H7 (pas aan zoals nodig)
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); // wacht tot chip gestabiliseerd is
}
void loop() {
float tempC = thermocouple.readCelsius();
float tempF = thermocouple.readFahrenheit();
Serial.print("C = ");
Serial.println(tempC);
Serial.print("F = ");
Serial.println(tempF);
// Knipper LED wanneer temperatuur 30 °C overschrijdt
digitalWrite(PC_7, tempC > 30 ? HIGH : LOW);
delay(1000);
}
Schema's
Zie het volledige schema en PCB-layout in de bijbehorende PDF-bestanden.
Productieproces
- Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Lijnvolgsensor met Raspberry Pi – Simpele KY-033 deur/lijndetector
- Een robuuste temperatuur- en sensor-API bouwen op Raspberry Pi met de GY-91-module
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Raspberry Pi-sensor- en actuatorbeheersing onder de knie: versnellingsmeter, servo en datastreaming
- Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Je vochtigheidssensor verifiëren en kalibreren voor nauwkeurige metingen
- Raspberry Pi Thuisbeveiligingssysteem: PIR-bewegingsdetectie + Camera E-mailwaarschuwingen
- Nauwkeurige Temperatuur- & Vochtigheidsmonitoring met SHT15 op Windows 10 IoT Core