ویژگی های ماژول سنسور ماورای بنفش ML8511
بسیاری از لوازم الکتریکی، همچون نمایشگرهای رایانه، نمایشگرهای گوشی همراه، تلویزیون و … از منابع تولید کننده اشعه ماورای بنفش هستند. تابش اشعه ماورای بنفش به انسان میتواند باعث بروز بسیاری از بیماریها و سوختگیهای پوستی شود. به همین جهت، اطلاع از میزان نور UV محیط حائز اهمیت است. از ماژول سنسور ماورای بنفش ML8511 میتوان برای محاسبه شدت نور UV موجود در محیط استفاده کرد. استفاده بسیار ساده این سنسور از دلایل محبوبیت آن است. این سنسور یک خروجی آنالوگ دارد که ولتاژ آن به صورت خطی با میزان شدت نور ماورای بنفش موجود در محیط تغییر میکند.
معرفی پایه های (Pinout) ماژول سنسور ماورای بنفش ML8511
ماژول سنسور ماورای بنفش ML8511 دارای 4 پایه به شرح زیر است:
- EN: فعالسازی سنسور (اصطلاحا Active High است و برای فعال بودن سنسور، باید به VCC وصل باشد.)
- OUT: خروجی آنالوگ
- GND: زمین
- VCC: تغذیه ماژول – 3.3 ولت
پین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول سنسور ماورای بنفش ML8511 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر ماژول را به آردوینو وصل کنید.
گام دوم: کد
کد زیر را روی آردوینوی خود آپلود کنید. پس از آپلود کد، پنجره Serial Monitor را باز کنید.
/*
Made on Mar 15, 2021
By MehranMaleki @ Electropeak
Home
*/
//pin definitions
int UV_OUT = A0; //Sensor Output
int REF_3V3 = A1; //3.3V power on the Arduino board
void setup()
{
Serial.begin(9600);
Serial.println("ML8511 example");
}
void loop()
{
int uv_Level = analogRead_average(UV_OUT);
int ref_Level = analogRead_average(REF_3V3);
//Use the 3.3V power pin as a reference to get a very accurate output value from sensor
float output_Voltage = 3.3 / ref_Level * uv_Level;
float uvIntensity = mapfloat(output_Voltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level -numbers from datasheet-
Serial.print("ML8511 output: ");
Serial.print(uv_Level);
Serial.print(" / ML8511 voltage: ");
Serial.print(output_Voltage);
Serial.print(" / UV Intensity (mW/cm^2): ");
Serial.print(uvIntensity);
Serial.println();
delay(500);
}
//Takes an average of readings on a given pin
//Returns the average
int analogRead_average(int pinToRead)
{
int NumberOfSamples = 8;
int runningValue = 0;
for(int x = 0; x < NumberOfSamples; x++)
runningValue += analogRead(pinToRead);
runningValue /= NumberOfSamples;
return(runningValue);
}
//The Arduino Map function but for floats
//From: http://forum.arduino.cc/index.php?topic=3922.0
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
در کد بالا از پایه A0 آردوینو برای دریافت اطلاعات خروجی آنالوگ سنسور استفاده کردهایم. همچنین پایه A1 را نیز به تغذیه 3.3 ولت وصل کرده و از آن به عنوان رفرنس برای اندازهگیری دقیق ولتاژ خروجی سنسور استفاده میکنیم. در این کد با اندازهگیری ولتاژ خروجی سنسور، میزان شدت نور ماورای بنفش را بر حسب میلیوات بر سانتیمتر مربع (mW/cm2) محاسبه میکنیم.
در ادامه، با روشن کردن چراغقوه گوشی و نزدیک کردن نور آن به سنسور، عملکرد آن را مشاهده میکنیم.
خروجی کد به شکل زیر است.