مقدمه
آنچه در این آموزش یاد می گیرید
- آشنایی با موتورهای dc، استپر و سروو
- آشنایی با شیلد L293D
- راه اندازی موتورهای DC، استپر و سروو
موتورها و درایورها
چگونه از شیلد موتور L293D آردوینو استفاده کنیم؟
راه اندازی موتور DC
برای شروع بخش کد نویسی، ابتدا باید کتابخانه Adarfruit Motor Shield Library را در نرم افزار آردوینو IDE نصب کنید.
برای اینکار، وارد بخش Sketch->Include Library-> Manage Libraries شوید و عنوان کتابخانه را در قسمت جستجو تایپ کنید.
قبل از نصب کتابخانه، دقت کنید که نسخه 1 این کتابخانه را دانلود کنید. نسخه 2 با این شیلد درایور موتور سازگاری ندارد.

#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);
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()
Comments (4)
باسلام ببخشید میشه واضح توضیح بدید که در شیلد برای موتورها دقیقا کدام پایه ها اشغال میشه مثلا من میخوام از پایه M1 برای موتور استفاده کنم کدام پین های آردوینو رو باید فعال کنم؟
ممنون ازتون
با سلام وقت بخیر
به طور مثال برای راه اندازی یک موتور DC با این شیلد، شما باید پین های مربوط به شیف رجیستر که شامل LATCH,CLK,ENABLE,DATA هستند رو به ترتیب به پین های 12,4,7,8 وصل کنید و همچنین جهت اعمال پالس PWM به شیلد جهت راه اندازی موتور باید پین 11 آردوینوکه مربوط به TIMER2A هست رو کانکت کنید.
سلام من نمیتوانم فایل AFMotor رو از برنامه پیدا کنم اگه میشه بگید کدومه
با سلام
از این لینک می توانید اقدام به دانلود لایبراری مربوطه کنید.