فتوسل چیست؟ راه اندازی و اتصال فتوسل به آردوینو
در این جلسه قراره راه اندازی فتوسل با آردوینو رو آموزش بدیم.
اگر با فتوسل یا مقاومت LDR آشنایی ندارین ابتدا اون رو برای شما معرفی میکنیم.
فتوسل چیست؟
فتوسل یک نوع مقاومت هستش که با تابش نور مقدار اون تغییر میکنه( در حالی که مقاومت های معمولی همیشه مقدار ثابتی دارن).
فتوسل ها از لحاظ ظاهری انواع مختلفی دارن :
نحوه کارکرد photocell به این صورته که اگه نوری که بهش می تابه کم باشه مقاومتش زیاد میشه و اگر نوری که بهش می تابه زیاد باشه مقاومتش کم میشه.
کاربرد های این مقاومت زیاده ، مثلا در ربات های تعقیب نور از این مقاومت های LDR استفاده میشه و یا در کاربرد های صنعتی میشه به استفاده اونها در دوربین های عکاسی برای تشخیص میزان نور اشاره کرد. همچنین در نیروگاه های خورشیدی که صفحه هات با حرکت خورشید تغییر وضیعیت میدن هم ازین مقاومت ها استفاده میشه.
میشه کامل تر و حتی درمورد نحوه کار و فیزیک داخلیش هم صحبت کرد ، اما فکر نمیکنم لزومی داشته باشه پس میریم سراغ اصل مطلب ، یعنی راه اندازی فتوسل با آردوینو.
راه اندازی فتوسل با آردوینو
ساده ترین حالت خوندن مقدار مقاومت روش مدار زیره :
یعنی یک پایه رو به +5 ولت وصل کنیم و سر دیگه ی اونو به یکی از پایه های آنالوگ آردوینو وصل میکنیم و همچنین یک مقاومت هم به همون پایه وصل میشه و سر دیگش زمین میشه . یعنی:
طبق قانون تقسیم ولتاژ ، باتغییر مقاومت ، ولتاژی که روی پایه مشترک (بین مقاومت و فتوسل ) می افته هم تغییر می کنه.
سوال! چرا به پایه آنالوگ وصل شد ؟ چون تغییرات ما پیوسته هستن ، و حالت صفر و یک دار نیست و ممکنه هر دامنه ای داشته باشه.
اوکی؟ بریم سراغ کد
کد پروژه راه اندازی و اتصال فتوسل به آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int photocellPin = 0; // payee analog ke photocell behesh vasl mishe int photocellReading; // in moteghayer ro tarif mikonim ta meghdari ke //mikhunim ro dakhelesh berizim void setup(void) { Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.print(photocellReading); // meghdar vorodi ro mikhunim va print mikonim delay(1000); } |
توی خد کد توضیح دادم که هر خط چه کاری میکنه و کدوم پایه به arduino وصل میشه.
توی خروجی ارتباط سریال آردوینو تغییر مقدار خروجی رو نسبت به میزان نور میتونیم مشاهده کنیم (کافیه برای امتحان دستتون روی سنسور بزارین).
اما حالا میخوام خروجی رو به اضای مقدار های مختلف تفکیک کنیم( مثلا در پروژه های تکمیلی تر میشه یک موتور رو روشن یا خاموش کرد یا به چند رله برای تغییر وضعیت لامپ و … دستور داد).
برای این کار از چند تا دستور IF استفاده میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
int photocellPin = 0; // payee analog ke photocell behesh vasl mishe int photocellReading; // in moteghayer ro tarif mikonim ta meghdari ke //mikhunim ro dakhelesh berizim void setup(void) { Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.print(photocellReading); // ta inja meghdar ro mesle ghabl mikhunim va chap mikonim //ama ba tavajoh be meghdar //matn khasi ro chap mikonim //ke mishe bejazh dastoor on/off //shodan chand pin ro dad //ba be motor &.. dastoor dad;) if (photocellReading < 10) { Serial.println(" - Dark"); } else if (photocellReading < 200) { Serial.println(" - Dim"); } else if (photocellReading < 500) { Serial.println(" - Light"); } else if (photocellReading < 800) { Serial.println(" - Bright"); } else { Serial.println(" - Very bright"); } delay(1000); } |
و خروجی در ارتباط سریال در ازای نور های مختلفی که به سنسور میرسه به شکل زیره :
ممنون از وبسایت جامع وعالی شما فقط اگه امکانش هست آموزش مقدماتی آردوینو را در سایت خود قرار دهید
سلام.
به این بخش مراجعه کردین؟ آموزش جامع آردوینو
با سلام
برای من ورودی “0” آنالوگ رو ارور داد:
int photocellPin = 0; // payee analog ke photocell behesh vasl mishe
ایراد چیست ؟
سلام .
کد دوم ؟ 2 بار تکرار شده بود تعریف photocellPin. اصلاحش کردم الان ارور نداره.
ممنون اطلاع دادین
خواهش میکنم
ممنون از شما
🌹🌹