فایل پروژه روبات میکرو ماز
ربات شما باید بتواند در کمترین فضا دور بزند و بچرخد ، همچنین اندازه ان باید کوچک باشد تا به دیوراه های ماز برخورد نکند .
در برنامه ای که برای پردازنده ربات مینویسید ، باید کلیه شرایط را برای ربات تعریف کنید ، ممکن گاهی وقت ها چند مسیر جلوی ربات باشد که فقط یکی از انها ربات را به مقصد برساند ، برنامه شما باید انقدر قوی باشد که ربات مسیر درست را انتخاب کند .
برای ربات های میکرو موس الگاریتم ها و روش های مختلفی ارائه شده است که در ادامه انها را بررسی میکنیم

ربات میکرو موس از بخش های زیر تشکیل میشود :
- بدنه ربات
- مدار تغذیه
- قسمت حرکت
- بخش سنسور ها و فرمان
- پردازنده و برنامه نویسی
بدنه ربات :
بدنه ربات باید محکم و سبک باشد و بتواند وزن دیگر اجزا را تحمل کند،همچنین باید دارای قسمت های برای بستن چرخ ها،موتورها باشد. در بخش ربات های مسیریاب در مورد بدنه بحث شد.
مدار تغذیه :
برای تغذیه مدار میتواند از برق مستقیم یا باطری استفاده نمایید،در این قسمت در مورد تغذیه ربات با باطری،توضیح داده میشود (تغذیه با برق مستقیم در بخش ربات مسیریاب) بهترین نوع باطری برای تغذیه ربات ها باطری های ni-cd میباشد. معمولا ولتاژ مورد نیاز برای پردازنده و سنسورها،۵ ولت و ولتاژ مورد نیاز برای موتورها بین ۱۰ تا ۱۲ ولت است،برای ساختن یک منبع تغذیه با باطری،روشهای مختلفی وجود دارد که در زیر هر یک را مطرح میکنیم و مزایا و معایب ان را بررسی میکنیم:
(با فرض اینکه ولتاژ کار پردازنده ۲٫۷ تا ۵٫۵ ولت و ولتاژ کار موتور ها ۱۲ ولت است)
معایب:
- به فضای زیادی جهت گذاشتن باطری ها نیاز داریم ( در صورتی که از باطری های ۱٫۵ ولتی استفاه کنید باید تعداد ۱۳ عدد از انها را در ربات خود بگذارید)
- باطری ها سنگین هستند ، برای حرکت ربات به موتور های پرقدرت نیاز هست که باعث بالا رفت مصرف باطری و.. میشود .
- شارژ کردن ۱۳ عدد باطری وقت زیادی میگیرد و ممکن است بعضی از انها خوب شارژ نشوند.
مزایا :
استفاده از ۸ عدد باطری ۱٫۵ ولتی که با هم سری شده اند .
در این روش میتوان ولتاژ تغذیه پردازنده را از سه باطری اول و تغذیه موتور ها را از کل باطری ها گرفت .
معایب:
- در این روش چون از سه باطری اول جریان بیشتری کشیده میشود ، خطر افت ولتاژ انها وجود دارد ( در مواقعی که ربات مسیر طولانی را طی میکند )
- در صورتی که از موتور و باطری نامرغوب استفاده شود ، ولتاژ باطری در لحظه راه اندازی موتور ها افت میکند و باعث ریست شدن پردازنده میشود .
- ممکن است بعضی از باطری ها به خوبی باطری های دیگر شارژ نشوند و در هنگام کار ربات مشکل ساز شوند.
مزایا :
- هزینه ی کمتر جهت تعویض باطری ها (همه انها با هم خراب نمیشوند)
- وجود شارژر های اماده
- تنوع در نوع باطری (از نظر جریان دهی)
از انجا که ربات شما فقط چند بار (چند بار تست و یک مسابقه) کار میکند و شما توانای پرداخت انواع هزینه ها را دارید ، پس روش بالا روش مناسبی نیست .
تغذیه مدار
در مدار بالا فقط از یک باطری برای تامین ولتاژ ربات استفاده شده است (عدم نیاز به فضا زیاد و کم شدن وزن ربات )، ولتاژ این باطری ۱۲ ولت است و باید توان جریان دهی حداقل ۱ امپر / ساعت را داشته باشد . تا وقتی که ولتاژ باطری بالای ۷٫۵ ولت است مشکلی برای پردازنده پیش نمی اید چون ولتاژ ورودی رگولاتور میتواند تا ۱٫۵ برابر ولتاژ خروجی کاهش یابد (با کم شدن ولتاژ باطری فقط توان و سرعت چرخش موتور ها کم میشود و ولتاژ تغذیه پردازنده همچنان ثابت است ) و کار شما تارسیدن به این میزان تمام است و شما برنده مسابقه شده اید. در صورتی که با استفاده از باطری وزن و ابعاد ربات شما بزرگ میشود ، از منبع تغذیه خارجی استفاده کنید (طرز کار در قسمت ربات مسیر یاب اورده شده است )
قبل از اینکه به بررسی دیگر اجزای این ربات بپردازیم ، اجازه دهید اندکی در مود الگوریتم ان صحبت کنیم ، بررسی الگوریتم به شما اجازه میدهد ، بهترین سخت افزار را انتخاب کنید .
الگوریتم های که برای یک میکرو موس وجود داره در زیر اورده شده است :
۱- دنبال کردن دیوار ها (دست کشیدن)
۲- مادون قرمز (کنترل مسیر های موجود)
۳- شمارش گردش ها
۴- فاصله یابی
۵- پردازش تصویر
۶- مرکب
نام های که در بالا دیدید رو من برای الگوریتم ها انتخاب کردم ، اصل الگوریتم که در زیر توضیح داده میشه در همه جا یکی هست و فقط ممکنه اسم اون فرق کنه :
دنبال کردن دیوار ها (دست کشیدن) :
این روش برای ماز های که پیچیده نیستند پیشنهاد میشود .
اشکالی که این روش دارد این است که رسیدن ربات به مقصد بیشتر به شانس شما بستگی دارد تا رباتتان.
ساده ترین برنامه ای که میتوان برای این ربات نوشت در زیر اورده شده است :
$crystal = 1000000
Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Output
Config Portb.3 = Output
Do
Set Portb.2
Set Portb.3
If Pinb.0 = 1 Then
Reset Portb.2
Wait 1
End If
If Pinb.1 = 1 Then
Reset Portb.3
Wait 1
End If
Loop
End