در رباتهاي مسيرياب ساده ه هنوز ميكروكنترلر وارد ربات ما نشده و تصميصماتي كه ربات ما براي يافتن خط ميگيريد بسيار مقدماتي هستند و ربات نميتواند مسيرهاي پيچيده را با سرعت مناسبي دنبال كند.
يكي از مهمترين فوايد استفاده از ميكروكنترلر در ساخت رباتهاي مسيرياب، استفاده از قابليت PWM براي هدايت موتورهاي ربات است. اما به چه صورت از PWM استفاده ميكنيم؟
3 سنسور با همديگر ANDمنطقي ميكنيم و اگر هر يك از اين 3 سنسور خط را تشخيص داد، موتور همان سمت را متوقف ميكنيم تا به اين ترتيب ربات خط را تعقيب كند.
اما در رباتهاي مسيرياب ميكروكنترلر دار، ما ميتوانيم براي هر سنسور، به طور مجزا دستوري به موتور بدهيم. براي درك اين موضوع مجدد به شكل بالا نگاه كنيد، اين نماي كلي يك ربات از زير است. سنسورهاي آن را به ترتيب از چپ به راست، از 7 تا 1 شماره گذاري ميكنيم.
همانطور كه به خاط داريد در رباتهاي بدون ميكروكنترلر، تفاوتي نداشت كه سنسور 1 يا 2 يا 3 كداميك خط را بيابند، هر كدام خط را تشخيص ميداد، موتور سمت چپ خاموش ميشد. اما در رباتهاي ميكروكنترلر دار، ما ميتوانيم تعيين كنيم كه مثلاً اگر سنسور شمارهي 3 خط را ديد، موتور سمت چپ به طور كامل متوقف نشود، بلكه سرعت آن به نصف كاهش پيدا كند. اين كار به نظر هم منطقي ميرسد، زيرا سنسور شمارهي 3 و 5 تا خط فاصلهي كمي دارند و نياز نيست وقتي خط را تشخيص ميدهند به طور كامل موتور متوقف شود، بلكه فقط كافيست سرعت موتور كمي كاهش پيدا كند تا ربات به تدريج به روي خط باز گردد. اين عمل باعث ميشود حركت ربات نرمتر و دقيقتر بشود و در مجموع سرعت ربات بالاتر برود.
حال اگر سنسور شمارهي 2 خط را ببيند، يعني شرايط كمي خطرناكتر شده و ربات ممكن است از خط خارج شود، پس ميتوانيم در اينجا به موتور دستور توقف كامل را بدهيم تا ربات با سرعت بيشتري به مسير مسابقه بازگردد. و در نهايت اگر سنسور شمارهي 1 خط را ببيند، يعني ربات در آستانهي خروج از مسير مسابقه قرار گرفته است و بايد با حداكثر توان ربات را به مسير مسابقه بازگرداند. براي اين كار به موتور سمت چپ دستور باز گشت به عقب را ميدهيم. اين كار بيشترين سرعت ممكن براي چرخش ربات را فراهم ميسازد و ربات با سرعت زيادي به زمينه مسابقه باز ميگردد.
در زير بخشي از برنامهي يك ربات مسيرياب پيشرفته، كه فقط براي سنسورهاي سمت چپ و طبق توضيحات بالا نوشته شده است را ميبينيد. همانطور كه ميدانيد ما نياز به 3 پايه به عنوان ورودي براي دريافت وضعيت سنسورهاي سمت چپ، و يك پايهي خروجي و يك PWM براي كنترل موتور سمت چپ داريم كه به ترتيب زير هستند:
PA.0 براي سنسور شمارهي 1
PA.1 براي سنسور شمارهي 2
PA.2 براي سنسور شمارهي 3
PD.6 و OCR2 براي كنترل موتور چپ
PD.3 و OCR1BL براي كنترل موتور راست
حالا به برنامه دقت كنيد:
(if (PINA.0==0
}
; PORTD.6=0
; OCR2=127
; PORTD.3=0
; OCR1BL=255
{
(if (PINA.1==0
}
; PORTD.6=0
; OCR2=0
; PORTD.3=0
; OCR1BL=255
{
(if (PINA.2==0
}
; PORTD.6=1
; OCR2=0
; PORTD.3=0
; OCR1BL=255
{
به همين منوال بايد براي سنسورهاي سمت راست هم برنامه را ادامه دهيد. دقت كنيد كه بايد حتماً قبل از نوشتن برنامه، از داخل CodeWizard، تنظيمات اوليه را انجام دهيد.
در مورد سنسور وسط هم در جلسهي بيستم توضيحاتي داده شد، اگر اين سنسور خط را تشخيص دهد، بيانگر اين است كه ربات در وضعيت مناسبي نسبت به خط قرار دارد و هر 2 موتور با تمام توان به سمت جلو حركت ميكنند. اگر پايهي PA.3 را نيز به سنسور وسط اختصاص دهيم، براي اين سنسور نيز داريم:
(if (PINA.3==0
}
;PORTD.6=0
; OCR2=255
; PORTD.3=0
; OCR1BL=255
{
منبع : دانشنامه رشد
كاربرد تكنيك PWM در ساخت يك ربات مس
- moeinnezhad_m
- کاربر خیلی فعال
- پست: 122
- تاریخ عضویت: شنبه 6 شهریور 1389, 7:30 pm
- محل اقامت: مشهد مقدس
- تماس:
انقضای PWM
روش PWM یک روش قدیمی و منقرض شده است
تازه ممکنه به میکرو کنترولر شما هم آسیب بزنه چون جریان برگشت داره
اگه بخوای جریان برگشت نداشته باشه باید دیود بزاری سر راش
اگه بخوای دیود بزاری باید به جای این که با یک Mega 16 روباتت رو بسازی حتی کارت با Mega 32 هم راه نمیوفته و مجبوری از یک Mega 64 استفاده کنی
الان روشهای زیادی وجود داره که خیلی راحتر و کم خرج تر از این روش است
تازه ممکنه به میکرو کنترولر شما هم آسیب بزنه چون جریان برگشت داره
اگه بخوای جریان برگشت نداشته باشه باید دیود بزاری سر راش
اگه بخوای دیود بزاری باید به جای این که با یک Mega 16 روباتت رو بسازی حتی کارت با Mega 32 هم راه نمیوفته و مجبوری از یک Mega 64 استفاده کنی
الان روشهای زیادی وجود داره که خیلی راحتر و کم خرج تر از این روش است
║▌│█│║▌│█│█║▌│║█║
Cσρуяιgнт © 2010™
Cσρуяιgнт © 2010™
چه کسی حاضر است؟
کاربران حاضر در این انجمن: کاربر جدیدی وجود ندارد. و 2 مهمان