Code zoeken

Hoe een MAX6675 K-type thermokoppelsensor met Arduino te gebruiken

Hoe een MAX6675 K-type thermokoppelsensor met Arduino te gebruiken

Inleiding

Het nauwkeurig meten van temperatuur is een fundamentele vereiste in talloze elektronica-projecten, van het bouwen van een reflow-oven voor het solderen van PCB's tot het bewaken van de temperatuur van een 3D-printer hotend of een BBQ-roker. Hoewel standaard thermistors en digitale sensoren zoals de DS18B20 goed werken voor gematigde temperaturen, falen ze wanneer het echt heet wordt. Dit is waar een K-type thermokoppel in beeld komt. Het is een robuuste, goedkope sensor die extreme temperaturen kan meten, maar het vereist een speciale interface-chip om het kleine spanningssignaal om te zetten in een leesbare digitale waarde.

Deze handleiding laat zien hoe je de MAX6675 breakout-board gebruikt met een K-type thermokoppel-sensor en een Arduino om temperaturen in zowel Celsius als Fahrenheit te lezen en weer te geven op de seriële monitor (in video op 00:00). De MAX6675-module verzorgt de complexe signaalconditionering en koude-junctie-compensatie voor je, en levert schone digitale gegevens via het SPI-protocol. Deze opstelling is perfect voor projecten die hoge-temperatuurmeting vereisen, zoals:

  • Het bewaken van de temperatuur van een 3D-printer hotend of verwarmd bed.
  • Het bouwen van een digitale thermometer voor een BBQ-grill of keukenoven.
  • Het creëren van een temperatuurregelaar voor een DIY reflow-oven of soldeerstation.
  • Het meten van uitlaatgastemperatuur in auto- of robotica-projecten.

Hardwarecomponenten

Om deze tutorial te volgen, heb je de volgende componenten nodig. De bedrading is eenvoudig en de code is compatibel met alle versies van het Arduino-bord (in video op 00:47).

  • Arduino-bord (Uno, Mega, Nano, etc.)
  • MAX6675-module (breakout-board)
  • K-type thermokoppel-sensor (elke probes-stijl)
  • Jumperdraden

De MAX6675-module zelf is vrij klein. Zoals te zien is in de video, zijn de afmetingen 32,1 mm in lengte, 15,6 mm in breedte en 16,3 mm in diepte (in video op 02:35). De module heeft een kleine terminalblok voor het aansluiten van het thermokoppel en een rij pinnen voor voeding en SPI-communicatie. Het K-type thermokoppel wordt met de juiste polariteit op de module aangesloten; de rode (positieve) draad gaat naar de '+' terminal en de gele (negatieve) draad naar de '-' terminal (in video op 01:27).

Technische specificaties

Voordat we in de bedrading duiken, is het nuttig om de mogelijkheden van de MAX6675-chip te begrijpen. Volgens het datasheet van Maxim Integrated kan de module een breed temperatuurbereik meten, waardoor het geschikt is voor zowel industriële als hobbytoepassingen (in video op 01:44).

  • Meetbereik: 0°C tot +1024°C
  • Resolutie: 12-bit (0,25°C)
  • Communicatie: SPI (Serial Peripheral Interface)
  • Bedrijfsspanning: 3,0V tot 5,5V

Bedradingsgids

De bedrading voor de MAX6675 is eenvoudig en vereist alleen een voedingsaansluiting en drie digitale pinnen voor SPI-communicatie. In dit voorbeeld gebruiken we Arduino-pinnen 4, 5 en 6 voor de datalijnen (in video op 03:28). De verbindingen zijn als volgt:

  • VCC (Oranje draad): Verbindt met de 5V-pin van de Arduino (in video op 02:56).
  • GND (Gele draad): Verbindt met de GND-pin van de Arduino (in video op 02:51).
  • SO - Serial Out (Groene draad): Verbindt met digitale pin 4 van de Arduino (in video op 03:01).
  • CS - Chip Select (Grijze draad): Verbindt met digitale pin 5 van de Arduino (in video op 03:08).
  • SCK - Serial Clock (Witte draad): Verbindt met digitale pin 6 van de Arduino (in video op 03:14).

Code-uitleg

De code in deze tutorial is ontworpen om eenvoudig en gemakkelijk aan te passen te zijn. Het maakt gebruik van een bibliotheek genaamd max6675.h, die je eerst moet installeren. Je kunt de bibliotheek als ZIP-bestand downloaden en toevoegen aan je Arduino IDE door naar Sketch -> Include Library -> Add .ZIP Library te gaan. Na installatie moet je de Arduino IDE sluiten en opnieuw openen zodat de bibliotheek wordt herkend (in video op 04:14).

Zodra de bibliotheek is geïnstalleerd, kun je de meegeleverde code in je sketch kopiëren. De eerste stap is het opnemen van het bibliotheekbestand, wat de Arduino toegang geeft tot de functies die nodig zijn om met de MAX6675-chip te communiceren (in video op 03:55). Vervolgens definieer je de pinnen waarmee de module is verbonden. Dit zijn de enige regels code die je moet wijzigen als je besluit andere pinnen op je Arduino te gebruiken (in video op 04:52).


int soPin = 4;// SO=Serial Out
int csPin = 5;// CS = chip select CS pin
int sckPin = 6;// SCK = Serial Clock pin

Na het definiëren van de pinnen maken we een instantie van de MAX6675-klasse. De volgorde van de argumenten in deze regel is cruciaal; ze moeten in de volgorde van sckPin, csPin en soPin staan. Het omwisselen ervan voorkomt dat de sensor correct werkt (in video op 05:21).


MAX6675 robojax(sckPin, csPin, soPin);// create instance object of MAX6675

In de functie setup() initialiseren we de seriële monitor met een baudrate van 9600, zodat we de temperatuurmetingen op onze computer kunnen bekijken (in video op 05:41). De hoofdlogica bevindt zich in de functie loop(). Hier roepen we de methoden readCelsius() en readFahrenheit() van het object robojax aan om de temperatuur op te halen en deze naar de seriële monitor te printen. Aan het einde van de loop wordt een vertraging van 1000 milliseconden (1 seconde) toegevoegd om de verversingssnelheid in te stellen (in video op 05:54). Als je snellere updates wilt, kun je deze vertraging verminderen tot 100 milliseconden of minder (in video op 08:44).


Serial.print("C = "); 
Serial.print(robojax.readCelsius());
Serial.print(" F = ");
Serial.println(robojax.readFahrenheit());
delay(1000);

Deze code is een basale uitleestest. Je kunt deze gemakkelijk uitbreiden om acties te triggeren op basis van temperatuurdrempels. Je kunt bijvoorbeeld een if-instructie gebruiken om te controleren of de temperatuur een bepaalde waarde overschrijdt en vervolgens een ventilator inschakelen om een systeem te koelen, of een verwarming inschakelen als de temperatuur te laag wordt (in video op 06:42).

Live projectdemonstratie

Om de mogelijkheden van de sensor te demonstreren, toont de video hoe de thermokoppel wordt verhit met een heteluchtpistool. Terwijl de warmte wordt toegepast, neemt de temperatuurmeting op de seriële monitor snel toe. De demonstratie toont dat de temperatuur boven de 125 graden Celsius uitkomt, met de bijbehorende Fahrenheit-waarde ernaast weergegeven (in video op 08:25). Zodra het heteluchtpistool wordt verwijderd, zie je de temperatuur geleidelijk afkoelen, wat de nauwkeurigheid en responsiviteit van de sensor bevestigt. Deze realtime feedback maakt de MAX6675-module een uitstekende keuze voor elk project dat nauwkeurige monitoring van hoge temperaturen vereist.

Video-hoofdstukken

  • [00:00] Introductie en projectoverzicht
  • [01:15] Hardware uitgelegd
  • [02:41] Bedrading uitgelegd
  • [03:28] Code uitgelegd
  • [07:26] Demonstratie van temperatuurmeting

Afbeeldingen

MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
K-Type Thermocoupler module with wire
K-Type Thermocoupler module with wire
K-Type thermocoupler connector
K-Type thermocoupler connector
Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
171-How to use a MAX6675 thermocouple K-type sensor with Arduino
Taal: C++
// 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);
}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Bestanden📁

Andere bestanden