0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于Arduino开发板和雨量传感器的雨水检测系统设计方案

基于Arduino开发板和雨量传感器的雨水检测系统设计方案

来源: elecfans
2020-11-17
类别:工业控制
eye 78
文章创建人 拍明

原标题:基于Arduino的雨水检测系统设计

  通过使用Arduino开发板和雨量传感器(Rain Sensor)连接,可以轻松制作一个简单的雨水检测系统(Rain Detection System)。传感器将检测到任何降雨,Arduino开发板将对其进行感应并执行所需的操作。这样的系统可用于许多不同的领域,例如农业和汽车领域。降雨检测可用于自动调节灌溉过程。而且,连续的降雨数据可以帮助农民使用该智能系统,仅在需要时才自动为作物浇水。同样,在汽车领域,通过使用雨水检测系统可以使雨刷器完全自动化。而且,家庭自动化系统还可以使用雨水检测功能自动关闭窗户并调节室温。在本篇文章中,我们将使用Arduino和蜂鸣器制作简单的雨量传感器。然后,您可以在该设置基础之上制作任何所需的内容。另外,请注意,雨量传感器模块根据使用情况也称为雨滴传感器、或雨水传感器,但本文中它们均指的是同一传感器,并且工作原理相同。

  所需的材料

  ● Arduino UNO开发板

  ● 雨量传感器

  ● 蜂鸣器

  ● 面包板

  ● 连接导线

  雨量传感器

  雨量检测模块由两个电路板组成,分别是雨量传感器电路板和控制板。

  雨量传感器电路板模块(Rain Sensor)由两个铜线组成,其设计方式使得它们在干燥条件下可为电源电压提供高电阻,并且该模块的输出电压为5V。随着电路板上湿度的增加,该模块的电阻逐渐减小。随着电阻的降低,其输出电压也会相对于模块上的湿度降低。雨量传感器电路板模块由两个用于连接到控制板的引脚组成,如下所示。

  

image.png


  控制板模块控制灵敏度并将模拟输出转换为数字输出。如果模拟值低于控制板的阈值,则输出为低电平;如果模拟值高于阈值,则输出为数字高电平。为了进行比较和转换,使用了LM393运算放大器比较器。运算放大器比较器是一个有趣的电路,可以用来比较两个不同的电压值。

  如下所示,雨量控制模块由4个用于连接Arduino的引脚组成,即VCC、GND、D0、A0,另外两个引脚用于连接雨量传感器电路板模块。总之,雨量传感器电路板模块检测雨水,控制板模块用于控制灵敏度,并将模拟值转换为数字值。

  1.jpg

  雨量传感器的工作原理

  雨量传感器模块的工作原理很容易理解。在晴天期间,由于模块干燥,因此对电源电压具有很高的电阻。该电压在模块的输出引脚上为5V。如果由Arduino的模拟引脚读取,则此5V读取为1023。在下雨期间,雨水会导致雨量传感器模块电路板的湿度增加,进而导致电阻减小。随着电阻逐渐减小,输出电压开始减小。

  当雨量传感器模块完全湿透并且其提供的电阻最小时,输出电压将尽可能低(约0)。如果由Arduino的模拟引脚读取,则此0V将读取为0值。如果模块部分潮湿,则该雨板模块的输出将取决于其提供的电阻。如果通过防雨板模块提供的电阻的输出为3V,则读取的模拟值将为613。可以通过以下公式得出查找ADC的公式:ADC =(模拟电压值X 1023)/ 5。通过使用此公式,您可以将任何模拟电压转换为Arduino模拟读取值。

  电路图

  下面的电路图显示了Arduino与雨量传感器的电路连接。

  

image.png


  电路图中所示的雨量传感器模块连接至控制板。控制板的VCC引脚连接到5V电源。接地引脚接地。如果需要,可以将D0引脚连接到Arduino的任何数字引脚,并且该引脚必须在程序中声明为输入引脚。 由于D0引脚输出的是高低电平信号,因此我们无法获得D0引脚确切的输出电压值。如果输出引脚超过阈值电压,则控制模块可以监测输出的变化。即使雨量传感器模块中的输出电压发生一点变化,我们也需要操作蜂鸣器。由于这些原因,我们使用A0引脚,并将其连接到Arduino的模拟引脚,这使得监视输出变化变得容易。蜂鸣器可以连接到Arduino的任意数字引脚。如果蜂鸣器需要5V以上的电压,则尝试使用继电器电路或晶体管

  代码说明

  雨量传感器的Arduino代码是使用Arduino IDE编写的。该项目的完整代码在本文末尾给出。

  #define rainfall A0

  #define buzzer 5

  int value;

  int set=10;

  将引脚A0定义为rainfall,将引脚5定义为buzzer,并将变量“value”和“set”声明为整数,并将其变量set值设置为10。可以根据实际情况更改此值。如果您希望即使下雨很小也能启动蜂鸣器,将变量值设置为最小值。

  void setup() {

  Serial.begin(9600);

  pinMode(buzzer,OUTPUT);

  pinMode(rainfall,INPUT);

  }

  初始化串口通讯,并将蜂鸣器设置为输出引脚,将rainfall引脚设置为输入引脚。

  void loop() {

  value = analogRead(rainfall);

  Serial.println(value);

  value = map(value,0,1023,225,0);

  在loop函数中,函数analogRead读取雨量传感器的值。Serial.println(value)在串口监视器上打印该值,这在调试时很有帮助。map函数映射输出引脚上的雨量传感器的值,并为变量分配一个值,范围为0到225。

  if(value>=set){

  Serial.println("rain detected");

  digitalWrite(buzzer,HIGH);

  如果读取的传感器值大于set值,则程序进入循环,在串口监视器上打印消息并打开蜂鸣器

  else{

  digitalWrite(buzzer, LOW);

  仅当该值小于set值时,程序才进入else功能。当设定值大于传感器的值时,将关闭蜂鸣器,表明没有雨。

  基于Arduino的雨水检测系统的工作

  该系统的工作方式是:在下雨时,雨水充当触发器,从而触发蜂鸣器。在雨滴传感器的Arduino代码中,我们定义了引脚5是蜂鸣器和A0是雨滴传感器引脚。

  

image.png


  这是雨量传感器的众多应用场景中的一种,在雨刷、其他家庭自动化、农业部门等中也会看到相同的原理。希望您理解该项目并喜欢进行制作。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案