Measure high temperatures with K-type thermocouple + MAX 6675 with Arduino
Hello, and welcome to this tutorial, today we’re using a new type of temperature measure: a type K thermocouple with MAX6675 IC, the thermocouple uses the Seebeck effect to generate a continous voltage proportional to the temperature and there’s a chart that shows you the approximate values in mV for example 30°C can generate 1.2 mV… I did some measure with the multimeter in the tutorial video, but these values are too small to be exploited directly with the Arduino board, that’s why we add the MAX 6675 to convert the signal given by the probe to a digital signal, this chip can convert from 0°C to 1024 °C (Don’t put the chip there though :D).
The library I’m using can deliver both Celsius and Fahrenheit without any math.
This module and probe are very good for high temperatures projects, also the probe has a robust wire and water resist.
This is the module I’ve used, there’s two inputs for the thermocouple, don’t forget that’s polarized, (Yellow/Red) = ( + / – ), (Red/Blue) = ( + / – ) … Yellow/Red is the common industrial colors, but some versions like the one I’m using has Red/Blue.
Wiring:
or with LCD i2c screen
Libraries:
- The Module library Adafruit MAX6675 Download here
- LCD i2c NewLiquid library Download Here
Codes:
- The first code I’ve used is an example from the library and you can download a modified version here
- The second code works with an LCD i2c screen download here
Since they’re small here’s txt version too.
Code 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/*This code is to work with MAX6675 k-type thermocouple converter *It reads the data from the module and shows the temperature values in C and F *Modified from Example code http://www.ladyada.net/learn/sensors/thermocouple *Refer to http://www.SurtrTech.com for more details */ #include <max6675.h> int thermoDO = 4; int thermoCS = 5; int thermoCLK = 6; MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); void setup() { Serial.begin(9600); delay(500); } void loop() { Serial.print("C = "); Serial.print(thermocouple.readCelsius()); Serial.print("\t"); Serial.print("F = "); Serial.println(thermocouple.readFahrenheit()); delay(1000); } |
Code 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
/* This code works with MAX6675 k type thermocouple converter and LCD i2c Screen * It reads the data and show temperature value in F and C on LCD i2c screen * Refer to http://www.SurtrTech.com for more details */ #include <max6675.h> #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x27 //I2C adress, you should use the code to scan the adress first (0x27) here #define BACKLIGHT_PIN 3 // Declaring LCD Pins #define En_pin 2 #define Rw_pin 1 #define Rs_pin 0 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 int thermoDO = 4; int thermoCS = 5; int thermoCLK = 6; LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); void setup() { lcd.begin (16,2); lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); //Lighting backlight lcd.home (); } void loop() { lcd.print("C= "); lcd.setCursor(4,0); lcd.print(thermocouple.readCelsius()); lcd.setCursor(0,1); lcd.print("F= "); lcd.setCursor(4,1); lcd.print(thermocouple.readFahrenheit()); delay(1000); lcd.clear(); } |
I hope you like it, and if there’s any problem contact me.
Categories
Yassine View All
Automation and Electrical Engineer, Electronics amateur trying to share my little projects.
Loved your project and being a novice here would love to know exactly what products you are using so that I can buy them and follow your project. Assume I know nothing. Can you please help me with the list of items for this project?