معرفی و راه‌اندازی استپر موتور با آردوینو

جمعه, 11 تیر 1395 19:27
این مورد را ارزیابی کنید
(24 رای‌ها)

این مطلب بخش دوازدهم از آموزش جامع آردوینو (مبتدی و پیشرفته) است. در این قسمت قصد داریم به یکی از تجهیزات مهم در کارهای اتوماتیک به نام استپر موتور (Stepper motor) و نحوه راه‌اندازی بپردازیم. نحوه کار استپر موتور به گونه‌ای است که برای ایجاد حرکت‌های بسیار دقیق مناسب است. کارهایی که با استپر موتور قابل انجام است به روش‌های دیگر یا قابل انجام نیست یا با صرف هزینه و زمان بیشتر امکان‌پذیر خواهد بود. اگر در اینترنت به پروژه‌های انجام شده با استپر موتور نگاهی بیندازید، خواهید دید که چه ایده‌های جالبی در مورد آن وجود دارد: از ربات نقاش تا پرینتر سه‌بعدی و حتی دستگاه‌های صنعتی مانند CNC از استپر موتور استفاده می‌کنند.

قطعات مورد نیاز:

 

برد آردوینو و کابل رابط 

1 عدد
استپر موتور Nema17 1 عدد
IC درایور L293D 1 عدد
درایور A4988 1 عدد
درایور TB6560 1 عدد
خازن 100μF 1 عدد
مقاومت 220Ω 2 عدد
کلید فشاری 2 عدد
منبع تغذیه 1 عدد
بردبورد 1 عدد
سیم جامپر 1 بسته

 


معرفی استپر موتور

استپر موتور مانند اکثر موتورهای DC دارای دو بخش اصلی است: روتور و استاتور. روتور محور چرخان و استاتور بخش بیرونی و ثابت موتور است. روتور یک آهنربای دائم و استاتور شامل تعدادی سیم‌پیچ است که با اعمال ولتاژ تبدیل به آهنربای موقف می‌شود. استپر موتور را از این جنبه که اعمال ولتاژ به آن بدون براش صورت می‌گیرد می‌توان نوعی موتور براشلس دانست؛ اما مکانیزم حرکتی و نحوه کارکرد آن به حدی از موتورهای براشلس معمولی متفاوت است که معمولا استپر موتور را در این دسته قرار نمی‌دهند. ساختار داخلی استپر موتورها انواع مختلفی دارد که در اینجا قصد پرداختن به آنها را نداریم و تنها توضیحی کلی راجع به یک نوع متداول خواهیم داد.

استپر موتور

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

مکانیزم استپر موتور

هر چه تعداد گام‌های استپر موتور در یک دور چرخش بیشتر باشد، دقت حرکتی آن بیشتر است. به حرکتی که توضیح داده شد، یک گام کامل (Full step) گفته می‌شود. روش‌هایی وجود دارد که می‌تواند استپر موتور را به اندازه کسر صحیحی از گام کامل (مثلا ½ ، ¼ ، …) بچرخاند که نحوه عملکرد آن فراتر از این مطلب است. با روش‌های Microstepping می‌توان موتور را تا ١/٢٥٦ یک گام کامل چرخاند.
دو نوع استپر موتور unipolar و bipolar وجود دارد. استپر موتور unipolar قادر است موتور را تنها در یک جهت بچرخاند در حالی که استپر موتور bipolar توانایی حرکت دادن موتور در دو جهت را دارد. به هر استپر موتور تعدادی سیم متصل است که معمولا هر کدام به یک سیم‌پیچ وصل است. با دادن ولتاژ با ترتیبی مشخص به سیم‌پیچ‌ها می‌توان موتور را به حرکت در آورد. از آنجا که استپر موتور نیاز به ولتاژ و جریان نسبتا بالایی دارد، نمی‌توانید با آردوینو به تنهایی آن را راه‌اندازی کنید و حتما نیاز به یک درایور مخصوص برای تامین برق موتور دارید. برخی درایورهای موتورهای DC قابلیت راه‌اندازی استپر موتور را نیز دارند. برای انتخاب درایور مناسب استپر موتور باید دقت کنید که جریان و ولتاژ موتور کمتر از جریان و ولتاژ درایور باشد. جریان برای موتور و درایور به ازای هر سیم‌پیچ سنجیده می‌شود. همچنین برای اطمینان، سعی کنید جریان موتور ½ یا ١/٣ درایور باشد.


راه اندازی استپر موتور با تراشه L293d 

در این بخش می‌خواهیم یک موتور معروف به نام Nema17 را راه‌اندازی کنیم. این موتور نسبت اندازه خودش قدرت زیادی دارد و جریان نسبتا زیادی مصرف می‌کند. بنابراین اگر می‌خواهید از آن استفاده کنید یا باید باتری قوی در اختیار داشته باشید یا از یک منبع تغذیه خارجی استفاده کنید. من راه دوم را پیشنهاد می‌کنم چون به ندرت نیاز دارید که استپر موتور را در یک وسیله متحرک استفاده کنید. البته اگر موتور کوچکتری دارید، تمام مطالب برای راه‌اندازی آن یکسان بوده و بنابراین جای نگرانی نیست.
استپر موتور نیز مثل موتور DC برای تامین توان راه‌اندازی نیاز به درایور دارد. درایورهای مختلفی برای کار با استپر موتور وجود دارند. معمولا درایورها توانایی راه‌اندازی موتور DC و استپر موتور را دارند (مانند L298) اما برای کار با هر کدام درایورهای خاصی متداول است. یک درایور پرکاربرد برای استپر موتور، L293D است که هم به صورت IC (تراشه) و هم به صورت ماژول موجود است. در این قسمت می‌خواهیم به راه‌اندازی استپر موتور با تراشه L293D بپردازیم.

تراشه L293D

IC را روبروی خودتان بگیرید به طوری که علامت U شکل در بالا قرار بگیرد. این تراشه ١٦ پایه دارد. شماره هر پایه و عملکرد هر کدام به صورت زیر است:

پایه های l293d

پایه‌های ٨ و ١٦ که تغذیه موتورها و تراشه هستند را به ترتیب به منبع تغذیه خارجی (مثلا 12V) و ولتاژ 5V وصل کنید. این درایور می‌تواند برای ولتاژهای تا 36V استفاده شود. همچنین تغذیه درایور حداکثر 7V است. پایه‌های ٤، ٥، ١٢ و ١٣ را به GND وصل کنید. برای محافظت از درایور در برابر حرارت تولید شده، می‌توانید این پایه‌ها را به یک هیت سینک (Heat sink) وصل کنید تا به خنک‌سازی آن کمک شود. پایه‌های ١ و ٩ فعال‌ساز موتورها (Enable) بوده و دقیقا مانند Enable در درایور موتور DC عمل می‌کنند. پایه ٢ فرمان را از آردوینو گرفته (Input)، تقویت کرده و به موتور که به پین ٣ وصل شده می‌فرستد (Output). پایه‌های ٦-٧ ، ١٠-١١ و ١٤-١٥ نیز دقیقا وظیفه‌ای مشابه پایه‌های 2 و 3 دارند. بیشتر استپر موتورها ٤ سیم دارند که هر کدام به یکی از پایه‌های گفته شده متصل می‌شود. پایه ١ سیم‌های ٣ و ٦ و پایه ٩ سیم‌های ١١ و ١٤ را فعال می‌کنند.

دفترچه راهنمای درایور L293D

مدار تراشه l293d

همان طور که قبلا توضیح داده شد، برای به حرکت در آوردن استپر موتور، باید سیم‌پیچ‌های آن به ترتیب مشخصی تحریک شوند. این ترتیب را می‌توانید در دفترچه راهنمای هر موتور مشاهده کنید. معمولا برای جلوگیری از پیچیدگی کار با استپر موتور در آردوینو از کتابخانهstepper.hاستفاده می‌شود. به این ترتیب می‌توانید ساده‌تر موتور را کنترل کنید. چیزی که برای راه‌اندازی موتور باید بدانید تعداد گام‌های موتور در یک دور چرخش است و نیز اینکه هر سیم به کدام سیم‌پیچ وصل شده است. بقیه کار را به کتابخانه استپر موتور واگذار کنید.

دانلود کتابخانه Stepper

 

برنامه زیر را در آردوینو بارگذاری کنید. این برنامه موتور را یک دور ساعتگرد و یک دور پادساعتگرد می‌چرخاند.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com
*/

#include <Stepper.h>
#define stepsPerRevolution 200
// Coil#1: Red-Green
// Coil#2: Yellow-Blue
#define redWire 2
#define greenWire 3
#define yellowWire 4
#define blueWire 5
//Creating object for clockwise rotation
Stepper driveCW(stepsPerRevolution, redWire, greenWire, yellowWire, blueWire);
//Creating object for counter-clockwise rotation
Stepper driveCCW(stepsPerRevolution, greenWire, redWire, yellowWire, blueWire);

void setup()
{
}
void loop()
{
    for (int i = 0; i < stepsPerRevolution; i++)
    {
        driveCW.step(1);
        delay(20);
    }
    delay(1000);
    for (int i = 0; i < stepsPerRevolution; i++)
    {
        driveCCW.step(1);
        delay(20);
    }
    delay(1000);
}

در این برنامه ابتدا یک شیء برای حرکت ساعتگرد و یک شیء برای حرکت پادساعتگرد موتور تعریف شده است. برای تعریف استپر موتور باید تعداد گام در یک دور و سیم‌های آن مشخص شود:

Stepper driveCW(stepsPerRevolution, redWire, greenWire, yellowWire, blueWire);
Stepper driveCCW(stepsPerRevolution, greenWire, redWire, yellowWire, blueWire);

دستور(step(nدر کتابخانه استپر موتور، موتور را به میزان n گام حرکت می‌دهد. با تنظیم تاخیر بین هر گام، سرعت چرخش موتور را می‌توانید تغییر دهید:

for (int i = 0; i < stepsPerRevolution; i++)
{
   driveCW.step(1);
   delay(20);
}

در برنامه بالا دستور step موتور را با بالاترین سرعت ممکن به تعداد گام خواسته شده حرکت می‌دهد. به همین دلیل از دستور تاخیر برای کاهش سرعت موتور استفاده شد. روش دیگر کار با کتابخانه استپر موتور، کنترل سرعت است. در صورتی که از دستور(setSpeed(vاستفاده کنید، می‌توانید سرعت موتور را (بر حسب دور بر دقیقه) تنظیم کرده و سپس از دستور step برای حرکت به میزان دلخواه استفاده کنید. با این کار دیگر نیازی به استفاده از تاخیر و حلقه for نیست. برنامه زیر از روش دوم برای کنترل موتور استفاده می‌کند:

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com
*/

#include <Stepper.h>
#define stepsPerRevolution 200
// Coil#1: Red-Green
// Coil#2: Yellow-Blue
#define redWire 2
#define greenWire 3
#define yellowWire 4
#define blueWire 5
Stepper driveCW(stepsPerRevolution, redWire, greenWire, yellowWire, blueWire);

void setup()
{
  driveCW.setSpeed(60);
}

void loop()
{
  driveCW.step(stepsPerRevolution);
  delay(1000);
  driveCW.step(-stepsPerRevolution);
  delay(1000);
}

راه اندازی استپر موتور با درایور A4988

A4988 یک درایور مخصوص استپر موتورهای کوچک و متوسط است که به دلیل ابعاد کوچکش بسیار مورد توجه بوده است. کار با این درایور ساده است چرا که تنها با دو ورودی سرعت و جهت، می‌توانید موتورتان را کنترل کنید. این درایور توانایی تحمل 2A جریان و 35V ولتاژ را دارد. A4988 در درون خود مدارهای محافظتی و نیز یک هیت سینک کوچک برای دفع حرارت اضافی دارد. این درایور قابلیت راه‌اندازی موتور به صورت میکرواستپ تا ١/١٦ را دارد.

درایور a4988

درایور A4988 ١٦ پایه دارد. پایه‌های STP و DIR میزان حرکت و جهت موتور را مشخص کرده و به آردوینو وصل می‌شود. با High یا Low کردن پایه DIR می‌توانید موتور را در دو جهت مختلف به حرکت در آورید. پایه‌های 1A و 1B به مثبت و منفی یک کویل و پایه‌های 2A و 2B به مثبت و منفی کویل دیگر موتور متصل می‌شوند. پایه‌های VMOT و GND مجاور آن، تغذیه موتور و VDD و GND مجاور آن تغذیه برد درایور هستند. همچنین پایه‌های M1، M0 و M2 برای تعیین میکرواستپ موتور استفاده می‌شوند. با استفاده از جدول زیر می‌توانید نحوه میکرواستپ موتور را تعیین کنید:

 

M0

M1

M2

میزان گام

Low

Low

Low

کامل

High

Low

Low

½

Low

High

Low

¼

High

High

Low

1/8

High

High

High

1/16

این پایه‌ها با یک مقاومت Pull-down ،100kΩ شده‌اند و بنابراین در حالت عادی در شرایط Low هستند. پس اگر پایه‌های میکرواستپ فرمانی دریافت نکنند، موتور با گام کامل کار خواهد کرد.
برای شروع، پایه‌های STP و DIR را به پین‌های ٢ و ٣ آردوینو و پایه‌های مربوط به موتور و تغذیه را مطابق آنچه گفته شد وصل کنید. همچنین پایه‌های RST و SLP را به یکدیگر وصل کنید. علاوه بر آن یک خازن 100μF بین پایه‌های مثبت و منفی منبع تغذیه متصل کنید تا نوسانات ولتاژ به درایور آسیب نزند. دقت کنید که پایه مثبت خازن (پایه بلندتر) را به VMOT وصل کنید. معمولا در کنار پایه منفی خازن‌ها یک علامت منفی گذاشته شده است که تشخیص مثبت و منفی آن را ساده‌تر می‌کند.

 

مدار a4988

 

حالا برنامه زیر را بر روی آردوینو بارگذاری کرده و نتیجه را مشاهده کنید.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com
*/

#define stepPin 3
#define directionPin 2
#define stepsPerRevolution 200

void stepperRun(int steps, int speedRpm)
{
  if (steps < 0)
  {
    digitalWrite(directionPin, LOW);
    steps = abs(steps);
  }
  else
    digitalWrite(directionPin, HIGH);
  long fullStepTime = 1000000 * 60 / (stepsPerRevolution * speedRpm); // in microseconds
  for (int i = 0; i < steps; i++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(fullStepTime / 2);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(fullStepTime / 2);
  }
}

void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(directionPin, OUTPUT);
}

void loop()
{
  stepperRun(stepsPerRevolution,20);
  delay(1000);
  stepperRun(-stepsPerRevolution,20);
  delay(1000);
  stepperRun(stepsPerRevolution*3,60);
  delay(1000);
  stepperRun(-stepsPerRevolution*3,60);
  delay(1000);
}

در این برنامه یک تابع به نامstepperRunتعریف شده که تعداد گام و سرعت را دریافت کرده و موتور را به حرکت در می‌آورد. در این تابع برای اینکه بتوانیم موتور را پادساعتگرد بچرخانیم، پایه DIR را Low می‌کنیم.

if (steps < 0)
{
  digitalWrite(directionPin, LOW);
  steps = abs(steps);
}
else
  digitalWrite(directionPin, HIGH);

تابعfullStepTimeزمان مورد نیاز برای هر گام را با توجه به سرعت موتور و تعدد گام در هر دور آن محاسبه می‌کند. برای یک حرکت پیوسته باید نصف این زمان پایه STP در حالت High و نصف آن در حالت Low قرار بگیرد.

long fullStepTime = 1000000 * 60 / (stepsPerRevolution * speedRpm); // in microseconds
for (int i = 0; i < steps; i++)
{
   digitalWrite(stepPin, HIGH);
   delayMicroseconds(fullStepTime / 2);
   digitalWrite(stepPin, LOW);
   delayMicroseconds(fullStepTime / 2);
}

راه اندازی با درایور TB6560

در این قسمت قصد داریم یک درایور نسبتا حرفه‌ای برای استپر موتور را معرفی کنیم. درایور TB6560 توانایی‌های بسیار بیشتری نسبت به سایر موارد معرفی شده و البته قیمت بیشتری نیز دارد. این درایور می‌تواند تا 3A جریان را برای استپر موتور به راحتی تامین کند و به همین دلیل انتخاب مناسبی برای موتورهای قوی‌تر خواهد بود. نحوه کار و اتصالات TB6560 تقریبا مشابه درایور A4988 است که در قسمت قبل معرفی شد. پایه‌های A- و A+ به دو سر یک سیم‌پیچ و پایه‌های B- و B+ به دو سر سیم‌پیچ دیگر موتور متصل می‌شوند. پایه CLK+ و CW+ به آردوینو وصل شده و به ترتیب برای ارسال تعداد گام و جهت حرکت استفاده می‌شوند. پایه‌های CLK- و CW- نیز به GND وصل می‌شوند. همچنین پایه‌های 24V+ و GND نیز به مثبت و منفی منبع تغذیه متصل می‌شوند. تراشه‌ها و اجزای داخلی این درایور باعث شده است تا کنترل موتور با دقت بالایی صورت گیرد. همچنین TB6560 مدارات محافظتی در برابر جریان بالا و ولتاژ پائین دارد.

 

درایور tb6560

 

اولین چیزی که در مورد TB6560 در نگاه اول توجه را جلب می‌کند، وجود هیت‌سینک‌ بزرگی بر روی این برد است. این هیت‌سینک می‌تواند حرارت زیادی را دفع کرده و امکان کار با جریان‌های بالا تا 3A را بدهد. مورد متفاوت دیگری که در این درایور وجود دارد قرار داشتن تعدادی سوئیچ تنظیم بر روی آن است. این بخش از درایور بسیار اهمیت دارد و قبل از اینکه موتورتان را راه‌اندازی کنید حتما از صحیح بودن تنظیمات این بخش مطمئن شوید.

تنظیمات tb6560

خوشبختانه تمام توضیحات مربوطه بر روی خود برد چاپ شده و نیاز نیست چیزی را به خاطر بسپارید. سه سوئیچ اول (SW1-SW2-SW3) به همراه سوئیچ s1 برای تنظیم جریان اعمالی به موتور استفاده می‌شوند. یک قابلیت جالب این درایور کنترل جریان موتور است. با تنظیم جریان با استفاده از سوئیچ‌ها می‌توانید مقدار دلخواهی جریان به موتور بدهید. با کنترل جریان می‌توانید گشتاور موتور را کنترل کنید. به بیان ساده، هرچه جریان بیشتری به موتور داده شود، قدرت آن بیشتر شده و البته فشار بیشتری به آن آمده و حرارت بیشتری نیز تولید می‌شود. قبل از تنظیم جریان حتما مطمئن شوید که موتور توانایی تحمل این مقدار جریان را دارد. اگر قدرت موتور برایتان اهمیتی ندارد و سرعت کاری بالایی ندارید، نیازی به بالا بردن جریان نیست. سوئیچ‌های s3 و s4 برای تنظیم میکرواستپ موتور است. این درایور می‌تواند موتور را با میکرواستپ تا ١/١٦ راه‌اندازی کند. سایر سوئیچ‌ها را در وضعیت صفر باقی بگذارید.
برای راه‌اندازی موتور با TB6560 پایه CLK+ و CW+ را به پین‌های ٣ و ٢ دیجیتال وصل کنید. در این قسمت من از یک موتور Nema17 و تغذیه 9V استفاده کرده‌ام.

مدار tb6560

 

کدنویسی برای این درایور تفاوتی با درایور A4988 ندارد؛ پس دست به کار شوید و برنامه‌ای برای آن بنویسید. برنامه من سرعت موتور را به آرامی زیاد کرده و سپس سرعت آن را کم می‌کند و در نهایت متوقف می‌شود.

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com
*/

#define stepPin 3
#define directionPin 2
#define stepsPerRevolution 200

void stepperRun(int steps, int speedRpm)
{
  if (steps < 0)
  {
    digitalWrite(directionPin, LOW);
    steps = abs(steps);
  }
  else
    digitalWrite(directionPin, HIGH);
  long fullStepTime = 1000000 * 60 / (stepsPerRevolution * speedRpm); // in microseconds
  for (int i = 0; i < steps; i++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(fullStepTime / 2);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(fullStepTime / 2);
  }
}

void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(directionPin, OUTPUT);
}

void loop()
{
  for (int i = 1; i < 10; i++)
    stepperRun(stepsPerRevolution * i / 4, 15 * i);
  for (int i = 9; i > 0; i--)
    stepperRun(stepsPerRevolution * i / 4, 15 * i);
  delay(3000);
}

کنترل دستی استپر موتور با کلید

در این قسمت قصد داریم به عنوان یک پروژه کوچک موتور Nema17 را با درایور A4988 به صورت دستی کنترل کنیم. برای این کار می‌خواهیم از دو کلید برای حرکت ساعتگرد و پادساعتگرد استفاده کنیم. کلیدها انواع مختلفی دارند اما همگی کار مشابهی انجام می‌دهند. کار کلید برقرار کردن اتصال الکتریکی بین دو پایه در صورت فشرده شدن است. در اینجا ما از یک کلید چهار پایه ساده استفاده کرده‌ایم. در کلیدهای چهار پایه، پایه‌های روبرو به یکدیگر وصل هستند؛ در واقع همان دو پایه در کلید موجود است و چهار پایه برای راحتی کار قرار داده شده‌اند. در صورتی که کلید فشرده شود، دو پایه آن به هم اتصال می‌یابند. یک پایه را به 5V و پایه دیگر را به یک پین دیجیتال آردوینو وصل کنید. به این ترتیب در صورت فشردن کلید ولتاژ High به آن پایه ارسال خواهد شد. پایه دوم را با یک مقاومت به GND وصل کنید. در این صورت زمانی که کلید فشرده نشده، مقدار Low به آردوینو فرستاده می‌شود.
اتصالات مدار A4988 مانند حالت قبل است. دو کلید را به پین‌های ٨ و ١٣ آردوینو وصل کنید. همین پایه کلیدها را با یک مقاومت 220Ω به زمین و پایه دیگر را به 5V وصل کنید.

 

مدار کنترل استپر موتور

 

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

/*
SanatBazar
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.sanatbazar.com
*/

#define stepPin 3
#define directionPin 2
#define stepsPerRevolution 200
#define forwardSwitch 8
#define backwardSwitch 13

void stepperRun(int steps, int speedRpm)
{
  if (steps < 0)
  {
    digitalWrite(directionPin, LOW);
    steps = abs(steps);
  }
  else
    digitalWrite(directionPin, HIGH);
  long fullStepTime = 1000000 * 60 / (stepsPerRevolution * speedRpm); // in microseconds
  for (int i = 0; i < steps; i++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(fullStepTime / 2);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(fullStepTime / 2);
  }
}

void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(directionPin, OUTPUT);
}

void loop()
{
  bool isforward = digitalRead(forwardSwitch);
  bool isbackward = digitalRead(backwardSwitch);
  if (isforward)
  {
    stepperRun(stepsPerRevolution / 8, 60);
    delay(1000);
  }
  else if (isbackward)
  {
    stepperRun(-stepsPerRevolution / 8, 60);
    delay(1000);
  }
}

پروژه کنترل استپر موتور


نتیجه‌گیری

در این آموزش با استپر موتور و درایورهای مختلفی برای راه‌اندازی آن و همچنین با کتابخانه استپر موتور آشنا شدید. همان طور که دیدید روش‌های راه‌اندازی، چه از نظر کدنویسی و چه از نظر سخت‌افزاری بسیار متنوع است. تازه این همه روش‌های ممکن نیست! اینکه شما از چه روشی - از تراشه کوچکی مثل L293D یا از درایور حرفه‌ای TB6560- استفاده کنید بستگی به نیاز و کاربرد شما دارد.
در آموزش بعدی، نحوه کار با ماژول کارت SD را خواهید آموخت.
نظرات شما باعث بهبود محتوای آموزشی ما می‌شود. اگر این آموزش را دوست داشتید، همین‌طور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.

خواندن 40044 دفعه
داوود درستکار

داوود درستکار دانش‌آموخته کارشناسی مهندسی مکانیک از دانشگاه صنعتی اصفهان و کارشناسی ارشد از دانشگاه تهران است. وی همچنین عضو تیم تحقیقاتی مرکز سیستمها و فناوریهای پیشرفته دانشگاه تهران (CAST) است. داود مسلط به طراحی و تحلیل سیستم‌های دینامیکی، طراحی و ساخت ربات، کنترل سیستم‌های غیرخطی و پیاده‌سازی سیستم‌های هوشمند با استفاده از آردوینو است. مهمترین علاقه او در حوزه رباتیک، پرنده‌های بدون سرنشین، رباتهای توانبخشی و ساخت تجهیزات هوشمندسازی و کنترل می‌باشد.

کاربرانی که در این گفتگو شرکت کرده اند

نظرات (60)

  1. سجاد بنائیان

سلام وقت بخیر ممنون از آموزش هاتون امکان داره فایل دانلود کتابخانه steeper رو با درایو a4988 که آموزشش رو قرار دادید برام ایمیل کنید
sajjad.banaian@gmail.com
ممنون میشم
با تشکر

 
  1. پشتیبانی    سجاد بنائیان

سجاد عزیز
اون درایور کتابخانه در این اموزش نداره و برنامه رو کپی کنید در Arduino IDE و اجرا کنید و موردی نداره.
موفق باشید

 
  1. محمد

سلام من استپر موتور با قیمت مناسب برای انجام پروژه دانشجویی میخواهم. لطفا گزینه هایی رو معرفی کنید.
(پروژه من یک پروژه بسیار سبک هست، استپر موتور باید توسط تسمه یک جسم (حدود 200 گرم) را که با بلبرینگ روی یک ریل است را حرکت دهد - دو استپر موتور...

سلام من استپر موتور با قیمت مناسب برای انجام پروژه دانشجویی میخواهم. لطفا گزینه هایی رو معرفی کنید.
(پروژه من یک پروژه بسیار سبک هست، استپر موتور باید توسط تسمه یک جسم (حدود 200 گرم) را که با بلبرینگ روی یک ریل است را حرکت دهد - دو استپر موتور دیگر هم لازم دارم که اجسام با وزن حدود 100 گرم را بتواند حرکت دهد)

ادامه مطلب
 
  1. پشتیبانی    محمد

سلام محمد عزیز
برای پروژتون می تونی از موتور های استپر زیر استفاده کنید:
https://b2n.ir/378079
https://b2n.ir/780164
همچنین سایر موتور های استپر رو در لینک زیر دنبال کنید:
https://b2n.ir/186946
در نهایت، برای خرید سایر قطعات مربوط با پروژه به...

سلام محمد عزیز
برای پروژتون می تونی از موتور های استپر زیر استفاده کنید:
https://b2n.ir/378079
https://b2n.ir/780164
همچنین سایر موتور های استپر رو در لینک زیر دنبال کنید:
https://b2n.ir/186946
در نهایت، برای خرید سایر قطعات مربوط با پروژه به لینک های زیر هم رجوع کنید:
شفت: https://b2n.ir/007439
ریل و واگن: https://b2n.ir/015738
تسمه: https://b2n.ir/852171
پولی: https://b2n.ir/435275
نگه‌دارنده شفت: https://b2n.ir/288767
بلبرینگ خطی: https://b2n.ir/035829
موفق باشید

ادامه مطلب
 
  1. ثابتی

سلام مهندس. ممنون از سایت خوبتون. من یک استپر ۶سیم و درایور tb6560 دارم.سیمهای موتور دوتا دوتا کنار هم هستند چطور بفهمم کدوم سیم به کجای درایور بسته بشه.یعنی دوسر سیم پیچ ها کدوم هستند .و تو مثال شما موتور ۴ سیم هست دوتا دیگه چی میشه.ممنون میشم...

سلام مهندس. ممنون از سایت خوبتون. من یک استپر ۶سیم و درایور tb6560 دارم.سیمهای موتور دوتا دوتا کنار هم هستند چطور بفهمم کدوم سیم به کجای درایور بسته بشه.یعنی دوسر سیم پیچ ها کدوم هستند .و تو مثال شما موتور ۴ سیم هست دوتا دیگه چی میشه.ممنون میشم راهنمایی کنید

ادامه مطلب
 
  1. پشتیبانی    ثابتی

سلام دوست عزیز
برای سیم بندی موتور 6 سیمه باید به صورت Half Coil Bipolar Configuration و یا Full Coil Bipolar Configuration عمل کنید که برای این منظور به دیتاشیت موتور مراجعه کنید. نمونه آموزش آن هم در لینک زیر نشان داده شده است:

ادامه مطلب
 
  1. علی معتقد

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

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

ادامه مطلب
 
  1. پشتیبانی    علی معتقد

سلام علی عزیز
من متاسفانه منظور شما از این پروژه رو متوجه نشدم که کنتاکت ها به چه صورتی هست. اگر بتونید تصویری و یا فیلم از پروژه مشابه و یا نقشه ای با توضیحات بیشتر در بخش انجمن (پرسش و پاسخ) همین سایت صنعت بازار مطرح کنید بیشتر میشه روی کار شما...

سلام علی عزیز
من متاسفانه منظور شما از این پروژه رو متوجه نشدم که کنتاکت ها به چه صورتی هست. اگر بتونید تصویری و یا فیلم از پروژه مشابه و یا نقشه ای با توضیحات بیشتر در بخش انجمن (پرسش و پاسخ) همین سایت صنعت بازار مطرح کنید بیشتر میشه روی کار شما بحث کرد. همچنین، اگر منظور از کنتاکت ها رله هست به آموزش زیر سایت صنعت بازار مراجعه کنید:
معرفی و راه‌اندازی انواع رله با آردوینو: https://b2n.ir/849491

در رابطه با سوال دوم هم باید Arduino IDE رو نصب کنید. برای اطلاعات کامل در رابطه با برد آردوینو و برنامه نویسی اون به آموزش زیر از همین سایت صنعت بازار و لینک قرار داده شده در ادامه مراجعه کنید:
آموزش جامع آردوینو (مبتدی و پیشرفته): https://b2n.ir/605438
موفق باشید

ادامه مطلب
 
  1. شادی

سلام
چجوری میشه تعداد دور چرخش استپ موتور در دقیقه در مدار محاسبه و نمایش داد ؟

 
  1. پشتیبانی    شادی

سلام شادی عزیز
برای این منظور باید تعداد stepperrevolution هایی که در برنامه به موتور وارد می کنید رو نمایش بدید که بسته به نوع برنامه ای که می نویسید داره. به عنوان مثال موتورهای استپر 1.8 درجه 200 استپ دارند که به ازای هر 200 stepperrevolution...

سلام شادی عزیز
برای این منظور باید تعداد stepperrevolution هایی که در برنامه به موتور وارد می کنید رو نمایش بدید که بسته به نوع برنامه ای که می نویسید داره. به عنوان مثال موتورهای استپر 1.8 درجه 200 استپ دارند که به ازای هر 200 stepperrevolution که اعمال می کنید 1 دور موتور چرخیده که می تونید در برنامه نمایش بدید.
موفق باشید

ادامه مطلب
 
  1. salar sabry

سلام چگونه میتونم خرابی یا سالم بودن درایو موتور TB6560 تست کنم لطفا کمک کنید

 
  1. پشتیبانی    salar sabry

سلام دوست عزیز
برای ابتدای کار با انواع برد های مختلف و موتورهای مختلف می تونید چک کنید و تک تک پایه های بردتون رو از لحاظ ولتاژی بررسی کنید که باید به دیتاشیت کامل برد مراجعه کنید. سپس می تونید دیتاشیت و نحوه عملکرد ای سی های روی برد رو بررسی...

سلام دوست عزیز
برای ابتدای کار با انواع برد های مختلف و موتورهای مختلف می تونید چک کنید و تک تک پایه های بردتون رو از لحاظ ولتاژی بررسی کنید که باید به دیتاشیت کامل برد مراجعه کنید. سپس می تونید دیتاشیت و نحوه عملکرد ای سی های روی برد رو بررسی کنید شاید مشکل رو بشه پیدا و برطرف کرد. همچنین به لینک زیر هم مراجعه کنید تا نحوه تعمیر برد رو متوجه بشید:
https://b2n.ir/612412
موفق باشید

ادامه مطلب
 
  1. عرفان

خیلی ممنون عالی بود
یه سوال داشتم
چطور ممکنه چه دو تا استپر موتور را همزمان و با دورهای متفاوت به حرکت در آورد؟؟؟

 
  1. پشتیبانی    عرفان

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

 
  1. حسین

سلام خسته نباشید
یه سوال
پایه های m1m2m3 چند ولت لازم دارن ۵ ولت بدیم مشکلی پیش نمیاد؟

 
  1. پشتیبانی    حسین

سلام حسین عزیز
برای تغییر میکرو استپینگ کافیه تا با استفاده از برد آردوینو این پایه هارو high و یا low کنید و نیاز به کنبع جدا ندارید.
موفق باشید

 
  1. رضا

سلام من استپ موتور نما 17 رو با a4988 راه اندازی کردم ولی موتورم اصلا حرکتی نمیکنه و درجا میلرزه
سیمکشی و برنامم هم درسته موتورمم هم سالمه
لطفا راهنماییم کنید

 
  1. رضا    پشتیبانی

پتانسیومتر رو تنظیم کردم ولی هیچ فرقی نکرد موتور اصلا نمیچرخه و فقط سوت میکشه چیکار کنم؟

 
  1. محمد    رضا

منبع تغذیه رو چک کنید که از نظر جریان دهی و ولتاژ مناسب برای این استپر باشه،اگه یه استپر موتور روش نوشته شده باشه مثلا با 5 ولت راه اندازی بشه،بسته به سرعتی که میخواین بچرخونیدش،حتی شاید به یه منبع با ولتاژ 24 ولت نیاز داشته باشید،برای تست این...

منبع تغذیه رو چک کنید که از نظر جریان دهی و ولتاژ مناسب برای این استپر باشه،اگه یه استپر موتور روش نوشته شده باشه مثلا با 5 ولت راه اندازی بشه،بسته به سرعتی که میخواین بچرخونیدش،حتی شاید به یه منبع با ولتاژ 24 ولت نیاز داشته باشید،برای تست این موضوع موتور رودر حالت خیلی کند درایو کنید مثلا 2 دور دردقیقه ،اگر شروع به چرخش کرد آروم آروم دور رو بالا ببرید ببینید کجا به حالت درجا زدن(استال) میرسه

ادامه مطلب
 
  1. پشتیبانی    رضا

سلام مجدد رضا عزیز
این که موتورها نویز ایجاد می کنن نشون میده سالم بوده و می خوان حرکت کنن. معمولا مشکل در تعریف اشتباه پین ها و جریان درایور و یا قطب های اشتباه موتورهاست. ممکنه مشکل از انجایی باشه که موتور می خواد بچرخه ولی سرعت کمی داره و این...

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

ادامه مطلب
 
  1. alihastam

سلام
ممنون از سایت خوبتون
میخوام با استپر موتور ،فوکوس و زوم برای دوربینم درست کنم
میخواستم بدونم چه موتوری به دردم میخوره و آیا استپر موتور نیازه و یا موتورهای عادی؟

 
  1. پشتیبانی    alihastam

سلام دوست عزیز

ممنون از لطف شما. بله هم استپر موتور برای کار شما مناسب است و هم سروو موتور. چون بار زیادی روی موتور قرار نمیگیره و چرخش زیادی هم برای زوم کردن ممکنه لازم نباشه پیشنهاد ما استفاده از سروو موتور هست.
نمونه ای از این کاربرد رو در...

سلام دوست عزیز

ممنون از لطف شما. بله هم استپر موتور برای کار شما مناسب است و هم سروو موتور. چون بار زیادی روی موتور قرار نمیگیره و چرخش زیادی هم برای زوم کردن ممکنه لازم نباشه پیشنهاد ما استفاده از سروو موتور هست.
نمونه ای از این کاربرد رو در لینک زیر میتونید مشاهده کنید.
https://bit.ly/3eBndDp

موفق باشید

ادامه مطلب
 
هیچ نظری در اینجا وجود ندارد
بارگذاری بیشتر ...

نظر خود را اضافه کنید.

ارسال نظر بعنوان یک مهمان
پیوست ها (0 / 3)
مکان خود را به اشتراک بگذارید
عبارت تصویر زیر را بازنویسی کنید. واضح نیست؟

محتوای آموزشی استفاده شده در این سایت محافظت شده می باشد و هرگونه کپی برداری از محتواهای تولید شده توسط تیم صنعت بازار موجب پیگرد خواهد بود. استفاده از مطالب صنعت بازار تنها با ذکر منبع به صورت لینک فعال بلامانع است

ما را دنبال کنید:

Copyright © 2017-2018 | Sanatbazar.com