Mr_X ارسال شده در دِسامبر 15 2015 گزارش اشتراک گذاری ارسال شده در دِسامبر 15 2015 با عرض سلام خدمت دوستان با آموزش 0 تا 100 ساخت یک ریات مسیریاب در خدمت دوستان هستم توی این آموزش سعی کردم اول مفاهیم پایه رو توضیح بدم وسپس ساخت ربات رو... آموزش در 6 بخش هست امیدوارم با استقبالتون از این مطلب به من انگیزه ببخشید من خوشم نمیاد که اینو بنویسم اما به خاطر حذف شدن پست قبلی باید بگم که اسپم ممنوع هست و اگه سوالی دارید در بخش پیام خصوصی بپرسید من اگه دیدم سوالات زیاده و به درد بقیه دوستان هم میخوره یک تاپیک توی بخش پرسش و پاسخ باز میکنم تا اونجا سوالات رو بپرسید تاپیک حداقل هر 3 روز آپ میشه ... اگه سوالی بود در خدمتم بخش اول:آشنایی با رباتیک بخش دوم:الکترونیک ربات بخش سوم :میکروکنترلر AVR بخش چهارم:موتورهای الکتریکی بخش پنجم:حسگرها(sensors) بخش ششم:طراحی و ساخت ربات مسیریاب 7 سنسوره بخش مکانیک رو حذف کردم که وقتمونو نگیره چون بخش مکانیک در سطح رباتیک مبتدی کاربردی نیست و فعلا به دردتون نمیخوره... به امید پیشرفت روزافزون بخش الکترونیک انجمن. واکنش ها : sezar1370، C0d3!Nj3ct!0n، _RubicK_ و 7 نفر دیگر 9 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 15 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 15 2015 This is the hidden content, please ورود یا ثبت نام بخش اول : آشنایی با رباتیک امروزه ربات ها به عنوان جانشین آینده انسان برای انجام کارهای سخت و تکراری مد نظر قرار گرفته میشوند و در ساختار بسیاری از آنها از رفتار حیوان الهام گرفته شده است حیوان ها مثل انسان دارای شعور نیستند و صرفا بر اساس غریضه عمل میکنند .ربات ها نیز از این جهت بسیار شبیه به آنها هستند و بر اساس برنامه ای که از قبل به آنها دادم ایم عمل میکنند در این میان ربات هایی که بتوانند رفتاری شبیه تر به انسان داشته باشند(انسان نما) بیشتر مورد توجه قرار میگیرند . تایخچه رباتیک : از آنجا که ربات و رباتیک از جمله مباحثی میباشند که در قرن اخیز موزد توجه قرار گرفته اند آشنایی اندکی با تاریخچه این علم میتواند شما را از ادامه روند پیشرفت آن مطلع کند.در ادامه یه نحوه ی به وجود آمدن و پیشرفت علم رباتیک پرداخته میشود: سال1923میلادی:کارل چاپک اولین بار در نمایشنامه خود از کلمه ربات به عنوان <آدم مصنوعی>استفاده کرد .این کلمه از واژه robotaدر زبان چک به معنی"برده و کارگر مزدور"گرفته شده است. سال 1940میلادی :شرکتwestinghouseسگی به نام اسپارکو ساخت به برای اولین بار در آن هم از قطعات مکانیکی وهم فطعات الکیریکی استفاده شد .در واقع این آغازگر علم رباتیک بود . سال1942میلادی:کلمه رباتیک اولین بار توسط آیزک آسیموف در یک داستان کوتاه ارائه شد .رباتیک یعنی همه مباحثی که به ربات مربوط میشود. دهه1950میلادی:تکنولوژی کامپیوتر پیشرفت کرد و باعث پیشرفت صنعت کنترل و در نتیجه پیشرفت رباتیک شد سال 1954 میلادی:عصر ربات ها با ارائه اولین ربات انسان نما توسط جورج دوول شروع شد. در مجموع موارد کاربرد ربات ها در همه ابعاد زندگی انسان به سرعت در حال گسترش میباشد تا کار های خطرناک را به جای انسان انجام دهند. چون در انجمن انواع ربات ها توسط دوستان معرفی شده است من از انجام این کار صرف نظر میکنم به امید پیشرفت روزافرون بخش الکترونیک انجمن واکنش ها : iranihacker، johnjones، abarestan و 3 نفر دیگر 5 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 17 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 17 2015 فصل دوم:الکترونیک ربات ها قسمت اول: از آنجا که الکترونیک یکی از بخش های اصلی و در حقیقت بخش کنترل و فرمان ربات است .آشنایی کامل با مباحث مطرح در الکترونیک و بررسی المانهای مختلف الکترونیکی کاملا ضروری به نظر میرسد .در این فصل به معرفی المانهای پر کاربرد الکترونیک میپردازیم . شما در آینده خواهید توانست با کنار هم قرار دادن المانهای ساده به مداراتی دست پیدا کنید که به راحتی ربات های بسیار پیشرفته و پیچیده را کنترل میکنند. 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 در ادامه سایر علامتهایی که برای نمایش مقدار مقاومت در مدار به کار میرود با مقدار معادل هریک ارائه میشوند: 560R→560Ω 2K7→2700Ω=2.7KΩ 39K→39kΩ 1M0→1000kΩ=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 ورود یا ثبت نام به امید پیشرفت روزافزون بخش الکترونیک انجمن واکنش ها : abarestan، RT3N، Mr.Vector و 7 نفر دیگر 9 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 18 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 18 2015 با عرض سلامی دوباره خدمت دوستان عزیز با توجه به اینکه یکی از دوستان انجمن در پیام خصوصی فرمودند که این بخش ها قبلا توضیح داده شده و من باب احترام به سروران بزرگواری که قبلا این بخش ها رو توضیح دادن . من از توضیح ادامه این بخش ها امتناع میکنم و فقط یک معرفی اجمالی ازAVRمیکنم و بعد هم میرسم سراغ آموزش ساخت ربات با تشکر از همه دوستان که با تشکرشون باعث دلگرمی اند... واکنش ها : abarestan، DeMoN، C0d3!Nj3ct!0n و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 18 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 18 2015 میکروکنترلرهای 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 به امید پیشرفت روزافزون بخش الکترونیک انجمن تشکر شما باعث دلگرمیه واکنش ها : abarestan، DeMoN، johnjones و 3 نفر دیگر 5 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 19 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 19 2015 با سلام دوباره خدمت همه دوستان خب دیگه وقتشه که آموزش ساخت ربات رو شروع کنیم در این پروژه قصد داریم با ساخت و راه اندازی یک ربات مسیریاب با 7 سنسور آشنا شویم که .برای اینکه پروژه به صورت کاملا عملی و قابل فهم باشد توضیحات مربوط به آن را در دو قسمت سخت افزار و نرم افزار توضیح دادم بخش اول:سخت افزار قسمت اول در حالت کلی میتوان بخش های اصلی ربات را به صورت زیر معرفی کرد . 1-سنسورها 2-مبدل آنالوگ به دیجیتال 3-میکروکنترلر 4-درایور موتور 5-موتور بررسی سنسورها: اساس کار یک ربات تعقیت خط بر سنسورهای مادون قرمز یا IR (Inferaref)و یک جفت موتور DCاستوار است . موتور ها در عقب ربات و در روبروی هم قرار میگیرند و در جلوی ربات ار یک جسم صاف و لغزنده بعنوان تکیه گاه و چرخ جلو استفاده میشود .(عموما از چرخ هرز گرد استفاده میشود )هنگامیکه هر دو موتور روشن باشند ربات به طور مستقیم حرکت خواهد کرد و زمانیکه یکی ار موتورهت روشن و دیگری خاموش باشد ربات به سمتی که موتور خاموش است میچرخد .به این نوع حرکت مدل تانکی میگویند . سنسورها نیز دو نوع فرستنده و گیرنده موجود میباشد .در یک ربات تعقیب خط این دو سنسور در کنار هم تشکیل یک جفت را میدهند که قادر به تشخیص رنگ سیاه و سفید میباشند .بدین صورت که سنسور فرستنده امواج مادون قرمز را میفرستد و این امواج به سطح سفید برخورد کرده و بازتاب میشوند سپس این امواج منعکس شده توسط سنسور گیرنده دریافت میشوند ودر نتیجه میزان جریان دهی سنسور گیرنده افزایش میابد ..اما اگر موج ارسالی توسط سنسور فرستنده به سطح سیاه برخورد کند جذب میشود و فقط مقدار بسیار جزئی از آنها منعکس میشود .در نتیجه میزان جریان دهی سنسور گیرنده به شدت کاهش میابد با بکار گیری یک مدار ساده میتوان تغییرات جریان در سنسور گیرنده را به تغییرات ولتاژ تبدیل کرد و بدین ترتیب سطح سیاه از سیط سفید تشخیص داده میشود . برای تبدیل تغییرات جریان به ولتاژ کافیست تا از یک مقاومت سری شده با سنسور گیرنده مطابق با شکل زیر استفاده کنیم .در این صورت هنگامی که سطح سفید باشد جریان دهی گیرنده زیاد خواهد شد و میتوان این سنسور را اتصال کوتاه در نظر گرفت .بنابراین در خروجی SO0برابر صفر منطقی خواهد بود (در استاندارد TTLولتاژهای 0تا2ولت برابر صفر منطقی در نظر گرفته میشود )هنگامیکه سطح سیاه باشد میزان جریان دهی سنسور بشدت کم میشود .بنابراین میتوان سنسور را به صورت مدار باز در نظر گرفت ،پس ولتاژ +5vاز طریق مقاومتK10در خروجی SR0ظاهر میشود . This is the hidden content, please ورود یا ثبت نام نکته ای که در به کارگیری سنسور مادون قزمر گیرنده بسیار حائز اهمیت است بایاس معکوس بودن آن است چنانچه این سنسور به صورت مستقیم بکار گرفته شود با یک دیود معمولی هیچ فرقی ندارد و نسبت به امواج مادون قرمز موجود هیچ عکس العملی نشان نمیدهد . به امید پیشرفت روز افزون بخش الکترونیک انجمن تشکر شما باعث دلگرمی است واکنش ها : iranihacker، abarestan، RT3N و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 20 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 20 2015 قسمت دوم : مبدل آنالوگ به دیجیتال: از آنجایی که ممکن است در اثر تغییرات نور محیط و یا ایجاد سایه روشن در اثر حرکت ربات مقدار ولتاژ خروجی 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 ورود یا ثبت نام واکنش ها : RT3N، DeMoN، johnjones و 3 نفر دیگر 5 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 25 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 25 2015 سلام بر همه ی اعضاء گارد ایران با عرض پوزش به خاطر تاخیر چند روزه ام . دیگه دم امتحاناته و همه مشغول درس خوندن .منم یکم شرم شلوغه به محض اینکه بتونم مطالب جدید رو میذارم با تشکر از صبر شما واکنش ها : johnjones، DeMoN و iranihacker 1 2 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 28 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 28 2015 وظایف هر یک از سنسور ها : سنسور 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 واکنش ها : alizombie، C0d3!Nj3ct!0n، johnjones و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در دِسامبر 29 2015 نویسنده گزارش اشتراک گذاری ارسال شده در دِسامبر 29 2015 میکروکنترلر و وظیفه آن: از جمله مهم ترین قسمت های یک ربات ،میکروکنترلر آن است که در واقع هدایتگر ربات است در ساخت این ربات از میکروکنترلر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 واکنش ها : alizombie، abarestan، C0d3!Nj3ct!0n و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 2 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 2 2016 مدار تغذیه ربات : از آنجاییکه موتور های بکار رفته در ساخت ربات 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 واکنش ها : johnjones، RT3N، hacker_20 و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 11 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 11 2016 تغذیه و راه اندازی موتور ها : برای راه اندازی موتور ها از درایور معروف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عدد در اینجا قسمت سخت افزار ربات به پایان میرسه و باید بگم که من از توضیح مراحل ابتدایی مثل چگونگی لحیم کردن و قطعه گذاری صرف نظر کردم .چون کسی که میخواد ربات مسیریاب بسازه باید حداقل این مطالب رو از قبل بلد باشه و در ادامه هم چند عکس از ربات میذارم که در اینجا فقط میخوام برد ها رو ببینید و مکانیک این ربات صحیح نیست .بعدا عکسهای ربات اصلاح شده رو میذارم به امید پیشرفت روز افزون بخش الکترونیک انجمن واکنش ها : C0d3!Nj3ct!0n، RT3N، alizombie و 2 نفر دیگر 4 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 11 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 11 2016 اینم چندتا عکس از مدار ربات This is the hidden content, please ورود یا ثبت نام This is the hidden content, please ورود یا ثبت نام This is the hidden content, please ورود یا ثبت نام واکنش ها : RT3N، johnjones، alizombie و 2 نفر دیگر 4 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 17 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 17 2016 با عرض سلام دوباره خدمت دوستان گرامی خب تا الان قسمت سخت افزار ربات رو توضیح دادیم و حالا میریم سراغ نرم افزار و تشریح خط به خط برنامه . فایل کامل برنامه در پیوست قرار داده میشود برنامه این ربات با زبان بیسیک نوشته شده است . تعیین نوع میکروکنترلر و فرکانس کاری : در قسمت برنامه نویسی قبل از هر کاری ابتدا باید میکروکنترلر مورد نظر و فرکانس کاری آنرا مشخص کنیم که این کار توسط دستورات زیر در خط اول و دوم برنامه اجرا میشود : $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بدست میاید. به امید پیشرفت روز افزون بخش الکترونیک انجمن *تشکر شما باعث دلگرمیه * واکنش ها : RT3N، sezar1370، DeMoN و 4 نفر دیگر 6 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 19 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 19 2016 مقدار دهی اولیه به امکانات: در قسمت بعدی مقدار دهی اولیه به پورت ها و دیوتی سایکل ها پرداخته ایم . 'motore rast Pwm1a = 945 Portb.0 = 1 Portb.1 = 0 'motore chap Pwm1b = 1023 Portb.6 = 0 Portb.7 = 1 برای خواناتر شدن برنامه و قابل فهم تر بودن آن از همان ابتدا پایه ها و خروجی pwmمتصل به موتور سمت راست را در کنار یکدیگر نوشته و مقدار دهی میکنیم. که برای موتور چپ داریم : PORTB.6→INPUT2 PORTB.7→INPUT1 PORTB.4→ENABLE A وبرای موتور راست داریم : PORTB.0→INPUT4 PORTB.1→INPUT3 PORTB.3 →ENABLE B بنابراین با یک بودن PORTB.7و صفر بودن PORTB.6موتور سمت چپ درجهت مستقیم میچرخد .از طرفی با یک بودن PORTB.0و صفر بودن PORTB.1موتور سمت راست نیز در جهت مستقیم میچرخد . همانطوریکه متوجه شدید مقدار PWMبرای موتور راست و چپ با هم متفاوت است .دلیل این امر اینست که با وجود یکسان ویک جنس بودن موتور ها باز هم سرعت چرخش آنها با هم متفاوت است .این اختلاف جزئی یطور ذاتی وجود دارد هم چنین بعضی از موارد مانند کج بودن موتور ها کج بودن محور موتور ها ،تاب داشتن چرخ هاو... نیز ممکن است باعث بروز این حالت شود برای رفع این اختلاف مقدار PWMموتوری که سرعت بیشتری داشته را کم کرده ایم .عدد945بطور تجربی و از راه آزمون و خطا بدست آمده است . برای پیدا کردن یک مقدار مناسب میتوانید بعد از ساخت شاسی ربات ،موتور ها را روشن کنید و ربات را در یک مسیر مستقیم و طویل (حدود 2 متر )تست کنید تا بتوانید ببینید که ربات به کدام جهت منحرف میشود .مثلا اگر ربات به سمت راست منحرف شود نشان میدهد که سرعت موتور سمت چپ زیاد است ،بنابراین باید مقدار PWM برای موتور سمت چپ کمتر شود کم کردن مقدار PWM باید دائما تکرار و تست شود تا مقدار مناسب بدست آید . به امید پیشرفت روز افزون بخش الکترونیک انجمن **تشکر شما باعت دلگرمیه** واکنش ها : RT3N، DeMoN، alizombie و 3 نفر دیگر 5 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 28 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 28 2016 با سلام دوباره خدمت دوستان ببخشید که یه مدت طول کشید تا ادامه آموزش رو بذارم خب بریم سراغ ادامه آموزش: بررسی برنامه اصلی : در حلقه اصلی برناهمه فقط یک دستور نوشته شده است و آن هم دستور 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 درجه میپردازیم ... به امید پیشرفت روز افزون تیم گارد ایران **تشکر شما باعث دلگرمیه** واکنش ها : jen_avare، alizombie، C0d3!Nj3ct!0n و 1 نفر دیگر 4 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 29 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 29 2016 بررسی پیچ های 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 درجه سمت چپ نیز صدق میکند . به امید پیشرفت روزافزون تیم گارد ایران **تشکر شما باعث دلگرمیه** واکنش ها : johnjones و RT3N 1 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
Mr_X ارسال شده در ژانویه 31 2016 نویسنده گزارش اشتراک گذاری ارسال شده در ژانویه 31 2016 معکوس شدن زمینه : بعد از بررسی پیچ ها ،برنامه به بررسی معکوس شدن زمینه میپردازد.در اینجا نیز طبق زاویه ی ورود ربات به زمینه سیاه و خط سفید ممکن است حالات زیادی اتفاق بیفتد که دو نمونه از مهم ترین آنها مورد بررسی قرار گرفته اند . 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 ورود یا ثبت نام با کمی دقت و حوصله میتوانید کد های دیگری را نیز به مجموعه ی کدهای فوق اضافه کنید و حرکت دقیق تری را برای ربات فراهم آورید. خب دوستان آموزش ربات مسیریاب در اینجا به پایان میرسه امیدوارم که به دردتون بخوره در ضمن این پروژه عملیه و در حد یک پروژه تئوری نیست و من خودم اونو اجرا کردم ... تاپیک قفل میشه پس اگه سوالی داشتید در پیام خصوصی بپرسید موفق باشید به امید پیشرفت روز افزون تیم گارد ایران **تشکرشما باعث دلگرمیه** واکنش ها : alizombie، RT3N، itone و 2 نفر دیگر 4 1 لینک به دیدگاه به اشتراک گذاری در سایت های دیگر گزینه های به اشتراک گذاری بیشتر...
پست های پیشنهاد شده