分类:
2009-09-30 13:38:57
一、SHT11典型电路
图1 典型电路
电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。
二、SHT11原理
温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,
串行时钟输入 (SCK)
SCK 用于微处理器与STH11 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCK 频率。
串行数据 (DATA)
DATA 三态门用于数据的读取。DATA 在SCK 时钟下降沿之后改变状态,并仅在SCK 时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。简单的说,就是DATA数据线上传输的数据只有在SCK的高电平时有效,这个时候,DATA数据线上的电平不能“乱动”。串行数据线需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平。
起始码
起始码的作用是这样的,在你要发送命令或数据前,SHT11怎么判断你要发命令或数据了呢?就是通过起始码来判断的。起始码的时序图如下图所示:
图2 启动时序
来解释一下这个时序图。当SCK 时钟高电平(上面说过,这个时候DATA上的数据才有效)时DATA 翻转为低电平,紧接着SCK 变为低电平,随后是在SCK 时钟高电平时DATA 翻转为高电平。即在两个连续的SCK高电平期间,先检测到一个DATA的下降沿,先检测到一个DATA的下降沿就表示一下起始码的到来。
应答
在第8 个SCK 时钟的下降沿之后,将DATA下拉为低电平(ACK 位)。在第9 个SCK 时钟的下降沿之后,释放DATA(恢复高电平)。
发送命令
在起始码后面包含三个地址位(目前只支持“000”)和五个命令位表示对指定的地址发送相关的命令。“STH11”的命令有:
图3 SHT11的命令集
测量时序(RH 和 T)
发布一组测量命令(‘00000101’表示相对湿度RH,‘00000011’表示温度T)后,控制器要等待测量结束,从采样到计算出结果(注意,不是最终结果,最终结果要到程序中自己算)是要花费时间的。这个过程需要大约20/80/320ms , 分别对应8/12/14bit 测量。确切的时间随内部晶振速度,最多可能有-30%的变化。SHT11 通过下拉DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK 时钟前,必须等待这个“数据备妥”信号来读出。数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。
接着传输2 个字节的测量数据和1 个字节的CRC 奇偶校验。uC 需要通过下拉DATA 为低电平,以应答每个字节。所有的数据从MSB 开始,右值有效(例如:对于12bit 数据,从第5 个SCK 时钟起算作MSB;而对于 8bit 数据,首字节则无意义)。用CRC 数据的确认位,表明通讯结束。如果不使用CRC-8 校验,控制器可以在测量值LSB 后,通过保持确认位ack 高电平,来中止通讯。在测量和通讯结束后,SHT11 自动转入休眠模式。
下图是以测量湿度为例的时序图,上面我已经给出了比较具体的解释。读者很有必要好好分析其原由。
图四 温度测量时序
通讯复位时序
如果与STH11 通讯中断,下列信号时序可以复位串口:当DATA 保持高电平时,触发SCK 时钟9 次或更多。在下一次指令前,发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留。
图五 SHT11复位时序