در اين مقاله نحوه كنترل و راه اندازی موتور براشلس با آردوينو و اسپید کنترلر آموزش داده ميشود. چنانچه تمايل داريد در خصوص اصول كاركرد موتورهاي dc براشلس (BLDC) بدانيد، میتوانید نحوه كار موتور DC براشلس و اسپید کنترلر ESC را مطالعه کنید.
مرور كلي
در اين مثال يك موتور dc براشلس از نوع outrunner با اين مشخصات را در نظر ميگيريم. رده موتور 1000KV است. اين موتور با استفاده از باتري LiPo (ليتيم-پليمر) نوع 2S ، 3S يا 4S تغذيه ميشود و به يك اسپید کنترلر (ESC) 30 آمپر نياز دارد. رده KV يك موتور براشلس بصورت سرعت دوران موتور بدون بار بر حسب تعداد دور بر دقيقه (rpm) به ازاي هر يك ولت تغذيه تعريف ميشود. به عنوان مثال اگر موتور را با يك باتري LiPo 2S كه داراي 4/7 ولت است تغذيه كنيم، موتور حداكثر ميتواند با سرعت 7400 دور بر دقيقه بچرخد (4/7 برابر عدد رده موتور، يعني 4/7 برابر عدد 1000).
مصرف باتري موتورهاي براشلس معمولا زياد است و متداول ترين روش براي تغذيه اين موتورها استفاده از باتريهاي LiPo است. شماره “S” يك باتري LiPo بيانگر تعداد سلولهاي آن باتري است. ولتاژ هر سلول برابر 7/3 ولت ميباشد.
در اين مثال از باتري LiPo 3S استفاده ميكنيم كه داراي سه سلول بوده و ولتاژ آن 11 ولت ميباشد. بنابراين انتظار داريم سرعت موتور حداكثر به 11100 دور بر دقيقه برسد. از يك اسپید كنترلر 30A ESC كه منطبق بر مشخصات موتور است استفاده ميكنيم. ورودي تغذيه ESC داراي دو سيم است كه به تغذيه VCC (يازده ولت) و زمين (GND) متصل ميشوند. طرف ديگر ESC داراي سه سيم است كه به سه فاز موتور براشلس وصل ميشوند.
ESC داراي سه سيم ديگر نيز ميباشد كه عبارتند از خط سيگنال، ولتاژ 5V+ و زمين (ground). اين مشخصه ESC به عنوان “مدار حذف باتري” (Battery Eliminator Circuit) ناميده ميشود و همانگونه كه از اين نام مشخص است نياز به باتري مجزا براي ميكروكنترلر را مرتفع مي سازد. بنابراين ESC ولتاژ تثبيت شده پنج ولتي مورد نياز براي تغذيه آردوينو را تامين ميكند.
اگر دقت كنيم، چنين ساختاري در سروو موتور نيز وجود دارد. بنابراين كنترل و راه اندازی يك موتور dc براشلس، با استفاده از ESC و آردوينو به سادگي كنترل يك سروو موتور با استفاده از آردوينو خواهد بود. مشابه سروو موتور، سيگنالهاي كنترلي ESC نيز بصورت سيگنالهاي استاندارد PWM 50Hz هرتز است.
شباهت سيگنالهاي كنترلي سروو موتور و ESC كار ما را راحت ميكند. به عنوان نمونه هنگاميكه بخواهيم يك هواپيماي كنترل از راه دور بسازيم، هم به موتورهاي براشلس و هم به سروو موتور نياز است. با استفاده از ESC هر دو نوع اين موتورها را ميتوان با كنترلكننده مشابهي كنترل کرد.
بنابراين كافيست به كمك آردوينو سيگنالهاي PWM 50Hz هرتز توليد كنيم. بسته به عرض پالس كه ميتواند بين يك تا دو ميليثانيه انتخاب شود، توسط ESC سرعت دور موتور از مقدار مينيمم تا مقدار ماكزيمم قابل كنترل خواهد بود.
دياگرام مدار كنترل و راه اندازی موتور براشلس با آردوينو
در شكل زير دياگرام اتصالات مدار كنترل و راه اندازی موتور براشلس با آردوينو نشان داده شده است. علاوه بر ESC از يك پتانسيومتر ساده براي كنترل سرعت موتور براشلس استفاده شده است.
كد برنامه آردوينور براي راه اندازی موتور براشلس
كد آردينو اين مثال در حد چند خط برنامه ساده بصورت زير ميباشد.
#include <Servo.h>
Servo ESC; // create servo object to control the ESC
int potValue; // value from the analog pin
void setup() {
// Attach the ESC on pin 9
ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds)
}
void loop() {
potValue = analogRead(A0); // reads the value of the potentiometer (value between 0 and 1023)
potValue = map(potValue, 0, 1023, 0, 180); // scale it to use it with the servo library (value between 0 and 180)
ESC.write(potValue); // Send the signal to the ESC
}
توضيح كد
با توجه به کد برنامه راه اندازی موتور براشلس با آردوينو ، در ابتدا كتابخانه Servo تعريف ميشود. بهوسيله اين كتابخانه توليد سيگنال PWM 50Hz به سادگي قابل انجام است. در قدم بعد شي يا object “سروو” را براي كنترل ESC ايجاد ميكنيم و يك متغير براي ذخيره ورودي آنالوگي كه از پتانسيومتر ميآيد، تعريف ميكنيم. در بخش setup برنامه با استفاده از تابع ()attach مشخص ميكنيم كه سيگنال كنترلي ESC به كدام پين آردوينو وصل شده است و ماكزيمم و مينيمم عرض پالس سيگنال PWM را نيز بر حسب ميليثانيه تعريف ميكنيم.
درون حلقه نرم افزاري ابتدا مقدار پتانسيومتر خوانده ميشود و مقدار آن از رنج 0 تا 1023 به رنج 0 تا 180 نگاشت ميشود. با استفاده از تابع ()write به ESC سيگنال ارسال ميشود و يا پالس PWM 50Hz هرتز توليد ميشود. مقادير 0 تا 180 متناظر با مقادير 1000 تا 2000 ميليثانيه تعريف شده در بخش قبلي برنامه ميباشند.
با بارگذاري اين كد بر روي آردوينو، ميتوان با استفاده از پتانسيومتر سرعت موتور براشلس را از صفر تا ماكزيمم مقدار تغيير داد.
هرچند موارد ديگري نيز وجود دارد كه بايد به آنها دقت شود. هنگاميكه موتور را روشن ميكنيم، مقدار سيگنال بايد كمتر مساوي مقدار حداقل تعريف شده يعني يك ميليثانيه باشد كه اصطلاحا “تجهيز” ESC ناميده ميشود. در صورتيكه موتور به درستي تجهيز شده باشد، به عنوان علامتي براي تایيد درستي تجهيز يك بوق توسط موتور توليد خواهد شد. چنانچه در لحظه برقدار كردن موتور مقدار سيگنال بيشتر از ميزان حداقل يك ميليثانيه باشد، ESC موتور را روشن نخواهد كرد. در چنين شرايطي با كاهش مقدار سيگنال به اندازه صحيح، ESC موتور را راهاندازي ميكند. اين مشخصه به لحاظ ايمني در نظر گرفته شده است كه مانع از راه اندازي اوليه موتور با سرعت بالا خواهد شد.
كاليبراسيون اسپید کنترلر
در انتها به مسئله كاليبراسيون ESC ميپردازيم. هر اسپید کنترلر داراي يك حد بالا و پائين است كه به ميزان اندكي بايد تغيير داده شود. به عنوان نمونه، حد پائين ميتواند 2/1 ميليثانيه و حد بالا 9/1 ميليثانيه تنظیم شود. در چنين حالتي، ولوم كنترلي در 20% ابتدايي و تا زماني كه به حد پائين 2/1 ميليثانيه برسد، هيچ كاري انجام نخواهد داد.
براي حل اين مشكل ميتوان اسپید کنترلر را كاليبره كرد، به اين معنا كه حد بالا و پائين را در مقدار مورد دلخواه، ست یا تنظیم كرد. براي اين كار قبل از اينكه ESC را برقدار كنيم بايد ولوم پتانسيومتر را تا حد ماكزيمم بچرخانيم. حال با برقدار كردن ESC صداي بوق موتور شنيده خواهد شد كه به مفهوم ست شدن صحيح مقدار جديد حد بالايي است.
اكنون پس از 2 ثانيه بايد ولوم پتانسيومتر را تا جايي كه ميخواهيم به عنوان حد پايين جديد باشد، بچرخانيم. پس از شنيدن صداي بوق موتور مطمئن ميشويم كه مقدار حد پائين نيز بدرستي ست شده است. بدين ترتيب، فرآيند كاليبراسيون اسپید کنترلر تكميل ميشود. اكنون با چرخاندن ولوم پتانسيومتر ميتوان سرعت دور موتور را بر اساس حد بالا و پائين جديد كنترل نمود.
سلام
می شه به جای باتری از برق شهر برای تغذیه موتور استفاده کرد؟ مثلا با استفاده از یک آداپتور
سلام دوست عزیز، بله این امکان وجود داره، شما باید طبق متن مقاله، ولتاژی توی بازهی 8 تا 16 ولت رو برای موتور تامین کنید. میتونید با باتری لیتیوم یون، با باتری لیتیوم پلیمر یا هر روش دیگه ای این کارو بکنید.
سلام خسته نباشید ببخشید میخواستم بپرسم آیا میشود درایور موتور براشلس ۱۲ تا ۳۶ ولت رو به اسپیدکنترل براشلس تقییر داد بصورتی که مثل اسپیدکنترل بشه درایور موتور براشلس رو با کانکتور فیش سه پین به رسیور رادیوکنترل متصل کرد؟
میخوام برای ماشین کنترلی و متاسفانه اسپید کنترل های موجود توی بازار تا بیشتر از ۸ سل باتری یعنی حدود ۳۰ ولت بیشتر جواب نمیدن من موتور خیلی قوی گذاشتم روی ماشین و برای سرعتی که میخوام از موتور بگیرم به ۳۶ تا ۴۰ ولت نیاز دارم گفتم درایور موتورهای براشلس ولتاژ بالا تا ۶۰ ولت که موجود هست توی بازار این امکان تقییر رو داره به نظر شما میشه درایور موتور رو تقییر داد به اسپیدکنترل براشلس تبدیل کرد که قابلیت اتصال به رسیور رادیوکنترل رو داشته باشه دقیقا بشه اسپیدکنترل اما با تحمول ولتاژ بالاتر مثلا تا ۴۰ یا ۵۰ ولت؟ ممنون میشم اگه راهنمایی کنید متشکرم 🙏🏻
سلام وقت بخیر، ممنون از شما
ببینید شما باید بررسی کنید که درایور موردنظرتون با چه روشی کنترل میشه. اسپید کنترلها با pwm کنترل میشن، اگر کنترلِ درایور هم با pwm هست،
میتونید یک کانکتور ۳ پین به سیمهای مثبت منفی و pwm درایور متصل کنید و مثل اسپید کنترلر به گیرنده رادیوکنترل وصل کنید.
در غیر اینصورت احتمالا به یک مدار واسط میکروکنترلری نیاز دارید.