یکی از آسانترین و کم هزینهترین روشها برای راه اندازی استپر موتور (موتور پلهای)، استفاده از ماژول درایور موتور L298N و آردوینو است. با استفاده از این درایور میتوانید سرعت و جهت چرخش هر استپر موتور دو قطبی مانند NEMA 17 را کنترل نمایید.
در این مقاله با استفاده از ماژول درایور L298N و آردوینو، نحوه راه اندازی استپر موتور را به شما آموزش خواهیم داد.
کنترل موتور پلهای با مدار پل H
ماژول درایور موتور L298N از دو پل H استفاده میکند و هر پل H، یکی از بوبینهای آهنربای مغناطیسی استپر موتور را راه اندازی مینماید.
با تغدیه این بوبینها با یک ترتیب خاص، شافت استپر موتور میتواند با پلههای کوچک به جلو و عقب حرکت کند. اما با این حال، سرعت موتور به تعداد دفعاتی که این بوبینها تغذیه میشوند، بستگی دارد.
در شکل زیر میتوانید نحوه کنترل استپر موتور با پل H را مشاهده کنید:
راه اندازی استپر موتور با درایور موتور L298N
در اینجا برای راه اندازی استپر موتور با درایور موتور L298N و آردوینو ، ما از موتور پلهای دو قطبی NEMA 17 با ولتاژ نامی 12V استفاده میکنیم. اما شما میتوانید از استپر موتورهای دیگری نیز استفاده کنید.
قطعاتی که برای این پروژه به آن نیاز خواهید داشت:
نکته:
کار با ماژول درایور موتور L298N به معنای کار با آی سی L298N است. برخی مواقع ممکن است هنگام کار با این ماژول، به آی سی آسیب وارد شود. در این شرایط کافی است آی سی جدیدی جایگزین آی سی قبلی شود.
موتور NEMA 17 در یک دور، 200 پله را طی میکند و میتواند به سرعت 60 دور در دقیقه برسد. اگر با این مشخصات آشنایی ندارید، همین حالا آنها را به خوبی یاد بگیرید، زیرا در بخش کد نویسی باید از آنها استفاده کنید.
پیش از اینکه موتور را به درایور موتور L298N متصل کنید، لازم است سیمهای +B-, B+, A- , A آن را تعیین نمایید. بهترین روش برای این کار، بررسی دیتاشیت موتور مورد نظرتان است. در اینجا سیمهای موتور انتخابی ما قرمز، سبز، آبی و زرد است، اما اگر از موتور دیگری استفاده میکنید، رنگ این سیمها متفاوت خواهد بود.
اتصالاتی که شما باید برای راه اندازی استپر موتور انجام دهید، تا حدودی ساده است.
در ابتدای کار، تغذیه 12V خارجی را به پایه VCC متصل کنید و جامپر 5V-EN را در جای خود قرار دهید. علاوه بر این، لازم است به منظور فعال ماندن همیشگی موتور، جامپرهای ENA & ENB را نیز در جای مورد نظرشان قرار دهید.
در مرحله بعدی، پایههای ورودی (IN4, IN3, IN2 ,IN1) ماژول درایور موتور L298N را به پایههای خروجی دیجیتال آردوینو (8, 9, 10,11) متصل کنید.
در آخر نیز، سیمهای +B-, B+, A- , A موتور را مطابق شکل زیر به ماژول درایور موتور وصل نمایید.
کد آردوینو – کنترل استپر موتور NEMA 17
دستورات زیر به طور کامل به شما نشان خواهد داد که کنترل سرعت و جهت یک موتور پلهای دو قطبی NEMA 17 با استفاده از درایور L298N، چگونه صورت میگیرد. از این دستورات میتوانید در پروژهها و کارهای عملی خود نیز استفاده کنید.
// Include the Arduino Stepper Library
#include <Stepper.h>
// Number of steps per output rotation
const int stepsPerRevolution = 200;
// Create Instance of Stepper library
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup()
{
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}
void loop()
{
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
توضیحات کد:
و اما زمان بررسی این دستورات رسیده است.
این دستورات با فراخوانی کتابخانه Arduino Stepper شروع میشود. این کتابخانه در نرم افزار آردوینو وجود دارد و توالی پالسهایی را که ما به موتور ارسال میکنیم، دنبال میکند.
// Include the Arduino Stepper Library
#include <Stepper.h>
پس از فراخوانی کتابخانه، متغیری بهنام stepsPerRevolution را تعریف میکنیم. این متغیر، همانطور که از نام آن پیدا است، تعداد پلهها در یک دور را مشخص میکند. در موتوری که ما در اینجا استفاده کردیم، تعداد پلهها در یک دور، برابر 200 است. به عبارت دیگر، این موتور در هر پله، 1.8 درجه طی میکند.
// Number of steps per output rotation
const int stepsPerRevolution = 200;
در خط بعدی، یک شی از کتابخانه stepper ایجاد میکنیم. پارامترهای این شی، تعداد پلههای موتور در یک دور و پایههای اتصال به آردوینو است.
// Create Instance of Stepper library
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
در بخش setup دستورات، با فراخوانی تابع ()setSpeed ، سرعت موتور را تنظیم نموده و ارتباط سریال را مقداردهی اولیه میکنیم.
void setup()
{
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}
و اما در بخش آخر یعنی بخش loop، تابع ()step را فراخوانی میکنیم. این تابع، تعداد مشخصی پله را با سرعتی که تابع ()setSpeed تعیین کرده است، طی میکند. اگر مقادیر منفی به این تابع بدهید، موتور در جهت معکوس خواهد چرخید.
void loop()
{
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
کلام آخر
همانطور که دیدید، راه اندازی استپر موتور با استفاده از ماژول L298N و برد آردوینو چندان دشوار نیست. در این مقاله ما از موتور پلهای دو قطبی NEMA 17 به عنوان نمونه استفاده کردیم، اما همانطور که قبلا هم به آن اشاره کردیم، شما میتوانید از استپر موتور دیگری در این پروژه استفاده کنید. تنها کافی است به تفاوتهای موتور خود با موتور استفاده شده در این مقاله دقت کنید.
برای دریافت راهنمایی و اطلاعات بیشتر، حتما سوالات خود را با ما مطرح کنید.
۱۲ دیدگاه. Leave new
موتور من ۶ سییمه است مشترک ها رو جدا کردم و عین بالا وصل کردم اما موتور لرزه کوچیک میزنه نمی چرخه جریانم نمیکشه میشه راهنمایی کنید
سلام دوست عزیز،
اول اتصالات رو بررسی کنید. اتصالات ماژول درایور به آردوینو و اتصال موتور به ماژول.
بعدش ولتاژ تغذیه رو هم چک کنید تا حتما با ولتاژ نامی موتور یکی باشه و مطمئن بشید که توانایی جریان دهی لازم رو داره.
اگه باز هم درست نشد، تغذیه رو کمی زیاد کنید (حدود نیم ولت) و ببینید درست میشه یا نه.
در دور ارام میچرخه اما در ۶۰ نمیچرخه
سلام دوست عزیز،
این موتورها بسته به ساختارشون، محدودیت سرعت دارند. اگر از جریان دهی کافی منبع اطمینان دارید، عدم افزایش سرعت به خاطر محدودیت موتوره.
سلام من یک استپ موتور همراه با گیریبکس دارم.
مدل PK243A1.
این استپ موتور ۴ ولت و ۰/۹۵ آمپر هستش.
این استپ موتور ۶ سیمه و من نمیدونم چطور با درایو های ۴ سیم راه اندازیش کنم.
جایی خوندم که سیم com را پیدا کنم و از مدار خارج کنم.
آیا این کار درسته؟
و اگر این کار را بکنم نباید ولتاژ را از ۴ به ۸ ولت تغییر بدم؟
چون با ۴ ولت بد کار میکنه
سلام امیرحسین عزیز
در صورتی که سیم بندی موتور شما از نوع دو فاز با دو سیم مشترک است، بله میتونید سیمهای COM رو به درایور متصل نکنید و با همان ولتاژ نامی موتور راهاندازیش کنید. اگر عملکرد موتور مناسب نیست بهتر است ابتدا از قابلیت تامین جریان توسط منبع اطمینان حاصل کنید و در صورت نیاز ولتاژ رو به شکل جزئی افزایش بدید.
سلام واقعا مفید و کاربردی.ممنونن
سلام و درود،
خواهش میکنم، خوشحالیم که دوست داشتید.
سلام وقت بخیر
اگر قصد داشته باشیم از یک منبع تغذیه برای میکرو و درایور استفاده کنیم…
منبع تغذیه باید چه ولتاژی داشته باشد؟
سلام محمدرضای عزیز،
۱۲ ولت
سلام.اگه بخوایم بعد از دستور myStepper.step(stepsPerRevolution); یه دستور دیگه بدیم استپر فقط یک دور کامل میزنه.چطوری کاری کنیم که استپر دایم بچرخه تا اینکه شرط بعدی برقرار بشه؟
سلام و درود به شما،
هر چیزی رو که داخل loop بنویسی دائم اجرا میشه. فرض کن میخوایم استپر دائم در یک جهت بچرخه و وقتی پایه ۲، صفر شد، موتور متوقف بشه تا وقتی دوباره این پایه ۱ بشه.
پس داخل loop مینویسیم:
myStepper.step(stepsPerRevolution);
while(digitalRead(2)==0);
با این کار تا وقتی پایه ۲، HIGH هست، مبکروکنترلر داخل حلقه while میمونه، دستور step اجرا نمیشه و در نتیجه موتور ثابت میمونه.