رباتیکآردوینو Arduino

آموزش راه اندازی استپر موتور + کد آردوینو

stepper motors

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

نحوه عملکرد استپر موتورها

نحوه ی عملکرد استپر موتورها به این شکل است که از لحاظ داخلی دارای دو فاز مختلف هستند، زمانی که ما هر کدام از این دو فاز را فعال میکنیم شفت موتور به اندازه مشخصی میچرخد. در موتور های استپر 1.8 درجه این میزان چرخش به اندازه 1.8 درجه و در موتورهای 0.9 درجه، میزان چرخش شفت با فعال سازی هر فاز به اندازه 0.9 درجه است. از آنجایی که میزان چرخش شفت به صورت کاملا دقیق میباشد از استپر موتور میتوانیم برای حرکت های دقیق استفاده کنیم. دلیل استفاده از این نوع موتورها در دستگاه های CNC، لیزر و دستگاه های پرینتر سه بعدی نیز به دلیل همین حرکت دقیق است.

انواع استپر موتورها

هرچند که انواع استپر موتور ها بسیار گسترده و متنوع است اما از نظر ساختار داخلی به دو مدل Unipolar و Bipolar تقسیم میشوند که البته در اکثر مواقع امکان تبدیل موتورهای استپر Unipolar به Bipolar نیز وجود دارد. از آنجایی که راه اندازی موتور های Bipolar بسیار ساده تر از موتور های Unipolar است. همواره توصیه میکنیم از موتور استپر در کانفیگ Bipolar استفاده کنید.

unipolar vs bipolar

فقط باید توجه داشت، در صورتی که موتور استپر Unipolar ما از کانکشن مرکزی در دو سیم پیچ خود استفاده میکند، برای تبدیل به Bipolar این کانکشن باید از داخل موتور قطع شود. یعنی بین دو سیم پیچ استپر موتور هیچ ارتباطی وجود نداشته باشد.

unipolar steppers

 

پیش نیاز راه اندازی استپر موتورها

رایج ترین مدل کلی درایور استپر موتورها، درایور Bipolar نوع چهار سیم است. خوشبختانه این نوع درایور ها توانایی درایو کردن موتور های 6 سیم و 8 سیم را نیز دارند. حتی همانطور که در بالاتر گفته شد، موتور های Unipolar را نیز میتوان با استفاده از این درایورها راه اندازی کرد، تنها نکته که باید در نظر بگیریم این است که بین دو سیم پیچ این موتورها ارتباط مرکزی وجود نداشته باشد و این دو سیم پیچ از هم کاملا جدا باشند.

unipolar vs bipolar

در تصویر بالا تمامی موتور های داخل دیاگرام سیم کشی بالا توسط درایور های چهارسیم قابل راه اندازی هستند. تنها نکته ای که باید در رابطه با راه اندازی این موتور ها رعایت شود تعداد سیم پیچ و نقاط اتصال هر سیم پیچ به درایور است. طبیعی هست ملاک اصلی ما موتور چهار سیم Bipolar است و در باقی موارد ما باید تغییراتی را ایجاد کنیم تا موتور ما شبیه به Bipolar چهارسیمه شود.

برای مثال موتور 6 سیمه Unipolar مثال وسط بالا تنها با نادیده گرفتن سیم های زرد(5) و سفید(2) تبدیل به Bipolar چهار سیم میشود. در صورتی که اتصال داخلی بین سیم زرد و سیم سفید بود، میبایست ابتدا موتور را باز کرده و سپس این ارتباط را قطع کنیم.

در رابطه با موتور استپر Bipolar شش سیمه در مثال بالا سمت راست، از آنجایی پین های شماره 5 و 2 متصل نیستند میتوانند نادیده گرفته شوند.

در مورد موتورهای Unipolar و Bipolar هشت سیمه تنها کافیست سرهای بیرون هر سیم پیچ استفاده شود و باقی سیم ها متصل نشود. یعنی فاز A بین سیم مشکی و سبز خواهد بود و فاز B بین سیم قرمز و آبی.

در مورد موتور Bipolar هست سیمه نیز سیم های مشکی و سبز فاز A را تشکیل میدهند و سیم های قرمز و آبی فاز B. در این موتور اگر سیم ها در خارج از موتور متصل شده اند میتوانید هر سیم پیچ را به صورت سری نیز ببندید اما این کار الزامی نیست.

پس تا به اینجا کلیات کار را یادگرفتیم، موتور استپر ما همواره باید دارای دو سیم پیچ باشد،ارتباطی بین دو سیم پیچ وجود نداشته باشد و دو سر هر سیم پیچ به عنوان دو سر فاز A و B استفاده شوند. بعد از اینکه موتور استپر ما آماده استفاده شد نوبت به انتخاب درایور موتور استپر مناسب میرسد.

 

درایور استپر موتور

رایج ترین مدل درایور استپر موتور A4988 است. این درایور موتور استپر یکی از قدیمی ترین درایورهای استپر موتور است و در دستگاه های بسیار زیادی استفاده شده است. سادگی راه اندازی، پشتیبانی از انواع استپر موتور با ولتاژ ها و جریان های متفاوت و قیمت پایین از جمله دلایلی هست که این درایور استپر موتور را محبوب ساخته است. برای خرید این درایور میتوانید اینجا کلیک کنید.

a4988 stepper driver

تصویر بالا دیاگرام استفاده از درایور A4988 را نمایش میدهد. این دیاگرام در زمینه درایور استپر موتورها به عنوان استاندارد شناخته میشود. یعنی سایر درایورهای استپر موتور ها نیز از همین دیاگرام پیروی میکنند. درایورهایی مانند DRV8825، درایور استپر موتور LV8729، درایور های شرکت TMC و … همگی از این فرمت برای Pinout خود استفاده میکنند.

همانطور که در دیاگرام این ماژول مشخص است برای راه اندازی یک استپر موتور با این درایور ما نیازمند یک ولتاژ تغذیه هستیم که در مورد این ماژول این ولتاژ بین 8 تا 35 ولت در نظر گرفته شده است. این ولتاژ ارتباطی به ولتاژ موتور استپر ما ندارد، در ادامه به چگونگی راه اندازی هر موتور استپر با هر ولتاژی با این درایور ها خواهیم پرداخت، حتی امکان راه اندازی موتور 2 ولت نیز با این درایور استپر موتور امکان پذیر است… همینطور نیازمند تغذیه ای برای بخش لاجیک این برد هستیم که در مورد این ماژول بین 3 تا 5.5 ولت ذکر شده است. و همچنین برای راه اندازی این ماژول نیازمند کنترل سه پین ENABLE، STEP و DIR هستیم تا بتوانیم موتور خودمان را به حرکت در بیاوریم.

A4988 Pinout

پین های VMOT و GND: ولتاژ تغذیه ی موتور استپر – بین 8 تا 35 ولت

پین های VDD و GND: ولتاژ تغذیه ی لاجیک درایور – بین 3 تا 5.5 ولت

پین ENABLE: از این پین برای فعال سازی یا غیر فعال سازی ماژول درایور استپر موتور استفاده میشود. از آنجایی که خطی در بالای اسم این پین کشیده شده است، این پین دارای لاجیک معکوس است یعنیبا اتصال به زمین فعال میشود و با اتصال به ولتاژ لاجیک غیر فعال میگردد.

پین STEP: از این پین برای چرخاندن موتور استپر استفاده میشود. اگر ما از یک موتور استپر 1.8 درجه استفاده کنیم. با هر پالسی که به پین STEP اعمال شود، درایور استپر ما شفت موتور ما را به اندازه 1.8 درجه خواهد چرخاند.

پین DIR: از این پین برای مشخص کردن جهت حرکت موتور استپر استفاده میشود. یعنی برای مثال اگر این پین به GND متصل شود موتور به صورت راست گرد میچرخد و اگر به ولتاژ لاجیک متصل شود به صورت چپ گرد میچرخد. (جهت چرخیدن استپر موتور به ترتیب اتصال فاز های آن نیز بستگی دارد، یعنی با جا به جا کردن سیم های فاز A و B جهت چرخیدن استپر موتور ها عوض میشود.)

پین های MS1/MS2/MS3: درایور های استپر موتور برای کنترل دقیق تر استپر موتور ها توانایی خورد کردن درجه ی چرخش موتور استپر را با توجه به فاکتوری به اسم میکرواستپ دارند. از پین های MS1/MS2/MS3 برای تنظیم این مقدار میتوان استفاده کرد. برای مثال اگر میزان میکرواستپ ست شده 1/16 باشد. با هر پالس پین STEP موتور بجای اینکه 1.8 درجه بچرخد، 0.1125 درجه میچرخد. (1.8 درجه موتور استپر تقسیم بر 16 میکرو استپ) البته باید توجه بفرمایید هرچقدر میزان میکرو استپ بیشتر باشد گشتاور موتور کمتر میشود…

میزان میکرو استپ MS3 MS2 MS1
1/1 LOW LOW LOW
1/2 LOW LOW HIGH
1/4 LOW HIGH LOW
1/8 LOW HIGH HIGH
1/16 HIGH HIGH HIGH

از آنجایی که مقدار میکرواستپ برای هرمدل درایور متفاوت است توصیه میکنیم برای پیدا کردن میزان دقیق میکرو استپ اسم درایور را در اینترنت سرچ کنید.

پین های فاز 1 و فاز 2:  همانطور که در بخش قبلی مطرح شد، ما همواره از موتور های Bipolar چهار سیمه با درایورهایی مانند A4988 استفاده میکنیم. پین های 1A و 1B مربوط به سیم پیچ فاز 1 استپر موتور هستند و پین های 2A و 2B مربوط به سیم پیچ فاز 2 استپر موتور هستند. توجه بفرمایید در این سیم پیچ ها پلاریته مهم نیست و در صورت جا به جا زدن فاز 1 و 2 باهم فقط جهت چرخیدن موتور برعکس خواهد شد. اما اگر سیم های دو سر هر فاز درست متصل شوند موتور بجای حرکت فقط درجا ویبره خواهد داد.

پین های SLEEP و RESET: از این پین ها برای قرار دادن درایور استپر موتور در حالت Idle یا خواب موقت و همچنین ریست کردن درایور استفاده میشود. معمولا تولید کننده های درایور استپر موتور راهنمای خاصی را برای استفاده از این پین ها دارند که در این مورد این دو پین بهمدیگر متصل شده اند.

پتانسیومتر تنظیم جریان موتور استپر: درایور های استپر موتور مانند این درایور موتور های استپر را در حالت جریان ثابت راه اندازی میکنند. یعنی در این حالت ولتاژ موتور استپر اهمیتی برای درایور آن ندارد. حتی اگر ولتاژ موتور استپر به اندازه 2 ولت باشد توسط این درایور ها با بالاترین ولتاژ موتور اعمالی به درایور (35 ولت در این مدل) قابل راه اندازی هستند.  فقط باید توجه کنیم در زمان راه اندازی موتور استپر جریان مناسبی را برای موتور استپر در نظر بگیریم. این جریان محاسباتی دارد که در ادامه به آن ها میپردازیم.

 

تنظیم دقیق جریان استپر موتور

برای تنظیم دقیق جریان یک استپر موتور نیازمند دانستن اطلاعات دقیق مربوط به سیم پیچ هر فاز موتور هستیم. برای مثال اگر بخواهیم موتور 17HS3401 را راه اندازی کنیم. طبق اطلاعات ذکر شده توسط سازنده میتوانیم جریان موتور را تنظیم نماییم. اگر به توضیحات این کالا دقت کنید متوجه میشوید که جریان هر فاز این موتور به اندازه 1.3 آمپر در نظر گرفته شده است. “جریان هر فاز: 1.3 آمپر (راه اندازی BiPolar)” این جریان مربوط به زمانی است که از موتور در ولتاژ نامی آن استفاده کنیم. از آنجایی که ما از این موتور در ولتاژ دیگری استفاده میکنیم باید جریان مناسب ولتاژ تغذیه موتور را بیابیم.

17hs3401

در مورد این موتور تولید کننده بجای ذکر کردن ولتاژ هر سیم پیچ این موتور، مقدار مقاومت آن را ذکر کرده است. برای بدست آوردن ولتاژ نامی هر سیم پیچ این موتور کافیست از فرمول قانون اهم استفاده کنیم. جریان نامی هر سیم پیچ این موتور 1.3 آمپر و مقاومت آن 2.4 اهم ذکر شده است لذا

V = I x R

V = 1.3A x 2.4Ω

V = 3.12V

ولتاژ نامی هر سیم پیچ برابر 3.12 ولت بدست میاید. حال با استفاده از فرمول توان الکتریکی توان هر سیم پیچ را نیز بدست میاوریم:

W = V x I

W = 3.12V x 1.3A

W = 4.056 Watt

توان هر سیم پیچ موتور ما 4.056 وات بدست میاید. از آنجایی که در هر ولتاژ و جریانی وات این سیم پیچ باید ثابت باشد تا از قدرت عملی آن فراتر نرویم و ولتاژ تغذیه ی درایور استپر موتور را میدانیم میتوانیم جریان مناسب این موتور را در ولتاژ تغذیه درایور استپر موتور بدست بیاوریم. فرض را بر این میگیریم ولتاژ تغذیه ی درایور استپر موتور ما 24 ولت است، حال میتوانیم با بازنویسی فرمول توان الکتریکی جریان جدید موتور را بدست بیاوریم:

W = V x I

I = W / V

I = 4.056 Watt / 24V

I = 0.169A

جریان جدید بدست آمده 0.169 آمپر است. یعنی باید پتاسیومتر جریان درایور استپر موتور را جوری تنظیم کنیم که در ولتاژ 24 ولت جریانی معادل 0.169 آمپر یا 169 میلی آمپر به هر فاز موتور استپر ما لحاظ کند.

A4988 Driver Current

برای تنظیم پتاسیومتر جریان درایور های استپر موتور نیازمند یک مولتی متر و دانستن فرمول جریان آن درایور هستیم. این فرمول را با گوگل کردن میتوانیم بدست بیاوریم. در رابطه با درایور استپر موتور A4988 این فرمول معادل

Vref = 8 x Imax x Rcs

در این فرمول Vref معادل ولتاژی است که ما باید توسط مولتی متر از بدنه پتانسیومتر بخوانیم، Imax جریان بیشینه موتور است که در بخش قبلی به اندازه 0.169 آمپر محاسبه کردیم. عدد 8 ثابت فرمولی است و مقدار Rcs مقاومت شنت جریان درایور است که در کنار پین های فاز 1 و 2 نصب شده است. در این مورد 0.1 اهم. لذا مقدار محاسبه ای Vref برابر است با:

Vref = 8 x 0.169A x 0.1Ω

Vref = 0.1352V

پس ما باید پتانسیومتر Vref را جوری تنظیم کنیم که مقدار خوانده شده روی مولتی متر 0.1352 ولت باشد. در این صورت درایور استپر موتور ما برای استفاده با این موتور تنظیم شده است. در صورتی که در زمان استفاده از این موتور دمای موتور در استفاده بلند مدت از 85 درجه فراتر رفت بهتر است جریان موتور را کمی کاهش دهید.

 

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

حال که با نحوه ی راه اندازی استپر موتور ها با درایور استپر موتور آشنا شدیم میتوانیم با استفاده از یک برد توسعه مانند آردوینو این موتور ها را به حرکت در بیاوریم و در پروژه هامون ازشون استفاده کنیم. در مثال از برد آردوینو UNO، درایور استپر موتور A4988 و موتور 17HS3401 استفاده خواهیم کرد. دیاگرام اتصال درایور استپر موتور و استپر موتور به شکل زیر است:

a4988 stepper driver

پین ENABLE درایور به پین D3 آردوینو، پین STEP درایور به پین D4 آردوینو و پین DIR درایور به D5 آردوینو متصل شده است و پین های MS1/MS2/MS3 متصل نشده اند. کد زیر استپر موتور 10 دور در هر جهت میچرخاند:

// ECA Stepper Motor Test Code
// Written by Abolfazl Khazaei

// Pin connections
const int enablePin = 3;
const int stepPin = 4;
const int dirPin = 5;

// Stepper motor parameters
const int stepsPerRevolution = 200; // Number of steps per revolution for 1.8 degree stepper motor (360/1.8 = 200)
const int turns = 10;
const int stepsPerTurn = stepsPerRevolution * turns;

void setup() {
  // Set pin modes
  pinMode(enablePin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  // Enable the stepper driver
  digitalWrite(enablePin, LOW); // LOW to enable, HIGH to disable
}

void loop() {
  // Turn motor in one direction
  digitalWrite(dirPin, HIGH); // Set direction to clockwise
  for (int i = 0; i < stepsPerTurn; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }

  delay(1000); // Wait 1 second

  // Turn motor in the other direction
  digitalWrite(dirPin, LOW); // Set direction to counterclockwise
  for (int i = 0; i < stepsPerTurn; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }

  delay(1000); // Wait 1 second
}

 

در صورتی که سوالی در مورد این آموزش داشتید در بخش نظرات ثبت کنید تا پاسخ داده شود.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا