首页传感器 › STM32通过软件模拟 IIC 驱动温湿度传感器HTU21D

STM32通过软件模拟 IIC 驱动温湿度传感器HTU21D

1.温湿度传感器模块HTU21D产品简介

基于法国Humirel公司高性能的湿度感应元件制成,新一代HTU21D温度和湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚DFN 封装, 底面3x3mm,高度1.1mm。传感器输出经过标定的数字信号,标准 I2C格式。多样化的输出方式,宽的工作电压范围,同时具有很高的温度精度和湿度精度。HTU21系列模块专为低功耗小体积应用设计,具有良好的品质、快的响应速度、抗干扰能力强、性价比高等优点,微小的体积(3x3mm)、极低的功耗

法国Humirel  数字输出温湿度传感器HTU21D替代SHT21、SHT20

数字输出温湿度传感器模块HTU21D传感器重要参数
供电电压:1.5V—3.6V

湿度测量范围:0—100%RH

温度测量范围: -40℃—125℃

大消耗功率: 2.7uW

通信方式:I2C

湿度精度范围(10%RH to 95%RH): ±2%RH

湿度迟滞:±1%RH

测量时间:50ms

年漂移量:-0.5%RH/year

响应时间:5 s

QQ图片20210202114038

HTU21D温度和湿度传感器为OEM应用提供一个准确可靠的温湿度测量数据。通过一个微控制器的接口和模块连接达到温度和湿度数字输出。HTU21D 的分辨率可以通过输入命令进行改变(8/12bit 乃至12/14bit 的RH/T),传感器可以检测到电池低电量状态,并且输出校验和,有助于提高通信的可靠性。

2.规格参数

20190402053241251

25摄氏度,3.3V供电时的电气特性如下:

QQ图片20210203112015

印刷板设计注意:

如果SCL 和SDA 信号线相互平行并且非常接近,有可能导致信号串扰和通讯失败。解决方法是在两个信号线之间放置VDD 或GND,将信号线隔开,或使用屏蔽电缆。此外,降低SCL 频率也可能提高信号传输的完整性。须在电源引脚(VDD, GND)之间加一个100nF 的去藕电容,用于滤波。此电容应尽量靠近传感器。

QQ图片20210203112214

引脚定义:

20190402053242703

本实验采用的为成品HTU21D模块,直接与 STM32 开发板连接即可。

引脚 说明

电源引脚 (VDD, GND) HTU21 的供电范围为 1.8VDC - 3.6VDC,推荐电压为 3.0V。电源(VDD)和接地(VSS)之间须连接一个0.1uF的去耦电容,且电容的位置应尽可能靠近传感器。

串行时钟输入(SCK) SCK 用于微处理器与 HTU21 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在小 SCK 频率。

串行数据 (DATA) DATA 引脚为三态结构,用于读取传感器数据。当向传感器发送命令时, DATA 在 SCK 上升沿有效且在 SCK 高电平时必须保持稳定。 DATA 在 SCK 下降沿之后改变。当从传感器读取数据时, DATA 在 SCK 变低以后有效,且维持到下一个 SCK 的下降沿。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如: 10kΩ)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。

3.通讯过程

Htu21d遵循标准的 IIC 进行通信,关于 IIC 的介绍请看—>IIC专题(一)——基础知识准备。本文设计也多参考此篇文章–>STM32F10x_模拟I2C读写EEPROM。

3.1 IIC启动信号

启动传输,发送一位数据时,包括 DATA 线在 SCK 线高电平期间一个向低电平的跳变。

QQ图片20210203112339

QQ图片20210203112528

3.2 IIC停止信号

终止传输,停止发送数据时,包括 DATA 线在 SCK 线高电平期间一个向高电平的跳变。

QQ图片20210203112633

3.2 IIC数据传输

SCL时钟电平为低, 可以改换SDA数据线的电平,在SCL上升沿的过程将SDA数据发送出去。SCL为高电平时,SDA上的数据保持稳定。

I2C 是以字节(8位)的方式进行传输,总线上每传输完1字节之后会有一个应答信号,应答信号总是由接收方来产生。通信过程的时钟由主器件(主机)提供。

IIC 写一字节:

QQ图片20210203112743

QQ图片20210203112909

数据发送结束,进行应答操作。

0:表示从机应答,可以继续下一步操作;

1:表示从机非应答,不能进行下一步操作。

IIC读一字节:

IIC读取操作类似于发送,只是传输数据方向相反。

QQ图片20210203113029

QQ图片20210203113159

3.3 IIC应答信号处理

等待应答:

QQ图片20210203113321

产生应答:

QQ图片20210203113428

产生非应答:

QQ图片20210203113505

4.HTU21D数据测量

测量命令如下表:

QQ图片20210203113601

本文采用非保持主机:

//非主机模式

#define HTU_TEMP    0xf3

#define HTU_HUMI    0Xf5

在非主机模式下, MCU 需要对传感器状态进行查询。此过程通过发送一个启动传输时序,之后紧接着是如图所示的I2C 首字节(1000’0001)来完成。如果内部处理工作完成,单片机查询到传感器发出的确认信号后,相关数据就可以通过MCU 进行读取。如果测量处理工作没有完成,传感器无确认位(ACK)输出,此时必须重新发送启动传输时序。

20190402053246262

传感器初始化:

QQ图片20210203113647

传感器数据读取与转换:

传感器内部设置的默认分辨率为相对湿度12位和温度14 位。 SDA 的输出数据被转换成两个字节的数据包,高字节MSB 在前(左对齐)。每个字节后面都跟随一个应答位。两个状态位,即LSB 的后两位在进行物理计算前须置‘0’。

转换计算如下图:

20190402053247716

源代码实现:

QQ图片20210203113743

显示方式:

本实验通过串口打印和 TFTLCD 显示,串口打印有助于程序的调试。

QQ图片20210203113848

对于测量出来float的数值如何直接显示到LCD上,代码中简要的介绍了两种方式:

LCD显示方式1:sprintf函数将结果打印到test数组里,转换成字符串显示(LCD_ShowString)。

LCD显示方式2:将得到的数值拆分成整数和小数直接显示在液晶(LCD_ShowxNum)。

液晶显示直接参考正点原子的驱动。

转载请注明出处:传感器应用_仪表仪器应用_智能硬件产品 – 工采资讯 http://news.isweek.cn/16576.html

上一篇:

下一篇:

您必须启用javascript在这里看到验证码!

×
用户注册

 

登录 忘记密码?
×
用户登录

 

注册 忘记密码?