در سلسله آموزش های تحلیل و بررسی کتابخانه ها، این قسمت به کتابخانه ADS1115 می پردازیم. این کتابخانه جهت راه اندازی و کار با ماژول ADS1115 توسعه یافته است. ماژول مبدل آنالوگ به دیجیتال ADS1115 یک مبدل پرکاربرد جهت تبدیل سیگنال های آنالوگ به دیجیتال است. این ماژول در بردهای رزبری پای و بردهای آردوینو بسیاری کاربردی است. از آنجاییکه این ماژول دارای دقت ۱۶ بیتی است، لذا انتخاب مناسبی به عنوان یک مبدل آنالوگ به دیجیتال خارجی به شمار می رود. در این آموزش به تحلیل و بررسی این کتابخانه کلیدی می پردازیم. بنابراین در ادامه، با مرجع تخصصی رزبری پای و آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.
الزامات و نکات فنی در راه اندازی کتابخانه ADS1115
پیش از راه اندازی و استفاده از کتابخانه، می بایست الزامات و نکات فنی آن مورد بررسی قرار گیرد. این کتابخانه بر روی بردهای آردوینو، ESP8266 و ESP32 قابلیت استفاده دارد. ماژول ADS1115 دارای پروتکل ارتباطی I2C بوده و به صورت سخت افزاری با بردها ارتباط I2C را برقرار می نماید. پایه های ارتباط I2C در بردهای آردوینو UNO، پایه های A4 و A5 بوده و در بردهای ESP، GPIO4 و GPIO5 است.
نصب کتابخانه ADS1115
به منظور استفاده از کتابخانه ADS1115.h، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت ADS1115 را تایپ کنید. پس از چند لحظه تعدادی کتابخانه نمایش داده می شود. کتابخانه مورد نظر ما با کادر قرمز در تصویر زیر مشخص شده است. با کلیک بر روی گزینه install، این کتابخانه را نصب کنید.
پس از نصب کتابخانه، به توابع کلیدی و کاربردی آن می پردازیم. قسمت بعد مختص این موضوع است.
توابع کلیدی و کاربردی کتابخانه ADS1115
پس از بررسی الزامات فنی و نصب کتابخانه، نوبت به تحلیل و بررسی توابع کلیدی می رسد. جدول زیر لیست توابع کاربردی این کتابخانه را نمایش می دهد. توجه داشته باشید که ورودی توابع از سمت چپ به راست، ورودی اول، دوم سوم و… نام گذاری می شوند.
شرح | ورودی ها | تابع | |||||||||||
به کمک این تابع کتابخانه سنسور راه اندازی می شود. ورودی اول پایه SDA ارتباط و ووردی دوم پایه SCL ارتباط را فراهم می کند. در صورتیکه ورودی ها را قرار ندهید، بسته به برد، پایه های سخت افزاری به طور خودکار انتخاب خواهند شد.
توجه: ارتباط تنها سخت افزاری است. |
ورودی اول از نوع بدون علامت ۸ بیتی
ورودی دوم از نوع بدون علامت ۸ بیتی
|
bool begin(uint8_t sda, uint8_t scl) | |||||||||||
به کمک این تابع می توان کنترل کرد که آیا ارتباط بین برد و ماژول مبدل ADC برقرار شده یا خیر. | بدون ورودی | bool isConnected() | |||||||||||
به کمک این تابع می توانید بهره ADC را تعیین کنید. به صورت پیش فرض این مقدار ۰ است. مقادیر مختلف به صورت زیر تعریف می شوند.
|
ورودی از نوع بدون علامت ۸ بیتی
|
void setGain(uint8_t gain = 0) | |||||||||||
به کمک این تابع بهره ADC خوانده شده و در خروجی تابع قرار می گیرد. در صورتیکه خروجی برابر با ۰XFF شود، خواندن بهره با خطا مواجه شده است. | بدون ورودی | uint8_t getGain() | |||||||||||
این تابع فاکتور تبدیل ولتاژ را مشخص می کند. به عتنوان مثال فرض کنید شما با تقسیم مقاومتی، ولتاژی را به اندازه یک دهم کم کرده اید. با قرار دادن ورودی به مقدار ۱۰، به مقدار واقعی خواهیم رسید. | ورودی از نوع ۱۶ بیتی | float toVoltage(int16_t val = 1) | |||||||||||
به کمک این تابع ولتاژ مرجع که با تنظیم گین تعیین شده، در خروجی قرار می گیرد. | بدون ورودی | float getMaxVoltage() | |||||||||||
به کمک این تابع نرخ سرعت خواندن داده ها تعین می شود. مقدار پیشفرض ورودی ۴ بوده که مقادیر معتبر ورودی به شکل زیر تعریف می شوند.
۰=پایین ترین سرعت ۷=بیشترین سرعت ۴=مقدار پیشفرض و عادی |
ورودی از نوع ۸ بیتی بدون علامت | void setDataRate(uint8_t dataRate = 4) | |||||||||||
به کمک این تابع مقدار ADC از ورودی خوانده شده و در خروجی قرار می گیرد. ورودی این تابع تعیین کننده پایه جهت خواندن مقدار ADC است. | ورودی از نوع بدون علامت ۸ بیتی | int16_t readADC(uint8_t pin) | |||||||||||
به کمک این تابع می توان تشخیص داد که آیا ماژول مشغول تبدیل سیگنال آنالوگ به دیجیتال بوده و یا آزاد است. خروجی true یعنی ماژول آزاد و مشغول تبدیل نیست. | بدون ورودی | bool isBusy() |
توابع فوق از توابع کلیدی و کاربردی ماژول ADS115 به شمار می روند. البته توابع بیشتری نیز وجود داشته که با مراجعه به صفحه گیت هاب کتابخانه(که با کلیک بر روی این لینک در دسترس است) می توانید به توابع دسترسی داشته باشید. پس از بررسی توابع کلیدی و کاربردی، در قسمت بعدی به یک نمونه برنامه جهت مشاهده چگونگی استفاده از توابع می پردازیم.
نمونه برنامه
در قسمت زیر یک نمونه برنامه ساده را مشاهده می کنید. این برنامه برای برد آردوینو توسعه یافته و با خواندن مقادیر ورودی ADC، آن ها را در خروجی سریال نمایش می دهد.
#include "ADS1X15.h" //اضافه کردن کتابخانه ADS1115 ADS(0x48); //این تابع نقش سازنده کلاس کتابخانه را بر عهده دارد. ورودی این تایع آدرس I2C ماژول مبدل ADC است. void setup() { Serial.begin(115200); ADS.begin(); //راه اندازی کتابخانه } void loop() { ADS.setGain(0); //تنظیم بهره ADC روی مقدار پیشفرض int16_t val_0 = ADS.readADC(0); //خواندن مقدار دیجیتال از کانال ۰ int16_t val_1 = ADS.readADC(1); //خواندن مقدار دیجیتال از کانال ۱ int16_t val_2 = ADS.readADC(2); //خواندن مقدار دیجیتال از کانال ۲ int16_t val_3 = ADS.readADC(3); //خواندن مقدار دیجیتال از کانال ۳ float f = ADS.toVoltage(1); //تابع فاکتور تبدیل ولتاژ Serial.print("\tAnalog0: "); Serial.print(val_0); Serial.print('\t'); Serial.println(val_0 * f, 3); // مقدار خروجی تابع تبدیل فاکتور باید در مقدار خوانده شده از ADC ضرب شود تا به مقدار ولتاژ آنالوگ برسیم. Serial.print("\tAnalog1: "); Serial.print(val_1); Serial.print('\t'); Serial.println(val_1 * f, 3); Serial.print("\tAnalog2: "); Serial.print(val_2); Serial.print('\t'); Serial.println(val_2 * f, 3); Serial.print("\tAnalog3: "); Serial.print(val_3); Serial.print('\t'); Serial.println(val_3 * f, 3); Serial.println(); delay(1000); }
لوازم مورد نیاز
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه، این آموزش به بررسی کتابخانه مبدل ADC مدل ADS1115 پرداخت. ماژول مبدل ADC مدل ADS1115 یکی از پرکاربردترین ابزار جهت تبدیل سیگنال های آنالوگ به دیجیتال با دقت ۱۶ بیت است. به کمک این ماژول شما می توانید سیگنال های ADC را با دقت بسیار بیشتری نسبت به ADC داخلی آردوینو به سیگنال های دیجیتال تبدیل نمایید. مطابق رویه آموزش های تحلیل کتابخانه ابتدا به بررسی نحوه نصب و الزامات فنی کتابخانه پرداختیم. در ادامه توابع کلیدی و کاربردی مورد بررسی قرار گرفت. در نهایت با اجرای یک نمونه برنامه ساده، نحوه اجرای برنامه را مشاهده نمودیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.