ساخت یک ربات مسیر یاب

ساخت یک ربات مسیر یاب : مرحله به مرحله

چگونه یک ربات مسیر یاب بسازیم


برای ساخت یک ربات مسیر یاب باید با سه رشته مکانیک , الکترونیک , کامپیوتر ( برنامه نویسی ) آشنایی مقدماتی داشته باشید

 

مکانیک

مکانیک یک ربات مسیر یاب از 4 بخش تشکیل شده است که به برسی هر کدام میپردازیم

1- شاسی یا بدنه که تمام اجزای ربات مانند برد ها و ... روی آن قرار میگیرد.

2- موتور ربات مسیر یاب

3- چرخ ربات مسیر یاب
4- برد سنسور که وظیفه تشخیص خط زیر ربات میباشد

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


شاسی یا بدنه

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

 

موتور یک ربات مسیریاب


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

DC MOTOR

Steper Motor


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

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


www.Shop.Farsitools.com Is Shoping Robotic



چرخ ها


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

1- اندازه قطر چرخ , 2-اندازه عرض چرخ , 3 اصطحکاک چرخ با زمین

1- اندازه قطر یک چرخ باید به اندازه ای باشد که با دور موتور شما هماهنگی داشته باشد چون هرچه قطر چرخ بشتر باشد با یک دور موتور روبات مسیربیشتری را طی میکند و هر چه قطر آن کمتر باشد با یک دور چرخش موتور ربات مسیر کمتری را طی میکند


2- اندازه عرض چرخ : توصیه میشود اندازه عرض چرخ برای این جور کاری بین 1 تا 2 سانت انتخاب شود چون اگر بیشتر از این باشد اصطحکاک و وزن آن خیلی زیادی میشود


3- برای اصطحکاک چرخ با زمین میتوانید از نوار چسب برقی از طرف چسبندگی به زمین استفاده کنید که این کار لاستیک ها بیشتر به زمین میچسباند و تا حدی میتواند به تعادل ربات کمک کند

چرخ هرز گرد :

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


برد سنسور ( حسگر )

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

و چند نکته که باید در مکانیک ربات رعایت شود :

1- حتما مکانیک ربات محکم بسته شود.

2- اگر از چسب برای بستن استفاده میکنید حتما به همراه بست استفاده شود .


3- برای بستن برد ها به بده ( شاسی ) حتما از پیچ و مهره یا Spacer و مهره استفاده کنید

4- برای محکم شدن و جلوگیری شل یا باز شدن اتصالات میتوانید از واشر فنری استفاده کنید .

5- در جاهایی که ممکن است پیچ و مهره باعث اتصالات بین قطعات شود میتوانید از واشر فیبری استفاده کنید .

الکترونیک ربات مسیریاب


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

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


WWW.Shop.Farsitools.com

                               [تصویر: image026.jpg]

                                                    برد آموزشی

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


1- مدار تغذیه

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

3- بخش های ورودی و خروجی

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

5- مدار برد سنسور



مدار تغذیه

این بخش از مدار وظیفه تبدیل ولتاژ از ورودی به خروجی 5 ولت استاندارد میباشد و دلیل اینکه باید 5 ولت باشد این است که میکرو کنترلر شما و بیشتر بخش های یک ربات مسیر یاب و اصلا کلاً دستگاه های دیجیتال از ولتاژ 5 ولت استفاده میکنند.
برای تبدیل ولتاژ مورد نیاز ما از رگولاتور xx78 استفاده میکنیم که منظور از xx مقدار خروجی رگولاتور است مثلاً (7805) که ولتاژ خوجی آون 5 ولت استاندارد میباشد ( نقشه مدار در شکل شماره 2 )

تثبیت کننده های ولتاژ 7805 نمیتوانند ولتاژ ورودی بالاتر از 35 ولت را تحمل کنند و اگر به ولتاژ بالا تر از 35 ولت دسترسی دارید میتوانید برد منبع تغذیه رو طبق نقشه زیر رسم کنید

                                                         شکل (1)

[تصویر: REglator.gif]

 

                                                 [تصویر: image028.jpg]

در مدار بالا یک رگولاتور 7824 رو قبل از 7805 گذاشتم که ولتاژ رو اول به 24 ولت تبدیل کنه بعد به 7805 بده . برای افزایش ولتاژ ورودی قابل قبول تا حد اکثر ممکن پایه وسط 7824 طبق معمول به زمین متصل نشده و به جای آن به خروجی 7805 وصل شده است با این ترکیب حد اکثر ولتاژ ورودی از 40 ولت مجاز برای 7824 نیز 5 ولت بالاتر رفته و به 45 ولت میرسد


برای اینکه بیشتر این ای سی رو بشناسد میتونید به Data Sheet آن مراجعه کنید  

شکل 2 از یک مدار منبع تغذیه که بیشتر این مدار در ربات ها استفاده میشود
برای گرفتن نویز از مدار از یک خازن با ظرفیت بالا (Uf2000) و یک خازن با ظرفیت بسیار پایین (uf 10) با مدار موازی میکنیم و اگر میخواهید از وضعیت روشن و خاموش بودن مدار مطلع شوید میتوانید یک عددLED با مدار موازی کنید

                                                 شماتیک مدار :

                                                     شکل (2)

                             [تصویر: image030.gif]

                          
میکروکنترلر

AVR

میکرو کنترلر در اصل مغز ربات به حساب می آید و باید دارای حافظه کافی و پایدار برای برنامه ریزی باشد که با استفاده از فرمان هایی که ما برنامه نویسی کردیم وظیفه اش را انجام میدهد و ربات را کنترل میکند

میکرو کنترلی که ما از آن در ساخت ربات استفاده میکیم میکرو کنترلر ATMEGA 32Lاز خانواده AVR که در دو نوع
ATMEGA32 , ATMEGA32L میباشد که دارای kb32 حافظه پایدار و قابل برنامه ریزی میباشد .

 

به توضیحاتی مختصر در مورد این میکرو کنترل می پردازیم :

میکرو کنترل AVR ATMEGA 32 دارای 40 پایه که 32 تای آن مربوط به بخش های ورودی و خروجی میباشد و 8 تای آن مربو به تغذیه و ... میباشد

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

این میکرو دارای PORT 4 میباشد که به پورت های A,B,C,D تقسیم میشوند هر پورت آن دارای PIN 8 می باشد که 8*4 میشه 32 تا پایه های ورودی خروجی میباشد و به صورت زیر نام گذاری میشود

شماره پین ها از 0 تا 7 میباشند

مثلاٌ میخواهیم پین شماره 4 از پورتA را صدا بزنیم که به این صورت نام میبریم :
PIN A.3یا PORT A.3 و دلیل این که پین شماره 4 رو 3 صدا زدیم اینه که در بالا نحوه شماره گذاری رو گفتم

 

                       [تصویر: ATMEGA%2032L.gif]        
             

همون طور در شکل بالا میبینید مثلا PORTA به صورت PA و  PORTB به صورت PB و دیگر پورت ها هم به همین صورت نام گذاری شده است کI معمولا پورت A را به سنسور ها وصل میشن و درایور موتور هم به پورت های
D وصل میشن که شما فعلا زیاد گیر ندین که من خودم بعدا به طور مفصل توضیح میدم

حالا بریم سر اون پایه های بقیمانده :

VCC

این پایه برای تغذیه منطقی این میکروکنترل میباشد که باید برق 5 ولت رگوله شده که از منبع تغذیه گرفته میشود تامین شود

که میتوان از برق 2.7 تا 5.5 در این میکرو استفاده کرد

 GND این پایه همون طور که از اسمش معلومه باید به سر منفی یا همون سر زمین منبع تغذیه وصل بشه

RESET

این پایه هم همونطور که از اسمش معلومه برای RESET کردن میکرو به کار میرود که اگه به پین GND وصول بشه میکروRESET  میشه که معمولا با یک میکرو سویچ به سر زمین وصل میکنند که یک اتصال کوتاه داده بشه XTAL1

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

AVCC

همان طور که میدانید پین های پورت A دارای مدار  ADC=(Analog to Digital Converter) یا همون تبدیل آنالوگ به دیجیتال میباشند که در داخل همین میکرو این مدار جا سازی شده است که این پایه برق پورت  A را تامین میکند که باید به همون برق 5 ولت رگوله شده وصل شود .

 

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

یکی دیگر از بخش های یک ربات مسیر یاب همین بخش است ( درایور موتور )

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


به دلیل اینکه که میکرو کنترلر  Avr به تنهایی نمیتواند برق موتور را تامین کند ( ولتاژ کاری موتور بیش از 5 ولت میباشد ) فرمان هایی به یک ای سی منطقی  L298 میفرستد و برق از آنجا تامین میشود و نهایتاً وظیفه این بخش تأمین ولتاژ و جریان مورد نیاز های موتور است و توسط میکروکنترلر کنترل می شود .
بهترین گزینه برای کنترل موتور ها انتخاب ای سی منطقی (3آمپر)  L298 و (1آمپر)  L293میباشد که میتوان موتور ها را به صورت دو جهته (Bidirectional) کنترل کرد .

دو جهته ؟

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

اگر بخواهیم روبات ما به طرف چپ بپیچه باید موتور سمت چپ خاموش و موتور سمت راست ما روشن باشه تا روبات بچرخه

اگر بخواهبم روبات به سمت راست بچرخه موتور سمت راست ما باید خاموش بشه و موتور سمت چپ ما باید روشن باشه

حالا اصلا چه ربطی به دو جهته داشت !!!!

حالا میگم چرا دو جهته ؟

خوب بابا دلیلش که خیلی روشنه !!! اگر بخواهیم روبات رو با سرعت بالایی کنترل کنیم و در پیچ های 90 درجه یا بیشتر از معکوس استفاده کنیم


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

 

شماتیک مدار

همان طور که از روی شکل این ای سی معلومه این ای سی دارای 15 پایه میباشد که یکی یکی این پایه ها را بررسی میکنیم .

Input1,2,3,4 این چهار پایه همان چهار پایه ورودی این ای سی میباشد که فرمان ها را از خروجی ای سیAVR میگیرد و به Output های خود فرمان چرخش و معکوس کردن و ایست را میدهد که دو پایهinput1,2برای موتور اولی (Out put 1,2) وinput 3,4 مربوط به موتور دومی =out put 3,4میباشد

1,2,3,4 Out Putاین چهار پایه همان 4 پایه خروجی ای هستند که باید به موتورDC وصل بشن که شماره 1,2 آن مربوط به موتور اولی و پایه های 3,4 مربوط به موتور دومی میشود که نحوه بستن مدار اون رو بعدا توضیح میدم

Enable A,B این دو پایه هر کدام مربوط به یک موتور میباشند که برای فعال و غیر فعال کردن مدار خودشون به کار میروند و استفاده دیگر این پایه های مربط به کنترل سرعت هم میباشد Corrent Sensing A,B قرار دادن یک مقاومت میان این پایه ها و سر زمین منبع تغذیه تون می تونید آمپراژ مورد استفاده هر موتور رو تنظیم کنید. این مقدار با استفاده از فرمول Vs/R که R مقدار مقاومت است، بدست میاد که اگر از موتوری استفاده میکنید که کمتر از 2 آمپر استفاده میکند میتونید این دو پایه را مستقیماً به سر منفی وصل کنید

GND

همان طور که میدونید GND در مدار ها به معنی زمین هست و باید به سر منفی مدار منبع تغذیه تون وصل کنید

Logic Supply Vss این پایه همان پایه تغذیه منطقی ای سی میباشد که باید به رنج 3.5 تا 7 ولت وصل بشه که مقدار پیشنهادی همون 5 ولت رگوله شده میباشد  

Supply Volltage Vs

این پایه در واقع برق موتور ها رو تامین میکنه که باید به سر مثبت منبع تغذیه ای که برای موتور خود در نظر گرفتید وصل بشه که در رنج 2.5 تا 46 ولت وصل بشه

به ابن نکته توجه کنید که ولتاژی که به این پایه میدید حدود 1.5 ولت از برق تغذیه موتوردون بیشتر باشه چون که این ای سی حدود 1.4 ولت افت ولتاژ دارد ( فقط به Max 46 ولت دقت کنید )

( این ای سی دو پایه برای تامین برق دارد که یک پایه آن برای تغذیه خود ای سی میباشد که باید همون برق 5 ولت رگوله شده به آن وصل شود و اون یکی برق موتور را تامین میکند که باید در رنجی که تایین شده به آن وصل شود که باید سر بار مثبت منبع تغذیه ای که برای موتور در نظر گرفتید به آن وصل کنید )

معمولا در ربات های مسر یابی که من دیدم از پین های پورت Aبه عنوان ورودی میکرو کنترلر که به خروجی سنسور ها وصل میشه و پورت های PORTD.4 … 7از میکرو کنترلر AVRبه عنوان خروجی میکرو کنترلر در نظر میگیرن و به OUTPUT های ای سی L298وصل میکنند

 

بستن مدار

همان طور که میدانید هنگامی که تغذیه موتور به طور ناگهانی قطع میشود سیمهای اون برای مدت کوتاهی جریان را در جهت معکوس میکنند و یا حتی چرخاندن شفت موتور باعت تولید بار الکتریکی میشود که ولتاژ ها باعث تخریب آی سی های منطقی میشود که برای جلو گیری از این آسیب ما از دیود 1N5818یا 4007N1در دو سر موتور استفاده میکنیم که در شکل زیر شماتیک اون رو میبینید

    [تصویر: l298Board.gif]

همون طور که در شکل بالا میبینید پایه های 6 و 11 به یک مقاومت 1 کیلو و به برق 5 ولت وصل شده است ودلیل اون هم اینه که پایه های 6 و 11 پایه های  Enable 1,2 میباشند که برای فعال و غیر فعال کردن مدار موتور میباشد که میتوان آن هارا یا به میکرو وصل کرد وکنترل کرد یا با مقاومت به برق 5 ولت رگوله شده وصل کرد تا مدار همیشه روشن باشدپایه های 1 و 15 هم هم که   Corrent Sensing A,B میباشد که میتونید این پایه ها رو به یک مقاومت 0.5 اهم به سر زمین مدارتون وصل کنید

و حالا بریم سر اونایی که با فلش به اونا اشاره شده

1 و 2 و 5 و 6 این دو پایه پایه های ورودی این ای سی میباشند که فرمان هایی راکه از میکرو کنترلر میگیرن و موتور ها رو کنترل میکنند که بهتره این پایه ها به پایه های 5و6و7و8 از PORT Dمیکرو کنترلرتون وصل کنید تا اگه خواستید از سیستم PWM استفاده کنید بتونید

فلش های شماره 3و4و7و8 هم به موتور هاتون وصل میشه که حتما دیود های اون رو ببندید و باید جهت بستن دیود ها طبق شکل بالا باشه

 
برد سنسور

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

سنسور در اصل چشم ربات به حساب میاید که خط زیر را تشخیص میدهد و به میکرو کنترلر فرمان میفرستند

سنسور های مادون قرمز (IR) زیادی در بازار موجود میباشند که در دو نوع فرستنده و گیرنده میباشد که نمونه اون رو میتونید در کنترل تلویزیون و خود تلویزیون مشاهده کنید که سنسوری که در کنترل میباشد و دارای رنگ روشنی میباشد فرستنده و سنسوری که در جلوی تلوزیون میباشد تیره رنگ میباشد گیرنده اون به شمار میرود

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

یعنی سنسور فرستنده و گیرنده در یک پک کوچک و کم حجم میباشدند که دارای حساسیت خوب و یکی از بهترین سنسور ها برای یک ربات مسیر یاب میباشد و نور محیط تاثیر زیادی در عملکرد آن ندارد ( مادون قرمز )و اسم این سنسورGP2S04-6 نکته : بهترین بازده این سنسور در فاصله 4 الی 6 میلیمتر از صطح زمین میباشد

در عکس زیر نمونه ای از این سنسور و نمونه ای از برد سنسور رو میبینید

                   [تصویر: image039.gif] 

                        [تصویر: image038.gif]

خوب حالا بریم سر اصل مطلب که بستن مدارمونه

این سنسور دارای 4 پایه میباشد که دوتای اون به زمین وصل میشه و اون دوتای دیگر هر کدوم به مقاومت وصل میکنیم

پایه مثبت فرستنده به مقاومت ۳۳0 اهم و پایه مثبت گیرنده به مقامت 470 کیلو اهم وصل میشن

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

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

                    [تصویر: image041.gif]

 
زمانی که زیر سنسور رنگ سفید باشد مقدار خروجی حدود 2/0 –0.7 ولت میباشد و زمانی که رنگ زیر آن سیاه باشد خروجی آن حدود 3/3 – 4/3 ولت میباشد

شماتیک مدار با 3 سنسور

                          [تصویر: image042.gif]

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

سنسور های مورد نیاز ما سنسور های فرستنده و گیرنده معمولی IR - سه میلییمتری میباشند که هر کدوم دو پایه دارند که توضیح میدم


نوع سنسور :
IR یا همون سنسور های کنترل و تلویزیون

فرستنده :سنسور بی رنگ

گیرنده : سنسور تیره رنگ

فاصله بین سنسور فرستنده و گیرنده 2 تا 3 میلیمتر

 

نحوه بستن مدار


برای بستن مدار فرستده باید پایه بلند رو به یک مقاومت 330 و به VCC یا همون برق استانداردمون و پایه کوتاه اون رو به  GNDوصل کنیم
برای بستن مدار گیرنده باید پایه بلندشو به GNDو پایه کوتاه اون رو به یک مقاومت 2 کیلو اهمی و به
VCCوصل کره و از وسط پایه کوتاه و مقاومت گیرنده ولتاژ مورد نظر برای میکرو کنترلر گرفته میشود

پروگرامر
خوب دوستان کم کم داریم به برنامه نویسی میکرو کنترلر نزدیک میشیم و میخوام امروز نحوه ساخت پروگرامر
STK200/300رو توضیح بدممیکرو کنترلر
AVR ATMEGA 16 or 32 دارای پروگرامر داخلی میباشد و پروگرامر اون خیلی خیلی ساده است


این پروگرامر از اتصالات
SP1 برای برنامه ریزی میکروکنترلر استفاده میکند بنابراین میکرو کنترلر هایی که قابلیت اتصال به به
SPI رو دارند میشه با این پرو گرام کرد

                                   [تصویر: programmer1.gif]

 

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

GND , VCC , MOSI , MISO , RESER ,SCK

همون طور که میبینید ما در اینجا از یک پورت پرینتر 25 پین استفاده کردیم که پین های 18 الی 25 اون به هم دیگه و به زمین وصل میشه

پین شماره 6 پورت رو به SCK(8)

میکرو و پین شماره 7 بهMISO (7)


و پین شماره 9 به RESET (9)


و 10 اون به MOSI(6)

و پین 24 اون هم به زمین میکرو وصل بشه


و در آخر هم پین VCC

میکرو و GND

پورت رو به برق 5 ولت وصل بشه مدار دوم

 

این مدار هم مثل مدار قبلیه و تنها تفاوتی که با مدار قبل داره اینه که این پروگرامر فقط با یه ای سی بافر 74HC244
بهینه شده و شکل اولی نوع ساده شده این مداره

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

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

                                    [تصویر: flat.gif]

                                    [تصویر: port.gif]

                             [تصویر: 74hc244.gif]

  

برنامه نویسی ربات مسیر یاب


قبل از این که بحث برنامه نویسی رو شروع کنم باید یه سری تنظیماتی رو روی میکروتون و برنامه انجام بدید که تنظیم فیوز بیت های میکرو و پرو گرامره


ابتدا باید برنامه BASCOM AVR رو تهیه یا دانلود کنید و بعد نصب و کرک اون این مبحث رو ادامه بدید

اول نحوه تنظیم پروگرامر رو توضیح میدم

اول برنامه رو باز کنید و بعد از منوی Option گزینه Programmer رو انتخاب کنید و بعد از اون صفحه ای باز میشه که باید نوع پروگرامرتون رو مشخص کنید که شما از لیست اون گزینه STK200/STK300 Programmer رو انتخاب کنید تا نوع پروگرامرتون رو بشناسه

تنظیم دوم

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

وارد محیط برنامه BASCOM AVR شوید و بعد از اون از منوی File گزینه New را انتخاب کنید

بعد از اون روی کلیک کنید و بعد از اون روی گزینه Manual Program کلیک کنید و بعد از اون وارد محیطی میشوید که زبانه Lock and Fuse Bits رو انتخاب کنید


و طبق تصویر ضمیمه تنضیمات رو انجام بدید و بعد از اون روی کلید های Write FSو Write FSH کلیک کنید تا تنظیمات اعمال شود

حالا میکرو شما آماده برنامه نویسی شده

 

برنامه نويسي يك ربات مسير ياب

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

شروع مبحث برنامه نويسي ( مقدماتي بيسك )

در ابتداي برنامه نويسي باسد نوع ميكرو و كريستال خودتون رو به برنامه معرفي كنيد براي اين كار از دستور زير استفاده ميكنيم

$ RegFile ="x"

در اين مثال نوع ميكرو  مورد استفاده شماست مثلاً

$RegFile ="M32Def.Datl"
يا
$ Regfile ="M16Def.Dat

مثال اولي براي ميكروهاي سري اتمگا 32 هست و مثال دومي براي ميكرو هاي سري اتمگا 16 براي درك بهتر من اين مثال ها رو با 2 رنگ نوشتم توجه داشته باشيد كه بايد نام معرفي ميكرو تون رو داخل دابل كوتيشن " " قرارگيرد

براي معرفي كريستال هم از دستور زير استفاده ميكنيم

$Crystal = 8000000
نوع كرستال شماست كه ميتونيد بنا به كريستالي كه داريد اونو تغيير بديد

مقدار پيش فرض رو همين مقدار 8000000قرار بديد چون كريستال داخلي خود ميكرو 16 و 32 همين مقدار است ولي اگر از كريستال بيروني استفاده ميكنيد مقدار اون رو مطابق با كريستالدون تغيير بديد

توجه كنيد كه مقدار اين كریستال داخل دابل كوتيشن " " نمي باشد

تو این پست میخوایم در مورد تعریف متغیر ها در بیسیک و تعریف پورت های وروردی و خروجی صحبت کنم

Dimاین دستور برای تعریف نوع متغیر میباشد که انواع متغیر های عبارتند از :

Integer -32767 -> 32768

Byte 255

Bit 0 or 1

کوچکترین واحد حافظه که فقط مقدار 0 یا 1 میگیرد Variant این برای مواقعی است که متغیر معلوم نیست از چه نوعیه Booliean این برای مواقعی است که مقدار بر کشتی متغیر صحیح یا غلط باشه یعنی فقط مقدار درستس و نادرستی می پذیره Long این برای تعریف اعداد خیلی بزرگ تا چند رقم اعشار میباشد که الان دقیقا یادم نیست مقدار دقیقش و دقتش تا چند رقم اعشاره String این برای تعریف متغیر هایی از نوع رشته ای میباشد مثلا میخواید داخل یه متغیر یه متن بریزید

و ....

مثال

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

Dim a As Integer

در بالا ما متغیری تعریف کردیم به نام Aو از نوع Integer میباشد یعنی عدد صحیح که مقدار -32767 تا 32768 را میتواند در خود جای دهد Dim s As String در این مثال ما متغیری به نام s تعریف کردیم که از نوع رشته ای میباشد و فقط میتوان در آن رشته ای ریختDim b As Byte

در مثال بالا ما یک متغیر از نوع Byte تعریف کردیم به اسم b که میتوان تا مقدار 255 را در اون ریخت به همین ترتیب متغیر های مورد نیاز رو تعریف میکنیم

ولی ما در این برنامه نویسی بیشتر به Integer و Byte نیاز داریم

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

Config PortA = Input Config PortD= OutPut

خوب ما در بالا تعریف کردیم که پین های پورت Aبه عنوان ورودی میکرو در نظر گرفته بشه و پین های پورت Dبه عنوان خروجی در نظر کرفته بشه که من در بالا نام پورت ها رو با رنگ قرمز و سبز مشخص کردم Input یعنی ورودی و OutPut یعنی خروجی که ما میتونیم برای هر پورتی تعریف کنیم یا میتونیم پین های ورودی و خروجی رو به صورت دونه دونه تعریف کنیم که به ای صورته :

Config pina.0 =input Config pina.1 = input ‘---------------------------- Config pinD.4 =Output Config PinD.5 =Out Put D.5 یعنی پین شماره 5 از پورت D مثال بلای سرش همین طور

به همین منوال پین ها رو تعریف میکنیم

خوب حالا ما میخوایم که برنامه نویسی با 3 سنسور را را شروع کنیم که بدین صورت عمل میکنیم

Dim s1 As integer
‘ Sensore samte rast

سنسور ها


Dim s2 As integer ‘ Sensore Vasati Dim s3 As integer ‘ Sensore Samte Chap ‘=============================== Config pinA.0 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim Config pinA.1 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim Config pinA.2 = Input ‘ Port a ; pin 0 ro be onvane voroodi dar nazar gereftim ‘----------------------------------- Config pinD.4 = Output ‘Port D ;Pin 4 --- > Ro Be Onvane Khorooji Dar Nazar Migiri Config pinD.5 = Output

Config pinD.6 = Output Config pinD.7 = Output ‘=============================== M1 Alias PinD.4 M2 Alias PinD.5 M3 Alias PinD.6 M4 Alias PinD.7 ‘================================== S1 = pinA.0 S2 = pinA.1 S3 = pinA.2

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

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

فکر نکنم دیگه جایی مبهم مونده باشه به غیر از چند خط آخری که توضیح میدم

دستور Alias میاد و اون اسمی رو که برای پینی که در جلوی اون تعریف کرید در نظر میگیره که توی برنامه میتونید اون پین رو با اون اسمی که براش تعریف کردید صدا بزنید مثلا اگه میخواید توی برنامه pina.0 رو صدا بزنی اسم معادل اون رو که M1 گذاشتی صدا میزنیPort D هم که به عنوان خروجی تعریف کردیم که به درایور موتور وصل میشه و به اون دستور میده

S1 = pinA.0

این هم که معلومه S1 رو به عنوان سنسور شماره 1 که در بالا تعریفش کردیم که کدوم پینه رو در نظر میگیره که توی برنامه سنسور شماره 1 رو به این اسم میشناسم

 

دستورات پایانی با بیسیک

در بیسیک یک دستور برای چک کردن شرطه که چک میکنه که آیا این شرط برقراره یا نه

اگه بود فلان کاری رو بکن و اگه نبود فلان کارو بکن

دستور شرط : If . . . Then

در غری اینصورت : Else

دستور بعدی هم حلقه تکراره :

Do . . . Loop

For . . . Next


دستور اولی حلقه تکرار بی نهایته و لی دستور دومی حلقه به تهداد مورد نظر شما اجرا میشه

خوب حالا برنامه نویسی رو شروع میکنیم

شرط های ما :

1 - اگر سنسور وسطی ما روی خط سیاه بود به جلو حرکت کن

2 - اگر سنسور سمت چپ روی خط بود موتور سمت چب خاموش و موتور سمت راست روشن باشد

3 - اگر سنسور سمت راست روی خط بود موتور سمت راست خاموش و سنسور سمت چب روشن باشد

این شرط ها باید مرتباً تکرار و چک شود


مطالب مشابه :


آموزش ساخت ربات مسیر یاب

چگونه یک ربات مسیر یاب بسازیم با سلام خدمت دوستان گلم که میخوان یک روبات مسیر یاب حرفه ای




ساخت یک ربات مسیر یاب

flux - ساخت یک ربات مسیر یاب - وبلاگ تخصصی برق ؛ الکترونیک




آموزش ساخت روبات مسیر یاب

مقدمه. برای ساخت یک ربات مسیریاب باید با سه رشته مکانیک , الکترونیک , کامپیوتر ( برنامه نویسی




ربات مسیریاب چیست؟

ربات مسیر یاب باید بروی یک سطح سفید که یک خط مشکی بر روی آن کشید ه شده حرکت کند و به هر کجا خط




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

مجله الکترونیک - ربات مسیر یاب: - علمی و پژوهشی با سلام این وبلاگ قصد دارد به شما عزیزان در




ربات مسیر یاب

جزوه و پروژه الکترونیک - ربات مسیر یاب - ۩۞۩ارشد الکترونیک ۩۞۩




ربات مسیر یاب

all sara - ربات مسیر یاب - نیاز به گشتن نیست همه چیز اینجاست در all sara - all sara




آموزش ساخت ربات مسیر یاب

مقالات الکترونیکی - آموزش ساخت ربات مسیر یاب - چگونه یک ربات مسیریاب بسازیم: مقدمه : برای




مکانیک روبات مسیر یاب

سامانه آموزشی - مکانیک روبات مسیر یاب - سنسور کار تشخیص رنگ زیر ربات را انجام می دهد.




برچسب :