🚗 موتور گیربکسدار (موتور زرد TT) (TT Gear Motor)
| اسم انگلیسی | TT Gear Motor |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | ⚙️ موتور و حرکت |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
موتور گیربکسدار (Gear Motor)، و معروفترینش موتور زرد TT، یک موتور DC کوچک است که یک جعبهدندهی پلاستیکی به آن چسبیده؛ دور زیاد موتور را کم میکند و در عوض زورش را چند ده برابر. تقریباً همهی کیتهای ماشین رباتیک، ربات مسیریاب و ربات مانعگریز با دو تا از همین موتورها حرکت میکنند.
موتور گیربکسدار در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد؛ موتور DC و درایور L293D هم در فهرستش نیستند. برای تمرین منطق جلو و عقب، دو wokwi-led با مقاومت روی پینهای ۷ و ۸ بگذار و یکی هم روی پین ۵: دو LED اول جهت را نشان میدهند و سومی با شدت نورش سرعت را.
مدار واقعی، یعنی موتور گیربکسدار و درایور L293D با جاباتری، در تینکرکد فارسی هم در حالت ساده (2D) و هم در حالت آردوینو (3D) رایگان شبیهسازی میشود؛ پروژهی ماشین رباتیک را باز کن.
سیمکشی با آردوینو
شمارهها شمارهی پایههای آیسی L293D است؛ پایهی ۱ کنار فرورفتگی نیمدایرهی بدنه است.
| پایهی قطعه | وصل به |
|---|---|
| موتور، سیم ۱ | خروجی 1Y (پایهی ۳ L293D) |
| موتور، سیم ۲ | خروجی 2Y (پایهی ۶) |
| 1,2EN (پایهی ۱) | پین 5 آردوینو (PWM، سرعت) |
| 1A (پایهی ۲) | پین 7 (جهت) |
| 2A (پایهی ۷) | پین 8 (جهت) |
| VCC1 (پایهی ۱۶) | 5V آردوینو (منطق) |
| VCC2 (پایهی ۸) | مثبت جاباتری ۶ ولت (موتور) |
| GND (پایههای ۴، ۵، ۱۲ و ۱۳) | GND آردوینو و منفی جاباتری |
نسخهی «D» این آیسی دیودهای محافظ را داخل خودش دارد، پس دیود جدا لازم نیست. موتور دوم ربات به نیمهی دیگر آیسی میرود (پایههای ۹ تا ۱۵) و همین کد را با سه پین دیگر تکرار میکنی.
کد نمونه
// TT gear motor through an L293D: forward, brake, reverse, coast.
// Wiring: 1,2EN (L293D pin 1) -> 5, 1A (pin 2) -> 7, 2A (pin 7) -> 8,
// motor on 1Y/2Y, VCC1 -> 5V, VCC2 -> 6 V battery, grounds shared
const int MOTOR_EN = 5; // PWM = speed
const int IN_A = 7;
const int IN_B = 8;
void drive(int speed) { // -255..255, the sign is the direction
if (speed >= 0) {
digitalWrite(IN_A, HIGH);
digitalWrite(IN_B, LOW);
} else {
digitalWrite(IN_A, LOW);
digitalWrite(IN_B, HIGH);
}
analogWrite(MOTOR_EN, constrain(abs(speed), 0, 255));
}
void brake() { // both inputs equal + enabled = hard stop
digitalWrite(IN_A, LOW);
digitalWrite(IN_B, LOW);
analogWrite(MOTOR_EN, 255);
}
void coast() { // enable off = the motor spins down freely
analogWrite(MOTOR_EN, 0);
}
void setup() {
pinMode(MOTOR_EN, OUTPUT);
pinMode(IN_A, OUTPUT);
pinMode(IN_B, OUTPUT);
}
void loop() {
drive(200); delay(2000);
brake(); delay(500);
drive(-150); delay(2000);
coast(); delay(1500);
}
فرق brake و coast در عمل حس میشود: ترمز، دو سر موتور را به یک ولتاژ میبندد و چرخ تقریباً درجا میایستد؛ رها کردن، موتور را آزاد میگذارد تا با شتاب خودش بایستد. برای ربات مانعگریز معمولاً ترمز بهتر است.
اشتباههای رایج
- موتورهای آینهای: یکی از دو موتور برعکس میچرخد؛ سیمهایش را جابهجا کن یا در کد علامتش را عوض کن.
- تغذیهی موتور از 5V آردوینو: جریان شروع دو موتور برد را ریست میکند. VCC2 همیشه به جاباتری جدا برود.
- جابهجا کردن VCC1 و VCC2: منطق آیسی ولتاژ اشتباه میگیرد و موتور یا نمیچرخد یا آیسی داغ میشود.
- PWM خیلی کم: موتور با بار ربات زیر حدود ۱۰۰ از ۲۵۵ معمولاً تکان نمیخورد؛ حداقل سرعت را در کد رعایت کن.
آموزشهای مرتبط
- موتور DC، همان موتور بدون گیربکس
- ۱۵ مدار پایهی الکترونیک، با بخش پل H و L293D
- فاصلهسنج HC-SR04، چشم ربات مانعگریز
سؤالهای رایج
موتور زرد TT با چند ولت کار میکند؟
معمولاً ۳ تا ۶ ولت. جاباتری چهارتایی قلمی (۶ ولت) رایجترین انتخاب است. L293D خودش حدود ۱٫۵ تا ۲٫۵ ولت افت دارد، پس موتور عملاً کمتر از ولتاژ باتری میبیند.
چرا ماشین رباتیک من بهجای مستقیم رفتن دور خودش میچرخد؟
در ماشین دوچرخ، دو موتور آینهای نصب شدهاند؛ اگر به هر دو فرمان «جلو» بدهی، یکی برعکس میچرخد. جای دو سیم یکی از موتورها را عوض کن یا در کد جهتش را برعکس کن.
ووکوی موتور گیربکسدار دارد؟
تا جایی که میدانیم نه. منطق جهت و سرعت را میشود با دو LED روی پینهای جهت تمرین کرد. خود موتور گیربکسدار و درایور L293D در تینکرکد فارسی رایگان شبیهسازی میشوند.