1 系统组成及硬件设计
温湿度感测系统将单片机与温湿度传感器等技术相结合,以PIC单片机为微控制器,利用数字温湿度传感器SHTll对环境的温度和相对湿度进行检测,通过二线串行接口将数字温湿度信号送至PIC微控制器,最后利用PIC微控制器完成相对湿度的非线性补偿和温度补偿,并将实际温度和相对湿度值送液晶显示器显示,从而实现对环境温湿度的测控。温湿度感测系统主要由温湿度传感器SHTll和PIC单片机以及162字符型液晶显示屏组成。
1.1 数字温湿度传感器SHTll
温湿度传感器SHTll将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图1所示。该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大,然后进入一个14位的A/D转换器,最后经过二线串行数字接口输出数字信号。SHTll在出厂前,都会在恒湿或恒温环境中进行校准,校准系数存储在校准寄存器中,在测量过程中,校准系数会自动校准来自传感器的信号。此外,SHTll内部还集成了一个加热元件,加热元件接通后可以将SHTll的温度升高5℃左右,同时功耗也会有所增加。此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。加热后SHTll温度升高、相对湿度降低,较加热前,测量值会略有差异。
单片机和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线,硬件接口电路非常简单。需要注意的是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHTll之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求,当工作电压高于4.5 V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率为1 MHz。由于所用单片机不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,并利用RA0口来虚拟数据线DATA,RA1口线来虚拟时钟线,并在DATA端接入一只10kΩ的上拉电阻,同时,在VDD及GND端接入一只0.1μF的去耦电容。
硬件连接如图2所示。
1.2 162字符型液晶显示模块
162字符型液晶显示模块是发展比较成熟的一种液晶显示屏,应用相当广泛。它是一类专用于显示字母、数字、符号等的点阵液晶显示模块,可显示两行,每行可以显示16个字符,162字符型液晶显示模块应用到温湿度感测系统中显示温湿度,直观方便又节约成本。
该显示屏是一个以若干5x8或5x11点阵块组成的显示字符群。其中,字符群中的每一个字符块为一个字符单位,字符间的点距和行距均为一个点的宽度。它的内部有字符发生器CGROM,可以显示160个5x7和32个5x10点阵字符,具有64个字节的CGRAM,可以自定义8个5x8或4个5x11点阵字符,有80个显示存储器DDRAM的地址。
162字符型液晶显示模块由16个引脚组成,具体的引脚功能如表1所示。
控制器接口信号说明:也就是RS、R/W和E信号的配合选择决定控制接口的4种模式,如表2所示。
162模块与单片机的接口电路如图3所示。
硬件将162模块的数据总线的低4位接为常态,在软件中设置数据总线长度为4位,4位数据总线时序图如图4所示。
2 系统软件设计
2.1 温湿度读取
单片机和温湿度传感器通信采用串行二线接口SCK和DATA,该二线串行通信协议和I2C协议是不兼容的。由于采用二线串行接口,对于SHTll的操作按照严格时序,共有5条用户命令,分别是测量温度命令(03H)、测量湿度命令(05H)、读寄存器状态命令(07H)、写寄存器状态命令(06H)和软启动命令(1EH)。
单片机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位,发送完该命令码,将DATA总线设为输入状态等待SHTll的响应,SHTll接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为芯片的ACK;在第9个时钟下降沿之后,芯片释放DATA(恢复高电平)总线;释放总线后,开始测量当前湿度,测量结束后,再次将DATA总线拉为低电平;单片机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;芯片在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,单片机将DATA总线拉低作为ACK信号,然后释放总线DATA,在随后8个SCK周期下降沿,芯片发出低字节数据;接下来的SCK下降沿,单片机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SCK下降沿芯片发出CRC校验数据,单片机不予应答(NACK)则表示测量结束。CRC寄存器通过计算一个多项式(x8+x5+x4)之和来判定测量过程是否发生错误,一旦发现错误,单片机就发送软启动命令,重新进行测量。如果不使用CRC校验,单片机可以在测量值LSB后保持应答信号ACK高电平,来终止通信。SHTll在测量和通信完成后会自动返回睡眠模式。[page]
下面给出与上述硬件电路配套的PIC16的温度传感器读取程序。
RETURN
2.2 温度和湿度值的计算
2.2.1 湿度线性补偿和温度补偿
SHTll可通过DATA数据总线直接输出数字量湿度值。该湿度值称为“相对湿度”,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值:
式中,RHlineer为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3为线性补偿系数。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下:
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数。
2.2.2 温度值输出
由于SHTll是采用PTAT能隙材料制成的温度敏感元件,因而具有很好的线性输出。实际温度值可由下式算得:
式中,d1和d2为特定系数,d1的取值与SHTll工作电压有关,d2的取值则与SHTll内部A/D转换器采用的分辨率有关。
2.3 温湿度显示
计算出温度、湿度值后,在162字符型液晶显示模块上显示出来,屏幕第一行显示温度值:“TEM:……”第二行显示湿度值:“HUM:……”。程序设定每5 min更新一次温湿度。显示流程图如图6所示。
3 结论
由PIC单片机和温湿度数字传感器SHTll以及162液晶显示模块组成的温湿度感测系统,充分利用了SHTll的特点,又对温湿度测量功能进行了扩充,使其具有显示直观、运行可靠、扩充方便等优点。利用可控的加热制冷设备对该系统性能进行了测试,实际结果表明:测温范围为-40~+100℃,误差不超过0.5℃,湿度测量范围是2~98%RH,误差不超过4%RH(室温25℃时测量),达到了预期性能指标,满足实际应用要求。
上一篇:液晶驱动MAX7232BF与单片机的硬件连接相关介绍
下一篇:基于单片机的韦根信号的接收
推荐阅读最新更新时间:2024-03-16 12:54
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- 通过网线从互联网上下载信息,校对时间,如何实现?
- proteus 7.4出来了,是完美破解版 安装问题
- What's the deal with iot.js and JerryScript
- EVC的透明按钮问题
- wince和mobile交流群2 群号:68385705,欢迎做Wince和Mobile方面的底层和上层的软件开发的相关人员加入,现还有部分名额。Linux开发
- WEB播放EEWORD-LM3S8962_SD卡音视频
- 关于LaunchPad开发工具及奖品发放的公告
- 摄影-FIRST STUDENT
- 28335硬件教程-时钟系统
- stm32 lan8720 无操作系统 使用hal库 无法连接网络