آموزش کنترل موتور براشلس آردوینو BLDC و مدار ESC
در این آموزش یاد میگیریم که چگونه یک موتور براشلس را با استفاده از برد آردوینو و مدار ESC کنترل کنیم.
مرور کلی
برای این مثال، من یک موتور BLDC outrunner با مشخصات زیر دارم: این موتور دارای رتبه KV ۱۰۰۰ است، میتواند با استفاده از باتری لیتیوم پلیمر S2، S3 یا S4 تغذیه شود و به مدار A30ESC نیاز دارد. رتبه KV در موتور براشلس دور در دقیقه موتور را بدون بار تعریف میکند.
در این مورد، KV۱۰۰۰ به این معنی است که، برای مثال، اگر ما موتور را با باتری لیتیوم پلیمر S2 تأمین کنیم که ولتاژ ۷.۴ ولت دارد، موتور میتواند به حداکثر دور در دقیقه ۷.۴ برابر ۱۰۰۰ برسد، یا ۷۴۰۰ دور در دقیقه باشد.
موتورهای براشلس نیازمند تغذیه هستند و رایجترین روش برای تغذیه آنها استفاده از باتریهای لیتیوم پلیمر است. تعداد “S” یک باتری لیتیوم پلیمر نشان میدهد که باتری چند سلول دارد و هر سلولV ۳.۷ ولتاژ دارد.
برای این مثال، من از باتری لیتیوم S3 استفاده میکنم که ۳ سلول دارد و ولتاژ آن V 1.1 است. بنابراین، من میتوانم انتظار داشته باشم که موتور من به حداکثر ۱۱۱۰۰ دور در دقیقه برسد.
در آخر، در اینجا یک مدار A30ESC ارائه شده است که من برای این مثال از آن استفاده خواهم کرد و با الزامات موتور مطابقت دارد. از یک طرف مدار ESC سه سیم دارد که سه فاز موتور را کنترل میکند و از طرف دیگر دو سیم VCC و GND برای تغذیه دارد.
همچنین مجموعه دیگری از سه سیم از مدار ESC خارج میشوند و این خط سیگنال، V ۵+ و زمین است. این ویژگی ESC مدار الیمیناتور باتری نامیده میشود و همانطور که از نام آن پیداست، نیاز باتری جداگانه برای یک میکروکنترلر را از بین میبرد. با این کار ESC، V 5 تنظیمشده را فراهم میکند که میتواند برای قدرت بخشیدن به آردینو ما مورد استفاده قرار گیرد.
ما در اینجا میتوانیم متوجه شویم که این اتصال در واقع همان چیزی است که در موتورهای سروو میبینیم.
بنابراین، کنترل یک موتور براشلس با استفاده از ESC و آردوینو به سادگی کنترل سروو با استفاده از آردوینو است. ESC ها از همان نوع سیگنال کنترل به عنوان سروو استفاده میکنند و این سیگنال PWM استاندارد ۵۰ هرتز است.
این بسیار مناسب است، زیرا برای مثال، هنگام ساخت یک صفحه RC، ما معمولا هم به سرووها و هم موتورهای براشلس نیاز داریم، و به این ترتیب، میتوانیم آنها را به راحتی با همان نوع کنترلر کنترل کنیم.
بنابراین، با استفاده از آردینو ما فقط باید سیگنال PWM ۵۰ هرتز را تولید کنیم و بسته به عرض پالسها یا مدت زمان حالت بالا که باید از ۱ میلیثانیه تا ۲ میلیثانیه تغییر کند، ESC موتور را از حداقل به حداکثر RPM هدایت خواهد کرد.
نمودار مدار کنترل موتور براشلس آردینو
در اینجا نمودار مدار برای این مثال آورده شده است. علاوه بر ESC، ما فقط از یک پتانسیومتری ساده برای کنترل سرعت موتور استفاده خواهیم کرد.
کد آردینو برای کنترل موتور BLDC
/* Arduino Brushless Motor Control by Dejan, https://howtomechatronics.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 }
کد آردینو با تنها چند خط کد بسیار ساده است.
شرح: بنابراین نیاز به تعریف کتابخانه سروو داریم، زیرا با این کتابخانه سروو میتوانیم به راحتی سیگنال PWM ۵۰ هرتز را تولید کنیم، در غیر این صورت سیگنالهای PWM که آردینو تولید میکند در فرکانسهای متفاوتی هستند. سپس ما نیاز به ایجاد یک سروو کار برای کنترل ESC و تعریف یک متغیر برای ذخیرهسازی ورودی آنالوگ از پتانسیومتر داریم. در بخش راهاندازی، با استفاده از تابع attach، تعریف میکنیم که کدام پین آردینو به سیگنال کنترل ESC متصل شده و همچنین پهنای پالسهای حداقل و حداکثر سیگنال PWM در میکروثانیه است.
در بخش حلقه، ابتدا پتانسیومتر را می خوانیم، مقدار آن را از ۰ تا ۱۰۲۳ به مقدار از ۰ تا ۱۸۰ نگاشت میکنیم. سپس با استفاده از تابع write سیگنال را به ESC ارسال میکنیم یا سیگنال PWM ۵۰ هرتز را تولید میکنیم. مقادیر ۰ تا ۱۸۰ متناظر با مقادیر ۱۰۰۰ تا ۲۰۰۰ میکروثانیه تعریف شده در بخش راهاندازی هستند.
بنابراین، اگر ما این کد را در آردینو خود آپلود کنیم، و سپس همه چیز را با استفاده از باتری تقویت کنیم، میتوانیم سرعت موتور براشلس صفر را تا حداکثر با استفاده از پتانسیومتر کنترل کنیم.
با این حال، چیزهای کمی وجود دارند که ما باید در اینجا به آنها توجه کنیم. زمانی که در ابتدا موتور را تقویت میکنید، مقدار سیگنال باید یکسان یا کمتر از حداقل مقدار ۱ میلیثانیه باشد. این مسلح کردن ESC نامیده میشود، و موتور تأیید میکند، به طوری که ما میدانیم که به درستی مسلح شده است. در صورتی که در هنگام تغذیه مقدار بیشتری داشته باشیم، که به این معنی است که ما یک دریچه گاز داریم، ESC موتور را تا زمانی که به حداقل مقدار درست برسد، راهاندازی نخواهد کرد. این از نظر ایمنی خیلی راحت است، چون موتور در صورتی که ما یک دریچه گاز در هنگام برقرسانی داشته باشیم، کار را شروع نخواهد کرد.
(کالیبراسیون)یا تنظیم دقیق درجه بندی ESC
در نهایت، بیایید توضیح دهیم که کالیبراسیون ESC چگونه کار میکند. هر ESC نقاط بالا و پایین خاص خود را دارد، و ممکن است کمی متفاوت باشند. برای مثال، نقطه پایین ممکن است ۱.۲ میلیثانیه و نقطه بالا ممکن است ۱.۹ میلیثانیه باشد. در چنین حالتی دریچه گاز ما هیچ کاری را در 20% اول انجام نمی دهد تا زمانی که به نقطه 1.2 میلی ثانیه برسد.
برای حل این مشکل، میتوانیم ESC را تنظیم کنیم یا نقاط بالا و پایین را همانطور که میخواهیم تنظیم کنیم. برای این منظور، قبل از تقویت ESC، ابتدا باید پتانسیومتر خود را تا مقدار حداکثر یا حداقل بیشتر از نقطه میانی جریان بالا ببریم. سپس می توانیم ESC را روشن کنیم و چند بوق از موتور را که در واقع تأیید میکند که نقطه اوج جدید را مشخص کردهایم، خواهیم شنید.
سپس بعد از ۲ ثانیه، ما باید پتانسیومتر خود را به جایی که نقطه پایین جدید قرار دارد منتقل کنیم. ما دوباره بوق های تأیید را خواهیم شنید و با این کار با کالیبراسیون ESC کار خود را انجام می دهیم. حالا دریچه گاز ما فوراٌ پاسخ خواهد داد و ما میتوانیم موتور را در این دو نقطه جدید کنترل کنیم.
این تقریبا همه چیز برای این آموزش است.
امیدوارم از این آموزش لذت برده باشید و چیز جدیدی یاد بگیرید. لطفاٌ در بخش نظرات هر سوالی را بپرسید و فراموش نکنید که مجموعه پروژههای آردینو ما را بررسی کنید.
1 دیدگاه دربارهٔ «کنترل موتور براشلس با آردوینو»
مشخصا ترجمه شده بود اما کیفیت خوبی داشت