پروژه ی کنترل موتور دی سی با جوی استیک و آردوینو و L293D
به نام خدا
پروژه ی کنترل موتور دی سی با جوی استیک و آردوینو و L293D

در این پست چگونگی کنترل سرعت و جهت چرخش یک موتور DC با استفاده از جوی استیک و درایور L293D را نشان خواهیم داد.
جوی استیک شامل دو پتانسیومتر (یکی برای محور X و دیگری برای محور Y) و یک دکمه است .
با یک پتانسیومتر، ما می توانیم سرعت و جهت چرخش یک موتور DC را کنترل کنیم. درایور L293D به ما اجازه می دهد که دو موتور را در هر دو جهت حرکت دهیم ، با دو خروجی PWM از آردوینو ما می توانیم به راحتی سرعت و همچنین جهت چرخش یک موتور DC را کنترل کنیم. (PWM: مدولاسیون عرض پالس ).
قطعات مورد نیاز کنترل موتور دی سی با جوی استیک و آردوینو و L293D :
- برد آردوینو UNO
- موتور 12V DC
- ماژول جوی استیک
- آی سی درایور موتور L293D
- منبع تغذیه 12V
- برد برد
- سیم برد بردی
مدار کنترل موتور دی سی با جوی استیک و آردوینو و L293D:
آی سی درایور L293D دو ورودی تغذیه دارد : VCC1 تغذیه 5 ولت است و VCC2 ورودی 12 ولت است ( ولتاژ نامی موتور ) . پین های IN1 و IN2 پین های کنترل هستند که نحوه مقدار دهی آنها در پایین آمده است :
| IN1 | IN2 | عملکرد |
| L | H | جهت 1 |
| H | L | جهت2 |
| L | L | توقف سریع موتور |
| H | H | توقف سریع موتور |
همانطور که در دیاگرام مداری نشان داده شد ، ما فقط به سه پین از پین های آردوینو نیاز داریم : A0 ( پین آنالوگ ) ، پین 9 و 10. پین های 9 و 10 خروجی های سیگنال PWM هستند در هر لحظه فقط یک خروجی PWM فعال است . این به ما اجازه ی کنترل جهت چرخش موتور را می دهد همانطور که با تغییر زمان وظیفه ( duty cycle ) می توانیم سرعت موتور را کنترل کنیم. پین PWM فعال ، مسیر جهت چرخش را تعیین می کند (خروجی PWM دیگر منطق 0 است) .
کد های آردوینو :
دانلود کد برنامه کنترل موتور دی سی با جوی استیک و آردوینو و L293D:
[maxbutton id=”200″ url=”http://avatrobo.ir/wp-content/uploads/2018/03/Arduino-DC-motor-control-with-joystick-and-L293D.txt” ]
// Arduino joystick DC motor speed and rotation direction control
#define joystick A0
#define pwm1 9
#define pwm2 10
int motor_control;
void setup() {
pinMode(pwm1, OUTPUT);
pinMode(pwm2, OUTPUT);
}
void loop() {
motor_control = analogRead(joystick);
motor_control >>= 1;
if(motor_control > 255){
digitalWrite(pwm2, 0);
analogWrite(pwm1, (motor_control - 256));
}
else
if(motor_control < 255){
digitalWrite(pwm1, 0);
analogWrite(pwm2, (255 - motor_control));
}
else{
digitalWrite(pwm1, 0);
digitalWrite(pwm2, 0);
}
}
پست های مرتبط
اردیبهشت 9, 1398
اسفند 5, 1397
بهمن 2, 1397
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام در کد نویسی معرفی محیط از چه روشی استفاده کنم
کد آردوینو هست باید با IDE آردوینو کار کنید دوست عزیز