آموزش ساخت روبات مسیر یاب
مقدمه
برای ساخت یک ربات مسیریاب باید با سه رشته مکانیک , الکترونیک , کامپیوتر ( برنامه نویسی ) آشنایی مقدماتی داشته باشیم. در این پروژه سعی میشود نحوه ساخت یک ربات مسیر یاب تشخيص رنگ به طور جامع و کامل همراه با نقشه عملی مدارات آن توضیح داده شود.
ابتدا در مورد مکانیک یک ربات مسیریاب که معمولاً ساده ترین قسمت یک ربات مسیر یاب باشد توضیح داده ميشود. بخش دوم در مورد كليات قسمت الكترونيك و تشريح همهي المانهاي آن به طور كامل شرح داده شده است.در بخش سوم سعي شده است كه در مورد برنامهنويسي ربات به طور مختصر توضيح داده شود. در اين بخش در مورد دستورات برنامه مربوط به بخش مسيريابي و تشخيص رنگ توضيح مختصري داده شده است.
بخش اول
مكانيك ربات
مكانيك ربات
روبات شامل دو موتور در طرفين خود است که براي حرکت به جلو، بايد هر دو موتور روشن باشد. زمان دور زدن به چپ، موتور سمت چپ خاموش و موتور سمت راست روشن است و براي دور زدن به سمت راست، موتور سمت راست خاموش و موتور سمت چپ روشن ميشود. البته موتورهاي بکار رفته، DC موتور بوده و جهت کاهش سرعت و در نتيجه کنترل دقيق تر روبات از موتورهايي با گيربکس سرخود استفاده شده، که قيمت آن در بازار جمهوري تهران 7000 تومان است در صورتي که به اين نوع موتور دسترسي نداريد ميتوانيد از موتورهاي اسباب بازي گيربکس دار استفاده کنيد، در غير اين صورت بايستي خودتان گيربکس را بسازيد دقت داشته باشيد که دورنهايي چرخش چرخهاي روبات 60 دور بر دقيقه باشد.
مکانیک یک ربات مسیر یاب از 4 بخش تشکیل شده است که به بررسی هر کدام می پردازیم:
1- شاسی یا بدنه که تمام اجزای ربات مانند برد ها و ... روی آن قرار میگیرد.
2- موتور ربات مسیریاب
3- چرخ ربات مسیریاب
4- برد سنسور که وظیفه تشخیص خط زیر ربات را بر عهده دارد.
* حال بايد به بررسي كامل قسمتهاي مكانيك ربات بپردازيم.
1-1 شاسی یا بدنه ربات
این قسمت از مکانیک ربات مسیریاب وظیفه نگهداری تمام اجزا و مدارها را بر روی خود دارا میباشد که اجزای ربات بر روی آن بسته میشوند و میتواند یک طلق پلاستیکی یا یک تکه چوب یا یک چیزی که نسبتاً سبک باشد و بتواند این اجزا را تحمل کند.
در اينجا از يك فيبر مدار چاپي استفاده شده است زيرا داراي زيبايي و سبكي بيشتري نسبت به موارد ديگر است.
1-2 موتور یک ربات مسیریاب
یک ربات میتواند از دو نوع موتور استفاده کند که عبارت است از:
1- DC MOTOR
2- Steper Motor
برای یک ربات مسیریاب به دو موتور خوب نیاز ميباشد که یکی برای چرخش به راست و دیگری برای چرخش به چپ. این موتور ها برا ي اينكه در پيچهاي ناگهاني و مسيرهاي پرپيچ وخم به راحتي بتواند دور بزند، در عقب ربات نصب ميشود.
یک ربات باید از موتور آرميچر استفاده کند که داری قدرت بالا ( جریان کشی ) و دور مناسب باشد که بتواند آن را کنترل کند و از دور خارج نشود.
در صورت عدم دسترسي به این سري موتورها، ميتوان از يك آرمیچر اسباب بازي استفاده کنید. به شرطی كه از یک عدد گیر باکس بر سر راه آن استفاده شود. در اين صورت از سرعت آن كاسته شده و قدرت آن بیشتر ميشود: همچنين ميتوان از موتورهاي گير بكسدار كوچك استفاده كرد كه در عين سبكي داراي قدرت و كنترل دور بالايي هستند. اين موتورها به راحتي ميتوانند توسط قطعات الكترونيكي كنترل شوند.
1-3 چرخها
در ساخت این ربات باید به چند نکته در مورد چرخ ها توجه کرد که عبارتند از :
1- اندازه قطر چرخ 2- اندازه عرض چرخ 3- اصطکاک چرخ با زمین
1- اندازه قطر یک چرخ:
اندازه قطر يك چرخ باید به اندازهای باشد که با دور موتور هماهنگی داشته باشد. چون هرچه قطر چرخ بشتر باشد با یک دور موتور ثابت، ربات مسیر بیشتری را طی میکند. هر چه قطر آن کمتر باشد با یک دور چرخش ثابت موتور، ربات مسیر کمتری را طی میکند.
2- اندازه عرض چرخ:
معمولاً برای ساخت اين رباتها، اندازه عرض چرخ بین 1 تا 2 سانتي متر انتخاب ميشود. اگر بیشتر از این باشد، اصطکاک و وزن آن زیاد میشود.
3- اصطکاک چرخ با زمين:
براي اصطكاك چرخ با زمین میتوان از نوار چسب برقی استفاده کرد. با این کار لاستیکها بیشتر به زمین میچسبند و تا حدی میتواند به تعادل ربات کمک کند. همچنين از چرخهاي مخصوص آجدار نيز استفاده ميشود. از مزيت اين چرخها، حركت بر روي سطوح صاف ميباشد.
چرخ هرز گرد: این چرخ که در قست میانی و جلوی ربات نصب میشود، تنها وظیفه حفظ تعادل ربات را دارد و باید کمترین اصطکاک را با زمین داشته باشد. چرخ هرزگرد از یک بلبرینگ یا یک عدد ساچمه و یا غيره تشكيل شده است.
1-4 برد سنسور (حسگر)
این بخش از ربات که یکی ار مهمترین قسمتهای یک ربات محسوب میشود وظیفه تشخیص خط زیر ربات را بر عهده دارد که باید فاصله استاندارد آن با زمین رعایت شود تا بهترین بازده را داشته باشد. بسته به اندازه ربات مورد نظر و كاربرد آن، اندازۀ برد نيز تغيير ميكند.
چند نکته باید در مکانیک ربات رعایت شود :
1- حتما مکانیک ربات محکم بسته شود.
2- اگر از چسب برای بستن استفاده ميشود حتماً بايد به همراه بست استفاده شود .
3- برای بستن بردها به بدنه (شاسی)، حتماً از پیچ و مهره یا Spacer استفاده شود.
4- برای محکم شدن و جلوگیری از شل یا باز شدن اتصالات میتوان از واشر فنری استفاده کرد.
5- در جاهایی که ممکن است پیچ و مهره باعث اتصالات بین قطعات شود میتوان از واشر فیبری استفاده کرد. براي بستن بردها به هم از پيچ و مهرۀ 3 استفاده شود. زيرا اين پيچها در انواع بلند و كوتاه هستند كه ميتوان در موارد خاص از آنها استفاده كرد.
براي بستن موتورها به برد نيز ميتوان از ورقه هاي آلومينيم و از پيچ هاي 3 استفاده كرد.
بخش دوم
الكترونيك ربات
2-1 مقاومت نوری (LDR) Light Dependent Resistor
مقاومت نوری المانی الکترونیکی استکه با تابش نور به آن مقاومتش تغییر میکند. تا قبل از تابش نور به آن جریانی از آن عبور نخواهد کرد. در این حالت مقاومت زیادی دارد. هر چه میزان شدت نور بیشتر باشد مقدار مقاومت آن کمتر می شود. درواقع مقدار مقاومت با تابش نور رابطه عکس دارد. مقاومت متفیر همان پتانسیومتر است. در پتانسیومتر با يك پیچگوشتی ميتوان مقدار مقاومت را تنظیم کرد. در اینجا شدت نور است که میزان مقاومت را تنظیم میکند. .هرچه میزان شدت نور بیشتر باشد مقدار مقاومت حاصل از مقاومت نوری کمتر ودر صورت نبودن نور، مقدارمقاومت زياد ميشود.
برای استفاده از این سنسور در ربات مسیریاب در کنار هر سنسور باید یک دیود نوری یا LED قرار گیرد بطوری کهLED به زمین بتابد و انعکاس نور آن به سنسور بازتابش کند. با استفاده از مدار ساده زیر میتوان خروجی 0 ولت برای زمین سفید و خروجی 5 ولت برای زمینه سیاه بدست آورد. براي تنظیم ميتوان با استفاده از پتانسیومتر 10k این کار را انجام داد.
با تحریک مقاومت نوری توسط نور بازگشتی از زمین مقاومت آن کم شده و جریان مورد نیاز برای تحریک بیس ترانزیستور از آن عبور میکند و خروجی 0 ولت میشود.
از مزایای استفاده ازLDR در ربات مسیریاب فاصله مناسب آن از سطح زمین و سادگی آن میباشد. و از معایب آن، چون این سنسور حساس به نور معمولی میباشد احتمال تداخل نور محیط و اشتباه کردن ربات زیاد میباشد و اطراف این سنسور باید طوری عایقبندی شود که نور محیط به آن نتابد.مدار زیر برای قسمت سنسور ربات که از اپ امپ استفاده شده است. آی سی 741 یک اپ امپ میباشد.
آيسي741LM و آيسي 324LM
آی سی 741LM شامل 1 اپ امپ میباشد. آی سی324LM شامل 4 اپ امپ میباشد كه مشخصات پایه های اين آي سي ها به ترتيب در شكلهاي 2-5 و 2-6 آورده شده است.
در این برد به جای اینکه ما از سنسور هایی که در یک Pack هستند استفاده کنیم از دو سنسور IR معمولی استفاده میکنیم.سنسور های مورد نیاز ما سنسورهای فرستنده و گیرنده معمولی
IR - سه میلییمتری میباشند که هر کدام دو پایه دارند.
نوع سنسور: IR یا همان سنسور های مادون قرمز
فرستنده: سنسور بی رنگ
گیرنده: سنسور تیره رنگ
فاصله بین سنسور فرستنده و گیرنده 2 تا 3 میلیمتر
2-2-1 نحوه بستن مدار
برای بستن مدار فرستده باید پایه بلند(آند) را به یک مقاومت 330 و به VCC یا همان برق استاندارد مدار و پایه کوتاه (كاتد) آن را به GND وصل کنیم.
برای بستن مدار گیرنده باید پایه بلند آن(كاتد) را به GND و پایه کوتاه آن(آند) را به یک مقاومت 2 کیلو اهمی و به VCC وصل کرده و از وسط پایه کوتاه و مقاومت گیرنده ولتاژ مورد نظر برای میکرو کنترلر گرفته شود.
2-2-2 فرستنده و گيرنده مادون قرمز
سنسور های مادون قرمز (IR) زیادی در بازار موجود میباشند که در دو نوع فرستنده و گیرنده میباشد که نمونه آن را میتوانید در کنترل تلویزیون و خود تلویزیون مشاهده کنید که سنسوری که در کنترل میباشد و دارای رنگ روشنی است فرستنده و سنسوری که در جلوی تلويزیون است و تیره رنگ میباشد گیرنده آن است. این نوع سنسورها هنگامیکه رنگی ( سیاه , سفید ) را تشخیص می دهند و مقدار بار الکترونیکی معینی به میکرو کنترلر می فرستند.
نکته: بهترین بازده این سنسور در فاصله 4 الی 6 میلیمتر از سطح زمین می باشد.
اما همین سنسورها در پکهای بصورت آماده وجود دارند که کار کردن با آنها بسیار آسان میباشد كه در زیر چند نمونه از آنها و نحوه استفاده از آنها را آورده ایم.
این سنسور دارای 4 پایه است که دوپايه ي آن به زمین وصل می شود و دوپايه دیگر هر کدام را به مقاومت وصل می کنیم. پایه مثبت فرستنده به مقاومت ۳۳0 اهم و پایه مثبت گیرنده به مقامت 470 کیلو اهم وصل ميشود.
توجه کنید که گوشه سمت چپ بالا که شیار دارد فرستنده است.
خروجی این سنسور بین پایه گیرنده و مقاومت 470 کیلو اهم گرفته میشود.
زمانی که زیر سنسور رنگ سفید باشد مقدار خروجی حدود 2-7/0 ولت میباشد و زمانی که رنگ زیر آن سیاه باشد خروجی آن حدود 3/3 – 4/3 ولت میباشد.
2-3سنسور GP2S09
این سنسور یک پک آماده ( فرستنده و گیرنده ) میباشد. سایز این سنسور بسیار کوچک و مطابق شکل زیر دارای 4 پایه است.
این سنسور ساده قیمت مناسبی دارد و عيب آن هم فاصله بسیار کم آن از سطح زمین میباشد (تقریبا چسبیده به زمین ) برای افزایش فاصله میتوانیم مقاومت روی فرستنده (220 اهم ) را کمتر گرفت ( مثلا اهم150 ) تا ولتاژ فرستنده بیشتر شود که البته با انجام این کار دو مشکل دیگر پیش میآید. یکی آنکه احتمال سوختن سنسور بالامیرود، دوم آنکه با کم کردن مقاومت مصرف آن زیاد و تغذیه آن خود یک موظل می شود .
سنسور های دیگری از این نوع وجود دارند که تقریبا مشابه می باشند ولي با اندک تفاوتی در چینش پایه هاي آنها مانند :
GP2S10 - GP2S09 - GP2S08 - GP2S07 - GP2S06
CNY07: این سنسور شامل یک دیود فرستنده مادون قرمز یاIR و یک ترانزیستورنوری (phototransistor) گیرنده می باشد که با طول موج 950 نانومتر کار میکند . این ترانزیستور مانند ترانزیستور معمولی است که به جای تحریک بیس ،جریان بیس آن با نورتحریک میشود. این سنسور از بهترین سنسور های موجود در بازار میباشد که مزایای همه سنسورهای بالا را دارا ميباشد و عیب آن هم قیمت گران آن میباشد. در زیر شکل و مدار آن را ميبينيد.
2-6آيسي L298 به عنوان راه انداز موتور
درایور L298 یکی از قطعات مناسب جهت راه اندازی موتور است که با توجه به جریان دهی مناسب ( تا یک آمپر در هر کانال ) می تواند نیاز بسیاری از پروژه ها را مرتفع سازد. این قطعه با مدار ارائه شده می تواند دو موتور را به صورت مجزا راه اندازی کرده و جهت گردش آنها را کنترل نماید. که این کنترل توسط اعمال ولتاژ به چهار ورودی منطقی این قطعه صورت می گیرد. ( برای هر موتور دو ورودی ) که می توان خروجی میکروکنترلر یا مدارات حسگر را به صورت مستقیم به این چهار ورودی متصل نمود و به راحتی موتور را کنترل کرد. در صورتی که از این قطعه برای راهاندازی موتورهای روبات خود بهره میگیرید دقت کنید که حتماً بر روی آن حرارتگیر مناسب وصل نمایید.
این مدار تنها یکی از راه های اتصال درایور ال 298 L298 به موتور را نشان می دهد. در این مدار پایه های حسگر جریان ( current sensing pins ) به زمین متصل شده اند که با روشهایی می توان توسط این پایه ها جریان مصرفی موتور را کنترل نمود. همچنین کنترل سرعت را می توان به روش مدلولاسیون پهنای باند (PWM Pulse Width Modulation) و با اعمال فرکانس به پایه های 6 و 11 انجام داد که با اعمال 5+ ولت موتور روشن و با اعمال 0 ولت موتور خاموش می گردد. در این مدار پایه های مذکور به 5+ ولت متصل شده اند و موتور با حداکثر سرعت گردش خواهد نمود.
تشریح پایه های درایور موتور( L298 Pin Description )
Pin 1. CURRENT SENSING
از این پایه جهت کنترل جریان موتور A استفاده می گردد. همچنین می توان این پایه را به صورت مستقیم به خط منفی مدار GND اتصال داد که در این صورت کنترلی بر روی جریان وجود ندارد.
Pin 2. OUTPUT 1
این پایه به یکی از ترمینالهای موتور A متصل می گردد . همچنین دیودها نیز جهت حفاظت به همین پایه متصل می شوند . ( به نقشه مدار توجه کنید).
Pin 3. OUTPUT 2
این پین به ترمینال دیگر موتور A متصل شده و دیودها نیز مانند نقشه به آن متصل می گردند.
Pin 4. SUPPLY VOLTAGE (VS)
به پایه باید ولتاژ مورد نظر خود جهت اعمال به موتورها را متصل نمایید. این ولتاژ با توجه به موتورهای مورد استفاده شما حداکثر تا 46 ولت می تواند افزایش یابد. برای ساخت رباتهای کوچک به طور معمول بین 6 تا 12 ولت است.
Pin 5. INPUT 1 TTL Compatible Inputs 1 to drive Motor A.
این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 7 می توانند جهت گردش موتور را مشخص نمایند.
Pin 6. ENABLE A TTL Compatible Enable Input for Motor A.
این پایه جهت روشن و خاموش کردن موتور A و در بیشتر مواقع جهت اعمل فرکانس PWM به موتور استفاده می گردد. پنج ولت موتور را روشن و صفر موتور را خاموش می کند.
Pin 7. INPUT 2 TTL Compatible Inputs 2 to drive Motor A.
این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 5 می توانند جهت گردش موتور را مشخص نمایند.
Pin 8. GND
اتصال به خط منفی مدار
GNDPin 9. LOGIC SUPPLY VOLTAGE (VSS)
اتصال به 5 تا 7 ولت
Pin10. INPUT 3 TTL Compatible Inputs 1 to drive Motor B.
این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 12 می توانند جهت گردش موتور B را مشخص نمایند.
Pin 11. ENABLE B TTL Compatible Enable Input for Motor B.
این پایه جهت روشن و خاموش کردن موتور B و در بیشتر مواقع جهت اعمل فرکانس PWM به موتور استفاده می گردد. پنج ولت موتور را روشن و صفر موتور را خاموش می کند.
Pin 12. INPUT 4 TTL Compatible Inputs 2 to drive Motor B.
این پایه باید به صفر یا پنج ولت متصل گردد که همراه با پین 10 می توانند جهت گردش موتور B را مشخص نمایند.
Pin 13. OUTPUT 3
این پایه به یکی از ترمینالهای موتور B متصل می گردد . همچنین دیودها نیز جهت حفاظت به همین پایه متصل می شوند . ( به نقشه مدار توجه کنید.)
Pin 14. OUTPUT 4
این ترمینال دیگر موتور B متصل می گردد . همچنین دیودها نیز جهت حفاظت به همین پایه متصل می شوند . ( به نقشه مدار توجه کنید )
Pin 15. CURRENT SENSING B
از این پایه جهت کنترل جریان موتور B استفاده می گردد. همچنین می توان این پایه را به صورت مستقیم به خط منفی مدار GND اتصال داد که در این صورت کنترلی بر روی جریان وجود ندارد.
2-7 ULN2003
اين آي سي يك درايور موتور با 7 كانال است كه هر كانال م آن مي تواند تا 600mA را Sink كند. در تصوير زير Pin out اين آي سي پر كاربرد را مشاهده مي كنيد. يكي از كاربردهاي اين آي سي به عنوان Driver در مدارهاي كنترل موتور است و بيشتر براي كنترل استپ موتورهاي كوچك مورد استفاده قرار مي گيرد.
با توجه به اينكه جريان ورودي هر كانال در حالت يك منطقي حدود 25mA است، اگر اين آي سي را مستقيماً به يك ميكروكنترلر با جريان خروجي كمتر از 25mA مثل AT89C51 وصل كنيم بعد از چند دقيقه ميكرو Reset مي شود. بهترين راه حل اين است كه از يك آي سي بافر مثل 74HC244 در مسير اتصال ميكرو (يا هر مدار ديجيتال ديگر) به ULN2003 استفاده كنيم.
2-9میکروکنترلر AVRمیکرو کنترلر در اصل مغز ربات به حساب می آید و باید دارای حافظه کافی و پایدار برای برنامه ریزی باشد که با استفاده از فرمان هایی که ما برنامه نویسی کردیم وظیفه اش را انجام میهد و ربات را کنترل میكند.
میکرو کنترلی که ما از آن در ساخت ربات استفاده میکنيم میکرو کنترلر ATMEGA 32 از خانواده AVR که در دو نوع ATMEGA32 , ATMEGA32L میباشد که دارای 32KB حافظه پایدار و قابل برنامه ریزی میباشد به توضیحاتی مختصر در مورد این میکرو کنترل می پر دازیم.
میکرو کنترل AVR ATMEGA 32 دارای 40 پایه که 32 پايه از آن مربوط به بخش های ورودی و خروجی میباشد و 8 پايه ديگر آن مربوط به تغذیه و غيره میباشد.
بخش های ورودی و خروجی میکرو کنترل :
این میکرو دارای چهار PORT میباشد که به پورت های A,B,C,D تقسیم میشوند. هر پورت آن دارای هشت PIN می باشد که در مجموع داراي32 پایه های ورودی خروجی میباشد و به صورت زیر نام گذاری میشود.(شماره پین ها از 0 تا 7 میباشند)
مثلاٌ اگر بخواهیم پین شماره 4 از پورت A را صدا بزنیم که به این صورت نام میبریم : PIN A.3 یا PORT A.3 .
به عنوان مثال،همانطور كه در شکل قبل مشاهده ميشود PORTA به صورت PA وPORTB به صورتPB و دیگر پورتها هم به همین صورت نامگذاری شده است که معمولاً پورت Aرا به سنسورها وصل میكنند و درایور موتور هم به پورتهای D وصل میكنند.
2-10 تشريح پايههاي ميكرو كنترلر ATMEGA32
VCC: این پایه برای تغذیه منطقی این میکروکنترل است که باید با برق 5 ولت رگوله شده از منبع تغذیه ، تغذيه شوند. که میتوان از برق 2.7 تا 5.5 در این میکرو استفاده کرد.
GND: این پایه بايد به شا سي يا زمين مدار وصل شود.
RESET: این پایه برای RESET کردن میکرو به کار میرود که اگر به پین GND وصل شود میکروRESET میشود که معمولا با یک میکرو سویچ به سر زمین وصل میشودکه یک لحظه به
زمين اتصال داده ميشود.
XTAL1: این پایه ورودی یک تقویت کننده اسيلاتور یا کریستال میباشد. كه معمولا يك كريستال خارجي به آن وصل ميشود.
XTAL2: خروجی XTAL1 میباشد که همرا ه با آن به كريستال خارجي و دو خازن وصل ميشود.
AVCC: پین های پورت A دارای مدار ADC (Analog to Digital Converter) یا مبدل آنالوگ به دیجیتال میباشند که در داخل میکرو این مدار جا سازی شده است که این پایه برق پورت A را تامین میکند که باید به همان برق 5 ولت رگوله شده وصل شود.
مدار قسمت مسیریاب:
این مدار شامل یک آی سی lm324 و میکرو کنترلر atmega32 و یک آی سی l298 و دو مقاومت متغیر و دو موتور و همچنین دو عدد سنسور گیرنده و دو عدد فرستنده است.
همانطور که در بالا ذکر شد یک سنسور گیرنده ویک سنسور فرستنده تشکیل یک سنسور کامل مسیر یاب را می دهد.مشخصات سنس شده به lm324 ارسال می شود.
دو گیتی که در بالا مشاهده می شود نمای داخلی lm324 است که مقادیر ارسال شده توسط سنسورها را با استفاده ا خاصیت مقایسه کنندگی خود به صفر یا یک تبدیل می کند
.همچنین می توان دقت آن را با مقاومت متغیر تغییر داد.
صفر یا یک های ارسال شده از lm324 به میکرو ارسال می شودومیکرو با استفاده از برنام هایی که برایش نوشته ایم دستور العمل های لازم را به خروجی می فرستد.
L298 هم با توجه به مطالبی که در قسمت های قبل گفته شد موتور ها را در جهات مورد نظر به حرکت در می آورد.
مدار قسمت کنترل دستی:
این مدار هم شامل شش سوییچ است که شرحکار هر کدام به صورت زیر است:
:S1انتخاب حالت کنترت دستی :s2 ,انتخاب حالت مسیر یاب ,
:s6,s5,s4,s3هرکدام به ترتیب حالت های جلو وعقب و راست و چ÷ را انتخاب می کنند.
میکرو هم با توجه به ورودی های ارسال شده به آن l298 و موتورها را کنترل می کند.
2-11پروگرامر
2-11-1 نحوه ساخت پروگرامر STK200/300 :
میکرو کنترلرهاي AVR ATMEGA 16 يا 32دارای پروگرامر داخلی میباشد و پروگرامر آن ساده است. این پروگرامر از اتصالات SP1 برای برنامه ریزی میکروکنترلر استفاده میکند ، بنابراین میکرو کنترلر هایی که قابلیت اتصال به به SPI را دارندرا مي توان با این پرو گرامر، پروگرام كرد.
2-11-2 پایه های میکرو برای پروگرام کردن
GND , VCC , MOSI , MISO, RESET ,SCK
همانطور که در شكل2-24 مشاهده ميشود از یک پورت پرینتر 25 پین استفاده شده است که پین های 18 الی 25 آن به به زمین وصل می شود.
پین شماره 6 پورت را بهSCK(8) میکرو و پین شماره 7 به MISO (7) و پین شماره 9 به RESET (9) و 10 آن را به MOSI(6) و پین 24 هم به زمین میکرو وصل مي شود.
و در آخر هم پین VCC میکرو و GND پرت به برق 5v ولت وصل مي شود.
مدار دوم:
اين مدار هم مانند مدار قبل است با اين تفاوت كه در اينجا از آي سي 74HC244 به عنوان بافر استفاده شده است . اين آي سي براي برقرار كردن ارتباط بهتر بين كامپيوتر و ميكرو و همچنين براي محافظت از پرت پرينتر به كار برده مي شود.
شكل پرت پرينتر و آي سي 74HC244 و همچنين يك نمونه پروگرامر در شكلهاي زير مشاهده ميشود.
بخش سوم
برنامه نويــسي ربــات
3-1 برنامه نويسي ربات مسير ياب :
براي برنامه نويسي ربات ما از نرم افزار BASCOM AVR استفاده مي كنيم كه يك نرم افزار قوي وداراي كامپايلر و پروگرامر است و ما ميتوانيم برنامه نوشته شده به زبان بيسيك را به راحتي كامپايل و روي آيسي هاي avr پروگرامر كرد.
در اين محيط برنامه را ميتوان به زبان بيسيك نوشت البته ميتوانيم در هر جا كه لازم داريم از زبان اسمبلي هم استفاده كنيم.
در ابتدا ما بايد برنامهي مربوط به قسمت مسير يابي ربات را بنويسيم و آن را تحليل كنيم. همان طور كه در صفحات قبل گفته شد در اين ربات ما از سنسور مادون قرمز و آي سي LM324 براي مسير يابي استفاده كرديم. در اين صورت وقتي سنسورها روي خط روند خروجي LM324 ،0يا1 ميشود وما با برنامهي مناسب مي توانيم با آي سي L298 موتورها را خاموش و روشن كرده و ربات را به چپ و راست هدايت كنيم.
حال شروع به نوشتن برنامه ميكنيم:
$REGFILE=”M32DEF.DAT”
اين خط برنامه مشخص كنندهي ميكروي مورد آزمايش است.مثلا اگراز ميكروMEGA32 استفاده ميكنيم ميتوانيم به جاي 32از 16استفاده كنيم.
$CRYSTAL=1000000
اين خط براي مشخص كردن كريستال متصل شده به ميكرو است. البته در ميكروهايي كه داراي كريستال داخلي هستند ميتوان از كريستال خارجي استفاده نكرد.مثل MEGA32و MEGA16.
همچنين ميتوان از كريستالهاي داخلي ديگري مانند 8Mو16Mو32M استفاده كرد.
CONFIG PORTC=OUTPUT
اين خط پرت C را به عنوان خروجي در نظر گرفته است.
CONFIG PORTA=INPUT
اين خط پرت A را به عنوان ورودي در نظر گرفته است.
SL ALIS PORTA.0
اين خط PORTA.0 را با SL معرفي كرده است.
SR ALIS PORTA.0
اين خط PORTA.0 را با SR معرفي كرده است.
M1 ALIS PORTC.0
اين خط PORTC.0 را با SL معرفي كرده است.
M2 ALIS PORTC.1
اين خط PORTC.1 را با M2 معرفي كرده است.
DO
DO دستور شروع برنا مه چرخش است.
IF SL=0 AND SR=0 THEN M1=1 AND M2=1
در اين خط سنسورهاي راست و چپ را تست ميكند كه اگر هر دو صفر باشند موتورهاي راست و چپ را روشن ميكند.
IF SL=1 AND SR=0 THEN M1=0 AND M2=1
END IF
IF SL=0 AND SR=1 THEN M1=1 AND M2=0
END IF
در دو اين خط دوباره سنسورها را چك ميكند وبا 0 يا1 شدن آن ها موتورهاي چپ و راست
خاموش وروشن ميشوند.
LOOP برنامهي برگشت بهDOاست END
3-2برنامه کلی ربات:
regfile = "m32def.dat”$
$crystal = 1000000
Shoro:
Config Portb = Input
Config Porta = Output
''''''''''''''''''''''''''''''''''''''''''''
Dim Co As Bit
Co = Pinb.0
Dim Ma As Bit
Ma = Pinb.1
Dim Sr As Bit
Sr = Pinb.2
Dim Sl As Bit
Sl = Pinb.3
Dim F As Bit
F = Pinb.4
Dim B As Bit
B = Pinb.5
Dim Rast As Bit
Rast = Pinb.6
Dim Chap As Bit
Chap = Pinb.7
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Co = 1 Then
Goto Control
Else
End If
If Ma = 1 Then
Goto Masiryab
Else
Porta = 0
End If
Goto Shoro
''''''''''''''''''''''''''''
''''''''''''''''''''''''''''
Control:
If F = 1 Then
Porta = 10
Goto Shoro
End If
If B = 1 Then
Porta = 5
Goto Shoro
End If
If Rast = 1 Then
Porta = 8
Goto Shoro
End If
If Chap = 1 Then
Porta = 2
goto Shoro
End If
If F = 0 And B = 0 And Rast = 0 And Chap = 0 Then
Porta = 0
End If
Goto Shoro
''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''
Masiryab:
If Sr = 0 And Sl = 0 Then
Porta = 10
Goto Shoro
End If
If Sr = 1 And Sl = 0 Then
Porta = 8
Goto Shoro
End If
If Sr = 0 And Sl = 1 Then
Porta = 2
Goto Shoro
End If
If Sr = 1 And Sl = 1 Then
Porta = 0
Goto Shoro
End If
If Sr = 0 And Sl = 0 And Ma = 0 Then
Porta = 0
End If
Goto Shoro
End 'end program
مطالب مشابه :
اموزش ساخت ربات مسیریاب
بخش دیگر در رابطه با برنامه نویسی ربات مسیریاب کسانی که با برنامه نویسی اشنایی
ساخت ربات مسیریاب
چگونه یک ربات مسیریاب برنامه نویسی : برنامه یک ربات مسیریاب می تواند شامل چند بخش باشد که
آموزش ساخت روبات مسیر یاب
مقدمه. برای ساخت یک ربات مسیریاب باید با سه رشته مکانیک , الکترونیک , کامپیوتر ( برنامه نویسی
آموزش ساخت ربات مسیر یاب
موتور یک ربات مسیریاب قبل از این که بحث برنامه نویسی رو شروع کنم باید یه سری تنظیماتی رو
معرفی کتاب ربات مسیر یاب
ساده و نحوه برنامه نویسی باعث شده حتی برنامه نویسی یک ربات مسیریاب عملی را
برنامه ای ساده برای کنترل ربات مسیریاب
آموزش ساخت ربات مسیریاب و سایر پروژه های چند مقاله قبلی مربوط به برنامه نویسی
برچسب :
برنامه نویسی ربات مسیریاب