آموزش ساخت ربات مسیر یاب
ربات مسیریاب رباتی است که می تواند در یک مسیر از قبل تعیین شده حرکت کند ، این مسیر میتواند یک خط سیاه در زمینه سفید یا یک خط سفید در زمینه سیاه باشد. یا مخلوتی از هر دو باشد .ربات باید بتواند انواع مسیرهای موجود مانند پیچ، بریدگی، خطوط زاویه دار و مهم تر از همه حلقه را در کمترین زمان ممکن طی کند .
![[تصویر: LineTrack.gif]](http://rossum.sourceforge.net/sim/LineTrack.gif)
ساخت ربات های مسیر یاب کاری نسبتا ساده میباشد ، برای ساخت ربات شما نیاز به دانش برنامه نویسی برای پردازنده و رباتیک برای ساخت قسمت متحرک دارید ، شما همچنین باید طریقه کار با سنسور ها را بدانید ، در ادامه شما را با کلیه مراحل ساخت ربات مسیر یاب اشنا میکنیم .
یک ربات مسیر یاب از بخش های کلی زیر تشکیل میشود که در ادامه هر یک را بررسی میکنیم :
بدنه ربات
مدار تغذیه
قسمت حرکت
بخش سنسور ها و فرمان
پردازنده و برنامه نویسی
بدنه ربات:
برای بدنه ربات ، شما میتوانید از هر جسمی استفاده کنید اما این جسم باید دارای شرایط زیر باشد:
- سبک باشد
- محکم باشد
- امکان سوار کردن اجزا روی ان وجود داشته باشد.
- امکان ایجاد تغیر در شکل ان باشد .
-جمع جور باشد.
با توجه به مطالب بالا بهترین گزینه برای بدنه ربات پلاستیک میباشد ، شما میتوانید از شاسی ماشین های اسباب بازی یا از شاسی های اماده موجود در بازار استفاده کنید . در یک ربات معمولا پردازنده و قسمت فرمان در وسط بدنه ، موتور ها در طرفین ، سنسور ها در جلو ، و باطری در عقب قرار میگیرد . همچنین کلیه اجزا توسط پیچ و مهره یا چسپ حراراتی یا .. (بهتر است از پیچ و مهره استفاده شود )محکم به بدنه چسبانده میشوند . برای حفاظت از پردازنده در مقابل نویز یک روکش فلزی روی قسمت فرمان قرار میگیرد . همچنین برای جلوگیری از دستگاری مدارات و اجزای ربات حتما برای بدنه یک روکش مناسب تهیه کنید ، بطوری که فقط چرخ ها بیرون باشد و بس .
>>>> من خودم از برد ربات به عنوان بدنه استفاده میکنم و همه اجزا رو محکم روی فیبر لحیم میکنم
توجه >>>
1- از انجا که در هنگام حرکت ، ربات لرزش خفیفی دارد ف به هیچ وجه از چسب حراراتی برای جسابندن موتور ها و سایر قطعات استفاده نکنید ، در صورت استفاده از پیچ مهره حتما از مهره فنر در زیر مهره استفاده شود .
مدار تغذیه :
برای تغذیه ربات میتوانید از ولتاژ مستقیم منبع تغذیه DC و یا از باطری استفاده نمایید که در این قسمت طریقه استفاده از منبع تغذیه DC گفته میشود (طریقه استفاده از باطری در قسمت ربات میکرو موس توضیح داده شده است )
از انجا که ولتاژ ورودی شما از یک منبع تغذیه گرفته میشود ، شما باید نصبت به صاف و رگوله بودن ان اطمینان حاصل کنید . ممکن است شما خود را برای یک مسابقه اماده کنید و در مکان مسابقه یک منبع تغذیه بدون اصل ونصب در اختیار شما قرار گیرد ، که به ازای ولتاژ 12 ولت ، 14 ولت با نوسان زیاد میدهد ، بنابرای باید خودتان دست به کار شوید و برای رباتتان یک بخش تغذیه مجزا بسازید . معمولا ولتاژ تغذیه موتور ها 12 ولت و ولتاژ تغذیه پردازنده و سنسور ها و ... 5 ولت میباشد .
شما میتوانید از یک رگولاتور 12 و 5 ولت مطابق شکل زیر استفاده کنید :
[attachment=32]
توجه >>>>>
به هیچ عنوان ورودی تغذیه رگولاتور 5 ولت را از خروجی رگولاتور 12 نگیرید ، این کار علاوه بر ایجاد گرما در رگولاتور 12 ولت باعث افت ولتاژ در خروجی ان میشود .
ولتاژ ورودی مدار بالا میتواند از 12 تا 15 ولت متغیر باش و در صورتی که از مدار بالا استفاده نکنید ، نوسانات ولتاژ باعث خرابی پردازنده و تغییر قدرت و سرعت موتور ها میشود .
برای اینکه ربات خود را در برابر ولتاژ معکوس (برعکس بودن پلاریته ی ورودی ) حفظ کنید میتوانید از یک پل دیود در ورودی استفاده نمایید
در قسمت بعدی در مورد قسمت حرکت بحث خواهیم کرد
به محض اینکه مشکل پیوست حل بشه ، تصاویر رو هم میزارم
قسمت حرکت :
این قسمت در اقلب ربات ها مشتر ک هست و بسته به امکانات موجود میتوانید از هر روش استفاده کنید .
1- سیستم حرکت چهار چرخ (اگه اسمش این نیست بگید )
در این روش ربات دارای چهار چرخ میباشد ، چرخ های سمت راست توصط چرخدنده های به هم متصل شده اند ، دو چرخ سمت چپ نیز همین گونه اند ، برای گردش ربات ، چرخ های یک سمت برعکس میچرخند ، مثلا فرض کنید ربات به سمت راست گردش میکند ، در این صورت چرخ های سمت راست ، برعکس میچرخد ، چرخ های سمت چپ نیز به صورت عادی گردش میکند .
![[تصویر: 4iczgg9.jpg]](http://i18.tinypic.com/4iczgg9.jpg)
2- استفاده از چرخ هرز گرد :
این روش متداولترین روش جایگزاری چرخ ها است ، در این روش دو عدد موتور به دو چرخ عقب متصل میشود ، در قسمت جلو یک عدد چرخ هرز گرد بسته میشود ، برای چرخش به چپ متور سمت چپ خاموش و موتور سمت راست روشن میماند ، برای گردش به سمت دیگر نیز برعکس .
![[تصویر: robat1.jpg]](http://www.knowclub.com/%20paper/images/robat1.jpg)
![[تصویر: AVR_line_following_robot.jpeg]](http://www.embedds.com/wp-content/uploads/2008i/0803/AVR_line_following_robot.jpeg)
3-روش معمولی ، در این روش مانند سیستم حرکتی اتوموبیل ، یک موتور وظیفه چرخواندن چرخ های عقب را به عهده دارد، همچنین یک پرخ زاویه دو چرخ جلو را کنترل مینماید .
[img]www.machinescience.org/.../ gallery/RC_Robot2.gif[/img]
مواد استفاده شده در سیستم حرکتی :
1- سیستم کنترل (پردازنده ) در مورد پردازنده در بخش اخر بحث میشود .
2-درایو موتور :
ازدرایور ها برای افزایش جریان و ولتاژ اعمالی به موتور و همچنین جدا کردن ان از بخش کنترل استفاده میشود .
راه اندازه های زیادی برای کنترل موتور ها وجود دارد که در زیر به بررسی دو مورد از نها یعنی uln2003 و l298 میپردازیم :
uln2003 :
حداکثر جریان خروجی این درایو 500 میلی امپر میباشد و ولتاژ خروجی ان به میزان ولتاژ تغذیه موجود بین پایه گراند ایسی و سیم مشترک موتور است و میتواند حداکثر 50 ولت باشد ، ولتاژ ورودی ان نیز حداکثر 30 ولت است و ایسی از ورودی جریان 25 میلی امپر را به ازای بیشترین ولتاژ میکشد.
این درایو قادر به ران اندازی تعداد 7 موتور میباشد . پایه های 1 تا 7 ورودی و پایه های 10 تا 16 خروجی های قطعه هستند ، همچنین پایه 8 گراند و پایه 9 ولتاژ مثبت است که باید با ولتاژ مثبت موتور ها یکی باشد
با استفاده از این درایو فقط میتوان چرخش یا عدم چرخش موتور را کنترل کرد
l298 در بخش ربات های میکرو موس بررسی می شود.
بخش سنسور ها و فرمان :
این قسمت از ربات باید بتواند خط مشکی را از سفید تشخیص دهد ، بنا به نوع خط و عرض ان و نوع مسیر از سنسور ها مختلف با چیدمان مختلف استفاده میشود :
سنسور ها :
در ربات های مسیر یاب از سنسور ها مادون قرمز برای تشخیص مسیر استفاده میشود ،
![[تصویر: cny70.gif]](http://www.roboeq.com/img_s/cny70.gif)
میدانید که سطح سفید نور را دفع و سطح مشکی نور را جذب میکند ، نور از led فرستنده منتشر میشود ، در صورتی که سطح سفید باشد ، نور به گیرنده میرسد و ان را یک میکند در غیر اینصورت خروجی گیرنده صفر است :
معرفی دو نوع سنسور مادون قرمز خوب :
اپتوکانتر CNY70
![[تصویر: 0401006.gif]](http://roboeq.com/img_s/0401006.gif)
اپتوکانتر TCRT5000 :
![[تصویر: 0401001.gif]](http://roboeq.com/img_s/0401001.gif)
از انجا که در هر دو قطعه بالا فرستنده وگیرنده در یک پک میباشند ، جایگزاری انها در ربات بسیار ساده است ،
اکنون شما باید خروجی سنسور را اندازه بگیرید ، برای اینکار دو راه دارید ، یا خروجی را به adc بدهید و ولتاژش را اندازه بگیرید ، یا ولتاژ خروجی را به سطح منطقی صفر ویک تبدیل کنید :
در صورتی که از روش اول استفاده میکنید op-amp را حذف نمایید .
چیدمان سنسور ها :
شما باید سنسور ها را بر روی یک بورد با ارایشی خاص بسته به نوع مسیر بچینید .
انواع مسیر ها :
1- مسیر ها تک رنگ ، چیدمان سنسور ها برای این نوع مسیر بسار ساده میباشد ، در این نوع مسیر از 3 سنسور استفاده میشود ، سنسور وسط ، وظیفه چک کردن مسیر و دو سنسور کناری وظیفه چک کردن زمینه را به عهده دارد . در صورتی که ربات از روی خط منحرف شود ، سنسور وسط خروجی خود را تغییر میدهد ، در این حالت ربات صبر میکند تا یکی از سنسور ها کناری نیز تغییر وضعیت دهد و به سمت همان گردش کند .
مثلا ربات در مسیر خود مشغول حرکت هست ، در ادامه یک پیچ به سمت راست وجود دارد ، هنگامی که ربات به پیچ میرد ، به دلیل تغییر مسیر خروجی سنسور وسط تغییر میکند ، ربات به حالت اماده باش میرود ، با ادامه یافتن حرکت ، سنسور سمت راست از روی مسیر رد میشود ، در این ربات میفهمد که باید به سمت راست گردش کند .
2- مسیر های دورنگ ، در این نوع مسیر تغییر رنگ در بعضی از قسمت ها وجود دارد ، مثلا در 10 سانت اول مسیر به رنگ مشکی و زمینه به رنگ سفید است ، در 10 سانت بعدی رنگ عوض میشود ، یعنی مسیر به رنگ سفید زمینه مشکی در میاید
در این نوع مسیر ، از پنج سنسور استفاده میشود ، سه سنسور وظیفه کنترل کردن ربات و جلوگیری از گم کردن مسیر را به عهده دارند ، دو سنسور دیگر هم رنگ مسیر ها را کنترل میکنند ، یعنی یکی از انها رنگ زمینه و دیگری رنگ مسیر را چک میکند .
شما باید در برنامه خود خروجی سنسور اول (کنترل کننده های مسیر )را با خروجی سنسور دوم (کنترل کننده های رنگ زمینه ) مقایسه کنید ، در صورتی که هر دو سنسور یک رنگ را تشخیص دهند ربات منحرف شده است .
مثلا فرض کنید ، در ابتدا کار رنگ مسیر مشکی است و رنگ زمینه سفید ، در این صورت خروجی سنسور که رنگ مسیر را چک میکند ، یک است و خروجی سنسوری که زمینه را چک میکند صفر (ما از adc استفاده کرده ایم ) .
در این صورت باید سه سنسور اول به رنگ مشکی حساس باشند ، در صورتی که شرایط بالا برعکس باشد ، سه سنسور اول باید به رنگ سفید حساس باشند ، در صورتی خروجی دو سنسور با هم یکی باشد ربات منحرف شده است .
سوال؟
چینش سنسورها چطوری باید باشند که ربات بتونه مسیر رو بدون مشکل و انحراف رد کنه؟؟ مثلا در لوپ ها یا مسیر های دیگه چه تدبیری باید بکار ببریم؟
چیدمان به صورت هشت فارسی ولی یکم باز تر 110 درجه خواهد بود شما باد فاصله سنسور ها را با هم طوری تنظیم کنید که نقطه کور وجود نداشته باشه یعنی بلافاصله بعد از صفر شدن سنسور x سنسور y یک بشه اینطور ثبات روبات بیشتره ...در loop ها این بیشتر به برنامه نویسی ربط داره تا چیدمان سنسورها ...
یک نکنه : بهتره برای سنس کردن مسیرهای مستقیم از دو سنسور استفاده کنید به این طریق loop ها را بهتر عبور می کنید .
براي ساختن بدنه ي ربات از هر وسيله اي استفاده نمي شود در بيشتر موارد از pelexi glass استفاده ميشه كه بايد با استفاده از برنامه ي آلتيوم ديزاينر ابتدا طرح مورد نظر را انتخاب كرده و سپس با استفاده از دستگاه cnc بدنه ي ربات را آماده كنيم .
لیست و کاربرد قطعات ربات مسیریاب
_میکروکنترلر؛
میکروکنترلر یک حافظه قابل برنامه ریزی دارای امکانات بسیاری نظیر پروتکل های ارتباطی ، کانالPWM ، مبدل آنالوگ به دیجیتال ، تایمر و کانتر است.
در این پروژه از میکروکنترلر ATMEGA 16 از خانواده AVR جهت پردازش و برنامه نویسی ربات مسیریاب استفاده شده است.
_سنسور IR؛
سنسورها تنها یک انتقال دهنده ویا مبدل هستند که پدیده های فیزیکی را تبدیل به ولتاژ و جریان می کنند
در پروژه ساخت ربات مسیریاب از سنسورهای مادون قرمز، شامل فرستنده و گیرنده جهت تشخیص مسیر استفاده می شود.
در این سنسور نور از فرستنده به یک سطح فرستاده می شود که درصورت برگشت نور به گیرنده رسیده و سطح ولتاژ خروجی تغییر می کند و میکروکنترلر خروجی سنسور را دریافت و پردازش های لازم را انجام می دهد.
_مقایسه کننده؛
این قطعه یک مبدل آنالوگ به دیجیتال بوده که وظیفه آن مقایسه سطح ولتاژ دوپایه ورودی (وارونگرا و غیروارونگرا) است؛
درصورتی که ولتاژ پایه وارونگرا بیشتر از ولتاژ پایه غیروارونگرا باشد، خروجی یک منطقی و در حالت بالعکس صفر منطقی خواهد بود.
_درایور موتور؛
موتور در موقع راه اندازی جریان بالایی می کشد که معمولا بدون استفاده از درایور و مدار راه انداز این جریان تامین نمی شود؛
در این پروژه از درایور L298 با توانایی تامین جریان حداکثر 2 آمپر و دوپایه مجزا برای راه اندازی همزمان دو موتور استفاده شده است.
_موتور ؛
در این پروژه از موتور DC گیربکس دار با سرعت دور 300 دور بر دقیقه استفاده شده است.
_ولتاژ تغذیه؛
جهت تامین ولتاژ کاری مدار باید متناسب با نیاز از تغذیه DC استفاده کرد؛
که می توان از خروجی ثابت آی سی رگولاتور، منبع تغذیه یا باتری های مختلف استفاده کرد.
_پل دیود؛
موتور در موقع راه اندازی جریان بالایی می کشد که درصورت برگشت این جریان به مدار، می تواند به قطعات مدار آسیب برساند که برای جلوگیری از برگشت این جریان به داخل مدار و جلوگیری از ایجاد نویز از پل دیود و خازن بر روی موتور استفاده شده است.
كد:
$regfile = "m16def.dat"
$crystal = 1000000
'==============================================================================
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
Config Portd = Output
Config Porta = Input
'==============================================================================
Dim A As Word
Dim B As Word
'==============================================================================
Do
A = Pwm1a
B = Pwm1b
'============================= jolo ===========================================
If Pina.2 = 1 And Pina.4 = 0 And Pina.0 = 0 Then
Portd = &B00000101
A = 1023
B = 1023
Elseif Pina.0 = 0 And Pina.2 = 0 And Pina.1 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.1 = 1 And Pina.4 = 0 And Pina.0 = 0 Then
Portd = &B00000101
A = 1023
B = 1023
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.3 = 1 And Pina.4 = 0 And Pina.0 = 0 Then
Portd = &B00000101
A = 1023
B = 1023
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.2 = 1 And Pina.1 = 1 And Pina.4 = 0 And Pina.0 = 0 Then
Portd = &B00000101
A = 1023
B = 1023
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.2 = 1 And Pina.3 = 1 And Pina.4 = 0 And Pina.0 = 0 Then
Portd = &B00000101
A = 1023
B = 1023
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
'=============================enheraf b chap===================================
If Pina.0 = 1 And Pina.1 = 1 Then
Portd = &B00000001
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.0 = 1 Then
Portd = &B00000001
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
'=============================enheraf b rast===================================
If Pina.4 = 1 And Pina.3 = 1 Then
Portd = &B00000100
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
If Pina.4 = 1 Then
Portd = &B00000100
Elseif Pina.0 = 0 And Pina.1 = 0 And Pina.2 = 0 And Pina.3 = 0 And Pina.4 = 0 Then
Portd = &B00000000
End If
Loop
سوال؟
ند یه رباط تعقیب خط ساخته ام و یه برنامه هم نوشتم.
برای پیچ ها که خیلی خوب کار میکنه اما واسه حرکت مستقیم تعادل خوبی نداره. اگه ممکنه راهنمایی کنین.
در ضمن چیدمان سنسورها به صورت ^ . و سه تا سنسور هم جلو گذاشتم که اگه:
وسطی ببینه: حرکت مستقیم.
سمت چپ ببینه: گردش به چپ.
سمت راست ببینه: گردش به راست.
با سه تا سنسور نمی شه دقت بیشتری انتظار داشت و حرکت پنگوئنی ربات طبیعه !
شما می تونی تعداد سنسورهای چپ و راستت رو بیشتر کنی و بسته به موقیع هر سنسور سرعت موتور ها رو کم و زیاد کنی !
مثلا اگه سنسور اول سمت راست روشن شد : یکم سرعت موتور راست کم بشه !( موتور چپ سرعت معمولی )
اگر سنسور دوم سمت راست روشن شد : موتور راست خیلی سرعتش کم بشه !( موتور چپ سرعت معمولی )
اگر سنسور سوم سمت راست روشن شد : موتور راست کلا خاموش و قفل شود !( موتور چپ سرعت معمولی )
اگر سنسور چهارم سمت راست روشن شد : موتور راست معکوس بچرخد ! ( موتور چپ سرعت معمولی )
منظورتون از تعادل نداشتن اینه که مرتب سرش را تکون میده , قطر چرخ های ربات شما چقدره؟؟
یه مسئله ای که میتونه این مشکل را ایجاد کند قطر بزرگ چرخ هاست
وقتی قطر چرخ زیاد باشه با کوچک ترین فرمان گردش مسافت زیادی را منحرف می شود برای همین مجبوره در مسیر های مستقیم مرتب سرش را تکان بده.
شما باید علاوه بر زیاد کردن سنسور ها (هو در خط و هم مورب (8)) سرعت موتور هاتون را با pwm یا کم کردن ولتاژ موتور با دیود ، کاهش بدین.
چون اگه همینطور که دوستمون sheitunak گفتن اگه قطر چرخ زیاد انحراف زیاد میشه پس باید سرعت موتور ها کم بشه و حتما تعداد سنسور زیاد .
در ابتدا كمي در مورد شرايط روبات در مسابقات مسيرياب مطالعه كن
سپس برخي پارامترهاي ( وزن ، سرعت ، نحوه حركت و مانورها و نحوه كنترل روبات و ... ) را در نظر بگير
به طور كلي :
با توجه به پارامترهاي بالا ، موتور با قدرت مورد نياز و گيربكس با نسبت تبديل مورد نياز را در ميان موتورگيربكسهاي موجود در بازار انتخاب مي كني سپس با توجه به توان موتورهايت درايور ( راه انداز ) و منبع تغذيه ( مثلا باتري ) مناسب را انتخاب مي كني با توجه به شيوه كنترل و امكانات روبات و حسگرهاي محيطي مي توني برخي از تصميمات و عمليات هاي ممكن را توسط برنامه نويسي بر عهده مغز هوشمند ( ميكرو ) بسپاري .
پس از جمع آوري اطلاعات در مورد قطعات و كار آنها و نحوه ارتباط آنها با هم ، يه راه اندازي اوليه و آزمايشي مي كني ( در اين مرحله مي توني از نرم افزار هاي شبيه ساز مدار مانند پروتئوس نيز استفاده كني ) و در صورت لزوم برد مدار چاپي را تهيه و قطعات را لحيم كاري مي كني آنگاه شاسي روبات را كاملتر ميكني و مجموعه برد و موتورها و باتري را بر روي شاسي نصب مي كني و در آخر روبات را راه اندازي مي كني و اصلاحات لازم را بر روي مدار و برنامه اعمال مي كني و تمام ...
براي گذر از هر يك از مراحل بالا ، ابتدا با مطالعه موضوعات مرتبط در همين سايت و سايت هاي ديگر و مقالات فراوان ارايه شده و سپس طرح سوال مرتبط و كامل در انجمن مربوطه و مشاوره ديگر دوستان ، ميتوني ياد بگيري و به كار ببندي
سايت:
http://www.iranled.com/forum/thread-18028.html
با سلام و درود فراوان