روبات مسیریاب
نگاهی به گذشته
من در هنرستان رازي طي دو سال
مسابقات روباتيک را برگزار کردم. سال اول مسابقه جنگ روبات ها که در آن بچه ها
با روبات هايي که مجهز به ابزارهايي جهت از بين بردن روبات دشمن داشتن بود. با
يکديگر مبارزه مي کردند. سال بعد مسابقه روباتهای دنبال کننده خط برگزار شد. که
در آنجا از ميکروکنترلر 8951 جهت کنترل روبات استفاده کرديم. البته روبات ها در
دو کلاس مختلف ساخته شدند. کلاس اول روبات ها فقط از روي يک خط مسير را دنبال
مي کردند. کلاس بعدي روبات ها در مسيري حرکت مي کردند که از دو خط موازی تشکیل
شده بود و روبات می بایستی از بین این دو
خط عبور می کرد. من در سال بعد از آن
دوره آموزش روبوکاپ را در دبيرستان سما4 واقع در تهران را برگزار نمودم که در
اين دوره از ميکرو کنترلر ATmega8 از خانواده
AVR جهت کنترل روبات استفاده نمودم.
شرح عملکرد روبات
روباتي که در اينجا تصميم به تو ضيح نحوه ساخت آنرا دارم بروي
زمينه سفيد بدنبال خط مشکي حرکت ميکند. ميکروکنترلر مورد استفاده در روبات
ATmega8 می باشد. و کدهای برنامه روبات با استفاده از
نرم افزار BASCOM ایجاد شده اند.
روبات شامل
دو موتور در طرفين خود مي باشد، که جهت حرکت به جلو هر دو موتور را روشن مي
کند، زمان دور زدن به چپ موتور سمت چپ خاموش و موتور سمت راست روشن مي شود و
برای دور زدن به سمت راست موتور سمت راست خاموش و موتور سمت چپ روشن می شود.
البته موتورهای بکار رفته DC موتور بوده و جهت کاهش
سرعت و در نتیجه کنترل دقیق تر روبات از موتورهايي با گیربکس سرخود استفاده
شده، که قیمت آن در بازار جمهوری تهران 7000 تومان است در صورتی که به
این نوع موتور دسترسی ندارید ميتوانید از موتورهای اسباب بازی گیربکس دار
استفاده کنید، در غير اين صورت بايستي خودتان گیربکس را بسازيد دقت داشته باشيد
که دور نهايي چرخش چرخهاي روبات 60 دور بر دقیقه باشد.
برای تشخيص
مسير از دو LED پر نور استفاده شده که سطح مسير حرکت را
روشن مي کنند و انعکاس نور به فتو رزيستورهای قرار گرفته در زیر روبات برخورد
مي کند. اگر روبات روی خط باشد مقدار نور منعکس شده حداقل بوده و در نتيجه
مقدار مقاومت آن افزايش ميابد و ولتاژ دو سر آن افزايش مي يابد و میکروکنترلر
از روی اين تغيير ولتاژ متوجه وجود خط مي گردد.(در غیر اين صورت نور منعکس شده
زياد بوده، مقدار مقاومت فتورزيیستور کاهش ميابد و ولتاژ دوسر آن کاهش
ميابد.)پس همانطور که ذکر شد میکرو کنترلر تغييرات ولتاژ فتورزيستور را احساس
ميکند. من براي اين کار از مبدل های درونی آنالوگ به ديجیتال ميکرو استفاده
کردم. البته دو عدد فتورزیستور به همراه دو LED
جهت تشخیص طرفین مسير استفاده شده.
برنامه روبات به زبان BASIC
نوشته شده در محیط BASCOM
$regfile =
"m8def.dat"
$crystal =
8000000
Config
Portd =
Output
'Portd used for control motor
Config Adc
= Single
, Prescaler = Auto
Start Adc
'Start Analog to Digital Converter
Dim S1
As Word
'S1 Right Sensor
Dim S2
As Word
'S2 Left Sensor
Portd = 0
Wait 3
Do
S1 = Getadc(3)
'Read Sensor 1
S2 = Getadc(5)
'Read Sensor 2
'portd.0
right motor
If S2 >
400 Then Set
Portd.0
If S2 <
300 Then Reset
Portd.0
'portd.2 left motor
If S1 >
400 Then Set
Portd.2
If S1 <
300 Then Reset
Portd.2
Loop
End
'end program |
.::ليست قطعات مدار روبات::.
--میکرو
کنترلر ATmega8 یک عدد
--آی سی
رگولاتور7805 یک عدد
--آی سی
ULN2803 یک عدد
--موتور 5
ولتی با گیربکس و دور بر دقیقه 60 دو عدد
--رله 5 ولتی
دو عدد
--دیود
1N4001 دو عدد
--مقاومت
10کیلو اهمی دو عدد
--مقاومت 330
اهمی دو عدد
--فتورزیستور
کوچک دو عدد
--دیود
نورانی سفید پر نور دو عدد
--خازن 330
میکروفاراد دو عدد
--برد هزار
سوراخ 11.5 در 6.5 سانتی متر
.::ليست قطعات مکانیک روبات::.
--چرخ
ماشین اسباب بازی کوچک دو عدد
--فولی ضبط
صوت جهت چرخ وسط یک عدد
--پیچ اسپیسر
(Spacer) سه سانتی به همراه مهره چهار عدد
--ترمینال
برق چهار خانه یک عدد
--تخته سه لا
12 در 12 سانتی متر
مراحل ساخت مکانیک روبات