dav

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


Warning: Undefined array key "tie_hide_meta" in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

Warning: Trying to access array offset on value of type null in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

هر وقت بحث از خوندن دما در محدوده های بالا میشه ناخودآگاه به سمت ترموکوپل ها کشیده میشین. خب این قطعات کاملا صنعتی هستن و مطابق با نیاز بازار در مدل های مختلفی تولید و عرضه میشن.

اگر مایلین قبل از خوندن مطالب پایین اطلاعاتتون رو در مورد ترموکوپل افزایش بدین به اینجا مراجعه کنید.

و اما بریم سر بحث راه اندازی ترموکوپل …

جدیدا استفاده از بردهای اردوینو بین تمام افراد در شاخه های مختلف به شدت افزایش پیدا کرده. متناسب با این افزایش کم و بیش می بینم مطالبی در سایتها قرار داده میشه که متاسفانه بیشتر از سایت های خارجی صرفا کپی میشه و گاها چند پاراگرافی هم از متون اونها به فارسی ترجمه میشه.

موردی که در بحث کار با اردوینو و پروژه های مربوط به اون هست این که تقریبا ۹۰ درصد اموزش ها و بحث ها در سطوح مبتدی هستن و انچنان اموزشی برای کارهای خاص و نیازهای در حد متوسط به بالا وجود نداره.

اولین پروژه ای که در سایت قرار می گیره با استفاده از کتابخانه های آماده سطح نت و با استفاده از مثال های موجود هستش اما تصمیم دارم در صورت حمایت دوستان اموزش های بعدی رو به صورت پروژه های کاربردی قرار بدم تا هم منبع اموزشی برای دوستان کم تجربه تر باشه و هم منبعی برای کسب ایده.

 

توضیحاتی در مورد تراشه MAX6675

A simple SPI serial port temperature output
Temperature range 2,0 ~ 1024 , the converter temperature resolution of 0.25 ° C
on-chip cold junction compensation
high-impedance differential inputs
thermocouple break detection
wide operating voltage range 3. 0 ~ 5. 5V, Working current 50mA
the operating temperature range of -20 ~ 85
۲۰۰۰V of ESD Signal
Supply voltage: 3 ~ 5V DC

به صورت کلی بگم که این تراشه خودش کارهای لازم جهت استفاده از ترموکوپل رو انجام میده و در نهایت با پروتکل SPI میتونیم دیتای مورد نظر رو دریافت کنیم. چون هدف راه اندازی اولیه هستش نمی خوام وارد مباحث مربوط به ارسال و دریافت دیتا و سایر موارد بشم. البته در یک بخش دیگه به صورت ویژه توضیحاتی رو خدمتتون ارائه میدم.

فقط به یک نکته دقت کنید که سرعت پاسخ دهی این ماژول زیاد نیست و باید بین هر باز خوندن دیتا تاخیری در حد ۵۰۰ میلی ثانیه رو در نظر بگیرید.

نحوه اتصال ماژول به برد آردوینو در تصویر زیر مشخص شده. دقت داشته باشید که در این اتصالات تغذیه ماژول از پین های میکروکنترلر گرفته شده و شما می تونید اونها رو از +۵ ولت و زمین برد هم بگیرید.

پین های نمایشگر هم به صورت زیر متصل شده اند:

RS = 8
EN = 9
DB4 = 10
DB5 = 11
DB6 = 12
DB7 = 13

سورس برنامه به صورت زیر خواهد بود.

/ this example is public domain. enjoy!

#include <max6675.h>
#include <LiquidCrystal.h>
#include <Wire.h>

int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

// make a cute degree symbol
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};

void setup() {
  Serial.begin(9600);
  // use Arduino pins 
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  
  lcd.begin(16, 2);
  lcd.createChar(0, degree);

  // wait for MAX chip to stabilize
  delay(500);
}

void loop() {
  // basic readout test, just print the current temp
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("MAX6675 @CTTF_ir");
  
  // go to line #1
  lcd.setCursor(0,1);
  lcd.print(thermocouple.readCelsius());
#if ARDUINO >= 100
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print("C ");
  lcd.print(thermocouple.readFahrenheit());
#if ARDUINO >= 100
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print('F');
  
  delay(1000);
#include <max6675.h>
#include <LiquidCrystal.h>
#include <Wire.h>
 
int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;
 
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
 
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
 
// make a cute degree symbol
uint8_t degree[8]  = {140,146,146,140,128,128,128,128};
 
void setup() {
  Serial.begin(9600);
  // use Arduino pins 
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  
  lcd.begin(16, 2);
  lcd.createChar(0, degree);
 
  // wait for MAX chip to stabilize
  delay(500);
}
 
void loop() {
  // basic readout test, just print the current temp
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("MAX6675 @CTTF_ir");
  
  // go to line #1
  lcd.setCursor(0,1);
  lcd.print(thermocouple.readCelsius());
#if ARDUINO >= 100
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print("C ");
  lcd.print(thermocouple.readFahrenheit());
#if ARDUINO >= 100
  lcd.write((byte)0);
#else
  lcd.print(0, BYTE);
#endif
  lcd.print('F');
  
  delay(1000);
}</span>

برنامه به این صورت کار می کنه که با روشن کردن برد و اعمال تغذیه به صورت مدام سنسور چک میشه و دما بر اساس سانتی گراد و فارنهایت بر روی نمایشگر کاراکتری نمایش داده میشه.

اینم فایل پروژه جهت استفاده در کامپایلر آردوینو

ویدیو نحوه عملکرد مدار

یک نظر

  1. سلام
    سپاسگذارم از لطفتون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *