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

اگر قصد دارید ربات جدید خود را مونتاژ کنید، در نهایت باید نحوه کنترل موتورهای پلهای (Stepper Motors) را یاد بگیرید. سادهترین و مقرونبهصرفهترین روش برای کنترل این موتورها، استفاده از درایور موتور L298N است. این ماژول میتواند سرعت و جهت چرخش موتورهای پلهای کوچک تا متوسط، مانند NEMA 17 را کنترل کند.
اگر میخواهید چند موتور پلهای را همزمان کنترل کنید، توصیه میشود از درایورهای مخصوص موتور پلهای مانند A4988 استفاده کنید. برای آشنایی بیشتر با این درایور، میتوانید آموزش زیر را مطالعه کنید:
- اتصال موتور درایور DRV8825 به آردوینو و کنترل استپر موتور
- پروژه کنترل استپر موتور با آردوینو و روتاری انکودر
- چگونه استپر موتور را با آردوینو کنترل کنیم؟
- راه اندازی موتور پله ای با موتور درایور و آردوینو
اگر وارد دنیای رباتیک، پرینترهای سهبعدی یا دستگاههای CNC شدهاید، به احتمال زیاد به زودی با موتورهای پلهای برخورد خواهید کرد.
کنترل استپر موتور با H-Bridge
ماژول L298N دارای دو مدار H-Bridge است. هر H-Bridge یکی از سیمپیچهای الکترومغناطیسی موتور پلهای را هدایت میکند.
با فعالسازی این سیمپیچها به ترتیب خاصی، محور موتور پلهای به صورت دقیق و مرحلهبهمرحله در جهت جلو یا عقب حرکت میکند.
سرعت موتور نیز بستگی دارد به اینکه چند بار در هر ثانیه این سیمپیچها فعال میشوند.
چیپ درایور موتور 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 ولت جداگانهای از طریق پایه VSS به ماژول بدهید.
⚠️ نکات مهم:
- اگر ولتاژ تغذیه موتور کمتر از 12 ولت است، میتوانید جامپر را متصل نگه دارید.
- اگر ولتاژ تغذیه موتور بیش از 12 ولت باشد، حتماً جامپر را بردارید تا به رگولاتور داخلی آسیب نرسد.
- هرگز بهصورت همزمان به پایههای VSS و VS برق ندهید در حالی که جامپر در جای خود قرار دارد، زیرا این کار میتواند به مدار آسیب وارد کند.
تشخیص فاز استپر موتور دوقطبی
پیش از آنکه موتور را به ماژول متصل کنید، باید فازهای موتور را شناسایی کنید. بهترین راه برای این کار، بررسی دیتاشیت موتور است.
اما اگر به دیتاشیت دسترسی ندارید، میتوانید از روش زیر استفاده کنید:
- مولتیمتر را در حالت اندازهگیری مقاومت (Resistance) قرار دهید.
- مقاومت بین جفتسیمهای موتور را اندازه بگیرید.
- هر جفت سیمی که مقاومت آن چند اهم (کمتر از 100Ω) باشد، مربوط به یک فاز موتور است.
- دو سیم باقیمانده، فاز دوم موتور را تشکیل میدهند.
با این روش ساده، میتوانید به راحتی دو فاز موتور پلهای خود را شناسایی کنید.
اتصال موتور پلهای دوقطبی به 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 و آردوینو را نشان میدهد.
کد آردوینو کنترل موتور پلهای 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 پله فراخوانی کنید، اجرای آن خط از کد حدود یک دقیقه طول میکشد تا کامل شود.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود