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

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

این مطلب بخش دوازدهم از آموزش جامع آردوینو (مبتدی و پیشرفته) است. در این قسمت قصد داریم به یکی از تجهیزات مهم در کارهای اتوماتیک به نام استپر موتور (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 را خواهید آموخت.
نظرات شما باعث بهبود محتوای آموزشی ما می‌شود. اگر این آموزش را دوست داشتید، همین‌طور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.

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

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

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

نظرات (47)

  1. عرفان

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

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

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

 
  1. حسین

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

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

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

 
  1. رضا

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

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

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

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

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

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

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

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

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

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

 
  1. پشتیبانی    alihastam

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

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

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

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

موفق باشید

ادامه مطلب
 
  1. جواد

سلام
ببخشید من اطلاعات زیادی در زمینه مهندسی ندارم. فقط سوالی که دارم اینه که برای راه اندازی استپر موتور با لپ تاپ، استپر موتور نما 17 مدل 17HD4006 با درایور tb6600، از این برد آردینو که بیان شده (UNOR3) و منبع تغذیه 12 ولت 5 آمپر، میتوان...

سلام
ببخشید من اطلاعات زیادی در زمینه مهندسی ندارم. فقط سوالی که دارم اینه که برای راه اندازی استپر موتور با لپ تاپ، استپر موتور نما 17 مدل 17HD4006 با درایور tb6600، از این برد آردینو که بیان شده (UNOR3) و منبع تغذیه 12 ولت 5 آمپر، میتوان استفاده کرد؟
آیا تمام قطعات مورد نیاز که شما در بالا بیان کردید لازم هست؟ لطفا هرآنچه که برای راه اندازی یک استپر موتور با لپ تاپ لازم هست بفرمایید تا سفارش خرید بدهم.
ممنون.

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

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

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

موفق باشید

 
  1. محمد مهدی

سلام
من با درایور a4988 استپر رو راه‌اندازی کردم اما یه مشکلی هست
سیمی که از آردوینو به پایه‌ی step وصل کردم خیلی به نویز حساس هست
یعنی اگر فاصله‌ی دستم با سیم کمتر از ۵ سانتی متر بشه موتور حرکات عجیب و غریبی میکنه
ممکنه درایور من خراب شده باشه؟
چ...

سلام
من با درایور a4988 استپر رو راه‌اندازی کردم اما یه مشکلی هست
سیمی که از آردوینو به پایه‌ی step وصل کردم خیلی به نویز حساس هست
یعنی اگر فاصله‌ی دستم با سیم کمتر از ۵ سانتی متر بشه موتور حرکات عجیب و غریبی میکنه
ممکنه درایور من خراب شده باشه؟
چون بیش از حد داغ میشه میگم
تشکر

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

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

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

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

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

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

سلام امین عزیز
کار سختی نیست. کافیه که هر کدوم از پایه های step و dir هر درایور رو به یک پایه دیجیتال آردوینو وصل کنید. سپس در ابتدای برنامه هر کدوم از این پینها رو مانند مثال تعریف کنید. بعد از اون باید تغییری توی تابع stepperRun ایجاد کنید که...

سلام امین عزیز
کار سختی نیست. کافیه که هر کدوم از پایه های step و dir هر درایور رو به یک پایه دیجیتال آردوینو وصل کنید. سپس در ابتدای برنامه هر کدوم از این پینها رو مانند مثال تعریف کنید. بعد از اون باید تغییری توی تابع stepperRun ایجاد کنید که ساده ترین راهش اینه که شماره پین step و dir رو هم به عنوان ورودی به تابع بدین. با این تغییر میتونید توی حلقه loop با همون تابع به هر کدوم از موتورهاتون فرمان بدین. فراموش نکنید که توی حلقه setup هم پایه ها رو به عنوان خروجی تعریف کنید.
اگه به مشکلی برخوردید حتما دوباره بپرسید
موفق باشید

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

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

 
  1. علی

سلام من دقیقا همین موتور پنج سیم رو با همین سیم نواری که یک خط قرمز روش داره رودارم ومیخوام اونو به ماژول l293d متصل کنم یه بار دو سیم اول رو به ترمینال یک و دووصلکردم و سه و چهارو هم به ترمینال چهار وپنج وسیمی هم که نوار قرمز داشت رو همبیخیال...

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

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

سلام علی عزیز
موتوری که در این آموزش استفاده شده، موتور چهار سیم هست. میشه بگید دقیقا از چه موتوری استفاده کردید؟ همون طوری که میدونید استپر موتورها با اینکه طرز کار کلی شون مثل هم هست اما انواعی دارند که از نظر نوع اتصالات و تعداد سیم ها هم...

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

ادامه مطلب
 
  1. زمانی

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

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

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

سلام دوست عزیز
نرم افزارهایی وجود داره که میتونید باهاشون داده های دریافتی از آردوینو رو باهاشون ذخیره کرد. مثلا:
parallax data acquisition tool
RealTerm: Serial/TCP Terminal
Java Serial Tools

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

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

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

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

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

Copyright © 2017-2018 | Sanatbazar.com