TS-300B浊度传感器详解(STM32)

news2025/4/27 4:58:35

目录

一、介绍

二、传感器原理

1.原理图

2.引脚描述

三、程序设计

main文件

ts.h文件

ts.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

TS-300B浊度传感器介绍:

浊度是指溶液对光线通过时所产生的阻碍程度,它包括悬浮物对光的散射和溶质分子对光的吸收。TS-300B浊度模块是用来测量水中杂质含量的传感器,它通过测量水中悬浮固体总量(TSS)的变化,通过光透过率和散射率来检测悬浮颗粒物。随着TSS增加,液体浊度水平增加。浊度传感器常用在洗碗机、洗衣机等需要检测水质浑浊度的场景。

以下是TS-300B浊度传感器的参数:

名称

TS-300B浊度传感器

工作电压

DC 5V

工作电流

40mAMAX

响应时间

< 500ms

工作温度

5~90

模拟输出

0~4.5V

数字输出

/低电平信号(可调电位器)

TSW-30 浊度检测探头介绍:

传感器模块配套浊度传感器型号为TSW-30,技术参数如下表所示(25℃)

以下是TSW-30 浊度检测探头的参数:

技术参数

TSW-30

测量范围(NTU

0~1000±30

红外发射二极管

(峰值发射波长)

940nm

光敏二极管

(峰值发射波长)

880nm

红外发射二极管型号

EL-23GKODENSHI

光敏二极管型号

ST-23GKODENSHI

哔哩哔哩视频链接:

TS-300B浊度传感器(STM32)

(资料分享见文末) 

二、传感器原理

1.原理图

TS-300B浊度传感器利用光学原理,通过溶液中的透光率和散射率来综合判断浊度情况。传感器内部是一个红外线对管,光接收端把透过的光强度转换为对应的电流大小。

传感器默认是模拟信号输出模式,在高浊度的液体中输出值会降低。绿色方框中的焊点可以用来设置模拟输出或者高低电平输出。默认是模拟(焊点断开),讲焊盘中间的焊点短接,可以设置为高低电平输出。这是调节电位器可调节阈值控制输出状态。

2.引脚描述

引脚名称

描述

V

接电源正极(5V

O

输出(AO/DO

G

接电源负极

三、程序设计

1.使用STM32F103C8T6读取TS-300B浊度传感器采集的数据,通过OLED上显示

TS

PA0

OLED_SCL

PB11

OLED_SDA

PB10

main文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "ts.h"
#include "adcx.h"

/*****************辰哥单片机设计******************
											STM32
 * 项目			:	TS-300B浊度传感器实验                     
 * 版本			: V1.0
 * 日期			: 2025.2.2
 * MCU			:	STM32F103C8T6
 * 接口			:	参看ts.h							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥 

**********************BEGIN***********************/

float value;
u8 buff[30];//参数显示缓存数组
float ts_data;

int main(void)
{ 
	
  SystemInit();//配置系统时钟为72M	
	delay_init(72);
	LED_Init();
	LED_On();
	TS_Init();
	USART1_Config();//串口初始化
	
	OLED_Init();
	printf("Start \n");
	delay_ms(1000);
	
	OLED_Clear();
	//显示“TS:”
	OLED_ShowString(0,0,"TS:",16,1);

  while (1)
  {
		LED_Toggle();
		value = TS_GetData();  
		
		printf("TS: %f\r\n",value);
		OLED_ShowNum(60,0,value,4,16,1);
		

		delay_ms(200);

  }
	
}


ts.h文件

#ifndef __TS_H
#define	__TS_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"

/*****************辰哥单片机设计******************
											STM32
 * 文件			:	TS-300B浊度传感器h文件                   
 * 版本			: V1.0
 * 日期			: 2025.2.2
 * MCU			:	STM32F103C8T6
 * 接口			:	见代码							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥

**********************BEGIN***********************/

#define TS_READ_TIMES	10  //TS浊度传感器ADC循环读取次数
#define TS_K 2047.19

/***************根据自己需求更改****************/
// TS GPIO宏定义

#define		TS_GPIO_CLK								RCC_APB2Periph_GPIOA
#define 	TS_GPIO_PORT							GPIOA
#define 	TS_GPIO_PIN								GPIO_Pin_0
#define   ADC_CHANNEL								ADC_Channel_0	// ADC 通道宏定义


/*********************END**********************/


void TS_Init(void);
float TS_GetData(void);

#endif /* __TS_H */

ts.c文件

#include "ts.h"

/*****************辰哥单片机设计******************
											STM32
 * 文件			:	TS-300B浊度传感器c文件                   
 * 版本			: V1.0
 * 日期			: 2024.2.2
 * MCU			:	STM32F103C8T6
 * 接口			:	见代码							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥

**********************BEGIN***********************/

void TS_Init(void)
{
	{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd (TS_GPIO_CLK, ENABLE );	// 打开 ADC IO端口时钟
		GPIO_InitStructure.GPIO_Pin = TS_GPIO_PIN;					// 配置 ADC IO 引脚模式
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		// 设置为模拟输入
		
		GPIO_Init(TS_GPIO_PORT, &GPIO_InitStructure);				// 初始化 ADC IO

		ADCx_Init();
	}

}


uint16_t TS_ADC_Read(void)
{
	//设置指定ADC的规则组通道,采样时间
	return ADC_GetValue(ADC_CHANNEL, ADC_SampleTime_55Cycles5);
}



float TS_GetData(void)
{
	float  tempData = 0;
	float TS_DAT;

	for (uint8_t i = 0; i < TS_READ_TIMES; i++)
	{
		tempData += TS_ADC_Read();
		delay_ms(5);
	}
	tempData /= TS_READ_TIMES;
	
	TS_DAT = (tempData/4096.0)*3.3;
	TS_DAT = -865.68*TS_DAT+TS_K;

	if(TS_DAT<35) TS_DAT = 0;
	
	return TS_DAT;

}



四、实验效果 

五、资料获取

项目分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2343776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Paint In 3D 入门

插件版本4.1.8 快速开始 这是一个强大的,可自由涂鸦的Unity插件. 步骤1 任何带有 MeshFilter MeshRenderer 或 SkinnedMeshRenderer 的 GameObject 均可被喷涂。​​ ​​方法1​​ 为 GameObject 添加 CwPaintableMesh 组件。 ​​方法2​​ 点击 MeshRenderer 或 Skinne…

PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究

全文链接&#xff1a;tecdat.cn/?p41666 在体育数据分析领域不断发展的当下&#xff0c;数据科学家们致力于挖掘数据背后的深层价值&#xff0c;为各行业提供更具洞察力的决策依据。近期&#xff0c;我们团队完成了一项极具意义的咨询项目&#xff0c;旨在通过先进的数据分析手…

⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)

播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求&#xff0c;AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦&#xff0c;实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧&#xff0c;它能帮助我们轻松解决…

【数据可视化-22】脱发因素探索的可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…

kubernetes》》k8s》》Heml

Heml 资料 下载地址 安装 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# helm 添加 仓库 # helm repo add 仓库名称 仓库地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts/ # 移除仓库 helm repo remove 仓库名…

MySQL表的操作 -- 表的增删改查

目录 1. 表的创建2. 表的查看3. 表的修改4. 表的删除5. 总结 1. 表的创建 1.查看字符集及效验规则 2. 表的创建 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;创建用户表1 创建用…

GIS开发笔记(12)基于osg和osgearth实现三维地图上的轨迹线绘制

一、实现效果 二、实现原理 1.设置起点和终点,用函数模拟出轨迹点,如从武汉到长春; 2.将地理坐标点转换成为世界坐标点; 3.根据世界坐标点绘制轨迹线,并设置样式; 4.将轨迹节点挂接到根节点,并定位。 三、参考代码 void MainWindow::sltDrawTrajectory() {qDebug(

MTKAndroid13-Launcher3 屏蔽部分app不让显示

实现Launcher3 桌面屏蔽部分内容&#xff0c;不让显示 文章目录 修改文件路径-实现方式基础-源码模块配置Launcher3 源码位置编译模块配置配置如下参数 属性配置&#xff1a;默认的Launcher3 选项配置GMS的Launcher3 配置 第三方Launcher需要默认为Launcher时候-系统Launcher3 …

PostgreSQL 数据库备份与恢复全面指南20250424

PostgreSQL 数据库备份与恢复全面指南 在数据库管理中&#xff0c;备份与恢复操作对于确保数据安全性、可用性和完整性至关重要。PostgreSQL 作为一款开源关系型数据库系统&#xff0c;广泛应用于各行各业&#xff0c;尤其在现代 AI 和大数据应用中&#xff0c;作为数据存储的…

专家系统的知识获取、检测与组织管理——基于《人工智能原理与方法》的深度解析

前文我们已经了解了专家系统的基本概念和一般结构&#xff0c;系统中有专业的知识才是专家系统的关键&#xff0c;接下来对专家系统中的知识是如何获取、检测、组织和管理的进行探讨。 1.专家系统的基本概念&#xff1a;专家系统的基本概念解析——基于《人工智能原理与方法》…

让Editplus支持squirrel语言

用EditPlus配置完实现关键字、函数、高光代码、自动完成、代码调试。先看看效果&#xff1a; 主要是由 nut.stx &#xff08;语法文件&#xff09;和 nut.acp &#xff08;自动完成&#xff09;两个文件 实现 Nut.stx文件内容&#xff1a; ---------------------------------…

Leetcode 2845 题解

还是要把自己做题的思路写出来的&#xff0c;但是结果可能还是得去观摩一下题解&#xff0c;无论是大佬写的题解还是leetcode官方写的题解&#xff0c;看完题解后再去反思才能有收获&#xff0c;即使下次遇见一样的题不见得能写出来&#xff0c;但有思路比没思路更重要。 今天写…

【爬虫】DrissionPage-获取douyim用户下的视频

之前看过DrissionPage&#xff0c;觉得很厉害&#xff0c;比selenium简单&#xff0c;适合新手。因为盲目跟风逆向&#xff0c;今天看了一个DrissionPage案例直播&#xff0c;学习一下&#xff0c;真香哈。 DrissionPage官网&#xff1a;&#x1f6f0;️ 概述 | DrissionPage官…

【Python爬虫基础篇】--3.cookie和session

目录 1.cookie 1.1.定义 1.2.参数 1.3.分类 2.session 3.使用cookie登录微博 4.使用session登录 1.cookie 由于http是一个无状态的协议&#xff0c;请求与请求之间无法相互传递或者记录一些信息&#xff0c;cookie和session正是为了解决这个问题而产生。 例子&#xff1…

分数线降低,25西电马克思主义学院(考研录取情况)

1、马克思主义学院各个方向 2、马克思主义学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、马克思主义理论25年相较于24年下降10分&#xff0c;为355分 3、25vs24推免/统招人数对比 学长、学姐分析 由表可看出&#xff1a; 1、 马克思主义学院25年共接…

Cancer Cell|scRNA-seq + scTCR + 空间多组学整合分析,揭示CD8⁺ T细胞在免疫治疗中的“双路径” | 临床问题的组学解答

Cancer Cell&#xff5c;scRNA-seq scTCR 空间多组学整合分析&#xff0c;揭示CD8⁺ T细胞在免疫治疗中的“双路径” &#x1f44b; 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助&#xff0c;别忘了点赞、关注、评论&#xff0c;一起学习 近日&#xff0c;《Cancer Cell》…

C# 下 using 块的作用 + VS2022 下 using 语法糖怎样工作

&#x1f50d; using 的本意是什么&#xff1f; using 是 C# 中用于 自动释放资源 的语法糖&#xff0c;适用于实现了 IDisposable 接口的对象&#xff08;比如数据库连接、文件、网络流等&#xff09;。 &#x1f9d0; 首先看下SqlSugarClient类部分源码&#xff1a; SqlSug…

实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客

实体店的小程序转型之路&#xff1a;拥抱新零售的密码-中小企实战运营和营销工作室博客 在当今数字化浪潮的冲击下&#xff0c;实体店面临着前所未有的挑战&#xff0c;但小程序的出现为实体店转型新零售带来了新的曙光。先来看一组惊人的数据&#xff0c;据相关统计&#xff…

UML 类图基础和类关系辨析

UML 类图 目录 1 概述 2 类图MerMaid基本表示法 3 类关系详解 3.1 实现和继承 3.1.1 实现&#xff08;Realization&#xff09;3.1.2 继承/泛化&#xff08;Inheritance/Generalization&#xff09; 3.2 聚合和组合 3.2.1 组合&#xff08;Composition&#xff09;3.2.2 聚…

15.三数之和(LeetCode)java

个人理解&#xff1a; 1.使用双指针做法&#xff0c;首先对数组进行排序 第一重for循环控制第一个数&#xff0c;对数组进行遍历。双指针初始化为lefti1, rigthnums.length-1。然后使用while循环移动双指针寻找合适的数。因为返回的是数&#xff0c;不是下标&#xff0c;数不能…