<ul> قطعات مورد نیاز
مقاومت نوری
کریستال
نقشه مدار
برنامه میکروکنترلر
توضیحات مدار

<ul> نکته
</ul> نحوه کار با میکروکنترلر
همچنین ببینید
</ul>


در این پروژه با نحوه ساخت روبات دنبال کننده نور آشنا می شوید


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



3 عدد مقاومت نوری(LDR)
3 عدد مقاومت 1 کیلو اهم
1 عدد میکروکنترلر PIC16F84A
10 عدد دیود 1N4007
یک عدد خازن 0.1 میکرو فاراد
دو عدد خازن 0.01 میکرو فاراد
دو عدد موتور 3 تا 5 ولت DC
1 عدد کریستال 4 مگا هرتز
1 عدد مقاومت 4.7 کیلو اهم
2 عدد خازن 22 پیکو فاراد
1 عدد آیسی ULN2803


مقاومت نوری

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
























کریستال


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










!PIC16F84A
این میکرو کنترلر از ساده ترین انواع میکروکنترلر از لحاظ برنامه نویسی است .اما فوق العاده قدرتمند می باشد.زبان برنامه نویسی این میکروکنترلرغالبا زبان برنامه نویسی سی(C)برنامه نویسی بیسیک(BASIC)
برنامه نویسی پاسکال (PASCAL) میباشد.که شما می توانید با تهیه کمپایلر هر کدام از این زبانها،با برنامه ای که به آن تسلط دارید.، اقدام به برنامه نویسی آن کنید.
برای کار با این میکروکنترلر احتیاج به پروگرامر خانواده گروه PIC دارید.،به همراه کمپایلر زبان برنامه نویسی که به آن علاقه دارید.
datasheet مربوط به آیسی میکروکنترلر PIC16F84 را در لینک زیر مشاهده کنید.برای مشاهده این فایل بایست برنامه ACROBAT READER را در داخل کامپیوتر داشته باشد.
PIC16F84
ضمننا برای دریافت اطلاعات مربوط به آیسی داریور موتور ULN2803 اینجا کلیک کنید



Resigzed Image Click this bar to view the full image.






نقشه مدار


پایه 9 آیسی uln2803 را به زمین و پایه 10 را به مثبت منبع تغذیه یا باطری متصل نمایید.دو سر هر دو موتور را با یک خازن 0.01 میکروفاراد موازی کنید.همانطور که در نقشه و برنامه میکرو مشخص است.آیسی ULN2803 و میکرو ولتاژ زمین را در یک سر موتور ایجاد می کنند و سر دیگر موتور نیز به صورت مستقیم به مثبت ولتاژ وصل است.هر زمانی که یک مقاومت نوری ،نور را سنس کند .ولتاژ نزدیک به 5 ولت را در پایه های RB1 , RB2, RB3 ایجاد می شود.نحوه تصمیم گیری میکرو با توجه به ولتاژ دار شدن پایه های آن در برنامه و نقشه مشخص است.مقاومت های موجود در پایه های میکرو نیز تعیین کننده میزان حساسیت مدار می باشد.می توانید با قرار دادن مقاومت های مختلف حساسیت مدارتان را آزمایش کنید.با مقاومت 1 کیلو مدار عملکرد مطلوبی دارد.
این روبات،روبات ساده ای است.شما حتی می توانید آنرا با گیتهای منطقی AND نیز پیاده سازی کنید.آیسی مربوط به گیت منطقی AND می تواند 74HC08 باشد.آیسی هایی که مربوط به گیت AND باشد.زیادند.من تنها یک نمونه از آنرا برای شما عزیزان مثال زدم.که این آیسی از خانواده می باشد.
تا قبل از تابش نور به مقاومت نوری این المان به صورت مدار باز عمل می کند و مانع رسیدن ولتاژ 5 ولت به پایه های مربوط به تصمیم گیری میکرو کنترلر می شود.به محض تابش نور به این المان،ولتاژ 5 ولت که در یک سر این المان قرار دارد به سر دیگر نیز هدایت می شود.البته میزان انتقال ولتاژ یا سطح پتانسیل بستگی به شدت نور دارد هر چه قدر شدت نور بیشتر باشد.ما سهم بیشتری از ولتاژ 5 ولت در سر دیگر مقاومت نوری که به میکرو منتهی می شود خواهیم داشت.برای تست این مدار از یک چراغ قوه استفاده کنید.و این را بگویم که هر چه قدر چراغ قوه شما دارای نور متمرکز تری باشد عملکرد مدارتان مطلوب تر خواهد بود.می توانید برای تست مدارتان از یک سری LED که در بازار تحت عنوان LED سفید است استفاده کنید این نوع LED دارای قیمتی بیشتر از LED معمولی است.و نوری که از سر آن متصاعد می شود آنقدر زیاد است.که شما نمی توانید از روبرو به آن نگاه کنید.وچشم شما را اذیت میکند.در رنگهای مختلفی موجود است.اما برای تست این مدار از نوع سفید آن استفاده کنید.در واقع در این حالت این LED برای شما کار چراغ قوه را انجام می دهد.برای روشن شدن آن از یک باطری 1.5 تا 3 ولت استفاده کنید.وبسته به میزان روشنایی LED ای که خریداری می کنید.حتما در هنگام اتصال به باطری یک مقاومت را با آن سری کنید این مقاومت نیز از 100 اهم تا 1 کیلو اهم می تواند متغییر باشد.



Resigzed Image Click this bar to view the full image.







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


برنامه به زبان بیسیک نوشته شده است.،مقدار حساسیت و پاسخگویی فتوسل ها به منبع نوری هر لحظه در سه پورت RB1,RB2,RB3 بارگذاری می شود.میکرو کنترلر بر اساس این بارگذاریها تصمیم گیری می کند .،و به سمت راست یا چپ منحرف می شود.
در سه خط ابتدایی متغییر های m ، l و r باگذای می شوند.در واقع مقادیر پورتهایی که به مقاومت های نوری متصل هستند.در این پین های میکرو بارگذاری می شوند.وبسته به مقادیر این متغغیرها مدار شما عمل می کند.نحوه تصمیم گیری میکرو نیز با استفاده از دستورات شرطی if به طور ساده در برنامه مشخص هستند.در خط انتهایی برنامه به طور مثال گفته شده اگر هر سه سنسور نور را دریافت کردند.هر دو موتور روشن شود.در واقع در این حالت روبات به سمت جلو می رود.عملکر به این صورت است.،که زمانیکه این سنسورها نور را دریافت می کنند.در وقع مقاومت آنه کم می شود. و ولتاژ 5 ولت را که در یک سر آنها قرار دارد.به سر دیگر منتقل می کنند.سر دیگر پاه های ورودی میکرو است.میکرو هم بسته به اینکه چه سنسوری نور را دریافت کرده و با توجه به برنامه پین های RB7 و RB6 را HIGH یا LOW می کند.در این حالت شما شاهد حرکت موتور به طرفین راست و چپ و یا جلو خواهی بود





1:
2: m var byte
3: l var byte
4: r var byte
5: m=portb.2
6: l=portb.1
7: r=portb.3
8: if m=1 and l=0 and r=0 then
9: high portb.6
10: high portb.7
11: endif
12: if r=0 and l=1 and (m=0 or m=1) then
13: high portb.7
14: low portb.6
15: endif
16: if l=0 and r=1 and (m=0 or m=1) then
17: high portb.6
18: low portb.7
19: endif
20: if m=0 and l=0 and r=0 then
21: low portb.6
22: low portb.7
23: endif
24: if m=1 and l=1 and m=1 then
25: high portb.6
26: high portb.7
27: endif
28:
29:





توضیحات مدار


همانطور که در نقشه می بینید.،یک پایه فتوسل ها به تغذیه 5 ولت ویک پایه دیگر آن به ورودی های RB1,RB2,RB3از میکروکنترلر متصل است.پایه های فتوسل که به ورودی میکروکنترلر متصل است از همان اشتراک با مقاومت 1 کیلو اهم به منفی منبع تغذیه نیز متصل می شود.،هرچه قدر مقدار این مقاومت بیشتر باشد جریان کمتری از طریق آن به منفی می رود.،و حساسیت بیشتری از فتوسل را میکرو دریافت می کند.،به طور مثال اگر شما مقاومت 1 مگا اهم به بالا قرار دهید حتی با نور محیط نیز روبات حرکت خواهد کرد.، و هر چه قدر مقدار مقاومت کم شود.،حساسیت روبات کمتر می شود.،و برای حرکت روبات می بایست منبع نوری را به فتو سل بیشتر نزدیک کرد.،از سه عدد سنسور یکی را در جلوی مدار یکی را سمت چپ ویکی دیگر را سمت راست برد خود قرار دهید.هر بار که منبع نوری مثل چراغ قوه را به سمت جلوی مدار خود می گیرید روبات به سمت جلو حرکت می کند در این حالت هر دو موتور کار می کنند.، اگر منبع نوری را به سمت چپ یا راست منحرف کنید روبات به سمت چپ و راست ،در واقع در هر سمتی که منبع نوری باشد منحرف می شود.دیودهای موجود در مدار جهت حفاظت مدار از جریان برگشتی موتور مورد استفاده قرار می گیرد.همانطور که در نقشه ملاحظه می کنید.سر مثبت دیود های محافظ در زمین و سر منفی آن در مثبت ولتاژ برای هر موتور قرار گرفته است.علاوه بر این 4 دیود که برای هر موتور به کار رفته و جمعا 8 دیود می شود.،دو عدد دیو دیگر نیز وجود دارد.این دیودها نیز برای حفاظت آیسی ULN2803 از جریان برگشتی موتور به کار می رود.که به صورت برعکس قرار می گیرد سر مثبت این دو دیود نیز در پایه های خروجی آیسی ULN2803 قرار گرفته اند.چرا که این سرها ولتاژ زمین یا صفر ایجاد می کنند.و سر دیگر موتور به صورت مستقیم به مثبت ولتاژ متصل می شود.که در اینجا نیز سر منفی یا کاتد را مشاهده می کنید. البته آیسی ULN2803 داری دیود محافظ درونی نیز می باشد.


نکته

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


نحوه کار با میکروکنترلر


برای کار با میکروکنترلر احتیاج به دو مرحله دارید.اول کمپایل کردن برنامه ای که به طور مثال با زبان بیسیک نوشته شده.دوم پروگرام کردن آیسی،‌برای کمپایل کردن میتوانید.ورژن 2.32 این کمپایلر را در خط زیر دانلود کنید.
برای دانلود برنامه کمپایلر بیسیکاینجا را کلیک کنید.
پس از اینکه این فایل فشرده را باز کردید.به مراحلی که راجب نصب گفته شده دقت کنید.این راهنمای نصب داخل برنامه ایکه شما باز می کنید.وجود دارد.
شما می توانید برنامه تان را در محیط edit داس (dos) یا در محیط word یا Notpad ویندوز وارد کنید.پس از وارد کردن برنامه بهتره آنرا در محلی که برنامه کمپایلر را نصب کردید وفایل pbp.exe در آن وجود دارد.با پسوندbas ذخیره کنید.pbp مخفف pic basic pro compiler است.برای کمپایل کردن برنامه پیشنهاد می کنم به جای استفاده از محیط ویندوز وارد محیط command بشوید ومسیری که برنامه کمپایلر را در آن ذخیره کردید با استفاده از دستورات dos پیدا کنید.این محیط می بایست شامل فایلpbp.exe باشد.اگر برنامه تان نیز در همین مسیر باشد.احتیاجی به دادن مسیر یا path برنامه ندارید.pbp را تایپ می کنید.بعد از آن با یک فاصله علامت - وسپس بدون فاصله نام میکرو مورد نظر از خانواده PIC را وارد می کنید.حال نام برنامه را وارد کنید پسوند bas آنرا فراموش نکنید.به طور مثال اگر برنامه شما وکمپایلر در مسیری مانند مسیر روبرو قرار گرفته باشند.و اسم برنامه ای که نوشته ای به طور مثال blink با پسوند bas باشد.،داریم. c:\pic\pic1\pbp -16f84a blink.bas در اینجا فرض کردیم میکرو از نوع PIC16F84A است.اگر میکرو PIC16F873 باشد.به جای 16F84A- خواهیم داشت 16F873- اگر برنامه بدون خطا باشد.فایل HEX آن در درایوی که برنامه در آن قرار دارد.ایجاد می شود.حال می توانید آنرا از طریق پروگرامر وارد میکرو کنید.در پروگرامر نیز نوع میکرو را حتما درست انتخاب کنید.وبه دستورات و نحوه استفاده از پروگرامری که تهیه کرده اید.به دقت توجه کنید.