آموزش راه اندازی موتور با شیلد L293D آردوینو

فهرست مطالب

مقدمه

در این آموزش نحوه راه اندازی موتورهای dc، استپر و سروو را به کمک یک برد آردوینو را خواهید آموخت.

آنچه در این آموزش یاد می گیرید

موتورها و درایورها

لازم به ذکر است هر کانال این شیلد 630 میلی آمپر(در حالت ماکزیمم 1.2 آمپر) بیشتر جریان نمی دهد و ولتاژ های کمتر از 4.5 ولت و بیشتر از 25 ولت را نیز نمی پذیرد، پس در انتخاب نوع موتور و جریان و ولتاژ مورد نیاز برای راه اندازی آن دقت می کنیم. از دیگر مزایای این شیلد می توانیم به سازگاری کامل با آردوینو UNO ، آردوینو Mega ،  محافظت الکترومغناطیسی و حرارتی از موتور و قطع مدار در صورت افزایش نامتعارف ولتاژ، اشاره کرد.
لازم به ذکر است هر کانال این شیلد 630 میلی آمپر(در حالت ماکزیمم 1.2 آمپر) بیشتر جریان نمی دهد و ولتاژ های کمتر از 4.5 ولت و بیشتر از 25 ولت را نیز نمی پذیرد، پس در انتخاب نوع موتور و جریان و ولتاژ مورد نیاز برای راه اندازی آن دقت می کنیم. از دیگر مزایای این شیلد می توانیم به سازگاری کامل با آردوینو UNO ، آردوینو Mega ،  محافظت الکترومغناطیسی و حرارتی از موتور و قطع مدار در صورت افزایش نامتعارف ولتاژ، اشاره کرد.

چگونه از شیلد موتور L293D آردوینو استفاده کنیم؟

درهنگام استفاده از شیلد 6 پایه آنالوگ(که می توانند بصورت دیجیتال نیز کار کنند) و پایه 2 و پایه 13 کاملا آزاد است. درصورت استفاده از سروو 1 پایه 9 و سروو 2 پایه 10 اشغال است. در صورت اسفاده از موتور dc برای #1 پایه 11 ، #2 پایه 3، #3 پایه 5 و #4 پایه 6 در هرکدام پایه های 4، 7، 8 و 12 اشغال هستند. در صورت استفاده از موتور استپر  #1 پایه های 11 و 3 و برای #2 پایه های 5 و 6 و در هرکدام پایه های 4، 7، 8 و 12 اشغال هستند. از پایه های آزاد بورد می توانید با اتصال سیم استفاده کنید. به این نکته دقت کنید که اگر تغذیه بورد آردوینو و شیلد را بصورت جداگانه اعمال کرده اید حتما جامپر موجود روی شیلد را بردارید. LED موجود برروی شیلد نشانگر تغذیه موتور dc یا استپر متصل است، اگر تغذیه بدرستی متصل نباشد این LED روشن نخواهد بود.

راه اندازی موتور DC

#include <AFMotor.h>

کتابخانه مورد نیاز برای راه اندازی موتورها.

AF_DCMotor motor(1, MOTOR12_64KHZ)

تعریف موتور dc مورد استفاده.

آرگومان اول شماره موتور در شیلد و آرگومان دوم فرکانس کنترل سرعت موتور است که برای موتور 1 و 2 می تواند MOTOR12_64KHZ ، MOTOR12_8KHZ ، MOTOR12_2KHZ و MOTOR12_1KHZ و برای موتورهای 3 و 4 می تواند MOTOR12_64KHZ ، MOTOR12_8KHZ و MOTOR12_1KHZ باشد. در صورتی که بدون مقدار رها شود بصورت پیش فرض 1KHZ را لحاظ می کند.

motor.setSpeed(200);

تعیین سرعت موتور، می تواند از 0 تا 255 مقدار بگیرد.

void loop() { 
motor.run(FORWARD); 
delay(1000); 
motor.run(BACKWARD); 
delay(1000); 
motor.run(RELEASE); 
delay(1000); 
}
تابع motor.run() مشخص کننده وضعیت حرکت موتور می باشد و در سه مود FORWARD، BACKWARD و RELEASE کار می کند. وضعیت RELEASE همان ترمز است ولی تا ایست کامل موتور ممکن است کمی طول بکشد. بهتر است به هر پایه موتور خازن 100 نانو لحیم کنیم تا نویز را کاهش دهیم.

راه اندازی سرووموتور

برای راه اندازی سرووموتور کتابخانه و مثال های موجود در Arduino IDE مناسب است.

#include <servo.h>

تعریف کتابخانه مورد نیاز

Servo myservo;

تعریف شی سروو موتور

void setup() {

 myservo.attach(9);

 }

تعیین پایه متصل به سروو (برای سروو#1 پایه 9 و برای سروو #2 پایه 10)

void loop() {

 myservo.write(val);

 delay(15);

 }

تعیین مقدار دوران موتوربسته به نوع موتور از 0 تا 360 یا از 0 تا 180.

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

#include <AFMotor.h>

تعریف کتابخانه مورد نیاز.

AF_Stepper motor(48, 2);
تعریف شی استپ موتور. آرگومان اول رزولوشن گام موتور(بعنوان مثال موتور شما دارای دقت 7.5 deg/step می باشد این یعنی رزولوشن گام موتور شما 360/7.5=48 می باشد.) آرگومان دوم شماره استپر موتور متصل به شیلد.
void setup() {
motor.setSpeed(10);
motor.onestep(FORWARD, SINGLE);
motor.release();
delay(1000);
}

void loop() {
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);

motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);

motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);

motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}

تعیین سرعت موتور برحسب rpm.

حرکت به اندازه یک گام.

شروع حرکت موتور، آرگومان اول مقدار گام مورد نیاز برای حرکت، آرگومان دوم جهت حرکت FORWARD یا BACKWARD و آرگومان سوم نوع گام ها بصورت  SINGLE(فعالسازی یک کویل)  DOUBLE(فعالسازی دو کویل برای گشتاور بیشتر) ،  INTERLEAVED(تغییر مداوم مقدار کویل ها از یک به دو و برعکس برای دوبرابر کردن دقت، البته در این حالت سرعت نصف می شود) و  MICROSTEP(تغییر گام ها برای دقت  بیشتر به آرامی صورت می گیرد در این حالت گشتاور پایین تر است)

بصورت پیشفرض بعد از اتمام حرکت موتور وضعیت خود را حفظ می کند، برای رهاسازی موتور باید از تابع استفاده کنید.

motor.release()

شیلد درایور موتور L239D آردوینو بخرید

پروژه های مشابه

آموزش های مشابه

Comments (4)

  • بهنام Reply

    باسلام ببخشید میشه واضح توضیح بدید که در شیلد برای موتورها دقیقا کدام پایه ها اشغال میشه مثلا من میخوام از پایه M1 برای موتور استفاده کنم کدام پین های آردوینو رو باید فعال کنم؟
    ممنون ازتون

    اکتبر 30, 2022 at 10:26 ب.ظ
    • علی عبدالملکی Reply

      با سلام وقت بخیر
      به طور مثال برای راه اندازی یک موتور DC با این شیلد، شما باید پین های مربوط به شیف رجیستر که شامل LATCH,CLK,ENABLE,DATA هستند رو به ترتیب به پین های 12,4,7,8 وصل کنید و همچنین جهت اعمال پالس PWM به شیلد جهت راه اندازی موتور باید پین 11 آردوینوکه مربوط به TIMER2A هست رو کانکت کنید.

      اکتبر 31, 2022 at 9:44 ق.ظ
  • امیر Reply

    سلام من نمیتوانم فایل AFMotor رو از برنامه پیدا کنم اگه میشه بگید کدومه

    اکتبر 11, 2023 at 7:00 ب.ظ
    • محمد دمیرچی Reply

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

      اکتبر 14, 2023 at 8:41 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.