浊度传感器的使用(STM32实现)

浊度传感器

一、介绍

水的浑浊度是指水中含有的泥沙,粘土,有机物,浮游生物和微生物等悬浮
物质,造成的浑浊程度。工业级的浊度传感器或浊度仪价格昂贵,在电子产品设
计中成本太高不适合选用;因此我们选取了一款在家用电器洗衣机、洗碗机上广
泛应用的浑浊度传感器,这款浊度传感器利用光学原理,通过溶液中的透光率和
散射率来综合判断浊度情况。传感器内部是一个红外线对管,当光线穿过一定量
的水时,光线的透过量取决于该水的污浊程度,水越污浊,透过的光就越少。光
接收端把透过的光强度转换为对应的电流大小,透过的光多,电流大,反之透过
的光少,电流小。
浊度传感器模块将传感器输出的电流信号转换为电压信号,通过单片机进行
AD 转换数据处理。改款模块具有模拟量和数字量输出接口。模拟量可通过单片
机 A/D 转换器进行采样处理,以获知当前水的污浊度。数字量可通过模块上的
电位器调节触发阈值,当浊度达到设置好的阈值后,D1 指示灯会被点亮,传感
器模块输出由高电平变成低电平,单片机通过监测电平的变化,判断水的浊度是
否超标,从而预警或者联动其他设备。该模块价格低廉、使用方便、测量精度高
可以用于洗衣机、洗碗机等产品的水污浊程度的测量;也可以用于工业现场控制,
环境污水采集等需要浊度检测控制的场合。

二、使用

1.引脚与接线

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.应用

看到它是采集ADC的之后就不需要再看怎么使用了,直接采集他的ADC值然后转换成电压就可以了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、注意事项

`
1、浊度传感器顶端不防水,使用时禁止将浊度传感器完全抛入水中,水面
不能没过顶盖与壳体连接处,传感器进水会造成传感器烧坏。
2、传感器光敏二极管接收光线的波长范围为(500~1050nm),日光或日光
灯光线波长会影响传感器光敏电阻的接收,影响测量输出。日光或灯光直射会增
大传感器测量误差,传感器使用时应避免日光或灯光直射。
3、传感器头部壳体需保持清洁,避免污染物遮挡造成测量不准。

四、代码实现

.c .h直接用正点原子的例程就行了

	adcx=Get_Adc_Average(ADC_Channel_1,10); //获取到 电压平均值
	#下面的可要可不要,这个传感器可以自己转化
	temp=(float)adcx*(3.3/4096);
	temp = temp*100/3.3;
	if(temp > 100) temp = 100;

在这里插入图片描述
在这里插入图片描述

### STM32F103C8T6通过WiFi传输浊度数值到手机App的实现方法 #### 硬件配置 STM32F103C8T6作为主控芯片,负责处理来自浑浊度检测传感器的数据并将其打包准备发送。为了实现WiFi功能,通常会搭配ESP8266或ESP32等WiFi模块[^3]。这些模块支持AT指令集通信方式,可以通过UART接口与STM32进行数据交换。 #### 软件架构 软件部分主要分为三个层次:底层驱动层、中间协议栈以及上层应用逻辑。 - **底层驱动层**:初始化串口用于和WiFi模块通讯,并编写函数来解析接收自WiFi模块的信息。 - **中间协议栈**:构建TCP/IP或者UDP网络连接以便向远程服务器推送数据。 - **上层应用逻辑**:读取ADC转换后的浑浊度原始值经过计算得出实际浓度再经由WiFi上传给指定目标地址即用户的移动设备应用程序。 以下是具体实施步骤: #### 初始化设置 在程序启动阶段完成必要的硬件资源分配工作,比如开启GPIO引脚供外部器件接入使用;同时也要做好定时器中断服务例程安排以保障周期性的采样动作得以顺利执行。 ```c // 配置USART波特率为9600bps并与Wi-Fi模组建立联系 void USART_Init(void){ // ...省略无关细节... } ``` #### 数据采集与预处理 利用内置的模拟数字转换器(Analog-to-Digital Converter, ADC),从连接好的浑浊度探头那里得到反映当前液体清澈程度的一系列电压信号样本点集合之后运用特定算法加以变换从而获得最终可以被理解解释出来的量化指标——NTU单位下的透明指数表示法[^1]。 ```c uint16_t Get_Turbidity_Value(){ uint16_t adc_value; float turbidity; /* Start conversion */ ADC_StartConversion(); while(!ADC_ConversionComplete()); adc_value = ADC_GetConvertedValue(); // Convert raw value to NTU using calibration formula turbidity = (float)(adc_value * SCALE_FACTOR); return (uint16_t)turbidity; } ``` #### WiFi联网过程管理 借助事先定义好一系列命令字符串序列按照既定顺序逐一发出请求直至成功加入某个SSID名称对应的无线局域网之中为止[^2]。 ```c char wifi_connect[]="AT+CWJAP=\"your_ssid\",\"your_password\"\r\n"; HAL_UART_Transmit(&huart1,(uint8_t*)wifi_connect,strlen(wifi_connect), HAL_MAX_DELAY); ``` #### 发送数据至云端平台或本地客户端 一旦建立起稳定的互联网通道后就可以考虑采用HTTP POST请求的形式把最新一轮测量所得的结果封装成JSON格式并通过该种途径传递出去让远端的应用界面实时更新展示出来。 ```json { "device_id": "stm32_device_001", "turbidity_level": 75, "timestamp": "2023-03-14T12:34:56Z" } ``` 最后记得定期检查整个系统的运行状态确保各环节正常协作无误即可达成预期目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我与nano

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值