基于Arduino的水质监测系统毕业设计
0 前言
🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 毕业设计 Arduino水质监测系统
🥇学长这里给一个题目综合评分(每项满分5分)
🧿 选题指导, 项目分享:
https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md
1 简介
TDS(Total Dissolved Solids,中文名:总溶解固体,又称溶解性固体总量)表示一升水中溶解了多少毫克溶解性固体。一般来说,TDS值越高,表示水中溶解的可溶性固体越多,水就越不洁净。因此,TDS值可以作为反映水质洁净程度的一个参考值。可应用于生活用水、水培等水质检测监测领域。
因此,在本项目中,我们将Gravity模拟式TDS传感器与Arduino开发板连接,并在LCD上显示读取的值。因为TDS取决于温度,因此还将添加DS18B20温度传感器来测量水温。测得的温度与 TDS传感器一起使用,以高校准和高精度补偿读数。
2 主要器件
Arduino UNO开发板
DfRobot Gravity模拟式TDS传感器
DS18B20温度传感器
1602 LCD显示屏
10K电位器
连接跳线
面包板
3 实现效果
4 实现原理
什么是TDS?
TDS是Total Dissolved Solids的首字母缩写,包括分子、离子或微粒悬浮形式的有机和无机物质。TDS通常以百万分之几 (ppm) 或毫克每升 (mg/L) 表示。TDS与水的质量直接相关,即TDS数值越低,水越纯净。例如,反渗透纯净水的TDS介于0到10之间,而自来水的TDS介于20到300之间,具体取决于您居住在哪个地方。
构成水中溶解固体的物质包括矿物质、盐类、阴离子和阳离子物质等物质。它们还可能包括重金属等污染物,以及可能泄漏到供水系统中的有机物质等其他物质。
什么是TDS计以及它是如何工作的?
TDS仪表实际上是一种电荷 (EC) 仪表,其中两个等间距的电极插入水中并用于测量电荷。结果由TDS计测量并转换为ppm数字。
如果水不含可溶性物质并且是纯净的,则它不会进行充电,因此将具有0 ppm的数值。相反,如果水中充满溶解物质,它将进行充电,得到的ppm数字与溶解固体的数量成正比。这是因为所有溶解的固体都带有电荷,这允许电荷在电极之间传导。
TDS计可以用来做什么?
除了测量我们饮用水的TDS值外,TDS计还可用于测量:
-
鱼缸和水族箱:鱼类需要与它们生活的自然环境相似的特定TDS和pH值。淡水鱼需要少于400ppm,其他一些淡水鱼需要更少。咸水鱼需要5000到50000 ppm之间的TDS值。
-
水培:TDS计是快速测量水培溶液的营养浓度的有用辅助工具。
-
游泳池和水疗中心:低TDS值有助于防止维护问题、皮肤刺激和藻华。
-
胶体银:现在有许多胶体银消费者使用TDS计来测量他们的胶体银浓度,以百万分之几 (ppm) 为单位。TDS计给出了相对准确的测量结果。
5 硬件说明
Gravity模拟TDS传感器
Gravity模拟TDS传感器是一款兼容Arduino的TDS传感器套件,用于测量水的TDS值。可应用于生活用水、水培等水质检测领域。本模块支持3.35.5V宽电压输入,02.3V模拟电压输出,兼容5V或3.3V控制系统或板卡。
激励源为交流信号,可有效防止探头极化,延长探头寿命,同时有助于提高输出信号的稳定性。TDS探头防水,可浸入水中长时间测量。
主要的规格参数
-
输入电压:3.3~5.5V
-
输出电压:0~2.3V
-
工作电流:3~6mA
-
TDS测量范围:0~1000ppm
-
TDS测量精度:±10%FS(25℃)
-
TDS探针引脚数:2
使用过程中的注意事项
探头不能在55摄氏度以上的水中使用。
探头不能太靠近容器边缘,否则会影响读数。
探头的头部和电缆是防水的,但连接器和信号发射板不防水。
Gravity模拟TDS传感器与Arduino的硬件连接
现在让我们学习如何将TDS传感器与Arduino开发板连接。电路图如下所示。
Gravity模拟TDS传感器与Arduino的连接相当简单。将传感器的VCC和GND引脚分别连接到Arduino的5V和GND。将其模拟引脚连接到Arduino的任意模拟引脚。本文使用了Arduino的模拟引脚A1。
只需将TDS探头放入水中并检查串口监视器中的读数。
Gravity模拟TDS传感器与Arduino和LCD显示屏的硬件连接
现在让我们在原来的电路基础上添加一个LCD显示屏。我们将在LCD显示屏上显示TDS值。 电路图如下所示。
按照图纸连接完成所有的组件,然后将代码上传到Arduino开发板,上传代码后,就可以测量水的TDS值,然后在LCD显示屏中显示。
带温度补偿的Arduino TDS计
上述两个代码仅在水温为25摄氏度时有效。如果温度升高或降低,则读数将是错误的,因为电导率会随温度而变化。
因此,为了解决这个问题,我们需要在代码中包含温度系数。该传感器没有带任何温度传感器,所以需要添加一个外部温度传感器。DS18B20防水温度传感器是一个合适的选择,因为它具有简单的接口和高精度。电路图如下所示。
将DS18B20温度传感器的输出引脚连接到Arduino开发板的数字引脚7。如上图所示,通过4.7K电阻将输出引脚连接至5V电源。
上传代码后,我们就可以读取TDS的精确值以及温度值。以下是两个传感器都放在空气中时的读数。
当我们向水中添加一些可溶性离子溶质如盐时,溶液的电导率增加,这样可以获得更高的TDS值。 在下图中,添加了2勺盐并搅拌,可以看到TDS的值立即增加。
6 部分核心代码
以下是将TDS传感器与Arduino连接的简单代码。在编译之前需要安装一个Gravity模拟TDS传感器库文件。
#include <EEPROM.h>
#include "GravityTDS.h"
#define TdsSensorPin A1
GravityTDS gravityTds;
float temperature = 25,tdsValue = 0;
void setup()
{
Serial.begin(115200);
gravityTds.setPin(TdsSensorPin);
gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO
gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC
gravityTds.begin(); //initialization
}
void loop()
{
//temperature = readTemperature(); //add your temperature sensor and read it
gravityTds.setTemperature(temperature); // set the temperature and execute temperature compensation
gravityTds.update(); //sample and calculate
tdsValue = gravityTds.getTdsValue(); // then get the value
Serial.print(tdsValue,0);
Serial.println("ppm");
delay(1000);
}