ترموگرافی چیست؟
زمانیکه اجسام شروع به گرم شدن می کنند، گرمایی که از آنها منتشر می شود به صورت امواج مادون قرمز در فضا رها می شوند. مادون قرمز با چشم مستقیم قابل رویت نیست اما می توان این امواج را توسط دوربین ها و سنسورهای مربوطه که به سنسورهای ترموگرافی معروف هستند مشاهده نمود. از همین رو، یکی از راه های اندازه گیری میزان دمای اجسام مختلف، اندازه گیری میزان امواج مادون قرمزی است که از آن جسم منتشر می شود. که به این شیوه اندازه گیری دما ترموگرافی می گویند. همچنین در این شیوه اندازه گیری دما نیازی به اتصال مستقیم سنسور به اجسام نیست و در حقیقت اندازه گیری دما به شیوه غیر تماسی انجام می گیرد.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول دماسنج مدل غیرتماسی GY-90615 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
ماژول دماسنج مادون قرمز GY-MCU90615
در بسیاری از پروژه ها و کاربردهای صنعتی لازم است دمای یک جسم را از راه دور بدون اتصال سنسور به بدنه آن اندازه گیری کنیم. در اینگونه پروژه ها معمولا از شیوه اندازه گیری دما توسط امواج مادون قرمز استفاده می شود. ماژول GY-MCU90615 یک دماسنج مادون قرمز می باشد که این امکان را به شما می دهد دمای یک جسم را بدون اینکه لازم باشد با آن در تماس باشد به صورت غیر تماسی در محدوده منفی 40 درجه الی مثبت 115 درجه سانتی گراد اندازه گیری کنید. لازم به ذکر است این ماژول دماسنج توانایی اندازه گیری دمای خود سنسور را در بازه بین منفی 40 الی مثبت 85 درجه سانتی گراد را نیز دارد.
ماژول دماسنج مادون قرمز GY-MCU90615 از پروتکل ارتباطی سریال پشتیبانی می کند به همین دلیل می توانید به راحتی هرچه تمام آنرا با بردهای آردوینو Arduino و میکروکنترلرهای AVR یا هر پردازنده و برد توسعه دهنده دیگری که از ارتباط UART پشتیبانی می کند راه اندازی کنید. ماژول دماسنج GY-MCU90615 را می توانید با ولتاژ 3 الی 5 ولت راه اندازی کنید. همچنین جریان مصرفی این ماژول دماسنج تنها 5 میلی آمپر است و از دو نرخ انتقال 9600 و 115200 پشتیبانی می کند.
نقشه شماتیک راه اندازی ماژول دماسنج GY-MCU90615 با آردوینو
در این پروژه آردوینو از مبحث آموزش آردوینو می خواهیم شما را با نحوه برنامه نویسی و ساخت یک دماسنج مادون قرمز با ماژول GY-MCU90615 و برد Arduino Uno آشنا کنیم. همانطور که در نقشه شماتیک مشاهده می کنید در طراحی این پروژه برای نمایش اطلاعات از یک LCD کاراکتری 16*2 استفاده شده است. برد آردوینو پس از دریافت مقادیر اندازه گیری شده هر دو دمای جسم و دمای خود سنسور ماژول GY-MCU90615، اطلاعات دریافتی را بر روی ال سی دی کاراکتری نمایش می دهد.
برنامه راه اندازی ماژول دماسنج GY-MCU90615 با نرم افزار آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
#include <LiquidCrystal.h> #include <SoftwareSerial.h> //*********************************************Setup LCD const int contrast_display = 80; const int backlight_display = 255; //*********************************************Config Pin_LCD const int LCD_Pin_contrast = 9; const int LCD_Pin_RS = 2; const int LCD_Pin_RW = 3; const int LCD_Pin_E = 4; const int LCD_Pin_D4 = 5; const int LCD_Pin_D5 = 6; const int LCD_Pin_D6 = 7; const int LCD_Pin_D7 = 8; const int LCD_Pin_backlight = 10; LiquidCrystal lcd(LCD_Pin_RS, LCD_Pin_RW, LCD_Pin_E, LCD_Pin_D4, LCD_Pin_D5, LCD_Pin_D6, LCD_Pin_D7); //*********************************************Config Pin GY_MCU90615 SoftwareSerial mySerial(12, 11); // RX, TX //*********************************************Config Value unsigned char Re_buf[11], counter = 0; unsigned char sign = 0; float TO = 0, TA = 0; //*********************************************Subprogram setup() void setup() { analogWrite(LCD_Pin_contrast, contrast_display); analogWrite(LCD_Pin_backlight, backlight_display); mySerial.begin(115200); mySerial.listen(); lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("*electronics 98*"); lcd.setCursor (0, 1); lcd.print(">Arduino Project"); delay(3000); lcd.clear(); mySerial.write(0XA5); mySerial.write(0X45); // Enable Output mySerial.write(0XEA); } void loop() { unsigned char i = 0, sum = 0; while (mySerial.available()) { Re_buf[counter++] = (unsigned char)mySerial.read(); if (counter == 1 && Re_buf[0] != 0x5A) { counter = 0; // Waiting for Start of Data return; } if (counter == 2 && Re_buf[1] != 0x5A) { counter = 0; return; } if (counter == 9) // Data Received { counter = 0; // Get Ready for next Stream sign = 1; } } // Data received, so let's parse it if (sign) { sign = 0; for (i = 0; i < 8; i++) sum += Re_buf[i]; if (sum == Re_buf[i] ) // Check header { TO = (float)(Re_buf[4] << 8 | Re_buf[5]) / 100; lcd.setCursor(0, 0); lcd.print("TO:"); lcd.print(TO); lcd.print(" "); TA = (float)(Re_buf[6] << 8 | Re_buf[7]) / 100; lcd.setCursor(0, 1); lcd.print("TA:"); lcd.print(TA); lcd.print(" "); } } } |
آموزش برنامه نویسی ماژول GY-MCU90615 در نرم افزار آردوینو
همانطور که پیشتر گفته شد ماژول GY-MCU90615 بر اساس پروتکل سریال اقدام به تبادل داده با سایر دستگاه ها می کند به همین دلیل به راحتی می توانید مقادیر اندازه گیری شده دما را از ماژول دریافت نمائید و یا تنظیمات مورد نظر خود را همانند مقدار باود ریت بر روی ماژول اعمال کنید.
اندازه گیری اتوماتیک میزان دما
برای اعمال این تنظیم بر روی ماژول تنها کافی است همانند کد زیر، دستور 0xA5 + 0x45 + 0xEA برای ماژول ارسال کنید.
1 2 3 |
Serial.write(0XA5); Serial.write(0X45); Serial.write(0XEA); |
تنظیم نرخ انتقال ماژول بر روی 115200
برای اعمال این تنظیم بر روی ماژول تنها کافی است همانند کد زیر، دستور 0xA5 + 0xAF + 0x54 برای ماژول ارسال کنید.
1 2 3 |
Serial.write(0XA5); Serial.write(0xAF); Serial.write(0x54); |
توجه : در حالت پیش فرض نرخ انتقال ماژول دماسنج GY-MCU90615 توسط کارخانه سازنده بر روی مقدار 115200 تنظیم شده است.
تنظیم نرخ انتقال ماژول بر روی 9600
برای اعمال این تنظیم بر روی ماژول تنها کافی است همانند کد زیر، دستور 0xA5 + 0xAE + 0x53 برای ماژول ارسال کنید.
1 2 3 |
Serial.write(0XA5); Serial.write(0xAE); Serial.write(0x53); |
دریافت اطلاعات دما
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
while (Serial.available()) { Re_buf[counter++] = (unsigned char)Serial.read(); if (counter == 1 && Re_buf[0] != 0x5A) { counter = 0; return; } if (counter == 2 && Re_buf[1] != 0x5A) { counter = 0; return; } if (counter == 9) { counter = 0; sign = 1; } } |
محاسبه و نمایش میزان دمای جسم و خود سنسور
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
if (sign){ sign = 0; for (i = 0; i < 8; i++) sum += Re_buf[i]; if (sum == Re_buf[i] ) { TO = (float)(Re_buf[4] << 8 | Re_buf[5]) / 100; lcd.setCursor(0, 0); lcd.print("TO:"); lcd.print(TO); lcd.print(" "); TA = (float)(Re_buf[6] << 8 | Re_buf[7]) / 100; lcd.setCursor(0, 1); lcd.print("TA:"); lcd.print(TA); lcd.print(" "); } } |
سلام
با استفاده از یک برد اردوینو و یک ماژول میشه سه تا سنسور دما(مادون قرمز)،سنسور فشار(خون) ونبض رو استفاده کرد یا برای هرکدوم به برد و ماژول جداگانه نیازه؟
سلام دوست عزیز
بله می توانید چند سنسور را به بک برد آردوینو متصل کنید.
سلام خسته نباشید آیا این سنسور برای حیواناتی مثل گوسفند میشه؟
ایا برای بیماری کرونا هم میشه استفاده کرد؟
سلام دوست عزیز
لطفا توجه داشته باشید، سنسور مذکور برای اندازه گیری دمای اجسام غیر زنده مانند تراشه ها، فلزات و… کاربرد دارد و برای اندازه گیری دمای بدن انسان و یا حیوانات کاربردی نیست.
سلام برای اندازه گیری دمای بدن موجودات زنده باید از چه ماژولی استفاده کرد؟
سلام دوست عزیز
باید در میان سنسورهای دمای غیر تماسی، دیتاشیت آن ها را بررسی نمایید.
سلام دوست عزیز
برای یافتن سنسور مناسب جهت اندازه گیری دمای بدن موجودات زنده باید در میان سنسورهای دمای غیر تماسی، دیتاشیت آن ها را بررسی نمایید.
پس چراوقتی دست بروی ماژول گذاشتن دمای۳۳را نشان داد؟
دمای بدن انسان در حالت طبیعی بین 36.5 الی 37.5 درجه سانتی گراد است و دمای 33 درجه سانتی گراد به این معنا است که فرد، جان خود را از دست داده است!!!
به همین علت دمای اندازه گیری شده برای بدن دارای دقت کافی نیست.
سلام
اگه این برنامه رو در پروتئوس شبیه سازی کنیم و کد رو در اردینو، چجوری میشه در شبیه سازی مورد نظر نشان داد که دما تغییر میکند ؟یعنی تغییر دما در اثر گرما رو چجوری باید داخل این برنامه انجام بدیم ؟
سلام دوست عزیز
برای شبیه سازی این پروژه حتما باید قطعه MCU90615 در کتابخانه Proteus موجود باشد.
میشه بیشتر راهنمایی کنید
از کجا باید دانلود کنم این قطعه رو؟
من واسه یه پروژه لازمش دارم اگه میشه لطف کنید کتابخانهمربوط رو به اشتراک بذارید
سلام دوست عزیز
عبارت “MCU90615 proteus library” و عبارات مشابه آنرا در گوگل جستجو کنید و سایت های خارجی بررسی نمایید، اگر نتوانستید پیدا کنید این امکان نیز وجود دارد که هنوز کتابخانه ای برای این قطعه برای شبیه سازی در Proteus نوشته نشده باشد.
سلام من این پروژه رو ساختم ولی به مشکل خوردم ی جای این برنامه مشکل داره lcd عدد های زیادی و قاطی نشون میده ممنون میشم راهنماییم کنید