当前位置:网站首页>【水位传感器与 Arduino 连接测量水位】
【水位传感器与 Arduino 连接测量水位】
2022-08-02 03:28:00 【WENJIE科技】
水位传感器与 Arduino 连接测量水位
前言
水箱溢出是导致水浪费的常见问题,令人惊讶的是,许多家庭甚至不考虑它。虽然有很多解决方案,比如球阀,当达到一定水位时会自动切断水流,但作为电子工程师,我更喜欢包含传感器和自动化的解决方案。因此,在本教程中,我们将使用 Arduino 连接水位传感器来测量水位,在此过程中,我们将让您了解有关此传感器及其工作的详细信息。
水位传感器引脚
水位传感器模块的工作原理与雨量传感器非常相似。
水位传感器有 3 个引脚,使用 5V 电源运行,并以模拟格式输出数据。水位传感器的引脚分配如下:VCC ==》 是雨水检测传感器的电源引脚,可连接到 5V 电源。
GND==》是电路板的接地引脚,它应该连接到 Arduino 的接地引脚。
OUT==》是电路板的模拟输出引脚,它将在 VCC 和地之间为我们提供模拟信号。
水位传感器如何工作?
水位传感器的工作非常简单易懂。PCB由长导电板制成。当水达到一定水平时,两个板之间的电导率会发生变化,通过测量变化,我们可以测量水位。
上面的 Gif 显示了水位传感器的工作情况。正如您所看到的,当水滴落入玻璃时,水位上升,输出引脚上的电压也上升。这种现象与输出电压成正比。发生这种情况是因为 PCB 上的传感器部分由 10 个导电板制成,其中 5 个是电源轨道,另外 5 个是传感器轨道。
水位传感器模块组成
该传感器非常简单,因此可以用很少的零件制成。该传感器产生水位并以模拟格式输出数据。传感器的零件标记如下所示。传感器模块有三个引脚,其中两个是电源引脚,需要连接到 Arduino 的 5V 和接地引脚。正如您在上图中看到的,该模块有一个电源 LED,当电路板通电时会打开,除此之外,我们还有一个晶体管和一堆电阻器,它们共同构成了水位传感器模块。
关于水位传感器模块的常见问题
水位传感器有哪些类型?
商用水位指示器有六种基本类型:电阻式、电容式、超声波式、频率式、导波 GWR 和压力传感器。这些常用指标中的每一个都有好处,也都有其缺点。
液位传感器有什么用途?
水位传感器检测液体和其他流体以及流化固体的液位,包括具有上部自由表面的浆料、粒状材料和粉末。
家里可以做水位计吗?
如果您可以积累所有基本用品,例如 LED、蜂鸣器和感应线。那么构建一个基本的水位指示器就不难了。
超声波传感器可以检测水位吗?
使用超声波传感器,我们可以通过查找收发器与水面之间的距离来计算水深。传感器将发射一个短超声波脉冲,我们可以测量该脉冲(回波)到液体和返回的传播时间。
水位传感器模块电路图
水位传感器的示意图如下所示,您可以看到它很容易理解。在原理图中,晶体管的集电极连接到 5V 的电源电压,发射极通过一个 100 欧姆的电阻接地。在模块中,一组5个导电板与vcc串联一个100欧姆的电阻,另外5组连接到NPN晶体管的基极。现在,当水接触到这些导电上颚时,电流开始从 5V 电源流向晶体管的基极,晶体管就会开启。传感器浸入的越深,它产生的输出电压就越大。
Arduino水位传感器电路 - 连接图
现在我们完全了解了水位传感器的工作原理,我们可以将所有需要的电线连接到 Arduino UNO 板,在本文的这一部分,我们将讨论这一点!
在上图中,显示了水位传感器与 Arduino 的连接图。我们已经将一个 LED 连接到 Arduino 板的 PWM 引脚 6,传感器的模拟输出引脚连接到 A0 引脚。模块和 LED 之间的接地引脚是通用的,VCC 取自 Arduino 的 5V 引脚。我们将对 Arduino 进行编程,以便 LED 的亮度将根据传感器感应到的水位而变化。
Arduino 代码
Arduino水位传感器代码解释如下。代码非常简单易懂。我们只需要从传感器中读取模拟数据,我们就可以用 Arduino 的 ADC 来近似平均水位
我们通过声明两个宏来初始化我们的代码,第一个是用于 LED,我们将在其中连接一个 LED,第二个是sensorPin,我们通过它读取来自传感器的数据。
// Sensor pins pin D6 LED output, pin A0 analog Input
#define ledPin 6
#define sensorPin A0
接下来,我们有我们的setup()函数。在 setup 函数中,我们用 9600 波特初始化串口。我们还将ledPin设置为输出,并将引脚设为低电平。这样,引脚将不会浮动并打开 LED。
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
接下来,我们有我们的循环功能;在循环函数中,我们读取传感器引脚并将其存储在名为sensorValue 的局部变量中。 然后,我们定义了一个if条件,我们检查来自传感器的输入值是否大于 570,如果是,我们在 Arduino 的内置映射函数的帮助下映射该值,最后,我们生成 PWM 信号在analogWrite函数的帮助下,最终的serial.print函数用于调试。
void loop() {
int sensorValue = analogRead(sensorPin);
if (sensorValue > 570) {
int outputValue = map(sensorValue, 570, 800, 0, 255);
Serial.println(outputValue);
analogWrite(ledPin, outputValue); // generate PWM signal
}
}
Arduino水位传感器的工作
下面的GIF显示了水位传感器的工作。起初,您可以看到面包板上的 LED 是关闭的,但是当我们在玻璃上放一些水时,LED 的亮度开始增加,当玻璃中的水充满时,LED 会以最大亮度发光。
我们在使用该传感器时遇到的一个问题是该传感器的底部非常敏感,而顶部则不那么敏感。如果水位越过底部,灵敏度几乎达到最大值并饱和。
边栏推荐
猜你喜欢
随机推荐
Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读
Selenium-WebDriverApi接口
【萌新解题】斐波那契数列
ReentrantLock的使用和原理详解
解决flex布局warp自动换行下最后一行居中问题
Scala,Spark依赖jar包冲突解决方法
关于我的项目-微信公众号~
laravel-admin 列表图片点击放大
laravel 查询数据库获取结果如何判断是否为空?
修复APP的BUG,热修复的知识点和大厂的相关资料汇总
centos8 安装搭建php环境
Laravel随笔记录
属性动画的使用和原理解析
Visual Studio2022创建setup项目
uniapp发布到微信小程序:分包、删减代码全过程
Go Build报错汇总(持续更新)
【一句话攻略】彻底理解JS中的回调(Callback)函数
Mysql创建索引
关于我的专利、软著~
无源域适应(SFDA)方向的领域探究和论文复现(第一部分)