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