
باتریهای قابل شارژ لیتیومی امروزه در بسیاری از وسایل الکترونیکی، از گوشی و لپتاپ گرفته تا پهپاد، اسپیکر، تجهیزات قابل حمل و پروژههای الکترونیکی استفاده میشوند. در میان مدلهای مختلف، باتری لیتیوم یونی و…
ادامه مطلب۱۷ خرداد ۱۴۰۲

ترکیب استپر موتور و درایورهای مختلف با آردوینو در لوازم الکترونیکی و گجتهای مختلفی مثل چاپگرهای سهبعدی، ماشینهای CNC، حوزه رباتیک، اتوماسیون و غیره کاربرد دارد. برای ترکیب و راه اندازی استپر موتور با آردوینو به کدهای نمونه و نمودارهای سیمکشی بهخصوصی نیاز داریم. شما با مطالعه این مقاله میتوانید نحوه کنترل یک استپر موتور با ترکیب استپر درایور مدل A4988 را بهراحتی بیاموزید. با ما در این مطلب تخصصی و کاربردی از بلاگ جم ترونیک همراه شوید.
استپر موتور (Stepper motor) هم مثل تمامی موتورها از استاتور و روتور تشکیل شده است، اما استاتور آن برعکس موتورهای DC معمولی، چندین مجموعه کویل مختلف و جداگانه دارد. استپر موتور را با عنوان موتور پلهای هم میشناسند و بهدلیل کنترل بسیار دقیقی که دارد، معمولاً بهعنوان محرک بهکار گرفته میشود. تعداد سیمپیچهای یک استپر موتور به مدل و یا نوع آن بستگی دارد.
موتورهای پلهای یا استپر موتورها از نوع براشلس (Brushless) یا بدون جاروبک هستند. زمانیکه انرژی وارد سیمپیچ شود، استپر موتور در نقش یک آهنربا ظاهر میشود و قطب روتور تعبیهشده در آن، با جریان همتراز خواهد شد. به تعداد هر دفعهای که روتور میچرخد و باعث تنظیم خودش میشود، یک مرحله یا گام میگویند.
برای اینکه در مورد راه اندازی استپر موتور با آردوینو بیشتر آشنا شوید، بهتر است که نحوه کارکرد موتورهای پلهای را بهخوبی درک کنید. هر استپر موتور به تعدادی پله یا استپ مجزا تقسیم میشود که در بسیاری از موارد، مجموعاً 200 پله وجود دارد که برای هر مرحله باید یک پالس جداگانه برای موتور ارسال شود. از آنجایی که هر پالس باعث چرخش موتور یا زاویه دقیق (معمولاً 1.8 درجه) میشود، موقعیت و جایگاه موتور را میتوان بدون سیستم یا مکانیزم بازخورد کنترل کرد.
با افزایش فرکانس پالسهای دیجیتال، حرکت هر پله در یک استپر موتور به یک چرخش پیوسته و مداوم تبدیل میشود که سرعت آن مستقیماً با فرکانس پالسها متناسب است. استپر موتورها بهدلیل هزینه پایین، قابلیت اطمینان، گشتاور بالا در سرعت پایین و ساختار ساده برای همه پروژههای صنعتی و تجاری ،کاربردی محسوب میشود.
از آنجایی که درایور A4988، برای آموزش راه اندازی استپر موتور با آردوینو انتخاب شده است، لازم است که بهصورت مختصر به آن بپردازیم. درایور یا تراشه A4988، قابلیت راهاندزای استپر موتورهای 2 قطبی را در گامهای مختلف تا ولتاژ 35 ولت و جریان 2 آمپر دارد. راه اندازی استپر موتور با آردوینو با استفاده از تراشه 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) اشاره کرد.
راه اندازی استپر موتور با آردوینو و پتانسیومتر از جمله کمهزینهترین و رایجترین روشهاست. در این روش، استپر موتور را بهکمک پتانسیومتر و Arduino میچرخانیم و اگر پتانسیومتر همراستا با حرکت عقربههای ساعت بچرخد، استپ موتور هم در همان مسیر میچرخد و بالعکس. در ادامه با قطعات مورد نیاز، نحوه اتصال پایهها، کدنویسی و غیره آشنا خواهید شد.
برای اینکه پروژه راهاندازی راه اندازی استپر موتور با آردوینو با موفقیت انجام شود، به 5 قطعه اصلی نیاز داریم که عبارتاند از:
استپر موتور A4988
ماژول درایور
سیم جامپر
برای راه اندازی استپر موتور با آردوینو، در ابتدا باید پایهها را بهدرستی در ترکیب پتانسیومتر و آردوینو متصل کنید. در حالت کلی، احتمالاً شما یکی از پایههای بیرونی را به ولتاژ مثبت و دیگری را به GND متصل خواهید کرد. پایه مرکزی، بخش خروجی را تشکیل میدهد که امکان تغییر ولتاژ را دارد. اگر یکی از پایههای خارجی را به جریان 5 ولت و دیگری به بخش GND متصل شود، وقتیکه لغزنده چرخانده میشود، بین صفر تا 5 ولت تغییر خواهد کرد. این ساختار، نوعی از مدارهای تقسیمکننده ولتاژ را شکل میدهد.
اگر بخواهید از پایه 5 ولت برد آردوینو برای تامین جریان ولتاژ کمک بگیرید، ولتاژ ورودی قابل اعمال برابر با 5 ولت است. ولتاژ خروجی جریان از سیم اتصال 2 مقاومت سرچشمه میگیرد و بین صفر تا 5 ولت (بسته به مقاومت) متغیر خواهد بود.
راه اندازی استپر موتور با آردوینو بهکمک پتانسیومتر، نیازمند یک کدنویسی دقیق هم است. بههمین منظور لازم است که پس از بررسی اتصال پایهها و کنترل جریانهای ولتاژ ورودی و خروجی، پروسه کدنویسی را آغاز کنیم. در ابتدا با کد تبدیل آنالوگ به دیجیتال توسط پتانسیومتر در برد آردوینو شروع میکنیم. این کد برای زمانی است که قصد داریم از ADC در برد آردوینو Uno کمک بگیریم. بنابراین این کد را بعد از اتصال پتانسیومتر، در برد آردوینو Uno آپلود کنید:
// 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 متصل است) بهعنوان پارامتر جاگذاری میکنیم.
ضمناً این کد را هم برای اندازهگیری مقدار ولتاژ خروجی در پتانسیومتر آپلود کنید:
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 استفاده کردهایم. کدی که در ادامه به آن اشاره میکنیم، یک استپر موتور را در حالت پله کامل و دیگری را در حالت نیمپله قرار میدهد. وقتیکه استپر موتورها یک دور دوران را طی کنند، جهت و مسیر دوران آنها تغییر میکند. بنابراین، سرعت استپر موتورها کاهش و یا افزایش مییابد. کد مورد نظر برای این کار عبارت است از:
// 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، معمولاً بهعنوان کاربردیترین برد برای توسعه دستگاههای چاپگر سهبعدی و سایر وسایل الکترونیکی شناخته میشود. این شیلد دارای 4 اسلات است که بهصورت جداگانه به درایور استپر موتور تخصیص داده میشوند. بهعبارت سادهتر، شیلد CNC در راه اندازی استپر موتور با آردوینو، امکان راهاندازی حداکثر 4 موتور اضافهتر هم فراهم میکند.
استپر موتورها به پورت ورودی و خروجی (I0) نیاز دارند و با 6 پورت I0 میتوان 3 استپر موتور را بهصورت همزمان کنترل کرد. با استفاده از شیلد CNC پس از راه اندازی استپر موتور با آردوینو، میتوانید یک دستگاه دستگاه CNC اختصاصی خود را خلق کنید.
بهصورت خلاصه، مراحل بهکارگیری شیلد CNC پس از راه اندازی استپر موتور با آردوینو عبارتاند از:
دیاگرام مداری و اتصالات
کدنویسی و تنظیمات ویژه نرمافزاری
نصب کتابخانه GRBL
نصب نرمافزار کنترلی GRBL
بیشتر بخوانید: شیلد آردوینو چیست؟
استپ موتورهای ۴ سیمه از نوع دو قطبی (Bipolar) هستند و دو سیمپیچ مجزا دارند. برای راه اندازی استپ موتور 4 سیمه ابتدا باید با استفاده از تست بیزر یا اهممترِ مولتیمتر، دو سر هر سیمپیچ (فاز A و فاز B) را تفکیک کنید؛ دو سیمی که به یکدیگر راه میدهند یک جفت سیمپیچ را تشکیل میدهند. در فرآیند راه اندازی استپ موتور با آردوینو، این چهار سیم مستقیماً به خروجیهای درایورهایی مانند A4988 یا L298N متصل میشوند تا توالی پالسهای ارسالی از میکروکنترلر به حرکت دقیق شفت تبدیل شود.
موتورهای ۶ سیمه معمولاً از نوع تکقطبی (Unipolar) هستند که هر کلاف آنها یک سر وسط (Center Tap) دارد. جهت راه اندازی استپ موتور 6 سیمه، با اندازهگیری مقاومت سیمها میتوان سرهای مشترک را شناسایی کرد؛ مقاومتی که بین دو سر اصلی فاز خوانده میشود دقیقاً دو برابر مقاومت بین سر وسط و هر یک از انتهاهاست. در پروژههای راه اندازی استپ موتور 6 سیمه با آردوینو میتوانید با رها کردن سرهای وسط، موتور را مانند یک نمونه ۴ سیمه با درایور دو قطبی راهاندازی کنید یا سیمهای مشترک را به تغذیه متصل کرده و از درایورهایی مثل ULN2003 بهره ببرید.
پایههای خروجی برد آردوینو نهایتاً توانایی تأمین جریانی در حدود ۲۰ تا ۴۰ میلیآمپر را دارند، در حالی که سیمپیچهای استپر موتور برای ایجاد گشتاور به صدها میلیآمپر یا چندین آمپر جریان نیاز دارند؛ بنابراین اتصال مستقیم سیمها به پایههای آردوینو غیرممکن است و باعث سوختن آیسی میکروکنترلر میشود. با این حال مفهوم راه اندازی استپ موتور بدون درایور آماده و تجاری، به معنای ساخت مدار راهانداز اختصاصی با استفاده از ۴ ترانزیستور ماسفت یا BJT و دیودهای هرزگرد (Flyback) است تا مدار ایزوله شده و جریان لازم سیمپیچها بدون آسیب به برد کنترلکننده تأمین گردد.
اساس اموزش استپر موتور بر پایه درک رابطه فرکانس پالسها و زاویه گام استوار است. سرعت چرخش استپر موتور به تاخیر زمانی (Delay) میان پالسهای ارسالشده به درایور وابسته است؛ هرچه فاصله زمانی ارسال سیگنالها به پایه پالس (STEP) کمتر باشد، موتور با سرعت بالاتری میچرخد و برعکس. در محیط کدنویسی با فراخوانی کتابخانههای استانداردی چون AccelStepper یا Stepper، میتوان بدون درگیر شدن با محاسبات دستی تایمر، سرعت چرخش، شتاب اولیه و گشتاور حرکتی را به صورت کاملاً نرم و یکنواخت کنترل کرد.
جهت گردش شفت استپر موتور (ساعتگرد یا پادساعتگرد) وابسته به ترتیب تحریک سیمپیچها یا وضعیت منطقی پین جهت (DIR) روی درایور است. هنگام راه اندازی استپ موتور با استفاده از بردهایی مانند آردوینو، تنها با اعمال سطح منطقی HIGH یا LOW روی پایهای که به ورودی دایرکشن درایور متصل شده، میدان مغناطیسی در خلاف جهت قبلی شکل میگیرد و چرخش معکوس میشود. در درایورهای سادهتر نظیر L298N نیز این کار با معکوس کردن توالی کدنویسی پینهای ورودی در نرمافزار به آسانی پیادهسازی میگردد.
خیر؛ جریان خروجی پایههای آردوینو بسیار ضعیف است و اتصال مستقیم، برد آردوینو را میسوزاند؛ حتماً باید از ماژول درایور یا مدار ترانزیستوری استفاده شود.
استپ موتور ۴ سیمه از نوع دوقطبی (Bipolar) با دو سیمپیچ مجزاست، اما موتور ۶ سیمه از نوع تکقطبی (Unipolar) بوده و هر سیمپیچ یک سر وسط (مشترک) اضافه دارد.
کتابخانه AccelStepper بهترین گزینه است؛ زیرا علاوه بر تغییر سرعت و جهت، امکان کنترل شتاب، ترمز نرم و حرکت همزمان چند موتور را بدون افت گام فراهم میکند.
سرعت با تغییر تاخیر (Delay) بین پالسهای ارسالی یا همان فرکانس پالسهای ورودی درایور کنترل میشود؛ کاهش تاخیر پالسها سرعت را افزایش میدهد.

نویز برق یکی از مشکلات رایج در مدارهای الکترونیکی است که میتواند به شکل صدای اضافی در سیستمهای صوتی، اختلال در عملکرد سنسورها، نوسان سیگنال، خطا در تجهیزات دیجیتال یا حتی عملکرد نامنظم یک…

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