在本篇文章中,我们将学习如何使用Arduino开发板连接Gravity模拟TDS传感器并设计一个简单的TDS计。
概述 TDS(Total Dissolved Solids,中文名:总溶解固体,又称溶解性固体总量)表示一升水中溶解了多少毫克溶解性固体。一般来说,TDS值越高,表示水中溶解的可溶性固体越多,水就越不洁净。因此,TDS值可以作为反映水质洁净程度的一个参考值。可应用于生活用水、水培等水质检测监测领域。
因此,在本文中,我们将Gravity模拟式TDS传感器与Arduino开发板连接,并在LCD上显示读取的值。因为TDS取决于温度,因此还将添加DS18B20温度传感器来测量水温。测得的温度与 TDS传感器一起使用,以高校准和高精度补偿读数。
所需的组件 ● Arduino UNO开发板 ● DfRobot Gravity模拟式TDS传感器 ● DS18B20温度传感器 ● 1602 LCD显示屏 ● 10K电位器 ● 连接跳线 ● 面包板
什么是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计还可用于测量: 1. 鱼缸和水族箱 鱼类需要与它们生活的自然环境相似的特定TDS和pH值。淡水鱼需要少于400ppm,其他一些淡水鱼需要更少。咸水鱼需要5000到50000 ppm之间的TDS值。 2. 水培 TDS计是快速测量水培溶液的营养浓度的有用辅助工具。 3. 游泳池和水疗中心 低TDS值有助于防止维护问题、皮肤刺激和藻华。 4. 胶体银 现在有许多胶体银消费者使用TDS计来测量他们的胶体银浓度,以百万分之几 (ppm) 为单位。TDS计给出了相对准确的测量结果。
Gravity模拟TDS传感器 Gravity模拟TDS传感器是一款兼容Arduino的TDS传感器套件,用于测量水的TDS值。可应用于生活用水、水培等水质检测领域。本模块支持3.3~5.5V宽电压输入,0~2.3V模拟电压输出,兼容5V或3.3V控制系统或板卡。
激励源为交流信号,可有效防止探头极化,延长探头寿命,同时有助于提高输出信号的稳定性。TDS探头防水,可浸入水中长时间测量。
主要的规格参数 1. 输入电压:3.3~5.5V 2. 输出电压:0~2.3V 3. 工作电流:3~6mA 4. TDS测量范围:0~1000ppm 5. TDS测量精度:±10%FS(25℃) 6. TDS探针引脚数:2
使用过程中的注意事项 探头不能在55摄氏度以上的水中使用。 探头不能太靠近容器边缘,否则会影响读数。 探头的头部和电缆是防水的,但连接器和信号发射板不防水。
Gravity模拟TDS传感器与Arduino的硬件连接 现在让我们学习如何将TDS传感器与Arduino开发板连接。电路图如下所示。
Gravity模拟TDS传感器与Arduino的连接相当简单。将传感器的VCC和GND引脚分别连接到Arduino的5V和GND。将其模拟引脚连接到Arduino的任意模拟引脚。本文使用了Arduino的模拟引脚A1。
代码 以下是将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);
- }
复制代码
上传代码后,您只需将TDS探头放入水中并检查串口监视器中的读数。
Gravity模拟TDS传感器与Arduino和LCD显示屏的硬件连接 现在让我们在原来的电路基础上添加一个LCD显示屏。我们将在LCD显示屏上显示TDS值。 电路图如下所示。
按照图纸连接完成所有的组件,然后将下面的代码上传到Arduino开发板:
tds sensor and lcd.rar
(596 Bytes, 下载次数: 18)
上传代码后,您现在可以测量水的TDS值,然后在LCD显示屏中显示。
带温度补偿的Arduino TDS计 上述两个代码仅在水温为25摄氏度时有效。如果温度升高或降低,则读数将是错误的,因为电导率会随温度而变化。
因此,为了解决这个问题,我们需要在代码中包含温度系数。该传感器没有带任何温度传感器,所以需要添加一个外部温度传感器。DS18B20防水温度传感器是一个合适的选择,因为它具有简单的接口和高精度。电路图如下所示。
将DS18B20温度传感器的输出引脚连接到Arduino开发板的数字引脚7。如上图所示,通过4.7K电阻将输出引脚连接至5V电源。
以下是带有温度补偿的TDS传感器的源代码:
tds 18b20.rar
(655 Bytes, 下载次数: 23)
该代码需要两个额外的库,从下面下载库并将其添加到Arduino IDE的库文件夹中:OneWire库和Dallas库。
现在,上传代码后,我们就可以读取TDS的精确值以及温度值。以下是两个传感器都放在空气中时的读数。
当我们向水中添加一些可溶性离子溶质如盐时,溶液的电导率增加,这样可以获得更高的TDS值。 在下图中,添加了2勺盐并搅拌,可以看到TDS的值立即增加。
以上就是使用Arduino开发板连接Gravity模拟TDS传感器并设计TDS计的全部内容。如果有任何疑问,请随时在本帖下面回复。
|