作为一名小白,上网找资料不齐全,现在摸索明白了,故写下此文章,供大家参考
免费源码:
【免费】免费:TSW-30浊度传感器+STM32F103C8T6+Keil5资源-CSDN文库
该篇文章是看了b站博主领悟后写下来的,看不懂我的文章可以看下面链接的视频
特此鸣谢:b站的up主 单片机俱乐部
【mcuclub】浑浊度传感器-TSW-30_哔哩哔哩_bilibili
【mcuclub】浑浊度传感器-TSW-30 - 单片机俱乐部
一、接线
下图是我的模块接线图,引脚A我接的是开发板的PA2
二、原理与公式
1、原理(仅供了解)
2、公式


3、校准方法,即求出k值
三、实操+代码
1、代码
#include "stm32f10x.h"
#include "bsp_usart1.h"
#include <string.h>
#include "delay.h"
#include "driver_1602.h"
#include "math.h"
#include "bsp_adc.h"
#include "ds18b20.h"
float TU=0.0;
float TU_value=0.0;
float TU_calibration=0.0;
float temp_data=250.0;
float K_Value=2856.046553;
u8 ISendByte(unsigned char sla,unsigned char c);
u8 IRcvByte(unsigned char sla);
u8 SPIx_ReadWriteByte(u8 TxData);
// ADC1转换的电压值通过MDA方式传到SRAM
extern __IO uint16_t ADC_ConvertedValue;
// 局部变量,用于保存转换计算后的电压值
float ADC_ConvertedValueLocal;
/**************TDS值采集函数***************/
void TU_Value_Conversion()
{
TU =(float) ADC_ConvertedValue/4096*3.3; // 读取转换的AD值
TU_calibration=-0.0192*(temp_data/10-25)+TU;
TU_value=-865.68*TU_calibration+ K_Value ;
if(TU_value<=0){TU_value=0;}
if(TU_value>=3000){TU_value=3000;}
}
void TEMP_Value_Conversion()
{
temp_data=DS18B20_Get_Temp();
}
int main(void)
{
/*初始化DS18B20模块*/
//DS18B20_Init();
/* 配置USART1 */
USART1_Config();
// ADC 初始化
ADCx_Init();
while(1)
{
//TEMP_Value_Conversion();
TU_Value_Conversion();
printf("%.2f\n",TU_value);
delay_ms(1000);
}
}
2、校准浑浊度,求k值
因为没有ds18b20模块测水温,所以我直接设定水温temp_data为25℃。
求出k值:TU_value值即为k值。将TU_Value_Conversion函数改动两个地方,如下图
将浊度模块放入清水中,代码烧录到开发板,串口打印出数据。
注意:校准时,模块测的数据一定是清水里的,而不是在空气中
将K_Value设为串口打印的数值。将代码恢复会原状。烧录代码,串口打印为0.00
注意:
刚开始浊度模块的数据有跳动,要等到稳定为止,如果还是有小浮动的跳动,要取数据的最小值求k值。因为根据公式
水越清,电压越高。则TU_value越小(负数),k越小。如果不取最小值作为k值,会导致有点浑浊也会浑浊度为0
将浑浊度模块放到不同浊度的水里,串口打印不同数据
我是将泥土放进杯中检测的,因为泥土会不断下沉,所以浑浊度是不断减小的。
四、注意事项
1、浊度传感器可以测量水中什么物质?
答:浊度传感器测量的是水环境中的颗粒状漂浮物,如:泥沙、黏土、金属颗粒、有机物、浮游生物和微生物等悬浮物质;不太适合测量例如墨汁、颜色色料造成的水质污染环境;用几滴墨水混合纯净水来测量的方式是错误的方案。
2、浊度传感器顶端不防水,使用时禁止将浊度传感器完全抛入水中,水面不能没过顶盖与壳体连接处,传感器进水会造成传感器烧坏。
3、传感器头部壳体需保持清洁,避免污染物遮挡造成测量不准。
4、传感器光敏二极管接收光线的波长范围为(500~1050nm),日光或日光 灯光线波长会影响传感器光敏电阻的接收,影响测量输出。日光或灯光直射会增 大传感器测量误差,传感器使用时应避免日光或灯光直射。