风筝
发表于: 2019-8-18 21:52:50 | 显示全部楼层

在本篇文章中,您将了解使用Arduino进行液位检测。首先,您将看到有关水位传感器的一些信息,然后您将学习如何使用此模块和一些实际示例。


什么是液位检测?

液位检测或换句话说,测量深水箱中的液体水平或水库中的水是为了控制水的深度并防止其在工业中溢出。在家庭应用中,它也可用于例如检测水箱内的水位。液位测量的目的是确定任何时刻的液位并相应地进行所需的操作。


有不同的方法来测量液位。一些传感器根据液体比重和到表面的垂直距离引起的压力来计算液体的深度。其他一些传感器从换能器发射超声波,该换能器还检测并测量反射波以计算液体深度。


我们在本篇文章中使用的传感器与Arduino兼容,并且在电阻测量的基础上工作,您很快就会发现它是如何工作的。

water-level-module.jpg


所需的材料

●    Arduino UNO R3开发板

●    水位传感器

●    跳线

●    蜂鸣器

●    Arduino IDE

water-level-required-material.jpg


水位传感器如何工作

water-level-pins.jpg

该模块是用于检测液位的最广泛使用的模块之一,其基于电阻变化而工作。在这个模块上,有平行的导电线连接到地面,实际上是电流的路径。水是良导体,因此当这些线在水中时,它们会短路,并且模块的电阻会降低。


通过将模块固定在液体容器上,可变电阻基于水位设定在特定值上。该模块测量该模拟电阻并将其发送到Arduino。 Arduino直接使用此值或将此值转换为数字量。


该水位传感器有3个引脚。其中电源(+),连接到+ 5V,接地( - )连接到Arduino的接地端子。另一个引脚(S)是模拟输出引脚。

water-level-pinout.compressed.jpg


水位传感器与Arduino开发板的连接

您不需要任何专用的库来使用此传感器。只需读取输出引脚的模拟值并相应地计算液位。


电路

water-level-circuit-0.jpg


代码

在Arduino板上上传以下代码并打开串行监视器窗口。将传感器放入水中,您可以在串行监视器窗口中查看结果。

  1. /* Water level sensor
  2. *  by Hanie Kiani
  3. *  https://electropeak.com/learn/   
  4. */
  5. const int analogInPin = A0;
  6. int sensorValue = 0;

  7. void setup() {
  8. Serial.begin(9600);
  9. }

  10. void loop() {
  11. sensorValue = analogRead(analogInPin);
  12. Serial.print("Sensor = " );
  13. Serial.print(sensorValue*100/1024);
  14. Serial.println("%");
  15. delay(1000);
  16. }
复制代码

water-level-serial-plotter.png


将液位传感器用作雨量探测器

您还可以使用水位传感器通过蜂鸣器检测雨水。 要检测是否正在下雨,请将传感器水平放置,使雨滴落在传感器上并增加针脚S的值。


当传感器开始变湿时,蜂鸣器每隔几秒就会开始发出哔哔声。 当模块完全变湿时,蜂鸣器发出更大声的警告并继续发出连续的哔哔声。


电路连接

water-level-circuit-1-1.jpg


代码

  1. /*
  2.    * Rain Detector with Water level sensor
  3. *  by Hanie kiani
  4. *  https://electropeak.com/learn/   
  5. */
  6. const int sensorMin = 0;     // sensor minimum
  7. const int sensorMax = 1024;  // sensor maximum
  8. const int buzzer = 9;
  9. void setup() {
  10.   Serial.begin(9600);  
  11.   pinMode(buzzer, OUTPUT);
  12. }
  13. void loop() {
  14. int sensorReading = analogRead(A0);
  15. int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
  16.   // range value:
  17.   switch (range) {
  18. case 0:    // Sensor is wet
  19.     Serial.println("ٌWet!");
  20.     tone(buzzer, 5000);
  21.     break;
  22. case 1:    // Sensor getting wet
  23.     Serial.println(" Warning");
  24.      tone(buzzer, 1000 , 5);
  25.     break;
  26. case 2:    // Sensor dry
  27.     Serial.println("Dry");
  28.     noTone(buzzer);  
  29.     break;
  30.   }
  31.   delay(10);  // delay between reads
  32. }
复制代码

map()函数将传感器范围0到1024分为3个部分。

tone()函数在蜂鸣器引脚上发送PWM信号,使蜂鸣器发出声音。

  1. tone(buzzer, 5000);
复制代码

第一个参数指定输出引脚,第二个参数确定PWM频率。 它还可以有第三个参数代表信号持续时间。


以上就是本篇文章的全部内容。您可以尝试将SMS模块(如Sim800模块)与雨量探测器一起使用,以便通过手机上的信息通知您下雨。如有问题,请随时在本帖下面进行回复。

water-level-circuit-1-1.jpg
跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 16:12 , Processed in 0.051144 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

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

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