ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:371.32KB ,
资源ID:20428827      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20428827.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第16章 湿度检测系统剖析Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、SHT11有8个引脚,但它通过4条线与其它元件相连,分别是电源(GND、VCC)和IIC总线(SCK和DATA),SHT11的结构框图如图16.3所示。从图16.3可以看出,该传感器中含有放大电路和A/D转换电路,所以在应用时只需和处理器用IIC连接,读出数据即可。下面是SHT11的各引脚说明:电源引脚:SHT11的供电电压为2.45.5V。传感器上电后,要等待11ms 以越过“休眠”状态,在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。串行时钟输入 (SCK):SCK 用于微处理器与SHT11之间的通讯同步。由于接口包含了完全静态逻辑,因而

2、不存在最小SCK 频率。串行数据 (DATA):DATA 三态门用于数据的读取。DATA 在SCK 时钟下降沿之后改变状态,并仅在SCK 时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。为避免信号冲突,微处理器应驱动DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平。上拉电阻通常已包含在微处理器的I/O 电路中。注意:SHTx11的串行接口虽然是IIC总线,但在传感器信号的读取及电源损耗方面,都做了优化处理;但与标准IIC接口不兼容,故一般应用处理器模仿IIC总线。图16.3 SHT11结构框图1发送命令SHT11与处理器通信之前用一组“启动

3、传输”时序,来表示数据传输的初始化。它包括:当SCK 时钟高电平时DATA 翻转为低电平,紧接着SCK 变为低电平,随后是在SCK 时钟高电平时DATA 翻转为高电平,如图16.4所示。图16.4 启动传输时序图启动传输后,后续指令包括地址位和命令位,其中有三个地址位(目前只支持“000”)和五个命令位。SHT11 会以下述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK 位)。在第9个SCK 时钟的下降沿之后,释放DATA(恢复高电平),如图16.5所示。表16.1为SHT11的所有命令集。图16.5 SHT11测量时序图表16.1 SHT11的命令

4、集命令代码预留0000x温度测量00011湿度测量00101读状态寄存器00111写状态寄存器001100101x-1110x软复位:复位接口、清空状态寄存器,下次命令前等待至少11ms11102测量时序在进行测量温度或湿度时,需要先启动传输,后续需要向传感器发送三位地址和命令(温度测量为00011;湿度测量为00101),控制器要等待测量结束。SHT11 通过下拉DATA至低电平并进入空闲模式,表示测量的结束。控制器再次触发SCK时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。当测量结束后,接着传输2个字节的测量数据和1

5、个字节的CRC-8校验。处理器需要通过下拉DATA为低电平,以确认每个字节。所有的数据从MSB开始,右值有效(例如:对于12bit数据,从第5个SCK时钟起算作MSB;而对于8bit数据,首字节则无意义)。当使用CRC-8校验时,用CRC数据的确认位,表明通讯结束。如果不使用CRC-8 校验,控制器可以在测量值LSB后,通过保持确认位ack高电平,来中止通讯。传输时序如图16.5所示。在测量和通讯结束后,SHT11自动转入休眠模式。16.2.3 SHT11的状态寄存器STH11中含有一个状态寄存器,某些高级功能可以通过状态寄存器实现。状态寄存器的各位的具体含义如表16.2。表16.2 状态寄存

6、器位类型说明默认值76R低电压检测:0对应VCC2.47 1对应VCC95 %RH) 环境中,加热传感器可防止凝露,同时缩短其响应时间,提高测量精度。警告: 加热后较之加热前,SHT11将显示温度值略有升高、相对湿度值稍有降低。传感器的输出值和湿度之间不是完全的线性变换,所以在获得湿度值时一般按照如下公式计算得到的。 其中:SORH为从传感器读出的数值,c1、c2和c3的取值如下表:表16.3 湿度转换系数SORHC1C2C312bit-40.0405-2.810-68bit0.648-7.210-416.3 系统的硬件电路设计湿度检测系统主要由湿度数据采集模块、传输电平转换接口和计算机处理软

7、件组成,在本章中我们主要讨论前两部分的设计。为适应远距离传输的条件,该系统使用RS-485总线传输。16.3.1 RS-485和RS-232转换接口 图16.6 MAX485结构和管脚图由于计算机上没有RS-485接口,故计算机不能直接连接485总线,但计算机上有RS-232接口,所以可以先把485电平转换为232电平,再传输到计算机上,由计算机处理。在该接口中用到MAX232、MAX485和6N137,下面分别介绍。1RS-485驱动芯片MAX485MAX485是由Maxim公司生产的低功耗RS-485收发芯片,内部集成了一个驱动器和一个接收器。结构及管脚图如图16.6所示。MAX485有8

8、个引脚,是半双工通信的启动芯片,各引脚意义如下:RO:接收器输出端。:接收器输出使能端。0:允许接收器输出;禁止接收器输出。DE:驱动器输出使能端。禁止驱动器工作;允许驱动器工作。DI:驱动器输入端。GND:接地端。A:接收器非反相输入和驱动器非反相输出端。B:接收器反相输入和驱动器反相输出端。VCC:电源端,电压范围4.75V-5.25V。从MAX485各引脚的功能可以看出,该芯片工作在半双工状态,接收使能端和传输使能端正好处于两个相反状态,所以在进行硬件连接时,可以把这两个引脚连到一个单片机输出引脚上。由于RS-232的原理和连接在其他章节中介绍了,故在此不再过多赘述。2光电隔离技术为了提

9、高数据传输的可靠性,防止两种电平信号的相互干扰,在两种电平之间采用了光电隔离技术。为了达到完全隔离效果,两个子系统应该用两套相互独立的电源供电,因此在电路设计当中采用了电源的光电隔离模块:DC-DC模块,该模块可以产生两个相互独立的电源。为达到隔离效果,在传输数据的信号线之间采用光电耦合器,由于信号的传输要求光耦具有高速特性,所以该系统中采用了高速光耦6N137,其内部结构和引脚图如16.7所示。 图16.7 6N137内部结构图从6N137的结构图可以看出,该光耦是通过发光二极管的导通和截止来控制另一端的导通和截止,信号输入端为ANODE端和CATHOLD端,信号输出端为VE端和VO 端,内

10、部结构中由于有一个反相器,所以通常输出电平为输入电平的反向电平。表16.4为6N137的逻辑真值表。表16.4 6N137的真值表发光二极管LEDVE端VO端ONHLOFFNC由于6N137内部采用高强度红外发光二极管和高速高增益的光敏检测集成电路,从而能够满足在数字传输中的高速变化的逻辑电平。6N137典型的应用电路如图16.8所示。图16.8 6N137应用典型电路该电路应用于单片机的通信系统中的隔离技术,所以单片机控制端和数据通信端应用了两套相互独立的电源,分别用VCC和+5v表示,这样可以有效抑制系统对通信的干扰,从而提高通信的质量和距离。3电路设计该电路的设计主要由三部分构成,分别为

11、电源部分,RS-485通信部分和RS-232通信部分。在该通信接口中由于用到了光电隔离技术,所以在电路中必须要用两套相互独立的电源。为了减少设计的复杂度,电路中用到了一个带光电隔离的DC-DC模块,该模块在一个电源输入的情况下能够产生另一个独立的电源。图16.9为该部分的电路。图16.9 通信接口的电源电路图16.10 DC-DC电源模块连接图图16.9中把220v交流电通过整流桥和变压模块LM317变为直流5v电源,图16.10中利用DC-DC电源模块产生两套独立电源,它们都是直流的5v电源。在通信接口中,通信中信号电平的转换顺序为:RS-232电平转换为TTL电平,TTL电平再转换为RS-

12、485电平,前一次转换过程应用MAX232芯片,电路图如图16.11。图16.11 RS-232电平转换TTL电平电路图电路中,接头采用9针的针式插头,可以直接连接到计算机的串行接口上。MAX232后方的传输线TD和RD上传输的信号为TTL电平信号。TTL电平信号到RS-485电平的转换是利用MAX485芯片实现的,电路如图16.12所示。图16.12 TTL电平转换RS-485电平电路图在RS-485通信中为了减小干扰,在总线两端增加了120的电阻,所以在电路的设计中增加了一个跳线,用于接入120电阻。为了防止MAX232和MAX485之间的相互干扰,在两个芯片传输线之间用6N137进行了光

13、电隔离。图16.13 光电隔离电路16.3.2 湿度检测分机电路设计图16.14 分机通信模块电路原理图湿度检测分机负责检测外部环境的湿度,并把检测结果实时的传输到计算机上。假设计算机可以管理多个环境的湿度检测,则在系统中存在多台分机,为了能够区分各个分机,在每个分机上分配一个地址。根据分机的功能,可将分机划分如下几个功能模块:电源模块、通信模块和湿度检测模块。电源的设计与通信接口中的电源设计是相同的,同样应用了光电隔离技术。通信模块仍然用MAX485实现,电路图如图16.14所示。在图16.14中,由于MAX485的发送控制端DE和接收控制端RE的控制电平正好相反,故把此两个引脚共同连到单片

14、机上进行控制,空闲状态下保持MAX485为接收状态。单片机和湿度传感器的电路比较简单,只要对应连到单片机的I/O线即可,如图16.15所示。图16.15 分机显示及检测电路在图16.15中,SW为拨码开关,用于设置检测分机的地址号。分机除了向上位机传送当前的湿度值外,还将检测到的湿度值用LED数码管显示出来,同时电路中应用了串转并电路74164以减少单片机端口的数量。为了提高系统的可靠性,电路增加了看门狗电路,并用MAX813L实现。16.4 系统的软件设计该系统的软件设计包括上位机软件和单片机程序的设计,该章中不具体介绍上位机软件的设计,只说明上位机软件的功能。上位机软件除了存储、查询和设置

15、等功能外,与单片机向关的功能就是与单片机的数据通信,上位机软件用循环的方式查询各检测分机的检测数据。整个通信工程必须有统一的通信协议。16.4.1 系统通信协议的设定为了单片机能够快速高效的处理上位机软件发送到命令,单片机程序和上位机软件都必须按照统一的通信协议进行数据和命令的传输,从而使单片机能够快速响应上位机软件的命令。图16.16为通信的帧的格式。起始字符帧头字节数帧标志帧数据校验值帧尾图16.16 通信帧格式起始字符:该部分用于指示通信的开始。由两字节组成,两个FFH;帧头:一字节,用于说明通信帧的开始, 68H;字节数:一字节,用于指示该帧中的字节数目,其中不包括起始字符、帧头、检验

16、值和帧尾;帧标志:一个字节,表示本帧数据是命令帧(A5H)还是数据帧(5AH),命令帧用于上位机软件向检测分机查询湿度值,数据帧用于检测分机向上位机传送。帧数据:每帧要发送到数据;校验值:一字节,该校验为和检验,即将帧头、字节数、帧标志和帧数据求和;帧尾:一字节,FAH。命令帧的帧标志为A5H,帧中的数据为一字节的分机地址。数据帧的帧标志为5AH,帧中的数据为分机地址号和湿度值。当上位机软件进行查询数据时,若收不到检测分机的数据帧,则在延时一段时间后再次查询检测分机,如此三次,若仍收不到数据帧,则断定该检测分机出现故障。16.4.2 单片机程序设计检测分机的单片机程序包括如下几个模块:显示模块

17、程序、湿度检测模块程序和通信模块程序。程序总流程图如图16.17。图16.16 单片机程序流程图1函数声明及变量定义为方便程序的编写,把部分常用的变量进行伪定义。#include #define uchar unsigned char#define uint unsigned int#define bool bit#define true 1#define false 0sbit SCK =P34; /IIC时钟信号sbit SAL =P35; / IIC数据线sbit LED_SCK =P32; / 显示部分串转并时钟线sbit LED_SAL =P33; / 显示部分串转并数据线sbit

18、WDI =P37; /喂狗脚sbit CTR_485=P10;/RS_485总线传输控制uchar code led_char16= 0xfa,0x48,0xf4,0xdc,0x4e,0x9e,0xbe,0xc8,0xfe,0xde,0x00; /09,0x00为数码管不显示任何数字uchar Address;/分机地址号uchar idata Data_Buffer20;/接收缓冲区bool Command_Send;void Start(void) /SHT11启动子程序uchar Readreg(void) / 读状态寄存器void Writereg(uchar regdata)/ 写状

19、态寄存器void IntSHT11(void) / 设置SHT11湿度检测工作在8位状态,状态寄存器bit0=0uchar ReadData(void) / 获取补偿前的SHT11的返回值int GetRH(void) / 获取补偿后的湿度值void LED_Display(uchar right,uchar left)/ LED显示子程序void Display(int RH) / 湿度值显示子程序uchar Receive_Data(void) /接收字节子程序void Send_Data(uchar Serial_data) / 串口发送一个字节函数bit Receive_One(uch

20、ar *s) / 接收一帧数据子程序void RXD_Int(void) interrupt 4 /串口接收中断子程序void Send_One(uchar *s) / 串口发送一帧数据子程序void Send_RH(uchar RH) / 命令处理子程序uchar Get_address(void) / 获取地址号子程序void Inital(void) / 初始化化子程序2环境湿度值采集程序的设计SHT11与单片机的接口为串行IIC总线,但单片机AT89C2051没有IIC接口,所以必须用单片机的I/O线模拟SHT11的时序来完成数据和命令的传输。发送命令如图16.4。当SCK 时钟高电平

21、时DATA 翻转为低电平,紧接着SCK 变为低电平,随后是在SCK 时钟高电平时DATA 翻转为高电平。*SHT11启动子程序*/void Start(void) SCK=1; /时钟信号变高电平 _nop_(); SAL=0; /数据线变低电平 SCK=0; SAL=1;设置工作模式SHT11的工作模式的设置是对其状态寄存器的写入状态字。状态寄存器的每一位的意义在表16.4中已详细说明。在该章中SHT11工作在8位分辨率的湿度测量中,所以状态寄存器的最低位应为1,而系统默认为0,所以需要对状态寄存器进行执行写入操作,在写入之前必须先进行读出,以保证状态寄存器的其它位不被修改。/*返回值:状态寄存器值*/uchar Readreg(void) uchar i,reg; Start(); /启动传输命令 /发送地址000 for (i=0;i3;i+) WDI=0;WDI=1; /清看门狗 /发送读状态寄存器命令码001112; /保持一个周期的0 reg=0; /开始读取状态寄存器值8; reg=reg1; if (SAL) reg=reg|0x01; else reg=reg&0xfe; return reg; /返回状态寄存器值入口参数:状态寄存器的设置值void Writereg(uchar regdata) uchar i; /发送写状态寄存器命令码00110 _nop

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

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