示例六、湿敏传感器

news2024/12/24 3:09:12

通过以下几个示例来具体展开学习,了解湿敏传感器原理及特性,学习湿敏传感器的应用:

示例六、湿敏传感器

一、基本原理:随着人们生活水平的不断提高,湿度监控逐步提到议事日程上。由于北方地区秋冬季干燥,需要控制室内温湿度:温室大棚,需要控制温湿度:医院保育室需要控制温湿度等。温湿度控制与人们的日常生活密切相关。
1、温湿度敏传感器的特性
SHTx系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。该芯片包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A-D转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强等优点。
每个SHTx传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存储在OTP内存中,传感器内部在对检测信号的处理过程中要调用这些校准系数进行修正。两线制串行接口和内部基准电压,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。
1)结构及引脚
该产品提供表面贴片LCC(无铅芯片)或4针单排引脚封装,如图7-23所示。可根据用户需求提供特殊封装形式。 SHTXX内部结构如图7-24所示。
2)测量精度
不同型号的芯片,测量精度不同,如表7-1所示。
在这里插入图片描述

在这里插入图片描述

3)接口
SHTx采用2线制通信机制,类似c总线,但不兼容C总线。与单片机的典型接口如图7-25所示。系统采用主从式串行通信。
SHTx的供电电压为2.4~5.5V。传感器上电后,要等待11ms以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(UD,GND)之间可增加一个100nF的电容,用于去耦滤波。
在这里插入图片描述

SHTXX I的串行接口,在传感器信号的读取及电源功耗方面,都做了优化处理:但与1C接口并不兼容SCK用于微处理器与 SHTXX之间的通信同步。由于接口包含完全静态逻辑,因此不存在最小SCK频率。
DATA三态门用于数据的读取。DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。为避免信号冲突,微处理器应驱动DATA在低电平。需要一个外部的上拉电阻(如10k2)将信号提拉至高电平。上拉电阻通常已包含在微处理器的IO电路中。
传感器用一组“启动传输”时序,来表示数据传输的初始化,如图726所示。它包括:当SCK时钟为高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟为高电平时DATA翻转为高电平。
在这里插入图片描述

后续命令包含三个地址位(目前只支持“000和五个命令位。 SHTXX会以下述方式表示己正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。
4)命令集
SHTx命令集如表7-2所示。
在这里插入图片描述

5)测量时序(RH和T)
发布一组测量命令(“00000101表示相对湿度RH,“00000011”表示温度T)后,控制器要等待测量结東。这个过程需要20/80/320ms,分别对应812/14位测量。确切的时间与内部晶振速度有关,最多可能有30%的变化。 SHTXX通过下拉DATA至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其他任务在需要时再读出数据。
接着传输2个字节的测量数据和1个字节的CRC奇偶校验。单片机需要通过下拉DATA为低电平,以确认每个字节。所有的数据从MSB开始,右值有效(例如,对于12位数据,从第5个SCK时钟起算作MSB:而对于8位数据,首字节则无意义)。用CRC数据的确认位,表明通信结束。如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保持确认位ACK高电平,来中止通信。在测量和通信结東后, SHTXX自动转入休眠模式。其时序如图7-27所示。
在这里插入图片描述

为保证自身温升低于0.1C,SHTx的激活时间不要超过10%。例如,对应12位精度测量,每秒最多进行2次测量。
6)通信复位时序
如果与SHTx通信中断,下列信号时序可以复位串口
当DATA保持高电平时,触发SCK时钟9次或更多。在下一次指令前,发送一个“传输启动”时序,如图7-28所示。这些时序只复位串口,状态寄存器内容仍然保留。

在这里插入图片描述

7)校验
数字信号的整个传输过程由8位CRC校验来确保。任何错误数据都将被检测到
并清除。
8)测量分辨率
默认的测量分辨率分别为14位(温度)12位(湿度),也可通过设置指定的寄存
器,分别降至12位和8位。通常在高速或超低功耗的应用中采用该功能。
9)加热元件
传感器芯片上集成了一个可通断的加热元件。接通后,可将SHTx的温度提高5~15℃(9~27T)。功耗增加8mA,5V。比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿度(>95%RH)环境中,加热传感器可防止凝露,同时缩短其响应时间,提高测量精度。加热后较加热前,SHTx温度值略有升高、相对湿度值稍有降低。
2温湿度监控器的硬件设计
1、温湿度监控器的系统结构
温湿度监控器系统以单片机AT89S2为控制核心,用SHT10作为温湿度检测元件,用LCD1602显示环境温湿度,如图7-22所示。系统启动后,SHT10将环境温湿度转换二进制数,存于器件内部的寄存器中,单片机从指定的寄存器中读取环境温湿度值,并与设定的温湿度上下限值比较,超出上下限时,报警提示。可以开启风扇、空调、加湿器等进行调节。
在这里插入图片描述

2.温湿度监控器的系统电路原理
温湿度监控器的系统原理如图7-29所示。上电运行后,可按键设置温湿度的上下限值,当温度达到上限值时,电动机M1正转并且蜂鸣器响,同时LED2闪烁:当温度达到下限值时,电动机M1反转并且蜂鸣器响,同时LED1闪烁。湿度达到上限时,电动机M2正转并且蜂呜器响,同时LED4闪烁:当湿度达到下限时,电动机M2反转并且蜂鸣器响,同时LED3闪烁。
图6-24系统原理图:
在这里插入图片描述

二、湿度监控器的软件设计
1.主程序
程序上电后,要对LCD1602、单片机等进行初始化工作,将SHT10传感器复位,
在无外界操作前,不断进行按键、报警、读取数据等子程序的循环扫描。一旦有操作,则跳入相应的模块程序执行相应的功能,如图7-30所示。
2.LCD1602显示模块
初始化LCD1602显示模块,设置8位格式,2行,5x7矩阵显示,关光标,不闪烁,
增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,将十六进制
数据转换成十进制后,判断是否在第一行显示,输入相应的地址数据,延时等待,输入
需要显示的数据,如图7-31所示。
在这里插入图片描述

3.报警模块
首先对温度的上下限值进行判断,做相应的报警及驱动处理:再对湿度的上下限值进行判断,做相应的报警及驱动处理,如图732所示
4.按健模块
系统主要有四个按键,分别为复位键K、功能选择键K、按键加K2和按键减K按键的扫描流程如图73所示。当第一次扫描到有按键按下时,不会立刻行动,而是先调用廷时消抖动子程序,经过一段时间后再判断是否真的有按键按下,然后根据按下的键进行相关操作,若判断并没有按键按下只是抖动,则继续扫描按键。
在这里插入图片描述

SHT10的读写流程严格按照SHT10的读写时序进行,不再资述。
4、温湿度监控器的源程序

//*********************第二部分DHT90设置   
bit set_temp_up=0;
bit set_temp_down=0;
bit set_humidity_up=0;
bit set_humidity_down=0;

 
sbit SCK  = P3^2;      //定义通讯时钟端口 
sbit DATA = P3^3;      //定义通讯数据端口 
sbit D1=P3^4;   //定义温度报警端口
sbit D2=P3^5;	   //定义湿度报警端口
sbit D3=P3^6;   //定义温度报警端口
sbit D4=P3^7;	   //定义湿度报警端口
sbit key_set=P1^3;//设置功能选择键
sbit key_up=P1^4;//数字键加+
sbit key_down=P1^5;//数字键减-

uchar selectnum=0,downnum=0,checknum;
uchar value_shi,value_ge,downnum_shi,downnum_ge;
uchar  shidu_shi,shidu_ge,wendu_shi,wendu_ge;
sbit PWMZ = P2^0;      //定义调速端口
sbit PWMF = P2^1;      //定义调速端口
sbit PWMZ2 = P2^3;      //定义调速端口
sbit PWMF2 = P2^4;      //定义调速端口
sbit Alarm = P2^5;
bit temp_alarm_flag=1;
bit rh_alarm_flag=1;
unsigned char CYCLE;  //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms
unsigned char PWM_ON ;//定义高电平时间
uchar flag;
unsigned char CYCLE2;  //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms
unsigned char PWM_ON2 ;//定义高电平时间
uchar flag2;
uchar temp_uplimit,temp_lowlimit,humidity_uplimit,humidity_lowlimit;
unsigned int Alarm_temp_up=260,Alarm_temp_low=240,Alarm_humidity_up=700,Alarm_humidity_low=500;
unsigned int wendu,shidu; 
typedef union   
{ 
 	unsigned int i;      //定义了两个共用体 
  	float f;  
} value;  

enum {TEMP,HUMI};      //TEMP=0,HUMI=1 
  

#define noACK 0             //用于判断是否结束通讯 
#define ACK   1             //结束数据传输 
                            //adr  command  r/w  
#define STATUS_REG_W 0x06   //000   0011    0  
#define STATUS_REG_R 0x07   //000   0011    1  
#define MEASURE_TEMP 0x03   //000   0001    1  
#define MEASURE_HUMI 0x05   //000   0010    1  
#define RESET        0x1e   //000   1111    0  
…….
……
/*--------------------------------------  
;模块名称:calc_dht90();  
;功    能:温湿度补偿函数 
;-------------------------------------*/  
void calc_dht90(float *p_humidity ,float *p_temperature) 
{ 
	const float C1=-4.0;              // 定义C1为浮点数类型
  	const float C2=+0.0405;           //  定义C2为浮点数类型 
  	const float C3=-0.0000028;        //  定义C3为浮点数类型
  	const float T1=+0.01;              // 定义T1为浮点数类型
  	const float T2=+0.00008;           // 定义T1为浮点数类型

  	float rh=*p_humidity;             // 定义rh为浮点数类型
    float t=*p_temperature;           // 定义t为浮点数类型
   	float rh_lin;                     // 定义rh_lin为浮点数类型
  	float rh_true;                    // 定义rh_true为浮点数类型
  	float t_C;                        // 定义t_C为浮点数类型 
    t_C=t*0.01 - 40;                  //温度补偿
  	rh_lin=C3*rh*rh + C2*rh + C1;     //湿度补偿 
  	rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;  //计算湿度值 
  	if(rh_true>100)rh_true=100;       //如果测量到的数据大于100,取值为100 
  	if(rh_true<0.1)rh_true=0.1;       //确定测量精度为一位小数点

  	*p_temperature=t_C;               //返回温度值 
  	*p_humidity=rh_true;              //返回湿度值 
}

三、数据记录:
1、温湿度传感器实验数据记录(相对湿度为室温25°C时,测量的值)
在这里插入图片描述

2、温湿度传感器的灵敏度曲线图(温度,湿度分别绘制)
在这里插入图片描述
在这里插入图片描述

3、默认报警温度为24-26度,湿度50-70%,通过按键把报警温度调整为22-25度,湿度40-60%,改变SHT10的温湿度值,观察指示灯的跳变情况。
跳变情况:指示灯由D1和D3变为D2和D3

四、思考:
分析SHT10温湿度传感器的测量时序图中,SCK时钟信号和DATA信号的对应关系,DATA信号中命令部分、温度数据、湿度数据以及CRC校验数据的时序关系?
1.当SCK时钟为高电平时,DATA由高电平反转为低电平,随后是在SCK高电平时DATA由低电平反转为高电平在第八个SCK的下降沿之后将DATA下拉为低电平作为ACK位,并在第九个SCK时钟的下降沿之后释放DATA(恢复高电平)
2.温度测量命令:000 00011 3个SHT1地址位 000 和五个命令位 SHT1会以下述方式表示正确的接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。在第9个时钟下降沿之后,释放DATA(恢复高电平)

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

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

相关文章

如何选择合适加密软件来保护信息资产|精选加密软件分析

五款加密软件对比分析&#xff0c;是一项复杂而必要的任务&#xff0c;旨在帮助用户选择最适合其需求的加密工具。在数字化时代&#xff0c;信息安全显得尤为重要&#xff0c;因此&#xff0c;对加密软件的评估与比较显得尤为关键。 首先&#xff0c;我们要考虑的是这些加密软件…

基于单片机的温度控制系统设计(51基础版)-设计说明书

本论文设计了一种基于51单片机的温度控制系统&#xff0c;该系统具备以下主要功能&#xff1a;首先&#xff0c;通过温度传感器实时检测环境温湿度&#xff0c;以获取准确的温度数值。其次&#xff0c;通过按键设置温度阈值&#xff0c;用户可以根据需求自行调整控制温度的上限…

Container exited with a non-zero exit code 1

最近遇到运行yarn pi的时候遇到如下问题。 很明显是container出错了&#xff0c;但是错误没有提示的很清楚。然后去看nodemanager日志也是如此。这时候笔者第一个想到要去看container的执行日志。container具体的日志目录位置是通过YARN的配置文件&#xff08;如yarn-site.xml&…

虚拟机CentOS密码重置

1&#xff0c;reboot重启 在出现下面的界面1按e 如果有选项就选择“CentOS Linux &#xff08;3.10.0-327.e17.x86_64&#xff09;7 &#xff08;Core&#xff09;”【我的电脑没有直接显示界面2】 界面1 界面2 2&#xff0c;在上述界面2中继续按e进入编辑模式 找到“ro cr…

AI办公自动化-用kimi批量重命名Word文档

文件夹里面有很多个word文档&#xff0c;标题里面都含有零代码编程&#xff0c;现在想将其替换为AI办公自动化。 在kimichat中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写Python脚本的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&am…

翻译/润色找哪里比较专业,机构怎么选?

英文专业术语多&#xff0c;润色是很有必要的&#xff0c;大家可以选择专业的文章翻译润色服务&#xff0c;一定要挑选好正规的机构&#xff0c;这样的机构在出版过程中会为作者提供多项支持&#xff0c;对顺利发表是有帮助的。 科研领域英文论文专业润色包含这些内容&#xff…

SC-Lego-LOAM建图与ndt_localization的实车实现

参考&#xff1a;https://blog.csdn.net/weixin_44303829/article/details/121524380 https://github.com/AbangLZU/SC-LeGO-LOAM.git https://github.com/AbangLZU/ndt_localizer.git 将建图和定位分别使用lego-loam和ndt来进行&#xff0c;实车上的效果非常不错&#xff0c;…

SeetaFace6人脸特征提取与对比C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…

Threejs 动态修改InstanceMesh实例化几何体中单个实例的颜色

目录 InstanceMesh多实例 场景 思路 注意点 实现 效果 InstanceMesh多实例 instanceMesh 是使用InstancedMesh类来创建实例化的几何体。它适用于当需要大量重复的几何体时&#xff0c;但是每个实例之间有不同的变换属性&#xff08;如位置、旋转、缩放等&#xff09; 场…

LangChain:大模型框架的深度解析与应用探索

在数字化的时代浪潮中&#xff0c;人工智能技术正以前所未有的速度蓬勃发展&#xff0c;而大模型作为其中的翘楚&#xff0c;以生成式对话技术逐渐成为推动行业乃至整个社会进步的核心力量。再往近一点来说&#xff0c;在公司&#xff0c;不少产品都戴上了人工智能的帽子&#…

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…

模拟无线音频传输实验

zkhengyang进数字音频系统研究开发交流答疑群(课题组) 一个单管调频无线话筒模块一台调频收音机&#xff0c;全部自己动手制作调试&#xff0c;无线话筒模块可以接话筒mic&#xff0c;人讲话&#xff0c;收音机接受到语音信号&#xff0c; 或者直接输入模拟音频音乐信号&#…

CentOS 8.5 安装配置 squid 6.9 代理服务器 Windows10 系统设置http代理 详细教程

1 下载地址: 官网下载 2 通过xftp等方式上传到服务器 #查看环境 [rootlocalhost ~]# cat /etc/redhat-release CentOS Stream release 8 [rootlocalhost ~]# uname -a Linux localhost.localdomain 4.18.0-552.el8.x86_64 #1 SMP Sun Apr 7 19:39:51 UTC 2024 x86_64 x86_6…

24寸2K显示器 - HKC G24H2

&#x1f525;&#x1f5a5;️ 嘿&#xff0c;大家好&#xff01;今天&#xff0c;我要给大家介绍一款超棒的显示器——HKCG24H2&#xff01;这款显示器可是个全能选手&#xff0c;无论你是工作狂人还是游戏迷&#xff0c;它都能满足你的需求&#xff01; &#x1f60e;&#x…

AWTK 开源串口屏开发(18) - 用 C 语言自定义命令

AWTK-HMI 内置了不少模型&#xff0c;利用这些模型开发应用程序&#xff0c;不需要编写代码即可实现常见的应用。但是&#xff0c;有时候我们需要自定义一些命令&#xff0c;以实现一些特殊的功能。 本文档介绍如何使用 C 语言自定义命令。 1. 实现 hmi_model_cmd_t 接口 1.1…

wordpress主题 7B2 PRO主题5.4.2免授权直接安装

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 WordPress 资讯、资源、社交、商城、圈子、导航等多功能商用主题&#xff1a;B2 PRO 其设计风格专业且时尚&#xff0c;功能十分强大&#xff0c;包括多栏布局、自定义页面、强大的主…

250 基于matlab的5种时频分析方法((短时傅里叶变换)STFT

基于matlab的5种时频分析方法&#xff08;(短时傅里叶变换)STFT,Gabor展开和小波变换,Wigner-Ville&#xff08;WVD&#xff09;,伪Wigner-Ville分布(PWVD),平滑伪Wigner-Ville分布&#xff08;SPWVD&#xff09;,每条程序都有详细的说明&#xff0c;设置仿真信号进行时频输出。…

Netty核心组件介绍

Netty是一款用于创建高性能网络应用程序的高级框架。Netty的核心组件如下&#xff1a; Channel回调Future事件和ChannelHander Channel channel是Java NIO的一个基本构造。可以把Channel看作是传入或传出数据的载体。它可以被打开或关闭&#xff0c;连接或断开连接。 回调 …

JVM---垃圾回收

目录 一、C/C的内存管理 二、Java的内存管理 三、垃圾回收的对比 四、Java的内存管理和自动垃圾回收 五、方法区的回收 手动触发回收 六、堆回收 如何判断堆上的对象可以回收&#xff1f; 引用计数法 可达性分析算法 五种对象引用 软引用 软引用的使用场景-缓存 弱引用 虚…

window.location.href的介绍及使用

目录 介绍&#xff1a; 获取当前 URL 设置新的 URL URL 的组成部分 解析 URL 参数 什么是片段标识符的URL&#xff1f; 使用new URL&#xff1a; 输出的部分解释&#xff1a; 假如我们需要获取路径上的最后一级的路径名&#xff1a; 介绍&#xff1a; window.location.h…