【基于Arduino自动水位指示器和控制器】

前言

在这里插入图片描述

在这个基于 Arduino 的自动水位指示器和控制器项目 中,我们将使用超声波传感器测量水位。超声波测距的基本原理是基于 ECHO。当声波在环境中传播时,它们在撞击任何障碍物后会以 ECHO 的形式返回原点。所以我们只需要计算它的两个声音的传播时间,即出射时间和撞击任何障碍物后返回原点的时间。经过一些计算,我们可以得到一个结果,那就是距离。这个概念用于我们的水控制器项目中,当水箱中的水位变低时,水泵会自动打开。

模块

Arduino UNO
超声波传感器模块
16x02 液晶
继电器
ULN2003
7806
PVT
铜线
9 伏电池或 12 伏适配器
连接线

超声波传感器模块

在这里插入图片描述

超声波传感器HC-SR04用于测量2cm-400cm范围内的距离,精度为3mm。传感器模块由超声波发射器、接收器和控制电路组成。

在这里插入图片描述


超声波传感器模块作用于声音的自然回声现象。发送一个脉冲约 10us 以触发模块。之后,模块会自动发送 8 个周期的 40 KHz 超声信号并检查其回波。撞击障碍物后的信号返回并被接收器捕获。因此,障碍物到传感器的距离可以通过给出的公式简单地计算为

        距离=(时间 x 速度)/2。

在这里,我们将速度和时间的乘积除以 2,因为时间是到达障碍物并返回的总时间。因此,到达障碍物的时间只是总时间的一半。

自动水位控制器的工作原理

这个项目的工作非常简单,我们使用了超声波传感器模块,它发送水箱中的声波并检测声波的反射,即 ECHO。首先我们需要通过Arduino触发超声波传感器模块发送信号,然后等待接收ECHO。Arduino 读取触发和接收 ECHO 之间的时间。我们知道声速约为 340 m/s。所以我们可以使用给定的公式计算距离:

距离=(行程时间/2)*声速

声速约为每秒 340 米。

通过使用这种方法,我们可以获得传感器到水面的距离。之后我们需要计算水位。

现在我们需要计算水箱的总长度。因为我们知道水箱的长度,所以我们可以通过从水箱的总长度中减去超声波产生的距离来计算水位。我们将得到水位距离。现在我们可以将这个水位转换为水的百分比,并可以在 LCD 上显示出来。

电路图及说明

如下面给出的水位控制器电路 所示,超声波传感器模块的“触发”和“回声”引脚直接连接到arduino的引脚10和11。16x2 LCD 以4 位模式与 arduino 连接。控制引脚RS、RW和En直接连接到arduino引脚7、GND和6。数据引脚D4-D7连接到arduino的5、4、3和2,蜂鸣器连接到引脚12。6伏继电器是还通过ULN2003连接到 arduino 的引脚 8,用于打开或关闭水泵。稳压器 7805 也用于为继电器和剩余电路提供 5 伏电压。

在这里插入图片描述


在该电路中,超声波传感器模块放置在桶(水箱)的顶部进行演示。该传感器模块将读取传感器模块与水面之间的距离,并在液晶显示屏上显示距离并显示“水箱中的水位为:”。这意味着我们在这里显示的是水的距离或体积的空白位置,而不是水位。由于这个功能,我们可以在任何水箱中使用这个系统。当空水位达到约 30 厘米时,Arduino 通过驱动继电器打开水泵。现在 LCD 会显示“LOW Water Level”“Motor turn on”,继电器状态 LED 会开始发光

现在,如果空的空间达到约 12 厘米的距离,arduino 将关闭继电器,LCD 将显示“油箱已满”“电机已关闭”。蜂鸣器也会发出一段时间的蜂鸣声,继电器状态 LED 将关闭。

编程

要为水位控制器编程 Arduino ,首先我们定义将在项目中用于连接外部设备(如继电器、LCD、蜂鸣器等)的所有引脚。

#define trigger 10
#define echo 11
#define motor 8
#define buzzer 12

然后我们初始化项目中使用的所有设备。

 lcd.begin(16,2);
 pinMode(trigger,OUTPUT);
 pinMode(echo,INPUT);
 pinMode(motor, OUTPUT);
 pinMode(buzzer, OUTPUT);
 lcd.print("  Water Level ");
 lcd.setCursor(0,1);
 lcd.print("   Indicator  ");
 delay(2000);

现在初始化超声波传感器模块,并使用pulseIn(pin)读取超声波或声音的发送和接收时间。然后使用适当的函数执行计算并在 16x2 LCD 上显示结果。

 digitalWrite(trigger,HIGH);
 delayMicroseconds(10);
 digitalWrite(trigger,LOW);
 delayMicroseconds(2);
 time=pulseIn(echo,HIGH);
 distance=time*340/20000;
 lcd.clear();
 lcd.print("Water Space In  ");
 lcd.setCursor(0,1);
 lcd.print("Tank is: ");
 lcd.print(distance);
 lcd.print("Cm");

之后,我们检查水箱是否已满或水位低,并采取相应措施。

 if(distance<12 && temp==0)
 {
     digitalWrite(motor, LOW);
     digitalWrite(buzzer, HIGH);
     lcd.clear();
     lcd.print("Water Tank Full ");
     lcd.setCursor(0,1);
     lcd.print("Motor Turned OFF");
     delay(2000);
     digitalWrite(buzzer, LOW);
     delay(3000);
     temp=1;
 }

  else if(distance<12 && temp==1)
 {
     digitalWrite(motor, LOW);
     lcd.clear();
     lcd.print("Water Tank Full ");
     lcd.setCursor(0,1);
     lcd.print("Motor Turned OFF");
     delay(5000);
 }

完整代码

已上传至个人主页。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340