آموزش راه اندازی موتور با شیلد L293D آردوینو
مقدمه
در این آموزش نحوه راه اندازی موتورهای dc، استپر و سروو را به کمک یک برد آردوینو را خواهید آموخت.
آنچه در این آموزش یاد می گیرید
- آشنایی با موتورهای dc، استپر و سروو
- آشنایی با شیلد L293D
- راه اندازی موتورهای DC، استپر و سروو

موتورها و درایورها
لازم به ذکر است هر کانال این شیلد 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
برای شروع بخش کد نویسی، ابتدا باید کتابخانه Adarfruit Motor Shield Library را در نرم افزار آردوینو IDE نصب کنید.
برای اینکار، وارد بخش Sketch->Include Library-> Manage Libraries شوید و عنوان کتابخانه را در قسمت جستجو تایپ کنید.
قبل از نصب کتابخانه، دقت کنید که نسخه 1 این کتابخانه را دانلود کنید. نسخه 2 با این شیلد درایور موتور سازگاری ندارد.

#include <AFMotor.h>
Arduino
کتابخانه مورد نیاز برای راه اندازی موتورها.
AF_DCMotor motor(1, MOTOR12_64KHZ)
Arduino
تعریف موتور dc مورد استفاده.
آرگومان اول شماره موتور در شیلد و آرگومان دوم فرکانس کنترل سرعت موتور است که برای موتور 1 و 2 می تواند MOTOR12_64KHZ ، MOTOR12_8KHZ ، MOTOR12_2KHZ و MOTOR12_1KHZ و برای موتورهای 3 و 4 می تواند MOTOR12_64KHZ ، MOTOR12_8KHZ و MOTOR12_1KHZ باشد. در صورتی که بدون مقدار رها شود بصورت پیش فرض 1KHZ را لحاظ می کند.
motor.setSpeed(200);
Arduino
تعیین سرعت موتور، می تواند از 0 تا 255 مقدار بگیرد.
void loop() {
motor.run(FORWARD);
delay(1000);
motor.run(BACKWARD);
delay(1000);
motor.run(RELEASE);
delay(1000);
}
Arduino
تابع motor.run() مشخص کننده وضعیت حرکت موتور می باشد و در سه مود FORWARD، BACKWARD و RELEASE کار می کند. وضعیت RELEASE همان ترمز است ولی تا ایست کامل موتور ممکن است کمی طول بکشد. بهتر است به هر پایه موتور خازن 100 نانو لحیم کنیم تا نویز را کاهش دهیم.
راه اندازی سرووموتور

برای راه اندازی سرووموتور کتابخانه و مثال های موجود در Arduino IDE مناسب است.
#include <servo.h>
Arduino
تعریف کتابخانه مورد نیاز
Servo myservo;
Arduino
تعریف شی سروو موتور
void setup() {
myservo.attach(9);
}
Arduino
تعیین پایه متصل به سروو (برای سروو#1 پایه 9 و برای سروو #2 پایه 10)
void loop() {
myservo.write(val);
delay(15);
}
Arduino
تعیین مقدار دوران موتوربسته به نوع موتور از 0 تا 360 یا از 0 تا 180.
راه اندازی استپر موتور

#include <AFMotor.h>
Arduino
تعریف کتابخانه مورد نیاز.
AF_Stepper motor(48, 2);
Arduino
تعریف شی استپ موتور. آرگومان اول رزولوشن گام موتور(بعنوان مثال موتور شما دارای دقت 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);
}فروشگاه