سنسورها کاربرد فراوانی در زندگی روزمره دارند. سنسورهای حساس به نور یا همان LDR در اثر تغییر شدت نور فعالیتی مشخص را انجام میدهند. به عنوان مثال در تیر چراغ برق خیابانها از فتوسل استفاده شده است. فتوسل نوعی مقاومت متغیر حساس به نور است. با تابش مستقیم و شدید نور به سنسور مقاومت بین دو پایه کاهش مییابد. با کدنویسی صحیح میتوانید یک سنسور حساس به نور محیط حرفه ای طراح کنید. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
فتوسل Photocell
فتوسل یا LDR با قرار گرفتن در یک محیط کاملا تاریک مقاومت آن تا محدوده ۱ مگااهم میرسد. با تابش نور در مقابل سنسور مقاومت آن تا نزدیک به صفر افت پیدا میکند اما در شرایط نرمال تابش نور، مقاومت در کمترین حالت خود به ۸ تا ۲۰ کیلو میرسد.
با ترکیب فتوسل با یک مقاومت استاتیک یک تقسیم ولتاژ ساخته و در نهایت یک ولتاژ متغیر ساخته میشود. مقدار عددی سنسور توسط مبدل آنالوگ به دیجیتال میکروکنترلر قابل خواندن است. فتوسل با نام دیگری به اسم LDR هم شناخته شده است و دارای دو ترمینال اسنت که با میزان شدت نور، مقاومت دو سر ترمینال افزایش و کاهش مییابد.
راه اندازی فتوسل با آردوینو
با توجه به ماهیت سنسور فتوسل از پایههای ADC میکروکنترلر جهت دریافت دیتا و خواندن مقادیر استفاده میشود. که توسط ADC میتوانیم ولتاژ متغیر Variable Voltage تولید کرده و سپس در بازه ۰ تا ۵ ولت DC مقدار عددی سنسور را در هر بازه ولتاژ به دست آورده و بخوانیم که این ولتاژ وابسته به مقاومت سنسور خواهد بود. یک مقاومت استاتیک بین بازه ۱ تا ۱۰ کیلو مناسب است که مقاومت پیشنهادی ۴٫۷ کیلو و ۱۰ کیلو میباشد. یک سر مقاومت را به یکی از پایه های سنسور و سر دیگر مقاومت را به پایه ۵ ولت پول آپ Pullup کنید. در این آموزش از مقاومت ۴٫۷ کیلو استفاده شده است.
اتصالات فتوسل به آردوینو
برای مشاهده تغییراتی مقاومتی سنسور فتوسل در خروجی از یک ال ای دی LED استفاده میکنیم.
- ال ای دی را به پایه شماره ۱۳ آردوینو اتصال دهید.
- یک پایه از سنسور فتوسل را به مقاومت ۴٫۷ کیلو و سپس به پایه A0 اتصال دهید.
- پایه دیگر سنسور فتوسل را مستقیم به ۵ ولت Pullup اتصال دهید.
- پایه خالی مانده مقاومت را با یک کابل به GND اتصال دهید.
کد آردوینو فتوسل
نرم افزار آردوینو را نصب و سپس یک تب جدید ایجاد کنید. کد را کپی و به نرم افزار آردوینو انتقال دهید. با توجه به نوع برد مورد استفاده از منو Tools/Board نوع آردوینوی مورد استفاده و پورت را انتخاب کنید.
const int Photocell = A0; const int LED = 13; const float VCC = 4.98; const float R_DIV = 4660.0; const float DARK_THRESHOLD = 10000.0; void setup() { Serial.begin(9600); pinMode(Photocell, INPUT); pinMode(LED, OUTPUT); } void loop() { int lightADC = analogRead(Photocell); if (lightADC > 0) { float lightV = lightADC * VCC / 1023.0; float lightR = R_DIV * (VCC / lightV - 1.0); Serial.println("Voltage: " + String(lightV) + " V"); Serial.println("Resistance: " + String(lightR) + " ohms"); if (lightR >= DARK_THRESHOLD) digitalWrite(LED, HIGH); else digitalWrite(LED, LOW); Serial.println(); delay(500); } }
کد را Verify و سپس آپلود Upload کنید.
اجرای برنامه آردوینو
با تاریک شدن سنسور مقاومت داخلی آن کاهش یافته و خروجی به بالاترین حد خود میرسد. در این آموزش با تاریک کردن سنسور، شدت نور ال ای دی به بیشترین حالت خود و نزدیک به عدد ۲۵۵ رسیده و با روشن شدن سنسور ال ای دی خاموش میشود.
تحلیل کد آردوینو Arduino
در این کد دو متغیر جداگانه نمایش داده میشود. با توجه به اینکه این سنسور میتواند ولتاژ متغیر با استفاده از ADC تولید کند در هر لحظه مقادیر ولتاژ از ۰ تا ۵ ولت قابل مشاهده است. با تاریک شدن سنسور ولتاژ پایه به بیشترین حالت رسیده و عدد ۵ نمایش داده میشود و در کمترین نزدیک به ۰ است.
تعریف پایه ها و انتخاب عدد ثابت ولتاژ و مقاومت متغیر
const int Photocell = A0; const int LED = 13; const float VCC = 4.98; const float R_DIV = 4660.0; const float DARK_THRESHOLD = 10000.0;
تعریف ورودی و خروجی
void setup() { Serial.begin(9600); pinMode(Photocell, INPUT); pinMode(LED, OUTPUT); }
تعریف متغیر برای سنسور، ولتاژ و مقاومت متغیر
int lightADC = analogRead(Photocell); float lightV = lightADC * VCC / 1023.0; float lightR = R_DIV * (VCC / lightV - 1.0);
شرط نویسی برای فعال شدن ال ای دی LED
if (lightR >= DARK_THRESHOLD) digitalWrite(LED, HIGH); else digitalWrite(LED, LOW); Serial.println(); delay(500);
دیتای دریافتی از سنسور در حالت بیشترین تابش نور به سنسور، در این حالت ولتاژ پایه به بالاترین حد خود یعنی ۵ ولت رسیده و مقدار مقاومت ۸۷۰ اهم است که بسیار کاهش یافته است.
دیتای دریافتی از سنسور در حالت کمترین تابش نور به سنسور، در این حالت ولتاژ پایه به کمترین حد خود یعنی ۰ ولت رسیده و مقدار مقاومت ۸۰۸۶ اهم است که بسیار افزایش یافته است:
به همین ترتیب با تنظیم شدت نور میتوانید عدد مناسب در محیط مورد نظر خود را دریافت و در مقادیر ثابت برنامه تعریف کنید.
وسایل مورد نیاز
کیت دما و رطوبت بر پایه آردوینو Arduino
کیت سنسور آردوینو Arduino نیمه حرفه ای
کیت آردوینو بر پایه فاصله سنج آلتراسونیک SRF
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
من نمایش شدت نور رو روی سون سگمنت دارم میخواین براتون ارسال کنم
با سلام
کاربر گرامی ضمن تشکر از شما، نیازی به ارسال نیست. در صورت تایید اکانت شما توسط مدیریت میتوانید به عنوان نویسنده شروع به فعالیت کنید.
سلام وقت بخیر خواستم ببینم این پروژه با پروژه آموزش ساخت مدار فرمان با نور و ماژول فتوسل LDR پکیچ ۳۷ سنسور آردوینو فرقی دارد چون برای اون پروژه اجازه برداشت کد ندارم وخواستم بدونم میشه برای خودرو استفاده کرد ؟
با سلام
تفاوتی ندارد.
سلام خسته نباشید
از مقاومت ۱ کیلو هم میشه استفاده کرد ؟
با سلام
از مقاومت ۱ تا ۱۰ کیلو میتوانید استفاده کنید.
سلام وقت بخیر چجوری به رله متصل کنم ؟
با سلام
کاربر گرامی دقت داشته باشید برای استفاده از رله بایستی دانش الکترونیک داشته باشید. لینک زیر را مطالعه کنید.
راه اندازی رله
سلام ببخشید اردوینو من تمامی پایه های Digital استفاده شده است ایا می توان پایهA0را که به یک ماژول وصل است را برای این پروژه استفاده کنم؟
با سلام
خیر
از مبدل افزاینده پایه دیجیتال PCF8574 استفاده کنید.