PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال ربات هاي مسير ياب



محمد رضا هوشمندي
28th February 2009, 10:39 AM
با سلام
در صورت امكان در مورد روبات هاي مسير ياب مطالبي به اينجانب ارسال شود.

ØÑтRдŁ§
28th February 2009, 03:18 PM
سلام دوست گرامی
راستش من چند وقت پیش یه چیزی تو این مایه ها رسید دستم که برات میذارم ...ببین به دردت میخوره؟
اول از همه منبعش رو بگم : http://www.autoir.com



معرفي ميكروكنترلر 89c51

http://www.fpgajournal.com/articles/images/8051-processor.gif
ميكروكنترلرقطعه اي است كه ازبعضي جهات شبيه ميكروپروسسوراست بااين تفاوت كه بدليل ساختار خاصي كه دارد دركاربردهاي كنترولي كارايي بيشتري نشان داده است.علاوه برcpu كه عضو اصلي ميكروكنترلراست ميتوان حافظه وتايمرو شمارنده وپورت سريال وچهار عدد پورت موازي و بسياري قابليتهاي ديگر رادر يك ميكروكنترلريافت.
خانواده8x51خانواده اي متنوع با انواع و اقسام قابليتها ست. 8051 داراي حافظهROMو8751دارايEPROMاست حافظه89C51ازنوع فلاش مي باشد. 89c51 حدود4kbyte حافظه فلاش دارد.حافظه فلاش حافظهاي است كه به صورت يكباره ان راميتوان پاك كرد(با پالس الكتريكي با ولتاژ 12+ولت)ودوباره ان را ازابتدا برنامه ريزي كرد. سازنده ادعا مي كند تا چندين مرتبه امكان پاك كردن ونوشتن وجود دارد. نوع 20پايه همين ميكروكنترلر با امكاناتي محدودتر وجود دارد كه با نام892051در بازار موجود است كه 2 kbyteحافظه فلاش دارد.
از لحاظ ساختمان داخلي ميكروكنترلرهاي خانواده8X51 داراي قسمتهاي زير است:

• واحد اصلي يا CPU
• حافظه RAM داخلي 128byte (تا 512byte در بعضي ميكروكنترلرها)
• حافظه برنامه داخلي ROM يا EPROM ياEEPROM تا 8Kbyte
• چهار پورت8 بيتي ورودي-خروجي چند كاره
• سه تايمر16 بيتي كه به صورت شمارنده هم قابل استفاده است
• پورت سريال
• دو عدد پايه براي وقفه هاي خارجي و سه عدد وقفه داخلي
• اوسيلاتور داخلي كه كريستال در بيرون وصل مي گردد
• قابليت فضاي خارجي برنامه تاbyte 64k
• فضاي حافظه داده خارجي تاbyte 64k
• فضاي ادرس دهي بيتي وقابليت كار بر روي بيتهاي مجزا
• رجيسترهاي كنترلي و چهار بانك رجيستري مجزا
• واحد كنترل باسهاي داده و ادرس
به شكل 2 توجه كنيد.
دراين مدار از چهار پايه پورت P1 براي دريافت ورودي ها استفاده كرده ايم .سنسور1به پايه P1.0 و به ترتيب تا سنسور 4 كه به پايه P1.3 وصل شده اند .از پورتP0 براي چرخاندن چرخ سمت چپ و از پورت P2 براي چرخاندن چرخ سمت راست استفاده شده است. درپورت P0 از مقاومت PULL UP بايد استفاده شود اما در پورت P2 الزامي به اين كار نمي باشد.
بيت P0.4 وP2.4 كه با نام STEP معرفي شده است در ساختمان مربوط به مدار راه انداز موتور پله اي به كار رفته است و مي تواند در حالتهاي مختلف 1 يا0 باشد ولي در هر دو صورت موتور حركت خود را خواهد داشت. درمدار از قابليت RESET هم استفاده شده است هر بار كه مشكتي در كار بروز كند با RESETكردن مدار مشكل را رفع كرد. كريستال مورد استفاده دراين مدارMHZ 12 مي باشد.
حافظه:
ساختمان RAM داخلي:
بانك رجيستري حاوي8 byte از R0 تا R7 است . در برنامه هاي كاربردي با مقداردهيPSW يا توسط استفاده از دستور USINGمي توان شماره با نك رجيستري را تعيين كرد.
معمولاازبانك هاي رجيستري براي وقفه هااستفاده مي شود .فرض كنيد در حال استفاده از بانك صفر است اگر وقفه رخ دهد كه دران R0 تا R7 به كار رفته باشند ممكن است مقادير R0 تا را دستكاري كرده و در برگشت برنامه دچار خطا گردد. بنابر اين دروقفه از بانك ديگري نام ميبرند تا عمليات رادر R7 ان بانك انجام دهد. فضاي ادرس پذير غير مستقيم در بعضي اي سي ها مثل 8052 وجود دارد كه گاهي 128byte وبراي بعضي ديگر از اي سي ها تا256byte نيز هست.
حافظه برنامه:
حافظه برنامه در89C51 ازنوع فلاش و4kbyte است برنامه اي كه قرار است اجرا شود به صورت كدهاي ماشين در اين قسمت از حافظه بار ميشود وقابل اجرا است .
حافظه برنامه حافظه اي قابل گسترش است زيرا 8X51 قابليت اجراي برنامه هاي خارجي را دارد و ميتواند تا 64kbyte حافظه را ادرس د هي كند.در قسمت حافظه برنامه خارجي ميتوان بلوك هايي از حافظه ديتاي خارجي را هم جا داد با اتصال پايه هايRD وWR به ان حافظه داده ميتوان نوشت يا خواند ارتباط دهي نرم افزاري اين قسمت ها با دستور …و…MOVE X صورت مي گيرد .
اگر بخواهيم از حافظه برنامه خارجي (حافظه كد)اعدادي را به داخل برنامه LOAD كنيم يكي از راههاي ممكن استفاده ازدستور …و… MOVE C است البته قبلا بايد حافظه كد را با اعداد مورد نظر انبا شته كرده باشيم .
دستورات زير نحوه كار را نشان ميدهد

Cseg at 1000H

DB …,…,
اعداد ثابتي رااز ادرس 1000Hبه بعد درحافظه برنامه (كد)قرار ميدهد.
ثبات ها :
ثبات هاي ويژه: ثبات هايي هستند كه اسامي انها ذكر ميشود از ادرس 80H تا FFH در حافظه RAM داخلي قرار دارند كه هر يك كار خاصي را انجام ميدهد.

• P0 پورت شماره صفر قابل ادرس دهي بيتي وبايتي
• SP ثبات نشانگر پشته (بايتي)
• DPL قسمت كم ارزش ثبات دو بايتي نشانگرادرس داده
• DPH قسمت پر ارزش ثبات دو بايتي نشانگرادرس داده
• PCON ثبات كنترل توان –پرتوان –استراحت –نيمه توان
• TCON كنترل تايمرها داراي قابليت ادرس دهي بيتي
• TMOD حالت تايمرها
• TL0 بايت كم ارزش ثبات تايمر صفر
• TL1بايت كم ارزش ثبات تايمر يك
• THO بايت پرارزش ثبات تايمر صفر
• TH1 بايت پرارزش ثبات تايمر يك
• P1 پورت شماره يك قابل ادرس دهي بيت به بيت
• SCON ثبات كنترل پورت سريال قابل ادرس دهي بيت به بيت
• SBUF بافر و ثبات اطلاعاتي پورت سريال
• P2 پورت شماره دو
• IE ثبات فعال كننده وقفه قابل ادرس دهي بيتي
• P3 پورت شماره سه قابل ادرس دهي بيت به بيت
• IP ثبات تقدم وقفه ها – اولويت وقفه ها –ادرس دهي بيتي
• T2CON كنترل تايمر دوم در 8X52
• RCAP2L كنترل وثبات شكار ومقايسه در52 و53
• RCAP2Hكنترل وثبات شكار ومقايسه در52 و53
• T2Lبايت كم ارزش ثبات تايمر دو
• T2Hبايت پر ارزش ثبات تايمر دو
• PSW پرچمهايCPU شامل CARY و صفر و توازن و…
• Aيا ACC ثبات انباره اصلي
• B ثبات انباره كمكي
بعضي از دستورات بجاي خواندن از پايه اي سي از لچ ميخوانند اين دستورات دستوراتي هستند كه ابتدا خوانده ميشودسپس تغيير مييابدواحتمالا دوباره در لچ نوشته مي شود. عبارتند از:
ANL,ORL,XRL,JBC,CPL,INC,DEC,DJNZ
همچنين سه دستور زير كل پورت را به صورت بايتي ميخوانند بعدبيت مورد نظررا تغيير ميدهند ودوباره به صورت بايتي درلچ مي نويسند
MOV Px.y,c
CLR Px.y
SETB Px.y
براي خواندن از پينهاي P1 بايد مراحل زير طي شود:
در ابتداي برنامه MOV P1,#FFH ;
خواندن از MOV A,P1 ; P1
ماسك كردن بيتهاي غيرضروريANL A,#0000\\\\ ;
بررسي سيستم روبات مسيريابي :
http://www.sharghnewspaper.com/841221/html/179652.jpgبر روي زمين خطي سياه رنگ متمايز از زمينه روشن تصور كنيد . پهناي اين خط در حدود دو سانتي متر و طول انرا نامحدودبا پيچ وخمهاي فراوان تصوركنيد تئوري ميگويد وقتي نور به جسمي كدر يا سياه رنگ برخورد مي كند قسمت بيشتري از نورجذب ان مي شود و مقدار كمي از ان باز تابيده ميشود و وقتي نور به جسمي روشن و سفيد بتابد قسمت زيادي از نور را باز مي تاباند و قسمت كمي را جذب مي كند پس ميتوان سفيد يا سياه بودن دو جسم را با اندازه گيري نوربازتابيده شده ازان حدس زد كافي است يك منبع نوراني داشته باشيم كه نور رابه طرف جسم مورد نظر بتاباند ودرهمان حال يك سنسورنوري ميزان نور بازتابش را اندازه گيري كند مطمئنا براي دو جسم با رنگهاي مختلف يا دو جسم سفيد وسياه ميزان باز تابش متفاوت ثبت خواهد شد.
انجام ازمايش بالا درتاريكي ممكن است به نتايج خوبي منجر شود اما در محيطي مثل محيط اتاق انواع و اقسام منابع نوري را داريم .همچنين بايد در نظر داشته باشيم كه سنسورنوري مابرروي روباتي قرار دارد كه همواره در حال حركت است و نسبت به منابع نوري در اتاق درزاويه هاي تاريك و روشن واقع ميشود اگر محيط با لامپهاي فلورسنت روشن ميشود.
مساله از اين هم بدتراست چون لامپهاي فلورسنت در هر ثانيه صد بار روشن وخاموش ميشوند و سنسورها اين مطلب را حس خواهند كرد اگر تلويزيون هم در محيط روشن باشدحركت تصاوير نور محيط را دچار تغيير خواهد كرد.

http://i16.tinypic.com/4cc3mok.jpg
راه حل چيست؟
راه حل اول :
راه حلي كه ما پيشنهاد ميكنيم استفاده ازدو نوع نور است دراصل استفاده از دو طيف نوري مجزا. سعي ميشود نور اتاق نور لامپهاي فلورسنت باشد وازلامپهاي معمولي رشته اي و نور خورشيد حتي المقدور اجتناب شود .
نور لامپهاي فلورسنت در اصل درطيف نزديك به نورماورابنفش قراردارد كه با ماده فسفرسانس ميزاني ازان را به نور مرئي تبديل مي كنند با اين وجود لامپهاي فلورسنت نور قرمز يا مادون قرمز ندارند.درصد نور مادون قرمزتوليدي توسط اين لامپها بسيارناچيزاست درعوض لامپهاي رشته اي به ميزان زيادي نورمادون قرمز ونورقرمزدارندونور ماورابنفش توليدي توسط لامپهاي رشته اي بسيار ناچيز و قابل صرفنظراست روي اين اصل ما درسيستمي كه قرار است مسير سياه رادرزمينه سفيد تشخيص دهد از لامپهاي مادون قرمز استفاده مي كنيم ديودهايLED وجود دارند كه در طيف مادون قرمز كار مي كنند اين ديودها نور مادون قرمز غيرمرئي توليد مي كنند .
سنسورهاي نور مادون قرمز هم در بازار يافت ميشوند سنسورهايي كه فقط با نور مادون قرمز تحريك ميشوند طبق قراري كه با هم گذاشتيم در اتاق فقط از لامپهاي فلورسنت استفاده مي كنيم كه در طيف مادون قرمز تداخلي ايجاد نمي كنند .
راه حل دوم:
راه حل ديگري هم هست كه دقيق تر عمل مي كند و اين حساسيت هاي بي مورد را ندارد اما روش پر هزينه اي مي تواند ياشد صرفنظر از اينكه نور اتاق حاوي كدام يك از طيف هاي نوري است منبع هاي نوري مسير ياب به صورت لحظه اي كار ميكنند سعي مي شود ميزان نور برخوردي به يك سطح نيمي از يك مقدار مبنا باشد .
براي لحظه اي كوتاه ديود نور گسيل را روشن مي كنيم و ميزان نوري را كه منعكس شده را اندازه ميگيريم حال ديود نور گسيل را خاموش مي كنيم و بلافاصله دوباره سطح نور موجود را اندازه گيري ميكنيم اين مقادير را توسط A\D به صورت ديجيتال به يك پردازنده مي دهيم تا از همديگر كم كند. تفاوت بين دو سطح نوري بيانگر تيره يا روشن بودن سطح مورد نظر مي تواند باشداز روش دوم براي جاهاي ديگر هم مي توان استفاده كرد .
فرض كنيد مي خواهيد ميزان دوري يا نزديكي به ديواري را تخمين بزانيد روش بالا مي تواند به يك روبات ميزان دوري يا نزديكي به يك ديوار را نشان دهد بدون اينكه روبات به ميزان نور محيط ونور موجود حساس باشد.
نحوه تشخيص مسير چگونه است ؟
http://www.sharghnewspaper.com/841221/html/179655.jpgساده ترين كار استفاده از فقط يك چشم الكترونيكي براي تشخيص مسير سياه و سفيد مي باشد. در برنامه نرم افزاري براي روبات اينطور تعريف مي كنيم كه تا وقتي بر روي مسير سياه قرار دارد به سمت جلو حركت كند هر گاه كه مسير سياه را گم كرد با توجه به حالت قبلي براي يافتن مسير به سمت چپ يا راست حركت كند .
روش بالا مستلزم اين است كه روبات همواره موقعيت خود را همواره محاسبه و نگهداري كند اگر تعداد چشمها را به سه عدد افزايش دهيم كار راحتتر پيش مي رود و به احتمال زياد احتياجي به محاسبه موقعيت روبات نباشد زيرا چشم مركزي همواره بايد روي مسيرسياه قرارداشته باشد ودوسنسور كناري مسيرسفيد را رويت كنند هر گاه هركدام ازسنسورهاي كناري خط سياه را رويت كرد بايد روبات به سمت مخالف اصلاح مسير كند.
هر چقدر تعداد چشمها را زيادتر كنيم برنامه پچيده ترميشوداما قدرت تشخيص مسير صحيح بالاتر مي رود و امكان مانور بيشتري خواهد بود.
شرح سخت افزاري مدار تشخيص مسيرمداري كه در شكل يك مشاهد مي كنيد داري چهار طبقه است از چهار چشم الكترونيكي يعني چهار عدد سنسور نور مادمن قرمز استفاده شده است هر سنسور مادون قرمز به طور جداگانه همراه با يك عدد LED مادون قرمز درون يك استوانه فلزي قرار دارد كه از يك طرف باز است و به طرف مسير سياه وسفيد قرارمي گيرد علت اينكه سنسورهارا از هم جدا كرده ايم اين است كه نور هر LED مادون قرمزبه سنسورمربوط به خودش ارتباط داشته باشد واز تداخل هاي نوري با ساير سنسورها جلوگيري شود.
ازسه عدد سنسور در يك رديف و از سنسور چهارم در پشت سر انها استفاده شده است .


http://www.autoir.com/upload/user/Image/Robot_1/1.gif

سنسورشماره دو سنسور اصلي وبقيه سنسورها پشتيبان ان هستند.
براي اشكارسازي مسير ازيك مقايسه كننده معمولي (Lm339)استفاده شده است اين IC درخود چهار مقايسه كننده را جاي داده است.يك مقايسه كننده همواره ولتاژ بين دو پايه ورودي خود را مقايسه مي كند اگرورودي ناوارونساز ولتاژي بزرگتر از ورودي ديگر داشته باشد،خروجي را به اشباع درv+مي برد واگر ولتاژ در ورودي وارونسازبزرگترازورودي ناوارونساز باشد خروجي را به سطح صفر ولت ميكشاند.
Lm339 داراي خروجي كلكتور باز است بنابراين در خروجي ان از يك مقاومت Pull up استفاده شده است ،براي راحتي كار،همواره ميتوان با مشاهده LEDهاي معموليكه درخروجي مقايسه كننده ها كه درخروجي مقايسه كننده ها متصل شده است به عملكرد سنسورهاپي برد LED يك تاLED چهارلامپهاي LED معمولي هستند وروي روبات به صورت نمايشي قرارميگيرند در اصل مي توان انها را خروجي مدار ناميد واز روي انها،برنامه نرم افزاري را نوشت و اصلاح كرد.
خروجي ها به ترتيب به پايه هاي P1.0 تا1.3 P از پورت يك وارد مي شوند.توجه كنيد كه وقتي ميخواهيد پورت يك رابه صورت ورودي استفاده كنيد در ابتداي برنامه ترانزيستورهاي خروجي را از كار بياندازيد.اين كار با نوشتن FFH در پورت P1 در ابتداي برنامه ،صورت ميگيرد.
اگراين كار رانكنيد وترانزيستورهاي خروجي روشن باقي بمانند سطح خروجي را به صفرولت ميكشانندوP1همواره OOH يا صفر را دريافت خواهد كرد. دستوري كه باعث خواندن ورودي از پين مي گردد P1و A MOV است بعضي از دستورات هستند كه بجاي خواندن از پين از latch ها مي خوانند كه دربهكار بردن انها بايد دقت شود.
مقاومت داخلي سنسورهاي مادون قرمز تابعي از نور برخورد كننده به انها است درنورهاي ضعيف يا يك اتاق تاريك مقاومت سنسورهايي كه ما استفاده كردهايم بالاتر از 100 k است. اين مقاومت وقتي كه سنسورها را در معرض نوربا شدت معمولي قرار دهيم تا  1 k هم كاهش پيدا مي كند.
وقتي استوانه اي حاوي سنسور و LED مادون قرمز را جلوي يك جسم سياه رنگ مي گيريم مقاومتي حدود 50 k  وزماني كه جلوي يك جسم سفيد رنگ قرار ميدهيم مقاومتيحدود 20 k  رانشان ميدهد .پتانسيو مترهاي ورودي را طوري تنظيم مي كنيم كه وقتي جسم سياه را داريم در خروجي +5 ولت برقرار باشد ووقتي جسم سفيدي را در مقابل استوانه هاي فلزي قرار دارد صفر ولت درخروجي داشته باشيم.


http://www.autoir.com/upload/user/Image/Robot_1/2.gif

به شكل بالا نگاه كنيد .چهار عدد سنسور داريم كه وضعيت خط سياه را نشان ميدهند از لحاظ اماري براي چهار عدد سنسور ما مي توانيم شانزده حالت حداكثر تصور كنيم كه سنسور روي خط سياه يا روي زمينه سفيد فرض شود .
در زير ليست اين شانزده حالت را مي توانيد ببينيد.
1- هيچ كدام از سنسورها روي خط سياه قرار ندارند و همگي صفررا نشان ميدهند.
2- فقط سنسور شماره 1روي خط سياه قرار دارد.
3- فقط سنسور شماره 2روي خط سياه قرار دارد
4- فقط سنسور شماره3 روي خط سياه قرار دارد.
5- فقط سنسور شماره 4 روي خط سياه قرار دارد.
6- فقط سنسور شماره 2و1روي خط سياه قرار دارد.
7- سنسورهاي 3و2 روي خط سياه قرار دارد.
8- سنسورهاي 4 و3 روي خط سياه قرار دارد.
9- سنسورهاي 4 و1 روي خط سياه قرار دارد.
10- سنسورهاي 3 و1 روي خط سياه قرار دارد.
11- سنسورهاي 4 و2 روي خط سياه قرار دارد.
12- سنسورهاي 3 و2 و1روي خط سياه قرار دارد.
13- سنسورهاي 4 و3 و2 روي خط سياه قرار دارد.
14- سنسورهاي 4 و1و2روي خط سياه قرار دارد.
15- سنسورهاي 4 و1و3 روي خط سياه قرار دارد.
16- سنسورهاي4 و3 و2 و1همگي روي خط سياه قرار دارند.
شرايط حركت روبات
حالت اول: روبات هنوز مسير را پيدا نكرده
هيچكدام از سنسورها بر روي مسير سياه قرار ندارند اين يعني اينكه روبات هنوز مسير را پيدا نكرده و بايد عمليات جستجو را انجام دهد. مي تواند در راستاي يك خط راست حركت كند تا به خطوط سياه برخورد كند ويا مي تواند در طول يك مسير مارپيچ منظم به دنبال مسير سياه بگردد ودراخر اينكه مي تواند به دلخواه خودش درطول يك مسير غير منظم حركت كند.
حركت درمسير مارپيچ شايد به دلايلي بهتر باشد مسير مارپيچ مسيري دوار است كه همواره شعاع چرخش در ان در حال افزايش است. انواع و اقسام مسيرهاي مارپيچ را مي توان تصور كرد . نوع ساده تر ان شامل يك حركت گردش به راست و حركت به جلو است كه ابتدا به ازاي هر پله حركت به جلو يك پله حركت به راست هم هست ولي كم كم امار پله هاي حركت به جلو نسبت به پله هاي حركت به راست افزايش مي يابد.
حالت دوم :گردش به راست
عمليات گردش به راست براي زماني است كه يكي از حالتهاي زير در مورد سنسورها صدق كند.
1- فقط سنسور شماره 3 مسير سياه را نشان دهد.
2- فقط سنسورهاي شماره 3 و4 مسير سياه را نشان دهند.
3- فقط سنسورهاي شماره 2و3 و4 مسير سياه را نشان دهند.
حالت سوم:گردش به چپ
عمليات گردش به چپ زماني رخ ميدهد كه يكي از حالتهاي زير رخ داده باشد.
1- فقط سنسور شماره 1 مسير سياه را نشان دهد.
2- فقط سنسورهاي شماره 1و4 مسير سياه را نشان دهند.
3- فقط سنسورهاي شماره 1و2و4 مسير سياه را نشان دهند.
گردش به چپ زما ني رخ مي دهد كه به چرخ سمت راست دستور جلوگرد بدهند و عمليات گردش به راست زماني اتفاق مي افتد كه به چرخ سمت چپ دستور جلو گرد بدهند.
حالت چهارم:حركت مستقيم به جلو
براي زماني رخ مي دهد كه سنسورها داراي وضعيت زير باشند.
1-زماني كه سنسور شماره 2 مسير سياه را نشان دهد.
2- زماني كه سنسورهاي شماره 1و2 مسير سياه را نشان دهد.
3- زماني كه سنسورهاي شماره 2 و3 مسير سياه را نشان دهد.
4- زماني كه سنسورهاي شماره 2و4 مسير سياه را نشان دهد.
براي حركت مستقيم به جلو بايد هم چرخ راست وهم چرخ چپ را با حالت جلوگرد راه اندازي كرد يعني به هر دو چرخ همزمان دستورجلوگرد صادر شود . براي اين منظور همواره شماره مرحله هر موتور در جايي ذخيره مي شود براي دستور جلوگرد كافي است شماره مرحله را افزايش دهيم و مرحله هر موتور را به ان اعمال كنيم سپس مدت چند ميلي ثانيه صبر كنيم تا موتور از حالت قبلي به حالت جديد برود سپس برنامه را ادامه دهيم. بايد توجه كرد كه هر دو موتور همزمان مرحله جديد را مي گيرند و سپس هر دو با هم به حالت جديد مي روند.
حالت پنجم:حركت به جلو و راست
حالت پنجم براي زماني بكار مي رود كه حركت يكي جلو يكي راست اجرا شودو سنسورها داراي وضعيت زيرباشند.
1- سنسورهاي 1 و3 مسير سياه را نشان دهند.
2- سنسورهاي 1 و2 و3 مسير سياه را نشان دهند.
3- سنسورهاي 1 و3 و4 مسير سياه را نشان دهند.
4- سنسورهاي 1 و3 و3 و4 مسير سياه را نشان دهند.
در حالت پنجم يكباربه چرخ راست و چپ با هم دستور جلو گرد صادر شود و بعد از ان يك مهلت چند ثانيه اي به چرخ سمت چپ دستور جلو گرد صادر مي شود.
حالت ششم :حركت به سمت عقب و گردش به راست وچپ
اين حركت زماني رخ مي دهد كه فقط سنسور شماره 4 مسير سياه را نشان دهد .
وقتي فقط سنسور شماره 4 فعال است و مسير سياه را نشان مي دهد بايد روبات به سمت عقب برگردد اگر بعد از چند حركت 1و 4 فعال شدند به سمت چپ گردش كند و اگر 3 و4 فعال شدند به سمت راست گردش كند.
سنسورها از پورت P1 وارد مي شوند پس:


http://www.autoir.com/upload/user/Image/Robot_1/3.jpg

با چهار عدد بيت مي توان شانزده حالت منطقي را ترسيم كرد.(عدد مربوطه در P1)


http://www.autoir.com/upload/user/Image/Robot_1/4.jpg

روش راه اندازي موتور پله اي
كافي است يك برنامه براي حركت به جلو و يك برنامه براي حركت موتور به عقب بنويسيم براي اينكه موتورها به جلو بچرخند مرحله موتور پله اي را افزايش مي دهيم و براي حركت موتور پله اي به عقب بايد مرحله هاي موتور پله اي را كاهش دهيم.


http://www.autoir.com/upload/user/Image/Robot_1/5.jpg



http://www.autoir.com/upload/user/Image/Robot_1/6.jpg



http://www.autoir.com/upload/user/Image/Robot_1/7.jpg

زير برنامه زير براي مرحله موجود كد مربوطه را قرار ميدهد.


http://www.autoir.com/upload/user/Image/Robot_1/8.jpg

برنامه هاي اسمبلي
زير برنامه Encoder
اين زير برنامه براي هر مرحله كه در R7 قرار دارد كدي عددي صادر مي كند ودر R4 قرار ميدهد.
كلا 8 مرحله وجود دارد و 8 عدد كد.
Org 0500H Encoder: Nop ; Label 1: cjne R7,#1H, label 2 ; Move R4 , # 9H ; Ljmp encoder – end ; Label 2: cjne R7,#2H, label 3 ; Move R4 , # 8H ; Ljmp encoder – end ; Label 3: cjne R7,#3H, label 4 ; Move R4 , # 0c H ; Ljmp encoder – end ; Label 4: cjne R7,#4H, label 5 ; Move R4 , # 4 H ; Ljmp encoder – end ; Label 5: cjne R7,#5H, label 6 ; Move R4 , #6 H ; Ljmp encoder – end ; Label 6: cjne R7,#6H, label 7 ; Move R4 , #2 H ; Ljmp encoder – end ; Label 7: cjne R7,#7H, label 8 ; Move R4 , #3 H ; Ljmp encoder – end ; Label 8: Move R4 , #2 H ; encoder – end :Ret Ljmp encoder – end ; زير برنامه اي براي جلو رفتن موتور سمت راست
org 0600H Right _go _ front Cnje R6,#8 , not –equal 8 Move R6,#1 ; R6=8 Ljmp encoder- call 0 not – equal 8 : jc les-than 8 Move R6,#1 ; R6>8 Ljmp encoder- call 0 Les-than 8: inc R6 ; R6<8 Encoder call 0: mov R7,R6 Lcall encoder Mov P2 ,R4 Ret زير برنامه براي حركت چرخ راست به سمت عقب.
- چرخ سمت راست به p2 وصل است.
org 0700H Right _go _ Back Cnje R6,#8 , not –equa 1 Move R6,#8 ; ;R=1 Ljmp encoder- call 2 not – equal 1: jc les-than1 ;R6<1 Dec R6 ;R6>1 Ljmp encoder- cal l2 Les-than 1: mov R6,#8 ;R6<8 Encoder call 2: mov R7,R6 Lcall encoder Mov P2 ,R4 Ret زيربرنامه اي براي حركت دادن چرخ سمت چپ به جلو:
R5=8مرحله موتور را نشان ميدهد.
org 0800H Right _go _ Front Cnje R5,#8 , not –equa8 Move R5,#1 Ljmp encoder- call 3 not – equal 8: jc les-8 ;R5 <8 Mov R5, # 1 ;R5>8 Ljmp encoder- cal 3 Les-8: Inc R5 Encoder call 3: mov R7,R6 Lcall encoder Mov P0 ,R4 Ret موتور سمت چپ به P0وصل است.
زير برنامه اي براي عقب رفتن موتور سمت چپ:
org 0900H Right _go _ Back Cnje R5,#1 , not –equa1 Move R5,#8 ;R5=1 Ljmp encoder- call 4 not – equal 8: jc les-1 ;R5 <1 Dec R5 ;R5>1 Ljmp encoder- cal 4 Les-than 1: mov R5,# 8 ;R5<1 Encoder call 4: mov R7,R5 Lcall encoder Mov P0 ,R4 Ret زير برنامه تاخير كوتاه 4msec
org 0A00H nop nop nop nop زير برنامه تاخير متوسط 100msec
deley100m: mov R0 ,# 50 mov Tmod, # 0001 0001 b timer-set: mov Tho ,# 07 H mov Tho ,# D0 H set b Tro clr Tfo loop : jnb Tfo,loop clr Tfo dec R0 cjne R0,# 1, timer- set ret زير برنامه تاخير بلند 2sec
org 0b00H deley 2s: mov R3,# 20 again2: call deley 100 m dec R3 cjne R3 , 1H , again 2 ret زير برنامه تاخير 10sec
deley 10s: mov R3,# 100 again2: 1 call deley 100 m dec R3 cjne R3 , 1 , again 10 ret برنامه استارت:
org 0000H ljmp start 1 org 1000H start 1: mov P1, # FFH mov sp , # 1 call deley 2s start : mov A,P1 Anl A, # 1111 0000 b برنامه اصلي
main: mov P1,# FFH call deley 0 mov A,P1 Anl A, # 0000 1111 b
Mov R1,A State 1: cjne R1 ,# 0, state2 L call find-line Ljmp start State 2: cjne R1 ,# 1, state 3 L call go-left Ljmp start State 3: cjne R1 ,# 2, state4 L call go-front Ljmp start State 4: cjne R1 ,# 4, state5 L call go-right Ljmp start State 5: cjne R1 ,# 8, state6 L call go-back Ljmp start State 6: cjne R1 ,# 3, state7 L call go-front Ljmp start State 7: cjne R1 ,# 6, state8 L call find-front Ljmp start State 8: cjne R1 ,# 0CH, state9 L call go-right Ljmp start State 9: cjne R1 ,# 9, state10 L call go-left Ljmp start State 10: cjne R1 ,# 5, state11 L call go-front-one-right Ljmp start State 11: cjne R1 ,# 0AH, state12 L call go-front Ljmp start State 12: cjne R1 ,# 7, state13 L call go-front-one-right Ljmp start State 13: cjne R1 ,# 0EH, state14 L call go-right Ljmp start State 14: cjne R1 ,# 0bh, state15 L call go-left Ljmp start State 15: cjne R1 ,# 0DH, state16 L call one-front-one-right Ljmp start State 16: one-front-one-right Ljmp start زير برنامه هاي اصلي
1-حركت روبات به سمت جلو
go-front:
l call right-go- front l call left-go- front l call deley 100m ret 2-حركت روبات به سمت عقب
go-back:
l call right-go- front l call left-go- front l call deley 100m ret 3-چرخش روبات به سمت راست
go-right:
l call left-go- front l call deley 100m ret 4-چرخش روبات به سمت چپ
go-left:
l call right-go- front l call deley 100m ret 5-عمليات چرخيدن به دورخود از چپ
rotate-left
l call right-go-front l call left-go- back l call deley 100m ret 6-حركت يكي جلو – يكي راست
one-front-go- right:
l call right-go-front l call left-go-front l call deley 100m l call left-go-front l call deley 100m ret
موتورهاي پله اي:
معرفي:
موتورهاي پله اي به عنوان يكي از وسايل پر مصرف جهت تبديل پالسهاي الكتريكي به حركتهاي مكانيكي مطرح مي باشند. در كاربردهايي نظير ديسكها و چاپگرهاي سوزني و رباتيك موتورهاي پله اي جهت كنترل موقعيت استفاده مي شوند.
هر موتور پله اي داراي يك رتور مغناطيسي است كه در يك ميدان الكتريكي قرار مي گيرد.اغلب موتورهاي پله اي داراي چهار سيم پيچ هستند كه به صورت دو زوج پيچيده شده اند. اين نوع موتورها اغلب به نام موتورهاي پله اي چهار فاز معرفند. سيم مشترك بين زوج سيم پيچها امكان تغيير جهت جريان در هر دو دسته را با وصل يكي از سيم پيچها به زمين فراهم مي كنند.با اين كار قطبهاي مغناطيسي توليد شده درهر دو دسته تغيير مي كنند با گردش رتور شفت اصلي موتور پله اي با يك درجه ثابتي حركت مي كند و اجازه حركت ان به يك مو قعيت خاص را فراهم ميكند.اين حركت متمادي ثابت متكي بر يكي از اصول اساسي مغناطيس است كه قطبهاي همنام همديگر را دفع و قطبهاي غير همنام همديگر را جذب مي كنند.
مدار راه انداز موتور پله اي با اي سي به شماره uln 2003:
اين ا ي سي يك بافر not كننده با ترانزيستور خروجي كلكتور باز است. اگر بخواهيم همين مدار را با ترازيستور طراحي كنيم استفاده از يك ديود هم الزامي است.
سه نوع كنترل بر روي موتور پله اي مي توان داشت فرض مي گيريم موتور پله اي ازنوع چهار قطبي باشد:
1- تر تيب چهار مرحله اي معمولي پله كامل


http://www.autoir.com/upload/user/Image/Robot_1/9.jpg

2- تر تيب چهار مرحله اي پله نصفه يا نيم پله


http://www.autoir.com/upload/user/Image/Robot_1/10.jpg

3- تر تيب هشت مرحله اي پله كامل موجي


http://www.autoir.com/upload/user/Image/Robot_1/11.jpg

اما ترتيبي كه ما در ساخت روبات از ان استفاده كرده ايم ترتيب هشت مرحله اي است.
در مورد موتور پله اي كه بكار برده شده است سيم پيچهاي A وB وC وD و همچنين خروجيهاي Com همگي توسط سيمهاي رنگي مشخص شده اند خروجيهاي Com با رنگ سبز از موتور خارج شده اند.
درطرح سخت افزاري ترتيبي نهفته است . برنامه براي حالت راستگرد و حركت چرخ به طرف جلو بر نامه ريزي مي شود پس تنها موتوري كه راستگرد و جلوگرد است موتور سمت چپ است. براي اينكه با نوشتن يك برنامه و فراخواني ان براي هر دو چرخ عمل جلو رفتن صورت مي گيرد ، تر تيب اتصال سيمهاي موتور سمت راست را معكوس مي كنيم . به اين ترتيب كه :


http://www.autoir.com/upload/user/Image/Robot_1/12.jpg

بنابر اين با اين كار در حجم برنامه نرم افزاري صرفه جويي مي شود اگر قرار باشد موتورها حركت عقب گرد هم داشته باشند مي توان براي هردو چرخ فقط يك برنامه عقب گرد نوشت.
مدارات الكتريكي :
مدارات الكتريكي مورد نياز در با استفاده از نرم افزار EWB طراحي شده اند.
• نرم افزار شماره 1 (http://www.autoir.com/upload/user/Image/Robot_1/SYM%20CO1.ewb)
• نرم افزار شماره 2 (http://www.autoir.com/upload/user/Image/Robot_1/SYM%20CO2.ewb)

msd21
21st March 2011, 04:27 PM
تشکر میکنم خیلی کامل بود
البته جدیدا از میکروکنترولرهای AVR استفاده میشه چون کار باهاشون راحت تره و به جای زبان سخت اسمبلی از زبانهای سطح بالاتری مثل basic , c استفاده میشه که کارو راحت تر میکنه
برای مسیر یابی نیز از سنسورهای اپتوکوپلر مثل cny70 استفاده میشه که رنگ سیاه و سفید رو میتونه تشخیص بده

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد