SHT15在嵌入式系统中的应用方案
图3 微控制器与SHT15的硬件连接图
3 软件设计
在程序开始,控制器S3C2440A需要用一组“启动传输”时序,来表示数据传输的初始化。它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平的启动,如图4所示,随后是在SCK时钟高电平时DATA翻转为高电平。接着SCK变为低电平,随后又变为高电平,SCK时钟为高电平时,DATA再次翻转为高电平。
图4 启动传输时序
控制器发出启动命令后,接着发出一个后续8为命令码。后续命令包含3个地址位(目前只支持000’)和5个命令位。相应代码对应的命令集如表2所示。
表2 SHT15命令集
SHT15接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为从机的ACK;在第9个时钟下降沿之后,从机释放DATA(恢复高电平)总线;释放总线后,从机开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;主机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;从机在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,主机将DATA总线拉低作为ACK信号。然后释放总线DATA;在随后8个SCK周期下降沿,从机发出低字节数据;接下来的SCK下降沿,主机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿从机发出CRC校验数据,主机不予应答(NACK)则表示测量结束。
本设计中微处理器为三星公司的S3C2440A,通过对I/O寄存器编程来模拟通信过程。该处理器的I/O口可根据需要设置成输入、输出,高阻等状态。在软件实现过程中通过子函数来实现I/O口状态的改变。
以上函数可以实现SCK和DATA总线的各种输入与输出状态。在SHT15的通信中还需要延时函数,设计时采用函数void DelaylIn8(U32 tt)实现软延时。这样就能完成对SHT15通信协议的模拟。
4 温湿度及露点的计算
4.1 相对湿度
SHT15可通过I2C总线直接输出数字量湿度值,其相对湿度系数输出特性曲线如图5所示。
图5 从SORH转换为相对湿度
由图5可知,SHT15的输出特性呈一定的非线性,为了补偿湿度传感器非线性以获取准确数据,采用式(1)来修正输出数值。
其中C1,C2,C3的值如表3所示,SHT15的相对湿度输出值(SORH)为12 bit。
表3 温度线性补偿系数
4.2 温度计算及相对湿度的温度补偿
该温湿度传感器具有很好的线性,可用式(2)将数字输出转换为温度值。温度转换系数如表4所示。
表4 温度转换系数
实际测量时利用式(3)修正温度系数。温度补偿系数如表5所示。
表5 温度补偿系数
4.3 露点计算
露点是一个特殊的温度值,是空气保持某一定湿度必须达到的最低温度。当空气的温度低于露点时,空气容纳不了过多的水份,这些水份会变成雾、露水或霜。露点可以根据当前相对湿度值和温度值计算得出,具体的计算公式如下:
式中,T为当前温度值,SORH为相对湿度值,Dp为露点。
5 实验结果
采用测氡仪对室内氡浓度进行测量,同时测量温湿度,为了保证测量的准确性,在不同地方对大气中进行了测量,同时测量测试为20次,求平均值计算,测量结果如表6所示。
表6 氡浓度及温湿度测量值
6 结束语
本文提出了数字式温湿度传感器SHT15在嵌入式系统中的应用方案,并详细介绍了测氡仪温湿度测控模块的设计过程。由于SHT15集成了14位A/D转换器,采用数字输出,具有精度高、体积小、抗干扰性强等优点。作为测氡仪温湿度的监控系统,能够满足系统设计的要求。该设计也为其在其他监控设备中的应用提供参考作用。
- SN2005学习系统 数字语音室解决方案(05-19)
- 以可编程DSP架构应对TD-SCDMA以及TD-LTE带来的设计挑战 (02-14)
- ARM-μCLinux嵌入式系统启动引导的实现(07-26)
- 多核处理器架构及调试方案(03-28)
- 基于DSP的电源解决方案(06-13)
- 间歇性Bug最佳解决方案(09-24)