رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

Mr_X

پست های پیشنهاد شده

با عرض سلام خدمت دوستان 

با آموزش 0 تا 100 ساخت یک ریات مسیریاب در خدمت دوستان هستم 

توی این آموزش سعی کردم اول مفاهیم پایه رو توضیح بدم وسپس ساخت ربات رو...

آموزش در 6 بخش هست 

امیدوارم با استقبالتون از این مطلب به من انگیزه ببخشید 

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

تاپیک حداقل هر 3 روز آپ میشه ...

اگه سوالی بود در خدمتم

بخش اول:آشنایی با رباتیک

بخش دوم:الکترونیک ربات

بخش سوم :میکروکنترلر AVR

بخش چهارم:موتورهای الکتریکی 

بخش پنجم:حسگرها(sensors)

بخش ششم:طراحی و ساخت ربات مسیریاب 7 سنسوره 

بخش مکانیک رو حذف کردم که وقتمونو نگیره چون بخش مکانیک در سطح رباتیک مبتدی کاربردی نیست و فعلا به دردتون نمیخوره...

به امید پیشرفت روزافزون بخش الکترونیک انجمن.

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


This is the hidden content, please


 


بخش اول : آشنایی با رباتیک


امروزه ربات ها به عنوان جانشین آینده انسان برای انجام کارهای سخت و تکراری مد نظر قرار گرفته میشوند و در ساختار بسیاری از آنها از رفتار حیوان الهام گرفته شده است حیوان ها مثل انسان دارای شعور نیستند و صرفا بر اساس غریضه عمل میکنند .ربات ها نیز از این جهت بسیار شبیه به آنها هستند و بر اساس برنامه ای که از قبل به آنها دادم ایم عمل میکنند


 در این میان ربات هایی که بتوانند رفتاری شبیه تر به انسان داشته باشند(انسان نما) بیشتر مورد توجه قرار میگیرند .


تایخچه رباتیک :


از آنجا که ربات و رباتیک از جمله مباحثی میباشند که در قرن اخیز موزد توجه قرار گرفته اند آشنایی اندکی با تاریخچه این علم میتواند شما را از ادامه روند پیشرفت آن مطلع کند.در ادامه یه نحوه ی به وجود آمدن و پیشرفت علم رباتیک پرداخته میشود:


سال1923میلادی:کارل چاپک اولین بار در نمایشنامه خود از کلمه ربات به عنوان <آدم مصنوعی>استفاده کرد .این کلمه از واژه robotaدر زبان چک به معنی"برده و کارگر مزدور"گرفته شده است.


سال 1940میلادی :شرکتwestinghouseسگی به نام اسپارکو ساخت به برای اولین بار در آن هم از قطعات مکانیکی وهم فطعات الکیریکی استفاده شد .در واقع این آغازگر علم رباتیک بود .


سال1942میلادی:کلمه رباتیک اولین بار توسط آیزک آسیموف در یک داستان کوتاه ارائه شد .رباتیک یعنی همه مباحثی که به ربات مربوط میشود.


دهه1950میلادی:تکنولوژی کامپیوتر پیشرفت کرد و باعث پیشرفت صنعت کنترل و در نتیجه پیشرفت رباتیک شد


سال 1954 میلادی:عصر ربات ها با ارائه اولین ربات انسان نما توسط جورج دوول شروع شد.


در مجموع موارد کاربرد ربات ها در همه ابعاد زندگی انسان به سرعت در حال گسترش میباشد تا کار های خطرناک را به جای انسان انجام دهند.


چون در انجمن انواع ربات ها توسط دوستان معرفی شده است من از انجام این کار صرف نظر میکنم


به امید پیشرفت روزافرون بخش الکترونیک انجمن


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


فصل دوم:الکترونیک ربات ها


قسمت اول:


از آنجا که الکترونیک یکی از بخش های اصلی و در حقیقت بخش کنترل و فرمان ربات است .آشنایی کامل با مباحث مطرح در الکترونیک و بررسی المانهای مختلف الکترونیکی کاملا ضروری به نظر میرسد .در این فصل به معرفی المانهای پر کاربرد الکترونیک میپردازیم .


شما در آینده خواهید توانست با کنار هم قرار دادن المانهای ساده به مداراتی دست پیدا کنید که به راحتی ربات های بسیار پیشرفته و پیچیده را کنترل میکنند.


2-1مقاومت:


مقاومت برای محدود کردن جریان الکتریکی به کار میرود برای مثال استفاده از مقاومت به صورت سری با ledجریان عبوری از آن را محدود میکند .


شکل زیر مقاومت و نماد مداری آن ا نمایش میده


This is the hidden content, please


 


نحوه ی خواندن مقاومت :


مقاومت بر حسب اهم اندازه گیری میشود و با نماد نمایش داده میشود.برای مقاومتهای زیاد از نمادهای k(کیلواهم)وM(مگااهم)استفاده میشود که برابرند با :


1000=1k


1000k=1M


مقادیر مقاومتها معمولا توسط نوارهای رنگی روی آنها نمایش داده میشود.که هر رنگ یک عدد را نشان میدهد (طبق جدول زیر)


This is the hidden content, please


بیشتر مقاومتها  دارای 4 نوار میباشند .که دو نوار اول دو عدد اول را مشخص میکنند .و نوار سوم تعداد صفر ها را مشخص میکند


نوار چهارم نیز درصد خطای مقاومت را نشان میدهد (اگه نوار چهارم وجود نداشته باشد درصد خطای مقاومت 20%است).


برای مثال در صورتی که نوارهای روی یک مقاومت از چپ به راست به ترتیب قرمز ،بنفش،زردو طلایی باشد مقدار مقاومت برابر 270000اهم میشود که برابر270 کیلواهم است و با توجه به اینکه نوار چهارم طلایی است و درصد خطا 5% است مقدار واقعی مقاومت بین 25600اهم تا 283500اهم است .


27000-27000*5%=256500


27000+27000*5%=283500


در ادامه سایر علامتهایی که برای نمایش مقدار مقاومت در مدار به کار میرود با مقدار معادل هریک ارائه میشوند:


560R560


2K72700=2.7K


39K39k


1M01000k=1.0M


رابطه بین سه کمیت مقاومت ،جریان و ولتاژ که به قانون "اهم"معروف است به سه صورت زیر است :


V=R*I          ,I=V\R           ,R=V\I


در مدار میتوان مقاومتها را به دو صورت سری و موازی بست که در ادامه به توضیح آنها میپردازم:


ترکیب مقاومتها به صورت سری :


اگر یک سر مقاومتها به هم متصل شود آنها را به صورت سری بسته ایم (مطابق شکل) و ترکیب آنها مقاومتی برابر Rمیسازد که به صورت زیر محاسبه میشود:


R=R1+R2+R3+…


This is the hidden content, please


ترکیب مقاومتها به صورت موازی :


اگر دو سر دو یا چند مقاومت به هم متصل باشد به آنها موازی میگوییم (مطابق شکل)که مقاومتی برابر Rمیسازند که از رابطه زیر بدست میاید:


1/R=1\R1+1\R2+1\R3+…


اگر فقط دو مقاومت به صورت موازی بسته شده باشد میتوان معادل آنها را از فرمول زیر محاسبه کرد:


R=R1*R2\R1+R2


This is the hidden content, please


نکته:در مقاومتهای موازی مقاومت معادل حتما از کوچکترین مقاومت کمتر است .


مقاومت متغیر یا پتانسیومتر:


مقاومتی است که میتوان مقدار آن را به صورت دلخواه تغییر داد.و شکل بعضی از آنها در زیر آمده است :


 


This is the hidden content, please


به امید پیشرفت روزافزون بخش الکترونیک انجمن


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


با عرض سلامی دوباره خدمت دوستان عزیز

با توجه به اینکه یکی از دوستان انجمن در پیام خصوصی فرمودند که این بخش ها قبلا توضیح داده شده و من باب احترام به سروران بزرگواری که قبلا این بخش ها رو توضیح دادن .

من از توضیح ادامه این بخش ها امتناع میکنم و فقط یک معرفی اجمالی ازAVRمیکنم و بعد هم میرسم سراغ آموزش ساخت ربات

با تشکر از همه دوستان که با تشکرشون باعث دلگرمی اند...

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


میکروکنترلرهای AVR:

امروزه میکروکنترلرها با ساختاری بسیار ساده ،به عنوان یکی از ابزارهای کنترلی قدرتمند،به وفور مورد استفاده قرار میگیرند.این کاربرد ها گستره ی وسیعی از ربات های تعقیب خط ساده تا کنترل یک بخش از کارخانه را در بر میگیرد.

میکروکنترلر در حقیقت یک کامپیوتر کوچک و ارزان قیمت است .

هر میکروکنترلر مثل کامپیوتر دارای بخش های مختلفی است که عبارتند از :

·       حافظه های FLASH,RAM,EEPROMو رجیسترها

·       پورت های ورودی و خروجی

·       اسیلاتور یا نوسان ساز

·       تایمر/شمارنده

·       مبدل آنالوگ به دیجیتال (ADC)

·       مقایسه کننده ی آنالوگ

·       وقفه ها

·       ارتباط سریال

در ریز معرفی گذرا بر بخش های مختلف میکروکنترلر میکنم:

واحد پردازش مرکزی :

به طور ساده میتوان گفت واحد پردازش مرکزی یا ریز پردازنده یک مدار پیچیده الکترونیکی است که میتواند عملیات ریاضی ،منطقی،کنترلی و ...را انجام دهداما اینکه کدام مدار چه عملیاتی را انجام دهد باید به وسیله کدهای متناظر با آن عملیات به ریز پردازنده اعلام شود.

حافظه:

انواع حافظه موجود در میکرو عبارتند از :EEPROM,RAM,FLASHو رجیسترها

·       حافظه FLASH:برای ذخیره برنامه اجرایی میکروکنترلر به کار میرود این حافظه غیر فرّار را میتوانید بارها پاک کنید و دوباره برنامه مورد نظر خود را روی آن پیاده نمایید.

·       RAM:حافظه مربوط به داده است .متغیرهایی که در طول برنامه تعریف میشوند در RAMقرار میگیرند به علت قابلیت دسترسی تصادفی این حافظه از سرعت نوشتن و خواندن بسیار بالایی برخوردار است

·       EEPROM:برای ذخیره آن دسته از پارامترهای برنامه به کار میرود که باید پس از قطع برقذ هم چنان باقی بمانند .

·       رجیسترها:حافظه های کوچکی میباشند که درون واحد پردازشگر مرکزی جایگذاری شده اند وبرای ذخیره موقتی مقادیری به کار میروند که پردازشگر مرکزی با آنها کار میکند.داده های مربوط به پیکربندی بخش های میکروکنترلر(از این به بعد به اختصار میگم میکرو)درون رجیستر ها قرار میگیرد.

 

پورت های وردی /خروجی:

پورت های ورودی /خروجی در حقیقت رابط میان میکرو و محیط خارج از آن میباشند .به طور کلی میتوان پایه هایی از میکرو را که به عنوان ورودی یا خروجی دیجیتال قابل برنامه ریزی میباشند را پورت ورودی خروجی نامید.

 

اسیلاتور:

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

تایمر/شمارنده:

در میکروهای AVRیک قسمت از حافظه به گونه ای طراحی شده است که مقدار عددی محتوای آن با اعمال هر پالس به این بخش .یک واحد افزایش میابد و هنگامی که محتوای این بخش از حافظه به بیشترین مقدار رسید .صفر میشود و سیستم منتظر پالس بعدی میماند این بخش از حافظه به سادگی به عنوان شمارنده رویدادهای خارجی یا پالس های دیگر باشد .

حال اگر ورودی شمارنده را به اسیلاتور بدهیم تا پالسهای آن را بشمارد میتوانیم به آن تایمر بگوییم .

مبدل آنالوگ به  دیجیتال:

بسیاری از کمیّت های اطراف ما.مانند نور ،گرما،طول اجسام و... کمیت های پیوسته میباشند .و در بسیاری از موارد خروجی حسگر های مورد استفاده نیز به صورت دیجیتال نیست .برای اینکه میکرو بتواند مقادیر آنالوگ را نیز اندازه گیری نماید به بخشی مجهز شده است که به آن مبدل آنالوگ به دیجیتال میگوند .این بخش متناسب با مقدار ولتاژ آنالوگ ورودی عددی 10 بیتی (بین 0 تا 1023)را به عنوان خروجی در نظر میگیرد.

 

مقایسه کننده آنالوگ:

این بخش از میکرو دقیقا مانند یک OPAMPعمل میکند و مقادیر آنالوگ در دو ورودی پایه مثبت و پایه منفی را با هم مقایسه میکند .زمانی که ولتاز موجود در ورودی مثبت بالاتر از ولتاژ موجود در ورودی منفی باشد خروجی مقایسه کننده یک و در غیر این صورت صفر میماند.

 

وقفه ها :میکروها دستور هایی که برایشان در نظر گرفته شده است را به صورت متوالی اجرا میکنند .با وجود این میکروها نیز ممکن است با شرایط پیش بینی نشده مواجه شوند .وبه ناچار اجرای دستور های عادی را متوقف کنند و متناسب با شرایط به وجود آمده دستورهایی را اجرا نمایند .که این کار را توسط وقفه انجام میدهند

 ارتباط سریال:

به طور کلی دو روش معمول برای انتقال اطلاعات عبارتند از :ارتباط موازی و ارتباط سری.

در ارتباط سریال همانطور که از نام آن پیداست .داده ها به طوری متوالی ارسال یا دریافت میشوند .به این ترتیب داده ها به صورت متوالی روی کانال ارسال میشوند و لازم است توافق خاصی بین دو طرف ،بر نحوه ی چیدمان و ارسال وجود داشته باشد ایت توافق نامه ،استاندارد یا پروتکل ارتباطی نام دارد.

 

میکرکنترلرهای AVR:

شرکت ATMELبا تولید محصولات گوناگون و دارای کاربرد ویژه یکی از معروف ترین سازندگان میکرو به شمار میرود .میکرو های خانواده ی AVRاز معروف ترین و پرمصرف ترین میکروهای ساخت این شرکت میباشند .

کاربری آسان،قیمت ارزان،امکانات گسترده،مصرف کم ،سرعت پردازش بالا،دستورالعمل های قوی،زبانهای مختلف برنامه نویسی و کامپایلرهای متعدد میکرو های خانواده AVRرا یکی از پرکاربرد ترین انواع میکرو در میان مصرف کننده گان بدل کرده است .

سه زیرمجموعه معروف و پرکاربرد این خانواده عبارتند از:

1-میکروهای ATtinyXX

2-میکروهای AT90SAXX

3-میکروهای ATmegaXX

 

 

به امید پیشرفت روزافزون بخش الکترونیک انجمن

تشکر شما باعث دلگرمیه

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


با سلام دوباره خدمت همه دوستان


خب دیگه وقتشه که آموزش ساخت ربات رو شروع کنیم


در این پروژه قصد داریم با ساخت و راه اندازی یک ربات مسیریاب با 7 سنسور آشنا شویم که .برای اینکه پروژه به  صورت کاملا عملی و قابل فهم باشد توضیحات مربوط به آن را در دو قسمت سخت افزار و نرم افزار توضیح دادم


بخش اول:سخت افزار


قسمت اول


در حالت کلی میتوان بخش های اصلی ربات را به صورت زیر معرفی کرد .


1-سنسورها


2-مبدل آنالوگ به دیجیتال


3-میکروکنترلر


4-درایور موتور


5-موتور


بررسی سنسورها:


اساس کار یک ربات تعقیت خط بر سنسورهای مادون قرمز یا IR (Inferaref)و یک جفت موتور DCاستوار است .


موتور ها در عقب ربات و در روبروی هم قرار میگیرند و در جلوی ربات ار یک جسم صاف و لغزنده بعنوان تکیه گاه و چرخ جلو استفاده میشود .(عموما از چرخ هرز گرد استفاده میشود )هنگامیکه هر دو موتور روشن باشند ربات به طور مستقیم حرکت خواهد کرد و زمانیکه یکی ار موتورهت روشن و دیگری خاموش باشد ربات به سمتی که موتور خاموش است میچرخد .به این نوع حرکت مدل تانکی میگویند .


سنسورها نیز دو نوع فرستنده و گیرنده موجود میباشد .در یک ربات تعقیب خط این دو سنسور در کنار هم تشکیل یک جفت را میدهند که قادر به تشخیص رنگ سیاه و سفید میباشند .بدین صورت که سنسور فرستنده امواج مادون قرمز را میفرستد و این امواج به سطح سفید برخورد کرده و بازتاب میشوند سپس این امواج منعکس شده توسط سنسور گیرنده دریافت میشوند ودر نتیجه میزان جریان دهی سنسور گیرنده افزایش میابد ..اما اگر موج ارسالی توسط سنسور فرستنده به سطح سیاه برخورد کند جذب میشود و فقط مقدار بسیار جزئی از آنها منعکس میشود .در نتیجه میزان جریان دهی سنسور گیرنده به شدت کاهش میابد با بکار گیری یک مدار ساده میتوان تغییرات جریان در سنسور گیرنده را به تغییرات ولتاژ تبدیل کرد و بدین ترتیب سطح سیاه از سیط سفید تشخیص داده میشود .


برای تبدیل تغییرات جریان به ولتاژ کافیست تا از یک مقاومت سری شده با سنسور گیرنده مطابق با شکل زیر استفاده کنیم .در این صورت هنگامی که سطح سفید باشد جریان دهی گیرنده زیاد خواهد شد و میتوان این سنسور را اتصال کوتاه در نظر گرفت .بنابراین در خروجی SO0برابر صفر منطقی خواهد بود (در استاندارد TTLولتاژهای 0تا2ولت برابر صفر منطقی در نظر گرفته میشود )هنگامیکه سطح سیاه باشد میزان جریان دهی سنسور بشدت کم میشود .بنابراین میتوان سنسور را به صورت مدار باز در نظر گرفت ،پس ولتاژ +5vاز طریق مقاومتK10در خروجی SR0ظاهر میشود .


 


This is the hidden content, please


نکته ای که در به کارگیری سنسور مادون قزمر گیرنده بسیار حائز اهمیت است بایاس معکوس بودن آن است چنانچه این سنسور به صورت مستقیم بکار گرفته شود با یک دیود معمولی هیچ فرقی ندارد و نسبت به امواج مادون قرمز موجود هیچ عکس العملی نشان نمیدهد .


به امید پیشرفت روز افزون بخش الکترونیک انجمن


تشکر شما باعث دلگرمی است


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


قسمت دوم :


مبدل آنالوگ به دیجیتال:


از آنجایی که ممکن است در اثر تغییرات نور محیط و یا ایجاد سایه روشن در اثر حرکت ربات مقدار ولتاژ خروجی SR0 به سطح منطقی 0 و 1 استفاده کرده ایم .در واقع میتوان گفت که ولتاژ خروجی SR0بصورت آنالوگ میباشد برای تبدیل آن به مقدار دیجیتال مطابق شکل زیر از اپ-امپ LM324استفاده کرده ایم


 


This is the hidden content, please


همانطوریکه در شکل بالا مشخص شده است ولتاژ دریافتی از سنسور به ورودی مثبت اپ-امپ و ولتاژ مرجع ،به ورودی منفی اپ-امپداده شده است .بنابراین مدار یک مقایسه کننده ی مثبت است بدین معنی که هرگاه ولتاژ پایه ی مبت از ولتاژ پایه منفی بیشتر باشد خروجی برابر یک منطقی خواهد شد و هر گاه ولتاژ پایه ی مثبت از پایه ی منفی کمتر باشد خروجی برابر صفر منطقی میشود ولتاژ مرجع اپ-امپ توسط یک پتانسیومتر بر روی مقداربیشتر از ولتاژ SR0در حالت مواجهه با سطح سفید و کمتر از ولتاژSR0در مواجهه با سطح سیاه تنظیم شده است .


چنانچه مدار را از ابتدا بررسی  نماییم .متوجه میشویم که هنگام نزدیک شدن سنسور با سطح سفید امواج ارسالی توسط فرستنده بخوبی در گیرنده دریافت شده و در نتیجه مقدار جریان دهی گیرنده افزایش می یابد که در پی آن ولتاژ SR0کم میشود (کمتر از ولتاژ مرجع)بنابراین ولتاژ خروجی اپ-امپ برابر سطح منطقی 0میشود و در مواجهه سنسور با سطح سیاه امواج ارسالی توسط فرستنده در گیرنده دریافت نشده و در نتیجه مقدار جریان دهی گیرنده کاهش میابد که در پی آن ولتاژ SR0زیاد میشود (بیشتراز ولتاژ مرجع)بنابراین ولتاژ خروجی اپ-امپ برابر سطح منطقی 1 میشود.


برای نشان دادن وضعیت سنسورها در هنگام کار ربات از یک LEDسری با مقاومت استفاده شده است در تیجه وقتی که سنسور سطح سیاه را ببیند LEDروشن میشود و هنگامیکه سطح سفید باشد LEDخاموش میشود ازآنجاییکه در مدار ربات از 7 سنسور استفاده شده است برای راه اندازی مدار باید از 7 عدد اپ-امپاستفاده کنیم .آی سی LM724 در واقع از 4 عدد اپ-امپ تشکیل شده است که هر کدام میتوانند بطور مجزا مورد استفاده قرار گیرند .


چیدمان سنسور ها:


اکنون میتوان از 0 و 1 های ایجاد شده توسط اپ-امپ بعنوان ورودی برای میکروکنترلر استفاده کرد .برای سهولت در برنامه نویسی ،سنسورها نامگذاری شده اند و به ترتیب خاصی  قرار گرفته اند و به همان ترتیب نیز به میکرو متصل میشوند .در شکل زیر نحوه ی چیدمان سنسورها و نام هریک بهمراه محل قرارگیری شان نشان داده شده است 


 


 


This is the hidden content, please


 


همانطور که از شکل بالا مشخص است آرایش سنشورها به شکل نوک یک پیکان میباشد که آرایش بسیار مرسومی است .در این ربات سنسورهای کناری یا زاویه 60 درجه نسبت به سنسور مرکزی قرار


گرفته اند این امر سبب میشود که تشخیص زاویه های بین 60و120 درجه ی موجود در طول مسیر ساده تر شود .برای درک بهتر وظیفه ی هر سنسور ،کار ها کدام را بررسی میکنیم .البته برای بررسی دقیق باید قسمت برنامه نویسی را هم مورد بررسی قرار دهیم که توضیحات مربوط بع آن در قسمت نرم افزار ذکر خواهد شد.


This is the hidden content, please


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


سلام بر همه ی اعضاء گارد ایران 

با عرض پوزش به خاطر تاخیر چند روزه ام .

دیگه دم امتحاناته و همه مشغول درس خوندن .منم یکم شرم شلوغه به محض اینکه بتونم مطالب جدید رو میذارم 

با تشکر از صبر شما 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


وظایف هر یک از سنسور ها :


سنسور S3 :این سنسور دو وظیفه بر عهده دارد :


وظیفه اول :کنترل خط و مستقیم حرکت کردن ربات به کمک سنسورهای جانبی S2وs4.


وظیفه دوم:در ربات های تعقیب خط گاهی ممکن است ربات از مسیر مستقیم منحرف شود که این امر اغلب به دلیل وجود خطا های مکانیکی در ساخت ربات میباشد .از جمله این خطا ها میتوان به هم محور نبودن موتورها.تاب برداشتن چرخ ها .تفاوت ذاتی سرعت موتور ها و...اشاره کرد .در این صورت باید برای انحراف ربات روشی را به کار برد که یکی از روشهای متداول در این ربات استفاده شده است .


با توجه به شکل الف هنگامی که سنسور s3 برروی خط باشد موتور های ربات سرعت ثابتی دارند .اما هنگامیکه یکی از حالات شکل ب اتفاق بیفتند میکروکنترلر با اعمال یک پالس pwmسبب میشود یکی از موتور ها با سرعت کمتری نسبت به موتور دیگر بچرخد .در نتیجه ربات به سمت خط منحرف میشود و در این انحراف تا زمانیکه ربات مجددا به وضعیت شکل الف برگردد ادامه خواهد داشت بدیهیست که با رسیدن به وضعیت الف ربات برنامه ی مربوط به آنرا اجرا کرده و در نتیجه باز هم بطور مستقیم به حرکتش ادامه میدهد .


This is the hidden content, please


توضیح وظیفه دوم :در طول مسیری که یک ربات تعقیب خط طی میکند معولا پیچ هایی با زاویه های 60و90و120 درجه و نیر انحناهایی به شکل خم وجود دارند .برای تشخیص این حالات از ترکیب سنسور s3و سنسور های S1وs5استفاده میشود .در تشخیص پیچ های پیچ های 60 درجه سنسور های s2وs4نیز به این ترکیب اضافه میشوند .


مطابق شکل های زیر هنگامیکه سنسور s3 از خط خارج شود وسنسور های s1وs5بر روی خط قرار داشته باشند میتوان که یک پیچ یا انحنا را تشخیص داد .در این صورت باید یکی از موتورها را خاموش کنیم تا ربات عمل چرخش را انجام دهد و در ابتدای مسیر بعد از پیچ قرار گیرد.عمل چرخش تا زمانیکه سنسور s3روی خط قرار گیرد ادامه خواهد داشت و بعد از آن هر دو موتور روشن میشوند که در پی آن ربات باز هم بطور مستقیم به حرکتش ادامه میدهد .


This is the hidden content, please


This is the hidden content, please


سنسور های s0وs6:این سنسور ها تیز دو وظیفه دارند .


وظیفه اول:تشخیص پیچ های 60 درجه خاص !


وظیفه دوم :تشخیص معکوس شدن پیست (زمینه سیاه و خط سفید)در ترکیب با سایر سنسورها.


توضیح وظیفه اول: دو سنسور انتهایی یعنی s0وs6با زاویه بیشتری نسبت به سایر سنسورها قرار گرفته اند تا تشخیص پیچ های 60 درجه آسان تر شود .چون ممکن است ربات بصورت غیر مستقیم و با زاویه به پیچ 60 درجه برسد لذا بعید است سه سنسور s1وs3وs2یاs5,s6,s3بطور هم زمان روی خط قرار نگیرند . در این مواقع سنسور های کناری یعنی s0یا s6 زودتر پیچ را تشخیص میدهند


This is the hidden content, please


توضیح وظیفه دوم :


معمولا در پیست هایی که ربات باید آن را طی کند موانعی در کنار خط اصلی قرار دارند .در اکثر مواقع پهنای این موانع حداکثر5سانتیمتر است مانند شکل های زیر:


برای اینکه مانع مشخص شده در شکل آخر با معکوس شدن پیست اشتباه نشود .فاصله ی دو سنسور انتهایی یعنی s0وs6از هم بیشتر از 12 سانتی متر در نظر گرفته شده است .(5+5+2)بتابراین هنگامیکه دو سنسور انتهای زمینه ی سفید را ببینند مانع را تشخیص میدهند و ربات بطور مستقیم از مانع عبور خواهد کرد .اما در مواقعی که دو سنسور انتهایی هم زمینه ی سیاه را ببینند معکوس شدن پیست تشخیص داده میشود مانند شکل زیر:


This is the hidden content, please


This is the hidden content, please


This is the hidden content, please


 


 


 


به امید پیشرفت روز افزون بخش الکترونیک انجمن


ColEctOR


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


میکروکنترلر و وظیفه آن:


از جمله مهم ترین قسمت های یک ربات ،میکروکنترلر آن است که در واقع هدایتگر ربات است در ساخت این ربات از میکروکنترلرat ainy2313که از خانواده avrاست استفاده شده .همانطوریکه قبلا ذکر شد خروجی سنسورها .ابتدا به ای سیlm324وارد میشود و پس از تبدیل شدن به مقدار دیجیتال (صفر و یک های مشخص کننده ی رنگ زمینه و خط)به یکی از پورت های میکرو کنترلر وارد میشود .


برای راحت تر شدن خواندن مقدار سنسورها و نیز پیچیده نشدن کد های حاصله ،سنسورها به ترتیب شماره شان به پایه های پورت Dوصل شده اند .بدین معنی که s0به D0وs1بهD1و... وصل شده اند .


بنابراین با خواندن عدد موجود بر روی پورت Dمیتوان موقعیت ربات را تشخیص داد وبرنامه ای مناسب برای آن نوشت .برای درک بهتر این موضوع کد یا عدد حاصل از چند موقعیت در شکل زیر نشان داده شده است:


This is the hidden content, please


همانطوریکه در شکل بالا مشخص شده است سنسورهای موجود بر روی خط سیاه کد یک میدهند و سنسورهایی که روی زمینه ی سفید هستند کد صفر میدهند .که این کد ها کنار هم بر روی پورت Dقرار میگیرند بنابراین در هر لحظه با خواندن مقدار پورت Dمیتوان تشخیص داد که ربات در کدام موقعیت قرار دارد و چه عکس العملی باید نشان بدهد.


نکته ای که بسیار حائز اهمیت است اینست که پورت Dاین میکروکنترلر بطور ذاتی دارای 7 پایه است.در حالیکه هر پورت بطور استاندارد باید 8 پایه داشته باشد از آنجائیکه شماره پایه های پورت dاز 0 تا 6 میباشد  بنابراین بیت هشتم (پایه ی شماره 7 که وجود خاجر ندارد)حالت بی اهمیت خواهد داشت .دین معنی که در برنامه نویسی میکروکنترلر میتوانیم بجای آن مقدار 0 یا 1 قرار دهیم .بدون اینکه مشکلی در امر خواندن کد سنسور یوجود آید.یا اینکه اصلا مقداری برای آن لحاظ نکنیم و عدد باینری را بجای هشت بیت (یک بایت )بصورت 7 بیتی بنویسیم .که در نوشتن برنامه ی ربات از همین حالت استفاده کرده ایم


به امید پیشرفت روز افزون بخش الکترونیک انجمن


ColEctOR


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


مدار تغذیه ربات :


از آنجاییکه موتور های بکار رفته در ساخت ربات 12 ولتی میباشند .لذا حداقل ولتاژورودی مدار 12 ولت میباشد از طرفی برای تامین ولتاژ موزد نیاز قطعات از یک رگولاتور 7805 استفاده شده است که برای پایدار کردن ولتاژ آن از دو خازن 1000 میکروفارادی در ورودی و خروجی آن استفاده کرده ایم .توجه داشته باشید که حتما از هیت سینک برای این رگولاتور استفاده کنید .


This is the hidden content, please


 


تنظیم سرعت موتور ها:


برای تنظیم سرعت ربات از دو شیوه ی نرم افزاری و سخت افزاری استفاده شده است .در حالت نرم افزاری با ایجاد پالس های PWMمتفاوت میتوان سرعت ربات را تغییرداد(در قسمت برنامه نویسی بیشتر به این بحث میپردازیم ).


در حالت سخت افزاری برای تغییر سرعت ربات از یک رگولاتور LM317استفاده شده است است رگولاتور قابلیت ایحاد ولتاژ های متفاوت در یک محدوده گسترده را دارد بعبارت دیگرمقدار ولتاژ خروجی این رگولاتور از طریق یک پتانسیو متر قابل تنظیم است .بنابراین میتوان با کم و زیاد کردن میزان ولتاژ موتور ها سرعت آنها را تغییر داد .


مدار رگولاتورLM317مطابق با دیتاشیت آن بسته شده است و از آنجاییکه ولتاژ وروردی آن 12 ولت است خروجی آن میواند بین 2/1ولت تا 12ولت تغغیر کند .وظیفه خازنهای C3وc4پایدار کردن ولتاژ ورفع ریپل میباشد .


This is the hidden content, please


به امید پیشرفت روزافزون بخش الکترونیک انجمن


ColEctOR


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


  • 2 هفته بعد...

تغذیه و راه اندازی موتور ها :


برای راه اندازی موتور ها از درایور معروفL298استفاده کرده ایم .این درایور میتواند دور موتور DCرا بطور هم زمان و مجزا از هم کنترل کند .بدن معنا که میتواند یک موتور را روشن نگه دارد در حالی که موتور دوم در حال چرخش باشد .یا یم موتور به سمت راست بچرخد و موتور دوم به سمت پچ بچرخد.علت استفاده از L298برای راه اندازی موتور ها جریان زیادی است که موتور ها از منبع میکشند .در صورتی که موتور ها را فراهم کنند لذا میکرو کنترلر فرامین لازم را از طریق پایه های ورودی L298چهار حالت را برای موتور تعریف کرد که عبارتند از :الف)حرکت مستقیم  ب)حرکت معکوس   ج)کنترل سرعت با PWM  د)ترمز


نکته ی بسیار مهمی که در مورد این دروایور وجود دارد این است که حالت ترمز سریع در آن به خوبی اتفاق نمی افتد !یعنی شفت موتور ها به صورت آنی قفل نمیشوند و این امر باعث ایجاد انحراف در موقع دور زدن ربات و در پی آن عدم توانایی در کنترل صحیح ربات میشود .برای رفع این مشکل برای یک لحظه بسیار کوتاه جهت چرخش موتور ها را عکس میکنیم و سپس حالت ترمز را فعال میکنیم .با انجام این کار شفت موتور ها در لحظه ای که جهت چرخش معکوس میشود بطور آنی قفل میگردد و پس از آن با ایجاد حالت ترمز شفت ها در حالت قفل باقی میماند .در قسمت نرم افزار به این موضوع بیشتر رسیدگی میکنیم .(معرفی نحوه ی کارکرد این قطعه خود مقاله ای کامل است و در اینجا به اختصار توضیح داده شده .در آینده در پستی جدا به طور کامل نحوه ی کارکرد آن را توضیح خواهم داد)


لیست کامل قطعات مورد نیاز:


 


میکروکنترلر ATTINY2313


                                       1عدد


آپ-امپ LM324


                         2عدد 


کریستال 8MHz


                         1عدد


خازن 27PF


                       2عدد


خازن1000Uf


                        4عدد


تک سوئیچ 4 پایه


                         2عدد


کلید  قطع و وصل


                         2عدد


مقاومت 10k


                       4عدد


مقاومت220


                         9عدد


مقاومت 1k


                        10عدد


رگولاتور 7805


                         1عدد


رگولاتور LM324


                         1عدد


دیود 1N5819


                        8عدد


مقاومت330


                        7عدد


پتانسیومتر10K


                        3عدد


کانکتور مخابراتی 2 پین


                         2عدد


درایورموتورL298


                         1عدد


موتور 600دور25GA


                         2عدد


LED


           7عدد


 

 

در اینجا قسمت سخت افزار ربات به پایان میرسه و باید بگم که من از توضیح مراحل ابتدایی مثل چگونگی لحیم کردن و قطعه گذاری صرف نظر کردم .چون کسی که میخواد ربات مسیریاب بسازه باید حداقل این مطالب رو از قبل بلد باشه و در ادامه هم چند عکس از ربات میذارم که در اینجا فقط میخوام برد ها رو ببینید و مکانیک این ربات صحیح نیست .بعدا عکسهای ربات اصلاح شده رو میذارم 


به امید پیشرفت روز افزون بخش الکترونیک انجمن


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


اینم چندتا عکس از مدار ربات

This is the hidden content, please

 

This is the hidden content, please

 

This is the hidden content, please

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


با عرض سلام دوباره خدمت دوستان گرامی


خب تا الان قسمت سخت افزار ربات رو توضیح دادیم و حالا میریم سراغ نرم افزار و  تشریح خط به خط برنامه .


فایل کامل برنامه در پیوست قرار داده میشود


برنامه این ربات با زبان بیسیک نوشته شده است .


تعیین نوع میکروکنترلر و فرکانس کاری :


در قسمت برنامه نویسی قبل از هر کاری ابتدا باید میکروکنترلر مورد نظر و فرکانس کاری آنرا مشخص کنیم که این کار توسط دستورات زیر در خط اول و دوم برنامه اجرا میشود :


$regfile  = "attiny2313.dat"


$crystal  =  8000000


پیکره بندی امکانات میکروکنترلر:


همانطوریکه در برنامه مشخص است نوع میکروکنترلر،ATtiny2313بوده و فرکانس کاری آن 8 مگاهرتز میباشد .سپس باید تنطیمات مربوط به پورت های میکروکنترلر و قسمت تایمر (pwm)انجام شود.


Config Timer1 = pwm  , pwm = 10 , compare A pwm = clear down , compare B pwm = clear Down , preascale = 64


Config  Portd = Input


Config  Portb = Output


طبق تنظیمات انجام شده از تایمر یک در مد pwmو ده بیتی استفاده شده است .تایمر یک در این مد دو خروجی AوBدارد که هر دو در حالت نرمال (clear down)پیکره بندی شده اند .بدین معنا که در مد ده بیتی به ازای عدد 0 ،مقداردیوتی سایکل هم صفر خواهد بود و به ازای عدد 1023 مقدار دیوتی سایکل ماکزیمم میباشد .زیرا ده بیتی بودن مد تایمر سبب ایجاد 1024 واحد میشود که این واحد ها از عدد 0 شروع میشوند و به عدد 1023ختم میشوند.


Preascale=64مشخص کننده ی این است که در فرکانس پالس pwmایجاد شده 125KHzمیباشدکه از رابطه 8000000/64=125000بدست میاید.


به امید پیشرفت روز افزون بخش الکترونیک انجمن


*تشکر شما باعث دلگرمیه *


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


مقدار دهی اولیه به امکانات:

در قسمت بعدی مقدار دهی اولیه به پورت ها و دیوتی سایکل ها پرداخته ایم .

'motore rast

Pwm1a = 945

Portb.0 = 1

Portb.1 = 0

'motore chap

Pwm1b = 1023

Portb.6 = 0

Portb.7 = 1

برای خواناتر شدن برنامه و قابل فهم تر بودن آن از همان ابتدا پایه ها و خروجی pwmمتصل به موتور سمت راست را در کنار یکدیگر نوشته و مقدار دهی میکنیم.

که برای موتور چپ داریم :

PORTB.6INPUT2

PORTB.7INPUT1

PORTB.4ENABLE A

 وبرای موتور راست داریم :

PORTB.0INPUT4

PORTB.1INPUT3

PORTB.3 ENABLE B

بنابراین با یک بودن PORTB.7و صفر بودن PORTB.6موتور سمت چپ درجهت مستقیم میچرخد .از طرفی با یک بودن PORTB.0و صفر بودن PORTB.1موتور سمت راست نیز در جهت مستقیم میچرخد .

همانطوریکه متوجه شدید مقدار PWMبرای موتور راست و چپ با هم متفاوت است .دلیل این امر اینست که با وجود یکسان ویک جنس بودن موتور ها باز هم سرعت چرخش آنها با هم متفاوت است .این اختلاف جزئی یطور ذاتی وجود دارد هم چنین بعضی از موارد مانند کج بودن موتور ها کج بودن محور موتور ها ،تاب داشتن چرخ هاو... نیز ممکن است باعث بروز این حالت شود

برای رفع این اختلاف مقدار PWMموتوری که سرعت بیشتری داشته را کم  کرده ایم .عدد945بطور تجربی و از راه آزمون و خطا بدست آمده است .

برای پیدا کردن یک مقدار مناسب میتوانید بعد از ساخت شاسی ربات ،موتور ها را روشن کنید و ربات را در یک مسیر مستقیم و طویل (حدود 2 متر )تست کنید تا بتوانید ببینید که ربات به کدام جهت منحرف میشود .مثلا اگر ربات به سمت راست منحرف شود نشان میدهد که سرعت موتور سمت چپ زیاد است ،بنابراین باید مقدار PWM برای موتور سمت چپ کمتر شود کم کردن مقدار PWM باید دائما تکرار و تست شود تا مقدار مناسب بدست آید .

به امید پیشرفت روز افزون بخش الکترونیک انجمن

**تشکر شما باعت دلگرمیه**

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


  • 2 هفته بعد...

با سلام دوباره خدمت دوستان


ببخشید که یه مدت طول کشید تا ادامه آموزش رو بذارم خب بریم سراغ ادامه آموزش:


بررسی برنامه اصلی :


در حلقه اصلی برناهمه فقط یک دستور نوشته شده است و آن هم دستور Gosub Whiteمیباشد که سبب میشود تا برنامه اصلی به قسمت زیر تابع whiteبرود .کلمه Endنیز مشخص کننده ی انتهای حلقه ی اصلی برنامه است .دستور Do-Loopیک حلقه ی بینهایت ایجاد میکند بدین معنی که دستور داخل این حلقه دائما و تا هنگامیکه میکروکنترلر روشن است تکرار میشود


Do


 Gosub white


Loop


End


زیر برنامه ها و بررسی آنها :


در برنامه چهار زیر برنامه وجود دارد . که عبارتند از White,Black,rast_stop,chap_stopاکنون به بررسی دقیق هر یک از توابع و کاربرد آنها میپردازیم .


زیر برنامه White:


در این زیر برنامه در واقع کد های مربوط به زمینه سفید و خط سیاه نوشته شده است .از آنجائیکه غالبا ربات ابتدا در پیست زیمنه سفید و خط سیاه قرار دارد با روشن شدن ربات ، ابتدا برنامه اصلی به این زیر تابع پرش میکند .تا بتواند مسیر را طی کند .همانطوریکه ملاحظه میکنید این زیر برنامه از یک حلقه اصلی تشکیل شده است که همان حلقه ی Select_caseاست که وظیفه آن خواندن پورت Dو تشخیص نوع مسیر (مستقیم ،پیچ ،تغییر زمینه و...)است.برای اینکه عمل خواندن پورت Dو تعقیب مسیر پیوست ادامه داشته باشد حلقه ی select_caseرا درون یک حلقه ی do_loopقرار داده ایم که یک حلقه ی بی انتهاست .در انتهای این زیر برنامه کلمه Returnقرار دارد که باعث میشود با هر بار رسیدن برنامه به این کلمه ،به خطی که زیر تابع را از آنجا فراخوانی کرده بودیم برگردیم .


برای اینکه خواندن کد های موجود بر روی پورت dو نوشتن برنامه برای آنها ساده تر شود از سیستم اعداد باینری استفاده کرده ایم که با علامت &Bدر ابتدای عدد مشخص میشود .


اولین کدی که در برنامه بررسی مشود کد پیمودن میسر مستقیم است .بررسی این کد با دستور Case &B0001000آغاز میشود .در صورتیکه ربات بطور مستقیم در پیست قرار داده شود فقط سنسور S3برروی خط سیاه قرار میگیرد .که کد آن مطابق شکل زیر برابر0001000است .که معادل باینری آن عدد &B0001000میباشد .نکته ای که بسیار حائز اهمیت میباشد این است که پورت Dدر میکروکنترلر ATTiny2313دارای 7 پین میباشد !بنابراین تعداد 7 رقم معادل سازی باینری مورد استفاده قرار گرفته است .


'mostaghim


Case &B0001000


Pwm1a = 945


Pwm1b = 1023


Portb.0 = 1


Portb.7 = 1


چنانچه قصد استفاده از سایر میکروکنترلر ها را دارید باید به این نکته توجه کنید که پورت های دیگر میکروکنترلر ها دارای 8 پایه است .از طرفی تعداد سنسور ها 8 عدد است و پایه هشتم را باید با یک مقاومت 10 الی 47 کیلو به vccمتصل کنیم که این پایه بر عملکرد سنسور ها تاثیر نگذارد .


'enheraf rast


Case &B0010000:


Pwm1a = 642


'enheraf chap


Case &B0000100


Pwm1b = 720


همانطوریکه میدانید برای رفع انحراف ربات تنها از کم کردن مقدار pwmاستفاده کرده ایم .بدین ترتیب هرگاه ربات از مسیر منحرف شود با اعمال یک مقدار pwmمناسب سرعت یکی از موتور ها کم میشود و در نتیجه ربات مجددا به مسیر مستقیم بر میگردد هنگامیکه ربات به مسیر مستقیم برگشت مقدار pwmموتور ها به حالتی که در مسیر مستقیم داشتند تغییر میابد (زیرا دستورات مربوط به کد مستقیم اجرا خواهند شد ).


مقدار pwmبرای رفع انحراف نیز از روش تجربی بدست می آید .بهتر است این مقدار به گونه ای باشد که ربات بتدریج به مسیر مستقیم برگردد نه به طور آنی و سریع !زیرا اگر ربات بطور آنی به مسیر مستقیم برگردد به احتمال زیاد از جهت مخالف منحرف میشود ،بنابراین برای رفع این انحراف یک پالس pwmبه موتور مخالف موتور قبلی وارد میشود که نتیجه ی آن انحراف مجدد ربات ،بدلیل برگشت آنی به مسیر مستقیم است ، تکرار این روند باعث بوجود آمدن یک حرکت زیگزاگی در پیمایش مسیر مستقیم میشود .


در قسمت های بعد به بررسی پیچ های 90 و 120 درجه میپردازیم ...


به امید پیشرفت روز افزون تیم گارد ایران


**تشکر شما باعث دلگرمیه**


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


بررسی پیچ های 90 و 120 درجه و انحناها :


کد حاصل از تمامی این پیچ ها یکی است و کد تولید شده به این صورت میباشد :&B0000010که بیان کننده ی یک پیچ در سمت راست است .که ممکن است به صورت شکل زیر باشد :


This is the hidden content, please


 


 


This is the hidden content, please


هنگامیکه کد مربوط به پیچ های سمت راست اتفاق بیفتد ابتدا برنامه به زیر تابع rast_stopمیرود .


This is the hidden content, please


زیر برنامه ی Rast_stop:


همانطوریکه در خطوط فوق مشاهده میشود در این زیر برنامه یک چرخش معکوس به مدت 20 میلی ثانیه به موتور سمت راست اعمال میشود و سپس موتور به حالت ترمز در می آید .


علت معکوس کردن لحظه ای موتور ایجاد یک حالت ترمز قوی میباشد .چنانچه بخواهیم به حالت ترمز L298پسنده کنیم نتیجه کار جالب نخواهد بود !زیرا برخلاف توضیحات موجود در دیتاشیت این ICحالت ترمز آن خیلی سریع نیست و این امر باعث ایجاد مقداری انحراف در موقع دور زدن ربات با یک موتور خاموش میشود .


بعد از صفر کردن Portb.0و Portb.1برنامه به قسمت بررسی پیچ سمت راست بر میگردد ،زیرا تابع rast_stopرا از انجا فراخوانی کرده بودیم .


با بررسی قسمت پیچ سمت راست خواهیم دید که برنامه بعد از فراخوانی زیر برنامه rast_stopرا از آنجا فراخوانی کرده بودیم .


با بررسی قسمت پیچ سمت راست خواهیم دید که برنامه بعد از فراخوانی زیر برنامه rast_stopوارد یک حلقه ی While-Wendمیشود در این حلقه Portb.0تا زمانیکه PIND.3مجددا روی خط سیاه قرار گیرد صفر نگه داشته میشود .یعنی تا هنگامیکه ربات برروی مسیر مستقیم بعد از پیچ قرار بگیرد موتور سمت راست خاموش خواهد ماند .با عبور از پیچ و قرار گرفتن سنسور S3بر روی خط سیاه ،برنامه از حلقه ی While-Wendخارج میشود .در اینجا قبل از اینکه بخواهیم با یک کردن portb.0موتور سمت راست را روشن کنیم بمدت 20 میلی ثانیه موتور را در جهت معکوس میچرخانیم تا انحراف ناشی از دور زدن ربات را جبران میکنیم .(مقدار 20 میلی ثانیه بطور تجربی بدست آمده است ،برای سرعت های بیشتر زمان بیشتری لازم است )


پس از گذشت این 20 میلی ثانیه موتور سمت راست را روشن میکنیم که این کار با دستورات زیر انجام میدهیمportb.0 = 1,portb.1 = 0انجام میشود .


در هنگام مواجه با پیچ ها و انحنا های سمت چپ،کد مربوط به دور زدن سمت چپ اتفاق می افتد که از لحاظ عملکرد دقیقا منند دور زدن به سمت راست میباشد .با این تفاوت که در اینجا زیر برنامه Chap_stopفراخوانی میشود که عملکرد این تابع نیز مانند عملکرد زیر برنامه rast_stopمیباشد.


یه نمونه انحنا در سمت چپ مسیر و کد مربوط به آن در زیر اشاره شده است .


This is the hidden content, please


This is the hidden content, please


بررسی پیچ های 60 درجه:


بعد از پرداختن به پیچ های 90 درجه ،120 درجه و انحنا  میپردازیم


طراحی سنسور ها به گونه ای است که تشخیص مسیر وابسته به نحوه ی حرکت ربات (زاویه ورود به پیچ ها و موانع )میباشد .بدین معنی که با توجه به نحوه ی رسیدن به ربات به پیچ های 60 درجه ممکن است کد های مختلفی اتفاق بیفتد ،که در اینجا مطابق شکل دو نمونه از شایع ترین این کد ها بررسی شده اند.


This is the hidden content, please


 


This is the hidden content, please


This is the hidden content, please


همانطوریکه در کد های بالا مشاهده میکنید برای پیچ های 60 درجه دو کد باینری &B0001111و &B0000001در نظر گرفته شده اند که نحوه ی عملکرد آنها دقیقا مانند کد های مربوط به پیچ های 90 درجه و 120 درجه و انحنا ها میباشد .تنها تفاوت این کد ها با کد قبلی در شرط حلقه ی While-Wendمیباشد .در کد قبلی رسیدن سنسور S3به خط سیاه نشان دهنده ی عبور از پیچ بود اما در کد 60 درجه رسیدن سنسور S5به خط سیاه نشان دهنده ی عبور از پیچ است .این موارد در رابطه با پیچ های 60 درجه سمت چپ نیز صدق میکند .


به امید پیشرفت روزافزون تیم گارد ایران


**تشکر شما باعث دلگرمیه**


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


معکوس شدن زمینه :


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


This is the hidden content, please


This is the hidden content, please


 


 


 


This is the hidden content, please


طبق برنامه و شکل های فوق مشاهده میکنید که دو کد باینری &B1110111و&B1111111برای تشخیص معکوس شدن رنگ زمینه و خط ،مورد استفاده قرار گرفته اند.با اتفاق افتادن این کد ها برنامه به زیر برنامه ی Blackپرش میکند و ادامه بررسی مسیر را در آنجا انجام میدهد .


تمامی برنامه های نوشته در زیر تابع Blackعینا مانند برنامه های نوشته شده در قسمت Whiteمیباشند .با این تفاوت که کدهای مورد بررسی در حلقه ی Select_Caseمعکوس (Not)شده اند .برای مثال در زمینه ی سفید و خط سیاه کد پیچ 90درجه ی سمت راست &B0000010میباشد امابرای زمینه ی سیاه و خط سفید این کد به شکل &B1111101در می آید .در واقع برای نوشتن هر کد در زمینه سیاه کافیست تا حالت زمینه ی سفید آنرا معکوس (Not)کنیم .بقیه ی موارد عینا مانند برنامه های نوشته شده در قسمت Whiteمیباشد.


در زیر برنامه ی Blackنیز دو حالت &B0001000و&B0000000برای تشخیص زمینه ی سفید در نظر گرفته شده است .یعنی با اتفاق افتادن این دو کد به زیر برنامه ی Whiteپرش میکند .


بررسی سایر حالات :


برای عبور از موانع و نیز حالتهای گوناگونی که ممکن است در اثر حرکت ربات بوجود آید حالتی تعریف شده است که در صورت اتفاق نیفتادن هیچ یک از حالات قبل ،اتفاق می افتد،بدین معنی که اگر کدی از سنسور ها دریافت شود که در حلقه ی Select_Caseتعریف نشده باشد برنامه ینوشته شده در این قسمت اجار خواهد شد .این قسمت با عنوان Case Elseدر برنامه لحاظ شده است و در واقع دستور حرکت مستقیم را اجرا میکند .دقیقا مانند کد مربوط به حرکت مستقیم .


This is the hidden content, please


با کمی دقت و حوصله میتوانید کد های دیگری را نیز به مجموعه ی کدهای فوق اضافه کنید و حرکت دقیق تری را برای ربات فراهم آورید.


خب دوستان آموزش ربات مسیریاب در اینجا به پایان میرسه


امیدوارم که به دردتون بخوره


در ضمن این پروژه عملیه و در حد یک پروژه تئوری نیست و من خودم اونو اجرا کردم ...


تاپیک  قفل میشه پس اگه سوالی داشتید در پیام خصوصی بپرسید


موفق باشید


به امید پیشرفت روز افزون تیم گارد ایران


**تشکرشما باعث دلگرمیه**


لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر


مهمان
این موضوع برای عدم ارسال قفل گردیده است.
×
×
  • ایجاد مورد جدید...