Bu eğitim şunun parçasıdır: Arduino Kullanarak Röle Kontrolü
Bu, röle ile ilgili tüm videoların yer aldığı bir gruptur. Diğer videolara ait bağlantılar bu yazının altında bulunmaktadır.
MAX6675 K-Tipi Termokupl ile Röle ve Ekran Kullanımı
Bu proje, bir MAX6675 K-tipi termokuplun Arduino ile nasıl arayüzleneceğini gösterir; kontrol için bir röle ve sıcaklık okumaları için bir ekran içerir. Bu kurulum, hassas sıcaklık izleme ve otomatik yanıtların gerekli olduğu çeşitli uygulamalar için çok değerlidir. İşte bazı proje fikirleri:

- Hassas elektronikler için aşırı ısınma koruması
- Biyolojik deneyler için sıcaklık kontrollü inkübatör
- Kahve veya bira için otomatik demleme sistemi
- Endüstriyel proses izleme ve kontrolü
- Sera veya diğer kontrollü ortamlarda çevresel izleme
Donanım/Bileşenler
Bu projeyi oluşturmak için aşağıdaki bileşenlere ihtiyacınız olacak:
- Arduino Uno (veya uyumlu kart)
- MAX6675 K-tipi termokupl modülü (videoda 00:58'de)
- Röle modülü
- TM1637 4 haneli LED ekran modülü
- Jumper kablolar
- Bağlantı kabloları
Bağlantı Rehberi
Bağlantılar videoda açıklanmıştır (videoda 05:36'da). Spesifik bağlantılar, yüzeye montaj çip mi yoksa PCB modülü mü kullandığınıza bağlıdır. Detaylı bir bağlantı şeması için videoya bakın.

Kod Açıklaması
Arduino kodu, termokupltan sıcaklık değerlerini okumak için MAX6675 kütüphanesini kullanır. Kodun yapılandırılabilir kilit kısımları şunlardır:
- Termokupl pin tanımları:
thermoDO,thermoCSvethermoCLK(videoda [03:53]). Bu pinlerin bağlantı şemanıza göre ayarlanması gerekir. - Röle kontrol pini: Röleyi kontrol etmek için Pin 10 kullanılır (videoda [05:36]). Gerekirse bunu değiştirin.
- Ekran yapılandırması (kullanılıyorsa): Kod, TM1637 ekranını yapılandırmak için bölümler içerir. Gerekirse CLK ve DIO pinlerini ayarlayın (videoda [03:53]).
Kod, sıcaklığı Santigrat ve Fahrenheit cinsinden okumak için fonksiyonlar içerir. Kodun önemli bir kısmı, sıcaklığın bir eşiği (bu örnekte 80.0°C) aşıp aşmadığını kontrol eden koşullu ifadedir. Aşarsa, röle etkinleştirilir (pin 10 LOW olur).
// Sıcaklık 80.0C'nin üzerine çıkarsa, röleyi AÇ
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// Pin 10'u LOW yap
} else {
digitalWrite(10, HIGH);// Pin 10'u HIGH yap
}
Canlı Proje/Gösterim
Video, projeyi çalışırken gösterir (videoda 06:59'da). Sensör ortam sıcaklığını doğru okur ve ısıtıldığında artar. Röle işlevselliği de sergilenir.
Bölümler
- [00:00] Giriş
- [00:39] Sensör Genel Bakışı
- [01:40] Pin Bağlantıları
- [02:22] Kütüphane Kurulumu
- [03:53] Kod Açıklaması (Kurulum)
- [04:06] Kod Açıklaması (Döngü)
- [05:36] Bağlantı
- [06:59] Canlı Gösterim
Bu eğitim şunun parçasıdır: Arduino Kullanarak Röle Kontrolü
- Arduino Kodu ve Çift Kanallı 5V Röle için Video
- 5V Röle ile Arduino Kullanarak AC veya DC yükü (ampul veya motor gibi) kontrol etme
- TTP224 4 Kanallı Dokunmatik Sensör ile Röle Üzerinden AC/DC Yükleri Kontrol Etme
- Arduino ile 5V Röle Modülü (Düşük Tetikleme) Kullanma
- Bir Reed Switch Kullanarak Arduino ile Bir Röleyi ve AC/DC Yükleri Kontrol Etme
- Bir TTP223B dokunmatik modülü ve röle kullanarak Arduino ile AC/DC yükleri kontrol etme
- Arduino butonu kullanarak bir röleyi ve AC ampulü anahtarlamak
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE.
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
Serial.println("Robojax: MAX6675 test");
// Wait for MAX chip to stabilize
delay(500);
}
void loop() {
// Basic readout test, just print the current temperature
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// Set pin 10 LOW
}else{
digitalWrite(10, HIGH);// Set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT);// set pin 10 as output
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// set pin 10 LOW
}else{
digitalWrite(10, HIGH);// set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* The temperature is also displayed on the display.
* You must include the TM1637 library to make the display work.
* You can download the TM1637 from http://robojax.com/learn/library
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: December 9, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// Code for display
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// Code for display end
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// Use Arduino pins
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT);// set pin 10 as output
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// Basic readout test, just print the current temp
// Code for display
display.setBrightness(0x0f);
// All segments on
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// Code for display end
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW);// set pin 10 LOW
}else{
digitalWrite(10, HIGH);// set pin 10 HIGH
}
delay(1000);
}
/*
* This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display
* The output pin 10 is connected to the relay.
* When the temperature reaches the desired value, pin 10 turns the
* relay ON.
* This code has been explained in our video at https://youtu.be/cD5oOu4N_AE
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: June 02, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
int thermoDO1 = 4;
int thermoCS1 = 5;
int thermoCLK1 = 6;
int thermoDO2 = 7;
int thermoCS2 = 8;
int thermoCLK3 = 9;
MAX6675 thermocouple1(thermoCLK1, thermoCS1, thermoDO1);// first thermocouple
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2);// 2nd thermocouple
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// use Arduino pins
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT);// set pin 10 as output for thermocouple1
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT);// // set pin 13 as output for thermocouple2
Serial.println("Robojax: MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}
void loop() {
// basic readout test, just print the current temp
// for thermocouple 1
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// if temperature goes above 80.0C, turn the relay ON
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW);// set pin relayPin1 LOW
}else{
digitalWrite(relayPin1, HIGH);// set pin relayPin1 HIGH
}
// thermocouple1 end
// for thermocouple 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// if temperature goes above 80.0C, turn the relay ON
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW);// set pin relayPin2 LOW
}else{
digitalWrite(relayPin2, HIGH);// set pin relayPin2 HIGH
}
// thermocouple2 end
delay(1000);
}
Kaynaklar ve referanslar
Dosyalar📁
Diğer dosyalar
-
MAX6675 kütüphanesi
robojax-max6675-thermo.zip0.01 MB