您的当前位置:首页正文

电容式湿度测量

2022-07-30 来源:易榕旅网
绪论

温湿度是家庭生活,工农业生产和科学实验中的重要参数,温湿度控制系统广泛应用在工业生产、医药、农作物栽培和科学实验等许多领域,目前温湿度控制系统的种类较多,他们之间的主要区别在于温湿度控制对象、控制范围、控制精度不同;硬件和软件实现的复杂程度不同;附加功能不同等。一般情况下系统的温湿度控制对象和控制范围不能任意改变,利用系统的可编程性能,可以根据用户自定义的温湿度曲线进行温湿度控制,具有可靠性高、抗干扰能力强、有较高的性能、价格比和通用性。

当前,在自动化测试与控制领域中,温湿度的测量获得了越来越广泛的应用,而在众多的湿度测量方法中,电容式湿度测量法被普遍采用,电容式湿度测量法的原理是将薄膜电容附在不同材质(如玻璃、陶瓷等)上即可做出传感元件,这种电介质是一个聚合体,它能通过一定比例的水吸收或释放到相对环境温度中来改变电容器的电容量,这种电容量的变化可以通过检测电路来检验,这样就得到了相对空气湿度的数值。但是现有的基于电容式湿度测量的湿度传感器普遍存在着以下的问题。 1.极低的长期稳定性:

由于电容式湿度传感器产品都是被置于大气环境下,必然会受到一定外部环境的影响,由于传感器电容元件的尺寸较大,同时由于聚合体层的老化,使得这些传感器在相同的外部环境下却显示出了完全不同的灵敏度,因此每一年的变化、即传感器的年变化误差已成为评价传感器质量的重要标准,金属电极的老化也会使湿度的测量误差增加; 2. 极复杂的校准过程:

使用前,电容式湿度传感器必须经过一段复杂的校准处理过程,为了实现校准,用户必须拥有复杂且价格昂贵的校准及参考系统。 3. 模拟信号处理技术:

电容式湿度测量的信号处理是基于模拟测量原理的,模拟测量还与电源电压、环境温度、传感器的精度等因素有关,以上问题的解决均需要通过模拟电子电路来解决,因此不可避免的使成本增加,同时使得传感器的互换性较差。

1

第1章 元器件原理与应用介绍

1.1 引言

温湿度是工农业生产和科学实验中的重要参数,温湿度控制系统广泛应用在工业生产、医药、农作物栽培和科学实验等许多领域,目前温湿度控制系统的种类较多,他们之间的主要区别在于温湿度控制对象、控制范围、控制精度不同;硬件和软件实现的复杂程度不同;附加功能不同等。一般情况下系统的温湿度控制对象和控制范围不能任意改变,。利用系统的可编程性能,可以根据用户自定义的温湿度曲线进行温湿度控制,具有可靠性高、抗干扰能力强、有较高的性能、价格比和通用性。

1.2 元器件简介

在电路设计中,元器件的选择十分重要,它影响到我们设计产品的质量和应用性能。所以我们选择元器件是要从我们应用领域和应用原则去着手选择。

1.2 .1 PIC16C73单片机性能简介

Microchip公司生产的PIC16C73是一款基于EPROM的8位高性能微控制器。

与其它价格相当的微控制器相比,它在执行速度和代码压缩方面都有很大的改进。由于随时可以买到需要的OPT)产品,因而缩短了利用PIC16C73进行产品设计开发的周期。PIC16C73微控制器所具有的优越性能主要归功于它的精简指令集和所采用的哈佛结构,它具有分离的程序储器空间(12位宽指令)和数据存储器空间(8位宽数据)。同时可运用两级流水线指令进行取数和执行,除了跳转指令需要两个周期外,其余所有的指令都可在单周期内执行。PIC16C73分离的程序和数据空间可使指令字优化为任意宽度,从而使指令具有单字长的特性,且允许指令码的数据位数多于8位,这样,就可达到2:1的代码压缩和4:1的速度。 结构特点及工作原理

PIC16xx系列微控制器中的一种,它由高性能RISC结构的CPU、存储器、I/O接口和复位电路等组成。外部结构特点是28脚双列直插式大规模集成芯片。

各引脚功能如下:

OSC1/CLKIN:为晶体振荡器输入/外部时钟源输入引脚。

2

OSC2/CLKOUT:晶体振荡器输出/外部时钟源输出引脚。在晶体振荡器方式下,接晶体或陶瓷振荡器;在RC振荡方式,输出1/4fosc。

MCLR/Vpp:芯片复位/编程电压输入脚,复位时,低电平有效。

RA0/AN0~RA5/AN4/SS:复用引脚,RA0~RA5为双向数据线;AN0~AN4为A/D输入输出通道;RA5~AN4/SS还可作为同步串口使用。

RB0~RB7:B口双向数据信号线,其引脚含有可控的弱上拉电阻。其中,RB4/INT可作为外部中断输入端;RB4~RB7可产生变化中断;RB6可作为串行编程的时钟端;RB7可作为串行编程的数据端。

RC0~RC7:复用引脚,为C口双向数据信号线,C口引脚均为多功能复用引脚。

RC0/T1OS0/T1CK1可选择TMR1振荡器输出或TMR1时钟输入; RC1/T1OS1/CCP2可作为TMR1振荡器输入或捕捉器2输入/比较器输出/PWH2输出;

RC2/CCP1可作为捕捉器1输入/比较器输出/PWH1输出; RC3/SCK/SCL可作为同步串行时钟输入/SPI的I2C方式输入; RC4/SDI/SDA可作为SPI数据输入(SPI)或数据I/O(I2C); RC6/SDO可作为SPI数据输出(SPI);

RC6/TX/CK可以作为异步发送或SCI同步时钟线; RC7/RX/DT可以作为异步接收或SCI同步数据线。 内部结构特: a.高性能CPU

仅35条单字指令,采用的时钟频率为20MHz,指令周期为200ns; 具有8级深度的硬件堆栈; 具有中断能力,有11个中断源; 带有片内RC振荡器的看门狗(WDT); 具有程序保密位,可防止非法拷贝;

具有低功耗SLEEP方式,功率低,采用高速CMOS EPROM工艺制造;

可选择不同的振荡器方式; 工作电压为3.0V~6.0V。 b.分离的程序和数据空间

该PIC器件带有13位程序存储器,最大寻址能力为8k×14位,用户存储空间(0000~0FFFh)共4k×14位。当访问大于以上地址范围的物理存储空间时,可采用滚动循环访问方式。

数据存储区分为每个存储体Bank0和Bank1,每个存储体又由通用寄存

3

器和专用寄存器构成。当状态寄存器中的RP0位为0时,选中Bank0;RP0为1时选中Bank1。每个存储体最大可以扩展到7Eh(128个字节)。在每个存储体中,专用寄存器被安排在低空间,用SRAM实现的通用寄存器被安排在高地址空间。专用寄存器中含有A/D的寄存器。 c.完善的串行通信接口(SCI)

SCI利用RC6和RC7两个引脚来作为通信线的二线制串行通信接口。它们可被定义为三种方式:全双工异步方式、半双工同步主控方式和半双工同步从动方式。

SIC部件含有两个8位的可读写状态和控制寄存器,分别为发送和控制寄存器TXSTA、接收和控制寄存器RCSTA。 d.片内器件模块

有3个定时/计数器和3个双向I/O口。

含有16位捕捉/比较/PWM模块。其中捕捉器的最大分辨率为12.5ns;而比较器的最大分辨率为200ns;PWM的分辨率为10位。

带有5路A/D转换器和A/D中断功能。

基于PIC16C73的智能售电系统笔者在开发智能电表售电系统时,采用PIC16C73单片机设计了一个PIC通信通道来作为遥控器和PC机间的数据通信通道。将红外遥控器插入通信通道即可与PC机进行数据交换。首先,PIC通信通道取红外线遥控器中的用户识别码并送入PC机,由PC机的数据库管理模块完成用户的注册、注销和售电等工作;然后,再由PIC通信通道将PC机的RS232C串行通信接口输出的用户识别码及所售电量送入红外线遥控制中,最后再由红外线遥控器将售电量送入智能电表。该智能电表售电系统的功能结构框图如图3所示。

PIC通信通道的硬件系统设计该智能电表售电系统的PIC通信通道的硬件电路结构。PC机与PIC通信通道采用异步串行通信方式,但由于PC机的RS-232C串行通信接口传输的信号为CMOS电平,而PIC16C73的串行通信接口传输的信号为TTL电平,因而通信通道采用MAX-232芯片来完成信号电平的自动转换;而PIC通信通道与红外线遥控器则采用并行通信方式进行信息传输,此时,PIC16C73单片机使用RB口作为并行I/O口。为了能让用户认可售电信息,笔者专门设计了由MC14499芯片来完成7段显示器的硬件驱动显示电路。

PIC通信通道的软件设计

为确保PIC单片机与PC机之间以及PIC单片机与红外线遥控器之间能够准确的进行信息通信,双方制定了一个合理的、可行的通信协议。

a.PIC16C73与PC机之间的通信协议PIC16C73通信波特率为9600bps;通信采用查询方式,差错控制采用奇偶校验法;数据的帻格式为1位起止位、8位数据位、1位奇偶位、1位停止位;双方设置的握手信号如下: “FFH”:为PC机请

4

求接收信号; “01H”:为PC机接收信号完毕;

b.PIC16C73与红外线遥控器的通信协议PIC16C73与红外遥控器设置的握手信号为: “00H”为红外线遥控器发送数据准备就绪;单片机接收数据准备就绪; “FFH”为单片机发送数据准备就绪;红外线遥控器接收数据准备就绪; “$”为数据传送结束标志。4 结束语Microchip公司的PIC系列单片机具有实用、低价、易学、省电、高速和体积小等特点。该系列单片机不是单纯的功能堆积,而是以多型号来满足不同层次的需要,并可提供低价的OTP芯片。另外,该系列单片机还具有低功耗睡眠功能、掉电复位锁定、上电复位电路、看门狗电路等功能,而且外围器件少、占用空间小;成本低,保密技术也十分可靠,可最大限度地保护开发者的利益。因此,在工业控制、仪器仪表、计算机、家电等诸多领域具有极其广阔的发展前景。

1.2.2 DS1820的特性

1 DS1820

·单线接口:仅需一根口线与MCU连接 ·无需外围元件 ·由总线提供电源

·测温范围为-55℃~75℃,精度为0.5℃ ·九位温度读数 ·A/D变换时间为200ms

·用户自设定温度报警上下限,其值是非易失性的 ·报警搜索命令可识别哪片DS1820超温度限 2 DS1820引脚及功能

GND:地;

DQ:数据输入/输出脚(单线接口,可作寄生供电); VDD:电源电压 3) DS1820的工作原理

①64bit闪速ROM;②温度传感器;③非易失性温度报警触发器TH和TL。64bit闪速ROM的结构如表1.1所示:

表1.1闪速ROM的结构

8bit检验CRC 48bit序列号 8bit工厂代号(10H) USB LSB USB LSB USB LSB

5

它既可寄生供电也可由外部5V电源供电。在寄生供电情况下,当总线为高电平时,DS1820从总线上获得能量并储存在内部电容上当总线为低电平时,由电容向DS1820供电。DS1820的测温原理:内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。计数器设置为-55℃时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55℃。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度表示值为9bit,高位为符号位,其结构如下:

MSB LSB 1 1 1 0 0 1 1 1 0 符号位 次数代表-25℃

对DS1820的使用,多采用单片机实现数据采集。处理时,将DS1820信号线与单片机一位口线相连,单片机可挂接多片DS1820,从而实现多点温度检测系统。

系统对DS1820的操作以ROM命令和存储器命令形式出现。

1.3 DS1820命令简介

DS1820在本设计中的应用非常重要,要想很好的应用DS1820必须对它的各个代码指令有所了解。

1.3.1ROM命令代码及其含义

·READROM命令代码〔33H〕:如果只有一片DS1820,可用此命令读出其序列号,若在线DS1820多于一个,将发生冲突。

·MATCHROM命令代码〔55H〕:多个DS1820在线时,可用此命令匹配一个给定序列号的DS1820,此后的命令就针对该DS1820。

·SKIPROM命令代码〔CCH〕:此命令执行后的存储器操作将针对在线的所有DS1820。

·SEARCHRDH命令代码〔F0H〕:用以读出在线的DS1820的序列号。 ·ALARMSEARCH命令代码〔ECH〕:当温度值高于TH或低于TL中的数值时,此命令可以读出报警的DS1820。

6

1.3.2存储器操作命令代码及其含义

·WRITESCRATCHPAD命令代码〔4EH〕:写两个字节的数据到温度寄存器。 ·READSCRATCHPAD命令代码[BEH]:读取温度寄存器的温度值。

·COPYSCRATCHPAD命令代码〔48H〕:将温度寄存器的数值拷贝到EERAM中,保证温度值不丢失。

·CONVERT命令代码〔44H〕:启动在线DS1280做温度A/D转换。

·RECALL EE命令代码〔B8H〕:将EERAM中的数值拷贝到温度寄存器中。 ·READPOWERSUPPLY命令代码〔B4H〕:在本命令送到DS1280之后的每一个读数据间隙,指出电源模式:“0”为寄生电源;“1”为外部电源。

DS1820单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS1820的各种操作必须按协议进行。操作协议为:初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

1.4 原理及程序流程图

原理图很流程图在设计中可以帮助我们对电路的了解和分析有帮助,它能清楚直观的将电路表示出来。

1.4.1温度检测系统原理及程序流程图

温度检测系统原理图如图1-1所示,采用寄生电源供电方式。为保证在有效的DS1820时钟周期内,提供足够的电流,我们用一个MOSFET管和89C51的一个I/O口(P1.0)来完成对DS1820总线的上拉。当DS1820处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10μs。采用寄生电源供电方式时VDD必须接地。由于单线制只有一根线,因此发送接收口必须是三态的,为了操作方便我们用89C51的P1.1口作发送口Tx,P1.2口作接收口Rx。通过试验我们发现此种方法可挂接DS1820数十片,距离可达到50米,而用一个口时仅能挂接10片DS1820,距离仅为20米。同时由于读写在操作上是分开的故不存在信号竞争问题。

7

图1-1 采用寄生电源供电的DS1820温度检测系统

DS1820测量温度时使用特有的温度测量技术。DS1820内部的低温度系数振荡器能产生稳定的频率信号f0,高温度系数振荡器则将被测温度转换成频率信号f。当计数门打开时,DS1820对f0计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性予以被偿。测量结果存入温度寄存器中。一般情况下的温度值应为9位(符号点1位),但因符号位扩展成高8位,故以16位被码形式读出,表1.2给出了温度和数字量的关系。

表1.2 DS1820温度数字对应关系表

温度℃ +125 +25 +1/2 0 -1/2 -25 -55

输出的二进制码 0000000011111010 0000000000110010 0000000000000001 0000000000000000 1111111111111111 1111111111001110 1111111110010010 对应的十六进制码 00FAH 0032H 0001H 0000H FFFFH FFCEH FF92H 1.4.2 64位激光ROM

64位ROM的结构如下:

8

8bit检验CRC 48bit序列号 8bit工厂代号(10H) USB LSB USB LSB USB LSB

开始8位是产品类型的编号(DS1820为10H),接着是每个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS1820可以采用一线进行通信的原因。主机操作ROM的命令有五种,如表1.3所列。

表1.3 DS180的ROM命令

指 令 读ROM(33H) 匹配ROM(55H) 跳过ROM(CCH) 搜ROM(F0H) 报警搜索(ECH)

说 明 读DS1820的序列号 继读完64位序列号的一个命令,用于多个DS1820时定位 此命令执行后的存储器操作将针对在线的所有DS1820 识别总线上各器件的编码,为操作各器件作好准备 仅温度越限的器件对此命令作出响应 1.4.3 高速暂存器

它由便笺式RAM和非易失性电擦写 EERAM组成,后者用于存储TH、TL值。数据选写入RAM,经校验后再传给EERAM。便笺式EAM点9个字节,包括温度信息(第1、2字节)、TH和TL值(3、4字节)、计数寄存器(7、8字节)、CRC(第9字节)等,第5、6字节不用。暂存器的命令共6条,见表1.4所列。

9

表1.4 DS1820贮控制命令

指 令 温度转换(44H) 读数据(BEH) 写数据(4EH) 复制(48H) 说 明 启动在线DS1820做温度A/D转换 从高速暂存器读9bits温度值和CRC值 将数据写入高速暂存器的第2和第3字节中 将高速暂存器中第2和第3字节复制到EERAM 将EERAM内容写入高速暂存器中第2和第3字节 了解DS1820的供电方式 读EERAM(B8H) 读电源供电方式(B4H)

在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后现用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算: Ts=(Tz-0.25℃)+(CD-Cs)/CD

1.4.4 告警信号

DS1820完成温度转换后,就把测得的温度值与TH、TL作比较。若T>TH或T1.4.5 CRC的产生

在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS1820中的CRC值作比较,以判断主机收到的ROM数据是否正确。CRC的函数表达式为:CRC=X8+X5+X3+1。此外,DS1820尚

10

需依上式为暂存器中的数据来产生一个8位CRC送给主机,以确保暂存器数据传送无误。

1.5 多路温度测控仪的电路设计

用单片机控制的多路测度测控仪的电路。现用6只DS1820同时测控6路温度(视实际需要还可任意扩展通道数)。采用89C51单片机,其P1.1口接单线总线。DS1820采用寄生电源供电方式。为保证在有效的DS1820时钟周期内能提供足够的电流,图4中采用一个MOSFET管和89C51的H.0口来完成对DS1820的总线上拉。P1.2~P1.7口用来输出温度测控信号,经驱动器MC1413后分别驱动6只固态继电器,通过改变加热或致冷系统的工作状态,可实现对被监测系统的实时控制。

为提高系统的可靠性,该系统设计了由硬件与软件组成的“看门狗”。硬件看门狗由MAX813L及其外围电路组成,同时还具有电源监控和复位功能。P1.1定时输出喂狗,按键S1为手动复位。键盘扫描和动态扫描的显示共用一片可编程接口芯征8279,显示采用8位共阴极LED数码管,它可用来显示通道数、温度测量值以及TH、TL的值。

无论是单点还是多点温度检测,在系统安装及工作之前,应将主机逐个与DS1820挂接,读出其序列号。其工作过程为:主机Tx发一个脉冲,待“0”电平大于480μs后,复位DS1820,待DS1820所发响应脉冲由主机Rx接收后,主机Tx再发读ROM命令代码33H(低位在前),然后发一个脉冲(15μs)并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。对于图5系统的DS1820操作的总体流程图。它分三步完成:①系统通过反复操作,搜索DS1820序列号;②启动所有在线DS1820做温度A/D变换;③逐个读出在线DS1820变换后的温度数据。主机启动温度变换并读取温度值的详细流程图.;主机写入存储器数据详细流程图。当有更多的检测点需要测温时,可利用89C51的其它口进行扩展。同时,也可利用89C51的串行通信口(RXD,TXD)与上位计算机进行通信,从而构成微机温度测量系统网需要注意的是,在系统安装及工作之前应将主机逐个与DS1820挂接,以读出其序列号。其工作过程为:主机发出一个脉冲,待“0”电平大于480μs后,复位DA1820,在DS1820所发响应脉冲由主机接收后,主机再发读ROM命令代码33H,然后发一个脉冲(15μs),并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。另外,由于DS1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对DS1820和各种操作必须按协议进行,即:初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

11

第2章 硬件设计

2.1 系统简介

该装置可实现的功能如下:

在0~50℃和20%~98%RH间任意设定温湿度控制点; 可以对环境温湿度的控制可满足指标

可实时监测环境温湿度的变化情况,并记录、存储相关数据;

温湿度的控制精度分别为:温度(0~50℃)+0.5℃;湿度(20%~98%RH)+2%~3%RH。

该装置的扩展功能 具有多点定时控制电路;

设有语音提示功能,可方便地实现仪器操作和工作管理提示; 配有通信接口,可方便地与计算机进行通信;

2.2 硬件设计

该装置的硬件框图如图2-1所示。他主要由单片机PIC16C73及外部电路构成。PIC16C73是由美国M i c r o h i p公司生产的8位单片微机,采用h a r v a r d结构,这种结构可使指令执行和取指操作重叠进行,因而具有很高的执行速度。他只有35 条单字节指令,除了跳转指令是2周期指令外,其他指令都是单周期指令。这些特点使它较之于别的8位单片机节省了1/2的程序空间,并且有4:1的速度优势。PIC16C73在芯片内集成了一个8位算术逻辑单元和工作寄存器、4K程序存储器、192个数据寄存器、22个I/O口、3个定时/计数器及2个扑捉/比较/PWM模块和2个串行口。其中A/D转换器具有5路模拟量输入端,同时还具有时钟、复位、看门狗定时等。这五路模拟量输入通道共同复用一个采样/保持和A/D转换器。PIC16C73外接温湿度采样电路及电器驱动电路,因而可实现对温度的控制。该系统硬件主要包括本机地址设定电路、采样电路、键盘显示电路、看门狗电路、电器驱动电路、时间设置及定时驱动电路、RS-232通信等电路。

12

图2-1电路图

2.3 电路设计

设计出合理而用的电路是我们设计的目的,为我们以后学习电路和应用电路

十分常重要的。电路的设计要使用很简单,避免元器件的浪费而增加成本。 2.3.1温度检测电路

温度检测电路温度检测电路选用Dallas公司生产的一线式数字温度传感器DS1820作为温度检测器件,该器件只有3个引脚(即电源VDD、地线GN

D、数据线DQ),且不需要外部元件,而是共用一条数据线进行通信,使用一根

I/O线通信时,DS1820的电源电压是以寄生方式供电的,因此,只需将其

VDD和GND端接地即可。该电路的检测温度范围为-55~+125℃;精度为0.5℃;用9bit数字量来表示温度;每次将温度转换成数字量需200ms。

笔者采用三块DS1820来实现对实验室环境温度的检测,之所以用三块,是为

13

了更好地保持温度的恒定。使用时可分别将这三块DS1820放置在房间的不同位置。获得温度信息时,先由PIC16C73的RA2脚发送一个1ms的复位脉冲,以使DS1820复位后将向PIC16C73发送一个回应脉冲,PIC16C

73接到回应脉冲后将发送读DS1820序列号的读ROM命令,以分别读取三

个DS1820的序列号(每一块DS1820有唯一的序列号);然后,PIC1

6C73再发出定位命令以选择在线的DS1820并进行温度转换。此时PIC16C73的RA1脚应输出一个保持2s以上的高电平信号来使SK214导通,从

而提供DS1820在总线供电下进行温度转换时所需的1mA电流。当温度转换完成后,PIC16C73的RA2脚会发送DS1820的存储命令,从而完成温度信息数据的转换和读取。

DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:

(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。

(2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。

(3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。

2.3.2 湿度检测电路

1. SHT15传感器的特点如下:

⑴全校准数字输出,相对湿度、温度传感器;

⑵温度值分辨率为14位,湿度值分辨率为12位,可编程降至12位和8位; ⑶具有露点计算输出功能; ⑷无需外围元件;

⑸小体积(7×5×3mm),可表面贴装;

14

⑹卓越的长期稳定性; ⑺自动断电功能;

⑻工业标准I2C总线接口; ⑼可靠的CRC传输校验。 2. 传感器信号输出 ⑴湿度值输出

HT15的输出特性呈一定的非线性,为了补偿湿度传感器的非线性以获取准确数据,可按如下公式修正湿度值: RHlinear=c1+c2·SORH+c3·SORH2 (1)

式中SORH为传感器相对湿度测量值,系数取值如下: 12位SORH : c1=-4 c2=0.0405 c3=-2.8*10-6 8位SORH : c1=-4 c2=0.648 c3=-7.2*10-4 ⑵温度值输出

由设计决定的SHT15温度传感器的线性非常好,故可用下列公式将温度数字输出转换成实际温度值: 温度=d1+d2*SOT

当电源电压为5V、温度传感器的分辨率为14位时,d1=-40,d2=0.01,当温度传感器的分辨率为12位时,d1=-40,d2=0.04。 ⑶露点计算

空气的露点值可根据相对湿度和温度值由下面的公式计算。 LogEW=(0.66077+7.5*T/(237.3+T)+(log10(RH)-2) Dp=((0.66077-logEW)*237.3)/(logEW-8.16077)

2.3.3命令与接口时序

SHT15传感器共有5条用户命令,具体命令格式见表2.1。

15

表2.1SHT15传感器命令列表

命令 测量温度 测量湿度 读寄存器 状态 写寄存器 状态 软启动 编码 00011 00101 00111 00110 11110 说明 温度测量 湿度测量 “读”状态寄存器 “写”状态寄存器 重启芯片,清除状态记录器的记录11m秒后进入自动状态

下面介绍一下具体的命令顺序及命令时序。 ⑴传输开始

初始化传输时,应发出“传输开始”命令,命令包括SCK为高时,DATA由高电平变为低电平,并在下一个SCK为高时将DATA升高。

后一个命令顺序包含三个地址位(目前只支持“000”)和5个命令位,通过DATA脚的ack位处于低电位表示SHT15正确收到命令。 ⑵连接复位顺序

如果与SHT15传感器的通讯中断,下列信号顺序会使串口复位:

当使DATA线处于高电平时,触发SCK 9次以上(含9次),并随后发一个前述的“传输开始”命令。 ⑶温湿度测量时序

当发出了温(湿)度测量命令后,控制器就要等到测量完成。使用8/12/14位的分辨率测量分别需要大约11/55/210毫秒。为表明测量完成,SHT15会使数据线为低,此时控制器必须重新启动SCK。然后传送两字节测量数据与1字节CRC校验和。控制器必须通过使DATA为低来确认每一字节,所有的量中从右算MSB列于第一位。通讯在确认CRC数据位后停止。如果没有用CRC-8校验和,则控制器就会在测量数据LSB后,保持ack为高来停止通讯,SHT15在测量和通讯完成之后会自动返回睡眠模式。需要注意的是,为使SHT15温升低于0.1℃。 ]

16

第三章 应用设计

3.1 硬件接口电路设计

这里以AT89C2051单片机为例给出SHT15与单片机的接口电路。

由于AT89C2051不具备I2C总线接口,故使用单片机通用I/O口线来虚拟I2C总线,利用P1.0来虚拟数据线DATA,利用P1.1口线来虚拟时钟线,并在DATA端接入一只4.7K的上拉电阻,同时在VDD及GND端接入一只0.1μf的去耦电容。

3.2非线性校正及温度补偿

公式(1)给出的相对湿度的非线性补偿计算公式,对于单片机系统而言,由于计算量大而过于复杂,下面给出简化的计算方法。

为了避免复杂的计算工作量,可根据系统要求的测量精度分别采用以下的小计算量修正算法。 ⑴线性

当系统对湿度测量精度要求不高时,可采用以下的线性计算公式。 RHsimple=c1+c2·SORH 这里c1=0.5; c2=0.5 ⑵2*线性

当系统对湿度测量精度要求较高时,可采用以下的2*线性计算公式,即用最小的计算复杂性来提高精确度。 RHreal=(a*SO+b)/256

这里的SO表示8位湿度传感器输出湿度值,当0≤SO≤107时,a=143 ,b=512 ,当108≤SO≤255 时,a=143 ,b=512。 ⑶温度补偿

上述湿度计算公式是按环境温度为25℃进行计算的,而实际的测量温度值则在一定的范围内变化,所以应考虑湿度传感器的温度系数,按如下公式对环境温度进行补偿。

RH true=(T℃-25)·(t1+t2·SORH)+RHlinear

当SORH为12位时t1=0.01;t2=0.00008,当SORH为8位时,t1=0.01;t2=0.00128。

17

3.3高级应用

SHT15一些高级功能可通过控制内部寄存器状态获得,内部状态寄存器为8位。

表3.1 SHT15状态寄存器的类型及含义

7 类 型 6 5 读 说明 保留 工作极限(低电压检查) 保留 4 3 保留 只用于试验,不可使用 2 1 0

读/写 读/写 读/写 加热 0 0 0 关 0 0 缺省 0 X 0 3.3.1加热控制

使传感器芯片中的加热开关接通,传感器温度大约增加5℃,这会使能耗增加至8mA@5v,加热用途如下:

⑴通过对启动加热器前后的温、湿度进行比较,可以正确地区别传感器的功能; ⑵在相对湿度较高的环境下,传感器可通过加热来避免冷凝。

3.3.2低电压检测

SHT15的工作极限功能可以检测VDD电压是否低于2.45V,准确度为±0.1V。

3.3.3下载校准系数

为了节省能量并提高速度,OTP在每次测量前都要重新下载校准系数,每一次测量都会节省8.2毫秒。

18

3.3.4测量分辨率设定

可以将测量分辨率由14位(温度)、12位(湿度)分别减少到12位和8位。主要应用于高速或低功耗场合。

也可自制温度传感器,它的核心是温度传感器HPR,其具体做法是:取一块15mm*20mm的单面环氧树脂铜箔板,表面最好能经渡金处理,以防止湿度膜与电极之间的化学反应。然后在指叉状电极上刷一层市售化学胶水,待干后再刷上第二层胶水,这样反复刷3,4次胶水。一块自制高分子湿敏传感器就制成了。它的直流电阻随电极的形状、湿敏薄膜的厚度以及环境的相对湿度而变化,约在数百欧倒数兆之间。传感器的直流电阻大小是随相对湿度的增加按对数规律而减小的。

3.3.5定时及控制电器驱动电路

定时功能主要用于主人下班前.提前启动空调 加湿器等设备,使房间内温盘度提前达到预设定要求。定时的实现由单片机来完成,时钟频率选用32.768kHz,该频率可使单片机工作在最小功耗状态以及简化分频、定时程序的编写。电器驱动电路控制的设备可以包括空调机、加湿机、吸湿机、通风机等,分别采用过零型固态继电器来控制其工作。利用PICl6C73的RA3口作控制口.继电器采用交流固态继电器H220Dl5,其内部采用光电隔离方式可有效地避免电磁干扰,当单片机检测到温湿度信号超过设定值时,从RA3口发出控制信号,由光耦产生大于5mA的触发电流使固态继电器启动相应的电器得电工作,从而实现对相应设备的控制。设计时应注意各个电器不要同时启动以免冲击电网,这部分工作由软件延时完成。

3.3.6语音电路

台湾Windand公司生产的语音处理芯片W5l3000,除了支持按键直接控制话筒和喇叭的随录随放功能和快速搜索放音模式外,还具有完善的CPU微处理器控制模式,用单片机能控制它的所有功能。主要提供的晤音信息为加湿器、吸湿器水箱的水满和缺水报警。语音的录制等操作由键盘和PICl6C73完成。 3.3.7键盘和显示

键盘没有16个按键:0-9为10个数字键:A为设定功能选择键,B为设定完成确定键,C显示选择键,D~F键是完成语音处理、通信等功能。对温湿度的显示采用4位LED动态分时完成。

19

第四章 软件设计

软件用汇编语言编程,采用模块化设计方法。主要包括王程序、中断服务程序、温湿度检测程序、语音处理程序、定时驱动程序、显示子程序等。

4.1

主程序设计

该系统软件可采用模块化设计方法,用汇编语言来实现。包括主程序、中断

服务程序、温湿度检测程序、语音处理程序、定时驱动程序、显示子程序等。主程序以循环方式工作,主要完成中断初始化、键盘扫描、温湿度检测、语音处理及显示子程序的循环调用等功能。

主程序设计主程序是控制和管理的核心,主要完成在系统上电后进行定时器和中断处理操作的初始化。初始化主要完成对温湿度的设定和检查除定时器T0外的所有中断禁止,同时断开各电器的电源。初始化完成后,系统将开始正常运行,并进行温湿度检测、键盘扫描及定时处理等操作,其软件流程如图4-1所示。

20

图4-1流程图

4.2温湿度处理子程序

温度传感器选用了DSl820后,软件的编写相对简单,DSl820输入单片机的信号为9位数字信号,不需要进行转换。这里应注意的是软件控制单片机向DSl820发送的复位脉冲一定要大于1ms。否则软件将无法正常运行。主要由于DS1820的

21

写时间的关系,在用软件进行写0后再写l之前必须有800μs的低脉冲,写1后再写l也是如此,否则将出现数据写错误。

PICl6C73内含A/D转换器,参考电压由软件设置为器件的正电源电压,由RA0引脚接入的模拟电压经A/D转换成数字信号。A/D模块有3个寄存器:A/D转换结果寄存器(ADRES),A/D控制寄存器0(ADCONO)和A/D控制寄存器1(ADCONl)。

A/D控制寄存器0:控制A/D模块的工作,寄存器的上电复位值是00H,未用位执行读操作时为0,不能执行写操作,其它位均可读写。

A/D控制寄存器l:只用了0~2位,这3位是A/D转换口配置位,这些位将模拟口配置成不同的工作方式,包括模拟量输入输出、数字量输入输出以及参考电压。

以RAO通道为例,可写出A/D转换程序如下。 BSF STATUS,RPO ;选择页面l CLRF ADCONl ;配置A/D输入 BSF PIEl,ADIE ;使能A/D中断 BCF STATUS,RP0 ;选择页面O MOVLW OXCl ;时钟、A/D接通 MOVWF ADCONO ;

BCF PIRl,ADIF: ;清除A/D中断标志 BCF INTCON,PEIE ;使能外围功能 BCF INTCON,GIE ;使能所有中断

22

结束语

随着现代家庭生活水平的不断提高.要使居室主人感觉舒适,需要对房间内的温度、湿度等进行检测,进而进行自动控制,以提高居室内环境的舒适度。

传感技术和自动化控制技术的不断进步,促使各行各业都在发生着日新月异的变化。伴随着网络技术的发展,可实现远程控制。电子产品在家庭中的地位越来越重要,本产品的设计是为了使人们家庭生活跟舒适,满足人们对现代生活水平的要求。相信不久的将来电子厂品将趋于更人性的智能化,智能化的电子产品也将被更多人热爱和使用。

本课题是为了提高人们生活水平而设计,本设计注重理论分析,和设计的可行性。注重元器件的功能和使用。但因水品和条件问题,并未作出产品是设计的一大缺憾。本设计在语音设计和存储设计并不完全,留待以后扩展。

23

致 谢

我首先感谢感谢我的指导老师,她在这次毕业设计中给了我很多帮助。感谢同学们在这三年里给我的帮助。感谢河南机电高等专科学校给了我上大学的机会,圆了我上大学的梦。感谢学校的各位老师他们这在这三年了教会了我许多专业知识,使我有能力进入社会去实践,用知识武装自己,使自己更充实。感谢我的父母是他们辛辛苦苦把我养大供我上学,让我成为一名大学生。这份恩情我将永记在心,毕业后,我将以自己的实际行动来回报老师和领导给予我的关心和帮助,回报父母多年的养育之恩,回报社会为我提供的这一切。

24

参考文献

[1] 无线电编辑部.无线电制作精汇 .人民邮电出版社 [2] 袁宇正.电子爱好者实用电子制作 .人民邮电出版社 [3] 王喜中,于才渊,周才君编著.喷雾干燥。化学工业出版社 [4] 电子爱好者报编辑部. 电子爱好者报 .电子爱好者报社

[5] 宋佳友.集成电子线路设计手册.福建:福建科技出版社,2002. [6] 金伟正单线数字温度传感器的原理与应用.

[7] 胡振宇,刘鲁源,杜振辉DS18B20接口的C语言程序设计单片机与嵌入式

系统应用

[8] http://www.wendingsensor.com/productindex_IAQ.htm [9] http://www.165v.com/165v/div/2005-1-20/393-1.htm [10] www.newmaker.com/disp_art/1240010/ 2969.html

25

附录

在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。+5V和信号线之间有一个4.7K的上拉电阻,硬件就这么简单。 软件如下:

;这是关于DS18B20的读写程序,数据脚P2.2,晶振12MHZ

;温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒 ;可以将检测到的温度直接显示到AT89C51开发实验板的两个数码管上 ;显示温度00到99度。 ;单片机内存分配申明!

TEMPER_L EQU 29H;用于保存读出温度的低8位 TEMPER_H EQU 28H;用于保存读出温度的高8位 FLAG1 EQU 38H;是否检测到DS18B20标志位 a_bit equ 20h ;数码管个位数存放内存位置 b_bit equ 21h ;数码管十位数存放内存位置 MAIN:

LCALL GET_TEMPER;调用读温度子程序

;进行温度显示,这里我们考虑用网站提供的两位数码管来显示温度 ;显示范围00到99度,显示精度为1度

;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位

;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度

;这个转化温度的方法可是我想出来的哦~~非常简洁无需乘于0.0625系数 MOV A,29H

MOV C,40H;将28H中的最低位移入C RRC A MOV C,41H RRC A

26

MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A

LCALL DISPLAY;调用数码管显示子程序 CPL P1.0 AJMP MAIN

; 这是DS18B20复位初始化子程序 INIT_1820: SETB P2.2 NOP CLR P2.2

;主机发出延时537微秒的复位低脉冲 MOV R1,#3 TSR1:MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1

SETB P2.2;然后拉高数据线 NOP NOP NOP MOV R0,#25H TSR2:

JNB P2.2,TSR3;等待DS18B20回应 DJNZ R0,TSR2 LJMP TSR4 ; 延时 TSR3:

SETB FLAG1 ; 置标志位,表示DS1820存在 CLR P1.7;检查到DS18B20就点亮P1.7LED LJMP TSR5 TSR4:

CLR FLAG1 ; 清标志位,表示DS1820不存在CLR P1.1 LJMP TSR7

27

TSR5: MOV R0,#117 TSR6:

DJNZ R0,TSR6 ; 时序要求延时一段时间 TSR7: SETB P2.2 RET

; 读出转换后的温度值 GET_TEMPER: SETB P2.2

LCALL INIT_1820;先复位DS18B20 JB FLAG1,TSS2 CLR P1.2

RET ; 判断DS1820是否存在?若DS18B20不存在则返回 TSS2:

CLR P1.3;DS18B20已经被检测到!!!!!!!!!!!!!!!!!! MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820

MOV A,#44H ; 发出温度转换命令

LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒 LCALL DISPLAY

LCALL INIT_1820;准备读温度前先复位 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820

MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820

LCALL READ_18200; 将读出的温度数据保存到35H/36H CLR P1.4

RET;写DS18B20的子程序(有具体的时序要求) WRITE_1820:

MOV R2,#8;一共8位数据 CLR C WR1: CLR P2.2

28

MOV R3,#6 DJNZ R3,$ RRC A MOV P2.2,C MOV R3,#23 DJNZ R3,$ SETB P2.2 NOP DJNZ R2,WR1 SETB P2.2

RET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 READ_18200:

MOV R4,#2 ; 将温度高位和低位从DS18B20中读出

MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H) RE00:

MOV R2,#8;数据一共有8位 RE01: CLR C SETB P2.2 NOP NOP CLR P2.2 NOP NOP NOP SETB P2.2 MOV R3,#9 RE10: DJNZ R3,RE10 MOV C,P2.2 MOV R3,#23 RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01

29

MOV @R1,A DEC R1 DJNZ R4,RE00 RET ;显示子程序

display: mov a,29H;将29H中的十六进制数转换成10进制 mov b,#10 ;10进制/10=10进制 div ab

mov b_bit,a ;十位在a mov a_bit,b ;个位在b

mov dptr,#numtab ;指定查表启始地址 mov r0,#4

dpl1: mov r1,#250 ;显示1000次 dplop: mov a,a_bit ;取个位数 MOVC A,@A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码 clr p2.7 ;开个位显示 acall d1ms ;显示1ms setb p2.7

mov a,b_bit ;取十位数

MOVC A,@A+DPTR ;查十位数的7段代码 mov p0,a ;送出十位的7段代码 clr p2.6 ;开十位显示 acall d1ms ;显示1ms setb p2.6

djnz r1,dplop ;100次没完循环 djnz r0,dpl1 ;4个100次没完循环 ret

;1MS延时(按12MHZ算) D1MS: MOV R7,#80 DJNZ R7,$

RET;实验板上的7段数码管0~9数字的共阴显示代码 numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH

end

30

因篇幅问题不能全部显示,请点此查看更多更全内容