ساخت ربات ها

آموزش ساخت ربات (میکروکنترلر)
میکروکنترلر چیست: میکروکنترلر رو درواقع می توان یه کامپیوتر کوچولو در قالب یه چیپ برای کنترل وسایل الکترونیکی (در اینجا ربات) تلقی کرد. تفاوت میکروکنترلر با میکروپروسسور در اینه که میکروکنترلر دارای یک CPU ٫مقدار محدودی RAM ٬ ROM ٬ پورت های I/O و تایمر در درون خود می باشد در صورتی که میکروپروسسور فقط یه CPU هست و شما باید RAM, ROM ,… رو به صورت اجزای جانبی به اون متصل کنید (درست مثل CPU کامپیوتر). برای همین میکروکنترلرها تک منظوره

ولی میکروپروسسورها همه منظوره هستند. با این تفاسیر میکروکنترلرها دارای کارایی های خاص خودشون مثلا در ماشین لباسشویی٬ ماکروویو٬ تلفن و البته ربات هاو… هستند یعنی جایی که استفاده از میکروپروسسور نه از نظر کارایی و نه از نظر اقتصادی عقلانیه! تازه فهمیدیم میکرو یعنی چی
انتخاب میکرو(مناسب ربات ما:
در انتخاب میکرو فاکتورهای زیادی دخیله: ۱-هزینه ۲-سرعت ۳-کارایی و قابلیت ها ۴-راحتی کار با آن و… در حال حاضر در بازار ایران میکروهای متنوعی ازجمله ۸۰۵۱ از اینتل٬ PIC از میکروچیپ تکنولوژی و AVR از شرکت ATMEL هواخواهان زیادی دارن. همچنین آمارها نشون داده که در ساخت ربات اکثرا از PIC استفاده شده (در آمریکا :)) ولی من می خوام این پروژه رو با AVR انجام بدم چون تقریبا کم هزینه (۳۵۰۰) هستش٬ هم کارایی های مناسبی داره٬ هم برنامه نویسی برا اون آسونه (هم C داره هم Basic تازه کلی هم نرم افزار Emulator, Simulator ,… داره) و تازه پروگرمر ائن بسیار ساده و کم خرجه. با این حال فکر نمی کنم نوع میکرو تفاوتی در نقشه مدار و.. بزاره بجز کد و کامپایلر میکرو که سعی می کنم مال PIC یا حتی ۸۰۵۱ رو هم در کنار AVR زمیمه کنم. پس کسایی که با AVR کار نکردن اصلا نگران نباشن.راستی یادم رفت بگم برا این ربات از AVR مدل Atmega32 استفاده خواهم کرد (مفت ۳۵۰۰ و برای آموزش برنامه نویسی اون با وجود کامپایلرهای متنوعی چون Bascom (بیسیک) و CodeVision (سی) من Bascom رو انتخاب می کنم تا تازه کارهای برنامه نویسی هم مشکلی نداشته باشن (بیسیک که دیگه کاری نداره!). فکر نمی کنم چیزی ناگفته مونده باشه! پس از جلسه بعد آموزش ساخت پروگرمر و یکم آموزش برنامه نویسی AVR ٬البته فقط در حد کار خودمون -ربات- رو خواهیم داشت.
جلسه قبل کمی در مورد میکرو و میکروی مناسب کار خودمون صحبت کردیم. این جلسه می خوام به طور کلی تر راجع به قابلیت های میکروی AVR بخصوص مدل Atmega32 صحبت کنم. بزارین بعضی از قابلیت های مهم مربوط به کار خودمون رو بصورت لیست بنویسم:
• کارایی بالا و توان مصرف کم
• سرعت بسیار بالا نسبت به سایر میکروها
• ۳۲K حافظه فلش داخلی قابل برنامه ریزی
• پایداری حافظه فلش: قابلیت ۱۰۰۰۰ بار نوشتن و پاک کردن
• ۲K حافظه داخلی SRAM
• ۲ تایمر-کانتر ۸ بیتی و یک تایمر-کانتر ۱۶ بیتی
• …..
برنامه نویسی
Atmega32:
همونطور که گفته بودم برای برنامه نویسی این میکرو از Basic و کامپایلر معروف Bascom استفاده می کنم (لینک دانلود این کامپایر رو آخر پست گذاشتم). چون من می خوام خیلی گزرا به چند تکنیک وتابع این زبان اون که در برنامه نویسی رباتمون استفاده میشه اشاره کنم اصلا وقت نمیشه درباره یکی یکی ابزارهای محیط این کامپایلر توضیح بدم. اما در آینده با آموزش پروپه های دیگه حتما اونا رو هم پوشش خواهم داد.

همونطور می بینید فقط ۷ تا منو از قرار File, Edit, Program, Options, Tools, Window, Help داره. منوی File, Edit, Window, Help تمام برنامه های ویندوز که با هم مو نمی زنه پس اینا هیچ :). منوی Options هم که از اسمش پیداست برای تنضیمات کامپایلر و معرفی نوع و مدل میکرو و.. هست که البته هنگام پروگرام کردن میکرومون سراغش میایم و توضیحات کافی رو میدم. می مونه منوی Program که درواقع گزینه هایی برای کامپایل کد, Syntax Check و شبیه سازی داره که به مجرد شروع برنامه نویسی باهمینا باید سروکله بزنیم.حتما Bascom رو دانلود کنید و یکم وارسیش کنید چون پس فردا که برگشتم دیگه تفره نمی رم و دیگه آموزش کد نویسی رو خواهیم داشت که اون هم یکی دو جلسه بیشتر طول نمی کشه و بعد میریم سر مباحث الکترونیکی رباتمون. اما باور کنبد لذت برنامه نویسی و سروکله زدن با میکرو اونم AVR چیزی کم از ساخت ربوت نداره
بدنه یک برنامه در محیط
Bascom:
منظور از بدنه حداقل کد یک برنامه هستش بدون هیچ فرمانی) بدنه یک برنامه در محیط Bascom شامل تعیین نوع میکرو مورد استفاده٬ کریستال٬ پایان و گزینه های اختیاری دیگری است که در زیر معرفی میشن.
معرفی میکرو:
برای شروع یک برنامه در محیط Bascom ابتدا بایستی میکروی مورد نظر تعریف گردد. چون توصیه من در استفاده از مدل ATMEGA16|32|128 بود٬ بنابراین فعلا به علت زیق در همه چی فقط به تعریف همین ۳ مدل بسنده می کنم:
$REGFILE = VAR ‘فرم کلی تعریف٫ “وار” یه رشته معرف مدل خاص میکروی مورد نظر هستش
$REGFILE = “M16def.dat” ‘MEGA 16 MCU این برا مدل
$REGFILE = “M32def.dat” ‘MEGA 32 MCU این برا مدل
$REGFILE = “M128def.dat” ‘MEGA 128 MCU این برا مدل
کریستال:
برای مشخص کردن فرکانس کریستال (میکرو ها باید به یه قطعه خارجی بنام کریستال و

صل بشن) استفاده شده برحسب هرتز از دستور CRYSTAL = X$ استفاده می نماییم X فرکانس کریستال استفاده شده بر حسب هرتز است. خوشبختانه AVR دارای یک کریستال ۱MHZ داخلی هستش که واقعا یک نعمته! اما حتی برای استفاده از اون هم باید این دستور رو بکار ببریم. مثال:
$CRYSTAL = 100000 ‘1MHz internal
$CRYSTAL = 140000 ’14MHz external
یاداشت(اختیاری): گاهی نیاز است یاداشتهایی برای اطلاعات بیشتر در برنامه اضافه کنید٬ در Bascom هم مثل بیسیک می تونید با علامت ” ‘ ” یا REM اینکارو انجام بدید. درست مثل یادداشت های اضافی که من در مثالهای قسمتهای قبل استفاده کردم! مثال:
Print “Hello World” ‘این دستور بعدا معرفی میشه
REM این هم یه مدل دیگه از یادداشت اختیاریه
همچنین در پایان هر برنامه باید از کلمه END استفاده کنید که مثل یک حلقه بی پایان عمل می کنه (مثلا در سی باید همیشه یه حلقه درست کنی. یه کار تکراری) و دلیل استفادش چه در این کامپایر و برای این میکرو و چه در سایر کامپایلرها و برای میکروهای دیگه٬ اینه که سیستم برنامه میکرو با کامپیوتر فرق فوکوله و اگه از END یا حلقه بی پایان استفاده نکنیم برنامه همینطور میره پایین و سایر آدرس های حافظه میکرو رو به خیال ادامه برنامه میخونه که این باعث Error میشه دیگه! پس End یادتون نره!خوب دیگه از گزینه های اجباری بدنه تغریبا چیزی نموند و برای اینجلسه هم کافیه! جلسه بعد آموزش نحوه تعریف شرط و حلقه و … در Bascom رو داریم پس حتما مطلب رو دنبال کنید.
پیکربندی پورتها:
همونطور که در شکل مقابل می بینید میکروی AVR (مدل ATMEGA32) داری ۴۰ پایه هستش که ۳۲ تا از پایه های اون می تونه برای چهارتا پورت موجود در اون استفاده میشه. این ۴ پورت مانند شکل به صورت PA, PB, PC, PD نامگزاری شده اند که البته هر کدام از این پورتها دارای ۸ پین (۸X۴=۳۲) هستند. که درواقع هر پورت رو باید به صورت یک بایت در نظر گرفت و هر پین رو به صورت یک بیت (حتما می دونید هر بایت، ۸ بیت هستش!) فرض کرد و هر کدوم از این ۳۲ پایه میکرو مربوط به پین خاصی از یک پورت است. در Bascom نماد پورتها به صورت portx که X يکی از حروف A..D هست بکار ميره و نماد پين های هر پورت هم به صورت portx.y که در اينجا X مثل بالا هستش و y شماره پين از ۰ تا ۷ ميباشه (۰تا۷ ميشه ۸تا). مثال:
PortB = 10 ‘set portb to 10
PortC.0 = 0 ‘Set pin 0 of portC to 0
PortC.4 = 1 ‘Set pin 4 of PortC to 1
نکته دیگه که باید دقت کنید اینه که پورت ها یک بایتی هستند یعنی نهایت عددی که میشه در اونا قرار داد ۲(۱۱۱۱۱۱۱۱) درمبنای باینری یا ۲۵۵ در مبنای دهدهی خودمون هست. وقتی عدد ۲(۱۱۱۱۱۱۱۱) یا ۲۵۶ رو مثلا در پورت سی قرار بدیم تمام پین های این پورت ۱ میشن و اگر باز عدد ۱۷ معادل ۲(۰۰۰۱۰۰۰۱) رو در اون قرار بدیم (PortC=17) انگاه پینهای

۰ و ۴ این پورت یک خواهند شد. فکر کنم فهمیده باشید قضیه از چه قراره 🙂 فقط باید یکم تبدیل باینری به دهدهی و برعکس رو بلد باشید… اما اگر هنوز کار میکروکنترلر رو درک نکردید و اصلا نمیدونید حالا یک شدن هر پین به چه درد می خوره اصلا نگران نباشید چون به موقع توضیح خواهم داد

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

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

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

) و میکروکنترلرها(microcontroller) کنترل می شود.با تسلط در برنامه نویسی این دو می توانید دقیقا همان کاری را که انتظار دارید روبات انجام دهد.
روباتهایی شبیه انسان (human robotic)نیز ساخته شده اند.،آنها قادرند اعمالی شبیه انسان را انجام دهند.حتی بعضی از آنها همانند انسان دارای احساسات نیز هستند.بعضی از آنها شکلهای خیلی ساده ای دارند.آنها دارای چرخ یا بازویی هستند که توسط میکرو کنترلر

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

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

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

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

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

س آهنی می افتند.شما نیز می توانید با استفاده از کاغذهای استوانه ای و تک های چوب وچسب شکلی مانند زیر درست کنید.

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

لگو روبات(lego robot)
برای شروع به ساخت روبات بهتر است .،که با لگو ها ونحوه اسمبل کردن آنها آشنا شوید.لگوها ایده های خوبی در ساخت روبات به شما می دهند.بسیاری از روباتهایی که ساخته شده اند.حشره،حیوان،انسان نیستند.بلکه آنها لگو هستند.شما می توانید بدنه روبات خود را بوسیله لگوها بسازید.و مدارات الکترونیک را در آن جا سازی کنید.بیشتر ماشینهایی که وجود دارند از چهار چرخ تشکیل شده اند.دو چرخ جلویی دارای چرخش زاویه ای هستند.،و دو چرخ عقبی در جای خود ثابت هستند.،وتنها میچرخند،حرکت به سمت راست،جلو و عقب را چرخهای جلویی تعیین می کنند.در برخی از ماشینها هر چهار چرخ دارای این وضعیت هستند.از این موارد در ساخت لگو روباتها شبیه ماشین استفاده می شود.برخی از ماشینهای پیشرفته از راه دور کنترل می شوند(remote control) که این مسئله را براحتی می توان در روباتها بست وتوسع

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

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

آموزش ساخت ربات (موتور پله ای )
موتورهای پله ای (Stepper Motor) که بخش مکانیکی و نیروی محرکه ربوت مارو تشکیل خواهد داد، بنویسم. البته مقالات خیلی زیادی تو نت راجع به نحوه عملکرد استپ موتور (تریپ مغناطیس و…) و یا ساختار درونی اون (سیم پیچ و آهنربا و…) وجود داره اما چیزی که من الان می خوام بگم یه توضیح مختصر به زبان عامیانه ست: استپ موتور هم برگرفته از اسمش یه نوع موتوره مثل موتورهای DC (همون آمرمیچر خودمون) که تولید حرکت دورانی می کنه. با این تفاوت که استپ موتورها دارای حرکت دقیق و حساب شده تری هستند. این موتورها به صورت درجه ای دوران می کنند و با درجه های مختلف در بازار موجود هستند. در واقع واژه پله به معنی چرخش به اندازه درجه تعریف شده موتور هستش. مثلا استپ موتوری با درجه ۱.۸ باید ۲۰۰ پله انجام بده تا ۳۶۰ درجه یا یک دور کامل بچرخه (۱.۸X۲۰۰ = ۳۶۰) و یک استپ با درجه ۱۵ فقط باید ۲۴ پله برای یک دور کامل انجام بده (۲۴X۱۵=۳۶۰ ). این ویژگی فوائد بسیار زیادی داره از جمله امکان کنترل سرعت.
زاويه پله پله در دور
۰٫۷۲ ۵۰۰
۱٫۸ ۲۰۰
۲٫۰ ۱۸۰
۲٫۵ ۱۴۴
۵٫۰ ۷۲
۷٫۵ ۴۸

۱۵ ۲۴

اما موتور DC چطور؟ وقتی بهش ولتاژ میدیم از یه سرعت آروم شروع می کنه و شتاب می گیره و با قطع کردن ولتاژ تازه می خواد شتاب منفی بگیره و معلوم نیست چند ثانیه بعد از قطع ولتاژ از چرخش بایسته. با این تفاسیر فکر می کنید تو هارددیسک یا دیسکت درایوها ویا ویدئو ها از کدوم موتور استفاده می کنند؟ در رباتیک بسته به نوع شرائط از ه

ر دو نوع موتور استفاده میشه که شرایط ما فعلا با ستپ جوره! موتورهای پله ای موجود در بازار معمولا دونوع ۵ یا ۶ سیمه دارند که علت تعدد سیمها و نحوه کنترل و راه اندازی این موتور می مونه برای جلسه بعد. راستی بگم این استپ موتورها قیمت بالایی هم دارن اما من یه جفت کوچیک آزمایشگاهیشو که انگار کارخونه ساخته بودشون برا من، پیدا کردم (فقط به قیمت جفتی ۲ تومن!). اگر شما هم خواستسد در خدمتم باهام تماس بگیرید.مورد استپ های ۵ سیمه و ۶ سیمه صحبت می کردم! در مدل ۵ تایی فقط یک سیم مشترک (COM) وجود داره ولی در مدل ۶ تایی ۲ سیم مشترک وجود داره که باید به ولتاز وصل بشن (سیم یا سیمهای مشترک معمولا قرمز هستند ولی بازم از فروشنده بپرسید) یعنی در هر دو در آخر فقط ۴ تا سیم باقی میمونه که کاربردشون رو خواهم گفت. ۱ تفاوت عمده دارن که اون رو به م

وقعش توضیح میدم.نحوه تست سالم بودن موتور پله ای: برای اینکار در مرحله اول باید مطمئن بشیم هیچکدوم از سیمها به هم اتصال ندارن (ب

هم نچسبیدن :)) حالا با دست شفت رو بچرخونید، می بینید که راحت و روان می چرخه! حالا تمام سیم ها رو به هم اتصال بدید و سعی کنید دوباره شفت رو با دست بچرخونید، اگر یه مقاومت یا سفتی نسبت به حالت قبل احساس کردید بدونید حتما استپتون سالمه! (بدون نیاز به هیچ منبع تغذیه)