ساخت ربات دنبالکننده خط با آردوینو UNO | آموزشگاه هادی - هادی روبو
آموزشگاه فنی و حرفه ای آزاد هادی (هادی روبو) – در این پروژه گامبهگام یک ربات دنبالکننده خط (Line Follower Robot) با استفاده از آردوینو UNO طراحی و ساخته میشود. این پروژه برای مبتدیان مناسب بوده و مباحث مهمی مانند سنسور IR، درایور موتور و برنامهنویسی آردوینو را پوشش میدهد.
زمان ساخت: ۲ تا ۳ ساعت | هزینه: حدود ۲۵ تا ۳۰ دلار | سطح دشواری: مبتدی تا متوسط
آنچه یاد میگیرید: نحوه کار با سنسور IR، کنترل موتور با درایور L293D، برنامهنویسی آردوینو، منطق تشخیص خط
فهرست مطالب
قطعات مورد نیاز
- آردوینو UNO – ۱ عدد
- درایور موتور L293D – ۱ عدد
- ماژول سنسور IR – ۲ عدد
- باتری ۷.۴ یا ۹ ولت – ۱ عدد
- موتور BO – ۲ عدد
- چرخ موتور – ۲ عدد
- چرخ کاستور – ۱ عدد
- شاسی ربات – ۱ عدد
- سیم و پیچ و مهره

اصول کار و بلوک دیاگرام
ربات دنبالکننده خط از خاصیت بازتاب نور استفاده میکند. سطح سفید نور را بیشتر بازتاب میدهد و سطح سیاه نور را جذب میکند. با استفاده از سنسورهای IR، این تفاوت تشخیص داده میشود. دو سنسور IR در سمت چپ و راست ربات قرار میگیرند و خط سیاه در میان آنها قرار دارد.

سنسور IR شامل یک فرستنده (LED مادونقرمز) و یک گیرنده (فتودیود) است. نور مادونقرمز به سطح تابیده میشود؛ در صورت برخورد با سطح سفید، نور بازتاب شده و توسط گیرنده تشخیص داده میشود، اما در صورت برخورد با سطح سیاه، نور جذب شده و تشخیص داده نمیشود. این اطلاعات به آردوینو ارسال شده و حرکت موتورها کنترل میشود.
منطق حرکت ربات
ربات دارای دو موتور چپ و راست است. بر اساس اطلاعات دریافتی از سنسورها، چهار حالت حرکت زیر تعریف میشود:
حرکت رو به جلو
هر دو سنسور روی سطح سفید هستند و خط بین آنها قرار دارد. هر دو موتور به سمت جلو حرکت میکنند.

چرخش به چپ
سنسور چپ روی خط سیاه و سنسور راست روی سطح سفید است. موتور چپ به عقب و موتور راست به جلو حرکت میکند.

چرخش به راست
سنسور راست روی خط سیاه و سنسور چپ روی سطح سفید است. موتور چپ به جلو و موتور راست به عقب حرکت میکند.

توقف
هر دو سنسور روی خط سیاه قرار دارند. هر دو موتور متوقف میشوند.

نقشه مدار
مدار از چهار بخش اصلی تشکیل شده است: دو سنسور IR، یک درایور موتور، دو موتور، یک آردوینو، یک باتری و چند سیم رابط. خروجی سنسورها به آردوینو رفته و پس از پردازش، دستورات لازم به درایور موتور ارسال میشود.

درایور موتور L293D
به دلیل اینکه جریان خروجی آردوینو برای راهاندازی مستقیم موتورها کافی نیست، از درایور موتور L293D استفاده میشود. این آیسی یک درایور H-bridge دوگانه است که میتواند دو موتور را در هر دو جهت کنترل کند.

اتصالات پایهها:
- پایههای ۱ و ۹ (Enable) به ۵ ولت
- پایههای 1A، 2A، 3A، 4A پایههای کنترل
- پایههای 1Y، 2Y، 3Y، 4Y اتصال به موتورها
- Vcc2 ولتاژ تغذیه موتورها

مقایسه درایورهای L293D و L298N
| ویژگی | L293D | L298N |
|---|---|---|
| جریان مجاز هر کانال | ۰.۶ آمپر | ۲ آمپر |
| محدوده ولتاژ | ۴.۵ تا ۳۶ ولت | ۵ تا ۳۵ ولت |
| مدیریت حرارت | متوسط | بهتر (دارای هیتسینک) |
| هزینه | پایینتر (۲ تا ۳ دلار) | بالاتر (۳ تا ۵ دلار) |
| مناسب برای | موتورهای کوچک BO | موتورهای بزرگتر |
در صورت استفاده از درایور L298N، نقشه اتصالات به شکل زیر خواهد بود:

مونتاژ ربات
مراحل مونتاژ به ترتیب زیر انجام میشود:
- موتورهای BO را با چسب حرارتی روی شاسی قرار دهید.
- درایور موتور را روی شاسی نصب کرده و سیمهای موتور را به خروجی درایور متصل کنید.
- سنسورهای IR را در زیر شاسی قرار دهید و فاصله آنها از سطح زمین را تنظیم کنید.
- آردوینو UNO را روی شاسی نصب کنید.
- اتصالات الکتریکی را مطابق نقشه انجام دهید.
- باتری را روی شاسی قرار دهید.
- چرخ کاستور را در قسمت جلو یا عقب شاسی نصب کنید.
- چرخها را روی موتورها سوار کنید.





کد برنامه آردوینو
برنامه این ربات بسیار ساده است و از توابع پایه آردوینو استفاده میکند. ابتدا پایههای ورودی و خروجی تعریف میشوند:
#define enA 5 // پایه Enable موتور چپ
#define in1 6 // ورودی 1 موتور چپ
#define in2 7 // ورودی 2 موتور چپ
#define in3 9 // ورودی 1 موتور راست
#define in4 10 // ورودی 2 موتور راست
#define enB 8 // پایه Enable موتور راست
#define R_S 4 // سنسور راست
#define L_S 2 // سنسور چپ
void setup() {
pinMode(R_S, INPUT);
pinMode(L_S, INPUT);
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(enB, OUTPUT);
digitalWrite(enA, HIGH);
digitalWrite(enB, HIGH);
}
void loop() {
if ((digitalRead(R_S) == 0) && (digitalRead(L_S) == 0)) {
forward();
}
if ((digitalRead(R_S) == 1) && (digitalRead(L_S) == 0)) {
turnRight();
}
if ((digitalRead(R_S) == 0) && (digitalRead(L_S) == 1)) {
turnLeft();
}
if ((digitalRead(R_S) == 1) && (digitalRead(L_S) == 1)) {
Stop();
}
}
void forward() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void turnRight() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void turnLeft() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void Stop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
تست و کالیبراسیون
پس از مونتاژ و بارگذاری کد، ربات را روی سطح سیاه قرار دهید (هر دو سنسور روی سیاه) و مقاومت متغیر روی ماژول IR را تنظیم کنید تا LED خروجی خاموش شود. سپس ربات را روی سطح سفید قرار دهید و بررسی کنید که LED روشن شود. در صورت نیاز، تنظیمات را تکرار کنید.


عیبیابی
در صورت بروز مشکل، موارد زیر را بررسی کنید:
- ربات خط را دنبال نمیکند: کالیبراسیون سنسور IR را تنظیم کنید.
- حرکت نامنظم: ولتاژ باتری را بررسی کنید؛ باتری باید بین ۷.۴ تا ۹ ولت باشد.
- ربات دور خود میچرخد: جهت اتصال موتورها را بررسی کرده و در صورت نیاز سیمها را عوض کنید.
- ربات حرکت نمیکند: پایههای Enable درایور موتور و اتصالات برق را چک کنید.
- خط را در پیچها از دست میدهد: ارتفاع سنسورها را روی حدود ۵ میلیمتر تنظیم کنید.
ارتقاء و تغییرات
پس از راهاندازی اولیه، میتوانید پروژه را به روشهای زیر بهبود دهید:
- کنترل PID: افزودن کنترل تناسبی-انتگرالی-مشتقی برای حرکت نرمتر و دقیقتر
- کنترل سرعت: افزودن پتانسیومتر برای تنظیم سرعت موتورها
- نمایشگر LCD: اضافه کردن صفحه نمایش ۱۶×۲ برای نمایش وضعیت سنسورها و سرعت
- سنسورهای بیشتر: افزودن سنسور سوم یا سنسور اولتراسونیک برای تشخیص موانع
سوالات متداول
ربات دنبالکننده خط چیست و چگونه کار میکند؟
ربات دنبالکننده خط یک ربات خودکار است که مسیری مشخص (معمولاً خط سیاه روی زمینه سفید) را دنبال میکند. با استفاده از سنسورهای IR، تفاوت بازتاب نور بین سطح سیاه و سفید را تشخیص داده و حرکت خود را تنظیم میکند.
چه قطعاتی برای ساخت ربات دنبالکننده خط نیاز است؟
آردوینو UNO، دو سنسور IR، درایور موتور L293D، دو موتور DC گیربکسدار (۶۰ تا ۱۰۰ دور در دقیقه)، چرخ، شاسی، باتری ۷.۴ یا ۹ ولت و سیمهای رابط.
کدام سنسور IR برای ربات دنبالکننده خط مناسب است؟
ماژول TCRT5000 به دلیل برد تشخیص خوب (۲ تا ۳۰ سانتیمتر)، قابلیت تنظیم حساسیت و سازگاری با ولتاژ ۵ ولت آردوینو بسیار مناسب است. در این پروژه از ماژولهای عمومی IR استفاده شده است.
چرا به درایور موتور نیاز داریم؟
خروجی پایههای آردوینو توان کافی برای راهاندازی مستقیم موتورهای DC را ندارد. درایور موتور جریان و ولتاژ مورد نیاز را تأمین کرده و از آردوینو در برابر آسیب محافظت میکند.
چگونه عملکرد ربات را بهبود ببخشیم؟
با افزودن کنترل PID، تنظیم ارتفاع سنسورها (حدود ۵ میلیمتر)، اطمینان از ولتاژ مناسب باتری و بهینهسازی کد برنامه.
آیا ربات میتواند خطوط با رنگهای مختلف را تشخیص دهد؟
سنسورهای IR معمولی برای خطوط سیاه روی زمینه سفید طراحی شدهاند. برای تشخیص رنگهای دیگر باید از سنسورهای رنگی مانند TCS230 استفاده کرد که پیچیدگی و هزینه را افزایش میدهد.
جمعبندی از آموزشگاه فنی و حرفه ای آزاد هادی (هادی روبو)
تمام مراحل این پروژه در آموزشگاه فنی و حرفه ای آزاد هادی با رویکرد عملی و پروژهمحور تدریس میشود. با ساخت این ربات دنبالکننده خط، مباحث کلیدی مانند سنسور IR، درایور موتور L293D، برنامهنویسی آردوینو و منطق کنترل مسیر را بهصورت کاربردی فرا خواهید گرفت.
نظرات (0)
پیام بگذارید