آموزش آردوینو پروژه های آردوینو

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

نوشته شده توسط حسین فهیمی

موتور براشلس (Brushless Motor) از نوع موتورهای الکتریکی است که برای کاربردهای مختلف مانند رباتیک، درون‌یاب‌های پروازی، ماشین‌کاری و غیره استفاده می‌شود. برای راه‌اندازی یک موتور براشلس با آردوینو، نیاز به یک مدار قدرت مناسب و برنامه‌نویسی آردوینو دارید. در ادامه با مرجع تخصصی الکترونیک به زبان فارسی، دیجی اسپارک همراه باشید.

 


موتور براشلس چیست؟


موتور براشلس (Brushless Motor) یک نوع موتور الکتریکی است که بدون استفاده از طراحی سیستم جاروبکی (brush) کار می‌کند. در موتورهای سنتی، سیستم جاروبکی برای انتقال برق از منبع تغذیه به قسمت‌های متحرک موتور استفاده می‌شود، اما در موتورهای براشلس، این سیستم حذف شده است.موتورهای براشلس از ساختاری متشکل از یک مهره‌ی‌‌ همراه با المان‌های مغناطیسی استفاده می‌کنند. این المان‌های مغناطیسی به صورت ثابت در قسمت پایه‌ی موتور و یا بسته به نوع ساختار موتور در برخی از قسمت‌های متحرک آن قرار می‌گیرند. عملکرد موتور براشلس بر اساس اصل تعامل بین میدان مغناطیسی ساخته شده توسط المان‌های مغناطیسی و جریان الکتریکی در پیچ‌های موتور است.یکی از ویژگی‌های برجسته موتورهای براشلس، عدم نیاز به تعویض و یا تنظیم مکانیکی سیستم جاروبکی است. این ویژگی باعث می‌شود موتورهای براشلس در مقایسه با موتورهای سنتی دارای عمر مفید بیشتر، سرعت بالاتر، کارایی بهتر و حجم کوچکتر باشند. همچنین، با حذف سیستم جاروبکی، این موتورها کمتر گرم می‌شوند و به طور کلی با کمترین نویز و لرزش عمل می‌کنند.با توجه به ویژگی‌های فوق، موتورهای براشلس در بسیاری از کاربردهای صنعتی و ابزارهای الکترونیکی مورد استفاده قرار می‌گیرند، از جمله رباتیک، درون‌یاب‌های پروازی (درون‌ها و هلیکوپترها)، دستگاه‌های خنک‌کننده، ابزارهای باتری‌ای و سایر کاربردهایی که نیاز به موتورهای قدرتمند، کارآمد و دقیق است.

لازمه ساخت رادیو کنترل یا فلایت کنترل برای ربات های پرنده (مثلا ساخت کوادکوپتر با آردوینو) اطلاع از نحوه راه اندازی و درایو کردن موتور ها و نحوه ی پالس دادن به اسپید کنترل است. برای کنترل موتور براشلس ، دو راه وجود دارد :

  • تغییر فرکانس
  • تغییر طول پالس

ما در این آموزش ، از راه دوم استفاده خواهیم کرد. چرا که تغییر فرکانس ، روش اصولی و درستی نیست و خطاهای متعددی دارد اما تغییر طول پالس یک راه کاملا دقیق است.در اینجا با استفاده از یک فرکانس ثابت و تغییر دادن عرض پالس موتور براشلس را راه اندازی و سرعت آن را کنترل می کنیم این اصولی ترین روش برای راه اندازی موتور براشلس است و تمامی فلایت کنترل های تجاری از این روش استفاده می کنند ، در این این پروژه که با زبان آردوینو نوشته شده است با استفاده از یک اسلایدر خطی موتور را روشن و سپس سرعت ان را کم و زیاد می کنیم.

موتور های براشلس همانطور که از اسمشان پیداست موتور های DC  بدون جاروبک هستند  و دارای آهنرباهای دائمی بسیار قوی در قسمت چرخشی (روتور) هستند. این موتور ها به علت نداشت جاروبک دارای عمر بسیار بالایی هستند. موتور های براشلس همیشه دارای سه سیم نیستند و انواع مختلفی دارن . ولی بیشتر از نوع سه سیمه استفاده میشه که متداول تره : انیمیشن عملکرد موتور براشلس 

اگر شما این موتور را به برق سه فاز با دامنه ۱۲ ولت وصل کنید مانند یک موتور سه فاز با تعداد دور ثابت می چرخد.برای این کار شما باید از اسپید کنترل استفاده کنید.

 

turnigy-trust-55a-sbec-brushless-speed-controller-[2]-100-p

 


اسپید کنترل چیست؟


اسپید کنترل (Speed Control) به کنترل سرعت یک سیستم موتوری یا دستگاه الکتریکی اشاره دارد. هدف از اسپید کنترل، تنظیم و کنترل دقیق سرعت یک موتور یا دستگاه بر اساس نیاز و مورد استفاده‌ی خاص است.در سیستم‌های موتوری، سرعت کنترل یک عامل بسیار مهم است که بر اساس نیاز کاربران، بار مورد نیاز، و شرایط کار، تنظیم می‌شود. با استفاده از اسپید کنترل، می‌توان سرعت موتور را به صورت پیوسته و دقیق تغییر داده و تنظیمات مورد نظر را به طور دقیق برآورده کرد.روش‌های مختلفی برای اسپید کنترل وجود دارند و به بسته به نوع موتور و سیستم، متداول ترین روش‌ها عبارتند از:

  • استفاده از ولتاژ تغذیه: با تغییر ولتاژ تغذیه به موتور، میزان توان و سرعت آن تغییر می‌کند. این روش در برخی موتورهای DC استفاده می‌شود.

 

  • استفاده از پالس عرض‌مدار (PWM): در این روش، با تنظیم نسبت عرض پالس‌های PWM که به موتور ارسال می‌شوند، میزان متوسط ولتاژ و سرعت موتور کنترل می‌شود. این روش برای کنترل سرعت موتورهای DC و براشلس استفاده می‌شود و در بسیاری از سیستم‌ها و میکروکنترلرها پشتیبانی می‌شود.

 

  • استفاده از روش کنترل الکترونیکی: در برخی سیستم‌ها، از مدارهای کنترل الکترونیکی خاصی استفاده می‌شود که با کنترل جریان و ولتاژ به موتور، سرعت آن را تنظیم می‌کند. این روش برای موتورهای براشلس و سیستم‌های پیچشی (سروموتورها) مناسب است.

اسپید کنترل به عنوان یک ویژگی مهم در بسیاری از سیستم‌های الکترونیکی و رباتیکی مورد استفاده قرار می‌گیرد. این قابلیت به کاربران اجازه می‌دهد تا سرعت موتور را بر اساس نیاز خود تنظیم و کنترل کنند.

 


قطعات لازم برای انجام پروژه


  • یک عدد موتور براشلس (در این پروژه از موتور leopard lc2835 استفاده شده) – خرید از فروشگاه
  • یک عدد اسپید کنترل (با توجه به نوع موتور ، در این پروژه ۴۰ آمپر مورد استفاده قرار گرفته) – خرید از فروشگاه
  • یک عدد برد آردوینو uno یا هر نوع دیگه ای – خرید از فروشگاه

 


اتصالات


  • اسپید کنترل را به موتور وصل کنید
  • باطری را به اسپید کنترل وصل کنید
  • دسته سیم سه تایی (سفید به پین ۹ آردوینو ، قرمز به ۵+ و مشکی به Gnd)

 


کد آردوینو


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

 

#include <Servo.h> // کتابخانه Servo را وارد کنید

Servo motor; // یک شیء Servo ایجاد کنید

void setup() {
motor.attach(9); // موتور را به پین ۹ وصل کنید
motor.writeMicroseconds(1000); // سرعت اولیه موتور را تنظیم کنید (به نیاز خودتان تنظیم کنید)
delay(2000); // منتظر شدن برای مقداردهی اولیه موتور
}

void loop() {
int motorSpeed = 1500; // سرعت مورد نظر موتور را تنظیم کنید (به نیاز خودتان تنظیم کنید)

motor.writeMicroseconds(motorSpeed); // سرعت موتور را با استفاده از PWM تنظیم کنید

delay(5000); // 5 ثانیه منتظر بمانید

// تغییر جهت سرعت موتور
motorSpeed = map(motorSpeed, 1000, 2000, 2000, 1000); // مقدار سرعت موتور را برعکس کنید
motor.writeMicroseconds(motorSpeed); // سرعت موتور برعکس را تنظیم کنید

delay(5000); // 5 ثانیه منتظر بمانید
}

 


تحلیل کد آردوینو


این کد آردوینو برای کنترل موتور براشلس ساده است. در این کد، موتور را به پین ۹ آردوینو متصل می‌کنیم و سپس با استفاده از کتابخانه Servo، سرعت موتور را تغییر می‌دهیم.در تابع setup، موتور را به پین ۹ متصل می‌کنیم و سپس سرعت اولیه موتور را با استفاده از دستور motor.writeMicroseconds(1000) تنظیم می‌کنیم. سپس با استفاده از delay(2000)، برنامه را به مدت ۲ ثانیه متوقف می‌کنیم تا موتور مقداردهی اولیه خود را انجام دهد.در تابع loop، یک متغیر به نام motorSpeed را با مقدار ۱۵۰۰ تعریف می‌کنیم که سرعت مورد نظر موتور را نشان می‌دهد. سپس با استفاده از دستور motor.writeMicroseconds(motorSpeed)، سرعت موتور را با استفاده از PWM تنظیم می‌کنیم. سپس با استفاده از delay(5000)، برنامه را به مدت ۵ ثانیه متوقف می‌کنیم.سپس، با استفاده از تابع map، متغیر motorSpeed را برعکس می‌کنیم تا جهت سرعت موتور تغییر کند. سپس با استفاده از motor.writeMicroseconds(motorSpeed)، سرعت موتور برعکس را تنظیم می‌کنیم. سپس دوباره با استفاده از delay(5000)، برنامه را به مدت ۵ ثانیه متوقف می‌کنیم.اگر سرعت موتور براشلس خودتان را بر اساس نیاز خودتان تغییر دهید و سایر تنظیمات را نیز به درستی انجام دهید، می‌توانید این کد را برای کنترل موتور خود استفاده کنید.

 


جمع بندی


موتور براشلس خود را به منبع تغذیه مناسب متصل کنید. اطمینان حاصل کنید که ولتاژ و جریان تغذیه موتور با مشخصات فنی آن سازگار است.اتصال سیم‌های کنترلی موتور به پین‌های آردوینو را برقرار کنید. شما ممکن است نیاز به استفاده از درایور موتور براشلس یا ماژول کنترل موتور داشته باشید.در محیط Arduino IDE یا نرم‌افزار برنامه‌نویسی آردوینو مربوطه، برنامه‌ای بنویسید که کنترل موتور براشلس را انجام دهد.برای کنترل موتور براشلس، از کتابخانه‌های مناسبی مانند “Arduino BLDC” استفاده کنید. این کتابخانه‌ها دارای توابع و متدهایی هستند که کنترل سرعت، جهت و دیگر ویژگی‌های موتور را ممکن می‌سازندبرنامه‌ی خود را روی آردوینو اجرا کنید و نتایج را بررسی کنید.با تغییر پارامترها مانند سرعت، جهت و مدت زمان حرکت موتور، عملکرد آن را آزمایش کنید.در صورت بروز هر گونه خطا یا ناکارآمدی، اتصالات سخت‌افزاری و برنامه را بررسی کرده و مطمئن شوید که تمامی تنظیمات و کد‌ها درست انجام شده باشد.با توجه به اینکه هر موتور براشلس و هر پروژه‌ای ممکن است نیازمندی‌های خاصی داشته باشد، می‌توانید با مطالعه مستندات و دستورالعمل‌های مربوط به موتور خود و نیز مطالعه کدها و راهنماهای کتابخانه مورد استفاده، کد را به شکلی سفارشی و به نیاز خودتان تغییر دهید.

درباره نویسنده

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۸ دیدگاه

    • درود بر شما
      چون اگه بازه کمتر از ۱۵ باشه ، اسپید کنترل بوق میزان دریافتی مینیمم پالس رو نمیزنه…

  • سلام من فقط میخوام موتور براشلس روشن بشه نیازی به تغیر سرعت ندارم . میشه اسپید کنترلر رو استفاده نکنم
    ممنون

    • با سلام
      ضمن تشکر از توجه شما، در مورد سوال اول: معمولا سروو برای رسیدن به زاویه دلخواه نیاز به کمی زمان دارد. این موضوع با استفاده از Delay به دست می‌آید.

      در مورد سوال دوم مقادیر ۰ الی ۱۸۰ را میپذیرد.

      • سلام مرسی که جواب دادین
        یعنی نیازه که در هر بار که لوپ اجرا میشه اخر هر لوپ ۱۵ میلی ثانیه delay باشه تا موقعیتو بشناسه؟؟؟اینطوری تو هر لوپ ۱۵ میلی ثانیه موتور پالس نمیگیره و ولتاژ نداره؟؟این قدرت موتور رو کم نمیکنه؟؟
        زمانی که از تابع انالوگ رایت برای کنترل براشلس استفاده میکنیم delay نمینویسیم فقط با pwmو بدون delay اینا باهم چه فرقی دارن؟

        • سلام
          چیزی که ایشون فرمودن برای سرو صادقه نه برای براشلس چون موتور براشلس زاویه اش رو به سادگی نمیشه کنترل کرد فقط روی سرعتش کنترل داریم بنابراین نیازی به تاخیر نیست.
          به نظرم براشلس رو با همون دستور ساده آنالوگ رایت بنویسید بهتره

    • سلام. ممنونم از مطالب مفیدتون.
      سوالی که داشتم اینه که آیا موتورهای براشلس خاصیت backdrivability دارند؟ و اینکه برای کنترل گشتاور با سرعت کم، آیا استفاده از این موتورها مزیتی نسبت به سروو و دی‌سی براش داره؟

  • سلام من یک موتور T-Motor دارم با یک esc xrotor 40a . چه جور نرم افزاری موتور رو کنترل کنم یعنی بتونم جهت چرخش موتور رو عوض کنم؟

    • با سلام
      ضمن تشکر از توجه شما، با استفاده از آردوینو میتوانید این کار را انجام دهید.

      • سلام میشه یکی کمکم کنه راجب اینکه موتور براشلس با داکت فلزی خردیدم درایور ۴۰ با تسترش خریداری شده ولی مشکل اینه که هر بار برق ماشین قطع میشه باید ولوم بچرخونیم تا دوباره راه اندازی بشه این بده راهی هست بعد وصل برق به درایور بدون تغییر ولوم تستر کار کنه و موتور با دور ثابت بچرخه خیلی جاها پرسیدم کسی کمکم نکرد با دبدن تایپ های شما متوجه شدم از لحاظ علمی میشه روی شما کامل حساب کرد اگه لطف کنی کمک کنید ممنون میشم

        • درود
          از دیگر کاربران که در این زمنیه اطلاعات دارند، درخواست می‌کنم در بحث شرکت کنند.

    • سلام طبق مشخصات اسپیدتون
      این اسپید قابلیت تغییر جهت نرم افزاری رو نداره
      اسپید t-motor F45a میدونم این قابلیت رو داره که البته فعال کردن کنترل دو جهتش خودش داستان داره

  • سلام برای سفارش ساخت این پروژه ولی اسپید کنترل آماده نباشه و ورودی تعیین سرعت کی پد یا رئوستا باشه با چه شماره ای تماس بگیرم؟

  • سلام سیم قرمز اسپید BEC‌ اسپید است
    یعنی اسپید توسط سیم قرمز یک تغذیه ۵ ولت به ما می دهد به نظرم وصل کردن اون به پین ۵ ولت خروجی آردوینو کار درستی نیست

  • سلام خسته نباشید
    برای کنترل فن هایی مشابه فن کامپیوتر هم میشود از این برنامه استفاده کرد؟
    تشکر

    • با سلام اگر فنتون سه خروجی داشته باشه هم میشه با اسپید کنترل کنترلرش کرد و هم میشه تنها با دو پایه + و – این کار رو انجام داد ,توجه کنید که موتور براشلس رو نمیشه با دوتا سیم راه انداخت ولی فن کامپیوتر به دلیل وجود سنسور اثر هال (در صورت وجود سه خروجی) میتوان هم به صورت مستقیم یعنی بدون اردوینو و اسپید کنترل و هم با اسپید کنترل راه اندازی نمود

  • با عرض سلام، تو متن فوق نوشته اید ” اگر شما این موتور را به برق سه فاز با دامنه ۱۲ ولت وصل کنید مانند یک موتور سه فاز با تعداد دور ثابت می چرخد.”
    منظورتون بدون استفاده از اسپید کنترل و فقط با جریان متناوب AC است (مثل ویدیوی زیر)؟
    https://www.youtube.com/watch?v=eV0ybdSxMFs
    اگر نه لطفا مختصرا توضیح دهید چگونه میتوان این کار را انجام داد؟

    • با سلام
      کاربر گرامی از همراهی شما ممنونیم. بررسی و در صورت امکان منتشر خواهد شد.

  • سلام.
    یه هاب موتور براشلس مخصوص دوچرخه برقی دارم که تعداد سیم های خروجی آن ۶ عدد است آیا با این کنترلر شمامیتونم راه اندازیش کنم؟؟؟

  • سلام وقتتون بخیر
    من موتور براشلس م رو با ۳ باتری لیتیوم یون و اسپید کنترل ۳۰ امپر راه اندازی کردم،
    سرعت کم و زیاد میشه ولی بعد از مدتی سرعت موتور کم میشه و رو به خاموشی میره.
    با یک آداپتور دیگه هم تست کردم ولی همین مشکل رو داره.میتونید راهنمایی م کنید؟

  • من همین کد رو برای node mcu esp8266 نوشتم اما کار نمیکنه؟ کدی هست که بتونم با استفاده از این ماژول موتور رو راه بندازم؟

    • با سلام
      استفاده از برد میکروکنترلر متفاوت از آموزش، نیازمند تغییراتی در کدهای برنامه است. به این صورت که کدها را برای برد دیگری کپی کنید، کارایی نخواهد داشت.