دسته‌بندی

تحلیل و بررسی کتابخانه ADS1115

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

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

 


الزامات و نکات فنی در راه اندازی کتابخانه ADS1115


 پیش از راه اندازی و استفاده از کتابخانه، می بایست الزامات و نکات فنی آن مورد بررسی قرار گیرد. این کتابخانه بر روی بردهای آردوینو، ESP8266 و ESP32 قابلیت استفاده دارد. ماژول ADS1115 دارای پروتکل ارتباطی I2C بوده و به صورت سخت افزاری با بردها ارتباط I2C را برقرار می نماید. پایه های ارتباط I2C در بردهای آردوینو UNO، پایه های A4 و A5 بوده و در بردهای ESP، GPIO4 و GPIO5 است.

ماژول آنالوگ به دیجیتال ADS1115 - دیجی اسپارک

 


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


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

Analysis of DFPlayerMini.h library - دیجی اسپارک

 

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

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

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

 


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


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

شرح ورودی ها تابع
به کمک این تابع کتابخانه سنسور راه اندازی می شود. ورودی اول پایه SDA ارتباط و ووردی دوم پایه SCL ارتباط را فراهم می کند. در صورتیکه ورودی ها را قرار ندهید، بسته به برد، پایه های سخت افزاری به طور خودکار انتخاب خواهند شد.

توجه: ارتباط تنها سخت افزاری است.

ورودی اول از نوع بدون علامت ۸ بیتی

ورودی دوم از نوع بدون علامت ۸ بیتی

 

  bool     begin(uint8_t sda, uint8_t scl)
به کمک این تابع می توان کنترل کرد که آیا ارتباط بین برد و ماژول مبدل ADC برقرار شده یا خیر. بدون ورودی bool     isConnected()
به کمک این تابع می توانید بهره ADC را تعیین کنید. به صورت پیش فرض این مقدار ۰ است. مقادیر مختلف به صورت زیر تعریف می شوند.

۰  =  ±۶٫۱۴۴V

۱  =  ±۴٫۰۹۶V

۲  =  ±۲٫۰۴۸V
۴  =  ±۱٫۰۲۴V
۸  =  ±۰٫۵۱۲V
 

 

۱۶ =  ±۰٫۲۵۶V

 

در مقادیر فوق، سمت چپ تساوی به عنوان ورودی تابع قرار می گیرد. سمت راست مقدار گین را نمایش می دهد.

ورودی از نوع بدون علامت ۸ بیتی

 

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

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

انواع برد ESP

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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