در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو این قسمت را به یک کتابخانه کلیدی دیگر اختصاص می دهیم. این کتابخانه که مخصوص درایور موتور BTS7960 طراحی شده، ارتباط بین میکروکنترلر و این آی سی را ساده تر از قبل می کند. به کمک این کتابخانه به سادگی و در کمترین زمان ممکن، می توانید ارتباط بین برد آردوینو و درایور موتور را فراهم نمایید. درایور موتور BTS7960 یک درایور موتور از نوع H Bridge جهت کنترل موتورهاست. به کمک این درایور موتور می توان فرامین چپ گرد، راست گرد و دور موتور را کنترل نمود. در کنار این، این درایور موتور قادر به کنترل جریان تا ۴۳ آمپر در خروجی است. آنطور که گفته شد، جهت راه اندازی و کار با این درایور موتور کتابخانه تحت آردوینو توسعه یافته است. در این آموزش مطابق رویه آموزش های تحلیل و بررسی کتابخانه، ابتدا به بررسی این درایور موتور می پردازیم. سپس در ادامه نحوه نصب و الزامات فنی کتابخانه را خواهیم داشت. پس از این مرحله نوبت به تحلیل توابع کلیدی و کاربردی می رسد. دست آخر با اجرای یک نمونه برنامه، نحوه استفاده از توابع در برنامه ها را مشاهده خواهیم نمود. بنابراین در ادامه آموزش تحلیل کتابخانه bts7960 با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.
درایور موتور BTS7960
پیش از آنکه به ادامه آموزش بپردازیم، در این قسمت به طور مختصر نگاهی بر ویژگی ها و قابلیت های درایور موتور BTS7960 خواهیم داشت. این درایور موتور از نوع H Bridge و با قابلیت کنترل جریان تا ۴۳ آمپر است. اگر با درایور موتورها آشنایی داشته باشید، حتما می دانید که عبارت H Bridge یا همان پل H، قابلیتی جهت کنترل موتور در دو جهت است. به عبارت دیگر به کمک این قابلیت شما می توانید جهت گردش موتور، راست گرد یا چپ گرد، را کنترل نمایید.
در کنار موارد ذکر شده، این درایور موتور می تواند تا ۴۳ آمپر را در خروجی خود تحمل نماید. بنابراین به سادگی به کمک این درایور می توانید انواع مختلف موتورهای الکتریکی پر قدرت را به کمک برد آردوینو کنترل نمایید. از آنجاییکه به کمک کتابخانه روال کنترل موتورها سریع می گردد، لذا در قسمت بعدی نحوه نصب کتابخانه را مشاهده خواهیم نمود.
نصب کتابخانه BTS7960.h
همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم. همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.
پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت BTS7960 را جستجو نموده و کتابخانه مشخص شده در تصویر زیر را نصب نمایید.
الزامات و نکات فنی کتابخانه BTS7960
پس از نصب کتابخانه که در قسمت پیشین مشاهده کردیم، در این قسمت قصد داریم تا به الارمات و نکات فنی کتابخانه بپردازیم. از آنجاییکه این کتابخانه جهت تولید موج PWM از تابع analogWrite استفاده می کند، لذا هنگام انتخاب پایه مناسب بجهت کنترل دور موتور، دقت نظر لازم را در نظر داشته باشید. به عنوان مثال در برد آردوینو UNO تعداد خاصی از پایه ها قابلیت موج PWM را دارند، این در حالیست که در برد های سری ESP تمام پایه ها قابلیت تعریف PWM را در خود جای داده اند. دیگر نکته مهم در رابطه با این کتابخانه، مستقل بودن آن از معماری پردازنده است. به عبارت دیگر این کتابخانه بر روی کلیه بردهای مورد پشتیبانی پلتفرم آردوینو قابل اجراست. بنابراین از این کتابخانه بر روی بردهای آردوینو با هسته AVR، SAMD، ARM و سایر پردازنده ها نظیر ESP با پردازنده XTENSA قابلیت اجرا دارد.
توابع کلیدی و کاربردی کتابخانه
پس از آشنایی با الزامات و نکات فنی، نوبت به تحلیل توابع کلیدی و کاربردی می رسد. جدول زیر لیست این توابع را به همراه شرح هر تابع و ورودی های آن نمایش می دهد. توجه داشته باشید که در جدول زیر ورودی ها از سمت چپ به راست شماره بندی می شوند.
شرح | ورودی | تابع |
تابع سازنده کلاس کتابخانه جهت تعریف شی و پارامترهای مقدماتی | ورودی نخست تعیین پایه جهت فعال سازی چپ گرد موتور
ورودی دوم تعیین پایه جهت فعال سازی راست گرد موتور ورودی سوم پایه جهت تعیین سیگنال چپ گرد موتور ورودی چهارم پایه جهت تعیین سیگنال راست گرد موتور |
:BTS7960(uint8_t L_EN, uint8_t R_EN, uint8_t L_PWM, uint8_t R_PWM) |
گردش موتور به صورت راستگرد با سرعت تعیین شده در ورودی به صورت PWM | ورودی جهت تعیین سیگنال PWM | void TurnRight(uint8_t pwm) |
گردش موتور به صورت چپ گرد با سرعت تعیین شده در ورودی به صورت PWM | ورودی جهت تعیین سیگنال PWM | void TurnLeft(uint8_t pwm) |
فعال سازی فرمان به موتور | بدون ورودی | void Enable() |
غیر فعال کردن فرمان به موتور | بدون ورودی | void Disable() |
توقف گردش موتور | بدون ورودی | void Stop() |
پس از آنکه با توابع کلیدی و کاربردی کتابخانه آشنا شدیم، قسمت بعد را به اجرای یک نمونه برنامه اختصاص می دهیم.
اجرای یک نمونه برنامه
در قسمت پیشین با توابع کتابخانه، ورودی ها و شرح هر یک آشنا شدیم. در این قسمت اما قصد داریم تا با ارایه یک مثال، نحوه استفاده از توابع در برنامه های کاربردی را مشاهده نماییم. برنامه زیر، موتور را در جهت چپ گرد یکبار از سرعت صفر تا بیشینه می برد؛ سپس در ادامه موتور را از سرعت بی نهایت تا توقف کامل هدایت می کند.
// نحوه سیم بندی موتور با درایور // L_EN -> 8 // R_EN -> 8 // L_PWM -> 9 // R_PWM -> 10 #include "BTS7960.h" //درج کتابخانه //تعریف پایه ها const uint8_t EN = 8; const uint8_t L_PWM = 9; const uint8_t R_PWM = 10; BTS7960 motorController(EN, L_PWM, R_PWM); //تعریف شی و ایجاد ورودی برای تابع سازنده void setup() { } void loop() { motorController.Enable(); //فعال سازی ارتباط با موتور for(int speed = 0 ; speed < 255; speed+=10) { motorController.TurnLeft(speed); //گردش موتور به چپ به سرعت تعیین شده delay(100); //تاخیر برای مشاهده تغییر سرعت } motorController.Stop(); //توقف موتور for(int speed = 255 ; speed > 0; speed-=10) //گردش موتور از سرعت زیاد به کم به صورت چپ گرد { motorController.TurnLeft(speed); delay(100); } motorController.Stop(); //توقف موتور motorController.Disable(); //قطع ارتباط با درایور موتو delay(5000); }
لوازم مورد نیاز
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو این قسمت را به درایور BTS7960 اختصاص دادیم. این کتابخانه به سادگی با درایور موتور ارتباط برقرار کرده و روال برنامه نویسی را بسیار تنطیم و تسهیل می کند. در این آموزش مطابق رویه معمول آموزش های کتابخانه، ابتدا به معرفی و بررسی تراشه درایور BTS7960 پرداختیم. در ادامه نحوه نصب و الزامات فنی کتابخانه بررسی شد. پس از این مرحله قسمت اصلی، یعنی تحلیل توابع کلیدی و کاربردی مورد بررسی قرار گرفت. در نهایت با ارایه یک مثال، استفاده از توابع در برنامه های عملی مشاهده شد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.