android 紫外线传感器,Arduino光线传感器-UV Sensor V1.0-ML8511紫外线传感器

外观

c5c50a7447e4188ab31bd92e7dc5c6a8.png

概述

该模块采用了通用的ML8511 UV传感器原件,可以用来检测室内或室外的紫外线密度。

通过将光电流转化成电压的原理来检测UV强度,同时非常适合被被外部电路所采用。

该模快还具备省电模式可达0.1uA,适合在智能可穿戴和手机等设备上使用。

应用

紫外线等级监视器

环境监测仪、气象站

DIY紫外线互动装置

技术规格

工作电压:DC 5V

工作温度:-20~70°C

敏感区域:UV-A,UV-B

敏感波长: 280-390nm

模块尺寸:30 x 22mm

连接示意图

297983f9bebea890030f227646268d11.png

紫外线传感器连接示意图

ML8511 UV等级图表

59736b2f859391d2a317af182416fb04.png

ML8511 UV等级图表

从图表上可以看到紫外线输出电压映射到等级是一条直线,从1.0V开始,最大是2.8V(15mW/cm2)。

Arduino虽然有一个内置的函数map() function,但是map()是不能工作在浮点型的。这里要感谢Arduino社区开源奉献者才有了下面的一个简单的mapfloat()函数,方便我们使用。

//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;

}

下面是将传感器读到的电压值转换成mW/cm2等级:

float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level

示例代码

/***************************************************

* UV Sensor v1.0-ML8511

* <....>

***************************************************

* This example reads UV intensity from UV Sensor v1.0-ML8511.

*

* Created 2014-9-23

* By Phoebe

* Modified 2014-9-23

* By Phoebe phoebe.wang@dfrobot.com>

*

* GNU Lesser General Public License.

* See for details.

* All above must be included in any redistribution

****************************************************/

/***********Notice and Trouble shooting***************

* 1.Connect ML8511 UV Sensor to Arduino A0

* 2.This code is tested on Arduino Uno, Leonardo, Mega boards.

****************************************************/

int ReadUVintensityPin = A0; //Output from the sensor

void setup()

{

pinMode(ReadUVintensityPin, INPUT);

Serial.begin(9600); //open serial port, set the baud rate to 9600 bps

Serial.println("Starting up...");

}

void loop()

{

int uvLevel = averageAnalogRead(ReadUVintensityPin);

float outputVoltage = 5.0 * uvLevel/1024;

float uvIntensity = mapfloat(outputVoltage, 0.99, 2.9, 0.0, 15.0);

Serial.print("UVAnalogOutput: ");

Serial.print(uvLevel);

Serial.print(" OutputVoltage: ");

Serial.print(outputVoltage);

Serial.print(" UV Intensity: ");

Serial.print(uvIntensity);

Serial.print(" mW/cm^2");

Serial.println();

delay(100);

}

//Takes an average of readings on a given pin

//Returns the average

int averageAnalogRead(int pinToRead)

{

byte numberOfReadings = 8;

unsigned int runningValue = 0;

for(int x = 0 ; x < numberOfReadings ; x++)

runningValue += analogRead(pinToRead);

runningValue /= numberOfReadings;

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;

}

你可以用一个紫外LED灯或者在阳光下测试你的传感器,赶紧来测试看看你的周围的紫外线等级吧~

本文整理于DFRobot wiki

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,感谢您的提问。我可以为您解答关于Arduino声音传感器与二极管的问题。 首先,声音传感器是一种能够将声音转化为电信号的设备,它可以将检测到的声音强度转换成电压值输出。而二极管则是一种电子元器件,它通常用于控制电流的流动方向,以及将交流信号转换为直流信号。 在Arduino中,我们可以通过连接声音传感器和二极管来实现一些有趣的功能。例如,当声音传感器检测到声音强度超过一定阈值时,可以通过控制二极管的通断来点亮LED灯或者发出声音等效果。 具体实现方法如下: 1.将声音传感器的VCC引脚连接到Arduino的5V引脚,GND引脚连接到GND引脚,AO引脚连接到Arduino的A0引脚。 2.将二极管的阳极连接到Arduino的数字引脚,阴极连接到GND引脚。 3.编写Arduino代码,读取声音传感器输出的模拟信号,并根据阈值控制二极管的通断状态。 以下是示例代码: ``` int soundPin = A0; //声音传感器连接到A0引脚 int ledPin = 7; //LED灯连接到数字引脚7 void setup() { pinMode(ledPin, OUTPUT); //设置数字引脚7为输出模式 Serial.begin(9600); //初始化串口通信 } void loop() { int soundValue = analogRead(soundPin); //读取声音传感器输出的模拟信号 Serial.println(soundValue); //将声音值输出到串口监视器 if (soundValue > 500) { //当声音强度超过阈值500时 digitalWrite(ledPin, HIGH); //点亮LED灯 } else { digitalWrite(ledPin, LOW); //关闭LED灯 } delay(100); //延时100毫秒 } ``` 希望这个回答能够解决您的问题。如果您还有其他问题,欢迎随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值