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的读写协议。 |