تحلیل کتابخانه دسته‌بندی

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

نوشته شده توسط معین صابری

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

 


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


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

Battery.h Library Analysis

 

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

Battery.h Library Analysis

 

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

Battery.h Library Analysis

 

پس از اینکه کتابخانه با موفقیت نصب شد، نوبت به استفاده از آن می رسد. به همین منظور، ابتدا به بررسی الزامات فنی و بردهای مورد پشتیبانی کتابخانه Battery Sense می پردازیم. پس از آن، به معرفی توابع کلیدی و کاربردی پرداخته و در نهایت با ارائه مثالی، به نحوه استفاده از توابع در پروژه های عملی خواهیم پرداخت.

 


نکات فنی کتابخانه Battery Sense


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

توجه ۱: در رابطه با بردهای ESP، ولتاژ رفرنس ADC در حدود ۱ ولت است، از این رو، دقت نظر لازم را در نظر داشته باشید.

توجه ۲: بردهای آردوینو نظیر آردوینو UNO و MEGA، دارای ولتاژ های مرجع داخلی، خارجی و ۵ ولت هستند. در این زمینه، می توانید مرجع مورد نظر را انتخاب کنید.

 


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


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

تابع ورودی ها تشریح
Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin) ورودی اول: حداقل ولتاژ باتری

ورودی دوم: حداکثر ولتاژ باتری

ورودی چهارم: شماره پین آنالوگ ووردی

این تابع مدل باتری و پین ورودی آنالوگ را مشخص می کند. ورودی اول حداقل ولتاژ به میلی ولت، ورودی دوم حداکثر ولتاژ به میلی ولت و ورودی سوم پین ورودی آنالوگ، مثلا A0 را تعیین می نماید.
void begin(uint16_t refVoltage, float dividerRatio, mapFn_t = 0) ورودی اول: ولتاژ مرجع به میلی ولت

ورودی دوم: نرخ تبدیل

ورودی سوم: نگاشت کننده میزان ولتاژ باتری به ظرفیت آن

ووردی اول این تابع، تعیین کننده ولتاژ مرجع ADC است.

ورودی دوم، نرخ تبدیل تقسیم مقاومتی استفاده شده است. تقسیم مقاومتی میزان ولتاژ ورودی را به یک نسبت مشخص، مثل نصف، کم می کند. در این حالت نرخ تبدیل، ۲ خواهد بود.

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

uint8_t level() بدون ورودی این تابع میزان شارژ فعلی باتری را به صورت درصدی بین ۰ الی ۱۰۰ بر می گرداند.
uint16_t voltage() بدون ورودی این تابع ولتاژ فعلی باتری را به صورت میلی ولت بر می گرداند.

 

 


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


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

#include <Battery.h>  //اضافه کردن کتابخانه باتری
Battery battery(3400, 4200, A0);   //ایجاد یک نمونه شی از کلاس باتری، ورودی اول حداقل ولتاژ، دوم حداکثر و سومی پین آنالوگ جهت خواندن مقدار باتری این مقادیر برای باتری لیتیم یونی و پلیمیری تعیین شده است
void setup() {
  Serial.begin(9600); 
  while (!Serial); 
  battery.begin(5000, 1.0);   //ورودی اول این تابع ولتاژ مرجع را به میلی ولت تعیین می کند. ورودی دوم نرخ تبدیل تقسیم مقاومتی است. از آنجاییکه تقسیم مقاومتی استافده نشده، بنابراین نرخ آن ۱ خواهد بود.
}

void loop() {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);

  Serial.print("Battery voltage is ");
  Serial.print(battery.voltage());   //نمایش ولتآژ باتری
  Serial.print(" (");
  Serial.print(battery.level());  //نمایش میزان شارژ باتری
  Serial.println("%)");
}

 


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


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

انواع باتری های لیتیمی

ماژول افزاینده ولتاژ باتری

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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