آموزش رباتیک برای همه

در نظر دارم در این پست ساخت ربات رو برای افراد مبتدی که هنوز چیزی در مورد ساخت ربات نمی دونند آموزش بدم.

قبل از هر چیز باید این افراد بدونند که ساخت اکثر ربات ها ساده هست.

ربات مسیر یاب، ربات نور یاب، ربات ماز (لابیرنت)، روبات RUFBOT(این نوع ربات از راه دور کنترل می شود) و ربات های مشابه تقریبا ساده ساخته می شوند و فقط برای ساخت آنها کمی تجربه لازم است که بعضا اشاره خواهد شد.

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

 

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

 

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

 

برای ساخت ربات باید چند چیز را حتی در حد بسیار بسیار مبتدی بدانید:

1)      الکترونیک (برای طراحی مدارات)

2)      برنامه نویسی (برای برنامه دادن به ربات)

3)      کنترل (برای کنترل حرکات ربات)

4)      مکانیک (برای بستن قسمت های متحرک و مکانیکی)

 

شما با الکترونیک ربات در این وبلاگ آشنا شده اید.

 

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

اکثر ربات های امروزی دارای مغز متفکری هستند که تمام عملیات ربات را انجام می دهد به طوری که می توانیم به این مغز متفکر خودمان دستور بدهیم. نام این مغز متفکر میکروکنترلر می باشد. میکرو کنترلر را با نام کامپیوتر تک تراشه ای می توان نام گذاری کرد. همانطور که می دانید کامپیوتر خنگی شامل CPU، RAM، ROM، Hard Disk، I\O(ورودی خروجی) و بعضی قسمت های داخلی دیگر است به طوری که می توان بسته به نیاز خودمان مقادیر آنها را تغییر داد ولی میکروکنترلر مقدار ثابتی از حافظه های بالا را شامل میشود. فرق میکروکنترلر (از این به بعد به میکروکنترلر میگم میکرو) با کامپیوتر به صورت زیر می باشد:

1)      مصرف توان: در کامپیوتر توان زیادی در حد 200 تا 300 وات تلف می شود و ولتاژ کاری کامپیوتر خیلی بالا است ولی میکرو مصرف توانی در حد صفر دارد و با ولتاژ بسیار پایین در حد 5 ولت کار می کند.

2)      قیمت: برای ساخت یک دماسنج قیمت کامپیوتربسیار بالا است در حالی که می توان با حدود 1000 تومان یک دماسنج با میکرو ساخت

3)      اندازه: کامپیوتر حجم بسیار زیادی را اشغال می کند و وزن زیادی دارد بنابراین نمی توان از کامپیوتر در روبات نور یاب و رباتهای دیگر استفاده کرد.

4)      فرکانس کاری کامپیوتر فوق العاده بالاست که به کار ما در ساخت ربات نمی آید ولی برای پردازش فرکانس های ویدیویی که در حد 400 مگاهرتز است میکرو جوابگو نیست و در این حالت می توان بجای کامپیوتر از تراشه های FPGA استفاده کرد این تراشه ها اکثر مشخصات میکرو را دارا هستند و برنامه پذیرند.

5)      غالبا کامپیوتر برای انجام کارهای پیشرفته که میکرو و FPGA جوابگو نیستند استفاده می شود (مثلا برای انجام کارهای گرافیکی و یا استفاده از اینترنت)

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

 

ما می توانیم با چند زبان برنامه بنویسیم:

1)      بیسیک: این زبان به دلیل آنکه کلمات کلیدی زیادی دارد، فهمش برای کاربر آسان است بنابراین به اشخاص مبتدی یادگیری این زبان توصیه می شود. عمده اشکال این زبان این است که در نرم افزار های گوناگون دستورات مختلفی دارد. سطح این زبان بالا است و حدود 150 کلمه ی کلیدی دارد. (کلمات کلیدی مانند IF در زبان بیسک نمی توانند به جای اسم متغیر ها استفاده شوند)

2)      زبان سی C: این زبان ساخت یافته است به این صورت که در نرم افزار های گوناگون دستورات مشابه دارد. این زبان سطح میانی دارد و حدود 30 کلمه ی کلیدی دارد.

3)      پاسکال: این زبان مانند سی است ولی با آمدن زبان سی منسوخ شده است.

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

 

ما پنج مدل میکرو داریم که دو تای آن در ایران یافت نمی شود

1)AVR: برای افراد مبتدی استفاده از این میکرو را توصیه می کنم

2)8051: قیمت پایینی دارد و برای کارهای کوچک تر استفاده می شود.

3)PIC: در ایران چندان محبوب نیست.

برای اطلاعات بیشتر به بقیه ی مطالب وبلاگ مراجعه کنید.

 

آموزش برنامه نویسی برای AVR به زبان بیسیک: برای آموزش به آدرس زیر مراجعه کنید:

http://rapidshare.com/files/279902946/Learn_Bascom_AVR.zip.html

 

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

فعلا نقشه ی چندتا پروگرمر رو قرار میدم:

 

http://rapidshare.com/files/275861907/Programmer_AVR_STK200-300.zip.html

 

http://rapidshare.com/files/275863576/AVR_Jtag_Programmer.rar.html

 

http://rapidshare.com/files/275865936/8051_Programmer.zip.html

 

http://rapidshare.com/files/275866600/PIC16F84A_Programmer.rar.html

 

اینم نقشه ی یک ربات تعقیب نور فوق العاده ساده (لازم به ذکر است برای افزایش حساسیت این ربات به نور باید مقاومت های 1K اهمی را در حدود 15K اهم قرار دهید که بستگی به جنس مقاومت نوری دارد)

 

http://rapidshare.com/files/275867445/Light_Follower_Robot.zip.html

 

خب حالا میگم چه جوری آی سی را پروگرم کنیم.

آیا شما آموزش زبان بیسیک را در آدرس زیر خواندید؟

http://rapidshare.com/files/279902946/Learn_Bascom_AVR.zip.html

 

اگه جواب مثبته بریم ادامه ی مطلبو بگم.

شما باید برنامتونو در نرم افزار Bascom AVR بنویسید. این نرم افزار حدود 25 مگ حجمشه. از اینترنت بگیریدش. وقتی برنامه ی میکرو را در این نرم افزار نوشتید باید آن را کامپیل کنید تا فایلی با پسوند HEX ایجاد شود و باید آدرس این فایل را بدانید. لازم است بدانید دستورات نرم افزار Bascom AVR مشابه دستورات Bascom 8051 است بنابراین اگر bascom AVR بلد باشید ناخودآگاه Bascom 8051 هم بلدید.

قبل از پروگرم کردن میکرو بر روی MyComputer کلیک راست کنید و Propertis را انتخاب کنید و سپس وارد زبانه ی Hardware شوید و Device Manager را انتخاب کنید. حال در صفحه ی باز شده وارد Ports شوید. در اینجا شما آدرس پورت سریال و پورت پرینتر را مشاهده می کنید آن را به خاطر بسپارید. بعدا می فهمید این آدرس به چه دردی می خورد (این آدرس نام COM دارد با یک شماره مثلا COM1).

می توانیم برای پروگرم کردن میکرو از نرم افزاری مثل ICProg استفاده کنیم. این برنامه را در فایل زیر قرار دادم:

http://rapidshare.com/files/275953452/IC_Prog.zip.html

این برنامه نیازی به نصب ندارد.

پس از باز کردن برنامه کلید F3 را بزنید و مدل پروگرمر را انتخاب کنید و پورتی را که پروگرمر به آن متصل است انتخاب کنید (اگر مدل پروگرمر را مشاهده نکردید باید از برنامه ی دیگری استفاده کنید که پروگرمر شما را ساپورت کند) و سپس OK را انتخاب کنید.

سپس وارد Setting شوید و Options را انتخاب کرده و به زبانه ی Misc بروید و Enable Windows Me\2000\XP را فعال کنید.

حال وارد File>Open File شوید و آدرس فایلی را که کامپایل کردید (با پسوند HEX) را به برنامه بدهید.

سپس از بالا سمت راست مدل میکرو را انتخاب کنید و سپس وارد Command شوید و Erase All را انتخاب کنید تا اطلاعات قبلی میکرو پاک شود. حال کلید F5 را بزنید تا میکرو پروگرم شود. زمانی پروگرم شدن انجام شده است که پیغام Successfully را مشاهده کنید.

 

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

 

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

 

برای میکرو های AVR می توانید از برنامه ی Code Vision استفاده کنید. در فایل پسوست زیر این نرم افزارو قرار دادم:

http://rapidshare.com/files/276000028/CodeVision_AVR_1.25.9_Full.zip.html

ابتدا فایل Setup رو اجرا کنید. مشاهده می کنید که یک کد می خواهد بنابراین فایل Serial را باز کنید و کد موجود در آن را در محل مربوطه بنویسید و برنامه را نصب کنید و پس از نصب برنامه را اجرا کنید. مشاهده می کنید که از شما License می خواهد بنابراین فایل Keygen را باز کنید و در قسمت Serial Number کلید های Ctrl+V را بفشارید تا کدی در آنجا قرار گیرد. حال بر روی Make کلیک کنید و آدرسی را به آن بدهید، مثلا درایو C و سپس از برنامه ی Code Vision همین آدرس را وارد کنید. حال برنامه کار می کند.  پس از نصب و اجرای این برنامه وارد قسمت Setting و سپس Programmer شوید و مدل پروگرمر را انتخاب کنید و مشخص کنید پروگرمر به کدام پورت وصل است؟

حال OK را کلیک کنید.

اگر پروگرمر شما به پورت پرینتر وصل می شود باید وارد Setting شوید و Tarminal را انتخاب کنید و پورت صحیح را انتخاب کنید و سپس OK را بفشارید.

حال Shift و F4 را همزمان فشار دهید تا کادر Chip Programmer ظاهر شود. در این کادر باید مدل میکروی AVR را انتخاب کنید. حال وارد File شوید و Load Flash را انتخاب کنید. در قسمت Files Of Type گزینه ی Intel Hex files را انتخاب کنید و حالا آدرس فایل کامپایل شده را وارد کنید و Open را بزنید

سپس وارد Program شده و Erase Chip را انتخاب کنید و سپس در همین منو Flash را انتخاب کنید تا پروگرم کردن انجام شود. اگر اشتباها program All را بزنید فیوز بیت ها هم برنامه ریزی می شوند و میکرو دیگر برنامه ریزی نمی شود در این صورت باید یک کریستال بین پایه های Xtal1 و xtal2 قرار داد تا مشکل بر طرف شود.

 

حالا نقشه ی دوتا ربات نوریاب رو میزارم:

 

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

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

 

در ربات جدید این عیوب برطرف شده است.

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

http://rapidshare.com/files/277574287/Sensores.zip.html

 

لینک دانلود نقشه ی این ربات به همراه فایل HEX و فایل Proteus:

http://rapidshare.com/files/277576284/Light_Follower_2.zip.html

 

وقتی به سنسور یک، نور بتابد، ربات به سمت جلو (یا عقب) حرکت می کند و وقتی به سنسور چهار نور بتابد، ربات به سمت عقب (یا جلو) حرکت می کند. و دو سنسور دو و سه هم برای چرخش به سمت راست و یا چپ هستند. اگر به همه ی سنسور ها نور بتابد، ربات متوقف خواهد شد و اگر هیچ نوری هم به ربات نتابد، مجددا ربات متوقف می شود. این چهار سنسور باید به شکل L قرار بگیرند یعنی باید افقی قرار بگیرند نه عمودی. در ضمن مقدار حساسیت به نور برای هر چهار LDR قابل تنظیم است که با تغییر مقدار پتانسیومتر های 20K اهمی امکان پذیر است.

دیود های D1…D8 در نقشه ی مدار برای از بین بردن ولتاژ های زیاد (در حد چند صد ولت) می باشد. هنگام چرخش موتور های ربات و توقف موتور ها این ولتاژ ها به وجود می آید که می تواند به میکرو آسیب برساند بنابراین از این دیود ها استفاده می کنیم.

خازن های عدسی 100n که بر روی بدنه ی آنها 104 درج شده است برای از بین بردن خاصیت سلفی موتور ها می باشد.

آی سی که موتور ها را راه اندازی می کند (به آن آی سی درایور می گویند) مدل L293D می باشد که باید پایه های 1، 8، 9 و 16 آن را به تغذیه ی دوازده ولت متصل کنید. البته این تغذیه کمتر هم می تواند باشد (مثلا 9 ولت). پیشنهاد بنده به شما این است که هرگز این پایه ها را به سر خروجی آی سی 7805 وصل نکنید چون این آی سی داغ می شود و تلفات ایجاد می کند.

 

خازن های وصل شده به آی سی 7805 که یکی از آنها 100uF و دیگری 220uF است به این دلیل است که موتور های ربات هنگام روشن شدن جریان زیادی از باتری می کشند که همین باعث افت ولتاژ باتری در مدت کوتاهی می شود که در این صورت ممکن است میکرو هنگ کند به همین دلیل هنگام افت ولتاژ باتری این خازنها تخلیه می شوند و مانع از هنگ کردن میکرو خواهند شد.

 

پایه های 8 و 22 میکرو را به زمین وصل کنید (منظور از زمین در اینجا سر وسطی آی سی 7805 می باشد و سر وسطی آی سی 7805 به سر منفی باتری وصل می شود). پایه ی 7 میکرو را به خروجی آی سی 7805 که یک ولتاژ 5 ولت ثابت است وصل کنید (وقتی که قسمت فلزی آی سی 7805 به سمت پشت ما قرار دارد، پایه ی خروجی این آی سی سمت راست ما قرار دارد و پایه ی ورودی سمت چپ ما است).

 

برنامه ی این ربات رو به زبان بیسیک نوشتم و با برنامه ی Bascom AVR اونو کامپایل کردم. اگر دستورات موجود در این برنامه را با دقت تمام ببینید، متوجه می شوید که این دستورات بسیار ساده هستند. در لینک زیر نقشه ی ربات به همراه برنامه و فایل هگز و فایل پروتئوس را قرار داده ام (فایل پروتئوس چیست؟ برنامه ای با نام Proteus Professional موجود است که برای شبیه سازی مدارات الکترونیکی بکار می رود. یعنی شما می توانید بدون بستن مدار به صورت عملی آن را در کامپیوتر شبیه سازی کنید. برای این کار این برنامه را از سی دی نرم افزار فروشی ها خریداری کنید و آن را نصب کنید. پس از نصب این برنامه را اجرا کنید و کلید Play را بزنید {کلید F12} تا شبیه سازی انجام شود).

 

با کمی تغییر در برنامه ی ربات نور یاب می توان ربات پیدا کننده تاریکی را ایجاد کرد. توجه کنید نقشه ی مدار همان نقشه ی مدار قبلی است فقط برنامه ی میکرو عوض شده است. لینک دانلود برنامه ی این ربات:

http://rapidshare.com/files/277577213/Night_Follower.zip.html

 

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

می خواهیم بدانیم که چگونه موتور را قرار دهیم تا با سرعت حرکت کند؟

موتور موجود در این ربات نوریاب موتور DC است (به آن آرمیچر هم می گویند) که دو سیم دارد. این موتور با سرعت خیلی زیاد می چرخد ولی قدرت کافی ندارد به همین دلیل اگر این موتور را مستقیم به چرخ ربات وصل کنیم، ربات حرکت نمی کند. بنابراین باید این سرعت کم شود و قدرت موتور زیاد شود. برای این منظور از جعبه دنده (گیرباکس Geare Box) استفاده می کنیم. این نوع جعبه دنده را در شکل زیر مشاهده می کنید:

 

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

مدار ربات را هم روی چرخ دنده ها قرار دهید. ربات شما آماده است!!!

اینم فیلمی از ربات نور یاب:

http://beygielectronic.persiangig.com/other/Light%20Following%20Robot.zip


در ادامه ی بحث ساخت ربات مسیر یاب رو هم آموزش می دم.


فیلمی از ربات مسیر یاب:

http://beygielectronic.persiangig.com/other/Line%20Follower%20Robot.zip


اینم نقشه ی دوتا ربات مسیر یاب:

http://beygielectronic.persiangig.com/other/Line%20Robot.zip

http://beygielectronic.persiangig.com/other/ELM%20line%20follower%20all%20files.zip

New Page 1
گزارش تخلف
بعدی