باتری ها یکی از منابع اصلی تغذیه در سیستم های مختلف به شمار می روند. به کمک باتری ها می توان تغذیه دستگاه های قابل حمل را فراهم نمود و در زمان هایی که جریان برق شهری از دسترس خارج می شود؛ باتری تامین تغذیه سیستم را بر عهده گیرد. جهت بررسی وضعیت شارژ، دما و سایر پارامترها، آی سی LC70930F طراحی شده است. به کمک این آی سی می توان از پارامترهای باتری مطلع شد. جهت راه اندازی و کار با این آی سی کتابخانه تحت آردوینو توسط شرکت AdaFruit توسعه یافته است. در این آموزش قصد داریم تا به تحلیل و بررسی کتابخانه lc709230f بپردازیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.
نصب کتابخانه LC709230 توسعه AdaFruit
به منظور استفاده از کتابخانه LC70930F، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت LC70930F را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه مشخص شده با کادر قرمز رنگ را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه LC709230 توسعه یافته توسط AdaFruit
پس از نصب کتابخانه و پیش از تحلیل توابع کلیدی، نگاهی به نکات فنی کتابخانه خواهیم داشت. آی سی LC70930F جهت ارتباط با میکروکنترلرها از پورت I2C سخت افزاری استفاده می کند. کتابخانه توسعه یافته این آی سی نیز از پورت I2C سخت افزاری پشتیبانی می کند. بنابراین می توان انتظار داشت که این کتابخانه بر روی کلیه بردها و ماژول ها، قابل استفاده باشد.
توابع کلیدی و کاربردی کتابخانه LC709230 توسعه یافته توسط AdaFruit
پس از نصب و بررسی الزامات فنی، نوبت به تحلیل و بررسی توابع کلیدی می رسد. جدول زیر لیست توابع کتابخانه را نمایش می دهد.
شرح | ورودی ها | تابع |
به کمک این تابع ارتباط با آی سی برقرار می شود. ورودی این تابع از نوع اشاره گر به پورت I2C است. شما می توانید این ورودی را خالی بگذارید، در این صورت پورت I2C به طور خودکار شناسایی خواهد شد. | ورودی از نوع اشاره گر به پورت I2C | bool begin(TwoWire *wire = &Wire) |
این تابع مد کاری آی سی را تعیین می کند. این مد در ورودی قرار می گیرد. ورودی های معتبر برای این تابع عبارتند از:
LC709203F_POWER_OPERAT: حالت کاری عادی LC709203F_POWER_SLEEP: حالت کاری کم مصرف خروجی این تابع از نوع بولین بوده که در صورت موفقیت آمیز بودن اجرا، خروجی true خواهد شد.
|
ورودی از نوع داده کلاس کتابخانه | bool setPowerMode(lc709203_powermode_t t) |
به کمک این تابع ظرفیت باتری تعیین می شود. این ظرفیت در ورودی تابع قرار می گیرد. مقادیر معتبر عبارتند از:
LC709203F_APA_100MAH: ****/********** LC709203F_APA_200MAH: *************** LC709203F_APA_500MA: ************* LC709203F_APA_1000MAH: ظرفیت ۱۰۰۰ میلی آمپر ***********
|
ورودی از نوع کلاس کتابخانه | bool setPackSize(lc709203_adjustment_t apa) |
به کمک این تابع ورژن آی سی خوانده شده و در خروجی قرار می گیرد. | بدون ورودی | uint16_t getICversion(void) |
به کمک این تابع ولتاژ سلول خوانده شده و در خروجی قرار می گیرد. خروجی از نوع اعشاری است. | بدون ورودی | float cellVoltage(void) |
به کمک این تابع درصد شارژ سلول در خروجی قرار می گیرد. خروجی از نوع اعشاری است. | بدون ورودی | float cellPercent(void) |
به کمک این تابع ترمیستور ماژول تنظیم می شود. این مقدار در ورودی تابع قرار گرفته و در صورت اجرای موفقیت آمیز تابع، خروجی true خواهد شد. | ورودی از نوع ۱۶ بیتی بدون علامت | bool setThermistorB(uint16_t b) |
به کمک این تابع دمای باتری اندازه گیری شده و در خروجی آن قرار می گیرد. خروجی از نوع اعشاری است. | بدون ورودی | float getCellTemperature(void) |
به کمک این تابع با تنظیم مقدار درصد شارژ در ورودی، هرگاه میزان شارژ باتری از درصد قرار گرفته در ورودی کمتر شود، ماژول آلارم خواهد داد. | ورودی از نوع بدون علامت ۸ بیتی | bool setAlarmRSOC(uint8_t percent) |
به کمک این تابع ترمیستور متصل به ماژول تنظیم می شود. یکی از راه های اندازه گیری دمای باتری در این ماژول، اتصال ترمیستور به ورودی آن است. این تابع اندازه گیری دما با ترمیستور را ممکن می سازد. در ورودی این تابع باید مقاومت ترمیتسور به اهم درج گردد. | ووردی از نوع ۱۶ بیتی بدون علامت | bool setThermistorB(uint16_t b) |
به کمک این تابع با تنظیم مقدار درصد ولتاژ در ورودی، هرگاه میزان ولتاژ باتری از مقدار قرار گرفته در ورودی کمتر شود، ماژول آلارم خواهد داد. | ورودی از نوع اعشاری
|
bool setAlarmVoltage(float voltage) |
پس از برسی توابع کلیدی و کاربردی نوبت به اجرای یک نمونه برنامه می رسد. در قسمت بعدی به این موضوع می پردازیم.
اجرای یک نمونه برنامه
در این قسمت به اجرای یک نمونه برنامه می پردازیم. در این برنامه دما، ولتاژ و درصد شارژ باتری خوانده شده و در سریال مانیتور قرار می گیرد.
#include "Adafruit_LC709203F.h" //اضافه نمودن کتابخانه به پروژه Adafruit_LC709203F lc; //ایجاد یک شی از کلاس کتابخانه void setup() { Serial.begin(115200); delay(10); Serial.println("\nAdafruit LC709203F demo"); if (!lc.begin()) { //راه اندازی کتابخانه Serial.println(F("Couldnt find Adafruit LC709203F?\nMake sure a battery is plugged in!")); while (1) delay(10); } Serial.println(F("Found LC709203F")); Serial.print("Version: 0x"); Serial.println(lc.getICversion(), HEX); //چاپ آدرس آی سی در خروجی lc.setThermistorB(3950); // تعیین ترمیستور و مقاومت آن در ورودی lc.setPackSize(LC709203F_APA_500MAH); //تعیین ظرفیت باتری و نوع آن lc.setAlarmVoltage(3.8); //تعیین آلارم بر روی ولتاژ ۳٫۸ } void loop() { Serial.print("Batt Voltage: "); Serial.println(lc.cellVoltage(), 3); //نمایش ولتاژ سلول باتری Serial.print("Batt Percent: "); Serial.println(lc.cellPercent(), 1); //نمایش درصد شارژ باتری با دقت یک رقم اعشار Serial.print("Batt Temp: "); Serial.println(lc.getCellTemperature(), 1); //نمایش دمای باتری delay(2000); // تایخر برای آماده سازی و خواندن مجدد مقادیر }
لوازم متناسب با آموزش
ماژول باتری LC709230F
جمع بندی
در این آموزش به تحلیل و بررسی کتابخانه LC709203F، توسعه یافته توسط شرکت AdaFruit پرداختیم. مطابق رویه معمول آموزش های کتابخانه ای، ابتدا به نحوه نصب و بررسی نکات فنی کتابخانه پرداختیم. سپس در ادامه توابع کلیدی کتابخانه را مورد تحلیل و بررسی قرار دادیم. در نهایت با ارائه یک مثال، نحوه استفاده از توابع را در ک برنامه عملی مشاهده نمودیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.