Cum să utilizați un senzor termocuplu tip K MAX6675 cu Arduino
Introducere
Măsurarea precisă a temperaturii este o cerință fundamentală în nenumărate proiecte de electronică, de la construirea unui cuptor de reflow pentru lipirea plăcilor PCB până la monitorizarea temperaturii unui hotend de imprimantă 3D sau a unui afumător BBQ. În timp ce termistoarele standard și senzorii digitali precum DS18B20 funcționează bine pentru temperaturi moderate, ele eșuează când lucrurile devin cu adevărat fierbinți. Aici intervine termocupla de tip K. Este un senzor robust și ieftin, capabil să măsoare temperaturi extreme, dar necesită un cip de interfață special pentru a traduce semnalul său minuscul de tensiune într-o valoare digitală lizibilă.
Acest ghid demonstrează cum să folosești placa breakout MAX6675 cu o termocuplă de tip K și un Arduino pentru a citi și afișa temperaturi atât în Celsius, cât și în Fahrenheit pe monitorul serial (în video la 00:00). Modulul MAX6675 se ocupă de condiționarea complexă a semnalului și de compensarea joncțiunii reci pentru tine, scoțând date digitale curate prin protocolul SPI. Această configurație este perfectă pentru proiecte care necesită detectarea temperaturilor ridicate, cum ar fi:
- Monitorizarea temperaturii hotend-ului sau a patului încălzit al unei imprimante 3D.
- Construirea unui termometru digital pentru un grătar BBQ sau un cuptor de bucătărie.
- Crearea unui controler de temperatură pentru un cuptor de reflow DIY sau o stație de lipit.
- Măsurarea temperaturii gazelor de eșapament în proiecte auto sau de robotică.
Componente Hardware
Pentru a urma acest tutorial, vei avea nevoie de următoarele componente. Cablarea este simplă, iar codul este compatibil cu toate versiunile plăcii Arduino (în video la 00:47).
- Placă Arduino (Uno, Mega, Nano, etc.)
- Modul MAX6675 (placă breakout)
- Senzor termocuplă de tip K (orice stil de sondă)
- Fire de legătură (jumper wires)
Modulul MAX6675 în sine este destul de mic. După cum se arată în video, dimensiunile sale sunt 32,1mm lungime, 15,6mm lățime și 16,3mm adâncime (în video la 02:35). Modulul are un bloc terminal mic pentru conectarea termocuplei și un rând de pini pentru alimentare și comunicare SPI. Termocupla de tip K se conectează la modul cu polaritatea corectă; firul roșu (pozitiv) merge la terminalul '+' și firul galben (negativ) la terminalul '-' (în video la 01:27).
Specificații Tehnice
Înainte de a intra în detalii despre cablare, este util să înțelegem capacitățile cipului MAX6675. Conform fișei tehnice de la Maxim Integrated, modulul poate măsura o gamă largă de temperaturi, făcându-l potrivit atât pentru aplicații industriale, cât și pentru hobby (în video la 01:44).
- Gamă de măsurare: 0°C până la +1024°C
- Rezoluție: 12-biți (0,25°C)
- Comunicare: SPI (Serial Peripheral Interface)
- Tensiune de operare: 3,0V până la 5,5V
Ghid de Cablare
Cablarea pentru MAX6675 este simplă, necesitând doar o conexiune de alimentare și trei pini digitali pentru comunicarea SPI. În acest exemplu, vom folosi pinii Arduino 4, 5 și 6 pentru liniile de date (în video la 03:28). Conexiunile sunt următoarele:
- VCC (fir portocaliu): Se conectează la pinul de 5V al Arduino (în video la 02:56).
- GND (fir galben): Se conectează la pinul GND al Arduino (în video la 02:51).
- SO - Serial Out (fir verde): Se conectează la pinul digital 4 al Arduino (în video la 03:01).
- CS - Chip Select (fir gri): Se conectează la pinul digital 5 al Arduino (în video la 03:08).
- SCK - Serial Clock (fir alb): Se conectează la pinul digital 6 al Arduino (în video la 03:14).
Explicația Codului
Codul furnizat în acest tutorial este conceput pentru a fi simplu și ușor de modificat. Se bazează pe o bibliotecă numită max6675.h, pe care trebuie să o instalezi mai întâi. Poți descărca biblioteca ca fișier ZIP și să o adaugi în IDE-ul Arduino mergând la Sketch -> Include Library -> Add .ZIP Library. După instalare, trebuie să închizi și să redeschizi IDE-ul Arduino pentru ca biblioteca să fie recunoscută (în video la 04:14).
Odată ce biblioteca este instalată, poți copia codul furnizat în schița ta. Primul pas este să incluzi fișierul bibliotecii, care oferă Arduino acces la funcțiile necesare pentru a comunica cu cipul MAX6675 (în video la 03:55). Apoi, vei defini pinii la care este conectat modulul. Acestea sunt singurele linii de cod pe care trebuie să le schimbi dacă decizi să folosești pini diferiți pe Arduino-ul tău (în video la 04:52).
int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin
După definirea pinilor, creăm o instanță a clasei MAX6675. Ordinea argumentelor în această linie este critică; acestea trebuie să fie în ordinea sckPin, csPin și soPin. Schimbarea lor va împiedica senzorul să funcționeze corect (în video la 05:21).
MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675
În funcția setup(), inițializăm monitorul serial la o rată de transmisie de 9600 pentru a putea vizualiza citirile de temperatură pe computer (în video la 05:41). Logica principală se află în funcția loop(). Aici, apelăm metodele readCelsius() și readFahrenheit() ale obiectului robojax pentru a prelua temperatura și a o afișa pe monitorul serial. La sfârșitul buclei este adăugată o întârziere de 1000 de milisecunde (1 secundă) pentru a seta rata de reîmprospătare (în video la 05:54). Dacă doriți actualizări mai rapide, puteți reduce această întârziere la 100 de milisecunde sau mai puțin (în video la 08:44).
Serial.print("C = ");
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);
Acest cod este un test de bază pentru citire. Îl puteți extinde cu ușurință pentru a declanșa acțiuni pe baza pragurilor de temperatură. De exemplu, puteți folosi o instrucțiune if pentru a verifica dacă temperatura depășește o anumită valoare și apoi să porniți un ventilator pentru a răci un sistem, sau să porniți un încălzitor dacă temperatura scade prea mult (în video la 06:42).
Demonstrație live a proiectului
Pentru a demonstra capacitățile senzorului, videoclipul arată termocuplul fiind încălzit cu un pistol de aer cald. Pe măsură ce căldura este aplicată, citirea temperaturii pe monitorul serial crește rapid. Demonstrația arată temperatura atingând peste 125 de grade Celsius, cu valoarea corespunzătoare în Fahrenheit afișată alături (în video la 08:25). Odată ce pistolul de aer cald este îndepărtat, puteți vedea temperatura răcindu-se treptat, confirmând precizia și receptivitatea senzorului. Această feedback în timp real face modulul MAX6675 o alegere excelentă pentru orice proiect care necesită monitorizare precisă a temperaturilor ridicate.
Capitole video
- [00:00] Introducere și prezentare generală a proiectului
- [01:15] Hardware explicat
- [02:41] Conexiuni explicate
- [03:28] Cod explicat
- [07:26] Demonstrație măsurare temperatură
// Original library source:
// www.ladyada.net/learn/sensors/thermocouple
/*
* Arduino code to read temperature using MAX6675 chip and K-type thermocouple
* and display it on the serial monitor
*
* Watch video instructions for this code: https://youtu.be/VGqONmUinqA
* Download this code from Robojax.com
*
* Updated by Ahmad Shamshiri for Robojax.com on Saturday, November 23, 2018
* at 21:25 in Ajax, Ontario, Canada
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "max6675.h" // max6675.h file is part of the library that you should download from Robojax.com
int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin
MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675
void setup() {
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax MAX6675");
}
void loop() {
// Basic readout test, just print the current temperature
// Robojax.com MAX6675 temperature reading on serial monitor
Serial.print("C = ");
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);
}
Lucruri de care ai putea avea nevoie
-
AliExpressPurchase MAX6675 K-Type from Amazons.click.aliexpress.com
-
BanggoodPurchase MAX6675 K-Type from Banggoodbanggood.com
Resurse și referințe
-
ExternDownload the MAX6675 library (from GitHub)github.com
-
ExternMAX6675 datasheet (PDF)datasheets.maximintegrated.com
Fișiere📁
Alte fișiere
-
biblioteca MAX6675
robojax-max6675-thermo.zip0.01 MB