湿度传感器
毕业设计论文第 1 页 共 25 页
近年来,国内外在湿度传感器研发领域取得了很大的进步。湿敏传感器正从简单
的湿敏元件向集成化、智能化、多参数检测的方向迅速发展,为开发新一代湿度测控
系统创造了有利条件,同时也将湿度测量技术提高到新的水平。在工农业生产、气象、
环保、国防、科研、航天等部门,经常需要对环境湿度进行测量及控制。但在常规的
环境数中,湿度最难准确测量的一个参数,是因为测量湿度要比测量温度复杂的多,
温度是个独立的被测量,而湿度却受其他因素(大气压强、温度)的影响。随着湿度
传感器在越来越多的测量控制领域得到广泛应用,传感器的精度和长期稳定性,以及
它对各种不同复杂环境的适应能力这些基本参数,成为人们日常生活中广泛关注的焦
点。
传统的空气相对湿度测量一般采用电容技术根据这种原理设计的传感器,其敏感
元件是由一些不同材料的底层(玻璃,陶瓷等)上面附一层电容性的薄膜制成。它的
电介质是一种聚合体,这种聚合体能按照外界环境相对湿度变化而成比例吸收和排出
水分,从而改变电容的容值,然后通过测量电路测出相对湿度。
传统模拟信号输出的湿度传感器具有以下缺点:
(1)长期稳定性差: 由于敏感元件尺寸相对较大(10-20mm),以及聚合体层的
老化,目前市场存在的各个电容传感器在相同的外界条件下,输出相差几度。因此,
年漂移量的大小成为衡量湿度传感器质量的一个重要
。此外电容的金属电极的老
化也会影响湿度输出信号。
(2)标定过程复杂:湿敏电容在使用之前,需要经过一个复杂的标定过程。因
此,传感器的最终用户必须具备一套结构复杂和昂贵的标定设备和参考仪器,此外,
还需自己配置一些外部的电子元件,如A/D转换器,数据存储器等。
(3)模拟技术:模拟测量技术的另一个缺点就是传感器工作电压的稳定性直接
影响湿度的测量精度,而要避免和消除这个影响,就要提高电子集成度,但又同时增
加了开发费用。
对于测量湿度,一般说阻抗性湿敏元件长期稳定性好,响应快,其缺点:是尺寸
毕业设计论文第 2 页 共 25 页
较大、非线性及温度系数高;热敏电阻式湿度传感器测量湿度,其特点是不存在滞后
误差,但要求两只热敏电阻在较宽范围内特性一致是很困难的。瑞士Sensirion公司
生产的具有I2C总线接口的单片全校准数字式相对湿度传感器SHT11,该:芯片采用CMOSensTM技术,不仅将温湿度传感器结合在一起,而且还将信号放大器、模/数转
换器、校准数据存储器、标准I2C总线等电路全部集成在一个芯片内。湿度检测运用
电容式结构,并采用具有不同保护的“微型结构”检测电极系统与聚合物覆盖层来组
成传感器芯片电容,除保持电容式湿敏器件的原有特性外,还可抵御来自外界的影响,
同时不会产生由于温度与湿度传感器之间随温度梯度变化引起的误差,所以,湿度检
测我们选用SHT11传感器芯片。
SHT11传感器将两个湿度/温度敏感元件和放大电路,模/数转换,串行接口集成在一块电路板上。由精密微型机械制造的电极电路和加入不同保护层的聚合体构成了
传感器的电容部分,同时提高了传感器的抗干扰能力。温度和湿度集成在一个电路单
元,可精确测量露点,避免由于元件之间温度梯度引起的测量误差。然而最主要的是
将敏感元件、放大电路、A/D转换、数据存储器、总线接口集成在一块几平方毫米的
芯片上,从而大大提高了信号质量和抗干扰能力。
SHT11传感器的优点:
(1)可靠的长期稳定性:传感器附近的放大电路不仅提高信号强度,更重要的
是提高信号的长期稳定性,A/D转换电路可提高信号的抗干扰能力,芯片本身输出的
校验和为信号的准确性提供了可靠保证;
(2)高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;
(3)提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高;
(4)测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测
量值和高质量的露点计算功能;
(5)封装尺寸超小(7.62 mm×5.08mm×2.5 mm),测量和通信结束后,自动转入
低功耗模式。
本课
为单通道湿度测量模块的设计,它包括系统的硬件设计和软件设计。系统
硬件设计可分为数据采集、存储及转换模块,数据控制及显示模块。系统软件设计为
单片机编程实现。可以分为主程序和子程序的设计。
毕业设计论文第 3 页 共 25 页
单通道湿度测量模块的设计以单片机控制核心,控制其他外围芯片和模块实现
A/D转换,将模拟量转换成数字量,然后将数据存储。用传感器对湿度进行检测,单
片机控制检测量。从而完成湿度测量的要求,本系统主要有由单片机芯片: 单片机实现的功能主要是控制采集的湿度,对湿度值进行调节,使它在检测的范围内工作。
各外围芯片均由单片机来控制,单片机系统一般是由一个单片机和外围电路组
成,由于其所具有的集成度高、处理功能强、可靠性高、系统结构简单、价格低廉等
优点,在实际应用中得到广泛的采用。单片机的程序设计是以主程序和子程序为基本
构成方式的,顺序执行是按照先后顺序的,程序的设计比较简单,容易理解。系统主
要分成三个模块:数据采集、数据转换模块及数据显示等。
采样,量化是对被测的模拟信号进行数字化得到相应的数据,而后存储于数据存
储器RAM的过程。通常由采样/保持电路实现对模拟信号的时间离散化,而时间离散化
信号幅度的量化则由A/D转换器实现。
采集的数据存储之后,通过传感器检测采集量,与被测量进行比较。通过单片机
控制,单片机程序的设计,采集量与被测量进行比较,低于被测量转向相应的子程序
的设计,高于被测量转向相应的子程序的设计,在检测范围内顺序执行。
将经过处理的数据用比较直观的方式显示出来,以便于用户对数据进行处理,从
而实现人机互换能够更好的解决问题。
构成本系统控制部分的是单片机,因此软件系统的设计主要是对单片机进行程序
设计。
单片机程序的设计是以主程序和子程序为基本结构的,其中,主程序是贯穿全局
的主线,子程序是某项功能的具体实现。主程序完成的功能是采集的湿度值与被测值
毕业设计论文第 4 页 共 25 页
进行比较,低于或高于被测值转向相应的子程序,主程序和子程序共同作用,完成本
次设计的要求。
以上便是本设计要研究和解决的问题,初步定为用单片机为控制核心的设计方
案。根据该设计
,本文将作硬件电路设计与调试、单片机控制软件编写,最后对
整个系统作综合调试和系统性能测试。
本设计的基本内容为:通过介绍了SHT11数字温湿度传感器的工作原理、内部结
构,测量分辨率和测量范围、操作命令和接口时序。同时对利用SHT11温湿度传感器、AT89C51微控器组成的自动温湿度测控系统,提出了硬件的组成及软件的设计方案,使
相对湿度测量误差优于4%RH的预期指标。为开发高集成度、高测量精度、高可靠性
的湿度测控系统提供了技术支持。
系统由湿度传感器、存储系统、单片机、驱动电路和显示电路,它们的关系见图
4.1。
湿度传感器
单片机 显示电路 驱动电路
存储系统
图4.1系统设计框图
SHT11采用Sensirio公司专利的CMOSen@技术,将温湿度传感器、信号放大调理、
A/D转换、二线串行接口全部集成于一芯片内,体积仅与大火柴头相近。使传感器具
有品质卓越、超快响应、抗干扰能力强、极高的性价比等优点,其内部结构框图如图
毕业设计论文第 5 页 共 25 页 4.2所示。SHT11传感器默认的测量温度和相对湿度的分辨率分别为14位、12位,通过状态寄存器可降至12位、4位。湿度测量范围是0—100%RH,对于l2位的分辨率为0.03%RH,测温范围为一40? ~+123.8? ,对于14位的分辨率为0.01?。每个传感器芯片都在极为精确的湿度室中进行标定,校准系数以程序形式储存在OTP内存中,在测量过程中可对相对湿度自动校准,使SHT1 1具有100%的互换性。其测量原
理是首先利用两只传感器分别产生相对湿度、温度的信号,然后经过放大,分别送至
A/D转换器进行模数转换、校准和纠错,最后通过二线串行接口将相对湿度的数据送
至微控器,再利用微控器完成非线性补偿。
校准存储器 SCA
Data 相对温度 随机存储器 二传 感 器 线14位A/D转换器 串放大器 行
接GND 湿 度 CRC寄存器 口 传 感 器 控制单元 Vcc
状态寄存器
图4.2 SHT11内部原理图
SHT11通过两线串行接口电路与微控制器连接,具体电路如图4.3所示。其中,串行时钟输入线 (SCK):SCK用于微控制器与SHT11之间的通信同步,而且由于SHT11接口包含了完全静态逻辑,所以并不存在最小SCK频率限制,即微控制器可以以任意低
的速度与SHT11通信。串行数据线(DATA),DATA引脚是三态门结构,用于内部数据的
输出和外部数据的输入。
DATA 在SCK时钟下降沿之后改变状态,并仅在SCK 时钟上升沿后有效,所以微控
制器可以在SCK高电平时读取数据,而当其向SHT11发送数据时则必须保证DATA线上的电平状态在SCK高电平段稳定;为了避免信号冲突,微控制器仅驱动DATA在低电平,在需要输出高电平的时候,微控制器将引脚置为高阻态,由外部的上拉电阻(例如:5.1k)将信号拉至高电平(图4.3所示),从而实现高电平输出。
SHT11通过二线数字串行接口来访问,所以硬件接口电路非常简单。需要注意的
毕业设计论文第 6 页 共 25 页 地方是:DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求。当工作电压高于
4.5V时,SCK频率最高为10 MHz,而当工作电压低于4.5 V时,SCK最高频率则为1MHz。硬件连接如图4.3所示。
Vdd
5.1K GND
微控制器 SHT11 DATA (master)
SCK
Vdd2.4-5.5
图4.3 SHT11与微控制器连接电路
微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,
DATA为数据线。该二线串行通信协议和I2C协议是不兼容的。在程序开始,微处理器
需要用一组"启动传输"时序表示数据传输的启动,图4.4所示。当SCK时钟为高电平时,
DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平
时,DATA再次翻转为高电平。
DATA
SCK
图4.4“启动传输”时序图
毕业设计论文第 7 页 共 25 页 电源电路设计如5.1图
D1
1
7805 U1 T1 1 2 +5V V4 2 V INOUTD0 GND R1 220V/9V C2 C4 5.1K 3 C1 C3 3 100u 104 1000u 104
D2
图5.1电源电路
AT89C2051模块与SHT11模块之间的外围电路连接见图5.2
Vcc AT89C2051
17 Vcc VDD 31 /EA C2 30PF R3 X1 18 4.7K Vcc C1 12MHz 9 1 2 X2 P1.0 DATA Vcc C3 30PF VDD C1 RESET 2 3 C4 R1 O.1uF P1.1 SCK 10uF 10k R2 GND GND 18 SHT11 100k
图5.2 SHT11与单片机的接口
智能化温湿度仪有数据采集、数据处理及一些外围电路组成,本系统采用价格低
廉的5l系列AT89C205l(图5.1.1)作为主控CPU来完成多路温一湿度监测,此芯片与
805l完全兼容,且内部带有4 kB闪速可编程、可擦除EPROM,工作时钟可高达24 MHz.15
毕业设计论文第 8 页 共 25 页
个I/O口线,两个16位定时/计数器,一个向量两极中断结构,一个全双工串行通信接
口,内置比较器,并支持两种软件可选的节电工作模式。系统以AT89C2051为主机,
以SHT11作为测量温湿度的元件组成湿度控制系统。Atmel公司的AT89C2051是一种低
功耗,高性能的8位CMOS微控制器,使用高密度,非易失存储器技术制造,其最大的
特点是片内含有4K快闪可编程/擦除只读存储器(FPEROM),并且具有下载功能,方便了用户在开发过程中对程序的修改,调试。 5.1.1 AT89C2051主要性能参数:
(1)与MCS--51产品指令系统完全兼容;
(2)2.7V—6V的工作电压范围;
(3)全静态操作:0MHz—24MHz;
(4)两极加密程序存储器;
(5)128×8字节内部RAM;
(6)15个可编程I/O口线;
(7)2个16位定时/计数器;
(8)6个中断源;
(9)可编程串行UART通道;
(10)可直接驱动LED的输出端口;
(11)内置一个模拟比较器;
(12)低攻耗空闲和掉电模式。
VCC RST 1 20
P1.7 (RXD)P3.0 2 19
P1.6 (TXD)P3.1 3 18
P1.5 XTAL2 4 17
P1.4 XTAL1 5 16
P1.3 6 15 INTOP3.2 P1.2 7 14
P1.1(AIN1) 8 13 INT1P3.3 P1.0(AIN0) 9 12
P3.7 (T0)P3.4 10 11 (Y1)P3.5
GND
图5.1.1AT89C2051的管脚图
毕业设计论文第 9 页 共 25 页
5.1.2 管脚说明:
VCC:供电电压。
GND:接地。
P1口:P口为一个8位双向I/O口,P1.2口---P1.7口是一个内部提供上拉电
阻,P1.0和P1.1内部无上拉电阻,主要考虑它们分别是内部精度比较器的同相输入端
(AINO)和反相输入端(AIN1),如果需要应在外部接上拉电阻,P1口输出缓冲器可吸收20mA电流并可以直接驱动LED。当P1口引脚写入“1”时可以作输入端,当引脚
P1.2—P1.7用作输入并被外部拉低时,它们将因内部 的上拉电阻而输出电流(I)。
表5.1引脚的功能
引脚 功能特性
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2
INT0(外中断0)
P3.3
INT1(外中断1)
P3.4 T0(定时/计数器0外部输入)
P3.5 T1(定时/计数器1外部输入)
P3 口:P3口的P3.0—P3.5、P3.7是带有内部上拉电阻的7个双向I/O口。P3.6没有引出,它作为一个通用I/O口但不被访问,但可作为固定输入片内比较器的输出
信号,P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被P3口还用于实现AT89C2051特殊的功能,如表5.1所示。
RST:复位输入。RST引脚一旦变成两个机器周期以上高电平所有的I/O都将复位到“1”(高电平)状态,当振荡器正在工作时,持续两个机器周期以上的高电平便可
完成复位,每个机器周期为12个振荡时钟周期。
XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
XTAL1、XTAL2为片内振荡器的反相放大器的输入和输出端,图5.2所示,采用石英晶体组成时钟振荡器,如需从外部输入时钟驱动AT89C2051,时钟信号从XTAL1输入,XTAL2应悬空。由于输入到内部电路是经过一个2分频触发器,所以输入的外部
时钟信号无需特殊要求,但它必须符合电平的最大和最小值及时序
。
毕业设计论文第 10 页 共 25 页
5.1.3 指令
AT89C2051是经济型低价位的微型控制器,它含有2K字节的Flash闪速程序存储器,指令系统与MCS--51完全兼容可使用MCS--51指令系统对其进行编程。但是在使
用某些有关指令进行编程时,须注意和跳转或分支有关的指令有一定的空间约束,使
目的地址能安全落在AT89C2051的2K字节的物理程序存储空间内,对于2K字节存储器的AT89C2051来说,LJMP 7E0H是一条有效指令,而LJMP 900H则为无效指令。
对于LCALL、LJMP、ACALL、AJMP、SJMP、JMP@A+DPTR等指令,这些无条件分支指令的寻址范围不能超出物理空间的限制,至于中断的使用,80C51系列硬件结构中以保留标准中断服务子程序的地址;AT89C2051包含128 字节内部数据存储器,这样,
AT89C2051的堆栈深度局限于内部RAM的128 字节范围内,它既不支持外部数据存储
器的访问,也不支持外部程序存储器的执行,因此程序不应有MOVX[„..]指令。部分指令如下
指令格式 功能简述 字节数 周期
MOV A,Rn 寄存器送累加器 1 1
ADD A, #data 累加器加立即数 2 1
ACCALL addr11 2KB范围内绝对调用 2 2
AJMP addr11 2KB范围内绝对转移 2 2
LCALL addr16 2KB范围内长调用 3 2
5.1.4 程序存储器
AT89C2051可使用对芯片上的两个加密位进行编程(P)或不编程(U)来得到如表5.2所示的功能:
表5.2程序存储器加密功能
程序加密位 保护类型
LB1 LB2
1 U U 无程序加密功能
2 P U 禁止进一步进行Flash闪速编程 3 P P 同方式2,同时禁止校验
毕业设计论文第 11 页 共 25 页
5.1.5 工作模式
空闲模式:在空闲模式下,CPU 保持睡眠状态而所有片内的外部设备仍保持激活
状态,这种方式由软件产生,此时片内ROM和所有特殊功能寄存器的内容保持不变,
空闲模式可由任何允许的中断请求或硬件复位终止;P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”或者在使用上拉电阻的情况下设置为“1”。但在硬件复位终止空闲模式时,AT89C2051通常从程序停止一直到内部复位获得控制之前的两个
机器周期处恢复程序执行,在这种情况下片内硬件禁止对内部RAM的读写,但允许对端口的访问,要消除硬件复位终止空闲模式对端口意外写入的可能,原则上进入空闲
模式指令的下一条指令不应对端口引脚或外部存储器进行访问。
掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被
执行的指令。片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结,退出掉电
模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器
重启动并稳定工作。
该系统硬件电路包括采样电路,看门狗电路和电器驱动电路,系统具体电路如下
所示。AT89C2051与SHT11连接进行采样时,只需用两条I/O口线分别作为数据线DATA和时钟线SCK,并在DATA端接入一只上拉电阻,同时在VDD及GND端接入一只去藕电容,通过相应的软件设计,即可完成数据的采集与传输。显示电路采用带有高速串行接口
的8位LED控制驱动器MAX7219芯片实现,接口采用同步串行外设接口SPI,编程简单,而且节省I/O口,湿度显示用四位,通过改变接在ISET端口的电阻值大小可以调节显
示亮度。
采用了电容式结构的A/D转换芯片SHT1l,SCK串行时钟输入,和AT89C205l 的 P1.1连接,DATA串行数据输入/输出线,接AT89C205l 的 P1.0端口.其性能特点为:可给出全校准相对湿度及温度值输出,带有工业标准的FC总线数字输出接口;具有露点值计算输出功能;具有卓越的长期稳定性;湿度值输出分辨率为14位;体积小(7.65x5.08x23.5mm),可表面贴装;具有可靠的CRC数据传输校验功能;片内装载的
毕业设计论文第 12 页 共 25 页
校准系数可保证100%互换性;电源电压范围为2.4~5.5V;电流消耗,测量时为550nµA,平均为28pµA,休眠时为3pµA.由于将传感器与电路部分结合在一起。因此,
首先是传感器信号强度的增加增强了传感器的抗干扰性能,保证了传感器的长期稳定
性而,A/D转换的同时完成,则降低了传感器对干扰噪声的敏感程度。多路传感器可
直接通过I2C总线与微处理器、微控制器系统连接,从而减少了接口电路的硬件成本,
简化了接口方式。
传统的数码管显示接口一般直接采用MCU的I/O口对数码管进行动态扫描的方法,硬件上需要较多的外围部件,且占用MCU大量I/O口,软件上则浪费CPU资源,且给编
程人员带来很大的不便。数码管显示专用控制芯片以其实现方法简单、功能强大等显
著特点得到广泛的应用。这种芯片外围部件少、与MCU通讯一般采用串行接口或总线、在硬件上和软件上都占用极少资源、且功能强大、使得编程人员可以将更多的时间花
在控制上。目前这类接口芯片主要有:BC728X、HD7279A、MX729、CH451等, MX7219
是其中性价比较高的一种。
+5V
9.53K
V+
Iset
DIG0—DIG7 8DIG Din 8位串行输入
Load 锁入数据口 SEGA—G,DP
8SEG CLK 同步脉冲
GND
图5.3MAX7219模块连接图
其中:D7~D0:8位数据位,D7最高位;
D0为最底位;
D11~D8:4位地址位;
D15~D12:无关位,通常全取1。
毕业设计论文第 13 页 共 25 页
MAX7219通过D11~D84位地址位译码,可寻址14个内部寄存器,分别是8个LED显示位寄存器,5个控制寄存器和1个空操作寄存器。LED显示寄存器由内部8×8静态RAM构成,操作者可直接对位寄存器进行个别寻址,以刷新和保持数据,只要V+超过2V(一般为+5V)。
电路采用带有高速串行接口的4位LED控制驱动器MAX7219实现,接口采用同步串
行外设接口SPI,编程简单而且节省I/O口。湿度显示用4位,通过改变连接电源与ISET端口的电阻值,可以调节数码管的显示亮度。
MAX7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器。该芯片可直
接驱动最多8位7段数字LED显示器,或64个LED和条形图显示器。它与微处理器的接口
非常简单,仅用3个引脚与微处理器相应端连接即可实现最高10MHz串行口。MAX7219的位选方式独具特色,它允许用户选择多种译码方式译码选位,而且,每个显示位都
能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。
另外,它具有数字和模拟亮度控制以及与MOTOROLA SPI,QSPI及MATIONAL MICROWIRE串行口相兼容等特点。
表5.3MAX7219的管脚功能说明
引脚号 名称 功能说明
1 Din 串行数据输入端,在CLK的上升沿数据被锁入芯片内
部16位寄存器
2,3,5,6,7,8,DIG0—DIG7 8位LED位选线,从共阴极LED中吸入电流 10,11
4,9 GND 地线(两个GND必须接在一起) 12 Load 锁入输入数据,在Load的上升沿最后的16为串行数
据被锁入
13 CLK 时钟输入,最高时钟频率为10MHz,在CLK的上升沿
数据被锁入内部位移寄存器
14,15,16,17,20,SegA—SegG.DP 7段驱动和小数点驱动
21,22,23
18 Iset 该脚通过一个电阻与V+相连,设置峰值段电流 19 V+ 电源电压+5V
24 Dout 串行数据输入,输入到Din的数据在16.5个时钟周
期后在Dout脚发出,该脚用于级联扩展
毕业设计论文第 14 页 共 25 页
首先介绍各引脚(见图6.1)的功能:脚1和4--信号地和电源,其工作电压范
围是2.4~5.5 V;脚2和脚3为二线串行数字接口,其中DATA为数据线,SCK为时钟线;脚5~8--未连接。
GND NC 1 8
DATA 2 7 NC
SHT11
SCK NC 3 6
VDD NC 4 5
图6.1 SHT11的管脚图
SHT11的每一个传感器都是在极为精确的湿度室中校准的。SHT11传感器的校准系数预先存在芯片内存OTP中。 经校准的相对湿度和温度传感器与一个14位的A/D转换器相连,可将转换后的数字温湿度值送给二线总线器件,从而将数字信号转换为
I2C总线串行数字信号。
SHT11传感器共有5条用户命令,具体命令格式见表6.1。
表6.1用户指令
命令 编码 说明
测量温度 00011 温度测量
测量湿度 00101 湿度测量
读寄存器状态 00111 “读”寄存器状态
写寄存器状态 00110 “写”寄存器状态
重启芯片,清除状态记
录器的错误记录11毫秒软复位 1110
后进入下一个命令
毕业设计论文第 15 页 共 25 页
(1)传输开始
初始化传输时,应首先发出“传输开始”命令。该命令它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平。接下来的命令顺序:一个地址位“000B”和5个命令位:00011B、00101B、00111B、00110B、11l10B。当DATA脚的ack位处于低电位时,表示SHT11正确收到命令。SHT11会以下述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位),在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。
(2) 通讯复位时序
如果与SHT11传感器的通讯中断,下列信号顺序会使串口复位:即当DATA线处于高电平时,触发SCK 9次或更多,此后应接着发一个“传输开始”命令。这些时序只
复位串口,状态寄存器内容仍然保留。
(3) 湿度测量时序
当发出一组测量命令(‘00000101B’表示相对湿度RH)后,控制器就要等待测量
完成(使用8/12/14位的分辨率测量分别需要大约11/55/210ms的时间)。为表明测量完成,SHT11会使数据线降为低电平,此时控制器必须重新启动SCK,然后传送两字节的测量数据与1字节CRC校验和。控制器必须通过使DATA为低来确认每一个字节,所
有的量均从右算,MSB列于第一位。通讯在确认CRC数据位后停止。如果没有用CRC一8校验和,则控制器就会在测量数据LSB后保持ack为高来停止通讯,SHT11在测量和通讯完成后会自动返回睡眠模式。需要注意的是没有用CRC一8校验和,则控制器就会在
测量数据LSB后保持ack为高来停止通讯,SHT11在测量和通讯完成后会自动返回睡眠
模式。需要注意的为使SHT11的温升低于0.1? ,此时的工作频率不能大于标定值的
15%(如:12位精确度时,每秒最多进行3次测量)。
(4) 状态寄存器
SHT11传感器中的一些高级功能是通过状态寄存器来实现的,寄存器各位的类型
及说明见表6.2所列。
表6.2是寄存器相关位的功能说明:
位 类型 说明 缺省
7 保留 0
6 读 低电压检查位 X
5 保留 0
毕业设计论文第 16 页 共 25 页
4 保留 0
3 只用于试验,不可以使用 0
2 读/写 加热 0 关
1 读/写 不从OTP加载 0 加载
0 读/写 相对湿度,温度分辨率 0 12位相对湿度14位湿度
由于采用二线串行接口,对于SHT1l的操作按照严格时序,共有5条用户命令,分别是测量温度命令 (03H)、测量湿度命令(05H)、读寄存器状态命令 (07H)、写寄存器状态命令(06H)和软启动命令(IEH)。DATA在SCK时钟下降沿之后改变状态并仅在SCK时钟上升沿有效。
SHT1 1上电后进入休眠模式,首先应发送一个“启动”时序,唤醒芯片,即在SCK为高时使DATA由高电平变为低电平,并在下一个SCK为高时将DATA升高。微控器发出测量命令后就等待测量完成,为表明测量完成,SHT1 1将数据线拉成低电平。
微控器重新启动SCK,SHT11就传送两字节的测量数据与一字节的CRC数据,传输数据的顺序是从最高位(MSB)到最低位(LSB)。微控器接收到每个字节后,必须将数据
线拉成低电平,为每个字节产生应答信号ACK。CRC寄存器通过计算一个多项式之和来
判定测量过程是否发生错误,一旦发现错误,微控器就发送软启动命令,重新进行测
量。如果不使用CRC一8校验,微控器可以在测量值KSB后保持应答信号ACK高电平,来终止通信。SHT11在测量和通信完成后会自动返回睡眠模式。以测量相对湿度,测量
值N=0003100100110001为例,整个测量过程时序如图6.2所示。DATA为双向数据口,图4.3中粗线段表示由SHT11来控制数据线,常态下由微控器控制数据线。
SHT11湿度测试时序如图6.2所示。主机发出启动命令,随后发出一个后续8位命令码,该命令码包含3个地址位(芯片设定地址为000)和5个命令位;发送完
该命令码,将DATA总线设为输入状态等待SHT11的响应;SHT11接收到上述地址和命令码后,在第8个时钟下降沿,将DATA下拉为低电平作为从机的ACK;在第9个时钟下降沿之后,从机释放DATA(恢复高电平)总线;释放总线后,从机开始测
量当前湿度,测量结束后,再次将DATA总线拉为低电平;主机检测到DATA总线被拉低后,得知湿度测量已经结束,给出SCK时钟信号;从机在第8个时钟下降沿,先输出高字节数据;在第9个时钟下降沿,主机将DATA总线拉低作为ACK信号。然后释放总线DATA;在随后8个SCK周期下降沿,从机发出低字节数据;接下来
毕业设计论文第 17 页 共 25 页
的SCK下降沿,主机再次将DATA总线拉低作为接收数据的ACK信号;最后8个SC
K下降沿从机发出CRC校验数据,主机不予应答(NACK)则表示测量结束。
启动 1 1 Data 延时等待 0 0 0 0 0
0 测量完SCK
成 a 发送测量温度命
令 1 1 1 1
Data 0 0 0 0 0 0 0 0 0 0 0 0
ack ack
SCK
MSB LSB
b 读取相对湿度数据
启动 CRC校验和
返回休眠Data ack 模式
SCK
LSB MSB
c 读取CRC校验和
图6.2测试时序图
微控制器ATC89C51的程序是基于KEIL7.0开发平台采用C51语言编写,这样可以缩短开发周期,降低开发成本,使程序易于调试和维护,可靠性高,可读性和移植
性好。该系统采用模块化设计的方法,主要包括以下几个模块:
(1)主程序初始化:主要完成系统上电后清除“看门狗”输入,进行定时器和
中断处理操作的初始化,包括关除Tn外的所有中断、设定计数初值等,同时断开各
电器设备的电源。另外,还要设定各个数据的存储单元地址。初始化完成后,系统将
正常运行,并进行键盘扫描及温湿度的控制等操作。
(2)湿度测量子程序:在该系统测控系统中,湿度测量程序放在定时器T0的中断服务程序里,定时器Tn为工作方式1(时间常数大),每次定时周期为50 m8,软件
毕业设计论文第 18 页 共 25 页
计数2O次,温湿度采样周期为ls。中断服务程序包含以下基本程序:“写”命令子
程序、“读”数据子程序、数值计算子程序和显示子程序,最后将实际温度值和湿度
值存储于2个固定单元中,温、湿度各占1个单元。
(3)温湿度控制子程序:AT89C2051比较温湿度预设值和实际值的大小,产生各
个电器设备的启停信号。
开始
保护现场 “写”测量命令
重装T0计数初值 延时
“读”测量数据 计数次数=N?
湿度计算
计数单元次数置0
显示数据
启动SHT11
恢复现场
A
图6.5温湿度测量程序流程图
测量量程以外的湿度会使湿度信号暂时地偏移+3%。然后传感器会慢慢返回到校准条件。若将芯片在湿度小于5%环境下加热24小时到90?,芯片就会迅速恢复高相对湿度环境的影响,但是,延长强度条件会加速芯片的老化。
由于大气的相对湿度与温度的关系比较密切,因此,测量大气温度时的要点是将
传感器与大气保持同一温度,如果传感器线路板上有发热元件,SHT11应与热源保持
毕业设计论文第 19 页 共 25 页 良好的通风,为减少SHT11和PCB之间的热传导,应使铜导线最好在其中加上窄缝,同
时应避免使传感器在强光下曝晒。
传感器在布线时,SCK和DATA信号平行且相互接近,或信号线长于10cm时,均会产生干扰信息,此时应在两组信号之间放置VDD或GND。
附录A为硬件电路配套的C51应用程序。
AT89C2051单片机与SHT11的接口电路。由于AT89C2051不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,并利用P1.0来虚拟数据线DATA,利用P1.1口线来虚拟时钟线,同时,在VDD及GND端接入一只0.1uF的去耦电容。
单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1为放大器的输入端,XTAL2为输出端。放大器与作为反馈元件的片外石英晶体一起构成了一个自
激振荡器,电容C1和C2一般取30pF左右,C1和C2的大小对震荡频率起微调作用;晶体
的谐振频率范围为1.2-12MHz,晶体的谐振频率越高,系统的时钟频率也越高,单片机
运行速度也就越快,所以在本设计中采用12MHz是为了高速串行通信。
R3为上拉电阻,上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时
起限流作用!上拉是对器件注入电流,上拉电阻的功能主要是为集电极开路输出电流。
上拉电阻的作用:
当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。
所以如果输出电流比较大,输出的电平就会降低(电路中已经有了一个上拉电阻,
但是电阻太大,压降太高),就可以用上拉电阻提供电流分量, 把电平“拉高”。 需要注意的是,上拉电阻太大会引起输出电平的延迟(RC延时)。
上拉电阻阻值的选择原则包括:
(1)从节约功耗及芯片的灌电流能力考虑应当足够大,电阻大,电流小。
(2)从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
(3)对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑 以上三点,通常在1k到10k之间选取。因此在本设计中采用的是4.7K的电阻。
毕业设计论文第 20 页 共 25 页
C1和C4为去耦电容主要是去除高频如RF信号的干扰,如果微观来看,高频器件在
工作的时候,其电流是不连续的,而且频率很高,而器件VCC到总电源有一段距离,
即便距离不长,在频率很高的情况下,阻抗Z=i*wL+R,线路的电感影响也会非常大,
会导致器件在需要电流的时候,不能被及时供给。而去耦电容可以弥补此不足。
有源器件在开关时产生的高频开关噪声将沿着电源线传播。去耦电容的主要功能
就是提供一个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引
导到地,这是为什么电路板在VCC管脚处放置小电容的原因,
数字电路中典型的去耦电容值是0.1μF。这个电容的分布电感的典型值是5μH。0.1μF的去耦电容有5μH的分布电感,它的并行共振频率大约在7MHz左右,也就是说,对于10MHz以下的噪声有较好的去耦效果,对40MHz以上的噪声几乎不起作用。10μF的电容,并行共振频率在20MHz以上,去除高频噪声的效果要好一些。
电源电路的调节,变压器变压输出,把高电压变成低电压,输出的电压值是正弦
图形。经过桥式整流电路后输出的电压是波浪一样的图形,就是把正弦的负半周转到
正半周,C1整流后输出一个衰减的波浪图形,7805是稳压模块,输出一个恒定的5V电压,C3和C2滤出杂散波,7805的输出端不能高于输入端,加入二极管保护7805。如果输出功率不够,检测7805输入电压,要确保输入电压大于9V。
以上是综合实际情况对电子元器件进行的选用,然后把原理图用protell99软件生成PCB板,完成制作PCB板并把元器件焊接在上面,焊接时注意不要造成虚焊,元件
不能被损坏以免影响数据的传输,制作完成后,对模块进行实际测试,对各个接点的
电压用万用表测量,当电压、电流在允许的范围内时,再对模块进行实际应用。然后
对测试的数据进行
。
标准测量和实际测量的试验数据如下:
表7.1标准湿度和测量湿度的对比表
标准湿度 测量湿度
11.23 11.10
20.65 20.46
33.50 33.32
40.60 40.45
毕业设计论文第 21 页 共 25 页
52.46 52.23
80.70 80.52
93.46 93.31
由数据可得:湿度测量范围为0—100%RH;响应时间?1s。误差优于4%RH,能过达到设计的要求。
结 论
在这次设计中,实现了PC机通过串口对单片机进行控制和通信,并且可以通过系
统的软件控制来随时设置系统时间及湿度的修正;我们用价格相对低廉的AT89C2051作为检测系统的主控制器,选用具有12C总线且高精度的湿度A/D检测转换器,以此来实现在各种环境下对湿度的测量,使其大大提高湿度的精度,系统具有较高的性价比。
湿度测量范围为0—100%RH,响应时间?1s。SHT11数字式温湿度传感器由于将温度
传感器、湿度传感器、信号放大、模/数转换器、标定参数及12C总线接口全部集成到传感器内部。因此,该传感器具有比其它类型的湿度传感器有许多优越的性能。首先
是增强了传感器的抗干扰性能,保证了传感器的长期稳定性,而由于A/D转换的同时完成,则降低了传感器对干扰噪声的敏感程度。其次在传感器芯片内装载的校准数据
保证了每一只湿度传感器都具有相同的功能,即具有互换性,且简化了接口方式,从
而减少了接口电路的硬件成本。
毕业设计论文第 22 页 共 25 页
参 考 文 献
1 高锋,单片微型计算机原理与接口技术。北京: 科学出版社,2002 2 沙占友,孟志永著.单片机外围电路设计。北京:电子工业出版社,2006.6 3 刘乐善,微型计算机接口技术及应用。北京:华中科技大学出版,2002 4 胡汉才,单片机原理及其接口技术。北京:清华大学出版社,2003 5 沙占友,数字化测量技术与应用。北京:机械工业出版社,2004
6 何利民,单片机应用技术选编。北京:北京航天航空大学出版社,2004 7 赵继文,何玉彬.传感器与应用电路设计。北京:科学出版社,2002.9 8 何道清,传感器与传感器技术。北京:科学出版社,2004.8
9 杨文龙,单片机原理及应用[M]。西安:西安电子科技大学出版社,2003 10 王化祥 张淑英,传感器原理及应用[M]。天津:天津大学出版社,2003 11 李军,51单片机高级实例开发指南[M]。北京:北京航空航天大学出版社,2004 12 李光飞,单片机课程设计实例指导[M]。北京:北京航空航天大学出版社,2004 13 AT89C51 DATA SHEEP Philips Semiconductors 1999,dec 14 Yang.Y, Yi,
J, Woo, Y,Y,,and Kim, B,: ‘Optimum design for linearityand efficiency
of microwave Doherty amplifier using a new loadmatching technique’, Microw,
J, 2001, 44, (12), pp. 20–36
15 Vizier, P.,‘RF design guide-systems’ (ArtechHouse, Boston, MA, 1995) 16“VisualObject-Orientated Programming”Dr,MacintoshJournal, ( 1991 )
17 Intel Corp, MCS-51 microcont family user’s manual ,1994
18 Mackenzie I S , the 8051 microcontroller(the third edition),USA:
毕业设计论文第 23 页 共 25 页
prentice-Halll, Inc, 1995
致 谢
毕业设计论文第 24 页 共 25 页
附录A硬件电路应用程序 #define data p1_1
# define sck p1_1
# define ack 1
# define noack 0
# define measure_humi 0x05//测量湿度命令
//读湿度数据
{Chars_measure(unsigned char * p – value,unsigned
char * p – checksum, unsigned char mode)
}
Unsigned char error = 0;
Unsigned int i;
s_trans start();//传输开始 switch(mode)
{
case
temp:error + = s_write_byte(measure_temp);
break;
case
humi:error + = s_write_byte(measure_humi);
break;
default:break;
}
For(i=0;i<65535;i++)
If(data == 0)break;
If(data) error += 1;
*(p_value) = s_read_byte(ack);
毕业设计论文第 25 页 共 25 页
*(p_value + 1) = s_read_byte(ack);
*p_check sum = s_read_byte(noack);
Return error;
}//湿度值标度 Void calc_sth15(float * p_humidity)
{
Const float c1 = -4.0;
Const float c2 = 0.0405;
Const float c3 = -0.0000028;
Const float t1 = -0.01;
Const float t2 = 0.00008;
Float rh = * p_humidity;
Float rh_lin;
Rh_lin = c3 * rh * rh + c2 * rh +c1
* p_humidity = rh_ture;
}//从相对湿度计算露点
Char calc_dewpoint(float h,float t)
{
Float logex,dew_point;
Logex = 0.66077 + 7.5 * t/(237.3 + t) + [log10(h) - 2];
Dew_point = (logex – 0.66077) * 237.3/(0.66077 + 7.5 - logex);
Return dew_point;
}//程序结束