جلسه شانزدهم : راه اندازی فتوسل

سلام

دوستان از این جلسه به بعد تصمیم داریم دونه دونه بریم سراغ سنسورها. چه آنالوگ چه دیجیتال. هر جلسه یه سنسور رو آموزش می دیدم که چیه چجوری کار می کنه و کد آردوینو براش می نویسیم.

این جلسه می خوایم در مورد فتوسل حرف بزنیم.
09088-02-L

PHOTOCELL2A

 

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

فتوسل هم یه مقاومته ولی از نوع مقاومت متغیر. یعنی وقتی میزان نور محیطی که این فتوسل توشه تغییر کنه مقاومتی که از دو سر این فتوسل دیده میشه تغییر می کنه. بنابراین هم مقاومته و هم مثل اون مقاومت های معمولی نیست. حالا این که چجوری این انرژی نورانی میاد و کاری می کنه که مقاومت دو سر فتوسل تغییر کنه یه سری فعل و انفعالات داخلیه که من به شخصه علاقه ای بهش ندارم ولی شما می تونید سرچ کنید و با این تکنولوژی آشنا بشید. در کل چیزی که واسه ما مهمه اینه که وقتی شدت نور تابیده شده به این سنسور تغییر می کنه مقاومت دوسرش هم تغییر می کنه. واسه اطلاعات تکمیلی هم بگم که به فوتوسل مقاومت نوری و یا  light-dependent resistor) LDR ) گفته می شه.

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

حالا مطابق عکس زیر مدار رو ببندید :
light_cdspulldowndiag

همونطور که می بینید اومده یه مقاومت 10 کیلو اهمی (ثابت ) رو با فتوسل سری کرده و از پایه مشکترک بینشون به پین آنالوگ آردوینو داده. منطق این کار همون منطق تقسیم ولتاژه.
images

وقتی مقاومت فتوسل (با تغییر نور ) تغییر می کنه طبق قانون تقسیم ولتاژ ، ولتاژی که روی پایه وسط (مشترک بین مقاومت و فتوسل ) می افته هم تغییر می کنه که چون این تغییر به صورت پیوسته هست این پایه وسط رو به پین آنالوگ آردوینو (پین شماره 0 ) وصل می کنیم.

خب مدار رو بستید؟
بریم سراغ کد. برای کد عینا عینا عینا همون کد پتانسیومتر رو آپلود کنید. یعنی این کد :
2016-01-20_13-07-301

خب کد رو آپلود کنید و کنسول سریال رو باز کنید:
2016-01-26_12-26-48

همونطور که می بینید مقدار دیفالت سنسور روی حدود 600 بود . بعد دستم رو گذاشتم روی فتوسل ( روی قسمت بالایی ) و داده نشون داده شده از 600 به حدود 200 افت پیدا کرد. دوباره که دستم رو برداشتم برگشت رو همون حدودای 600 . این یعنی تو محیطی که تست کردم محدوده روشنایی 600 و محدوده تاریکی 200 هست. جایی که شما دارید تست می کنید می تونه اعداد تو رنج های کاملا متفاوتی بده بر حسب نور محیطی تون.

حالا کنسول رو ببندید و سریال پلاتر رو باز کنید و هی دستتون رو بزارید رو فتوسل و بردارید تا براتون شکل موج بکشه ( محض تفریح البته ).
2016-01-26_12-34-38

می تونیم همینجا پروژه رو تموم کنیم اما نمی کنیم. می خوایم سیستم روشنایی اتوماتیک بسازیم. یعنی هر موقع نور کم شد و احتیاج به روشنایی داشتیم لامپ روشن بشه .نه این که هر دقه و هر ثانیه اون لامپ بدبخت کار کنه.
برای این کار به مدار قبلیمون یه LED به صورت زیر اضافه می کنیم:
Photocell_bb
قسمت فتوسل که عینا همونه . اومدیم یه LED رو با یه مقاومت سری کردیم و به پین دیجیتال شماره 2 وصل کردیم. علت وجود مقاومت سری با LED اینه که از سوختن اون جلوگیری بشه. تو همه مدارا این قانون وجود داره که سر راه هر LED باید مقاومت گذاشته بشه.

خب مدار رو بستید تمام ؟
حالا کد زیر رو آپلود کنید تا براتون توضیح بدم:
2016-01-26_13-04-56

تو قسمت هدر برنامه که فقط اومدیم علاوه بر متغیر های کد قبلی متغیر ledPin رو معرفی کردیم به عنوان پین شماره 2 .
تو قسمت کانفیگ دیگه سریال رو برداشتیم چون نیازی بهش نبود و به جاش پین دیجیتال ledPin رو به عنوان خروجی تعریف کردیم.
تو تابع loop خط اول ، داده کانال ADC شماره 0 رو می خونیم و تو متغیر sensorValue می ریزیم ( همون متغیری که تو هدر برنامه تعریف کردیم ).
تو کد قبلی دیدیم که حد روشنایی 600 و حد تاریکی 200 بود.
حالا کد نوشتیم اگه داده ای که خونده از 300 کمتر بود (یعنی رفته باشیم تو تاریکی ) بیا led رو روشن کن. معقوله دیگه وقتی تاریک میشه باید چراغا رو روشن کنیم.
تو خط بعدی هم نوشتیم اگه داده ای که خوندی از 500 بیشتر بود (یعنی تو روشنایی بودیم ) led رو خاموش کن چون هوا روشنه و نیازی به نور اضافه نداریم.

اعداد 300 و 500 رو که من تو کدم قرار دارم بر اساس محیط تستم بود. یعنی همون عدد هایی که با کد قبلی از کنسول در آوردم . شما هر رنج عددی که دارید می تونید در نظر بگیرید و این کد رو متناسب با محیط تست خودتون تغییر بدید.
یعنی مثلا اگه کسی تو تستش تاریکی رو روی عدد 120 داشت (مثلا ) نیازی نداره مثل کد من مرز تاریکی رو 300 بزاره میتونه 200 یا حتی کمتر انتخاب کنه.

و اما نکته آخر :
اگه دقت کنید من وقتی دستورهای if رو نوشتم هیچ آکولادی باز و بسته نکردم در صورتی که قبلا می گفتیم اگه شرط if برقرار بشه دستورهای بین دو آکولادی که باز و بسته شدن اجرا میشه{}. خب الان هیچ آکولادی نیست پس در صورت برقرار بودن شرط if چی اجرا میشه؟
جواب: این یه قانون برنامه نویسیه که اگر بعد از برقرار شدن شرط if تنها یک کار لازم باشه انجام بشه دیگه نیازی به گذاشتن آکولاد نیست. دقیقا مثل شرایط الان ما. در صورتی که نور از مرز تاریکی کمتر بشه فقط لازمه LED روشن بشه (یعنی فقط یک کار ) پس به آکولاد نیازی نیست.

پایان جلسه

One thought on “جلسه شانزدهم : راه اندازی فتوسل

  1. داداش نمی تونم واسه هر مطلب یک پیام تشکر بزارم اینجا واسه ی همه مطالب اموزندت ازت تشکر می کنم دمتگرم

  2. با سلام و خسته نباشید.میخام با آردوینو uno هشت عدد ال ای دی رو یکی پس از دیگری از خروجی بالا به خروجی پایین و سپس از پایین به بالا روشن و خاموش کنم.آیا باید برای هر خروجی دستور high , low نوشته بشه یا مثل کدویژن میشه شیفت داد ممنون میشم راهنماییم کنید.

  3. سلام ممنون از آموزش و مطالب خوب تون. یه سوال داشتم مهندس. اگر من بخوام از یک بازر هم تو این مدار استفاده کنم میشه در مورد قرار گرفتن بازر تو مدار و کد نویسی آردوینو راهنمایی بفرمایید. ممنون مهندس.

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

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

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

  7. واقعا عالی روان و کارآمد بود . مرسی از مطلب. و البته یه سوال . نمیشه ما اون LED رو به پایه انالوگ وصل کنیم و تنظیم کنیم که با توجه به میزان کاهش نور این LED نورش بیشتر شه . یعنی هرچی مقدار سنسور فتوسل کاهش پیدا کرد مقدار ولتاژ LED اضافه بشه ؟؟؟

  8. سلام خسته نباشید.ببخشید الان led دوحالت داره یا خاموشه یا روشن.نمیشه مداری طراحی کنیم که اگه نور محیط کم شد ب همون نسبت نور led بیشتر بشه و اگه نور محیط زیاد شد نور led کم بشه؟ خواهش میکنم راهنماییم کنید خیلی فوریه.پیشاپیش ممنون

    1. با سلام، خروجی led رو به پینی وصل کنید که pwm باشه، و بعد می تونید از متد analogWrite استفاده کنید. این دستور روی سیم با یک فرکانسی موج مربعی ایجاد می کنه، یه ورودی داره بین 0 تا 255 که اگه 255 بدید 1 منطقیه و 0 همون صفر منطقی میشه. هر عددی بین اینها می تونه شدت نور لامپتون رو تنظیم کنه.

      عددی که از سنسور نور می خونید رو باید بین 0 تا 255 map کنید.

  9. سلام و خسته نباشید
    من برای یه کاری لازم هست 30 تا سنسور نوری رو نصب کنم
    از روش وایر با نصب ای تو سی میشه این روش رو پیاده کرد ؟
    لازم هست مقدار دهی هر سنسور رو در برنامه لحاظ کنم
    ممنون میشم کسی کمک کنه
    با تشکر

  10. سلام وقتتون بخیر.ی سوال داشتم.اگر من بخوام بجای یک ال ای دی ۴ تا ال ای دی و ۴ تا فتوسل بزارم مدار رو چجوری باید ببندم و کدنویسیش رو چیکار کنم؟ینی هر ال ای دی یک فتوسل داشته باشه ولی همشون داخل یک مدارباشن.با تشکر

  11. سلام دوستان
    من همین برنامه رو بستم و اوایل درست کار کرد
    یعنی ی چیز ساده با فتوسل ساختم که درست کار میکرد
    ولی بعدش دیگه مقدار فتوسل ثابت نمیمونه و هی گیج میزنه؟
    چرا اینجوریه؟؟؟؟؟
    ده بار برنامه رو از اول نصب کردم
    کد ها همونه
    پورت رو شناسایی میکنه
    دوتا اردوینو اوردم
    بازم کار نکرد
    ممکنه از پورت ی اس بی لبتاب باشه؟؟؟؟؟؟؟؟؟
    یعنی بدجور نوسان داره…
    لطفا کمک کنید
    یعنی اگه من پول آپ کرده باشمو کنتاکت کرده باشه
    برد اردوینو میسوزه یا پورت یو اس بی؟؟؟
    یک روز هم نگذشت که خراب شد
    ممنون اگه جواب بدین
    09159367477

  12. سلام . میخواستم 2عدد ldr یکی پینA0و دیگری بهA1 وصل باشد(با همان سیم بندی که در نقشه ارائه داده اید) . به این صورت تعریف شود نور ldr1 را قطع کردیم led1 مربوطه روشن شود و وقتی دستمان را از ldr1 برداشتیم و نور رسید led1 مربوطه خاموش نشود و روشن بماند تا زمانبکه نور ldr2 را قطع کردبم خاموش بشود و 2 led روشن شود و روشن بماند و خاموش نشود مگر تا زمانیکه نور ldr1 را قطع کنیم. با تشکر فراوان

پاسخ دادن به رضا مقدم لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *