在本篇文章中,您将了解使用Arduino进行液位检测。首先,您将看到有关水位传感器的一些信息,然后您将学习如何使用此模块和一些实际示例。
什么是液位检测?
液位检测或换句话说,测量深水箱中的液体水平或水库中的水是为了控制水的深度并防止其在工业中溢出。在家庭应用中,它也可用于例如检测水箱内的水位。液位测量的目的是确定任何时刻的液位并相应地进行所需的操作。
有不同的方法来测量液位。一些传感器根据液体比重和到表面的垂直距离引起的压力来计算液体的深度。其他一些传感器从换能器发射超声波,该换能器还检测并测量反射波以计算液体深度。
我们在本篇文章中使用的传感器与Arduino兼容,并且在电阻测量的基础上工作,您很快就会发现它是如何工作的。
water-level-module.jpg (43.19 KB, 下载次数: 4)
2019-8-18 21:39 上传
所需的材料
● Arduino UNO R3开发板
● 水位传感器
● 跳线
● 蜂鸣器
● Arduino IDE
water-level-required-material.jpg (75.53 KB, 下载次数: 2)
2019-8-18 21:40 上传
水位传感器如何工作
water-level-pins.jpg (30.93 KB, 下载次数: 2)
2019-8-18 21:41 上传
该模块是用于检测液位的最广泛使用的模块之一,其基于电阻变化而工作。在这个模块上,有平行的导电线连接到地面,实际上是电流的路径。水是良导体,因此当这些线在水中时,它们会短路,并且模块的电阻会降低。
通过将模块固定在液体容器上,可变电阻基于水位设定在特定值上。该模块测量该模拟电阻并将其发送到Arduino。 Arduino直接使用此值或将此值转换为数字量。
该水位传感器有3个引脚。其中电源(+),连接到+ 5V,接地( - )连接到Arduino的接地端子。另一个引脚(S)是模拟输出引脚。
water-level-pinout.compressed.jpg (48.94 KB, 下载次数: 1)
2019-8-18 21:42 上传
水位传感器与Arduino开发板的连接
您不需要任何专用的库来使用此传感器。只需读取输出引脚的模拟值并相应地计算液位。
电路
water-level-circuit-0.jpg (45.09 KB, 下载次数: 1)
2019-8-18 21:43 上传
代码
在Arduino板上上传以下代码并打开串行监视器窗口。将传感器放入水中,您可以在串行监视器窗口中查看结果。
/* Water level sensor
* by Hanie Kiani
* https://electropeak.com/learn/
*/
const int analogInPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(analogInPin);
Serial.print("Sensor = " );
Serial.print(sensorValue*100/1024);
Serial.println("%");
delay(1000);
}
water-level-serial-plotter.png (13.36 KB, 下载次数: 1)
2019-8-18 21:44 上传
将液位传感器用作雨量探测器
您还可以使用水位传感器通过蜂鸣器检测雨水。 要检测是否正在下雨,请将传感器水平放置,使雨滴落在传感器上并增加针脚S的值。
当传感器开始变湿时,蜂鸣器每隔几秒就会开始发出哔哔声。 当模块完全变湿时,蜂鸣器发出更大声的警告并继续发出连续的哔哔声。
电路连接
water-level-circuit-1-1.jpg (54.59 KB, 下载次数: 2)
2019-8-18 21:45 上传
代码
/*
* Rain Detector with Water level sensor
* by Hanie kiani
* https://electropeak.com/learn/
*/
const int sensorMin = 0; // sensor minimum
const int sensorMax = 1024; // sensor maximum
const int buzzer = 9;
void setup() {
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
}
void loop() {
int sensorReading = analogRead(A0);
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
// range value:
switch (range) {
case 0: // Sensor is wet
Serial.println("ٌWet!");
tone(buzzer, 5000);
break;
case 1: // Sensor getting wet
Serial.println(" Warning");
tone(buzzer, 1000 , 5);
break;
case 2: // Sensor dry
Serial.println("Dry");
noTone(buzzer);
break;
}
delay(10); // delay between reads
}
map()函数将传感器范围0到1024分为3个部分。
tone()函数在蜂鸣器引脚上发送PWM信号,使蜂鸣器发出声音。
tone(buzzer, 5000);
第一个参数指定输出引脚,第二个参数确定PWM频率。 它还可以有第三个参数代表信号持续时间。
以上就是本篇文章的全部内容。您可以尝试将SMS模块(如Sim800模块)与雨量探测器一起使用,以便通过手机上的信息通知您下雨。如有问题,请随时在本帖下面进行回复。