سنسورهای دما یکی از مهم ترین و پرکابردترین ابزارها در پروژه های مختلف به شمار می روند. به کمک این سنسورها می توان پروژه های مختلف نظیر ترموستات ها، دیتالاگرها، سیستم های اعلام حریق، سیستم های کنترل دمای آب خودرو و…. را پیاده سازی نمود. یکی از مهم ترین نوع سنسورهای دما از نوع دیجیتال، سنسور as6212 بوده و به کتابخانه AS6212.h نیاز دارد. این سنسور که از رابط سریال I2C جهت ارتباط استفاده می کند، می تواند با انواع مختلفی از میکروکنترلرها راه اندازی شود. جهت راه اندازی و کار با این سنسور کلیدی و کاربردی کتابخانه تحت آردوینو توسعه یافته که در این آموزش به تحلیل و بررسی آن می پردازیم. در ادامه این آموزش با مرجع تخصصی کتابخانه آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور دما as6212
سنسور دمای as6212 یک سنسور فوق العاده کاربردی جهت اندازه گیری دمای محیط است. این سنسور که به صورت دیجیتال عمل می کند، از رابط سریال I2C جهت ارتباط با میکروکنترلرها بهره می برد. این سنسور با جریان مصرفی بسیار پایین، ولتاژ تغذیه بین ۱٫۷ الی ۳٫۶ دارد. در کنار این، این سنسور می تواند در بازه ۴۰- الی ۱۲۵ درجه سانتی گراد، به اندازه گیری دما بپردازد.
از دیگر ویژگی های سنسور as6212 می توان به دقت اندازه گیری ۰٫۲ درجه سانتی گرادی آن اشاره نمود. همچنین این سنسور دارای زمان اندازه گیری ۳۶ میلی ثانیه ای است.
نصب کتابخانه سنسور as6212.h
به منظور استفاده از کتابخانه AS6212.h ، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب این کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت as6212 را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه مشخص شده با کادر قرمز رنگ را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه as6212.h
پس از نصب کتابخانه، نوبت به بررسی الزامات فنی آن می رسد. همانطور که پیشتر نیز گفته شد، این سنسور از رابط سریال I2C استفاده می کند. به کمک این رابط سنسور با بردهای مختلف ارتباط برقرار می نماید. از این رو این سنسور با بردهای دارای رابط سریال I2C می تواند ارتباط برقرار نماید. به عبارت دیگر، از این کتابخانه می توان علاوه بر بردهای آردوینو مبتنی بر میکروکنترلرهای AVR، می توان انتظار عملکرد روی بردهای سری ESP را نیز، داشت. با گذر از این موضوع، در قسمت بعدی به بررسی توابع کلیدی و کاربردی می پردازیم.
توابع کلیدی و کاربردی کتابخانه
پس از بررسی الزامات، نوبت به تحلیل توابع می رسد. جدول زیر لیت توابع کلیدی و کاربردی کتابخانه را در خود قرار می دهد. مطابق رویه معمول تحلیل کتابخانه ها، ورودی سمت چپ ورودی اول و ورودی سمت راست، ورودی دوم نام گذاری می گردد.
شرح | ورودی ها | تابع |
به کمک این تابع ارتباط بین سنسور و میکورکنترلر برقرار می شود. ورودی اول این تابع آدرس I2C سنسور و ورودی دوم اشاره گر به کلاس wire جهت ارتباط i2c است. این مقادیر به صورت پیشفرض در ورودی تابع تعریف شده اند که شما می توانید آن ها را خالی قرار دهید. | ورودی اول از نوع بدون علامت ۸ بیتی برای تعیین آدرس
ورودی دوم اشاره گر از نوع کلاس wire |
bool begin(uint8_t sensorAddress = 0x48, TwoWire &wirePort = Wire) |
به کمک این تابع دمای محیط خوانده شده و در خروجی قرار می گیرد. این تابع دما را به صورت سانتی گراد می خواند. | بدون ورودی | float readTempC() |
این تابع نیز دما را بر حسب فارنهایت خوانده و در خروجی قرار می دهد. | بدون ورودی | float readTempF() |
به کمک سنسور as6212 می توان ترموستات ساخت. به همین جهت می توان حد بالا و پایین دما را تعیین کرد. این تابع حد پایین دما را تعیین می کند. ورودی اول دمای پایین و ورودی دوم از نوع اشاره گر، کد خطا(در صورت بروز خطا) را تعیین می کند. مقادیر خطا عبارتند از:
۱:مقدار حد پایین قبلا تنظیم شده است. ۲:مقدار حد پایین بیشتر از مقدار حد بالا تعیین شده است. توجه: پس از تنظیم این تابع، در صورتیکه دما از حد پایین کمتر شود، در برنامه وقفه ایجاد خواهد شد. |
ورودی اول جهت حد پایین دما
ورودی دوم جهت اعلام کد خطا |
bool setTLow(int16_t lowLimit, uint8_t *tlow_err_flag) |
به کمک این تابع مقدار حد پایین دما خوانده شده و در خروجی قرار می گیرد. | بدون ورودی | float getTLow() |
این تابع حد بالای دما را خوانده و در خروجی قرار می دهد. | بدون ورودی | float getTHigh() |
به کمک این تابع می توان حد بالای دما را تعیین نمود. حد بالای دما در ورودی تابع قرار می گیرد. در صورتیکه ورودی دما از حد پایین کمتر باشد، خروجی تابع false خواهد شد. | ورودی جهت تعیین حد بالای دما | bool setTHigh(int16_t highLimit) |
اجرای یک نمونه برنامه
پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه دمای محیط به سانتی گراد در سریال مانیتور قرار می گیرد.
#include "AS6212.h" #include <Wire.h> AS6212 sensor; //ایجاد یک شی از کلاس کتابخانه void setup(){ Wire.begin(); Serial.begin(115200); Serial.println("Starting Sensor, here goes nothing..."); delay(500); if(sensor.begin() == true){ //در صورتیکه سنسور راه اندازی شود Serial.println("seneor successfully started!"); Serial.flush(); } else{ Serial.println("Erro in runnig sensor, please check wiring!"); Serial.flush(); while(1); } } void loop(){ float tempC = sensor.readTempC(); //خواندن دما Serial.print("Temperature (°C): "); Serial.flush(); Serial.println(tempC, 6); //نمایش دما با ۶ رقم اعشار دقت Serial.flush(); delay(1000); }
لوازم متناسب با کتابخانه
سنسور AS6212
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به بررسی کتابخانه سنسور AS6212 اختصاص دادیم. سنسور AS6212 یک سنسور فوق العاده کاربردی جهت سنجش دماست. از آنجاییکه جهت راه اندازی و کار با این سنسور کاربردی کتابخانه تحت آردوینو توسعه یافته، در این آموزش به تحلیل و بررسی آن پرداختیم. ابتدای آموزش را با بررسی اجمالی سنسور آغاز کردیم. در ادامه به نصب کتابخانه و الزامات فنی پرداختیم. پس از آن توابع کلیدی و کاربردی کتابخانه مورد بررسی قرار گرفت. در نهایت با ارائه مثالی، نحوه استفاده از توابع در برنامه ها را مشاهده نمودیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.