کد آردوینو سنسور دما مادون قرمز MLX90614 (بدون تماس)

از زمان ظهور COVID-19، اسکنرهای دمای مادون قرمز بدون تماس در سراسر جهان، از فرودگاهها تا رستورانها، ظاهر شدهاند. ممکن است شما کنجکاو باشید که این اسکنرهای دما چگونه کار میکنند یا شاید علاقهمند باشید که یکی از آنها را خودتان بسازید. در این صورت، ماژول Melexis MLX90614 ممکن است بهترین گزینه ارزانقیمت موجود باشد.
بررسی سختافزار ماژول MLX90614
در قلب این ماژول، یک سنسور دمای مادون قرمز با دقت بالا از شرکت Melexis به نام MLX90614 قرار دارد. برخلاف بیشتر سنسورهای دما، این سنسور بدون نیاز به تماس فیزیکی، دما را اندازهگیری میکند. این ویژگی میتواند برای نظارت بر دمای اجسام متحرک مانند شفت موتور در حال چرخش یا اجسام روی نوار نقاله بسیار مفید باشد. کافی است سنسور را به سمت جسم مورد نظر بگیرید و سنسور با جذب امواج مادون قرمز ساطع شده، دمای آن را تشخیص میدهد.

قابلیتها
ماژول MLX90614 دو اندازهگیری دما انجام میدهد: دمای جسم و دمای محیط. دمای جسم، اندازهگیری بدون تماسی است که توسط سنسور «مشاهده» میشود، در حالی که دمای محیط، دمای روی خود سنسور را اندازهگیری میکند. دمای محیط میتواند برای کالیبره کردن دادهها استفاده شود، اما آنچه ما واقعاً به آن نیاز داریم، اندازهگیری دمای جسم است.
از آنجا که این سنسور نیازی به تماس با جسم مورد اندازهگیری ندارد، میتواند طیف وسیعتری از دماها را نسبت به بیشتر سنسورهای دیجیتال اندازهگیری کند: دمای جسم از -70 تا 382.2 درجه سانتیگراد و دمای محیط از -40 تا 125 درجه سانتیگراد است. هر دو دمای محیط و جسم دارای دقت 0.02 درجه سانتیگراد و دقت استاندارد 0.5 درجه سانتیگراد در محدوده دمای اتاق هستند.
فیلتر نوری داخلی
ماژول MLX90614 دارای یک فیلتر نوری داخلی است که نور مرئی و نزدیک به مادون قرمز را قطع میکند و تأثیر آنها را بر اندازهگیریها کاهش میدهد. این فیلتر همچنین ایمنی در برابر نور محیط و نور خورشید را فراهم میکند.

نیازهای تغذیه
این ماژول مجهز به یک رگولاتور ولتاژ دقیق 3.3 ولت و یک مبدل سطح ولتاژ است، بنابراین میتوانید آن را با میکروکنترلرهای 3.3 ولت یا 5 ولت مورد علاقه خود بدون هیچ نگرانی استفاده کنید. ماژول MLX90614 در حین اندازهگیری کمتر از 2 میلیآمپر مصرف میکند. این مصرف کم انرژی امکان استفاده از آن در دستگاههای باتریخور مانند اسکنرهای حرارتی دستی را فراهم میکند.

مشخصات کامل
- دمای جسم: -70 تا 382.2 درجه سانتیگراد
- دمای محیط: -40 تا 85 درجه سانتیگراد
- دقت: ±0.5 درجه سانتیگراد (در محدوده دمای اتاق)
- وضوح: ±0.2 درجه سانتیگراد
- زاویه دید: 90 درجه
- ولتاژ تغذیه: 3.3 تا 5.5 ولت
- جریان کاری: 2 میلیآمپر
ترمومترهای مادون قرمز چگونه کار میکنند؟
اگر تا به حال از یک ترمومتر مادون قرمز استفاده کردهاید یا دیدهاید که شخصی از آن استفاده میکند، ممکن است از خود پرسیده باشید: “چگونه چنین اندازهگیریای ممکن است؟”
ترمومترهای مادون قرمز مانند MLX90614 از این واقعیت استفاده میکنند که هر جسمی، از جمله انسانها، در دمای بالاتر از صفر مطلق (0°K یا -273°C)، نور مادون قرمز (که برای چشم انسان نامرئی است) ساطع میکند که این نور مستقیماً با دمای جسم متناسب است.
در داخل، MLX90614 از دو دستگاه تشکیل شده است: یک دتکتور ترموپایل مادون قرمز و یک پردازنده سیگنال (ASSP). در اینجا بلوک دیاگرام داخلی MLX90614 نشان داده شده است که هر دو بخش ترموپایل و ASSP را شامل میشود.

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

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

میدان دید همچنین رابطه بین فاصله از یک جسم و منطقه حسگر را تعیین میکند. اگر سنسور نزدیک به جسم باشد، منطقه حسگر آن بسیار باریک است، اما با دور شدن از جسم، این منطقه گستردهتر میشود.
میدان دید MLX90614 مخروطی شکل و نسبتاً گسترده است: 90 درجه. این بدان معناست که به ازای هر 1 سانتیمتر دور شدن از جسم، منطقه حسگر 2 سانتیمتر افزایش مییابد. اگر شما در فاصله 30 سانتیمتری (تقریباً 1 فوت) از یک جسم باشید، منطقه حسگر 60 سانتیمتر (تقریباً 2 فوت) خواهد بود.

رابطهای خروجی MLX90614
ماژول MLX90614 از دو رابط پشتیبانی میکند؛ اگرچه شما برای دسترسی به یکی از آنها به دیگری نیاز دارید. رابط 2 سیمه SMBus روش اصلی ارتباط با MLX90614 است. پس از راهاندازی رابط SMBus، میتوانید MLX90614 را پیکربندی کنید تا یک سیگنال PWM (مدولاسیون عرض پالس) تولید کند که نشاندهنده دمای اندازهگیری شده است.
رابط SMBus
رابط اصلی MLX90614، رابط 2 سیمه SMBus است که اساساً مشابه I2C است (یک نوع کمی غیراستاندارد از I2C به نام “شروع مجدد”) و از دو سیگنال SDA و SCL برای انتقال داده و سیگنال ساعت استفاده میکند. یک دستگاه مستر سیگنال ساعت را کنترل میکند، در حالی که سیگنال داده به صورت دوطرفه کنترل میشود.
هر MLX90614 دارای آدرس پیشفرض I2C به صورت 0x5A است. با این حال، میتوان آن را برای داشتن یکی از 127 آدرس I2C برنامهریزی کرد تا بتوانید تا 127 دستگاه را به همان باس اضافه کنید و یک نقشه دمای بزرگتر دریافت کنید.
رابط PWM
دادههای MLX90614 همچنین میتوانند از طریق رابط PWM خوانده شوند. توجه داشته باشید که برای استفاده از رابط PWM، ابتدا باید MLX90614 از طریق SMBus پیکربندی شود.
پس از پیکربندی، MLX90614 یک سیگنال PWM 10 بیتی پیوسته روی پین SDA تولید میکند که نشاندهنده دمای جسم اندازهگیری شده است. به طور پیشفرض، سیگنال PWM محدوده -20 تا 120 درجه سانتیگراد را با وضوح خروجی 0.14 درجه سانتیگراد پوشش میدهد، اما این محدوده نیز میتواند از طریق SMBus تنظیم شود.
رله حرارتی/سوئیچ حرارتی
با پیکربندی این محدوده (تنظیم حداقل و حداکثر دما)، خروجی PWM میتواند به یک سیگنال “رله حرارتی/سوئیچ حرارتی” تبدیل شود. بنابراین، هنگامی که دما از آستانه تعیین شده فراتر رود، پین PWM فعال میشود که میتواند به عنوان یک منبع وقفه استفاده شود یا مستقیماً برای کنترل یک رله به کار رود. توجه داشته باشید که توان خروجی تنها 25 میلیآمپر است.
پینهای ماژول MLX90614
ماژول MLX90614 دارای اتصالات زیر است:

- VCC: پین تغذیه. میتوانید آن را به خروجی 3.3 ولت یا 5 ولت آردوینو متصل کنید.
- GND: زمین.
- SCL: پین ساعت I2C، به خط ساعت I2C آردوینو متصل میشود.
- SDA: پین داده I2C، به خط داده I2C آردوینو متصل میشود.
اتصال ماژول MLX90614 به آردوینو
حالا که همه چیز را درباره ماژول میدانیم، میتوانیم آن را به آردوینو متصل کنیم!
ابتدا پین VCC را به منبع تغذیه متصل کنید، 5 ولت مناسب است. از همان ولتاژی استفاده کنید که منطق میکروکنترلر شما بر اساس آن است. برای بیشتر آردوینوها، این ولتاژ 5 ولت است. برای دستگاههای با منطق 3.3 ولت، از 3.3 ولت استفاده کنید. حالا GND را به زمین مشترک متصل کنید.
پین SCL را به پین ساعت I2C و پین SDA را به پین داده I2C روی آردوینو متصل کنید. توجه داشته باشید که هر برد آردوینو پینهای I2C متفاوتی دارد که باید بر این اساس متصل شوند. در بردهای آردوینو با چیدمان R3، پینهای SDA (خط داده) و SCL (خط ساعت) روی هدرهای پین نزدیک به پین AREF قرار دارند. آنها همچنین به عنوان A5 (SCL) و A4 (SDA) شناخته میشوند.
تصویر زیر نحوه اتصال را نشان میدهد.

نصب کتابخانه
چندین کتابخانه برای سنسور MLX90614 موجود است. با این حال، در مثال ما از کتابخانه Adafruit استفاده میکنیم که بسیار ساده است، اما فقط از اندازهگیری دمای پایه پشتیبانی میکند و از ویژگیهای پیشرفته سنسور پشتیبانی نمیکند. این کتابخانه را میتوانید از طریق Library Manager در محیط Arduino IDE دانلود کنید.
برای نصب کتابخانه، به مسیر Sketch > Include Library > Manage Libraries… بروید. منتظر بمانید تا Library Manager فهرست کتابخانهها را دانلود کرده و لیست کتابخانههای نصبشده را بهروزرسانی کند.
جستجوی خود را با تایپ ‘adafruit mlx90614’ فیلتر کنید. روی ورودی کلیک کنید و سپس Install را انتخاب کنید.
کد آردوینو سنسور MLX90614
کد کامل این پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مختلف کد را توضیح میدهیم.
کد با اضافه کردن کتابخانه Adafruit_MLX90614 شروع میشود. در همان ناحیه یک آبجکت Adafruit_MLX90614 به نام mlx تعریف شده است.
#include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614();
در بخش setup، ارتباط سریال با کامپیوتر را راهاندازی میکنیم و تابع begin() را فراخوانی میکنیم. تابع begin() پروتکل ارتباطی I2C را راهاندازی میکند. این تابع به طور اختیاری یک پارامتر (آدرس 7 بیتی سنسور شما) میگیرد، اما اگر خالی بماند، فرض میکند که آدرس روی پیشفرض (0x5A) تنظیم شده است.
void setup() { Serial.begin(9600); while (!Serial); if (!mlx.begin()) { Serial.println("Error connecting to MLX sensor. Check wiring."); while (1); }; }
در بخش loop، به سادگی دمای فعلی محیط و جسم را با استفاده از توابع مختلف میخوانیم و در سریال مانیتور آردوینو چاپ میکنیم.
void loop() { Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F"); Serial.println(); delay(500); }
پس از آپلود کد ، مانیتور سریال خود را باز کنید و نرخ باد را روی 9600 bps تنظیم کنید. باید هر دو دمای محیط و جسم شروع به نمایش داده شدن کنند. سعی کنید سنسور را به سمت اجسام اطراف خود بگیرید یا آن را به سمت پیشانی خود بگیرید تا مطمئن شوید که تب ندارید!
توجه:
تداخل الکترومغناطیسی میتواند نتایج نادرستی ایجاد کند. بنابراین، هنگام استفاده از ترمومتر مادون قرمز، مطمئن شوید که تلفن، مایکروویو، روتر WiFi، تلویزیون یا هر دستگاه الکتریکی دیگر کاملاً دور است.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود









