SHT10温湿度传感器的设计及其应用
2010-12-18 09:32:59
来源:《半导体器件应用》2010年01-02月刊
点击:1542
0 引言
随着社会的不断发展前进,人们进入了数字化信息时代,对生活质量的要求越来越高。汽车、空调、除湿器、烘干机等都已家喻户晓,它们都离不开对温度、湿度等环境因素的要求。
瑞士Sensirion公司推出了SHTxx单片数字温湿度集成传感器。采用CMOS过程微加工专利技术(CMOSens technology),确保产品具有极高的可靠性和出色的长期稳定性。该传感器由1个电容式聚合体测湿元件和1个能隙式测温元件组成,并与1个14位A/D转换器以及1个2-wire数字接口在单芯片中无缝结合,使得该产品具有功耗低、反应快、抗干扰能力强等优点。
1 SHTl0的特点
SHTlO的主要特点如下:
(1)相对湿度和温度的测量兼有露点输出;
(2)全部校准,数字输出;
(3)接口简单(2-wire),响应速度快;
(4)超低功耗,自动休眠;
(5)出色的长期稳定性;
(6)超小体积(表面贴装);
(7)测湿精度±4.5%RH,测温精度±0.5℃(25℃)。
2 引脚说明及接口电路
(1) 典型应用电路
SHTl0典型应用电路如图1所示。
(2)电源引脚(VDD、GND)
SHTl0的供电电压为2.4V~5.5V。传感器上电后,要等待11ms,从“休眠”状态恢复。在此期间不发送任何指令。电源引脚(VDD和GND)之间可增加1个100nF的电容器,用于去耦滤波。
(3) 串行接口
SHTlO的两线串行接口(bidirectional 2-wire)在传感器信号读取和电源功耗方面都做了优化处理,其总线类似I2C总线但并不兼容I2C总线。
① 串行时钟输入(SCK)。SCK引脚是MCU与SHT10之间通信的同步时钟,由于接口包含了全静态逻辑,因此,没有最小时钟频率。
② 串行数据(DATA)。DATA引脚是1个三态门,用于MCU与SHT10之间的数据传输。DATA的状态在串行时钟SCK的下降沿之后发生改变,在SCK的上升沿有效。在数据传输期间,当SCK为高电平时,DATA数据线上必须保持稳定状态。
为避免数据发生冲突,MCU应该驱动DATA使其处于低电平状态,而外部接1个上拉电阻将信号拉至高电平。
3 命令与时序
(1) SHT10命令
SHT1O命令如表1所列。
(2)命令时序
发送一组“传输启动”序列进行数据传输初始化,如图2所示。其时序为:当SCK为高电平时DATA翻转保持低电平,紧接着SCK产生1个发脉冲,随后在SCK为高电平时DATA翻转保持高电平。
紧接着的命令包括3个地址位(仅支持“000”)和5个命令位。SHT10指示正确接收命令的时序为:在第8个SCK时钟的下降沿之后将DATA拉为低电平(ACK位),在第9个SCK时钟的下降沿之后释放DATA(此时为高电平)。
(3)测量时序(RH和T)
“000 00101”为相对湿度(RH)测量,“000 000ll”为温度(θ)测量。发送一组测量命令后控制器要等待测量结束,这个过程大约需要20/80/320ms,对应其8/12/14位的测量。测量时间随内部晶振的速度而变化,最多能够缩短30%。SHT10下拉DATA至低电平而使其进入空闲模式。重新启动SCK时钟读出数据之前,控制器必须等待这个“数据准备好”信号。
接下来传输2个字节的测量数据和1个字节的CRC校验。MCU必须通过拉低DATA来确认每个字节。所有的数据都从MSB开始,至LSB有效。例如对于12位数据,第5个SCK时钟时的数值作为MSB位;而对于8位数据,第1个字节(高8位)数据无意义。
确认CRC数据位之后,通信结束。如果不使用(2RC-8)校验,控制器可以在测量数据LSB位之后,通过保持ACK位为高电平来结束本次通信。
测量和通信结束后,SHTlO自动进入休眠状态模式。
(4)复位时序
如果与SHT10的通信发生中断,可以通过随后的信号序列来复位串口,如图3所示。保持DATA为高电平,触发SCK时钟9次或更多,接着在执行下次命令之前必须发送一组“传输启动”序列。这些序列仅仅复位串口,状态寄存器的内容仍然保留。
(5)状态寄存器读写时序
SHT10通过状态寄存器实现初始状态设定。
读状态寄存器时序如图4所示。
写状态寄存器时序如图5所示。
状态寄存器位如表2所列。
4 几点说明
①CRC-8校验。整个数据的传输过程都由8位校验保证,确保任何错误的数据都能够被检测到并删除[1]。
②为保持自身发热温升小于0.1℃,SHTxx的激活时间不超过10%。如12位精度测量,每秒最多测量2次。
③转换为物理量输出。相对湿度输出转换公式为:
其中,RHlinear为25℃时相对湿度的线性值,SORH为传感器输出的相对湿度的数值,c1,c2,c3为系数,如表3所列。
当测量温度与25℃相差较大时,则需要考虑传感器的温度系数:
其中,RHtrue为温度不等于25℃时相对湿度的实际值,θc为当前温度,t1、t2是系数,如表4所列。
由于湿度与温度经由同一块芯片测量而得,因此SHT10可以同时实现高质量的露点测量。具体算法可参阅参考文献[2],这里不再详述。
5 SHT10与ATmega8L的应用实例
这里以SHTl0与Atmel公司低功耗8位RISC指令集的ATmega8L(内部8MHz振荡频率)MCU的接口电路为例,给出实际应用电路及控制程序实例。本例采用ATmega8L微控制器控制SHT10,读取温湿度数据,并将结果显示在LCDl602(采用4位模式)上,如图6所示。
程序采用C语言模块化设计,大大方便被移植到其他MCU上使用,提高了工作效率。
随着社会的不断发展前进,人们进入了数字化信息时代,对生活质量的要求越来越高。汽车、空调、除湿器、烘干机等都已家喻户晓,它们都离不开对温度、湿度等环境因素的要求。
瑞士Sensirion公司推出了SHTxx单片数字温湿度集成传感器。采用CMOS过程微加工专利技术(CMOSens technology),确保产品具有极高的可靠性和出色的长期稳定性。该传感器由1个电容式聚合体测湿元件和1个能隙式测温元件组成,并与1个14位A/D转换器以及1个2-wire数字接口在单芯片中无缝结合,使得该产品具有功耗低、反应快、抗干扰能力强等优点。
1 SHTl0的特点
SHTlO的主要特点如下:
(1)相对湿度和温度的测量兼有露点输出;
(2)全部校准,数字输出;
(3)接口简单(2-wire),响应速度快;
(4)超低功耗,自动休眠;
(5)出色的长期稳定性;
(6)超小体积(表面贴装);
(7)测湿精度±4.5%RH,测温精度±0.5℃(25℃)。
2 引脚说明及接口电路
(1) 典型应用电路
SHTl0典型应用电路如图1所示。
(2)电源引脚(VDD、GND)
SHTl0的供电电压为2.4V~5.5V。传感器上电后,要等待11ms,从“休眠”状态恢复。在此期间不发送任何指令。电源引脚(VDD和GND)之间可增加1个100nF的电容器,用于去耦滤波。
(3) 串行接口
SHTlO的两线串行接口(bidirectional 2-wire)在传感器信号读取和电源功耗方面都做了优化处理,其总线类似I2C总线但并不兼容I2C总线。
① 串行时钟输入(SCK)。SCK引脚是MCU与SHT10之间通信的同步时钟,由于接口包含了全静态逻辑,因此,没有最小时钟频率。
② 串行数据(DATA)。DATA引脚是1个三态门,用于MCU与SHT10之间的数据传输。DATA的状态在串行时钟SCK的下降沿之后发生改变,在SCK的上升沿有效。在数据传输期间,当SCK为高电平时,DATA数据线上必须保持稳定状态。
为避免数据发生冲突,MCU应该驱动DATA使其处于低电平状态,而外部接1个上拉电阻将信号拉至高电平。
3 命令与时序
(1) SHT10命令
SHT1O命令如表1所列。
(2)命令时序
发送一组“传输启动”序列进行数据传输初始化,如图2所示。其时序为:当SCK为高电平时DATA翻转保持低电平,紧接着SCK产生1个发脉冲,随后在SCK为高电平时DATA翻转保持高电平。
紧接着的命令包括3个地址位(仅支持“000”)和5个命令位。SHT10指示正确接收命令的时序为:在第8个SCK时钟的下降沿之后将DATA拉为低电平(ACK位),在第9个SCK时钟的下降沿之后释放DATA(此时为高电平)。
(3)测量时序(RH和T)
“000 00101”为相对湿度(RH)测量,“000 000ll”为温度(θ)测量。发送一组测量命令后控制器要等待测量结束,这个过程大约需要20/80/320ms,对应其8/12/14位的测量。测量时间随内部晶振的速度而变化,最多能够缩短30%。SHT10下拉DATA至低电平而使其进入空闲模式。重新启动SCK时钟读出数据之前,控制器必须等待这个“数据准备好”信号。
接下来传输2个字节的测量数据和1个字节的CRC校验。MCU必须通过拉低DATA来确认每个字节。所有的数据都从MSB开始,至LSB有效。例如对于12位数据,第5个SCK时钟时的数值作为MSB位;而对于8位数据,第1个字节(高8位)数据无意义。
确认CRC数据位之后,通信结束。如果不使用(2RC-8)校验,控制器可以在测量数据LSB位之后,通过保持ACK位为高电平来结束本次通信。
测量和通信结束后,SHTlO自动进入休眠状态模式。
(4)复位时序
如果与SHT10的通信发生中断,可以通过随后的信号序列来复位串口,如图3所示。保持DATA为高电平,触发SCK时钟9次或更多,接着在执行下次命令之前必须发送一组“传输启动”序列。这些序列仅仅复位串口,状态寄存器的内容仍然保留。
(5)状态寄存器读写时序
SHT10通过状态寄存器实现初始状态设定。
读状态寄存器时序如图4所示。
写状态寄存器时序如图5所示。
状态寄存器位如表2所列。
4 几点说明
①CRC-8校验。整个数据的传输过程都由8位校验保证,确保任何错误的数据都能够被检测到并删除[1]。
②为保持自身发热温升小于0.1℃,SHTxx的激活时间不超过10%。如12位精度测量,每秒最多测量2次。
③转换为物理量输出。相对湿度输出转换公式为:
其中,RHlinear为25℃时相对湿度的线性值,SORH为传感器输出的相对湿度的数值,c1,c2,c3为系数,如表3所列。
当测量温度与25℃相差较大时,则需要考虑传感器的温度系数:
其中,RHtrue为温度不等于25℃时相对湿度的实际值,θc为当前温度,t1、t2是系数,如表4所列。
由于湿度与温度经由同一块芯片测量而得,因此SHT10可以同时实现高质量的露点测量。具体算法可参阅参考文献[2],这里不再详述。
5 SHT10与ATmega8L的应用实例
这里以SHTl0与Atmel公司低功耗8位RISC指令集的ATmega8L(内部8MHz振荡频率)MCU的接口电路为例,给出实际应用电路及控制程序实例。本例采用ATmega8L微控制器控制SHT10,读取温湿度数据,并将结果显示在LCDl602(采用4位模式)上,如图6所示。
程序采用C语言模块化设计,大大方便被移植到其他MCU上使用,提高了工作效率。
本文为哔哥哔特资讯原创文章,未经允许和授权,不得转载,否则将严格追究法律责任;
暂无评论