تحلیل کتابخانه

تحلیل و بررسی کتابخانه MCP9802.h

mcp9802-h-arduino-library-digispark
نوشته شده توسط معین صابری

در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از مهم ترین و پرکاربردترین کتابخانه ها می پردازیم. حتما اطلاع دارید که سنسورها جزیی جدایی ناپذیر از پروژه های کنترلی به شمار می روند. به کمک سنسورها می توان پارامترهای مختلف را اندازه گیری کرده و متناسب با داده دریافتی فرمان خروجی را صادر نمود. در این آموزش به تحلیل و بررسی کتابخانه سنسور MCP9802 می پردازیم. این سنسور که یک سنسور پایدار برای اندازه گیری دما به شمار می رود، می تواند دمای ۵۵- الی ۱۲۵+ درجه سانتی گراد را اندازه گیری نمود. مطابق رویه معمول آموزش های کتابخانه، ابتدا به معرفی مختصر سنسور می پردازیم. در ادامه نصب کتاخانه را خواهیم دید. پس از این مرحله به الزامات و نکات فنی کتابخانه خواهیم پرداخت. در ادامه توابع کلیدی و کاربردی تحلیل خواهد شد. در نهایت با ارایه مثالی، نحوه استفاده از توابع را خواهیم دید. در ادامه تحلیل و بررسی کتابخانه mcp9802 با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور MCP9802


همانطور که اطلاع دارید، سنسورهای دما یکی از مهم ترین و پرکاربردترین سنسورها در پروژهای مختلف به شمار می روند. به کمک این سنسور با اطلاع از دمای محیط مد نظر، می توان فرامین لازم را توسط میکروکنترلر صادر نمود. یکی از سنسورهای پرکابرد دمایی، سنسور MCP9802 است. به کمک این سنسور می توان دمای محیط را در محدوده ۵۵- الی ۱۲۵+ درجه سانتی گراد  اندازه گیری نمود.

سنسور mcp9802 - دیجی اسپارک

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

 


نصب کتابخانه MCP9802


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

  • با کلیک بر روی این لینک، وارد صفحه کتابخانه در گیت هاب شوید.
  • مطابق تصویر زیر، ابتدا بر روی گزینه code و سپس Download ZIP کلیک نمایید.

نصب کتابخانه آردوینو از طریق گیت هاب - دیجی اسپارک

 

در ادامه پس از دانلود کتابخانه، از منوی sketch گزینه add zip file را انتخاب کرده تا کتابخانه به برنامه اضافه گردد.

 


الزامات و نکات فنی کتابخانه MCP9802


کتابخانه MCP9802 جهت ارتباط با میکروکنترلرها از پورت I2C سخت افزاری استفاده می کند. این پورت در آردوینو UNO بر روی پایه های A4 و A5 تعریف گردیده است. همچنین این کتابخانه تنها بر روی بردهای آردوینو مبتنی بر تراشه AVR قابل اجراست. به عبارت دیگر، این کتابخانه با پردازنده های ۳۲ بیتی سری ESP سازگاری ندارد. این کتابخانه بر روی تراشه های زیر قابل اجراست.

  • Arduino Micro
  • Arduino Leonardo
  • Arduino Mega
  • Arduino Nano
  • Arduino Uno
  • Arduino Yún

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

 


توابع کلیدی و کاربردی کتابخانه MCP9802


پس از بررسی الزامات و نکات فنی نوبت به تحلیل و بررسی توابع کلیدی و کاربردی می رسد. جدول زیر شرح این توابع را نمایش می دهد.

شرح ورودی ها تابع
تابع سازنده کلاس کتابخانه

ورودی آدرس

ورودی آدرس دستگاه MCP9802(byte devAddr)
جستجو برای سنسور

خروجی های تابع:

۰: اتصال موفقیت آمیز

۱=سر ریز شدن بافر

۲=ارسال آدرس، دریافت NACK

۳=ارسال داده، دریافت NACK

۴=سایر خطاها

بدون ورودی byte ping()
دریافت دما بدون ورودی float  getTemp()
دریافت هیسترزیس بدون ورودی float  getHyst();
دریافت واحد دما بدون ورودی byte   getTempUnit()
دریافت مد اعلام خطر

خروجی ۰: مد مقایسه دائم دما برای تولید آلارم

خروجی ۱: مد وقفه برای مقایسه دما

بدون ورودی byte   getAlertType()
دریافت مد آلارم

خروجی ۰: ACTIVE LOW

خروجی ۱: ACTIVE HIGH

بدون ورودی byte getAlertMode()
دریافت میزان دقت سنسور

خروجی: دقت سنسور به بیت

بدون ورودی byte getResolution()
تنظیم هیسترزیس در بازه ۵۵- الی ۱۲۵+ درجه سانتی گراد ورودی از نوع اعشار void   setHyst(float newHyst)
تنظیم بازه دمایی مجاز(حالت ترموستات)

در صورت خروجی از بازه دمایی آلارم ایجاد خواهد شد.

ورودی: ۵۵- الی ۱۲۵+

ورودی از نوع اعشار void   setLimit(float newLimit)
تنظیم نحوه اعلام آلارم با ورودی های از پیش تعریف شده

ورودی COMP: مد مقایسه

ورودی INT: مد وقفه

ورودی از نوع پیش تعریف شده void   setAlertType(alert_type_t alertType)
تنظیم نحوه ایجاد خروجی با ورودی های از پیش تعریف شده

ورودی ها:

ACTIVE_LOW

ACTIVE_HIGH

ورودی از نوع پیش تعریف شده void   setAlertMode(alert_mode_t alertMode)
تنظیم میزان دقت اندازه گیری دما

میزان دقت در ورودی به صورت بیت در بازه ۹ الی ۱۲ بیت به صورت RES_BIT تعیین می گردد. به عنوان مثال RES_9 به معنای ۹ بیتی است.

ورودی جهت تعیین میزان دقت   void   setResolution(resolution_t resVal)

 

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

شماره قطعه آدرس معادل باینری آدرس معادل هگزادسیمال آدرس معادل دهدهی مارک تجاری
MCP9802A0T-M/OT ۰۱۰۰۱۰۰۰ ۰x48 ۷۲ JKNN
MCP9802A1T-M/OT ۰۱۰۰۱۰۰۱ ۰x49 ۷۳ JLNN
MCP9802A2T-M/OT ۰۱۰۰۱۰۱۰ ۰x4A ۷۴ JMNN
MCP9802A3T-M/OT ۰۱۰۰۱۰۱۱ ۰x4B ۷۵ JPNN
MCP9802A4T-M/OT ۰۱۰۰۱۱۰۰ ۰x4C ۷۶ JQNN
MCP9802A5T-M/OT ۰۱۰۰۱۱۰۱ ۰x4D ۷۷ JRNN
MCP9802A6T-M/OT ۰۱۰۰۱۱۱۰ ۰x4E ۷۸ JSNN
MCP9802A7T-M/OT ۰۱۰۰۱۱۱۱ ۰x4F ۷۹ JTNN

 

پس از آشنایی با توابع و آدرس ها، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعد مربوط به این موضوع است.

 


اجرای یک نمونه برنامه


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

#include "MCP9802.h"  //اضافه نمودن کتابخانه به برنامه
const byte DEV_ADDR = 0x48;                       // آدرس کتابخانه
const byte PIN_D2 = 2;                            // پایه جهت دریافت آلارم از سنسور
float temp = 0;

MCP9802 mcp9802(DEV_ADDR);
void setup() {
  pinMode(PIN_D2, INPUT_PULLUP);
  Serial.begin(9600);
  Wire.begin();
  while (!Serial);
  temp = mcp9802.getTemp();   //خواندن دما
  Serial.print(temp, 1);  //نمایش دما با یک رقم اعشار دقت
  Serial.print(F("C\n"));

}
void loop() {
  temp = mcp9802.getTemp();
  Serial.print(temp, 1);
  Serial.flush();
  
  Serial.print(F("C\n"));
  Serial.flush();
}

 


لوازم مورد نیاز


انواع برد آردوینو

 


جمع بندی


در مجموعه آموزش های تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه، این آموزش را به بررسی یک کتابخانه کلیدی و کاربردی اختصاص دادیم. سنسور دما MCP9802 یک سنسور کلیدی و کاربردی جهت اندازه گیری دماست. به کمک این سنسور می توان به سادگی دمای محیط را در بازه ۵۵- الی ۱۲۵+ درجه سانتی گراد اندازه گیری نمود. در این آموزش به تحلیل و بررسی توابع کلیدی و کاربردی این کتابخانه پرداختیم. مطابق رویه معمول تحلیل کتابخانه ها، ابتدا سنسور و ویژگی های آن مورد بحث و بررسی قرار گرفت. در ادامه ضمن نصب کتابخانه، بردهای مورد پشتیبانی از نظر گذرانده شد. در ادامه به تحلیل  و بررسی توابع کلیدی و کاربردی کتابخانه پرداختیم. در نهایت با ارایه مثال، به نحوه استفاده از توابع درد کتابخانه پرداخته شد.

 

چنانچه مطالب ابن آموزش را گنگ یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. تاکنون بیش از هزاران نظر و پاسخ در دیجی اسپارک درج شده است؛ پس نظرات شما ارزشمند بوده و سوالات بی پاسخ نمی مانند.

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه