无线温湿度采集系统设计Word格式文档下载.docx
《无线温湿度采集系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《无线温湿度采集系统设计Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
4采集模块硬件电路设计
本系统采用AT89S52单片机作为主控制器,显示单元采用LCD1602液晶显示,通过温湿度度传感器SHT10实现温湿度的采集,通过射频芯片nRF905实现无线数据传输和接收。
采集模块框图2所示。
温湿度传感器M
C无线发送模块
电源U
图2采集模块框图
4.1电源模块的设计
输出+5V直流电源为设计中各个分电路、器件供电。
如图3所示。
图3电源模块电路图
4.2SHT10温湿度传感器
传统的温湿度传感器将温湿度转换成可以测量的电压或电容进行计算,虽然价格便宜,但可靠性不高,而且电路复杂,需要通过A/D转换器转换才能将电信号转换成数字信号。
而数字式传感器测量得到的是数字量,可以直接与单片机相连。
因此本设计传感器选择的是数字式温湿度传感器SHT10。
数字单总线温度传感器是目前最新的测温器件,它集温度测量,A/D转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点。
既可用它组成单路温度测量装置,也可用它组成多路温度测量装置,文章介绍的单路温度测量装置已研制成产品,产品经测试在-10℃-70℃间测得误差为0.25℃,80℃≤T≤105℃时误差为0.5℃,当T>
105℃误差为增大到1℃左右。
传统的模拟式湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。
为了克服这些缺点,本设计采用瑞士Sensirion公司生产的具有I2C总线接口的单片全校准数字式相对湿度和温度传感器SHT10。
该传感器采用独特的CMOSensTM技术,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。
图4温湿度采集模块
单片机与SHT10接口电路部分:
SHT10的SCK口和DATA口分别与单片机的P1.6口和P1.7口连接,DATA需要一个外部的上拉电阻(4.7kΩ)将信号提拉至高电平,只有当DATA为高电平时,SHT10才开始工作,如图4所示。
4.3AT89S52芯片介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,可以与MCS-51单片机产品可以兼容。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单、可靠。
用AT单片机构成最小系统时,只要将单片机接上时钟电路和复位电路即可,如图AT89S52单片机最小系统所示。
由于集成度的限制,单片机最小应用系统只能作一些小型的控制单元。
其应用特点:
有可供用户使用的大量I/O口线;
内部存储器容量有限;
应用系统开发具有特殊性。
图5单片机引脚图
4.3.1时钟电路
AT89S52虽然有内部振荡电路,但要形成时钟,必须外部附加电路。
AT89S52单片机的时钟产生方法有两种,一种是内部方式,利用时钟内部的振荡电路产生时钟信号;
另一种是外部方式,时钟信号由外部引入。
本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。
本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振电路。
振荡晶体可以在1.2MHZ到24MHZ之间选择,常用的晶振频率有6MHZ、12MHZ和11.0592MHZ。
电容CX1和CX2主要是帮助起振,称为谐振电容,电容值无严格要求,但电容的取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,当时钟频率为12MHZ时典型值为30pF。
所以本设计中振荡晶体采用12MHZ,电容选择30pF。
4.3.2复位电路
AT89S52的复位是由外部的复位电路实现的。
复位引脚RST通过一个斯密特触发器来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
图6单片机最小系统
4.4nRF905功能的实现
nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。
ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。
nRF905系统原理图见附录C。
4.4.1nRF905的接口
nRF905主要包括三种接口:
1)、模式控制接口:
该接口由PWR、TRX_CE、TX_EN组成控制由nRF905组成的高频头的四种工作模式:
掉电和SPI编程模式;
待机和SPI编程模式;
发射模式;
接收模式。
2)、SPI接口:
SPI接口由CSN、SCK、MOSI以及MISO组成。
在配置模式下单片机通过SPI接口配置高频头的工作参数;
在发射/接收模式下单片机SPI接口发送和接收数据。
3)、状态输出接口:
提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。
表1nRF905的引脚说明
管脚
名称
管脚功能
说明
1
VCC
电源
电源+3.3—3.6VDC
2
TX_EN
数字输入
TX_EN=1TX模式TX_EN=0RX模式
3
TRX_CE
使能芯片发射或接收
4
PWR_UP
芯片上电
5
uCLK
时钟输出
本模块该引脚废弃不用,向后兼容
6
CD
数字输出
载波检测
7
AM
地址匹配
8
DR
接收或发射数据完成
9
MISO
SPI接口
SPI输出
10
MOSI
SPI输入
11
SCK
SPI时钟
12
CSN
SPI使能
13
GND
地
接地
14
4.4.2nRF905的工作模式
nRF905有两种工作模式和两种节能模式。
两种工作模式分别是ShockBurstTM接收模式和ShockBurstTM发送模式,两种节能模式分别是关机模式和空闲模式。
nRF905的工作模式由TRX_CE、TX_EN、PWR_UP三个引脚决定。
表2nRF905的工作模式
工作模式
X
掉电和SPI编程
Standby和SPI编程
ShockBurstEX
ShockBurstTX
与射频数据包有关的高速信号处理都在nRF905片内进行,数据速率由微控制器配置的SPI接口决定,数据在微控制器中低速处理,但在nRF905中高速发送,因此中间有很长时间的空闲,这很有利于节能。
由于nRF905工作于ShockBurstTM模式,因此使用低速的微控制器也能得到很高的射频数据发射速率。
在ShockBurstTM接收模式下,当一个包含正确地址和数据的数据包被接收到后,地址匹配(AM)和数据准备好(DR)两引脚通知微控制器。
在ShockBurstTM发送模式,nRF905自动产生字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。
由以上分析可知,nRF905的ShockBurstTM收发模式有利于节约存储器和微控制器资源,同时也减小了编写程序的时间。
(1)nRF905的发送流程
A.当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905,SPI接口的速率在通信协议和器件配置时确定;
B.微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;
C.nRF905的ShockBurstTM发送:
射频寄存器自动开启;
数据打包(加字头和CRC校验码);
发送数据包;
当数据发送完成,数据准备好引脚被置高;
D.AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;
E.当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。
只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
(2)nRF905的节能模式
nRF905的节能模式包括关机模式和空闲模式。
在关机模式,nRF905的工作电流最小,一般为2.5uA。
进入关机模式后,nRF905保持配置字中的内容,但不会接收或发送任何数据。
空闲模式有利于减小工作电流,其从空闲模式到发送模式或接收模式的启动时间也比较短。
在空闲模式下,nRF905内部的部分晶体振荡器处于工作状态。
nRF905在空闲模式下的工作电流跟外部晶体振荡器的频率有关。
4.4.3器件配置
所有配置字都是通过SPI接口送给nRF905。
SIP接口的工作方式可通过SPI指令进行设置。
当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。
(1)SPI接口配置
SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。
状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;
射频配置寄存器包含收发器配置信息,如频率和输出功能等;
发送地址寄存器包含接收机的地址和数据的字节数;
发送数据寄存器包含待发送的数据包的信息,如字节数等;
接收数据寄存器包含要接收的数据的字节数等信息。
(2)射频配置
射频寄存器的各位的长度是固定的。
然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS4个寄存器使用字节数由配置字决定。
nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。
nRF905通过SPI接口和微控制器进行数据传送,通过ShockBurstTM收发模式进行无线数据发送,收发可靠,使用方便。
4.4.4nRF905供电电源
另外,单片机的工作电压为5V,本次设计提供的电源也为5V,而射频芯片nRF905的工作电压在3.3V到3.6V之间,因此必须要进行电压转换,需要用一个电压转换芯片AMS1117—3.3。
图7电压转换电路
5接收模块硬件电路设计
nRF905接收上位机发射的数据,将其传输至下位机的LCD1602显示温度和湿度,下面将主要介绍nRF905的接收过程和液晶显示电路。
M
无线接收模块C温湿度显示
U
图8接收模块电路框图
5.1nRF905的接收流程
A.当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;
B.650us后,nRF905不断监测,等待接收数据;
C.当nRF905检测到同一频段的载波时,载波检测引脚被置高;
D.当接收到一个相匹配的地址,地址匹配引脚被置高;
E.当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高;
F.微控制器把TRX_CE置低,nRF905进入空闲模式;
G.微控制器通过SPI口,以一定的速率把数据移到微控制器内;
H.当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;
I.nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。
当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改变,数据包则丢失。
当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。
5.2LCD1602液晶显示
本设计可以采用的显示芯片包括:
数码管、点阵、LCD1602、LCD12864,其中数码管价格便宜,但是只能显示数字,点阵显示的精度不够,LCD1602和LCD12864都是既能显示文字又能显示数字,LCD12864的屏幕较大价格也较贵,由于本次设计只要求显示温度和湿度,考虑到成本、精度、美观等方面的因素,本设计采用LCD1602显示,经过无线传输后,温、湿度数据信息将在1602液晶显示芯片上进行显示,1602液晶显示芯片采用标准的16脚接口。
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3所示。
表3LCD1602引脚说明
编号
符号
引脚说明
VSS
电源地
D2
数据
VDD
电源正极
D3
VL
液晶显示偏压
D4
RS
数据/命令选择
D5
R/W
读/写选择
D6
E
使能信号
D7
D0
15
BLA
背光源正极
D1
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
图9LCD1602模块电路图
为了能够判断无线温湿度传输的数据是否正确,我们在数据采集模块也设计了一个液晶显示电路,通过采集模块和接收模块显示的温湿度数据对比,来判断传输是否准确。
将以上设计的传感器电路,液晶显示电路,无线传输和接收电路,单片机最小系统等各单元电路进行接口连接,构成无线温湿度数据采集系统的总体电路图。
见附录A和附录B。
6软件设计
本设计的数据采集系统是由采集模块和显示模块构成,程序设计主要有单片微处理器数据采集程序,NRF905发送和接收程序,液晶显示程序构成。
6.1采集模块软件设计
首先初始化SHT10将采集到的温湿度数据传送至单片机,通过单片机的P1.6和P1.7脚控制SHT10的SCK和DATA。
主机通过SPI接口向905配置寄存器写入信息并通过天线发送,同时将数据显示在LCD1602上。
初始化
测温湿度
判断SHT10Y
是否出错
N
显示温湿度
无线发射
延时100ms
图10采集模块主程序
在进行采集模块软件设计时,要将nRF905设置为发送状态,TRX_CE=0,TX_EN=1,如图12所示。
开始
1602和SHT10初始化
延时0.2S
读取温湿度
读取成功否?
SHT10通信重启
线性拟合数据
1602显示数据
延时0.8S
图11液晶显示流程图
SPI配置寄存器,TRX_CE为低,TX_EN为高
装载数据和对方地址
TRX_CE为高吗?
Y
进入发送模式
数据发送完成N
DR为高吗?
置低TRX_CE进入空闲状态
图12nRF905发送流程图
6.2接收模块软件设计
接收模块主要包括nRF905接收程序和液晶显示程序。
判断是否
有数据
接收数据
判断数据格N丢失
式是否正确
显示
图13接收模块主程序
与发送模块相同,在接收模块软件设计中,同样要先将nRF905设置为接收状态,TRX_CE=1,TX_EN=0,这样主机才能从nRF905读取数据。
SPI配置寄存器,TRX_CE为高,TX_EN为低,进入接收状态
载波监测引起CD为高?
接收地址数据
N地址匹配引脚AM为高?
CRC校验正确?
DR引脚置高,TRX_CE置低,进入空闲状态
主单片机从SPI读取数据
Y读取完毕N
图14nRF905接收流程图
6.3模拟SPI口的实现
由于单片机不存在SPI口,为了实现单片机与nRF905的通讯,需要进行模拟SPI口,SPI口的工作方式可以通过SPI指令进行设置。
首先必须设置器件的发送/接收模式才能保证有效的数据发送接收。
SPI口外围串行接口包括:
MOSI(主机写操作)、MISO(主机读操作)、SCK(串行时钟信号,由主机控制)、CSN(片选信号,低电平有效)。
SPI口的读写操作如图15和图16所示。
图15SPI读操作时序
图16SPI写操作时序
7系统调试与性能分析
首先在元器件的布局方面,把相互有关的元件放得比较近,例如:
晶振、单片机的时钟输入端都易产生噪音,在放置元件时的时候把它们靠近些。
地线应构成闭环形式,提高了电路的抗干扰能力,电路提供的电源是具有稳压作用的+5V电源。
单片机选用12MHZ的晶振,因为这样有利于得到没有误差的波特率。
特别是当与单片机进行通信的话,选用这种晶振比较好。
由于单线数字温度传感器SHT10,测温相当准确,我们主要时间花在了,单片机软件程序的编辑和调试以及电路模块的制作方面。
在使用nRF905进行无线传输时,使用的程序就是模块自带的程序,我所要做的就是进行稍许修改,并进行调用函数。
另外还要注意的就是单片机共有4个双向的8位并行I/O端口,但是当P0口作为输出端口使用时必须外接上拉电阻才能有高电平输出。
结论
本系统能较好地完成一个半双工无线数据传输工作,在空旷地带数据传输平均有效距离为200m;
在复杂环境下,由于发射接收模块属于微功率器件,一般数据传输有效距离在20m-50m之间。
基于单片机89S52、温湿度传感器SHT10和射频模块NRF905构成的无线温湿度数据采集系统,具有数据采集和运算处理方便简单的优点。
另外由于本次设计的程序使用C语言编程,由于许多模块本身自带语言,大大减小了编程的难度。
本方案的可扩展性比较强,整个程序的程序框架已经搭建好,可以继续编写程序完成其他功能。
例如:
添加语音播报功能;
添加超高温报警功能等。
通过这次设计,在进行电路设计,焊接,程序设计,调试等工作的同时,更加深入的了解了温度传感器,无线传输模块,以及单片机的结构功能和具体应用,也使我们对电路PCB板有了更深的认识。
在老师和同学们的帮助下,我完成了本次设计,本设计可以实现温度的无线采集和实时显示,并且相当精确。
我们的电路板虽然简单,没有运放等元件,但可以基本上完成此系统的任务,在电源的稳定,和电路的焊接方面,我也相应的补充改进了我的设计方案。
致谢
经过一个学期的努力,论文终于顺利地完成。
本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了马宾老师大量的心血。
马老师以其严谨求实的治学态度,督促我完成这篇毕业设计。
在此,谨向导师表示崇高的敬意和衷心的感谢!
同时,在此次毕业设计过程中他让我学到了许多了关于51系列单片机方面的知识。
除此以外自己的实验技能有了很大的提高。
本论文的顺利完成,也离不开其他各位老师、同学和朋友的关心和帮助。
感谢和我一起生活四年的室友,在我遇到不解时,是你们和我不断讨论,遇到挫折时,不断鼓励我。
另外,实验室的老师也时常帮助我,在此我也衷心的感谢他们。
感谢在本科学习期间给我诸多教诲和帮助的工学院的各位老师,是你们让我在校期间学会许多专业知识,才使得这次设计可以顺利完成。
再次感谢传授我知识的每一位老师,马上就要走出校门,走上工作岗位,我将带着你们所传授的技能去