کنترل دور و جهت موتورهای الکتریکی یکی از مهم ترین پروسه ها در پروژه ها به شمار می رود. زمانیکه پروژه های الکترومکانیکی در پیش داریم، کنترل دور موتورها بسیار مهم است. از طرف دیگر، یک موتور الکتریکی علاوه بر دور چرخش، جهت حرکت آن توسط پردازنده مرکزی باید قابل کنترل باشد.
پردازنده ESP32 یکی از قدرتمندترین پردازنده های حاضر در زمینه اینترنت اشیا به شمار می رود. این پردازنده از دو هسته ۳۲ بیتی با قابلیت پردازش دستورات تا ۲۴۰ مگاهرتز بر ثانیه، تشکیل شده است. وجود بلوتوث، ساعت داخلی و…. برخی از امکانات جانبی این تراشه به شمار می روند. یکی دیگر از قابلیت های این ماژول، وجود دو کانال جهت کنترل موتورهاست. این قابلیت که MCPWM نام دارد، می تواند دو کانال از موتورهای الکتریکی را کنترل کند. جهت راه اندازی هرچه سریع و آسان این قابلیت، کتابخانه ای توسعه یافته است. در این آموزش قصد به تحلیل و بررسی این کتابخانه داریم. در ابتدا کمی به شرح قابلیت MCPWM می پردازیم. سپس در ادامه نصب کتابخانه را خواهیم دید. پس از این مرحله، شرحی به الزامات فنی کتابخانه خواهیم داشت. در نهایت به بررسی توابع کلیدی و کاربردی کتابخانه خواهیم پرداخت. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
واحد MCPWM تعریف و کاربرد
واحد MCPWM یکی از واحدهای درونی تراشه ESP32 است. این واحد وظیفه ایجاد پالس PWM و کنترل جهت موتور را دارد. عبارت MCPWM به معنای Motor Control Pulse Width Modulation است. این واحد در تراشه ESP32 در دو بخش مجزا قرار دارد. به عبارت دیگر شما درون تراشه ESP32 از دو واحد MCPWM بهره مند هستید.
آنطور که از تصویر فوق مشخص است، هر واحد MCPWM دارای سه قسمت با قابلیت ایجاد پالس خروجی است. بدین ترتیب شما می توانید به کمک این واحد و درایورهای موتور، حرکت یک موتور را کنترل کنید. در ادامه به بررسی کتابخانه و الزامات فنی آن می پردازیم.
نصب کتابخانه ESP32MotorControl.h
اولین قدم در استفاده از یک کتابخانه، نصب آن در نرم افزار آردوینو است. جهت نصب کتابخانه MCPPWM، می بایست به روش دستی این کتابخانه را از صفحه گیت هاب آن دانلود و نصب کنیم. نصب کتابخانه بسیار ساده است. کافیست مراحل گفته شده در زیر را قدم به قدم انجام دهید.
- با کلیک بر روی این لینک، وارد صفحه کتابخانه در گیت هاب شوید.
- مطابق تصویر زیر، ابتدا بر روی گزینه code و سپس Download ZIP کلیک نمایید.
پس از دانلود، از منوی sketch گزینه include library و سپس add zip file را انتخاب کنید. پس از چند لحظه کتابخانه به نرم افزار اضافه خواهد شد.
الزامات و نکات فنی کتابخانه ESP32MotorControl.h
پس از نصب کتابخانه نوبت به بررسی الزامات و نکات فنی آن می رسد. پیش از هرچیز توجه داشته باشید که این کتابخانه برای بردهای ESP سری ۳۲(ESP32) توسعه یافته است. بنابراین از این کتابخانه در سایر بردها نظیر UNO و یا ESP8266 نمی توان استفاده کرد. در کنار این، این کتابخانه بر روی کلی مدل های ESP32 نظیر ES32-WRROM32، ESP32-S و…. قابل اجراست. در کنار این، توجه کنید که هسته اصلی MCPWM از تایمرهای ۰، ۱ و ۲ میکروکنترلر ESP32 برای کنترل خروجی استفاده می کند.
توابع کلیدی و کاربردی کتابخانه ESP32MotorControl.h
پس از بررسی الزامات و نکات فنی، نوبت به بررسی توابع کلیدی و کاربردی کتابخانه می رسد. جدول زیر لیست توابع را نمایش می دهد.
شرح | ورودی | تابع | |||
به کمک این تابع می توان یک موتور را کنترل کرد. ورودی های این تابع شماره پایه ها جهت اتصال به متور را نمایش می دهد. هر یک از این ورودی شماره پین خروجی جهت اتصال پالس به درایور موتور را تعیین می کنند. | ورودی ها از نوع بدون علامت ۸ بیتی جهت کنترل یک موتور | void attachMotor(uint8_t gpioIn1, uint8_t gpioIn2) | |||
به کمک این تابع دو موتور را می توانیم به ESP32 متصل کنید. ورودی های ۱ و ۲ برای کنترل جهت موتور شماره ۱ و ورودی های سوم و چهارم برای کنترل جهت موتور شماره ۲ تعریف می شوند. | ورودی ها برای اتصال پایه های خروجی تراشه به موتور |
|
|||
این تابع موتور را در حالت سرعت کامل رو به جلو به گردش در می آورد. ورودی این تابع شماره موتور را تعیین می کند. عدد صفر برای موتور شماره ۱ و عدد یک برای موتور شماره ۲ تعیین می گردد. | ورودی از نوع ۸ بیت بدون علامت | void motorFullForward(uint8_t motor) | |||
این تابع موتور را که شماره آن در ورودی نخست تعیین شده، به اندازه سرعتی که در ورودی دوم تعیین می شود(عدد پالس PWM) رو به جلو به گردش در می آورد. | ورودی اول شماره موتور
ورودی دوم سرعت موتور |
void motorForward(uint8_t motor, uint8_t speed) | |||
این تابع موتور را در حالت سرعت کامل رو به عقب به گردش در می آورد. ورودی این تابع شماره موتور را تعیین می کند. عدد صفر برای موتور شماره ۱ و عدد یک برای موتور شماره ۲ تعیین می گردد. | ورودی جهت تعیین شماره موتور | void motorFullReverse(uint8_t motor) | |||
این تابع موتور را که شماره آن در ورودی نخست تعیین شده، به اندازه سرعتی که در ورودی دوم تعیین می شود(عدد پالس PWM) رو به عقب به گردش در می آورد. | ورودی اول شماره موتور
ورودی دوم سرعت موتور |
void motorReverse(uint8_t motor, uint8_t speed) | |||
این تابع حرکت موتور را که شماره آن در ورودی تعیین شده متوقف می کند. | ورودی شماره موتور | void motorStop(uint8_t motor) | |||
این تابع سرعت موتوری که شماره آن در ورودی قرار گرفته را در خروجی قرار می دهد. | ورودی شماره موتور | uint8_t getMotorSpeed(uint8_t motor) | |||
این تابع در صورتیکه موتور با شماره قرار گرفته در ورودی رو به جلو حرکت کند، خروجی را true قرار می دهد. | ورودی شماره موتور | boolean isMotorForward(uint8_t motor) | |||
این تابع در صورتیکه موتور با شماره قرار گرفته در ورودی رو به عقب حرکت کند، خروجی را true قرار می دهد. | ورودی شماره موتور | boolean isMotorStopped(uint8_t motor) |
پس از آشنایی با توابع، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعدی را به این موضوع اختصاص می دهیم.
اجرای یک نمونه برنامه
پس از آشنایی با توابع نوبت به اجرای یک نمونه برنامه می رسد. به کدهای زیر دقت کنید.
#include "ESP32MotorControl.h" ESP32MotorControl MotorControl = ESP32MotorControl(); //تعریف شی void setup() { // put your setup code here, to run once: MotorControl.attachMotors(1, 2, 3, 4); MotorControl.motorsStop(); MotorControl.motorForward(0, 50); MotorControl.motorReverse(0, 100); MotorControl.motorForward(1, 150); MotorControl.motorReverse(1, 255); } void loop() { // put your main code here, to run repeatedly: }
لوازم مورد نیاز
لینک خرید برد ESP32، کلیک کنید
لینک خرید انواع موتور و درایور موتور، کلیک کنید
جمع بندی
بردهای ESP32 یکی از مهم ترین، پرکاربردترین و البته قدرتمندترین تراشه ها در زمینه اینترنت اشیا به شمار می روند. این بردها قابلیت برنامه نویسی با پردازنده دو هسته ای، ساعت داخلی، امکان ایجاد شبکه وای فای و… را دارند. یکی از مهم ترین ویژگی های این ماژول ها، وجود قابلیت MCPWM است. به کمک این قابلیت می توان به سادگی دور و جهت موتور را کنترل کنید. جهت راه اندازی و کار با این قابلیت کتابخانه تحت آردوینو توسعه یافته است. در این آموزش به تحلیل و بررسی این کتابخانه پرداختیم. مطابق رویه معمول، ابتدا به نصب و کتابخانه و بررسی الزامات فنی آن پرداختیم. در ادامه توابع کلیدی و کاربردی کتابخانه را از نظر گذراندیم. در نهایت با ارایه مثالی، نحوه استفاده از توابع را مشاهده کردیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.