این آموزش بخشی است از: کنترل رله با استفاده از آردوینو
این یک گروه از ویدیوهای مربوط به رله است. لینک سایر ویدیوها در زیر این مقاله قرار دارد.
استفاده از ماجیول MAX6675 برای ترموکوپل نوع K همراه با ریلی و نمایشگر
این پروژه نشان میدهد چگونه یک ترموکوپل نوع K با MAX6675 را به آردوینو متصل کنید، که در آن یک ریلی برای کنترل و یک نمایشگر برای خواندن دما گنجانده شده است. این پیکربندی برای کاربردهای مختلفی که نیاز به پایش دقیق دما و واکنشهای خودکار دارند، بسیار ارزشمند است. در اینجا چند ایدهٔ پروژه آورده شده است:

- محافظت در برابر گرمای بیش از حد برای تجهیزات الکترونیکی حساس
- انکوباتور با کنترل دما برای آزمایشهای زیستی
- سیستم خودکار دمآوری برای قهوه یا آبجو
- پایش و کنترل فرآیندهای صنعتی
- پایش محیطی در گلخانه یا سایر محیطهای کنترلشده
سختافزار/قطعات
برای ساخت این پروژه، به اجزای زیر نیاز خواهید داشت:
- آردوینو اونو (یا برد سازگار)
- ماجیول ترموکوپل نوع K MAX6675 (در ویدیو در 00:58)
- ماجیول ریلی
- ماجیول نمایشگر LED 4 رقمی TM1637
- سیمهای جامپر
- سیمهای اتصال
راهنمای سیمکشی
نحوهی سیمکشی در ویدئو توضیح داده شده (در ویدئو در 05:36). اتصالات مشخص بستگی به این دارد که آیا از تراشهی نصب سطحی استفاده میکنید یا از یک ماجیول PCB. برای نمودار سیمکشی دقیق به ویدئو مراجعه کنید.

شرح شِفر (کود)
شِفر (کود) آردوینو از کتابخانه MAX6675 برای خواندن مقادیر دما از ترموکوپل استفاده میکند. بخشهای کلیدی قابل پیکربندی در شِفر (کود) عبارتند از:
- تعاریف پایههای ترموکوپل:
thermoDO،thermoCS، وthermoCLK(در ویدئو در [03:53]). این پایهها باید مطابق طرح سیمکشی شما تنظیم شوند. - پایه کنترل ریلی: از پایه 10 برای کنترل ریلی استفاده میشود (در ویدئو در [05:36]). در صورت نیاز آن را تغییر دهید.
- پیکربندی نمایشگر (در صورت استفاده): شِفر (کود) شامل بخشهایی برای پیکربندی نمایشگر TM1637 است. در صورت نیاز پایههای CLK و DIO را تنظیم کنید (در ویدئو در [03:53]).
شِفر (کود) شامل توابعی برای خواندن دما به درجهٔ سلسیوس و فارنهایت است. بخش مهمی از شِفر (کود)، عبارت شرطیای است که بررسی میکند آیا دما از آستانهای فراتر رفته است (در این مثال 80.0°C). اگر اینطور باشد، ریلی فعال میشود (پایه 10 به حالت LOW میرود).
// 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
}
پروژه/نمایش زنده
ویدیو پروژه را در حال اجرا نشان میدهد (در ویدیو در 06:59). حساس(حس کننده) دمای محیط را با دقت میخواند و با گرم شدن دما افزایش مییابد. عملکرد ریلی نیز نشان داده میشود.
فصلها
- [00:00] مقدمه
- [00:39] نمای کلی حساس(حس کننده)
- [01:40] اتصالات پایهها
- [02:22] نصب کتابخانه
- [03:53] توضیح شِفر (کود) (راهاندازی)
- [04:06] توضیح شِفر (کود) (حلقه)
- [05:36] سیمکشی
- [06:59] نمایش زنده
این آموزش بخشی از: کنترل رله با استفاده از آردوینو
- Arduino Code and Video for a Dual-Channel 5V Relay
- کنترل ریلی 5V با استفاده از آردوینو برای راهاندازی بار AC یا DC مانند لامپ یا موتور
- TTP224 حساس(حس کننده) لمسی 4 کاناله برای قطع و وصل بارهای AC/DC با ریلی
- استفاده از ماجیول ریلی ۵ ولت (کم-تحریک) با آردوینو
- استفاده از سوئیچ رید برای کنترل ریلی و بارهای AC/DC با آردوینو
- استفاده از ماجیول لمسی TTP223B و ریلی برای کنترل بارهای AC/DC با آردوینو
- استفاده از یک دکمه فشاری آردوینو برای قطع و وصل کردن ریلی و لامپ AC
/*
* 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);
}
/*
* این شِفر (کود) آردوینو برای ترموکوپل K-Type MAX6675 با ریلی و نمایشگر میباشد.
* پایه خروجی ۱۰ به ریلی متصل است.
* زمانی که دما به مقدار مطلوب میرسد، پایه ۱۰ ریلی را روشن میکند.
*
* این شِفر (کود) در ویدیوی ما در https://youtu.be/cD5oOu4N_AE توضیح داده شده است.
*
* نوشته شده توسط احمد نجربی برای ویدیو روبوجکس
* تاریخ: ۹ دسامبر ۲۰۱۷، در اِجَکس، انتاریو، کانادا
* اجازه داده شده است که این شِفر (کود) به اشتراک گذاشته شود به شرط آنکه این
* یادداشت همراه شِفر (کود) نگهداشته شود.
* سلب مسئولیت: این شِفر (کود) به صورت "همانطور که هست" و فقط برای مقاصد آموزشی ارائه شده است.
*/
#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);
// پایههای آردوینو را استفاده کنید
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // پایه ۱۰ را به عنوان خروجی تنظیم کنید
Serial.println("Robojax: MAX6675 test");
// منتظر بمانید تا چیپ MAX تثبیت شود
delay(500);
}
void loop() {
// امتحان قرائت پایه، فقط دمای فعلی را چاپ کن
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// اگر دما بالای 80.0 درجه سانتیگراد برود، ریلی را روشن کنید.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // پایه 10 را LOW تنظیم کن
}else{
digitalWrite(10, HIGH); // پایه 10 را HIGH تنظیم کن
}
delay(1000);
}
/*
* این شِفر (کود) آردوینو برای حساس(حس کننده) حرارتی K-Type MAX6675 با ریلی و نمایشگر است.
* پایه خروجی ۱۰ به ریلی متصل شده است.
* هنگامی که دما به مقدار مورد نظر میرسد، پایه ۱۰ ریلی را روشن میکند.
* دما همچنین روی نمایشگر نمایش داده میشود.
* شما باید کتابخانه TM1637 را شامل کنید تا نمایشگر کار کند.
* شما میتوانید TM1637 را از http://robojax.com/learn/library دانلود کنید.
* این شِفر (کود) در ویدیوی ما در https://youtu.be/cD5oOu4N_AE توضیح داده شده است.
*
* نویسنده: احمد نجربی برای ویدیوهای Robojax
* تاریخ: ۹ دسامبر ۲۰۱۷، در اِجَکس، انتاریو، کانادا
* اجازه داده شده است که این شِفر (کود) به اشتراک گذاشته شود به شرطی که این
* یادداشت همراه شِفر (کود) حفظ شود.
* توجه: این شِفر (کود) "به همان صورت" و صرفاً برای اهداف آموزشی است.
*/
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
// شِفر (کود) برای نمایش
#define CLK 2
#define DIO 3
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
// شِفر (کود) برای نمایش پایان
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
void setup() {
Serial.begin(9600);
// از پایههای آردوینو استفاده کنید
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(10, OUTPUT); // پایه ۱۰ را به عنوان خروجی تنظیم کنید
Serial.println("Robojax: MAX6675 test");
// منتظر بمانید تا چیپ MAX پایدار شود.
delay(500);
}
void loop() {
// آزمون خواندن پایه، فقط دمای فعلی را چاپ کنید
// شِفر (کود) برای نمایش
display.setBrightness(0x0f);
// تمام بخشها فعال است
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
delay(1);
int temp = (int) thermocouple.readCelsius();
display.showNumberDec(temp, true, 3, 0);
// شِفر (کود) برای نمایش پایان
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// اگر دما بالای 80.0 درجه سلسیوس برود، ریلی را روشن کنید.
if(thermocouple.readCelsius() > 80.00){
digitalWrite(10, LOW); // پایه ۱۰ را LOW تنظیم کن
}else{
digitalWrite(10, HIGH); // پایه ۱۰ را بالا تنظیم کن
}
delay(1000);
}
/*
* این شِفر (کود) آردوینو برای ترموکوپل K-Type MAX6675 با ریلی و نمایشگر است.
* پایه خروجی 10 به ریلی متصل شده است.
* زمانی که دما به مقدار مورد نظر برسد، پایه 10 ریلی را روشن میکند.
*
* این شِفر (کود) در ویدیوی ما در https://youtu.be/cD5oOu4N_AE توضیح داده شده است.
*
* نوشته شده توسط احمد شمشیری برای ویدیوی روبوجکس
* تاریخ: 2 ژوئن 2018، در اِجَکس، انتاریو، کانادا
* اجازه داده شده است که این شِفر (کود) به اشتراک گذاشته شود به شرطی که این
* یادداشت همراه شِفر (کود) باقی بماند.
* سلب مسئولیت: این شِفر (کود) "به صورت فعلی" و فقط برای اهداف آموزشی است.
*/
#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); // اولین ترموکوپل
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // ترموکوپل دوم
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;
int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;
void setup() {
Serial.begin(9600);
// از پایههای آردوینو استفاده کنید
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin1, OUTPUT); // پایه 10 را به عنوان خروجی برای ترموکوپل 1 تنظیم کنید
pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
pinMode(relayPin2, OUTPUT); // پایه ۱۳ را به عنوان خروجی برای ترموکوپل ۲ تنظیم کنید.
Serial.println("Robojax: MAX6675 test");
// برای تثبیت چیپ MAX صبر کنید
delay(500);
}
void loop() {
// امتحان خواندن پایه، فقط دمای فعلی را چاپ کنید.
// برای ترموکوپل ۱
Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());
// اگر دما بالای 80.0 درجه سانتیگراد رفت، ریلی را روشن کنید.
if(thermocouple1.readCelsius() > 80.00){
digitalWrite(relayPin1, LOW); // پایه relayPin1 را LOW تنظیم کن
}else{
digitalWrite(relayPin1, HIGH); // پایه relayPin1 را بالا تنظیم کن
}
// ترموکوپل1 انتها
// برای ترموکوپل 2
Serial.print("C2 = ");
Serial.println(thermocouple2.readCelsius());
Serial.print("F2 = ");
Serial.println(thermocouple2.readFahrenheit());
// اگر دما بالای 80.0 درجه سانتیگراد رفت، ریلی را روشن کنید.
if(thermocouple2.readCelsius() > 80.00){
digitalWrite(relayPin2, LOW); // پایه relayPin2 را پایین تنظیم کن
}else{
digitalWrite(relayPin2, HIGH); // پایه relayPin2 را HIGH تنظیم کن
}
// پایان ترموکوپل2
delay(1000);
}
منابع و مراجع
فایلها📁
هیچ فایلی موجود نیست.