در این آموزش، به استپر موتور 28BYJ48 و چگونگی راه اندازی آن با آردوینو از طریق ماژول استپر موتور ULN2003 میپردازیم.
استپر موتورها (موتورهای پلهای) به سرعت در حال باز کردن جای خود در دنیای الکترونیک هستند. از یک دوربین مداربسته معمولی گرفته تا یک دستگاه CNC یا ربات پیچیده، استپر موتورها به خاطر امکان کنترل دقیق، همهجا به عنوان محرک استفاده میشوند. استپر موتور، موتوری سنکرون و بدون جاروبک (brushless) است که یک دور چرخش کامل را به تعدادی گام تقسیم میکند.
استپر موتورها:
بیایید نگاهی به استپر موتور 28BYJ48 بیندازیم.
برخلاف یک موتور DC معمولی، از این موتور 5 سیم رنگارنگ خارج شده است. برای اینکه دلیل این موضوع را بفهمیم، ابتدا باید بدانیم استپر موتور چگونه کار میکند و خصوصیات آن چیست. نکته اول اینکه استپر موتورها نمیچرخند، گام به گام حرکت میکنند و به همین دلیل نام آنها استپر موتور است. یعنی در هر لحظه یک گام حرکت میکنند. این موتورها سیمپیچهای متوالی در خود دارند که باید به شکل خاصی برقدار شوند تا موتور بچرخد. با برقدار شدن هر سیم پیچ، موتور یک گام حرکت کرده و با انجام این کار به صورت پی در پی موتور گامهای پشت سر هم برمیدارد و میچرخد. حالا بیایید به سیمپیچهای داخل موتور دقیقتر نگاه کنیم تا بفهمیم این سیمها دقیقا از کجا میآیند.
همانطور که مشاهده میکنید این موتور، دارای ساختار تک قطبی با 5 سر سیمپیچ است. 4 سیم پیچ این موتور باید در یک ترتیب خاص برقدار شوند. سیمهای قرمز با 5V DC تغذیه میشوند و 4 سیم باقیمانده، یکی یکی به زمین وصل میشوند تا سیمپیچ مربوطه فعال شود. برای برقدار کردن این سیمپیچها به ترتیب خاصی و حرکت دادن موتور به تعداد گام لازم، از یک میکروکنترلر مثل آردوینو استفاده میکنیم.
اما واقعا چرا این موتور، 28BYJ48 نامیده شده است؟ هیچ دلیل فنی برای نامیدن موتور به این اسم وجود ندارد! بهتر است بیش از این درگیر این موضوع نشویم. پس بیایید به برخی از اطلاعات فنی مهم این موتور که از دیتاشیت آن استخراج شده نگاهی بیندازیم:
اطلاعات بسیاری در این جدول وجود دارد، اما چند مورد مهم آن را بررسی میکنیم تا بفهمیم از چه نوع استپر موتوری استفاده میکنیم تا به نحو کارآمدی آن را راهاندازی کنیم. اول از همه، میدانیم که استپر موتور 28BYJ48 ما 5 ولتی است. بنابراین، به سیم قرمز، ولتاژ 5 ولت اعمال میکنیم. سپس، این را هم میدانیم که موتور 4 فازه است و 4 سیمپیچ دارد. حال، نسبت چرخدندهها 1:64 داده شده است. این یعنی شافتی که در خروجی دیده میشود، تنها زمانی یک دور میزند که موتور داخل 64 دور بزند (360=5.625*64). این به خاطر چرخدندههایی است که بین موتور و شافت خروجی قرار دارند و به افزایش گشتاور کمک میکنند.
محاسبه تعداد گام بر دور استپر موتور 28BYJ48
دانستن نحوه محاسبه تعداد گام بر دور استپر موتور، برای برنامهریزی و راهاندازی مناسب آن اهمیت بسیاری دارد. طبق دیتاشیت این استپر موتور در حالت مد پله کامل به ازای هر پله 11.25 درجه میچرخد. پس زاویه گام 11.25 درجه خواهد بود.
گام بر دور = زاویه گام/360 32=360/11.25
بنابراین، طبق فرمول بالا، 32 گام برای یک دور کامل نیاز است.
طبیعتا در مد نیم پله زاویه گام 5.625/64 درجه است. به این معنا که به ازای هر نیم پله، 5.625 درجه حرکت میکند. بنابراین، 64 نیم پله نیاز است تا یک دور چرخش کامل شود.
چرا به ماژولهای درایور استپر موتور نیاز داریم؟
بیشتر انواع مختلف استپر موتورها تنها با کمک یک ماژول درایور کار میکنند. به این خاطر که ماژول کنترلر (که در اینجا آردوینو است)، امکان جریاندهی کافی به موتور را از طریق پایههای ورودی و خروجی خود ندارد. بنابراین، باید از یک ماژول خارجی مانند ماژول ULN2003 به عنوان درایور استپر موتور استفاده کرد. انواع مختلفی از ماژولهای درایور موجود است که مشخصات آنها بسته به نوع موتور استفاده شده متفاوت است. اصول کلی حاکم بر ماژولهای درایور این است که بتوانند به اندازه کافی برای کارکرد موتور، جریان دهی داشته باشند. در بخش بعدی، راه اندازی استپر موتور 28BYJ48 با آردوینو را انجام میدهیم.
مدار کنترل موقعیت استپر موتور با آردوینو و توضیحات آن:
مدار پروژه کنترل استپر موتور با آردوینو را میتوانید در تصویر بالا مشاهده کنید. در اینجا از استپر موتور 28BYJ48 و ماژول درایور ULN2003 استفاده کردهایم. برای برقدار کردن چهار سیمپیچ استپر موتور از پایههای دیجیتال 8,9,10و11 استفاده کردهایم. ماژول درایور با پایه 5 ولت برد آردوینو تغذیه شده است.
اما زمانیکه باری را به استپر موتور متصل میکنید، حتما درایور را با منبع تغذیه خارجی تغذیه کنید. زیرا، از آنجاییکه ما از موتور برای کاربرد آموزشی استفاده میکنیم، پایه 5 ولت برد آردوینو را مورد استفاده قرار میدهیم. علاوهبر این، فراموش نکنید که زمین آردوینو را به زمین ماژول درایور متصل کنید.
کد برد آردوینو:
قبل از اینکه برنامهنویسی با آردوینو را شروع کنیم، باید بفهمیم دقیقا چه اتفاقی در برنامه میافتد. همانطور که قبلا گفتیم، در مد پله کامل از روش توالی 4 مرحله استفاده میکنیم. بنابراین، برای یک چرخش کامل 4 گام خواهیم داشت.
گام | پایه فعال | سیمپیچ فعال |
گام 1 | 8 و 9 | A و B |
گام 2 | 9 و 10 | B و C |
گام 3 | 10 و 11 | C و D |
گام 4 | 11 و 8 | D و A |
ماژول درایور، 4 عدد LED دارد که با استفاده از آنها میتوان فهمید کدام سیمپیچ در آن لحظه فعال است. ویدیویی که در انتهای مقاله قرار دادیم، ترتیب فعال شدن سیمپیچها را به خوبی نشان میدهد.
در این آموزش میخواهیم کد آردوینوی استپر موتور را بنویسیم و به خاطر آن، آردوینو را طوری برنامهریزی میکنیم که بتوانیم تعداد گامهایی را که استپر موتور طی میکند، با سریال مانیتور آردوینو وارد کنیم. برنامه کامل در انتهای آموزش موجود است اما تعدادی از خطوط مهم آن در زیر توضیح داده شدهاند.
تعداد گام بر دور موتورمان را 32 به دست آوردیم، بنابراین، آن را به صورت زیر وارد میکنیم:
#define STEPS 32
سپس باید شیهایی ایجاد کنیم که پایههای متصل به استپر موتور را در آنها مشخص کنیم.
Stepper stepper (STEPS, 8, 10, 9, 11);
نکته: شماره پایهها به عمد به صورت نامنظم 8، 10، 9، 11 وارد شده است. شما هم باید از همین الگو پیروی کنید، حتی اگر پایههای متصل شده به موتور را تغییر داده باشید. به دلیل اینکه ما از کتابخانه stepper آردوینو استفاده میکنیم، میتوانیم سرعت موتور را با خط زیر تنظیم کنیم. در استپر موتور 28BYJ48 سرعت میتواند در بازه 0 تا 200 تغییر کند.
stepper.setSpeed(200);
حال برای اینکه استپر موتور یک گام حرکت کند میتوانیم از خط زیر استفاده کنیم:
stepper.step(val);
تعداد گامهای حرکت، توسط متغیر val قابل تنظیم است. از آنجا که 32 گام داریم و نسبت چرخدندهها 64 است، باید 2048 گام طی شود تا یک دور کامل زده شود (2048=32*64).
کاربر میتواند مقدار متغیر val را از طریق سریال مانیتور وارد کند.
نحوه عمکلرد استپر موتور 28BYJ48 با آردوینو
هنگامیکه اتصالات انجام شد، سخت افزار شما باید مانند عکس زیر باشد.
حال، برنامه زیر را در آردوینو UNO خود بارگذاری کنید و سریال مانیتور را باز کنید. همانطور که قبلا گفتیم، برای یک دور چرخش باید 2048 گام طی کنیم، پس زمانیکه 2048 را وارد کنیم، موتور یک دور در جهت عقربههای ساعت میزند و 2048 گام طی میکند. برای چرخش در خلاف جهت عقربههای ساعت کافی است عدد را با علامت – وارد کنیم. پس وارد کردن 1024- باعث میشود موتور نیم دور در خلاف جهت عقربههای ساعت بچرخد. شما میتوانید هر عددی را وارد کنید. برای مثال با وارد کردن 1، موتور فقط یک گام حرکت میکند.
کد راه اندازی استپر موتور 28BYJ48:
// Arduino stepper motor control code
#include <Stepper.h> // Include the header file
// change this to the number of steps on your motor
#define STEPS 32
// create an instance of the stepper class using the steps and pins
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;
void setup() {
Serial.begin(9600);
stepper.setSpeed(200);
}
void loop() {
if (Serial.available()>0)
{
val = Serial.parseInt();
stepper.step(val);
Serial.println(val); //for debugging
}
}
امیدواریم به خوبی با راه اندازی استپر موتور 28BYJ48 با آردوینو آشنا شده باشید و از انجام آن لذت برده باشید. اگر حین کار به سوالی برخوردید میتوانید در بخش دیدگاهها مطرح کنید.