آموزش آردوینو: درس پانزدهم (موتور DC - بخش دوم)

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

سری آموزش آردوینو: درس پانزدهم

در این درس شما یاد خواهید گرفت که چگونه جهت چرخش و سرعت یک موتور DC کوچک را از طریق برد آردوینو و تراشه درایور موتور  L293D کنترل کنید.

آموزش آردوینو: درس چهاردهم(سروو موتور)

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

قطعات مورد استفاده:

 

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

1 عدد
برد بورد 1 عدد
میکروسوئیچ-pushbutton 1 عدد
موتور DC کوچک 6V 1 عدد
مقاومت متغییر 10 کیلو اهم 1 عدد
L293D 1 عدد
سیم اتصال به برد بورد 1 بسته


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

از برد آردوینو فقط برای تامین توان 5V موتور استفاده می شود.

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

اتصالات مدار را مطابق شکل زیر انجام دهید. آردوینو همچنان به عنوان تامین کننده توان عمل می کند.

سه تا از پین های تراشه L293D مورد توجه می باشند. پین1 (Enable)، پین2 (In1) و پین7 (In2). این پین ها توسط سیم های بنفش، زرد و نارنجی به +5V و GND متصل شده اند.

با توجه به نحوه اتصالات مطابق شکل بالا، موتور در یک جهت که به طور مثال A نام گذاری شده است، می چرخد.

اگر پین1 (Enable) به GND متصل شود، موتور متوقف می شود و تغییر دادن دو پین دیگر هیچ تاثیری در آن نخواهد داشت. می توان از این پین به عنوان خروجی PWM استفاده کرده و سرعت موتور را کنترل کرد. مجددا پین1 را به +5V متصل کنید، موتور مجددا شروع به کار خواهد کرد.

حال پین2 (In1) را از 5V به GND متصل کنید، در این حالت هر دو پایه In1 و  In2 به GND متصل می باشند، لذا مجددا موتور متوقف خواهد شد.

با جابه جا کردن پین7 (In2) از GND به 5V جهت چرخش موتور تغییر خواهد کرد( جهت B).

در نهایت با برگرداندن In1 به 5V، هر دوپایه In1  و  In2 به 5V متصل بوده و موتور خاموش خواهد شد.

 

اکنون برنامه اصلی برای کنترل موتور را پیاده سازی کنید، اجازه دهید که آردوینو پین های Enable، In1 و In2 را کنترل کند. وقتی اتصالات را انجام می دهید، مطمئن شوید که تراشه به طور درست در جایگاه خود قرار گرفته باشد.

برنامه زیر را روی برد آپلود کنید:

 

int enablePin = 11;

int in1Pin = 10;

int in2Pin = 9;

int switchPin = 7;

int potPin = 0;

 

void setup()

{

  pinMode(in1Pin, OUTPUT);

  pinMode(in2Pin, OUTPUT);

  pinMode(enablePin, OUTPUT);

  pinMode(switchPin, INPUT_PULLUP);

}

 

void loop()

{

  int speed = analogRead(potPin) / 4;

  boolean reverse = digitalRead(switchPin);

  setMotor(speed, reverse);

}

 

void setMotor(int speed, boolean reverse)

{

  analogWrite(enablePin, speed);

  digitalWrite(in1Pin, ! reverse);

  digitalWrite(in2Pin, reverse);

}

نحوه عملکرد برنامه را در ویدئو زیر می توانید مشاهده کنید:

 

 

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

در حلقه Loop یک متغییر برای سرعت موتور تعیین شده که مقادیر خوانده شده از ورودی آنالوگ ابتدا بر 4 تقسیم شده و سپس در آن ذخیره می شوند. این تقسیم نیز به این خاطر است که، مقادیر ورودی آنالوگ اعدادی بین 0 تا 1023 بوده ولی مقادیر خروجی آنالوگ باید اعدادی بین 0 تا 255 باشند.

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

مقادیر متغییرهای speed و  reverse  به تابعی به نام setMotor منتقل شده و از آن طریق به پین های مورد نظر در درایور موتور منتقل می شوند.

void setMotor(int speed, boolean reverse)

{

  analogWrite(enablePin, speed);

  digitalWrite(in1Pin, ! reverse);

  digitalWrite(in2Pin, reverse);

}

در ابتدا مقدار سرعت از طریق دستور analogWrite به پین enable منتقل خواهد شد. جهت چرخش نیز با توجه به مقادیر صحیحی که پین های in1 و in2 دریافت می کنند تنظیم می شود.

اگر in1 در وضعیت high و پین in2 در وضعیت low قرار داشته باشد، موتور در یک جهت خواهد چرخید و اگر وضعیت پین ها برعکس شود، جهت چرخش پین ها نیز تغییر خواهد کرد. با توجه به علامت ! همواره مقادیر پین های in1 و in2 معکوس یکدیگر خواهد بود.

تراشه L293D:

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

تراشه L293D دارای دو پایه برای اتصال به ولتاژ مثبت می باشد (8 و 16). پین +Vmotor  (8) توان موتور و پین +V (16) توان تراشه را تامین می کند. در این جا هر دوی آنها به +5V آردوینو متصل شده اند. در صورتی که از موتوری استفاده می کنید که توان بالایی دارد، لازم است که از یک منبع قوی تر خارجی استفاده کرده و سر مثبت آن را به پایه 8 تراشه متصل کنید و سر منفی آن را با منفی برد آردوینو یکی کنید.

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

آموزش آردوینو: درس شانزدهم(استپر موتور)


 

ترجمه شده و تکمیل توسط صنعت بازار | منبع : adafruit.com

 

خواندن 4312 دفعه

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

نظرات (2)

  1. مهدی

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

 
  1. Nima21

سلام <br />بخوام دو تا تراشه l293 استفاده کنم و سه موتور DC برنامه نویسی و اتصالات به برد چطوره؟ <br />ممنون

 
هیچ نظری در اینجا وجود ندارد

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

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

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

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

Copyright © 2017-2018 | Sanatbazar.com