一板网电子技术论坛

风筝
发表于: 2022-4-24 17:53:44 | 显示全部楼层

在本篇文章中,我们将学习如何使用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-Reading.jpg


构成水中溶解固体的物质包括矿物质、盐类、阴离子和阳离子物质等物质。它们还可能包括重金属等污染物,以及可能泄漏到供水系统中的有机物质等其他物质。


什么是TDS计以及它是如何工作的?

TDS仪表实际上是一种电荷 (EC) 仪表,其中两个等间距的电极插入水中并用于测量电荷。结果由TDS计测量并转换为ppm数字。

TDS-Sensor-Working.jpg


如果水不含可溶性物质并且是纯净的,则它不会进行充电,因此将具有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-Sensor.jpg


激励源为交流信号,可有效防止探头极化,延长探头寿命,同时有助于提高输出信号的稳定性。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开发板连接。电路图如下所示。

Interfacing-Gravity-Analog-TDS-Sensor-with-Arduino.jpg


Gravity模拟TDS传感器与Arduino的连接相当简单。将传感器的VCC和GND引脚分别连接到Arduino的5V和GND。将其模拟引脚连接到Arduino的任意模拟引脚。本文使用了Arduino的模拟引脚A1。

Gravity-Analog-TDS-Sensor-Arduino.jpg


代码

以下是将TDS传感器与Arduino连接的简单代码。在编译之前需要安装一个Gravity模拟TDS传感器库文件

  1. #include <EEPROM.h>
  2. #include "GravityTDS.h"

  3. #define TdsSensorPin A1
  4. GravityTDS gravityTds;

  5. float temperature = 25,tdsValue = 0;

  6. void setup()
  7. {
  8.     Serial.begin(115200);
  9.     gravityTds.setPin(TdsSensorPin);
  10.     gravityTds.setAref(5.0);  //reference voltage on ADC, default 5.0V on Arduino UNO
  11.     gravityTds.setAdcRange(1024);  //1024 for 10bit ADC;4096 for 12bit ADC
  12.     gravityTds.begin();  //initialization
  13. }

  14. void loop()
  15. {
  16.     //temperature = readTemperature();  //add your temperature sensor and read it
  17.     gravityTds.setTemperature(temperature);  // set the temperature and execute temperature compensation
  18.     gravityTds.update();  //sample and calculate
  19.     tdsValue = gravityTds.getTdsValue();  // then get the value
  20.     Serial.print(tdsValue,0);
  21.     Serial.println("ppm");
  22.     delay(1000);
  23. }
复制代码

上传代码后,您只需将TDS探头放入水中并检查串口监视器中的读数。

TDS-Reading-1.jpg


Gravity模拟TDS传感器与Arduino和LCD显示屏的硬件连接

现在让我们在原来的电路基础上添加一个LCD显示屏。我们将在LCD显示屏上显示TDS值。 电路图如下所示。

TDS-Sensor-LCD-Display-Arduino.jpg


按照图纸连接完成所有的组件,然后将下面的代码上传到Arduino开发板: tds sensor and lcd.rar (596 Bytes, 下载次数: 11)


上传代码后,您现在可以测量水的TDS值,然后在LCD显示屏中显示。

TDS-Sensor-LCD.jpg


带温度补偿的Arduino TDS计

上述两个代码仅在水温为25摄氏度时有效。如果温度升高或降低,则读数将是错误的,因为电导率会随温度而变化。


因此,为了解决这个问题,我们需要在代码中包含温度系数。该传感器没有带任何温度传感器,所以需要添加一个外部温度传感器。DS18B20防水温度传感器是一个合适的选择,因为它具有简单的接口和高精度。电路图如下所示。

TDS-Sensor-DS18B20-Temperature-Arduino.jpg


将DS18B20温度传感器的输出引脚连接到Arduino开发板的数字引脚7。如上图所示,通过4.7K电阻将输出引脚连接至5V电源。


以下是带有温度补偿的TDS传感器的源代码: tds 18b20.rar (655 Bytes, 下载次数: 10)


该代码需要两个额外的库,从下面下载库并将其添加到Arduino IDE的库文件夹中:OneWire库Dallas库


现在,上传代码后,我们就可以读取TDS的精确值以及温度值。以下是两个传感器都放在空气中时的读数。

image1.jpg


当我们向水中添加一些可溶性离子溶质如盐时,溶液的电导率增加,这样可以获得更高的TDS值。 在下图中,添加了2勺盐并搅拌,可以看到TDS的值立即增加。

image2.jpg


以上就是使用Arduino开发板连接Gravity模拟TDS传感器并设计TDS计的全部内容。如果有任何疑问,请随时在本帖下面回复。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 685 | 回复: 1417



手机版|

GMT+8, 2022-12-7 02:20 , Processed in 0.023956 second(s), 4 queries , Gzip On, MemCache On. Powered by Discuz! X3.4

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表