Integrasi Sensor Termokopel dengan Arduino Portenta H7 Menggunakan IC MAX6675
Komponen dan Perlengkapan
Arduino Portenta H7
×
1
Test Accessory, Termokopel dan Adapter
×
1
SparkFun Thermocouple Breakout – MAX31855K
×
1
Aplikasi dan Layanan Online
CircuitMaker by Altium
Tentang Proyek Ini
Dalam tutorial ini saya membahas cara menghubungkan termokopel suhu tinggi ke Arduino Portenta H7, memanfaatkan konverter termokopel-ke-digital MAX6675. Dua port SPI Portenta menyediakan antarmuka yang kuat, dan MAX6675 memberikan resolusi 12-bit hingga 1024 °C – ideal untuk pemantauan kelas industri.
Apa yang Akan Anda Pelajari
Bagaimana termokopel menghasilkan tegangan dan bagaimana tegangan itu bervariasi dengan suhu.
Memilih dan merangkaian IC MAX6675 ke bus SPI Portenta H7.
Menginterpretasikan data sensor di Arduino IDE dan memvisualisasikannya di Serial Monitor.
Papan Throne Portenta (PCB kustom dengan header SPI dual)
Kapasitor pemisah standar 0,1 µF
Blok terminal skru 4-pin untuk pemasangan sensor
Bagaimana Sensor Termokopel Bekerja
Termokopel terdiri dari dua logam yang berbeda yang digabungkan di satu ujung. Ketika juntungan itu dipanaskan, tegangan termoelektrik dihasilkan yang proporsional dengan perbedaan suhu antara juntungan dan ujung referensi. Karena tegangan sangat kecil—biasanya beberapa milivolt—ia harus diamplifikasi dan dikonversi digital sebelum mikrokontroler dapat membacanya.
Termokopel Type-K, yang terbuat dari chromel dan alumel, adalah pilihan paling umum untuk pemantauan suhu industri. Mereka mencakup –200 °C hingga 1260 °C dengan akurasi typis ±1 °C ketika dipasangkan dengan konverter yang tepat seperti MAX6675.
Persyaratan Hardware Sensor
Untuk operasi yang andal, MAX6675 harus diberdayakan dari rel 3,3 V yang sama dengan Portenta H7, dan kapasitor pemisah 0,1 µF harus ditempatkan semampu mungkin dari pin VCC IC. Kabel termokopel harus dimasukkan ke dalam terminal skru khusus pada papan breakout, memperhatikan polaritas (merah = positif).
Kembali ke Skematik Throne Kami
Menggunakan Altium Designer, saya merute dua bus SPI yang tersedia Portenta ke IC MAX6675 pada papan Throne kustom. Antarmuka SPI pertama (pin 38, 40, 42 pada HD connector 2) melayani MAX6675 pertama, sementara yang kedua (pin 33, 59, 61 pada HD connector 1) melayani IC kedua. Desain mengikuti rekomendasi datasheet MAX6675 untuk lebar jejak dan penempatan pemisah.
Rangkaian sederhana—solder MAX6675 dan kapasitor pemisah dengan pakuin presisi, lalu amankan termokopel ke breakout menggunakan terminal skru.
Pin Koneksi Sensor
Saat merangkaian termokopel, perhatikan tanda polaritas produsen: kabel merah adalah +, kabel hitam adalah –. Hubungkan sensor ke terminal skru breakout, lalu sambungkan pin VCC, GND, DO, CS, dan SCK breakout ke header Portenta yang sesuai seperti yang ditunjukkan dalam skematik.
Perangkat Lunak dan Pengujian
Sketsa Arduino menggunakan library Adafruit MAX6675 untuk berkomunikasi melalui SPI. Setelah menginisialisasi LED onboard Portenta (PC_7) untuk umpan balik visual, program mencetak pembacaan Celsius dan Fahrenheit setiap detik.
Setelah sketsa diunggah, Serial Monitor menampilkan kenaikan suhu stabil saat plat panas memanaskan termokopel—memkonfirmasi komunikasi SPI yang berhasil dan konversi yang akurat.
Itulah proyek ini. Eksperimen berkelanjutan dengan sensor dan I/O serbaguna Portenta akan memperdalam keterampilan embedded Anda. Selamat mencoba!
Kode
File Tanpa Judul
File Tanpa JudulArduino
// Public domain example – a quick MAX6675 demo // Source: www.ladyada.net/learn/sensors/thermocouple #include "max6675.h" // SPI pins on Portenta H7 (adjust as needed) 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); // allow chip to stabilize } void loop() { float tempC = thermocouple.readCelsius(); float tempF = thermocouple.readFahrenheit(); Serial.print("C = "); Serial.println(tempC); Serial.print("F = "); Serial.println(tempF); // Blink LED when temperature exceeds 30 °C digitalWrite(PC_7, tempC > 30 ? HIGH : LOW); delay(1000); }
Skematik
Lihat skematik lengkap dan tata letak PCB dalam file PDF yang menyertai.