Arduino结课作品 — 水位的检测及自动排水装置

设计目的

​ 近年来水库和蓄水池的大量兴建,蓄水量的控制在所有水库和蓄水池中显得尤为重要。其实,生活中电热水器的大量运用,对此类设计也有一定的需求。通过设计此套设备能很好的实现对水量的实时监控,超过限定水量也可通过水泵排出降险。

设计思路

​ 根据Arduino配件电子设备中拥有的:4位数码管/水位传感器设备产生了实现对水位的实时监控并将将监控结果实时显现于4位数码管上的思路。由于电子继电器的存在让我萌生了通过控制水泵实现对超出警戒数位的水进行排水降险的思路,通过购买水泵模块最终实现整套设备的搭建以及测试。

总体电路设计

电路设计的整体思路

采用的模块介绍

4位数码管

本次采用的4位数码管非传统数码管,而是采用了内置显示驱动模块的TM1637模块,因此仅有4个针脚(2个正负极,2个通讯针脚)。如图

四位数码管证明

四位数码管背面

继电器+水泵

​ 继电器可以自动、遥控、监测:例如,自动装置上的继电器与其他电器一起,可以组成程序控制线路,从而实现自动化运行,由于此套设备中水泵仅需5v电压即可使用,而且Arduino板的控制脚位并不能提供5v的供电,因此继电器在此处的功能为控制水泵开启和关闭。图片如下:

继电器与水泵

继电器接线

VCC/GND同上,IN脚用于Arduino控制继电器的通断。继电器的另外一边Com为控制端,NC为常开端。

水位传感器

​ 顾名思义检测水位大小并返回数据的传感器,+/-极的功能同VCC/GND,S脚的功能为向Arduino板传输水位数据。如图:

水位传感器

系统调试及结果展示

(A)调试中主要出现以下几个问题,但下面讲述本次实验遇到问题及解决方案:

1) 继电器的使用错误:常开端与常闭端的认识错误,接错方向导致水泵无法正常控制。

2) TM1637模块需要3.3v电压,刚开始仅提供5v电压并不能正常工作,后提供5v电压解决。

3) 继电器需要5v电压,出现错误现象及解决方案如上

(B)实验代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "TM1637.h"
#define CLK 3
#define DIO 2
int start = 0;
int incomedate = 0;
int relayPin = A0;
double temp,data;
TM1637 tm1637(CLK,DIO);
void setup() {
pinMode(relayPin, OUTPUT);
Serial.begin(9600);
tm1637.init();
tm1637.point(0);
tm1637.set(BRIGHT_TYPICAL);
}
void loop() {
temp=(long)analogRead(A1);
if(temp > 680){
digitalWrite(relayPin, HIGH);
}else{
digitalWrite(relayPin, LOW);
}
Serial.println(temp);
int num = temp;
start++;
if(start == 10){
tm1637.display(1,num / 100);
tm1637.display(2,num / 10 % 10);
tm1637.display(3,num % 10);
start = 0;
}
}
//红色字体为本套设备两个需要注意的点,解释如下:
//设置显示屏延时显示的时间为10ms
//设置水位警戒线为680.

演示视频:

总结

利用这门课学到的东西搭建的此套解决方案,本课程给我带来的感受最大的事提升个人的动手能力,的确没有自行动手很难感受到这门课的乐趣,这次实验也是,从实验开始的思路设计到后面的电路插线,代码设计,到后面的各项参数的调整,带来了无穷的乐趣。若有纰漏烦请指出~


Arduino结课作品 — 水位的检测及自动排水装置
http://blask.cn/2020/01/20/arduino结课/
作者
Wayne Li
发布于
2020年1月20日
许可协议