第16章 湿度检测系统剖析Word格式文档下载.docx

上传人:b****6 文档编号:20428827 上传时间:2023-01-22 格式:DOCX 页数:30 大小:371.32KB
下载 相关 举报
第16章 湿度检测系统剖析Word格式文档下载.docx_第1页
第1页 / 共30页
第16章 湿度检测系统剖析Word格式文档下载.docx_第2页
第2页 / 共30页
第16章 湿度检测系统剖析Word格式文档下载.docx_第3页
第3页 / 共30页
第16章 湿度检测系统剖析Word格式文档下载.docx_第4页
第4页 / 共30页
第16章 湿度检测系统剖析Word格式文档下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

第16章 湿度检测系统剖析Word格式文档下载.docx

《第16章 湿度检测系统剖析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第16章 湿度检测系统剖析Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。

第16章 湿度检测系统剖析Word格式文档下载.docx

SHT11有8个引脚,但它通过4条线与其它元件相连,分别是电源(GND、VCC)和IIC总线(SCK和DATA),SHT11的结构框图如图16.3所示。

从图16.3可以看出,该传感器中含有放大电路和A/D转换电路,所以在应用时只需和处理器用IIC连接,读出数据即可。

下面是SHT11的各引脚说明:

∙电源引脚:

SHT11的供电电压为2.4~5.5V。

传感器上电后,要等待11ms以越过“休眠”状态,在此期间无需发送任何指令。

电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。

∙串行时钟输入(SCK):

SCK用于微处理器与SHT11之间的通讯同步。

由于接口包含了完全静态逻辑,因而不存在最小SCK频率。

∙串行数据(DATA):

DATA三态门用于数据的读取。

DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。

数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。

为避免信号冲突,微处理器应驱动DATA在低电平。

需要一个外部的上拉电阻(例如:

10kΩ)将信号提拉至高电平。

上拉电阻通常已包含在微处理器的I/O电路中。

注意:

SHTx11的串行接口虽然是IIC总线,但在传感器信号的读取及电源损耗方面,都做了优化处理;

但与标准IIC接口不兼容,故一般应用处理器模仿IIC总线。

图16.3SHT11结构框图

1.发送命令

SHT11与处理器通信之前用一组“启动传输”时序,来表示数据传输的初始化。

它包括:

当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平,如图16.4所示。

图16.4启动传输时序图

启动传输后,后续指令包括地址位和命令位,其中有三个地址位(目前只支持“000”)和五个命令位。

SHT11会以下述方式表示已正确地接收到指令:

在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位)。

在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平),如图16.5所示。

表16.1为SHT11的所有命令集。

图16.5SHT11测量时序图

表16.1SHT11的命令集

命令

代码

预留

0000x

温度测量

00011

湿度测量

00101

读状态寄存器

00111

写状态寄存器

00110

0101x-1110x

软复位:

复位接口、清空状态寄存器,下次命令前等待至少11ms

1110

2.测量时序

在进行测量温度或湿度时,需要先启动传输,后续需要向传感器发送三位地址和命令(温度测量为00011;

湿度测量为00101),控制器要等待测量结束。

SHT11通过下拉DATA至低电平并进入空闲模式,表示测量的结束。

控制器再次触发SCK时钟前,必须等待这个“数据备妥”信号来读出数据。

检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。

当测量结束后,接着传输2个字节的测量数据和1个字节的CRC-8校验。

处理器需要通过下拉DATA为低电平,以确认每个字节。

所有的数据从MSB开始,右值有效(例如:

对于12bit数据,从第5个SCK时钟起算作MSB;

而对于8bit数据,首字节则无意义)。

当使用CRC-8校验时,用CRC数据的确认位,表明通讯结束。

如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保持确认位ack高电平,来中止通讯。

传输时序如图16.5所示。

在测量和通讯结束后,SHT11自动转入休眠模式。

16.2.3SHT11的状态寄存器

STH11中含有一个状态寄存器,某些高级功能可以通过状态寄存器实现。

状态寄存器的各位的具体含义如表16.2。

表16.2状态寄存器

类型

说明

默认值

7

6

R

低电压检测:

0对应VCC>

2.47

1对应VCC<

X

5

4

3

仅供测试,不使用

2

R/W

加热

1

不从OTP加载

记载

1:

湿度8位/温度12位分辨率

0:

湿度12位/温度14位分辨率

湿度12位

温度14位

∙测量分辨率默认的测量分辨率分别为14bit(温度)、12bit(湿度),也可分别降至12bit和8bit。

通常在高速或超低功耗的应用中采用该功能。

∙电量不足“电量不足”功能可监测到VCC电压低于2.47V的状态。

精度为±

0.05V。

∙加热元件芯片上集成了一个可通断的加热元件。

接通后,可将SHT11的温度提高大约5-15℃,功耗增加大约8mA(VCC=5V)。

应用于比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。

说明:

在高湿度(>

95%RH)环境中,加热传感器可防止凝露,同时缩短其响应时间,提高测量精度。

警告:

加热后较之加热前,SHT11将显示温度值略有升高、相对湿度值稍有降低。

传感器的输出值和湿度之间不是完全的线性变换,所以在获得湿度值时一般按照如下公式计算得到的。

其中:

SORH为从传感器读出的数值,c1、c2和c3的取值如下表:

表16.3湿度转换系数

SORH

C1

C2

C3

12bit

-4

0.0405

-2.8×

10-6

8bit

0.648

-7.2×

10-4

16.3系统的硬件电路设计

湿度检测系统主要由湿度数据采集模块、传输电平转换接口和计算机处理软件组成,在本章中我们主要讨论前两部分的设计。

为适应远距离传输的条件,该系统使用RS-485总线传输。

16.3.1RS-485和RS-232转换接口

图16.6MAX485结构和管脚图

由于计算机上没有RS-485接口,故计算机不能直接连接485总线,但计算机上有RS-232接口,所以可以先把485电平转换为232电平,再传输到计算机上,由计算机处理。

在该接口中用到MAX232、MAX485和6N137,下面分别介绍。

1.RS-485驱动芯片MAX485

MAX485是由Maxim公司生产的低功耗RS-485收发芯片,内部集成了一个驱动器和一个接收器。

结构及管脚图如图16.6所示。

MAX485有8个引脚,是半双工通信的启动芯片,各引脚意义如下:

∙RO:

接收器输出端。

接收器输出使能端。

0:

允许接收器输出;

禁止接收器输出。

∙DE:

驱动器输出使能端。

禁止驱动器工作;

允许驱动器工作。

∙DI:

驱动器输入端。

∙GND:

接地端。

∙A:

接收器非反相输入和驱动器非反相输出端。

∙B:

接收器反相输入和驱动器反相输出端。

∙VCC:

电源端,电压范围4.75V-5.25V。

从MAX485各引脚的功能可以看出,该芯片工作在半双工状态,接收使能端和传输使能端正好处于两个相反状态,所以在进行硬件连接时,可以把这两个引脚连到一个单片机输出引脚上。

由于RS-232的原理和连接在其他章节中介绍了,故在此不再过多赘述。

2.光电隔离技术

为了提高数据传输的可靠性,防止两种电平信号的相互干扰,在两种电平之间采用了光电隔离技术。

为了达到完全隔离效果,两个子系统应该用两套相互独立的电源供电,因此在电路设计当中采用了电源的光电隔离模块:

DC-DC模块,该模块可以产生两个相互独立的电源。

为达到隔离效果,在传输数据的信号线之间采用光电耦合器,由于信号的传输要求光耦具有高速特性,所以该系统中采用了高速光耦6N137,其内部结构和引脚图如16.7所示。

图16.76N137内部结构图

从6N137的结构图可以看出,该光耦是通过发光二极管的导通和截止来控制另一端的导通和截止,信号输入端为ANODE端和CATHOLD端,信号输出端为VE端和VO端,内部结构中由于有一个反相器,所以通常输出电平为输入电平的反向电平。

表16.4为6N137的逻辑真值表。

表16.46N137的真值表

发光二极管LED

VE端

VO端

ON

H

L

OFF

NC

由于6N137内部采用高强度红外发光二极管和高速高增益的光敏检测集成电路,从而能够满足在数字传输中的高速变化的逻辑电平。

6N137典型的应用电路如图16.8所示。

图16.86N137应用典型电路

该电路应用于单片机的通信系统中的隔离技术,所以单片机控制端和数据通信端应用了两套相互独立的电源,分别用VCC和+5v表示,这样可以有效抑制系统对通信的干扰,从而提高通信的质量和距离。

3.电路设计

该电路的设计主要由三部分构成,分别为电源部分,RS-485通信部分和RS-232通信部分。

在该通信接口中由于用到了光电隔离技术,所以在电路中必须要用两套相互独立的电源。

为了减少设计的复杂度,电路中用到了一个带光电隔离的DC-DC模块,该模块在一个电源输入的情况下能够产生另一个独立的电源。

图16.9为该部分的电路。

图16.9通信接口的电源电路

图16.10DC-DC电源模块连接图

图16.9中把220v交流电通过整流桥和变压模块LM317变为直流5v电源,图16.10中利用DC-DC电源模块产生两套独立电源,它们都是直流的5v电源。

在通信接口中,通信中信号电平的转换顺序为:

RS-232电平转换为TTL电平,TTL电平再转换为RS-485电平,前一次转换过程应用MAX232芯片,电路图如图16.11。

图16.11RS-232电平转换TTL电平电路图

电路中,接头采用9针的针式插头,可以直接连接到计算机的串行接口上。

MAX232后方的传输线TD和RD上传输的信号为TTL电平信号。

TTL电平信号到RS-485电平的转换是利用MAX485芯片实现的,电路如图16.12所示。

图16.12TTL电平转换RS-485电平电路图

在RS-485通信中为了减小干扰,在总线两端增加了120Ω的电阻,所以在电路的设计中增加了一个跳线,用于接入120Ω电阻。

为了防止MAX232和MAX485之间的相互干扰,在两个芯片传输线之间用6N137进行了光电隔离。

图16.13光电隔离电路

16.3.2湿度检测分机电路设计

图16.14分机通信模块电路原理图

湿度检测分机负责检测外部环境的湿度,并把检测结果实时的传输到计算机上。

假设计算机可以管理多个环境的湿度检测,则在系统中存在多台分机,为了能够区分各个分机,在每个分机上分配一个地址。

根据分机的功能,可将分机划分如下几个功能模块:

电源模块、通信模块和湿度检测模块。

电源的设计与通信接口中的电源设计是相同的,同样应用了光电隔离技术。

通信模块仍然用MAX485实现,电路图如图16.14所示。

在图16.14中,由于MAX485的发送控制端DE和接收控制端RE的控制电平正好相反,故把此两个引脚共同连到单片机上进行控制,空闲状态下保持MAX485为接收状态。

单片机和湿度传感器的电路比较简单,只要对应连到单片机的I/O线即可,如图16.15所示。

图16.15分机显示及检测电路

在图16.15中,SW为拨码开关,用于设置检测分机的地址号。

分机除了向上位机传送当前的湿度值外,还将检测到的湿度值用LED数码管显示出来,同时电路中应用了串转并电路74164以减少单片机端口的数量。

为了提高系统的可靠性,电路增加了看门狗电路,并用MAX813L实现。

16.4系统的软件设计

该系统的软件设计包括上位机软件和单片机程序的设计,该章中不具体介绍上位机软件的设计,只说明上位机软件的功能。

上位机软件除了存储、查询和设置等功能外,与单片机向关的功能就是与单片机的数据通信,上位机软件用循环的方式查询各检测分机的检测数据。

整个通信工程必须有统一的通信协议。

16.4.1系统通信协议的设定

为了单片机能够快速高效的处理上位机软件发送到命令,单片机程序和上位机软件都必须按照统一的通信协议进行数据和命令的传输,从而使单片机能够快速响应上位机软件的命令。

图16.16为通信的帧的格式。

起始字符

帧头

字节数

帧标志

帧数据

校验值

帧尾

图16.16通信帧格式

∙起始字符:

该部分用于指示通信的开始。

由两字节组成,两个FFH;

∙帧头:

一字节,用于说明通信帧的开始,68H;

∙字节数:

一字节,用于指示该帧中的字节数目,其中不包括起始字符、帧头、检验值和帧尾;

∙帧标志:

一个字节,表示本帧数据是命令帧(A5H)还是数据帧(5AH),命令帧用于上位机软件向检测分机查询湿度值,数据帧用于检测分机向上位机传送。

∙帧数据:

每帧要发送到数据;

∙校验值:

一字节,该校验为和检验,即将帧头、字节数、帧标志和帧数据求和;

∙帧尾:

一字节,FAH。

命令帧的帧标志为A5H,帧中的数据为一字节的分机地址。

数据帧的帧标志为5AH,帧中的数据为分机地址号和湿度值。

当上位机软件进行查询数据时,若收不到检测分机的数据帧,则在延时一段时间后再次查询检测分机,如此三次,若仍收不到数据帧,则断定该检测分机出现故障。

16.4.2单片机程序设计

检测分机的单片机程序包括如下几个模块:

显示模块程序、湿度检测模块程序和通信模块程序。

程序总流程图如图16.17。

图16.16单片机程序流程图

1.函数声明及变量定义

为方便程序的编写,把部分常用的变量进行伪定义。

#include<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineboolbit

#definetrue1

#definefalse0

sbitSCK=P3^4;

//IIC时钟信号

sbitSAL=P3^5;

//IIC数据线

sbitLED_SCK=P3^2;

//显示部分串转并时钟线

sbitLED_SAL=P3^3;

//显示部分串转并数据线

sbitWDI=P3^7;

//喂狗脚

sbitCTR_485=P1^0;

//RS_485总线传输控制

ucharcodeled_char[16]={0xfa,0x48,0xf4,0xdc,0x4e,0x9e,0xbe,

0xc8,0xfe,0xde,0x00};

//0~9,0x00为数码管不显示任何数字

ucharAddress;

//分机地址号

ucharidataData_Buffer[20];

//接收缓冲区

boolCommand_Send;

voidStart(void)//SHT11启动子程序

ucharReadreg(void)//读状态寄存器

voidWritereg(ucharregdata)//写状态寄存器

voidIntSHT11(void)//设置SHT11湿度检测工作在8位状态,状态寄存器bit0=0

ucharReadData(void)//获取补偿前的SHT11的返回值

intGetRH(void)//获取补偿后的湿度值

voidLED_Display(ucharright,ucharleft)//LED显示子程序

voidDisplay(intRH)//湿度值显示子程序

ucharReceive_Data(void)//接收字节子程序

voidSend_Data(ucharSerial_data)//串口发送一个字节函数

bitReceive_One(uchar*s)//接收一帧数据子程序

voidRXD_Int(void)interrupt4//串口接收中断子程序

voidSend_One(uchar*s)//串口发送一帧数据子程序

voidSend_RH(ucharRH)//命令处理子程序

ucharGet_address(void)//获取地址号子程序

voidInital(void)//初始化化子程序

2.环境湿度值采集程序的设计

SHT11与单片机的接口为串行IIC总线,但单片机AT89C2051没有IIC接口,所以必须用单片机的I/O线模拟SHT11的时序来完成数据和命令的传输。

发送命令

如图16.4。

当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平。

****************************

SHT11启动子程序

****************************/

voidStart(void)

{

SCK=1;

//时钟信号变高电平

_nop_();

SAL=0;

//数据线变低电平

SCK=0;

SAL=1;

}

设置工作模式

SHT11的工作模式的设置是对其状态寄存器的写入状态字。

状态寄存器的每一位的意义在表16.4中已详细说明。

在该章中SHT11工作在8位分辨率的湿度测量中,所以状态寄存器的最低位应为1,而系统默认为0,所以需要对状态寄存器进行执行写入操作,在写入之前必须先进行读出,以保证状态寄存器的其它位不被修改。

/*****************************

返回值:

状态寄存器值

******************************/

ucharReadreg(void)

uchari,reg;

Start();

//启动传输命令

//发送地址000

for(i=0;

i<

3;

i++){

}

WDI=0;

WDI=1;

//清看门狗

//发送读状态寄存器命令码00111

2;

//保持一个周期的0

reg=0;

//开始读取状态寄存器值

8;

reg=reg<

1;

if(SAL)

reg=reg||0x01;

else

reg=reg&

&

0xfe;

returnreg;

//返回状态寄存器值

入口参数:

状态寄存器的设置值

voidWritereg(ucharregdata)

uchari;

//发送写状态寄存器命令码00110

_nop

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1