تارا فایل

روبات آتش نشان




پروژه
گروه کامپیوتر

عنوان پروژه:
روبات آتش نشان

فهرست
مقدمه 5
فصلاول:روبات ها،تاریخچهوانواعآنها 6
1.1 مقدمه 7
1.2 روبات 7
1.2.1 تعاریفروبات 7
1.2.2 علمروباتیک 8
1.2.3 مزایایروباتها 9
1.2.4 معایبروباتها 9
1.3 تاریخچهروباتها 10
1.4 دستهبندیروباتها 11
1.4.1 دستهبندیاتحادیهروباتهایژاپنی 11
1.4.2 دسته بندیموسسهروباتیکآمریکا 12
1.4.3 دستهبندیاتحادیهفرانسویروباتهایصنعتی 12
1.5 انواعروباتها 13
1.6 طبقهبندیروباتها 16
1.6.1 طبقه بندیروبات هاازنقطهنظرکاربرد 16
1.6.2 طبقه بندیازنقطهنظراستراتژیکنترلدرنسلهایروبات 16
1.6.3 طبقهبندیازنقطهنظرمحرکمفصلها 18
فصلدوم: اجزایروبات ها 20
2.1 اجزایاصلییکروبات 21
2.1.1 بازویمکانیکیماهر 21
2.1.2 سنسورها 22
2.1.3 کنترلرها 23
2.1.4 واحدتبدیلتوان 28
2.1.5 محرک هایمفاصل 30
3.1 روباتآتشنشان 32
3،3 شرحعملکردروبات 34

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

فصل اول: روبات ها،تاریخچه و انواع آنها

1.1 مقدمه
اتوماسیون در بخش های مختلف صنعت وکارهای تولیدی در چند دهه اخیر ظهور پیدا کرده و روز به روز نیز در حال توسعه می باشد. بیش از چند دهه از ظهور کارخانجات کاملا مکانیزه که در آنها تمامی پروسه ها اتوماتیک بوده و نیروی انسانی در آن نقش اجرایی ندارد، نمی گذرد.اما در چند ساله اخیر شاهد به وجود آمدن کارخانجات مکانیزه بودیم که طراحی، ساخت ونحوه کار آنها واقعا حیرت انگیز است. ایده و دانش کنترل اتوماتیک و استفاده از سیستمهای مکانیزه در کارخانجات به جنگ جهانی دوم می رسد. اما تحولات عظیم وچشمگیر آن در سالهای اخیر بوقوع پیوسته است.
روبات یا روبوت وسیله مکانیکی جهت انجام وظایف مختلف است. یک ماشین که می تواند برای عمل به دستورات مختلف برنامه ریزی گردد یا یک سری اعمال ویژه انجام دهد. مخصوصا آن دسته از کارها که فراتر از حد توانایی های طبیعی بشر باشند. این ماشین های مکانیکی برای بهتر به انجام رساندن اعمالی از قبیل احساس کردن، درک نمودن و جابجایی اشیا یا اعمال تکراری شبیه جوشکاری تولید می شوند.
1.2 روبات
روبات یک ماشین هوشمنداست که قادر است در شرایط خاصی که در آن قرار می گیرد، کار تعریف شده ای را انجام دهد وهمچنین قابلیت تصمیم گیری در شرایط مختلف را نیز ممکن است داشته باشد. با این تعریف می توان گفت روباتها برای کارهای مختلفی می توانند تعریف شوند.کلمه روبات توسطKarle Capek نویسنده نمایشنامه R.U.R (روبات های جهانی روسیه) در سال 1921ابداع شد. ریشه این کلمه، کلمه چک اسلواکی (Robotics) به معنی کارگر می باشد.در نمایشنامه وی نمونه ماشین، بعد از انسان بدون دارا بودن نقاط ضعف معمولی او،بیشترین قدرت را داشت و در پایان نمایش این ماشین برای مبارزه علیه سازندگان خود استفاده شد.
1.2.1 تعاریف روبات
همیشه بین صاحب نظران و فعالان روباتیک در دانشگاه ها بحث در مورد تعریف روبات وجود داشته است، گاهی اوقات بر اساس تولید روبات، در شرکتی، تعریفی صنعتی و براساس تولید آن شرکت از روبات ارائه می شود و در مواردی به تکنولوژی روبات توصیف شده است.با این همه در زمان کنونی فناوری ساخت روبات در حدی است که با تکیه بر تکنولوژی جدید و پیشرفته کنونی وبا کمی آینده نگری می توان تعریف عینی و دست یافتنی از روبات کرد.

در اینجاچند تعریف معتبر ذکر شده است:
یک روبات هوشمند، ماشین خودکار چند منظوره ای است که می تواند طیف وسیعی از وظایف متفاوت را، تحت شرایطی که حتی ممکن است به آن شناخت کافی نداشته باشد، همانند انسان انجام دهد.
دو تعریف دیگر در رابطه با کلمه روبات از قرار زیر می باشند:
1-تعریفی که توسط Concise Oxford Dic. صورت گرفته است، ماشینی مکانیکی با ظاهر یک انسان که با هوش ومطیع بوده ولی فاقد شخصیت است. این تعریف چندان دقیق نیست،زیرا تمام روباتهای موجود دارای ظاهری انسانی نبوده وتمایل به چنین امری نیز وجود ندارد.
2-تعریفی که توسط موسسه روبات امریکا صورت گرفته است؛ وسیله ای با دقت عمل زیاد که قابل برنامه ریزی مجدد بوده وتوانایی انجام چند کار را دارد وبرای حمل مواد،قطعات،ابزارها یا سیستم های تخصصی طراحی شده و دارای حرکات مختلف برنامه ریزی شده است و هدف از ساخت آن انجام وظایف گوناگون می باشد.

1.2.2 علم روباتیک
دانشمند مسلمان کردتبار؛ابوالعزبن اسماعیل بن الرزازالجزری در سال 515 هجری شمسی در شهر الجزری واقع در شمال عراق امروزی پا به این جهان گذاشت.او در شهر دیاربکر واقع در ترکیه امروزی مشغول به تحصیل و فراگیری علم شد وتا آخر عمر خود در این شهرزندگی کرد.وی در سال 585 هجری شمسی درگذشت.لازم به ذکر است در آن دوره الجزری و دیاربکر جزئی از سرزمین ایران بود. الجزری نخستین روبات قابل برنامه ریزی انسان نما را در اواخر عمرش ساخت. به این علت او به عنوان پدر علم مهندسی روباتیک جهان شناخته می شود. اختراع او،یک قایق آبی بود که در آن چهار نوازنده ی مصنوعی موسیقی برای مراسم و برنامه های چشن سلطنتی، آهنگ می نواختند و حاضران را سرگم می کردند،سازها به صورت هیدرولیک و با کمک آب برنامه ریزی می شدند.او در سال 585 هجری شمسی کتابی با نام"دانستنی هایی در رابطه با مکانیزم های هوشمند" نوشت.این روبات انسان نما وچند مکانیزم موتوری انتقال آب و چند ساعت از زیباترین طرح های او در این کتاب می باشد.

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

1.2.3 مزایای روباتها
1. روباتیک و اتوماسیون در بسیاری از موارد می توانند ایمنی،میزبان تولید، بهره و کیفیت محصولات را افزایش دهد.
2. روباتها می توانند در موقعیت های خطرناک کار کنند و با این کار هزاران انسان را نجات دهند.
3. روباتها به راحتی به محیط اطراف خود توجه ندارند و نیازهای انسانی برای آنها مفهومی ندارد. روباتها هیچگاه خسته نمی شوند.
4. دقت روباتها خیلی بیشتر از انسانهاست آنها در حد میلی یا میکرو اینچ دقت دارند.
5. روباتها می توانند در یک لحظه چند کار را باهم انجام دهند ولی انسانها در یک لحظه فقط یک کارانجام می دهند.

1.2.4 معایبروباتها
1. روباتها در موقعیت های اضطراری توان پاسخگویی مناسب ندارند که این مطلب بسیار خطرناک باشد.
2. روبات ها هزینه بر می باشند.
3. قابلیت های محدود دارند یعنی فقط کاری که برای آن ساخته شده اند را انجام می دهند.

1.3 تاریخچه روباتها
سال 1640 م:دکارت ماشین خودکاری به صورت یک خانم ساخت و آن را Ma Fille Francineنامید. این ماشین که دکارت را در یک سفر دریایی همراهی می کرد،توسط کاپیتان کشتی به آب پرتاب شد چرا که وی تصور می کرد این موجود شیطانی است.سال1738 میلادی ژاک دواکانسن یک اردک مکانیکی ساخت که از بیش از 4000 قطعه تشکیل شده بود.این اردک می توانست از خود صدا تولید کند، شنا کند،آب بنوشد، دانه بخورد و آن را هضم کند وسپس دفع کند. امروزه ازمحل نگهداری این اردک در هیچ یک از موزه های دنیا اطلاعی در دست نیست.در قرن 18م:یک مدل ساده از روبات که KarakuriNingyo نامیده می شددر ژاپن به وجود آمد.این عروسک در مراسم چای ژاپنی مورد استفاده قرار می گرفت و از چوب ساخته شد بود.هنگامی که یک فنجان در سینی قرار می گرفت، یک استپر توسط فنری که به بازوی عروسک متصل بود، آزاد شده و با برداشتن فنجان از سینی مجددا به جای خود برمی گشت.سال 1805 میلادی عروسک دیگری توسط میلاردت(Maillardet) ساخته شد که می توانست به زبان انگلیسی و فرانسوی بنویسد و مناظری را نقاشی کند.سال 1923 میلادی کارل چاپک(Karel Capek) برای اولین بار از کلمه روبات (Robot) در نمایشنامه خود به عنوان آدم مصنوعی استفاده کرد.موضوع نمایشنامه چاپک، کنترل انسانها توسط روباتها بود. ولی او هرگونه امکان جایگزینی انسانها با روبات ها یا اینکه از احساس برخوردار شوند یا عاشق شوند یا تنفر پیدا کنند را رد می کرد.سال 1940 میلادی شرکت وستینگهاوس(Westinghouse Co.) سگی به نام اسپارکو(Sparko) ساخت که هم از قطعات مکانیکیو هم الکتریکی در ساخت آن استفاده شده بود. این اولین باری بود که از قطعات الکتریکی در کنار مکانیکی استفاده می شد.دهه 1950 میلادی تکنولوژی کامپیوتر پیشرفت کرد و صنعت کنترل متحول شد. سوالاتی مطرح شدند مثل اینکه آیا کامپیوتر یک روبات غیر متحرک است؟ سال 1954 میلادی عصر روبات ها با ارائه اولین روبات آدم نما توسط جرج دوول(George Devol) شروع شد.سال 1956 میلادی پس از توسعه فعالیت های تکنولوژی پس از جنگ جهانی دوم، یک ملاقات بین جورج دوول مخترع کار آفرین صاحب نام، انگلبرگر(Joseph F.Engelberger) که یک مهندس با سابقه بود صورت گرفت. ایشان سپس به موفقیتهای اساسی در تولید روباتها دست یافتندو با تاسیس شرکت های تجاری، به تولید روبات پرداختند. انگلبرگر شرکت Unimate برگرفته از کلمه Universal Automationرا برای تولید روبات پایه گداری کرد. نخستین روباتهای این شرکت در کارخانه جنرال موتور( Motors) برای انجام کارهای دشوار در خودروسازی به کار گرفته شد.انگلبرگر راپدر روباتیکنامیده اند.دهه 1960 میلادیروباتهای صنعتی زیادی ساخته شدند.انجمن صنایع روباتیک این تعریف را برای روبات های صنعتی ارائه می دهد: روبات صنعتی یک وسیله چند کاره و با قابلیت برنامه ریزی چند باره است که برای جابجایی قطعات،مواد،ابزارها یا وسایل خاص به وسیله حرکات

برنامه ریزی شده، برای انجام کارهای متنوع استفاده می شود.سال 1967 میلادی رالف موزر(Ralph Moser)از شرکت جنرال الکتریک (General Electric) نخستین روبات چهار پا را اخنراع کرد.سال 1983 میلادی شرکت Odeticsیک روبات شش پا ارائه کرد که می توانست از موانع عبور کند و بارهای سنگینی نیز با خود حمل کند.سال 1985 میلادی نخستین روباتی که به تنهایی توانایی راه رفتن داشت در دانشگاه ایالتی اهایو ساخته شد.سال 1996 میلادی شرکت ژاپنی هندا(Honda) نخستین روبات انسان نما را ارائه کرد که با دو دست و پا طوری طراحی شده بودکه می توانست راه برود، از پاه ها بالا برود، روی صندلی بنشیند، و بلند شود و بار به وزن 5 کیلو گرم را با خود حمل کند.روباتها روز به روز هوشمند تر می شوند تا هر چه بیشتر در کارهای سخت و پیچیده تر به یار ی انسان ها بیایند.

1.4 دسته بندی روباتها
روباتها در سطوح مختلف دو خاصیت مشخص را دارا می باشند:
1. تنوع در عملکرد
2. قابلیت تطبیق خودکار با محیط
به منظور دسته بندی روباتها لازم است که قادر به تعریف و تشخیص انواع مختلف آنها باشیم.
سه دسته بندی مختلف در مورد روباتها وجود دارد:
* دسته بندی اتحادیه روباتهای ژاپنی
* دسته بندی موسسه روباتیک آمریکا
* دسته بندی اتحادیه فرانسوی روباتهای صنعتی

1.4.1 دسته بندی اتحادیه روبات های ژاپنی
انجمن روباتهای صنعتی ژاپن، روباتها را به شش گروه زیر تقسیم می کند:
1. یک دست مکانیکی که توسط اگراتور کار می کند: وسیله ای است که دارای درجات متعدد بوده و توسط عامل انسانی کار می کند.

2. روبات با ترکیبات ثابت: این دسته از این روباتها با ترکیبات ثابت طراحی می شوند.در این حالت یک دست مکانیکی کارهای مکانیکی را با قدمهای متوالی تعریف شده انجام می دهد و به سادگی ترتیب کارها قابل تغییر نیست.
3. روبات با ترکیبات متغیر: یک دست مکانیکی که کارهایتکراری را با قدم های متوالی و با ترتیب تعریف شده را ، انجام می دهد و این ترتیب به سادگی قابل تغییر است.
4. روبات قابل آموزش: اپراتور در ابتدای امر به صورت دستی با هدایت یا کنترل روبات کاری را که باید انجام شود، انجام می دهد و روبات مراحل انجام وظیفه را در حافظه ضبط می کند. و هر وقت که لازم باشد می تواند اطلاعات ضبط شده را از روبات درخواست نمود و روبات وظیفه درخواست شده را بصورت خودکار انجام می دهد.
5. روبات با کنترل عددی:اپراتور وظیفه روبات را توسط یک برنامه کامپیوتری به او تفهیم می نماید و نیازی به هدایت دستی روبات نیست. در واقع روبات با کنترل عددی، روباتی است که با برنامه کامپیوتری کار می کند.
6. روبات با هوش: این روبات درک از محیط و استعداد انجام کار با توجه به تغییر در شرایط محدوده عمل کار رادارد.
1.4.2 دسته بندی موسسه روباتیک آمریکا
انستیتوی روباتیک آمریکا تنها موارد 3 و4 و5 و6 را به عنوان روبات پذیرفته است.

1.4.3 دسته بندی اتحادیه فرانسوی روباتهای صنعتی
موسسه روباتهای صنعتی فرانسوی،روباتها را به شکل زیر تقسیم کرده است:
نوع A :دستگاهی که توسط دست یا از راه دور کنترل می شود(مورد 1 طبقه بندی قبل)
نوع B :وسیله حمل کننده خودکار با یک سیکل محاسبه شده(موارد 2 و 3 طبقه بندی قبل)
نوع C : دستگاهی قابل برنامه ریزی و با توانایی خود کنترل (موارد 4 و5 طبقه بندی قبل)
نوع D : دستگاهی که قادر است اطلاعات معینی از محیط را بدست بیاورد و به عنوان روبات با هوش معروف است(مورد6 طبقه بند ی قبل)

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

شکل 1: کاوشگر مریخ

1،5،2 روبات های ساکن
روبات ها تنها برای اکتشاف کرات یا تقلید از موجودات زنده ساخته نمی شوند. بیشتر آنها وظایفی تکراری را بدون حتی یک اینچ حرکت انجام می دهند و در صنعت بکار میروند. خصوصا کارهای تکراری و کسل کننده

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

شکل 2 : ربات ساکن
1،5،3 روبات های خودکار
این روبات ها خود پشتیبان و به عبارت دیگر کامل هستند و به نوعی متکی بر مغز خودشان هستند. این روبات ها برنامه ای را اجرا میکنند که به آنها فرصت انتخاب عملی برای انجام را بسته به محیطشان می دهد. این روبات ها گاهی رفتار جدیدی هم می آموزند. آنها با یک کار کوتاه تکراری و ساده شروع کرده و این روتین را در اجرای وظایفشان به طور موفق تری بکار می برند. زمانی که رفتارشان شکل گرفت، موفق ترین روتینشان تکرار می شود. می توانند حرکت و دوری از موانع سر راه را بیاموزند. مثلاً به روبات شش پایی فکر کنید که ابتدا تصادفی حرکت می کند اما بعد از مدتی برنامه اش را تصحیح کرده و با الگویی که او را قادر به تردد در بهترین مسیر می کند حرکت میکند.

شکل 3 : ربات خودکار

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

شکل 4 : روبات کنترلی ناسا برای کاوش آتشفشان

1،5،6 روبات های مجازی
این روبات ها در زندگی واقعی نیستند و تنها برنامه ها و بلوک های سازنده نرم افزارها در کامپیوتر هستند. این روبات ها می توانند روباتی واقعی را شبیه سازی یا کاری تکراری را انجام دهند. نوعی خاص از اینها روباتیست که اینترنت را جستجو می کند. اینترنت، روبات های بی شماری برای گشتن سایت به سایت دارد. این سایت گردان ها اطلاعات را از سایت ها گرفته و به موتور هی جستجو می دهند.
نوع مشهور دیگری چتر بات است که مکالمات کاربران نت را شببیه سازی می کند. یکی از اولین چتربات ها الیزا است. اکنون تعداد زیادی از آنها از جمله الویس موجود است.

1.6 طبقه بندی روبات ها
1.6.1 طبقه بندی روبات ها ازنقطه نظر کاربرد
* روبات های صنعتی
* روبات های شخصی و علمی
* روبات های نظامی
1.6.2 طبقه بندی از نقطه نظر استراتژی کنترل در نسلهای روبات
1.6.2.1نسل اول
در اولین نسل،کنترل فقط در یک سری از نقاط توقف انجام می گیرد.اینگونه کنترل به کنترل حلقه باز معروف است.این حرکات محدود به حرکات کوچک(حرکت دادن یک قطعه از یک نقطه به نقطه دیگر) می باشد.
1.6.2.2نسل دوم
ساختار کنترلی این نسل همان ساختار حلقه باز می باشد ولی به جای یک سری کلید کنترلی،حرکات کنترلی توسط یک سری عدد که در حافظه سیستم ضبط شده اند، انجام می گیرد. بعضی روبات های امروزی جزء همین نسل می باشند که به نسل اول کلی قابلیت و توان کامپیوتری اضافه کرده اند وتنها کار هوشمند آنها یادگیری یک سری از عملیات برای بازوی مکانیکی می باشد که توسط اپراتور انسان و به کمک جعبه کنترل انجام می گیرد.

شکل5:کنترلر نسل اول و دوم روباتها

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

1.6.2.3 نسل سوم
از اختراع نسل سوم روباتها 15 الی 20 سال می گذرد. سیستم کنترلر این نسل به کنترل حلقه بسته معروف می باشد. در این نسل،کنترلر روبات یا یک کامپیوتر می باشد و یا یک پروسسور ارزان قیمت می باشد که به آن اضافه شده است. بدین ترتیب روباتهای نسل دوم دارای قابلیت های زیادتر شده و روبات های نسل سومی به وجود آمد.
با اضافه شدن قسمت قدرت محاسبات کامپیوتری، محاسبات لازم برای کنترل حرکت هر درجه آزادی جهت انجام حرکت در طول مسیر تعیین شده، به صورت بلا درنگ انجام می گیرد.وضعیت محیط از اطراف از طریق سنسورهای نیرو وگشتاور اخذ شده و در کنترل به کار گرفته می شود.
ازجمله کاربردهای این نسل در جوشکاری نقطه ای، رنگ پاشی، مونتاژ می باشد.

شکل6: کنترلر نسل سوم روباتها

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

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

شکل 7 : کنترلر نسل چهارم روباتها

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

* نیروی الکتریکی
* نیروی هیدرولیکی
* نیروی پنوماتیکی

سیستم های الکتریکی:1،7
سیستم های انرژی الکتریکی یکی از انواع سیستم های تامین نیروی محرکه روبات می باشد.یکی از مزیت هایی این سیستم ها ایجاد نیرو و افزایش آن به نرمی و با سرعت کم و کاهش آن به نرمی و بدون هیچگونه شوک می باشد. سیستم های الکتریکی برای جوشکاری با قوس الکتریکی، جوشکاری نقطه ای، حمل مواد و سوراخ کاری در خط تولید مورد استفاده قرار می گیرند.موتورهای الکتریکی می توانند با جریان مستقیم و جریان متناوب مورد استفاده قرار گیرند.البته هر کدام، محدودیتها و استفاده های خاص خود را دارا می باشند.قصد نداریم که کارکرد تک تک آنها را شرح دهیم و توضیح مختصری درباره ی موتورهای که بیشتر در روباتها استفاده می شوند. خواهیم داشت.
1. موتورهای DC
موتورهای DC به شکل سری، موازی و ترکیبی وجود دارند.کنترل کردن موتور های DC می تواند با تنظیم ولتاژ یا جریان و با هردو صورت گیرد. جهت حرکت آنها به راحتی با معکوس کردن قطبها و جهت جریان اعمالی، معکوس می شود.
مقاومت های متغیر نیز می توانند برای کنترل سرعت موتورهای DC مورد استفاده قرار گیرند. مقاومت ها به صورت سری با سیم پیچها بسته می شود و با تنظیم آن ولتاژ مورد نظر موتور کاهش یا افزایش می بابد.

2. موتورهای AC
موتور های AC برای راه اندازی کمپرسورهای هوا یا پمپ های هیدرولیکی و دیگر تجهیزات صنعتی مورد استفاده قرار می گیرند.

فصل دوم: اجزای روبات ها

2.1 اجزای اصلی یک روبات
مهندسی روبات، مهندسی های نرم افزار، سخت افزار، برق و مکانیک را در خدمت خود گرفته است. بعضی مواقع این علوم به حد کافی پیچیده می باشند.در شکل زیر مشاهده می شود که هر روبات دارای 5 مولفه به شرح ذیل می باشد:[2]

شکل8 : :مولفه های یک روبات
2.1.1 بازوی مکانیکی ماهر
بازوی مکانیکی شامل چندین واصل است که با مفصلها به هم وصل می شوند. این واصلها در جهات مختلف در فضای کاری قادر به حرکت می باشند. حرکت یک مفصل بخصوص باعث حرکت یک یا چند واصل می شود.دو نوع مفصل اصلی به صورت گسترده در صنعت روباتها بکار گرفته می شود.مفصل دورانی که نمایش دهنده حرکت چرخشی حول یک محور است و مفصل انتقالی یا لغزشی که نمایش دهنده حرکت خطی در طول یک محور است.
Type Description Notation
Revolute R Rotary motion about an axis

2.1.2 سنسورها
سنسور، المان حس کننده ای است که کمیتهای فیزیکی مانند فشار،حرارت، رطوبت، دما و غیره… را به کمیت های پیوسته (آنالوگ) یا غیر پیوسته ( دیجتال) تبدیل می کند. این سنسورها در انواع دستگاههای اندازه گیری، سیستمهای کنترل آنالوگ و دیجیتال مانند PLC مورد استفاده قرار می گیرد.سنسورها اطلاعات مختلف از وضعیت اجزای متحرک سیستم را به واحد کنترل ارسال نموده و باعث تغییر وضعیت عملکرد دستگاهها می شوند.
2.1.2.1 سنسورهای بدون تماس
سنسورهای بدون تماس سنسورهایی می باشند که با نزدیکتر شدن یک قطعه وجود آنرا حس کرده و فعال می شوند. این عمل به نحوی که در شکل زیر نمایش داده شده است می تواند باعث جذب یک رله،کنتاکتور ویا ارسال سیگنال الکتریکی به طبقه ورودی یک سیستم گردد.از نمونه می توان بهسنسورهای نوری ،دمایی، بویایی،مجاورتی ومادون قرمزCNY70 ویا فتوسل اشاره نمود.[3]
کاربرد انواع سنسورها در مسائل گوناگون
* شمارش تولید: سنسورهای القائی و نوری
* کنترل حرکت پارچه و … : سنسورهای نوری و خازنی
* کنترل سطح مخازن: سنسور نوری و خازنی و خازنی کنترل سطح
* تشخیص پارگی ورق: سنسور نوری
* کنترل انحراف پارچه: سنسور نوری و خازنی
* کنترل تردد: سنسور نوری
* اندازه گیری سرعت: سنسور القائی و خازنی
* اندازه گیری فاصله قطعه: سنسور القائی آنالوگ

مزایای سنسورهای بدون تماس
1. سرعت سوئیچینگ زیاد:سنسورها در مقایسه با کلیدهای مکانیکی از سرعت سوئیچینگ بالایی برخوردارند،بطوریکه برخی از آنها (سنسورهای القائی سرعت) با سرعت سوئیچینگ تا 25kHz کار می کند.

2. طول عمر زیاد :بدلیل نداشتن کنتاکت مکانیکی و عدم نفوذ آب، روغن، وغبار و… دارای عمر طولانی می باشند .
3. عدم نیاز به نیرو و فشار : باتوجه به عملکرد سنسور هنگام نزدیک شدن قطعه، به نیرو و فشار نیازی نیست.
4. قابل استفاده در محیط های مختلف با شرایط سخت کاری: سنسورها در محیط های با فشار زیاد، دمای بالا، اسیدی، روغنی، آب و … قابل استفاده می باشند.
5. عدم ایجاد نویز در هنگام سوئیچینگ :به دلیل استفاده از نیمه هادی ها در طبقه خروجی، نویزهای مزاحم ایجاد نمی شوند.

2.1.2.2 سنسورهای القائی
سنسور های القائی نوعی سنسورهای بدون تماس هستند که تنها در مقابل فلزات عکس العملنشان می دهند و می توانند فرمان مستقیم به رله ها ، شیرهای برقی، سیستم های اندازه گیری و مدارات کنترل الکتریکی مانند(PLC) ارسال نمایند.[4]

شکل9:نحوه عملکرد سنسورهای بدون تماس

2.1.3 کنترلرها
کنترلرهای روباتها کلا به 5دسته تقسیم می شوند:
> کنترل با قدم ساده(Simple Step Sequencer)

> کنترلر با قدم های الکترونیکی (Electronic Sequencer)
> میکرو کامپیوترها (Micro Computer)
> مینی کامپیوتر(Mini Computer)
> سیستم منطقی پنوماتیکی(Pneumatic Logic System)
سه کنترلر اول در روباتها کم هزینه و پر کاربرد می باشند. بیشتر کنترلر های امروزی بر اساس میکرو کامپیوتر های معمولی می باشند.از نمونه کنترلر ها با قدم های الکترونیکی به میکرو کنترلر ها اشاره نمود که امروزه از پر کارد برد ترین ای سی ها برای روبات ها می باشند.

2،1،3،1 میکرو کنترلرها:
آی سی هایی که قابل برنامه ریزی می باشند و عملکرد آنها از قبل تعیین شده میکروکنترلر گویند. میکروکنترلرها دارای ورودی – خروجی و قدرت پرداژش می باشند. این آی سی ها حکم یک کامپیوتر در ابعاد کوچک و قدرت کمتر را دارند. بیشتر این آی سی ها برای کنترل و تصمیم گیری استفاده می شود چون طبق الگوریتم برنامه آی سی عمل می کند،این آی سی ها برای کنترل روبات ها و استفاده در کارخانه صنعتی کاربرد دارد.
بخش های مختلف میکروکنترلر
1. CPU واحد پردازش
2. ALU واحد محاسبات
3. I/O ورودی ها و خروجی ها
4. RAM حافظه اصلی میکرو
5. ROM حافظه ای که برنامه روی آن ذخیره می شود.
6. TIMER برای کنترل زمان
و…

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

خانواده های میکروکنترلر:
خانواده :AVR, PIC و 8051
مقایسه خانواده مختلف میکروکنترلرها:[5]
1.خانواده 8051: این خانواده از میکروکنترلرهای اولیه است. معروف ترین کامپایلر برای این نوع میکرو Keil& Franklinمی باشد.این نوع میکروکنترلر در مقایسه با میکروکنترلرهای نوعPICوAVR از امکانات کمتری برخوردار می باشند. از معروف ترین این آی سی ها از این خانواده S 5189,C 5189 می باشند.
2.خانواده AVR: این خانواده از میکروکنترلرها تمامی امکانات 8051 را دارا می باشند و امکاناتی چون مبدل آنالوگ به دیجیتال و نوسان ساز داخلی و قدرت و سرعت بیشتر، حافظه EEPROM از جمله مزایای این خانواده می باشند.مهمترین آی سی های این خانواده سری های ATINY، AT90s و ATMEGAمی باشند.
3.خانواده PIC: این خانواده از نظر امکانات مانند AVR می باشد و در کل صنعتی می باشد.
چون ما در پروژه خود از آی سی ATMEGA 16 استفاده کرده ایم به شرح مختصری به آن می پردازیم:
مشخصات عمومی
* استفاده از معماری RISC

* کارآیی بالا و توان مصرفی پایین
* 130 دستور العمل
* کامپایلر به زبان BASIC =(BASCOM) و C=(CODE VISION)

شکل11 : میکروکنترلر ATMEGA 16

این میکرو کنترلر دارای مشخصات زیر می باشد
* 16 کیلو بایت حافظه FLASH
* 512 بایت EPROM
* یک کیلو بایت حافظه SRAM داخلی
* فرکانس کاری(0-16) مگا هرتز
* ولتاژ تغذیه(5/5-5/4) ولت
* چهار درگاه ورودی و خروجی 8 بیتی
* قابلیت پشتیبانی JATAG Inter face
* دو عدد Timer Counter 8 بیتی
* یک عدد Timer Counter 16 بیتی
* چهار کانل PWM
* هشت کانال ورودی آنالوگ و مبدل A/D 10 بیتی
* اینترفیس سریال (USERT) قابل برنامه ریزی
* مقایسه کننده آنالوگ
* سه اینتراپت سخت افزاری
* پشتیبانی 12c BUS

TWO- WIRE SERIAL INTERFACE
1- WIRE SERIAL INTERFACE
Master/Slave Serial Peripheral Interface

شکل12 : پایه های میکرو کنترلر ATMEGA 16

پایه های میکروکنترلر
VCC:تغدیه مثبت
GND:زمین
RESET:پایه مربوط به ریست خارجی که از نوع فعال به صفر است.
PORT D, PORT C, PORT B, PORT A :در حالت عادی به عنوان I/O قابل استفاده می باشد، برای استفاده از امکانات و مشخصات دیگر این میکرو، باید با استفاده از JUMPER هایی که در بخشهای مختلف مدار قرار گرفته شده، از این ویژگی ها استفاده کرد.
AVCC:پایه مربوط به تغذیه مبدل A/D
XTAL1:ورودی برای تقویت کننده معکوس گر اسیلاتور وکلاک کاری سیستم
XTAL2: خروجی معکوس شده از تقویت کننده اسیلاتور
AREF:ولتاژ مرجع برای مبدل آنالوگ به دیجیتال

2.1.4 واحد تبدیل توان
این واحد سیگنال های کنترلر را گرفته و به یک سیگنال در سطح توان محرک ها و موتورها، جهت حرکت تبدیل می کند. این واحد شامل تقویت کننده های توان الکتریکی برای روباتهای الکتریکی و شیرهای کنترلی و راه انداز های هیدرولیکی برای روباتهای هیدرولیکی می باشد.[6]
دسته بندی کلی موتورها
* موتور DC
* موتور AC
* موتور پله ای
* موتور خطی

2.1.4.1 موتور های DC
متداول ترین موتور در روبات ها، موتور DC است که دارای انواع مختلفی از نظر توان، انداز ، شکل و سرعت می باشد.
جهت استفاده: تعویض جهت چرخش موتور DC با معکوس کردن جهت جریان امکان پذیر است.
سرعت : سرعت موتور به جریان و بار موتور بستگی دارد.
سرعت کمتر = توان بیشتر
سرعت بیشتر = جریان یا ولتاژ بیشتر

شکل 13 :موتورهای توان DC

2.1.4.2موتورهای AC
* موتورهای AC تک فاز
* موتورهای AC سه فاز
این موتورها با جریان متناوب برق کار می کنند لذا به آنها موتور AC گفته می شود. یخچال، جارو برقی، آبمیوه گیری موتور AC دارند. برای کنترل میزان چرخش موتور از وسیله ای به نام شفت انکودر استفاده می شود.
2.1.4.3 موتور های پله ای
کاربرد اصلی این موتورها در کنترل موقعیت است. این موتورها ساختار کنترلی ساده ای دارند. لذا در ساخت روبات کاربرد زیادی دارند.مطابق با تعداد پالسهایی که به یکی از پایه های راه انداز موتور ارسال می شود موتور به چب یا راست می چرخد.این موتور یکی از انواع موتورهای الکتریکی است که حرکت آن کاملا دقیق و از پیش تعریف شده می باشد و با ارسال بیتهای 0و1 به سیم پیچ های آن می توان آنرا حرکت داد.
2.1.4.4 موتورهای خطی
یک موتور خطی اساساً یک موتور الکتریکی است که از حالت دوار درآمده تا بجای اینکه یک گشتاور (چرخش) گردشی تولید کند، یک نیروی خطی توسط ایجاد یک میدان الکترومغناطیسی سیار در طولش، بوجود آورد. موتورهای خطی اغلب موتورهای القایی یا پله ای هستند. می توانید یک موتور خطی را در یک قطار سریع السیر مشاهده کنید که در آن قطار روی زمین پرواز می کند. نوع دیگری از موتورهای الکتریکی موتور پله ای است، که در آن یک روتور درونی، شامل آهنرباهای دائمی توسط یک دسته از آهنرباهای خارجی که به صورت الکترونیکی روشن و خاموش می شوند، کنترل می شود. یک موتور پله ای ترکیبی از یک موتور الکتریکیDCو یک سلونوئید است. موتورهای پله ای ساده توسط بخشی از یک سیستم دنده ای در حالت های موقعیتی معینی قرار می گیرند، اما موتورهای پله ای نسبتاً کنترل شده، می توانند بسیار آرام بچرخند. موتورهای پله ای کنترل شده با کامپیوتر یکی از فرم های سیستم های تنظیم موقعیت است، بویژه وقتی که بخشی از یک سیستم دیجیتال دارای کنترل فرمان بار باشند.

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

اسکلت ساختاری، سیستم تحریک کننده مفصلها، سیستم سنسوری،کنترلر، سیستم تغییر سیگنال(تغییر سییگنال آنالوگ به دیجیتال وبالعکس،تقویت سیگنال، فیلتر کردن سیگنال و..) می باشد.[7]

شکل 14 : سلسله مراتب زیر سیستم های یک روبات متحرک نمونه

فصل سوم: مراحل ساخت روبات آتش نشان

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

شکل15: نمونه ای از روبات مسیریاب

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

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

3،2قطعات مورد نیاز:
* 2 عدد میکروکنترلر AVR (ATMEGA 16)
* 4 عدد خازن 7/4 میکرو فاراد
* 1 عدد آی سی MAX232
* 1عدد مادگی پورت RS232
* 2 عدد ماژول فرستنده گیرنده WIRELESS NRF24L01
* 2 عدد رگولاتور 7508
* 1 عدد راه انداز L298
* 1 عدد سنسور تشخیص دماLM35
* 1 عدد رله
* 3 عدد رگولاتور LF33
* پمپ آب
* 1 عدد منبع تغذیه 12 ولت
* سنسور دود MQ2

شکل16: تصاویری از قطعات به کار رفته در ربات
3،3 شرح عملکرد روبات

روباتی که در اینجا تصمیم به ساخت و توضیح آن می پردازیم روباتی است نیمه هوشمند با کنترل از راه دور می باشد این ربات با بالا رفتن دمای محیط پیامی به کامپیوتر ارسال می کند و سپس با کنترل توسط کامپیوتر به سمت آتش حرکت کرده و آن را خاموش می کند از این ربات می توان در محل های اتش سوزی برای تشخیص دما و وقوع آتش سوزی با خبر شد که در ان محل نمی توان از انسان یا فرد آتش نشان استفاده نمود .میکروکنترلر های مورد استفاده در روباتATMEGA می باشد. کد وکامپایل آن توسط نرم افزار CodeVision ایجاد و پیاده سازی شده است.
روبات شامل دو عدد مدار می باشد که یکی از طریق پورت کام به کامپیوتر متصل شده که اطلاعات ارسالی توسط ربات را توسط ماژول فرستنده/گیرنده خود دریافت کرده و در یک برنامه ترمینال نمایش میدهد هم چنین ربات نیز از طریق برنامه ترمینال قابل کنترل می باشد.مدار دوم که بر روی ربات سوار می شود به وسیله یک سنسور دما وقوع آتش را مطلع شده وبا ارسال پیغامی از طریق ماژول فرستنده/گیرنده کاربر را از وقوع آتش مطلع می کند و پس از دریافت فرمان حرکت از مدار اول به سمت آتش حرکت می کند و از طریق پمپ آب قرار گرفته بر روی ربات آتش را خاموش می کند.

3،4 مراحل ساخت روبات
همانگونه که قبلا شرح داده شد برای ساخت روبات باید در سه شاخه مکانیک و کامپیوتر و الکترونیک آشنایی داشت.

مرحله اول:پس از نصب شاسی و بدنه روبات به طراحی مدارات آن می پردازیم

مرحله دوم: با استفاده از برنامه codevisionاقدام به برنامه نویسی ATMEGA 16 برای مدار فرستنده می نماییم که در زیر آمده است.

#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <nRF24L01+.h>
// Alphanumeric LCD functions
#include <alcd.h>
#define ADC_VREF_TYPE 0x40
char c[10];
// Declare your global variables here
char data1;
int x;
// Read the AD conversion result
unsignedintread_adc(unsigned char adc_input(
{
ADMUX=adc_input | (ADC_VREF_TYPE &0xff )

// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
{
void main(void(
}
// Declare your local variables here
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|CCompiler|Libraries|Alphanumeric LCD menu:
// RS – PORTA Bit 0
// RD – PORTA Bit 1
// EN – PORTA Bit 2
// D4 – PORTA Bit 4
// D5 – PORTA Bit 5
// D6 – PORTA Bit 6
// D7 – PORTA Bit 7
// Characters/line: 16
lcd_init(16(;
lcd_clear ();
lcd_gotoxy(0,0);

lcd_puts("test");

delay_ms(2000);
nRF_Config(0);
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA3;
SFIOR&=0x1F;
lcd_init(16);
while (1)
{
// Place your code here
x=read_adc(0(;
if(x>10)
{
x/=2;
itoa(x,c);
lcd_puts(c(;

data1=x;
data1++;
Send_Data(1 , &data1);
delay_ms(1000);}
}
}

شکل 17 : تصویری از محیط برنامه برنامه نویسی

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

#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>

#include <delay.h>
#include <nRF24L01+.h>
// Alphanumeric LCD functions
#include <alcd.h>
#define ADC_VREF_TYPE 0x40
char c[10];
// Declare your global variables here
char data1;
int x;
// Read the AD conversion result
unsignedintread_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
// Declare your local variables here
// Alphanumeric LCD initialization

// Connections are specified in the
// Project|Configure|CCompiler|Libraries|Alphanumeric LCD menu:
// RS – PORTA Bit 0
// RD – PORTA Bit 1
// EN – PORTA Bit 2
// D4 – PORTA Bit 4
// D5 – PORTA Bit 5
// D6 – PORTA Bit 6
// D7 – PORTA Bit 7
// Characters/line: 16
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("test(s)");
delay_ms(2000);
nRF_Config(0);
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0xA3;
SFIOR&=0x1F;
lcd_init(16);
while (1)
{
// Place your code here
x=read_adc(0);
if(x>10)
{
x/=2;
itoa(x,c);
lcd_puts(c);
data1=x;
data1++;
Send_Data(1 , &data1);
delay_ms(1000); }
}
}
* مرحله چهارم: پس از کامپایل کردن و رفع خطا های احتمالی شروع به پروگرام کردن آی سی ATMEGA 16 می کنیم.
برای پروگرام کردن آی سی از پروگرامر STK 200/300 استفاده شده که موارد زیر لازم است:
1. کانکتور درگاه Printer از نوع Male
2. آی سی بافر 74 HC 244
3. یک عدد مقاومت 100 k

شکل 18: اتصالات پروگرامر STK 200/300

مرحله پنجم: طراحی مدارات الکترونیکی ربات بوسیله برنامه Proteus

تصویر19 :مدار کلی ربات

تصویر 20: مدار فرستنده گیرنده کامپیوتر

در پایان ربات ساخته شده :

تصویر 21: تصویر ربات ساخته شده 1

تصویر 22: ربات ساخته شده

پیوست:
نحوه نوشتن برنامه در codevision
برای نوشتن یک پروژه ی جدید، باید ایتدا از منویFile، گزینه یNewرا انتخاب کنید. یک پنجره ی کوچک در وسط صفحه باز می شود که در آن باید گزینه ی Projectرا انتخاب کرده و تایید کنید. بلافاصله پنجره ی دیگری باز می شود که از شما سوال می کند آیا تمایل دارید برای انجام پروژه ی خود از CodeWizardاستفاده کنید؟

همانطور که گفته شد، CodeWizardیکی از نرم افزارهای جانبیCodeVisionاست که به وسیله ی یک واسط گرافیکی، در نوشتن برنامه ی اصلی و انجام تنظیمات اولیه پورت ها و ….، کمک بسیار زیادی به ما می کند.

پس گزینه یYesرا انتخاب می کنیم وCodeWizardباز می شود.

چگونه ازCodeWizardاستفاده کنیم:

شکل زیر، نمای کلی ازCodeWizardاست:

همانطور که میبینید، لبه های متعددی برای انجام تنظیمات مختلف میکروکنترلر در آن وجود دارد.

لبه ی Chip:

اولین لبه ای که ما با آن کار داریم لبه ی Chip است. در این قسمت ما باید نوع میکروکنترلر خودمان را انتخاب کنیم. همانطور که در شکل بالا می بینید، میکرو کنترلر ATmega16L را انتخاب کرده ایم.

قسمت Clock مربوط به تنظیم فرکانس کاری آی سی است که ما فعلاً وارد این مبحث نمی شویم و آنرا با همان مقدار پیش فرض می پذیریم. با قسمت های دیگر این لبه هم ما کاری نداریم و آن ها را به همان صورت پیش فرض می پذیریم.

لبه ی Port:

این لبه مربوط به تنظیمات ورودی خروجی پایه هاست.

همانطور که می بینید هر پایه از هر پورت را در این قسمت می توان به راحتی به صورت In)ورودی) و یا Out)خروجی) تنظیم کرد. فقط کافیست لبه ی مربوط به پورت مورد نظر را انتخاب کنید، حالا برای تغییر وضعیت هر پایه باید روی آن کلیک کنید.

Output value یا مقدار اولیه:

وقتی پایه ای را به صورت خروجی تنظیم می کنیم، می توان با تنظیم رجیستریPORTxتعیین کرد که سطح ولتاژ خروجی این پایه به صورت پیش فرض 0 باشد یا 1. یعنی در زمانیکه هنوز برنامه ی ما برای پایه ها تعیین وضعیت نکرده است، می توان به این طریق سطح ولتاژ اولیه ی پایه را تعیین نمود.

CodeWizardدر این جا هم کار ما را راحت تر کرده است، در ستون مقابل یعنی ستون "Pullup/Output value"برای پایه هایی که به صورت خروجی تعریف شده اند، می توان با یک کلیک وضعیت خروجی پایه را مشخص کرد. مثلاً الآن پایه ی شماره ی 2 از پورت A به صورت خروجی تعریف شده و در ستون مقابل نیز مقدار پیش فرض خروجی 0 تعیین شده است.

Pullup:

این قابلیت سخت افزاریست و در خانواده یAVRنیز وجود دارد. Pullupکردن به این معناست که پایه ای را با یک مقاومت بالا(مثلاً 10 کیلو اهم) به + وصل کنیم. اگر هم پایه را با این مقاومت به GND وصل کنیم، می گوییم پایه را Pulldownکرده ایم. مقاومت بزرگ باعث می شود که جریان عبوری به حداقل کاهش یابد، ولی به وسیله ی ولتاژی که بر روی پایه قرار می گیرد، می توان ورودی مورد نظر را در هنگامیکه هنوز ورودی از خارج دریافت نکرده به صورت پیش فرض 0 یا 1 کرد.

وقتی پایه ای را به صورت ورودی تعریف می کنیم، با تنظیم رجیستریPORTxمی توان تعیین کرد که پایه ی ورودی به صورت پیش فرضPullupباشد یا نباشد. دقت کنید که در اینجا نمی توان تنظیم کرد که مقدار ورودی پیش فرض 0 باشد، چون خانواده یAVRقابلیتPulldownندارند وفقط می توان آنرا به صورتPullupتنظیم نمود، و در نتیجه پایه ای کهPullupشده است در هنگامیکه هنوز از خارج مقداری را دریافت نکرده است، به صورت پیش فرض 1 منطقی شود.

حالا بعد از انجام تنظیمات اولیه پورت ها و خود آی سی ، باید ازCodewizardبخواهیم تا یک برنامه ی نیمه آماده با توجه به تنظیماتی که تنجان داده ایم در اختیار ما بذارد.

برای این کار از منویFileگزینه ی "Generate, Save and Exit"را انتخاب کنید. حالا باید جایی که می خواهید برنامه ی شماSaveشود را مشخص کنید. Codevisionدر اینجا 3 فایل برای برنامه ی شما می سازد که باید آن ها را نام گداری کنید. بهتر است نام این 3 فایل و محل ذخیره سازی آن ها یکی باشد.

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

بعد از نوشتن برنامه باید آنرا کامپایل کرده و و سپس فایلHexآنرا بسازید و بعد از آن، فایلHexرا در میکرو کنترلرLoadکنید. حالا میکروکنترلر شما پروگرام شده و آماده ی استفاده است. در جلسه ی آینده با روند اجرای این مراحل درCodevisionآشنا خوهید شد.

در ادامه شما رو با مراحل کامپایل کردن ، پروگرام کردن میکروکنترلر و رفع نقص برنامه آشنا کنیم.

همانطور که گفته شد فقط زبان ماشین(Machine Language)، زبان قابل فهم برای پردازنده ی کامپیوتر است، و برنامه هایی که در زبان های دیگر می نویسیم برای اینکه بتوانند توسط پردازنده اجرا شوند باید حتماً توسط کامپایلرها به "زبان ماشین" ترجمه شوند. اما نوشتن برنامه در این زبان برای ما بسیار مشکل است، زیرا دستورات قابل فهم برای این زبان بسیار ابتدایی و ساده هستند و به سختی می توان برنامه های حرفه ای و الگوریتم های پیچیده را در آن پیاده سازی کرد. مثلاً حتی برای انتقال داده از یک متغیر به متغیر دیگر، باید چندین خط برنامه بنویسید، اما در زبان C این کار در 1 عبارت انجام می شود. برنامه نویسی در این زبان دشواری های مختلفی دارد که فعلاً به آن ها نمی پردازیم.

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

حال چگونه باید این مراحل را در محیطCodeVisionانجام داد:
بعد از نوشتن برنامه، شما می توانید با فشار دادن کلیدF9برنامه ی خود را کامپایل کنید. با فشار دادن همزمانShift+F9 برنامه ی شما ابتدا کامپایل شده و به اسمبلی تبدیل می شود وسپس توسط اسمبلر، به زبان ماشین تبدیل می شود. سپس فایلی با پسوند .HEXدر محلی که شما مشخص کرده اید(در هنگام ساختن پروژه) ساخته می شود.این فایل همان برنامه ی شماست و شما باید این فایل را طی مراحلی که در ادامه توضیح داده می شود، در میکروکنترلر Load کنید.

در اینجا ما نیاز به نرم افزارِ پروگرامر "Programmer" داریم تا اطلاعات ما رو با پرتوکل های مشخصی که در جلسات آینده در مورد آن ها توضیح خواهیم داد، به میکروکنترلر منتقل کند.

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

حال از منویFile ِ همین پنجره، گزینه یLoad Flash را انتخاب کنید. حالا فایلی که در قسمت بالا ساختید(.Hex) را از پوشه ی"exe"انتخاب کنید. البته به صورت پیش فرض این کار انجام می شود و فایل .HEXبرنامه ی شما در پروگرامرLoadمی شود، اما ممکن است گاهی به دلایل مختلف نیاز باشد فایل دیگری راLoadکنید.

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

حالا از منوی"Program"گزینه ی"Erase Chip"را انتخاب کنید تا برنامه های قبلی ای که رو میکروکنترلر شما هست پاک شود و میکروکنترلر آماده دریافت برنامه ی جدید شود. سپس از همین قسمت، گزینه ی "Flash" را انتخاب کنید تا برنامه ی جدید شما در داخل میکروکنترلر Load شود. حالا میکروکنترلر شما پروگرام شده و آماده ی استفاده است.

مشکلات احتمالی:

در بخش کامپایل کردن برنامه، ممکن است برنامه ی شما ایرادات مختلفی داشته باشد که مانع کامپایل شدن برنامه شود. این ایرادات(Errors)، همراه با شماره ی خطی که در آن ایراد وجود دارد، بعد از هربار که برنامه را کامپایل می کنید در قسمت سمت چپ، در لبه ی"Code Navigator"نمایش داده می شوند .

نکته ی مهم:یکی از رایج ترین ایرادات که مربوط به نگذاشتن ";" در پایان جملات است، ایراد"missing';' "است.

سپس بعد از رفع ایراد ، دوباره برنامه را کامپایل کنید و اگرErrorدر آن قسمت نبود، برنامه ی شما کامل است.

روبات آتش نشان

2


تعداد صفحات : 51 | فرمت فایل : WORD

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