⚙️ درایور موتور L293D (L293D Motor Driver)
| اسم انگلیسی | L293D Motor Driver |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | ⬛ آیسی، درایور و رگولاتور |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
درایور موتور L293D (L293D Motor Driver) یک آیسی شانزدهپایه است که داخلش دو پل H (H-Bridge) دارد؛ یعنی دو موتور DC را جدا از هم، در هر دو جهت و با سرعت قابل تنظیم میچرخاند. آردوینو فقط فرمان میدهد (چند میلیآمپر) و L293D جریان سنگین موتور را از یک باتری جدا تأمین میکند. ماشین رباتیک، ربات مسیریاب، در کشویی و پنکهی دوجهته کارهای همیشگیاش هستند.
L293D در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی L293D را ندارد و موتور DC معمولی هم در فهرست قطعههایش نیست. ولی منطق کنترل را میشود همانجا تست کرد: بهجای IN1 و IN2 دو wokwi-led (با مقاومت) به پینهای 8 و 7 بزن و یک LED سوم بهجای EN روی پین 9. با اجرای کد پایین میبینی کدام جهت فعال است و نور LED سوم با PWM کم و زیاد میشود. اگر حرکت واقعی میخواهی، نزدیکترین چیز در ووکوی wokwi-stepper-motor با درایور wokwi-a4988 است که موتور پلهای است، نه DC.
خود L293D همراه موتور و باتری در پروژهی پل اچ تینکرکد فارسی رایگان شبیهسازی میشود و موتور واقعاً جلو و عقب میچرخد.
سیمکشی با آردوینو
| پایهی L293D | شماره | وصل به |
|---|---|---|
| EN1,2 | ۱ | پین 9 (PWM، سرعت موتور A) |
| IN1 | ۲ | پین 8 |
| OUT1 | ۳ | یک سر موتور |
| GND | ۴، ۵، ۱۲، ۱۳ | GND آردوینو و منفی باتری موتور (مشترک) |
| OUT2 | ۶ | سر دیگر موتور |
| IN2 | ۷ | پین 7 |
| VCC2 (تغذیهی موتور) | ۸ | مثبت باتری موتور، مثلاً ۶ تا ۹ ولت |
| VCC1 (تغذیهی منطق) | ۱۶ | 5V آردوینو |
| EN3,4، IN3، IN4، OUT3، OUT4 | ۹، ۱۰، ۱۵، ۱۱، ۱۴ | موتور دوم به همین شکل (مثلاً EN به پین 10 و INها به 6 و 5) |
جدول منطق ساده است: IN1 بالا و IN2 پایین یعنی یک جهت، برعکسش یعنی جهت دیگر، و دو ورودی برابر یعنی ایست. پایهی EN هم مثل شیر آب است؛ PWM روی آن سرعت را تعیین میکند.
کد نمونه
// L293D: one DC motor, forward / stop / reverse with speed control.
const int EN_A = 9; // PWM -> speed
const int IN1 = 8;
const int IN2 = 7;
void drive(int speed) { // -255 .. 255
if (speed > 0) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
} else if (speed < 0) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
} else {
digitalWrite(IN1, LOW); // both LOW = motor stops
digitalWrite(IN2, LOW);
}
analogWrite(EN_A, constrain(abs(speed), 0, 255));
}
void setup() {
pinMode(EN_A, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
for (int s = 0; s <= 255; s += 5) { // speed up, forward
drive(s);
delay(40);
}
drive(0);
delay(800);
drive(-180); // reverse at about 70%
delay(1500);
drive(0);
delay(800);
}
اشتباههای رایج
- زمین مشترک نیست: اگر منفی باتری موتور به GND آردوینو وصل نباشد، فرمانها مرجع ندارند و موتور بیقاعده رفتار میکند.
- موتور از 5V آردوینو: جریان راهاندازی موتور ولتاژ برد را پایین میکشد و آردوینو مدام ریست میشود. VCC2 را به باتری جدا بده.
- انتظار ولتاژ کامل باتری: حدود دو ولت روی خود آیسی میافتد؛ با باتری ۶ ولت موتور حدود ۴ ولت میگیرد.
- کتابخانهی Servo و پینهای 9 و 10: روی اونو، Servo تایمر ۱ را میگیرد و
analogWriteروی این دو پین کار نمیکند. در ربات سروودار، EN را به پینهای 5 و 6 بده.
آموزشهای مرتبط
- پل H با L293D در ۱۵ مدار پایهی الکترونیک
- موتور گیربکسی ربات
- موتور DC در ووکوی
- درس موتور جلو و عقب
- پروژهی ماشین رباتیک
سؤالهای رایج
L293D چند آمپر جریان میدهد؟
حدود ۶۰۰ میلیآمپر پیوسته برای هر کانال و تا حدود ۱٫۲ آمپر بهصورت لحظهای. برای موتورهای گیربکسی کوچک ربات کافی است؛ برای موتورهای پرجریانتر سراغ درایورهای ماسفتی برو.
فرق L293D با L293 چیست؟
حرف D یعنی دیودهای محافظ (هرزگرد) داخل خود آیسی هستند. با L293 بدون D باید برای هر خروجی خودت دیود بگذاری تا ولتاژ برگشتی موتور آیسی را نسوزاند.
ووکوی L293D دارد؟
تا جایی که میدانیم نه. منطق جهت و PWM را میتوانی با چند LED در ووکوی تست کنی و مدار کامل با موتور و باتری را در شبیهساز تینکرکد فارسی رایگان ببینی.