TDS检测水质

   TDS(Total Dissolved Solids),总溶解固体,又称溶解性固体总量,表明1升水中溶有多少毫克溶解性固体。一般来说,TDS值越高,表示水中含有的溶解物越多,水就越不洁净。作为一种可快速检测的参数,TDS目前还是可以作为有效的水质情况反映参数来作为参考。
   Qhebot的TDS模块如图:

 读取TDS值的主要程序如下:


#define TdsSensorPin A0     //Nano接A6 ESP8266接A0 ESP32接A5或者其他ADC引脚
#define VREF 5.0            // ADC的模拟参考电压(Volt)
#define readCount 40        // 从ADC读取到的模拟值个数
#define SCOUNT  30          // 滤波之后的模拟值个数
int Buffer[SCOUNT];         // 将模拟值存储在数组中,从ADC读取
int BufferTemp[SCOUNT];
int BufferIndex = 0, copyIndex = 0;
float averageVoltage = 0, tdsValue = 0;
float temperature = 25;        //未添加温度补偿默认25℃
float compensationVolatge;        //修正后的电压用于实现温度补偿
float compensationCoefficient;    //温度补偿系数void setup()
{Serial.begin(115200);pinMode(TdsSensorPin, INPUT);
}void loop()
{TDS();delay(500);
}float TDS() {static unsigned long analogSampleTimepoint = millis();if (millis() - analogSampleTimepoint > 40U)  //每40毫秒,从ADC读取模拟值{analogSampleTimepoint = millis();for (int BufferIndex = 0; BufferIndex < readCount; BufferIndex++){Buffer[BufferIndex] = analogRead(TdsSensorPin);     //读取传感器输出引脚模拟电压存储到缓冲区//Serial.printf("Buffer[%d]: %d \n", BufferIndex, Buffer[BufferIndex]);}}static unsigned long printTimepoint = millis();if (millis() - printTimepoint > 800U) {printTimepoint = millis();for (copyIndex = 0; copyIndex < SCOUNT; copyIndex++)BufferTemp[copyIndex] = Buffer[copyIndex];//通过中值滤波算法读取更稳定的模拟值,并转换为电压值。getMedianNum见下averageVoltage = getMedianNum(BufferTemp, SCOUNT) * (float)VREF / 1024.0;//temperture待测溶液温度  compensationCoefficient温度校正系数//温度补偿公式: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0); //温度补偿compensationVolatge = averageVoltage / compensationCoefficient;//转换为电压值,根据标准曲线tdsValue = (133.42 * compensationVolatge * compensationVolatge * compensationVolatge - 255.86 * compensationVolatge * compensationVolatge + 857.39 * compensationVolatge) * 0.5;}//串口输出tdsValueSerial.printf("\n TDS Value:"); Serial.print(tdsValue); Serial.printf("ppm \n");
}

  该程序是未添加温度补偿(默认水的温度是25℃),温度补偿只需将DS18B20模块获取的温度赋给全局变量temperature 即可。
  上述程序中的中值滤波 getMedianNum 如下,也可以考虑使用其他滤波算法,如:算术平均滤波、滑动平均滤波等。

// 中值滤波     bArray[]数据源  iFilterLen数据个数
int getMedianNum(int bArray[], int iFilterLen)
{//  Serial.printf("\n滤波……");int bTab[iFilterLen];for (byte i = 0; i < iFilterLen; i++) {bTab[i] = bArray[i];
//    Serial.printf("\n bArray[%d]: %d ", i, bArray[i]);}int i, j, bTemp;for (j = 0; j < iFilterLen - 1; j++) {for (i = 0; i < iFilterLen - j - 1; i++) {if (bTab[i] > bTab[i + 1]) {    //使升序排列便于取中值bTempbTemp = bTab[i];bTab[i] = bTab[i + 1];bTab[i + 1] = bTemp;}}}if ((iFilterLen & 1) > 0)                //和1相与判断奇偶bTemp = bTab[(iFilterLen - 1) / 2];   //奇数个元素取中值elsebTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;   //偶数个元素取中值return bTemp;
}

水质检测 — TDS模块相关推荐

  1. 基于STM32单片机水质检测PH值检测电导率TDS检测超声波水位检测

    系统功能设计 (末尾附文件) 本系统由STM32单片机核心板.超声波测距模块.PH值传感器模块.电导率传感器.LCD1602液晶及电源组成. 1.超声波传感器采集探测距离,PH传感器采集PH值(PH传 ...

  2. 基于STM32(HAL库)的水质检测(浑浊度、PH值、温度、手机APP显示、wifi上云)

    本系统由通过wifi将浑浊度.PH值.温度采集的数据发送到手机APP,超过设定的阈值报警. 一.硬件材料清单: 1.STM32C8T6:控制器 2.OLED显示屏:显示传感器采集的数据 3.PH传感器 ...

  3. 基于51单片机的水质检测系统开发

    单片机水质检测系统开发 水质监测参数选择 TDS PH 浑浊度 水温 硬件电路 程序 水质监测参数选择 目前人们对环境问题日益重视,用水健康更是作为重中之重,水质的检测参数有很多,比如:TDS,PH, ...

  4. 基于nb-iot的水质检测系统

    基于nb-iot的水质检测系统 github地址:nanalizi/-nb-iot- (github.com) 器材:     STM32F103C8T6开发板      目的:     ds18b2 ...

  5. 基于51单片机的水位水质检测系统方案原理PCB设计

    总体方案设计 (末尾附文件) 通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了两种技术方案来实现系统功能.下面我将首先对这两种种方案的组成框图和实现原理分别进行说明. 2.1 智能水位水质 ...

  6. Linux驱动编程 step-by-step (六) 用户地址检测 简单模块调试 以及一些杂项

    用户地址检测 简单模块调试 以及一些杂项 检测用户空间地址的有效性 上一节中提到在read write时候要检测用户空间传递的参数地址是否是有效地址,有的内核函数会自行检测,但是在调用轻量级的内核函数 ...

  7. 地下水水质检测方法一览表

    地下水水质检测方法一览表 检测项目 分析方法 pH(无量纲) 水质 pH值的测定 玻璃电极法 GB/T 6920-1986 高锰酸盐指数 水质 高锰酸盐指数的测定 GB11892-1989 酸式法 氨 ...

  8. 河源水质检测实验室建设方案曝光

    河源水质检测实验室建议要考虑要考虑要点有哪些?SICOLAB总结了水质检测实验室建设细节,具体如下 一.水质检测实验室设计组成部分 无机理化室.蒸馏过滤室.无机预处理室.有机预处理室.仪器分析室(按照 ...

  9. 广州水质检测实验室装修要求

    在实验室中,水是不可缺少的,洗涤仪器.配置溶液.冷却都需要使用水.水是分析实验室中常用的试剂.那么,水质检测实验室就是对水进行纯化处理的实验.SICOLAB小编带大家看看整体划分实验室可分为︰原子吸收 ...

  10. 水质检测传感器在不同行业中的应用

    水是生命之源,其安全性不容忽视.水质检测是保证用水安全和水污染治理不可或缺的环节.水质检测传感器是我们的"守护者",也是我们用水安全的"第一防线". " ...

最新文章

  1. python的id方法_python中id()函数的实用研究实例
  2. c#如何跳出一个函数_C# mysql 学生信息管理系统
  3. OpenCV创建自己的corner检测器
  4. java结束全部操作代码_Java基本的线程操作(附代码)
  5. centos 卸载_CentOS安装mysql
  6. 透析 | 卷积神经网络CNN究竟是怎样一步一步工作的?
  7. 电商设计师必备素材|快速组合自己想要的场景和落版文字
  8. 在Ubuntu 16.04下安装nodejs
  9. JAVA一般指WEB服务器开发,是技术管理必须熟悉的
  10. 仿真软件proteus点亮led实验
  11. ecshop index.php,]ECSHOP 源码分析(install/index.php1)
  12. android手机设置固定dns,安卓手机修改WiFi DNS设置的方法
  13. sql语句中日期相减的操作
  14. java地铁线路规划_地铁路线规划系统
  15. 2018招商银行笔试题——团建活动
  16. pyTest官方手册(Release 4.2)之蹩脚翻译(9)
  17. 基于MDK-KILE5.23版本的STM32创建工程
  18. Redis Zadd 命令
  19. SPI实现SST25VF016B驱动(Flash)
  20. 北京丰台线下处理交通违章的地方在哪里

热门文章

  1. 汇编语言小写字母转大写字母
  2. 年轻时放纵享乐,不要指望年老时一念向善
  3. 李彦宏:人工智能的互联网时代已经到来
  4. jpa原生query_SpringDataJpa使用原生sql的小坑
  5. BUCK电路、BOOST电路,为其设计电压电流双闭环调节器,实现系统阶跃响应
  6. 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1318期】
  7. 统一检测和分割任务!港科大清华IDEA提出基于Transformer统一目标检测与分割框架Mask DINO,效果SOTA!...
  8. 21.pgsql中的执行计划explain
  9. rknn模型转换问题记录
  10. ucenter安装指南及问题解决