风筝
发表于: 2022-3-30 15:42:48 | 显示全部楼层

在需要检测天气条件的某些变化时,它是非常不可预测的,而降雨是最出乎意料的天气参数之一。所以在本篇文字中,我们决定将雨量传感器与Arduino连接。雨量传感器(Rain Sensor)也称为雨量探测器传感器(Rain Detection Sensor),是一种易于使用的设备,可以检测降雨量。当雨滴落在传感器上时,它可以充当开关,另外它还可以测量降雨的强度。该传感器还有一个单独的LED指示灯和一个板载电位器,您可以通过它调整传感器提供的输出数字信号的灵敏度。


雨量传感器的引脚

与土壤湿度传感器一样,雨量传感器模块也有四个引脚VCC、GND、Aout 和 Dout,可用于从传感器中获取所需信息,雨量传感器的引脚如下所示:

Rain-Drop-Sensor-Pinout.jpg


●  VCC是雨量传感器的电源引脚,可以连接到3.3V或5V的电源。请注意,模拟输出会因提供的电源电压而异。

●  GND是电路板的接地引脚,连接到Arduino的接地引脚。

●  DOUT是电路板的数字输出引脚,输出低电平表示检测到雨,高电平表示没有下雨。

●  AOUT是电路板的模拟输出引脚,它将为我们提供模拟信号。


雨量传感器的工作原理

雨量传感器的工作原理非常简单,如下图所示。 PCB由以网格形式排列的多个暴露的导电板制成。当雨水落在传感器顶部时,导电板的电阻率会发生变化,通过测量电阻的变化,我们可以确定降雨的强度。降雨越强烈,电阻值越低。

Rain-Sensor-Working.gif


上面的雨量传感器动画显示了传感器的模拟输出如何根据落在它上面的水滴而变化。正如您在上面的动画中看到的,当水滴开始从顶部落下时,电压从VCC缓慢下降到0V,您还可以看到,当达到某个阈值时,电路板的触发LED会亮起,该阈值可以由电位器控制。为了简单起见,我们没有对电路的数字部分如何工作进行任何直观的表示,但是当达到某个阈值时,雨量传感器模块的输出变低,并点亮板载的LED灯。


雨量传感器的组成零件

整个雨量传感器模块由两部分组成:传感器PCB和信号处理模块。该模块处理来自传感器PCB的输入数据,它可以同时输出模拟和数字数据。

Rain-Drop-Sensor-Module.jpg


传感器模块有四个引脚,其中两个用于VCC 和 Gnd,另外两个可同时输出模拟和数字数据。如上图所示,模块有两个板载LED。电路板通电时电源指示灯亮,达到电位器设定值时另一指示灯亮。该模块还具有板载比较器运算放大器,负责将来自光电二极管的输入模拟信号转换为数字信号。我们还有一个灵敏度调节电位器,通过它,可以调节模块的灵敏度。


雨量传感器模块电路图

雨量传感器模块的示意图如下所示。原理图本身非常简单,只需一些通用组件来构建。

Rain-Sensor-Schematic.png


在原理图中,包含一个LM393运算放大器,它是一种低功耗、低失调电压运算放大器,可以由3.3V或5V电源供电。请注意,设备的模拟输出电压将取决于设备的电源电压。该运算放大器的主要工作是将来自传感器探头的输入模拟信号转换为数字信号。还有一个10K电位器,用于为运算放大器设置参考电压,如果传感器的输入电压低于电位器设置的阈值电压,则运算图的输出变低。除此之外,还包含两个LED。第一个是电源LED,另一个是触发LED。电路板通电时电源LED亮起,达到某个设定阈值时触发LED亮起。这就是该电路的工作原理。


雨量传感器与Arduino的连接方法

现在我们完全了解了雨量传感器的工作原理,然后可以将所有需要的组件连接到Arduino UNO开发板上。这部分将分为两部分,一个显示模拟输出,另一个显示数字输出。


●  雨量传感器传感器的模拟输出连接

要使用传感器,我们需要先为传感器供电,因此使用Arduino UNO板的5V和GND引脚。模拟电路的连接图如下所示。

Rain-Detection-Sensor-with-Arduino.png


在上图中,显示了模拟部分的连接图。我们将LED连接到Arduino开发板的PWM引脚6,模拟输出引脚连接到Arduino的A0引脚。接地引脚在模块和传感器之间连接在一起,VCC取自 Arduino的5V引脚。我们将对Arduino进行编程,以便LED的亮度会根据传感器的雨量而变化。

Arduino-Rain-Sensor.jpg


●  雨量传感器传感器的数字输出连接

对于数字连接部分,我们还是使用Arduino的+5V和GND为传感器模块供电。

Interfacing-Rain-Sensor-with-Arduino.png


数字接口的连接方式非常简单,当我们在模块上洒水时,模块上的板载触发LED会亮起。

Rain-Sensor-Arduino-with-LED.jpg


有了这个,您现在可以将一些代码上传到Arduino UNO开发板,然后让雨量传感器工作。

跳转到指定楼层
风筝
发表于: 2022-3-30 16:01:20 | 显示全部楼层

雨量传感器的Arduino代码

Arduino使用雨量传感器代码非常简单易懂。我们只需从传感器中读取模拟数据,就可以估算出传感器表面的平均降雨量。这可以在模拟连接方式下轻松完成。当采用数字方式连接时,我们只需要设置电位器,就会得到一个数字输出。您只需查看传感器上的板载LED即可验证触发。


为了演示模拟方式的连接,我们将一个LED灯连接到Arduino的数字引脚6,根据传感器表面的水滴来改变LED的亮度。


首先在代码中声明两个宏,第一个是用于连接LED的引脚,第二个是用于读取传感器数据的引脚。

  1. // Sensor pins pin D6 LED output, pin A0 analog Input
  2. #define ledPin 6
  3. #define sensorPin A0
复制代码

接下来,在setup()函数中,使用9600波特初始化串口。同时将ledPin设置为输出,并将引脚设为低电平。

  1. void setup() {
  2.   Serial.begin(9600);
  3.   pinMode(ledPin, OUTPUT);
  4.   digitalWrite(ledPin, LOW);
  5. }
复制代码

loop()函数中,在串口监视器窗口上打印输出“Analog output:”,然后在Serial.println()函数中调用readSensor()函数,这样一旦readSensor()函数被执行,它返回数据并打印在串口监视器窗口上,

  1. void loop() {
  2.   Serial.print("Analog output: ");
  3.   Serial.println(readSensor());
  4.   delay(500);
  5. }
复制代码

最后,是自定义的readSensor()函数,它返回通过Arduino的A0 脚读取的模拟值。在该函数的第一行,我们声明并定义了变量sensorValue,将通过A0读取的原始数据放入该变量中。该数据为10位格式,范围为0-1023,以便将10位数据转换为 8 位数据。这就是我们使用 map 函数的原因,一旦 map 函数输出数据,我们就会启动另一个变量 outputValue 并将映射的数据放入该变量中。最后,使用了 Arduino 内置的analogWrite(ledPin, outputValue) 函数来生成PWM 信号,该信号与arduino的ADC读取的输入数据成正比。

  1. int readSensor() {
  2.   int sensorValue = analogRead(sensorPin);  // Read the analog value from sensor
  3.   int outputValue = map(sensorValue, 0, 1023, 255, 0); // map the 10-bit data to 8-bit data
  4.   analogWrite(ledPin, outputValue); // generate PWM signal
  5.   return outputValue;             // Return analog moisture value
  6. }
复制代码

以上就是Arudino使用雨量传感器的方法。如果您有任何疑问,请随时在下面发表回复。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 20:00 , Processed in 0.108573 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表