آموزش کنترل موتور براشلس با آردوینو

در این آموزش، می آموزیم که چگونه با استفاده از آردوینو و اسپید کنترل(ESC)، یک موتور براشلس را کنترل کنیم. در مواردی که بخواهید اطلاعات بیشتری در مورد چگونگی کارکرد موتورهای BLDC (موتور های براشلس) فرا بگیرید، می توانید به این مقاله مراجعه کنید. مقاله مذکور حاوی اطلاعات اضافی در مورد کار با مبانی موتورهای براشلس است و شیوه کنترل آنها را با استفاده از آردوینو و اسپید کنترل(ESC) نشان می دهد.
نکته: این آموزش جنبه تئوری دارد و به طور عملی توسط مترجم تست نشده است.
بررسی اجمالی
در این مثال، ما یک موتور براشلس outrunner داریم که مشخصات آن به صورت زیر است:
1. KV آن 1000 می باشد.
2. می توانیم توسط یک باتری LiPo لیتیوم پلیمر 2S یا 3S یا 4S به آن برق برسانیم و به یک اسپید کنترل 30A نیاز دارد.
نکته: فرض کنید که یک موتور با سرعت 1000Kv داریم، این یعنی اینکه این موتور وقتی که یک ولت به آن داده شود، 1000 دور در دقیقه(RPM) می چرخد. KV در یک موتور براشلس، تعداد دور در دقیقه را نسبت به ولت (بدون بار) مشخص می کند.

در این مورد، 1000KV یعنی اینکه، بعنوان مثال اگر ما موتور را به یک باتری LiPo 2S متصل کنیم که ولتاژ آن 7.4 ولت است، این موتور به صورت ماکزیمم می تواند به اندازه 7.4 ضرب در 1000 دور در دقیقه، بچرخد که می شود 7400 دور در دقیقه(RPM).
موتور های براشلس، تشنه برق هستند و متداول ترین روش برای برق رساندن به آنها، استفاده از باتری های لیتیوم پلمیر(LiPo) است. شماره S در باتری های لیتیوم پلیمر، تعداد سلول های باتری را مشخص می کند و (در باتری زیر) هر سلول از ولتاژ 3.7 ولت برخوردار است.

برای این مثال، ما از باتری 3S LiPo استفاده کرده ایم، که از سه سلول برخوردار است و ولتاژ 11.1V را تولید می کند. بنابراین، دور این موتور به صورت ماکزیمم به 11100 دور در دقیقه(RPM) می رسد. در نهایت در اینجا یک اسپید کنترل 30 آمپر(30A ESC) وجود دارد که ما از آن در این مثال استفاده می کنیم و آن را با نیازهای موتور تطابق می دهیم.
از یک طرف، این اسپید کنترل از سه سیم برخودار است که هرسه فاز موتور را کنترل می کند و از طرف دیگر از دو سیم VCC و GND برای برق رسانی برخوردار است.

اما (به غیر از سیم های گفته شده) همچنین یک دسته سیم سه تایی نیز از اسپید کنترل بیرون آمده است؛ این سه سیم مشخص کننده سیگنال و ولتاژ 5V+ و اتصال به زمین(ground) هستند. به این سه سیم در اسپید کنترل، مدار حذف کننده باتری(Battery Eliminator Circuit) یا به اختصار BEC گفته می شود. و همان طور که از نامش پیداست، نیاز به استفاده از باتری مجزا برای میکروکنترلر را از بین می برد. با استفاده از BEC، اسپید کنترل، یک ولتاژ 5 ولت تنظیم شده را ارائه می دهد که می توانیم از آن برای برق دادن به آردوینو استفاده کنیم. باید ذکر کنیم که این اتصال(کانکشن)، در حقیقت مانند اتصالی است که در سروو موتورها داشتیم.

بنابراین، کنترل کردن یک موتور براشلس با استفاده از اسپید کنترل(ESC) و آردوینو به سادگی کنترل کردن سروو موتورها با استفاده از آردوینو است. اسپید کنترل ها،از سیگنال کنترل مشابهی مانند سروو موتورها استفاده می کنند، که همان سیگنال 50Hz PWM است.

این موضوع بسیار مناسب است، زیرا بعنوان مثال وقتی که یک هواپیمای RC ایجاد می کنیم، ما معمولاً به هر دو موتور سروو، و براشلس نیاز داریم و به این طریق می توانیم آنها را به سادگی با همین نوع کنترلر، کنترل کنیم. بنابراین با استفاده از آردوینو ما تنها باید یک سیگنال 50Hz PWM را تولید کنیم و بسته به عرض پالس ها یا مدت بالا بودن پالس که باید از 1 میلی ثانیه تا 2 میلی ثانیه متفاوت باشد، اسپید کنترل، موتور را از مینیمم تا ماکزیمم دور در دقیقه(RPM) می چرخاند.

مدار کنترل موتور براشلس با استفاده از آردوینو
مدار کنترل موتور براشلس با استفاده از آردوینو UNO به صورت زیر است. علاوه بر اسپید کنترل(ESC)، ما از یک پتانسیومتر ساده نیز برای کنترل کردن سرعت موتور استفاده می کنیم.

به نکات زیر تورجه کنید:
1. در پتانسیومتر تصویر بالا، سیم قرمز به پین 5 ولت و سیم مشکی به GND و سیم سبز به A0 متصل است.
2. در سیم دیگر اسپید کنترل(ESC)، یعنی سیم نارنجی، به پین شماره 9 متصل است.
شما می توانید قطعات مورد نیاز زیر را برای این آموزش آردوینو تهیه کنید:
- موتور براشلس
- اسپید کنترل 30 آمپر(ESC 30A)
- باتری لیتیوم پلیمر(Li-Po)
- برد آردوینو UNO
- پتانسیومتر
- برد بورد و سیم های جامپر
کدهای مورد نیاز برای کنترل موتور براشلس(BLDC)
کدهای آردوینو بسیار ساده هستند و چند خط بیشتر نیستند:
کدهای شماره 1
/*
Arduino Brushless Motor Control
by Dejan, https://howtomechatronics.com
*/
#include <Servo.h>
Servo ESC; // برای اتصال به اسپید کنترل servo ایجاد آبجکت
int potValue; // دریافت مقدار از پین آنالوگ
void setup() {
// متصل کردن اسپید کنترل به پین شماره 9
ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds)
}
void loop() {
potValue = analogRead(A0); // خواندن مقدار پتانسیومتر- مقداری بین 0 و 1023
potValue = map(potValue, 0, 1023, 0, 180); // یعنی مقداری بین 0 و 180 servo مقیاس بندی مقدار بالا برای استفاده کتابخانه
ESC.write(potValue); // ارسال سیگنال به اسپید کنترل
}
توضیحات: در کدهای بالا، در خط شماره 6، ما نیاز داریم کتابخانه ی Servo را به کدها اضافه کنیم، زیرا با استفاده از این کتابخانه، به سادگی می توانیم سیگنال های 50Hz PWM تولید کنیم؛ در غیر این صورت، سیگنال های PWM ای که آردوینو تولید می کند، فرکانس های متفاوتی دارند. برای دانلود کتابخانه Servo اینجا کلیک کنید یا به این آدرس بروید.
سپس در خط شماره 8 یک آبجکت از کتابخانه Servo به نام ESC ایجاد می کنیم تا اسپید کنترل را کنترل کند و برای ذخیره کردن ورودی آنالوگ از پتانسیومتر، در خط شماره 10 یک متغیر به نام potValue تعریف می کنیم.
در تابع ()setup، با استفاده از تابع attach()، در خط شماره 14 تعریف می کنیم که پین شماره 9 آردوینو، مشخص کننده سیگنال کنترل اسپید کنترلِ متصل شده باشد. همچنین در این خط، عرض پالس های مینیمم و ماکزیمم از سیگنال PWM را به میکروثانیه مشخص می کنیم.
در تابع loop() ابتدا پتانسیومتر را قرائت می کنیم و مقدار آن را از 0 تا 1023 به مقادیر 0 تا 180 نگاشت(map) می کنیم. سپس با استفاده از تابع write() این سیگنال را به اسپید کنترل ارسال می کنیم یا یک سیگنال 50Hz PWM تولید می کنیم.
مقادیر ایجاد شده از 0 تا 180، با مقادیر از 1000 تا 2000 میکروثانیه که در تابع setup() تعریف کردیم، تطابق دارند. بنابراین اگر ما این کدها را در آردوینوی خود آپلود کنیم، و با استفاده از باتری، به همه چیز برق برسانیم، آنگاه می توانیم سرعت موتور براشلس را با استفاده از باتری، از 0 تا مقدار ماکزیمم، کنترل کنیم. سپس می توانیم سرعت موتور براشلس را با استفاده از پتانسیومتر، از 0 تا مقدار ماکزیمم کنترل کنیم.
نکته مترجم: سیگنال ورودی آنالوگ پتانسیومتر 10 بیت طول دارد، که این یعنی مقادیر آن می توانند از 0 تا 1023 تغییر کنند، زیرا 210 برابر با 1024 می باشد.

اما چند نکته وجود دارد که باید در اینجا ذکر کنیم: وقتی که در ابتدا به موتور برق می رسانیم، مقدار سیگنال باید یکسان یا کمتر از حداقل مقدار، یعنی یک پالس 1 میلی ثانیه باشد. به این کار، مسلح کردن اسپید کنترل(arming of the ESC) گفته می شود و موتور یک بوق تایید می دهد و ما متوجه می شویم که موتور به درستی مسلح شده است.
در مواردی که به هنگام برق دادن، با مقادیر بالاتری مواجه هستیم، یعنی سرعت موتور را افزایش می دهیم، اسپید کنترل، موتور را استارت می کند تا زمانی که ما به مینیمم مقدار سرعت موتور برسیم. این از لحاظ ایمنی بسیار مناسب است، زیرا موتور در مواردی که سرعت آن را افزایش می دهیم، به هنگام برق رساندن،(تا زمانی که به مقدار مینیمم برسد) استارت نمی کند.
تنظیم اسپید کنترل
در آخر، اجازه دهید ببینیم چگونه باید اسپید کنترل را تنظیم کنیم. هر اسپید کنترل، نقاط high و low مخصوص به خود را دارد و ممکن است آنها کمی با یکدیگر متفاوت باشند. بعنوان مثال، نقطه low ممکن است 1.2 میلی ثانیه باشد و نقطه high ممکن است 1.9 میلی ثانیه باشد. در چنین موردی، موتور ما در %20 اول، کاری انجام نمی دهد، تا زمانی که به مقدار حداقل(low) 1.2 میلی ثانیه برسد.

برای حل این مشکل، می توانیم اسپید کنترل(ESC) را تنظیم کنیم یا نقاط high و low را هرطور که می خواهیم تنظیم کنیم. برای انجام این کار، قبل از برق رسانی به اسپید کنترل، ابتدا نیاز داریم مقدار پتانسیومتر را به حداکثر برسانیم یا به یک مقداری برسانیم که حداقل از نقطه میانی فعلی بزرگتر باشد. سپس می توانیم برق اسپید کنترل را افزایش دهیم و تا صدای بوقی را از موتور بشنویم که تایید می کند که ما نقطه high جدید را تنظیم کرده ایم.
نکته: در جمله ی بالا، منظور از : سپس می توانیم برق اسپید کنترل را افزایش دهیم، می تواند یکی از معانی زیر را داشته باشد:
1. یعنی برق را وصل کنیم.
2. یعنی پتانسیومتر را افزایش دهیم.

پس از 2 ثانیه، ما باید پتانسیومتر خود را به سمت موقعیتی حرکت دهیم که می خواهیم مقدار low جدید در آنجا قرار گیرد. سپس دوباره صداهای بوق تایید را خواهیم شنید و با استفاده از آن، کار تنظیم و کالیبره سازی اسپید کنترل انجام می شود. اکنون افزایش یا کاهش سرعت موتور بلافاصله پاسخ خواهد داد و می توانیم این موتور را در داخل نقاط high و low کنترل کنیم.
هر چیزی که برای این آموزش لازم بود را توضیح دادیم. در مواردی که می خواهید بدانید چگونه به طور وایرلس این موتورهای براشلس را کنترل کنید، باید منتظر مقالات بعدی ما باشید.

منابع: https://howtomechatronics.com
- بازدید: 4223
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.