1.模块功能概述
2.TDS定义简介
3.模块TDS测量方法
以下为模块mcu进行计算TDS值的关键算法代码:
#define POLAR_CONSTANT (513385) /* 电导池常数,可通过与标准TDS测量仪对比计算反推 */
#define TDS_COEFFICIENT (55U) /* TDS = 0.55 * 电子传导率*/
//TDS 的计算 输入TDS传感器分压的平均电压
// adc_avg_value:采集到的TDS传感器分压AD值
void R_TDS_Calculate(u16 adc_avg_value)
{
float tds_resister=0,siemens_value=0;//西门子值
float electornic_conductor=0,temperature=0;
//获取温度值
temperature=(u16)((u16)(g_Temperature[0]*10)+g_Temperature[1])/10;
/*AD限值处理*/
if(adc_avg_value >=998) //998
{
tds_Value = 0;
}
else
{
//计算溶液电阻值
/* 1.5k的串联液体TDS电阻值 */
tds_resister =1.0*adc_avg_value * 1500 / (1024 - adc_avg_value);
/* 计算电导率值 。其中POLAR_CONSTANT 为电导池常数*/
siemens_value =(1.0* POLAR_CONSTANT / tds_resister);
/* temperature adjust */
//经过温度补偿过的电导率值
electornic_conductor= siemens_value /(1+0.02*(temperature-25));
// 计算出TDS值,TDS_COEFFICIENT为转换系数
tds_Value =(u16)(1.0* electornic_conductor * TDS_COEFFICIENT / 100);
}
}
4.技术指标
5.外形尺寸
6. 通信协议
波特率:9600,无校验位,1停止位,8位数据。
TDS:91ppm。温度:26.2℃
//校验值算法 起始位后 86 00 85 00 00 00 00 到校验值前相加求和取低八
//位,再取反加一
uint8_t getCheck(uint8_t *data,uint8_t iLength)
{
uint8_t sum=0; uint8_t iFor=0;
for(iFor=0;iFor<iLength;iFor++)
{
sum+=data[iFor];
}
return (0xff-sum+1);
}
7.上位机和数码管显示应用
模块板载USB转TTL电平芯片和micro-usb接口,可直接通过micro-usb数据线将电脑与模块连接,即可在电脑查看模块所使用的串口端口号,请到电脑设备管理器查看,端口号因个人电脑而异,如下图:
板上另有串口TTL接口引出,方便用户与其他mcu进行连接读取数据。
接下来可打开上位机软件,并选择相应串口号,如下图:
上位机发送及接收数据协议按照模块协议编写,上位机每1秒向模块获取一次数据。
模块载有串行控制四位数码管接口,只要模块上电,将数码管显示模块直接插在模块接口上即可显示所测温度值及TDS值,TDS和温度显示时间为:3S+2S。显示效果如下图:
8.测试数据对比
下图是关于TDS水硬度标准的说明,用户可根据图中标准对照查看所测水质符合哪种等级,以达到直观判断水质优劣的目的。
以下为采用本模块和小米TDS检测仪分别对两种不同TDS值水进行测试对比所得的实验效果图:
9.使用注意事项
【声明】图文来源于CSDN,版权归原作者所有,在此表示感谢,如有侵权请联系我
推荐