SHT21芯片的精度相当高,其中相对湿度在20%~80%时,湿度的典型误差为±2%RH,最大也只有±3%RH。温度在10℃~60℃时误差典型值为±0.3℃,最大也只有±0.5℃。SHT21供电电压范围为2.1~3.6V,技术资料推荐电源电压为3.0V,这里采用3.3V。接线如图1-5所示,电源(VDD)和接地(VSS)之间需连接一个100nF的去耦电容,在PCB布线时让该电容的位置尽可能靠近传感器。SHTSDA和SHTSCL连接10KΩ上拉电阻,用于传感器的数据输入和输出。SHT21采用标准的I2C通讯协议。传感器上电后大约需要15毫秒时间完成初始化,SCL为高电平则表示SHT21初始化完成可以接收主机发送的命令。
2. 系统软件设计
2.1 总体流程图
系统的操作系统使用Windows CE系统,该系统是微软公司嵌入式、移动计算平台的基础,作为一个开放的、可升级的32位嵌入式操作系统,它有其他操作系统无法比拟的稳定性和扩展性。软件设计是在EVC下完成,EVC是基于Visual C/C++发展的嵌入式版本,使用方便,且与Windows系列软件有较好的兼容性。Windows CE操作系统是多线程操作系统,本设计采用了多线程处理方式。系统创建线程后,初始化传感器和定时器,然后等待定时时间。如果定时时间到了,处理器则会读取传感器数据,然后计算天气情况,最后把数据发送到上位机。系统流程图如图2-1所示:
2.2 MPL115A2的软件设计
MPL115A2使用7位地址为0x60,在发送读写命令时分别增加一位读写位,其中0为写,1为读,因此实际读写的地址为8位。发送写命令后,发送0x12启动转换压力和温度,然后在发送0x01,最后停止本次写操作。0x01字节为一个寄存器的指针,没有这个命令则MPL115A2不会启动转换。MPL115A2典型的转换时间为3ms [4]。
MPL115A2的读数据流程如图2-3所示。该图所示为读取压力数据,首先发送写命令0xC1,然后发送读压力数据命令0x00,复位I2C总线,发送读命令0x60,读取高8位压力数据,最后读取低8位压力数据。MPL115A2转换命令还有0x10和0x11,分别是启动压力转换和温度转换。温度读命令为0x02,补偿系统命令为0x04。其中数据寄存器的地址是自动递增的。
MPL115A2还能提供温度数据输出,输出数据位也是10位。在每次启动转换后可以读取地址0x02来获取温度的A/D数值。温度与A/D转换值为一个负斜率关系,每-5.35个字为1℃。芯片在25℃时温度A/D转换值为472。温度值具体计算公式为:Temp=(Tadc-605.75)/-5.35。虽然MPL115A2可以提供温度值,但是飞思卡尔技术人员不建议这样使用,因为此温度的主要作用是作为压力计算的一个补偿因子。<fbits+zpad)
</fbits+zpad)