ترکیب استپر موتور و درایورهای مختلف با آردوینو در لوازم الکترونیکی و گجتهای مختلفی مثل چاپگرهای سهبعدی، ماشینهای CNC، حوزه رباتیک، اتوماسیون و غیره کاربرد دارد. برای ترکیب و راه اندازی استپر موتور با آردوینو به کدهای نمونه و نمودارهای سیمکشی بهخصوصی نیاز داریم. شما با مطالعه این مقاله میتوانید نحوه کنترل یک استپر موتور با ترکیب استپر درایور مدل A4988 را بهراحتی بیاموزید. با ما در این مطلب تخصصی و کاربردی از بلاگ جم ترونیک همراه شوید.
استپر موتور چیست؟
استپر موتور (Stepper motor) هم مثل تمامی موتورها از استاتور و روتور تشکیل شده است، اما استاتور آن برعکس موتورهای DC معمولی، چندین مجموعه کویل مختلف و جداگانه دارد. استپر موتور را با عنوان موتور پلهای هم میشناسند و بهدلیل کنترل بسیار دقیقی که دارد، معمولاً بهعنوان محرک بهکار گرفته میشود. تعداد سیمپیچهای یک استپر موتور به مدل و یا نوع آن بستگی دارد.
موتورهای پلهای یا استپر موتورها از نوع براشلس (Brushless) یا بدون جاروبک هستند. زمانیکه انرژی وارد سیمپیچ شود، استپر موتور در نقش یک آهنربا ظاهر میشود و قطب روتور تعبیهشده در آن، با جریان همتراز خواهد شد. به تعداد هر دفعهای که روتور میچرخد و باعث تنظیم خودش میشود، یک مرحله یا گام میگویند.
استپر موتور چگونه کار میکند؟
برای اینکه در مورد راه اندازی استپر موتور با آردوینو بیشتر آشنا شوید، بهتر است که نحوه کارکرد موتورهای پلهای را بهخوبی درک کنید. هر استپر موتور به تعدادی پله یا استپ مجزا تقسیم میشود که در بسیاری از موارد، مجموعاً 200 پله وجود دارد که برای هر مرحله باید یک پالس جداگانه برای موتور ارسال شود. از آنجایی که هر پالس باعث چرخش موتور یا زاویه دقیق (معمولاً 1.8 درجه) میشود، موقعیت و جایگاه موتور را میتوان بدون سیستم یا مکانیزم بازخورد کنترل کرد.
با افزایش فرکانس پالسهای دیجیتال، حرکت هر پله در یک استپر موتور به یک چرخش پیوسته و مداوم تبدیل میشود که سرعت آن مستقیماً با فرکانس پالسها متناسب است. استپر موتورها بهدلیل هزینه پایین، قابلیت اطمینان، گشتاور بالا در سرعت پایین و ساختار ساده برای همه پروژههای صنعتی و تجاری ،کاربردی محسوب میشود.
استپر موتور A4988
از آنجایی که درایور A4988، برای آموزش راه اندازی استپر موتور با آردوینو انتخاب شده است، لازم است که بهصورت مختصر به آن بپردازیم. درایور یا تراشه A4988، قابلیت راهاندزای استپر موتورهای 2 قطبی را در گامهای مختلف تا ولتاژ 35 ولت و جریان 2 آمپر دارد. راه اندازی استپر موتور با آردوینو با استفاده از تراشه A4988 آسان است و میتوان با ارسال پالس به ماژول، سرعت و چرخش استپر موتور را کنترل کرد.
خرید برد توسعه درایور استپر موتور 8825/A4988
سخت افزار
مشخصات فنی و سختافزاری تراشه A4988 عبارتاند از:
- حفاظ اضافه جریان و اتصال کوتاه به زمین
- حفاظ حرارتی و کاهش ولتاژ از نوع ULVO
- امکان تقسیم استپها یا پلهها به 2، 4، 8 و 16 قسمت جدا
- پایههای کنترلی
- سیستم خنککننده و هیت سینک
- محدودکننده جریان
- 8 تا 35 ولت: ولتاژ ورودی قابل اعمال
- 2 آمپر برای هر فاز: حداکثر جریان قابل اعمال
- 3.3 تا 5.5 ولت: تغذیه قسمت دیجیتال
پایهها
درایور A4988، 2 پایه برای کنترل سرعت و چرخش استپر موتور قطبی دارد. همچنین، 16 پایه برای ارتباط ماژول A4988 طراحی شدهاند که امکان ارتباط آن با محیط بیرون را فراهم میکنند. از این پایهها میتوان به پایه تغذیه، پایههای انتخاب میکرو استپ، پایههای کنترل ورودی (STEP و DIR)، پایههای 2 گانه کنترل وضعیت توان (EN، RST و SLP) و پایههای خروجی 4 گانه (1B، 1A، 2A و 2B) اشاره کرد.
آموزش راه اندازی استپر موتور A4988 با آردوینو و پتانسیومتر
راه اندازی استپر موتور با آردوینو و پتانسیومتر از جمله کمهزینهترین و رایجترین روشهاست. در این روش، استپر موتور را بهکمک پتانسیومتر و Arduino میچرخانیم و اگر پتانسیومتر همراستا با حرکت عقربههای ساعت بچرخد، استپ موتور هم در همان مسیر میچرخد و بالعکس. در ادامه با قطعات مورد نیاز، نحوه اتصال پایهها، کدنویسی و غیره آشنا خواهید شد.
قطعات لازم
برای اینکه پروژه راهاندازی راه اندازی استپر موتور با آردوینو با موفقیت انجام شود، به 5 قطعه اصلی نیاز داریم که عبارتاند از:
- برد آردوینو Uno
- استپر موتور A4988
- ماژول درایور
- پتانسیومتر
- سیم جامپر
اتصال پایهها
برای راه اندازی استپر موتور با آردوینو، در ابتدا باید پایهها را بهدرستی در ترکیب پتانسیومتر و آردوینو متصل کنید. در حالت کلی، احتمالاً شما یکی از پایههای بیرونی را به ولتاژ مثبت و دیگری را به GND متصل خواهید کرد. پایه مرکزی، بخش خروجی را تشکیل میدهد که امکان تغییر ولتاژ را دارد. اگر یکی از پایههای خارجی را به جریان 5 ولت و دیگری به بخش GND متصل شود، وقتیکه لغزنده چرخانده میشود، بین صفر تا 5 ولت تغییر خواهد کرد. این ساختار، نوعی از مدارهای تقسیمکننده ولتاژ را شکل میدهد.
اگر بخواهید از پایه 5 ولت برد آردوینو برای تامین جریان ولتاژ کمک بگیرید، ولتاژ ورودی قابل اعمال برابر با 5 ولت است. ولتاژ خروجی جریان از سیم اتصال 2 مقاومت سرچشمه میگیرد و بین صفر تا 5 ولت (بسته به مقاومت) متغیر خواهد بود.
کدنویسی
راه اندازی استپر موتور با آردوینو بهکمک پتانسیومتر، نیازمند یک کدنویسی دقیق هم است. بههمین منظور لازم است که پس از بررسی اتصال پایهها و کنترل جریانهای ولتاژ ورودی و خروجی، پروسه کدنویسی را آغاز کنیم. در ابتدا با کد تبدیل آنالوگ به دیجیتال توسط پتانسیومتر در برد آردوینو شروع میکنیم. این کد برای زمانی است که قصد داریم از ADC در برد آردوینو Uno کمک بگیریم. بنابراین این کد را بعد از اتصال پتانسیومتر، در برد آردوینو Uno آپلود کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// Include the AccelStepper Library #include <AccelStepper.h> // Define step constants #define FULLSTEP 4 #define HALFSTEP 8 // Creates two instances // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11); AccelStepper stepper2(FULLSTEP, 4, 6, 5, 7); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position for motor 1 stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(50.0); stepper1.setSpeed(200); stepper1.moveTo(2038); // set the same for motor 2 stepper2.setMaxSpeed(1000.0); stepper2.setAcceleration(50.0); stepper2.setSpeed(200); stepper2.moveTo(-2038); } void loop() { // Change direction once the motor reaches target position if (stepper1.distanceToGo() == 0) stepper1.moveTo(-stepper1.currentPosition()); if (stepper2.distanceToGo() == 0) stepper2.moveTo(-stepper2.currentPosition()); // Move the motor one step stepper1.run(); stepper2.run(); } |
توضیح کد: پس از آپلود این کد میتوانید اندازه تبدیل آنالوگ به دیجیتال را روی مانیتور آردوینو ببینید. متغیر rawValue در بخش loop، باید برابر با تابع ()analogRead قرار داده شود. این تابع تنها یک پارامتر میخواهد که شامل شماره پین آنالوگ است. همچنین، برای اینکه مقدار ولتاژ را در پایه مرکز پتانسیومتر بررسی کنیم، A0 را (بهدلیل اینکه پایه مرکزی به پایه آنالوگ A0 متصل است) بهعنوان پارامتر جاگذاری میکنیم.
ضمناً این کد را هم برای اندازهگیری مقدار ولتاژ خروجی در پتانسیومتر آپلود کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
void setup() { Serial.begin(9600); } void loop() { int rawValue = analogRead(A0); float voltage = rawValue * (5.0 / 1023.0); Serial.print(voltage); Serial.println(" Volts"); delay(100); } |
توضیح کد: متغیر rawValue، در این کد دارای ADC از پایه آنالوگ A0 است و ما میخواهیم این اندازهها را به جریان ولتاژ تبدیل کنیم. بههمین دلیل یک متغیر جداگانه (از نوع float) یا عنوان voltage قرار میدهیم که نتایج محاسبه ولتاژ را ارائه میدهد.
آموزش راه اندازی استپر موتور با آردوینو: استفاده از چند استپر موتور همزمان
اگر بخواهیم یک استپر موتور دیگر را پس از راه اندازی استپر موتور با آردوینو اضافه کنیم، باید از منبع تغذیه 5 ولتی برای تامین برق در برد درایور مورد نظر کمک بگیریم. برای مثال، اگر درایور مورد نظر از نوع ULN2003 باشد، پس از اتصال منبع تغذیه به برد آن، پایههای IN1، IN2، IN3 و IN4 را از دومین و یا چندیمین برد درایور به پایههای 4، 5، 6 و 7 دیجیتال آردوینو Uno وصل خواهیم کرد.
کدنویسی
برای اینکه پروسه راه اندازی استپر موتور با آردوینو (استفاده از چندین موتور) را بهخوبی انجام دهید، از استپر موتور 28BYJ-48 و درایور ULN2003 استفاده کردهایم. کدی که در ادامه به آن اشاره میکنیم، یک استپر موتور را در حالت پله کامل و دیگری را در حالت نیمپله قرار میدهد. وقتیکه استپر موتورها یک دور دوران را طی کنند، جهت و مسیر دوران آنها تغییر میکند. بنابراین، سرعت استپر موتورها کاهش و یا افزایش مییابد. کد مورد نظر برای این کار عبارت است از:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// Include the AccelStepper Library #include <AccelStepper.h> // Define step constants #define FULLSTEP 4 #define HALFSTEP 8 // Creates two instances // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper1(HALFSTEP, 8, 10, 9, 11); AccelStepper stepper2(FULLSTEP, 4, 6, 5, 7); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position for motor 1 stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(50.0); stepper1.setSpeed(200); stepper1.moveTo(2038); // set the same for motor 2 stepper2.setMaxSpeed(1000.0); stepper2.setAcceleration(50.0); stepper2.setSpeed(200); stepper2.moveTo(-2038); } void loop() { // Change direction once the motor reaches target position if (stepper1.distanceToGo() == 0) stepper1.moveTo(-stepper1.currentPosition()); if (stepper2.distanceToGo() == 0) stepper2.moveTo(-stepper2.currentPosition()); // Move the motor one step stepper1.run(); stepper2.run(); } |
توضیح کد: این کدنویسی شامل فراخوانی کتابخانه AccelStepper (خط اول) است تا با استفاده از آن بتوان چندین استپر موتور بهصورت همزمان کنترل کرد. بههمین دلیل باید 2 متغیر با عناوین SULLSTEP 4 و HALFSTEP 8 برای حالتهای پله کامل و نیمپله تعریف و جایگذاری شوند. در ادامه، همه کدنویسیهای لازم با متغیرهای مناسب قرار داده میشوند تا امکان کنترل سرعت و ولتاژ چندین موتور پس از راه اندازی استپر موتور با آردوینو فراهم شود.
استفاده از شیلد CNC آردوینو برای کنترل استپر موتور
شیلد CNC، معمولاً بهعنوان کاربردیترین برد برای توسعه دستگاههای چاپگر سهبعدی و سایر وسایل الکترونیکی شناخته میشود. این شیلد دارای 4 اسلات است که بهصورت جداگانه به درایور استپر موتور تخصیص داده میشوند. بهعبارت سادهتر، شیلد CNC در راه اندازی استپر موتور با آردوینو، امکان راهاندازی حداکثر 4 موتور اضافهتر هم فراهم میکند.
استپر موتورها به پورت ورودی و خروجی (I0) نیاز دارند و با 6 پورت I0 میتوان 3 استپر موتور را بهصورت همزمان کنترل کرد. با استفاده از شیلد CNC پس از راه اندازی استپر موتور با آردوینو، میتوانید یک دستگاه دستگاه CNC اختصاصی خود را خلق کنید.
بهصورت خلاصه، مراحل بهکارگیری شیلد CNC پس از راه اندازی استپر موتور با آردوینو عبارتاند از:
- دیاگرام مداری و اتصالات
- کدنویسی و تنظیمات ویژه نرمافزاری
- نصب کتابخانه GRBL
- نصب نرمافزار کنترلی GRBL
بیشتر بخوانید: شیلد آردوینو چیست؟
جمعبندی
راه اندازی استپر موتور با آردوینو و کمک گفتن از پتانسیومتر، روشی کمهزینه و مقرونبهصرفه محسوب میشود. با استفاده از راه اندازی استپر موتور با آردوینو، امکان اتصال و کنترل چند استپر موتور جدید وجود دارد و میتوان از آن در پروژههای صنعتی و تجاری مختلف بهرهمند شد. شما میتوانید با انتخاب فروشگاه جم ترونیک برای خرید انواع ماژول، درایور و استپر موتور، تمام چیزهایی را که برای ساختن لوازم الکترونیکی نیاز است را بهدست آورید.