SHT11(IIC协议的温湿度传感器)简介和编程方法
SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。共主要特点如下:
◆高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;
◆提供二线数字符串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高;
◆测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程米选择);
◆测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;
◆封装尺寸超小(7.62 mm×5.08mm×2.5 mm),测量和通信结束后,自动转入低功耗模式;
◆高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。
2SHT11的引脚功能
SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,接口非常简单,引脚名称及排列顺序如
图1所示。
各引脚的功能如下:
◇脚1和4--信号地和电源,其工作电压范围是2.4~5.5 V;
◇脚2和脚3--二线串行数字接口,其中DA-TA为数据线,SCK为时钟线;
◇脚5~8--未连接。
3 SHT11的内部结构和工作原理
温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图2所示。该芯片包括一个电容性聚合体湿度敏感组件和一个用能隙材料制成的温度敏感组件。这两个敏感组件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;然后进入一个14位的A/D转换器;最后经过二线串行数字接口输出数字信号。SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数存储在校准寄存器中;在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHT11内部还集成了一个加热组件,加热组件接通后可以将SHT11的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器组件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHT11温度升高、相对湿度降低,较加热前,测量值会略有差异。
微处理器是通过二线串行数字接口与SHT11进行通信的。通信协议与通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口仿真该通信时序。微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表1所列。
4 SHT11应用设计
微处理器采用二线串行数字接口和温湿度传感器芯片SHT11进行通信,所以硬件接门设计非常简单;然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口仿真通信协议。
4.1 硬件设计
SHT11通过二线数字符串行接口来访问,所以硬件接口电路非常简单。需要注意的地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求;当工作电压高于4.5V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率则为1 MHz。硬件连接如图3所示。
4.2 软件设计
微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线。该二线串行通信协议和I2C协议是不兼容的。在程序开始,微处理器需要用一组"启动传输"时序表示数据传输的启动,如图4所示。当SCK时钟为高电平时,DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平时,DATA再次翻转为高电平。
&nb sp; SHT11湿度测试时序如图5所示。其中,阴影部分为SHT11控制总线。主机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位;发送完该命令码,将DATA总线设为输入状态等待SHT11的响应;SHT11接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为从机的ACK;在第9个时钟下降沿之后,从机释放DATA(恢复高电平)总线;释放总线后,从机开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;主机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;从机在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,主机将DATA总线拉低作为ACK信号。然后释放总线DATA;在随后8个SCK周期下降沿,从机发出低字节数据;接下来的SCK下降沿,主机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿从机发出CRC校验数据,主机不予应答(NACK)则表示测量结束。
由于微处理器通过二线串行数字接口访问湿度传感器SHT11,而访问协议是芯片生产商白定义的,所以需要用通用I/O口仿真该通信协议。我们选用Atmel公司的微处理器ATmega128。通过对I/O口寄存器的编程,该处理器的I/O口可以根据需要设置成输入、输出、高阻等状态。这为仿真该通信协议提供了条件。在软件实现过程
巾,通过宏定义来实现I/O口状态的改变。
通过以上宏定义,可以实现SCK和DATA总线的各种输入和输出状态。为了仿真该二线串行数字协议,还需要一个延时函数。
WINAVR库函数提供了一个延时函数_delay_loop_2(unsigned char s),该延时函数运行用4个时钟周期,所以自定义延时1μs函数可以定义如下:
基于以上宏定义和延时函数,可以方便地使SCK和DATA总线输出持续一定时间的高电平或低电平,从而可以模拟图5所示的温湿度传感器SHT11的读写协议。
4.3 温度和湿度值的计算
4.3.1 湿度线性补偿和温度补偿
SHT11可通过DATA数据总线直接输出数字量湿度值。该湿度值称为"相对湿度",需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数,取值如表2所列。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数,取值如表3所列。
4.3.2 温度值输出
由于SHT11是采用PTAT能隙材料制成的温度敏感组件,因而具有很好的线性输出。实际温度值可由下式算得:
Temperature=d1+d2×SOT
式中:d1和d2为特定系数,d1的取值与SHT11工作电压有关,d2的取值则与SHT11内部A/D转换器采用的分辨率有关,其对应关系分别如表4和表5所列。
4.3.3露点计算
露点是一个特殊的温度值,是空气保持某一定湿度必须达到的最低温度。当空气的温度低于露点时,空气容纳不了过多的水分,这些水分会变成雾、露水或霜。露点可以根据当前相对湿度值和温度值计算得出,具体的计算公式如下:
LogEW=0.66077+7.5×T/(237.3+T)+log10(SORH)-2
Dp=((0.66077-logEW)×237.3)/(logEW-8.16077)
式中:T为当前温度值,SORH为相对湿度值,Dp为露点。
5 结论
温湿度传感器 SHT11 集温度传感器和湿度传感器于一体,因此采用 SHT11 进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;另外 SHT11 芯片内部集成了 14 位 A / D 转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。该芯片在温湿度监测、自动控制等领域均已得到广泛应用。
SHT11(IIC协议的温湿度传感器)简介和编程方法相关推荐
- 基于IIC总线的温湿度传感器,你用过吗
大家好,我是程序员小哈. 又到了知识分享时间,今天我给大家分享一个温湿度传感器模块,我们之前分享过DHT11和DHT21两款温湿度传感器,它俩是基于单总线输出信号的传感器模块,只需要一个GPIO即可实 ...
- 模拟IIC读取SHT30温湿度传感器数据
文章目录 1 i2c.c 2 i2c.h 3 crc.c 4 crc.h 1 i2c.c /*** @brief SHT30温湿度传感器相关,使用模拟IIC进行数据的读取*/#include < ...
- STM32F103使用硬件IIC驱动SHT30温湿度传感器
文章目录 前言 一.SHT30温湿度传感器原理图 二.代码部分 1.SHT30.c文件 2.SHT30.h文件 总结 前言 SHT30是一种常见的温湿度传感器,该传感器广泛应用于各种场景,小米的温湿度 ...
- STM32F103C8T6使用modbus协议读取温湿度传感器
文章目录 任务目标 任务材料 移植RT-Thread cubemx安装 keil安装 Cube配置 项目配置 keil代码修改 移植freeModebusRTU(HAL) 创建任务 编译并烧录 结果 ...
- TCP/IP协议族(一) HTTP简介、请求方法与响应状态码
接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单 ...
- STM32模拟IIC驱动sht30温湿度传感器
最近有在使用sht30这个传感器,相比于新手常用的dht11传感器,sht30更精确,自己花了半小时调好了 所以拿出来分享给大家. sht30外观 驱动不是自己写的, 是采用CSDN上的一位朋友的 , ...
- nRF52笔记(8) IIC读取sht30温湿度传感器
1.平台的条件 1.1 软件平台:sdk14.2 1.2 硬件平台: nrf52832 2 说明: 只是介绍代码怎么使用,直接点 QQ: 1297311998 ,如果有什么问题,请高手不吝赐教 2.n ...
- stm32hal库应用笔记之硬件IIC读写SHTC31000温湿度传感器
话不多说上图: 完成的数据手册百度吧 嘻嘻 这是SHTC31000芯片的时序图: 这个怎么看我就不多解释了哈 SHTC3.h #ifndef SHTC3_SHTC3_H_ #define SHTC3_ ...
- 基于I2C协议利用STM32进行温湿度传感器的数据采集
目录 一.I2C总线通信协议的介绍 1.I2C简介 2.I2C总线时序图 3.五种速率 4.四种信号 5.I2C的优缺点 6.软件IIC和硬件IIC 二.创建工程 1.实验目的 2.工具的选择 3.相 ...
最新文章
- 64位Ubuntu上编译32位程序
- 企业网远程协助的小能手
- oracle大数据量更新引发的死锁问题解决方法及oracle分区和存储过程的思考
- 程序员四大忌 你该如何避免呢?
- CentOS 7核心安装及基本配置
- 15年资深产品经理判官:怎样搭建完整的产品矩阵
- C++ 输出当前所在的路径
- java类成员初始化_简单了解Java类成员初始化顺序
- python 转百分比_2020 | python必读书单
- matlab命令 脑电波,基于Matlab的脑电波信号处理
- 如何升级浏览器_手把手教你申请IOS14 Beta升级方法
- IPV6 Socket编程
- SQL server 2012 数据库还原操作
- android使用的数据,在 Android 应用中使用数据 - Xamarin | Microsoft Docs
- 2022年聚合工艺特种作业证考试题库及在线模拟考试
- SpringCloud 之分布式 CAP 定理
- 美国国家机器人计划2.0部分项目简介
- 开机后, 小键盘的灯不亮的解决方法
- 安装java进度条不动了_提示安装过程出错怎么处理啊?安装offi – 手机爱问
- 人工智能研究主要有哪三大学派,其特点是什么?