برای اندازه گیری دما انواع مختلفی از سنسورها موجود است، اگر می خواهید دما را به روش غیر تماسی تشخیص دهید، سنسور دماسنج مادون قرمز در درجه اول قرار می گیرد. دماسنج مادون قرمز MLX90614 از melexis یک دستگاه سنجش دمای غیر تماسی است.
سنسور دمای LM35 خروجی را به گرمای کاهش یافته روی دستگاه حسگر می دهد، اما نمی توانید برای تشخیص مقدار دقیق دما وارد آتش شودولی سنسور MLX90614 دما را بدون تماس نشان می دهد.
پایه های MLX90614ESF-BAA
کاربرد پین
VSS : زمین. قوطی فلزی نیز به این پین متصل است.
SCL / Vz : ورودی ساعت سریال برای پروتکل ارتباطی 2 سیمی.
PWM / SDA : ورودی / خروجی دیجیتال. مدولاسیون عرض پالس یا سریال داده ها برای پروتکل ارتباطات 2 سیمی.
VDD : ولتاژ منبع تغذیه خارجی.
این سنسور شامل ADC 17 بیتی است و داشتن یک DSP قدرتمند به دقت و وضوح بالا کمک می کند. این سنسور دو روش خروجی را ارائه می دهد : PWM و I²C.دقت اندازه گیری این خروجی ها متفاوت است . مثلا اگر خروجی را PWM را 10 بیت در نظر بگیرید خروجی PWM وضوح 0.14 ºC و روش I²C وضوح 0.02 ºC را ارائه می دهد.
MLX90614 در محدوده دمایی وسیع، از 40- تا 85 درجه سانتیگراد برای دمای محیط و 70- تا 382.2 درجه سانتیگراد برای دمای جسم کالیبره شده است.
دماسنج مادون قرمز چگونه کار می کند؟
ما می دانیم که هر جسمی پرتوهای نور مادون قرمز ساطع می کند، غلظت آن بستگی به دما دارد، اما این اشعه برای چشم انسان قابل مشاهده نیست. با تشخیص پرتوهای زیر قرمز می توانیم محدوده دما را مشخص کنیم. سنسور دماسنج MLX90614 هم همین کار را می کند.
این سنسور دارای دو بخش است:
1. آشکارساز ترموپیل : که وظیفه تبدیل انرژی حرارتی به انرژی الکتریکی را بر عهده دارد.
2. بخش پردازش سیگنال : سیگنال تولید شده را آشکارساز ترموپیل پردازش می کند و سیگنال قابل خواندن توسط دستگاه های خارجی را تولید میکند.
بخش پردازش سیگنال دارای بلوک ADC 17 بیتی برای تبدیل سیگنال شناسایی شده توسط ترموپیل و بلوک کالیبره شده DSP (پردازش سیگنال دیجیتال) پس از عبور سیگنال خروجی از پایانه های PWM و I²C/TWI، خروجی را قابل اندازه گیری میکند.
مدار کاربردی
سنسور دماسنج MLX90614 یک دستگاه Plug & Play است از این رو می توانیم مستقیماً به یک دستگاه هشدار دهنده متصل کرد و به راحتی از آن استفاده کرد.
متصل کردن MLX90614
میکرو کنترلرها دارای راه ارتباطی I2C برای اتصال با لوازم جانبی خارجی هستند، دماسنج MLX90614 هم دارای خطوط ارتباطی I2C است تا بتوانیم این سنسور را به میکروکنترلر بدون مدارهای اضافی متصل کنیم.
سنسور با منبع تغذیه 3.3 ولت Dc کار می کند، اگر میکروکنترلر با 5 ولت DC کار کند، ما ولتاژ را به وسیله یک مقاومت بین خطوط SDA و SCL به +3.3 ولت تبدیل میکنیم.
ساخت دماسنج با MLX90614 و آردوینو
بردهای آردوینو دارای خطوط ارتباطی I²C هستند و ارتباط با I²C توسط سیم هدر آسان است. در این مقاله از برد آردوینو uno برای تست استفاده میکنیم.
سنسور را مطابق تصویر وصل کنید و منبع تغذیه +3.3 ولت DC را از برد آردوینو به سنسور ارائه دهید. در اینجا از مقاومتهای 4.7KΩ برای ایجاد کشش روی خطوط I²C استفاده میشود.
کد آردوینو دماسنج مادون قرمز
/****************************************************
MLX90614 ------------- Arduino
VDD ------------------ 3.3V
VSS ------------------ GND
SDA ------------------ SDA (A4 on older boards)
SCL ------------------ SCL (A5 on older boards)
*****************************************************/
#include <Wire.h> // I2C library, required for MLX90614
#include <SparkFunMLX90614.h> // SparkFunMLX90614 Arduino library
IRTherm therm; // Create an IRTherm object to interact with throughout
const byte LED_PIN = 8; // Optional LED attached to pin 8 (active low)
void setup()
{
Serial.begin(9600); // Initialize Serial to log output
therm.begin(); // Initialize thermal IR sensor
therm.setUnit(TEMP_F); // Set the library's units to Farenheit
// Alternatively, TEMP_F can be replaced with TEMP_C for Celsius or
// TEMP_K for Kelvin.
pinMode(LED_PIN, OUTPUT); // LED pin as output
setLED(LOW); // LED OFF
}
void loop()
{
setLED(HIGH); //LED on
// Call therm.read() to read object and ambient temperatures from the sensor.
if (therm.read()) // On success, read() will return 1, on fail 0.
{
// Use the object() and ambient() functions to grab the object and ambient
// temperatures.
// They'll be floats, calculated out to the unit you set with setUnit().
Serial.print("Object: " + String(therm.object(), 2));
Serial.write('°'); // Degree Symbol
Serial.println("F");
Serial.print("Ambient: " + String(therm.ambient(), 2));
Serial.write('°'); // Degree Symbol
Serial.println("F");
Serial.println();
}
setLED(LOW);
delay(500);
}
void setLED(bool on)
{
if (on)
digitalWrite(LED_PIN, LOW);
else
digitalWrite(LED_PIN, HIGH);
}
منابع