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

آموزش کنترل استپر موتور NEMA 17 با L298N و آردوینو

اگر قصد دارید ربات جدید خود را مونتاژ کنید، در نهایت باید نحوه کنترل موتورهای پله‌ای (Stepper Motors) را یاد بگیرید. ساده‌ترین و مقرون‌به‌صرفه‌ترین روش برای کنترل این موتورها، استفاده از درایور موتور L298N است. این ماژول می‌تواند سرعت و جهت چرخش موتورهای پله‌ای کوچک تا متوسط، مانند NEMA 17 را کنترل کند.

اگر می‌خواهید چند موتور پله‌ای را هم‌زمان کنترل کنید، توصیه می‌شود از درایورهای مخصوص موتور پله‌ای مانند A4988 استفاده کنید. برای آشنایی بیشتر با این درایور، می‌توانید آموزش زیر را مطالعه کنید:

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

کنترل استپر موتور با H-Bridge

ماژول L298N دارای دو مدار H-Bridge است. هر H-Bridge یکی از سیم‌پیچ‌های الکترومغناطیسی موتور پله‌ای را هدایت می‌کند.

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

کنترل استپر موتور با H-Bridge

سرعت موتور نیز بستگی دارد به اینکه چند بار در هر ثانیه این سیم‌پیچ‌ها فعال می‌شوند.

چیپ درایور موتور L298N

در مرکز ماژول، یک تراشه مشکی بزرگ با هیت‌سینک فلزی قرار دارد.

تراشه درایور موتور L298N

در داخل این تراشه، دو مدار استاندارد H-Bridge وجود دارد که می‌تواند دو موتور DC یا یک موتور پله‌ای را کنترل کند.

درایور موتور L298N دارای بازه ولتاژ تغذیه 5 تا 35 ولت است و می‌تواند جریان پیوسته 2 آمپر برای هر سیم‌پیچ تأمین کند. به همین دلیل، برای بیشتر موتورهای پله‌ای کوچک و متوسط کاملاً مناسب است.

مشخصات فنی L298N

در ادامه مشخصات فنی این درایور را مشاهده می‌کنید:

ویژگی مقدار
ولتاژ خروجی موتور 5V – 35V
ولتاژ خروجی موتور (توصیه‌شده) 7V – 12V
ولتاژ ورودی منطقی 5V – 7V
جریان پیوسته در هر کانال 2A
حداکثر توان تلفاتی 25W

رگولاتور داخلی 5 ولت و جامپر آن

ماژول L298N دارای رگولاتور داخلی 5 ولت (مدل 78M05) است که از طریق یک جامپر فعال یا غیرفعال می‌شود.

وقتی این جامپر نصب شده باشد، رگولاتور فعال است و تغذیه منطقی (VSS) را از تغذیه موتور (VS) دریافت می‌کند. در این حالت، پایه 5V ماژول به‌عنوان خروجی عمل کرده و ولتاژ 5 ولت با جریان حدود 0.5 آمپر تولید می‌کند. می‌توانید از این ولتاژ برای تغذیه آردوینو یا دیگر مدارهای 5 ولتی استفاده کنید.

رگولاتور داخلی 5 ولت و جامپر مربوطه

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

اگر جامپر را بردارید، رگولاتور غیرفعال می‌شود و باید ولتاژ 5 ولت جداگانه‌ای از طریق پایه VSS به ماژول بدهید.

⚠️ نکات مهم:

  • اگر ولتاژ تغذیه موتور کمتر از 12 ولت است، می‌توانید جامپر را متصل نگه دارید.
  • اگر ولتاژ تغذیه موتور بیش از 12 ولت باشد، حتماً جامپر را بردارید تا به رگولاتور داخلی آسیب نرسد.
  • هرگز به‌صورت هم‌زمان به پایه‌های VSS و VS برق ندهید در حالی که جامپر در جای خود قرار دارد، زیرا این کار می‌تواند به مدار آسیب وارد کند.

تشخیص فاز استپر موتور دو‌قطبی

پیش از آن‌که موتور را به ماژول متصل کنید، باید فازهای موتور را شناسایی کنید. بهترین راه برای این کار، بررسی دیتاشیت موتور است.

تشخیص فاز استپر موتور دو‌قطبی

اما اگر به دیتاشیت دسترسی ندارید، می‌توانید از روش زیر استفاده کنید:

  1. مولتی‌متر را در حالت اندازه‌گیری مقاومت (Resistance) قرار دهید.
  2. مقاومت بین جفت‌سیم‌های موتور را اندازه بگیرید.
  3. هر جفت سیمی که مقاومت آن چند اهم (کمتر از 100Ω) باشد، مربوط به یک فاز موتور است.
  4. دو سیم باقی‌مانده، فاز دوم موتور را تشکیل می‌دهند.

با این روش ساده، می‌توانید به راحتی دو فاز موتور پله‌ای خود را شناسایی کنید.

اتصال موتور پله‌ای دو‌قطبی به L298N و آردوینو

برای شروع، ابتدا منبع تغذیه را به ماژول متصل کنید. در این آموزش از موتور پله‌ای NEMA 17 با ولتاژ نامی 12 ولت استفاده شده است. بنابراین، منبع تغذیه 12V را به ترمینال VS متصل کنید.

سپس باید تغذیه 5V مدار منطقی داخل L298N را فراهم کنید. در اینجا از رگولاتور 5 ولت داخلی ماژول استفاده می‌کنیم، بنابراین جامپر 5V-EN را در جای خود باقی بگذارید تا رگولاتور فعال بماند.

همچنین هر دو جامپر ENA و ENB باید متصل باشند تا موتور در وضعیت فعال قرار گیرد.

اکنون پایه‌های ورودی IN1، IN2، IN3 و IN4 ماژول L298N را به پایه‌های دیجیتال 8، 9، 10 و 11 آردوینو وصل کنید.

در نهایت، یکی از فازهای موتور را به ترمینال A (OUT1 و OUT2) و فاز دیگر را به ترمینال B (OUT3 و OUT4) متصل کنید.
در این مرحله، قطبیت فازها اهمیتی ندارد و موتور به‌درستی کار خواهد کرد.

تصویر زیر نحوه سیم‌کشی کامل موتور NEMA 17 با ماژول L298N و آردوینو را نشان می‌دهد.

اتصال موتور پله‌ای دو‌قطبی به L298N و آردوینو

کد آردوینو کنترل موتور پله‌ای NEMA 17

در ادامه، نمونه کدی آورده شده است که باعث می‌شود موتور پله‌ای NEMA 17 ابتدا در جهت ساعت‌گرد با سرعت 60 دور در دقیقه (RPM) و سپس در جهت پادساعت‌گرد بچرخد.

این کد به شما کمک می‌کند تا نحوه کنترل یک موتور پله‌ای دو‌قطبی با درایور L298N را به‌خوبی درک کنید و از آن به عنوان پایه‌ای برای پروژه‌های پیشرفته‌تر استفاده نمایید.

کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مختلف کد را بررسی میکنیم.

کد با افزودن کتابخانه Stepper آغاز می‌شود. این کتابخانه به‌صورت پیش‌فرض در نرم‌افزار آردوینو وجود دارد و مسئولیت توالی پالس‌ها برای چرخش صحیح موتور را بر عهده دارد:

#include <Stepper.h>

سپس متغیری به نام stepsPerRevolution تعریف می‌شود که نشان‌دهنده تعداد پله‌های مورد نیاز برای یک دور کامل چرخش موتور است. در موتور NEMA 17 معمولاً این مقدار 200 پله در هر دور است:

const int stepsPerRevolution = 200;

در گام بعد، یک شیء از کلاس Stepper ایجاد می‌کنیم و در سازنده‌ی آن، تعداد پله‌ها و پایه‌های اتصال به آردوینو را مشخص می‌کنیم:

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

در تابع setup() سرعت چرخش موتور با تابع setSpeed() تعیین می‌شود (در اینجا 60 RPM) و پورت سریال نیز برای نمایش اطلاعات در مانیتور سریال فعال می‌گردد:

void setup()
{
  myStepper.setSpeed(60);
  Serial.begin(9600);
}

در نهایت در تابع loop()، موتور یک دور کامل در جهت ساعت‌گرد می‌چرخد، سپس پس از یک تأخیر 500 میلی‌ثانیه، یک دور کامل در جهت مخالف (پادساعت‌گرد) می‌چرخد:

void loop() 
{
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
نکته مهم:

تابع step() یک تابع مسدودکننده (Blocking Function) است.

به این معنا که تا زمانی که موتور چرخش خود را کامل نکند، اجرای خطوط بعدی کد انجام نمی‌شود.

برای مثال، اگر سرعت موتور را روی 1 RPM تنظیم کنید و تابع step(100) را برای موتوری با 100 پله فراخوانی کنید، اجرای آن خط از کد حدود یک دقیقه طول می‌کشد تا کامل شود.

موارد موجود در فایل : سورس کامل

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

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