ماژول سنسور دما غیر تماسی MLX90614
ماژول MLX90614ESF-AAA یک ترمومتر اینفرارد(مادون قرمز) است که برای سنجش دما بدون تماس طراحی شده است. داشتن 17 بیت ADC داخلی و یک پردازشگر سیگنال قدرتمند نظیر آردوینو امکان اندازه گیری دقیق و درست را برای این ماژول فراهم می کند. این ماژول کاربرد گسترده ای در اندازه گیری دمای بدن و تشخیص حرکت دارد. این ماژول خروجی را به دو روش PWM و (SMBUS (TWI,I2C فراهم می کند. خروجی 10 بیتی PWM دارای دقتی برابر با 0.14 درجه سانتی گراد است درحالی که ارتباط TWI دارای دقت 0.02 درجه سانتی گراد می باشد. مقدار اندازه گیری شده توسط ماژول میانگین دمای همه اشیاء موجود در میدان قابل سنجش سنسور این ماژول است.ماژول MLX90614 در دمای اتاق دقت اندازه گیری برابر 0.5 درجه سانتی گراد را ارائه می دهد.
ویژگی ها
کالیبره شده در کارخانه
SMBUS سازگار با رابط دیجیتال
خروجی PWM قابل برنامه ریزی برای خواندن مداوم
40- تا +85 درجه سانتی گراد محدوده دمای سنسور (دمای خود سنسور نماید از این محدوده تجاوز نماید)
70- تا +380 درجه سانتی گراد محدوده اندازه گیری دمای اجسام توسط سنسور
ولتاژ تغذیه: 4.5V تا 5V
دقت اندازه گیری :0.02 درجه سانتی گراد
دارای نشانگر LED به هنگام اتصال به تغذیه
مثال
در مثال زیر با نزدیک کردن دست خود به سنسور متصل به آردوینو می توانید اندازه گیری دقیق دما را توسط این سنسور درSerial Monitor مشاهده کنید.
کد:
#include <i2cmaster.h>
void setup(){
Serial.begin(9600);
Serial.println("Setup...");
i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
}
void loop(){
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);
// read
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
double tempData = 0x0000; // zero out the data
int frac; // data past the decimal point
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;
float celcius = tempData - 273.15;
float fahrenheit = (celcius*1.8) + 32;
Serial.print("Celcius: ");
Serial.println(celcius);
Serial.print("Fahrenheit: ");
Serial.println(fahrenheit);
delay(1000); // wait a second before printing again
}
مرجع:
MLX90614 Contactless Temperature Sensor Module (unassembled) [SEN_TEM_MLX_01A] - $26.50 : Elechouse, Arduino Play House
جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.