شِفر (کود) جستجو

استفاده از ماجیول MAX6675 برای ترموکوپل نوع K همراه با ریلی و نمایشگر

استفاده از ماجیول MAX6675 برای ترموکوپل نوع K همراه با ریلی و نمایشگر

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

MAX6675 Thermocoupler module
  • محافظت در برابر گرمای بیش از حد برای تجهیزات الکترونیکی حساس
  • انکوباتور با کنترل دما برای آزمایش‌های زیستی
  • سیستم خودکار دم‌آوری برای قهوه یا آبجو
  • پایش و کنترل فرآیندهای صنعتی
  • پایش محیطی در گلخانه یا سایر محیط‌های کنترل‌شده

سخت‌افزار/قطعات

برای ساخت این پروژه، به اجزای زیر نیاز خواهید داشت:

  • آردوینو اونو (یا برد سازگار)
  • ماجیول ترموکوپل نوع K MAX6675 (در ویدیو در 00:58)
  • ماجیول ریلی
  • ماجیول نمایشگر LED 4 رقمی TM1637
  • سیم‌های جامپر
  • سیم‌های اتصال

راهنمای سیم‌کشی

نحوه‌ی سیم‌کشی در ویدئو توضیح داده شده (در ویدئو در 05:36). اتصالات مشخص بستگی به این دارد که آیا از تراشه‌ی نصب سطحی استفاده می‌کنید یا از یک ماجیول PCB. برای نمودار سیم‌کشی دقیق به ویدئو مراجعه کنید.

Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module

شرح شِفر (کود)

شِفر (کود) آردوینو از کتابخانه 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] نمایش زنده

تصاویر

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
24-Arduino code for a MAX6675 K-type thermocouple (without relay and display)
زبان: C++
/*
 * 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);
}
25-Arduino code for a MAX6675 K-type thermocouple with relay (no display)
زبان: C++
/*
 * این شِفر (کود) آردوینو برای ترموکوپل 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);
}
26-Arduino code for a MAX6675 K-type thermocouple with relay and display
زبان: C++
/*
 * این شِفر (کود) آردوینو برای حساس(حس کننده) حرارتی 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);
}
27-Arduino code for two MAX6675 K-type thermocouples with relay (no display)
زبان: C++
/*
 * این شِفر (کود) آردوینو برای ترموکوپل 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);
}

فایل‌ها📁

هیچ فایلی موجود نیست.