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

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

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

برای طراحی و اجرای یک پروژه دیجیتال هوشمند، میکروکنترلر قلب تپنده واحد پردازش سیستم خواهد بود. میکروکنترلرها، پردازنده هایی با امکانات تمام عیار و در ابعاد کوچک هستند. یک میکروکنترلر تنها به یک واحد پردازشی محدود نمی شود، بلکه امکانات جانبی نظیر تایمرها، واحد تبدیل آنالوگ به دیجیتال(ADC) در این پردازنده ها جای می گیرد. یکی از واحدهای جانبی و پر اهمیت میکروکنترلرها، واحد مقایسه کننده آنالوگ است. این واحد با دریافت دو ورودی آنالوگ، آن ها را از لحاظ بزرگی ولتاژ نسبت به هم مقایسه کرده و یک خروجی دیجیتال متناسب با ورودی ها ایجاد می گردد.

میکروکنترلرهای AVR نظیر ATMEGA328P که هسته برد آردوینو UNO محسوب می شود، دارای واحد مقایسه کننده داخلی است. در کنار این، میکروکنترلر MEGA2560 که هسته برد آردوینو مگا محسوب می شود، از این قابلیت برخوردار است. جهت راه اندازی و کار با این قابلیت پیچیدگی هایی در سطح رجیستر وجود دارد. اما به کمک کتابخانه comp.h این پیچیدگی ها بر طرف می شود. بنابراین به سادگی واحد مقایسه کننده آنالوگ را به کمک این کتابخانه می توان راه اندازی نمود. در این آموزش به تحلیل و بررسی این کتابخانه و نحوه استفاده از آن در پروژه های مختلف می پردازیم. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


تعریف و کاربرد مقایسه کننده آنالوگ


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

تعریف و کاربرد مقایسه کننده آنالوگ کتابخانه comp.h - دیجی اسپارک

 

همانطور که گفته شد، جهت راه اندازی و کار با این واحد کتابخانه تحت آردوینو توسعه یافته است. در کتابخانه comp دو ورودی تعریف می شود. هرگاه که ولتاژ اعمال شده به قسمت غیر معکوس شده (+) بیش از ورودی دیگر باشد، خروجی یک تولید خواهد شد. حال در این کتابخانه می توان با تعریف روتین وقفه، هرگاه این اتفاق افتاد، تابع وقفه اجرا شود. همچنین این کتابخانه دارای مد انتظار هم هست. در مد انتظار، دو ورودی مقایسه شده و تا زمانیکه مقایسه به اتمام برسد، برنامه منتظر خواهد ماند.

 


نصب کتابخانه comp.h


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

روش نصب کتابخانه PCF8574.h - دیجی اسپارک

 

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

نصب کتابخانه comp.h آردوینو - دیجی اسپارک

 


الزامات و نکات فنی کتابخانه comp.h


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

– Attiny2313/4313 [1]

– Attiny24/44/84

– Attiny25/45/85

– Atmega344/644/1284

– Atmega8

– Atmega48/88/168/328 [3] (Arduino UNO)

– Atmega640/1280/1281/2560/2561 (Arduino MEGA)

– Atmega32U4 [2] (Arduino Leonardo/Micro)

برای راه اندازی و کار با این کتابخانه، باید دو پایه ورودی تعریف کنید. به طور پیشفرض پایه ورودی آنالوگ A0 و A1 به ترتیب به عنوان ورودی مثبت و منفی انتخاب می شوند. برای پایه مثبت در ورودی، مسایل زیر باید در نظر گرفته شود.

۱-پایه A0 باید برای این ورودی تعیین شود.

۲-می توانید ولتاژ رفرنس ADC را بر روی مقدار دلخواه با توجه به توابع تنظیم کنید.

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

توجه: در برد آردوینو لئوناردو با میکروکنترلر ATMEGA32U4، پایه های ۲ و ۳ به دلیل استفاده داخلی، قابل استفاده نیستند.

 


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


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

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

ورودی دوم جهت تعیین پایه منفی ورودی

uint8_t setOn(uint8_t = AIN0, uint8_t = AIN1)
قطع ارتباط ماژول مقایسه آنالوگ بدون ورودی void setOff(void)
 

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

 

ورودی اول نام تابع callback اجرای تابع

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

void enableInterrupt(void (*)(void), uint8_t tempMode = CHANGE)
این تابع وقفه را غیر فعال می کند. بدون ورودی void disableInterrupt(void)
این تابع برای مدت زمانیکه در ورودی تعیین شده صبر می کند تا در مقایسه آنالوگ مقدار AIN+ (ورودی مثبت) از AIN-(ورودی کمتر) بیشتر شود. ورودی جهت تعیین زمان uint8_t waitComp(unsigned long = 0)

 

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

شرح پارامتر
زمانیکه ولتاژ ورودی در حال تغییر از مقدار AIN+ به AIN- و برعکس است./ CHANGE
زمانیکه ولتاژ AIN+ از AIN- بیشتر شود. RISING
زمانیکه ولتاژ AIN+ از AIN- کمتر شود. FALLING

 

پس از آگاهی از توابع کلیدی نوبت به اجرای یک نمونه برنامه می رسد. برای این مورد در نرم افزار آردوینو File->examples->analogComp را انتخاب کرده و یکی از مثال ها را بعه دلخواه اجرا کنید.

 


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


لینک خرید انواع برد آردوینو، کلیک کنید

 


جمع بندی


در مجموعه آموزش های تحلیل و بررسی توابع کتابخانه های آردوینو این قسمت را به کتابخانه comp.h اختصاص دادیم. این کتابخانه جهت راه اندازی و کار با واحد مقایسه گر آنالوگ آردوینو توسعه یافته است. به کمک این کتابخانه می توان به سادگی دو ورودی آنالوگ را مقایسه نمود. این کتابخانه در دو قسمت مقایسه آنالوگ با وقفه و مقایسه آنالوگ با انتظار طراحی شده است. در مد وقفه، هرگاه بسته به مد تعریف شده ورودی های آنالوگ تغییر موضع دهند، وقفه رخ خواهد داد. در مد انتظار اما، به اندازه زمان تعیین شده برنامه منتظر مانده تا ورودی بیشتر(مثبت) از ورودی کمتر(کنفی) بیشتر شود. در این آموزش به نحوه نصب کتابخانه و الزامات فنی آن پرداختیم. در نهایت با معرفی و تحلیل توابع کلیدی، به بحث پایان دادیم.

 

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

 

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

معین صابری

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

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

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