در اين مقاله نحوه كنترل و راه اندازی موتور براشلس با آردوينو و اسپید کنترلر آموزش داده ميشود. چنانچه تمايل داريد در خصوص اصول كاركرد موتورهاي dc براشلس (BLDC) بدانيد، ميتوانيد این مقاله را مطالعه كنيد.
مرور كلي
در اين مثال يك موتور dc براشلس از نوع outrunner با اين مشخصات را در نظر ميگيريم. رده موتور ۱۰۰۰KV است. اين موتور با استفاده از باتري LiPo (ليتيم-پليمر) نوع 2S ، ۳S يا ۴S تغذيه ميشود و به يك اسپید کنترلر (ESC) 30 آمپر نياز دارد. رده KV يك موتور براشلس بصورت سرعت دوران موتور بدون بار بر حسب تعداد دور بر دقيقه (rpm) به ازاي هر يك ولت تغذيه تعريف ميشود. به عنوان مثال اگر موتور را با يك باتري LiPo 2S كه داراي ۴/۷ ولت است تغذيه كنيم، موتور حداكثر ميتواند با سرعت ۷۴۰۰ دور بر دقيقه بچرخد (۴/۷ برابر عدد رده موتور، يعني ۴/۷ برابر عدد ۱۰۰۰).
مصرف باتري موتورهاي براشلس معمولا زياد است و متداول ترين روش براي تغذيه اين موتورها استفاده از باتريهاي LiPo است. شماره “S” يك باتري LiPo بيانگر تعداد سلولهاي آن باتري است. ولتاژ هر سلول برابر ۷/۳ ولت ميباشد.
در اين مثال از باتري LiPo 3S استفاده ميكنيم كه داراي سه سلول بوده و ولتاژ آن ۱۱ ولت ميباشد. بنابراين انتظار داريم سرعت موتور حداكثر به ۱۱۱۰۰ دور بر دقيقه برسد. از يك اسپید كنترلر ۳۰A ESC كه منطبق بر مشخصات موتور است استفاده ميكنيم. ورودي تغذيه ESC داراي دو سيم است كه به تغذيه VCC (يازده ولت) و زمين (GND) متصل ميشوند. طرف ديگر ESC داراي سه سيم است كه به سه فاز موتور براشلس وصل ميشوند.
ESC داراي سه سيم ديگر نيز ميباشد كه عبارتند از خط سيگنال، ولتاژ ۵V+ و زمين (ground). اين مشخصه ESC به عنوان “مدار حذف باتري” (Battery Eliminator Circuit) ناميده ميشود و همانگونه كه از اين نام مشخص است نياز به باتري مجزا براي ميكروكنترلر را مرتفع مي سازد. بنابراين ESC ولتاژ تثبيت شده پنج ولتي مورد نياز براي تغذيه آردوينو را تامين ميكند.
اگر دقت كنيم، چنين ساختاري در سروو موتور نيز وجود دارد. بنابراين كنترل يك موتور dc براشلس با استفاده از ESC و آردوينو به سادگي كنترل يك سروو موتور با استفاده از آردوينو خواهد بود. مشابه سروو موتور، سيگنالهاي كنترلي ESC نيز بصورت سيگنالهاي استاندارد PWM 50Hz هرتز است.
شباهت سيگنالهاي كنترلي سروو موتور و ESC كار ما را راحت ميكند. به عنوان نمونه هنگاميكه بخواهيم يك هواپيماي كنترل از راه دور بسازيم، هم به موتورهاي براشلس و هم به سروو موتور نياز است. با استفاده از ESC هر دو نوع اين موتورها را ميتوان با كنترلكننده مشابهي كنترل کرد.
بنابراين كافيست به كمك آردوينو سيگنالهاي PWM 50Hz هرتز توليد كنيم. بسته به عرض پالس كه ميتواند بين يك تا دو ميليثانيه انتخاب شود، توسط ESC سرعت دور موتور از مقدار مينيمم تا مقدار ماكزيمم قابل كنترل خواهد بود.
دياگرام مدار كنترل و راه اندازی موتور براشلس با آردوينو
در شكل زير دياگرام اتصالات مدار كنترل و راه اندازی موتور براشلس با آردوينو نشان داده شده است. علاوه بر ESC از يك پتانسيومتر ساده براي كنترل سرعت موتور براشلس استفاده شده است.
كد برنامه آردوينور براي راه اندازی موتور براشلس
كد آردينو اين مثال در حد چند خط برنامه ساده بصورت زير ميباشد.
/* Arduino Brushless Motor Control by 118ELEC.com */ #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 را نيز بر حسب ميليثانيه تعريف ميكنيم.
درون حلقه نرم افزاري ابتدا مقدار پتانسيومتر خوانده ميشود و مقدار آن از رنج ۰ تا ۱۰۲۳ به رنج ۰ تا ۱۸۰ نگاشت ميشود. با استفاده از تابع ()write به ESC سيگنال ارسال ميشود و يا پالس PWM 50Hz هرتز توليد ميشود. مقادير ۰ تا ۱۸۰ متناظر با مقادير ۱۰۰۰ تا ۲۰۰۰ ميليثانيه تعريف شده در بخش قبلي برنامه ميباشند.
با بارگذاري اين كد بر روي آردوينو ميتوان با استفاده از پتانسيومتر سرعت موتور براشلس را از صفر تا ماكزيمم مقدار تغيير داد.
هرچند موارد ديگري نيز وجود دارد كه بايد به آنها دقت شود. هنگاميكه موتور را روشن ميكنيم مقدار سيگنال بايد كمتر مساوي مقدار حداقل تعريف شده يعني يك ميليثانيه باشد كه اصطلاحا “تجهيز” ESC ناميده ميشود. در صورتيكه موتور به درستي تجهيز شده باشد، به عنوان علامتي براي تایيد درستي تجهيز يك بوق توسط موتور توليد خواهد شد. چنانچه در لحظه برقدار كردن موتور مقدار سيگنال بيشتر از ميزان حداقل يك ميليثانيه باشد، ESC موتور را روشن نخواهد كرد. در چنين شرايطي با كاهش مقدار سيگنال به اندازه صحيح، ESC موتور را راهاندازي ميكند. اين مشخصه به لحاظ ايمني در نظر گرفته شده است كه مانع از راه اندازي اوليه موتور با سرعت بالا خواهد شد.
كاليبراسيون اسپید کنترلر
در انتها به مسئله كاليبراسيون ESC ميپردازيم. هر اسپید کنترلر داراي يك حد بالا و پائين است كه به ميزان اندكي بايد تغيير داده شود. به عنوان نمونه، حد پائين ميتواند ۲/۱ ميليثانيه و حد بالا ۹/۱ ميليثانيه تنظیم شود. در چنين حالتي، ولوم كنترلي در ۲۰% ابتدايي و تا زماني كه به حد پائين ۲/۱ ميليثانيه برسد، هيچ كاري انجام نخواهد داد.
براي حل اين مشكل ميتوان اسپید کنترلر را كاليبره كرد، به اين معنا كه حد بالا و پائين را در مقدار مورد دلخواه، ست یا تنظیم كرد. براي اين كار قبل از اينكه ESC را برقدار كنيم بايد ولوم پتانسيومتر را تا حد ماكزيمم بچرخانيم. حال با برقدار كردن ESC صداي بوق موتور شنيده خواهد شد كه به مفهوم ست شدن صحيح مقدار جديد حد بالايي است.
اكنون پس از ۲ ثانيه بايد ولوم پتانسيومتر را تا جايي كه ميخواهيم به عنوان حد پايين جديد باشد، بچرخانيم. پس از شنيدن صداي بوق موتور مطمئن ميشويم كه مقدار حد پائين نيز بدرستي ست شده است. بدين ترتيب، فرآيند كاليبراسيون اسپید کنترلر تكميل ميشود. اكنون با چرخاندن ولوم پتانسيومتر ميتوان سرعت دور موتور را بر اساس حد بالا و پائين جديد كنترل نمود.