知识.docx
- 文档编号:10554551
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:28
- 大小:161.73KB
知识.docx
《知识.docx》由会员分享,可在线阅读,更多相关《知识.docx(28页珍藏版)》请在冰点文库上搜索。
知识
2.4基于无线传感器网络的温度采集显示系统设计
发送端的功能:
采集温度,处理数据,无线传输
接收端的功能:
无线接收数据,处理数据,显示数据
两部分的大致组成即:
发送端的组成:
温度传感器,微处理器,无线发射芯片
接收端的组成:
无线接收模块,微处理器,显示模块
2.4.1发送端的设计
单个的发送端的系统框图如图3所示。
其中,温度传感器采用了美国Dallas公司的DS18B20数字式温度传感器,微处理器采用采用Atmel公司的单片机AT89C52,无线收发芯片采用Ptr8000无线收发模块。
图3发送端系统框图
2.4.2接收端的设计
图4接收部分系统框图
3系统硬件电路分析
本系统实现的无线温度采集显示是由两片板子组成的。
温度采集是一个独立的控制系统,它由单片机、温度传感器、复位电路、无线传输模块组成,实现温度的采集发送。
另外一片板子是用来接收温度并显示和报警的,它由单片机、复位电路、报警电路、无线传输模块、数码管显示模块组成。
用编程实现两片板子之间的温度通信,从而实现温度的短距离无线传输。
当温度在设置的报警上下限之内,数码管只管输出接收到的温度,当温度超限的话,微处理器就会从P1.7口输出高电平,控制打铃报警。
系统的硬件结构框图如图5所示:
3.1系统电源部分
电源部分设计比较简单,由于无线传输的低功耗功能,系统的电源采用电池供电,可以用一块供电稳定的3.7v锂离子电池,或者用可充电干电池三节,以节省资源,并可以使其可长期使用。
图5系统总体结构框图
3.2系统温度采集部分电路设计
系统的温度采集部分采用美国Dallas公司的DS18B20数字式温度传感器,它用独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
在本系统中采用DS18B20作为温度采集模块。
3.2.1DS18B20简介
DS18B20是美国DALLAS公司生产数字温度传感器芯片。
DS18B20的封装形式如图6所示:
图6DS18B20的封装
1、DS18B20的主要特性:
(1)、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
(2)、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
(3)、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
(4)、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
(5)、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
(6)、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
(7)、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
(8)、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
(9)、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2、DS18B20的外形和内部结构:
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
3、DS18B20引脚定义:
(1)、DQ为数字信号输入/输出端;
(2)、GND为电源地;
(3)、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
4、DS18B20的计数特性:
DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。
在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。
这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。
温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。
测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。
DS18B20测量温度时使用特有的温度测量技术。
DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。
当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。
芯片内部还有斜率累加器,可对频率的非线性度加以补偿。
测量结果存入温度寄存器中。
一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。
DS18B20工作过程一般遵循以下协议:
初始化——ROM操作命令——存储器操作命令——处理数据。
(1)初始化
单总线上的所有处理均从初始化序列开始。
初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。
存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。
(2)ROM操作命令
一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。
所有ROM操作命令均为8位长。
这些命令列举如下:
ReadROM(读ROM)[33h]
此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。
此命令只能在总线上仅有一个DS18B20的情况下可以使用。
如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。
MatchROM(符合ROM)[55h]
此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。
只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。
所有与64位ROM序列不符的从片将等待复位脉冲。
此命令在总线上有单个或多个器件的情况下均可使用。
SkipROM(跳过ROM)[CCh]
在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。
如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。
SearchROM(搜索ROM)[F0h]
当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。
搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。
AlarmSearch(告警搜索)[ECh]
此命令的流程与搜索ROM命令相同。
但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。
告警的条件定义为温度高于TH或低于TL。
只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。
贮存在EEPROM内的触发器值用于告警。
3.2.2测温系统电路连接
系统的测温部分用DS18B20芯片来完成,由于DS18B20有两种封装形式,在这里我们选择八引脚SOSI封装,其引脚情况如图7所述。
它与单片机的连接电路如图7所示:
图7DS18B20与单片机连接图
3.3系统显示部分电路设计
我们最常用的显示是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
此次设计所用到的数码管接法就是共阳极接法。
而现实中经常用到的数码管是制作成的数码管芯片它将二极管集成到一个小芯片上,这样可以直观的显现0-9的数字,它的样式如图8所示:
图8八段数码管
共阳极的数码管0~f的段编码是这样的:
unsignedcharcodetable[]={//共阳极0~f数码管编码
0xc0,0xf9,0xa4,0xb0,//0~3
0x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b
0xc6,0xa1,0x86,0x8e//c~f};
本系统中采用四片数码管显示温度值,由于数码管的驱动电流别较大,因此可以采用驱动芯片来产生足够大的驱动电流,以驱动数码管。
我们选用74系列的驱动芯片,有74LS273芯片、75452、7407、74LS02、74LS04等芯片。
具体的连接图参见附录1硬件电路图设计。
3.4系统无线传输部分电路设计
系统的主要部分是无线传输部分,它负责信息的传递,实现单片机之间的交流,其功能相当于有线系统中的导线。
在这里我们选用常见的无线传输芯片PTR8000。
它的示意图如图9所示:
图9PTR8000输出口
图中给出了PTR8000的用户接口,该接口由10个数字输入/输出I/O组成。
按照工作可分为三种:
1、模式控制
该接口由TRX-CE,TX-EN,PWR组成,控制PTR8000的四种工作模式:
掉电和SPI编程模式;待机和SPI编程模式;发射模式;接受模式;各种模式的控制模式见下表1:
表1PTR8000的控制模式
PWR
TRX-CE
TX-EN
工作模式
0
X
X
掉电和SPI编程模式
1
0
X
待机和SPI编程模式
1
1
0
接收
1
1
1
发射
说明:
(1)待机模式下功耗约为40微安,此时发射接收电路均关闭,只有SPI接口工作。
(2)掉电模式下功耗约为2.5微安,此时所有电路关闭,进入最省电状态。
(3)在待机和掉电模式下PTR8000均不能接收,发送数据,可以进行配置。
2、SPI接口
SPI接口由SCK、MISO、MOSI以及CSN组成:
(1)在配置模式下,单片机通过SPI接口配置PTR8000的工作参数;
(2)在发射/接收模式下,单片机SPI接口发送和接收数据;
3、状态输出接口
提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。
PTR8000的引脚功能如下表2所示:
表2PTR8000的引脚功能
管脚
功能
方向
Pin1
VCC
正电源1.9-3.6V输入
I
Pin2
TXEN
TXEN=“1”发射模式,“0”接收模式
I
Pin3
TRX-CE
使能发射/接收模式(区别于配置模式)
I
Pin4
PWR
Powerdown模式
I
Pin5
uCLK
时钟分频输出
O
Pin6
CD
载波检测输出
O
Pin7
AM
地址匹配输出
O
Pin8
DR
数据就绪输出
O
Pin9
MISO
SPI输出
O
Pin10
MOSI
SPI输入
I
Pin11
SCK
SPI时钟
I
Pin12
CSN
SPI使能,低有效
I
Pin13
GND
电源地
Pin14
GND
电源地
由于与RF协议相关的高速信号处理部分已经嵌入在模块内部PTR8000可与各种低成本单片机配合使用也可以与DSP等高速处理器配合使用PTR8000提供一个SPI接速率由微控制器自己设定的接口速度决定在RX模式中地址匹配AM和数据准备就绪DR信号通知MCU一个有效的地址和数据包已经各自接收完成微控制器即可通过SPI读取接收的数据在TX模式中PTR8000自动产生前导码和CRC校验码数据准备就绪DR信号通知MCU数据传输已经完成这意味着降低MCU的存储器需求也就是降低MCU成本同时缩短软件开发时间。
1、配置编程
上电以后MCU首先配置PTR8000模块先将PWRTXENTRX_CE设为配置模式,MCU通过SPI将配置数据移入PTR8000模块在掉电和待机模式工作后配置内容仍然有效配置数据只有当电源撤除后才会丢失。
2、发射模式
(1)当MCU有数据需要发往规定节点时接收节点的地址TX-address和有效数据TX-payload通过SPI接口传送给PTR8000应用协议或MCU设置接口速度。
(2)MCU设置TRX_CETX_EN为高来启动传输
(3)PTR8000内部处理
无线系统自动上电数据包完成加前导码和CRC校验码数据包发送100kbpsGFSK曼切斯特编码。
(4)如果AUTO_RETRAN被设置为高PTR8000将连续地发送数据包直到TRX_CE被设置为低。
(5)当TRX_CE被设置为低时PTR8000结束数据传输并将自己设置成待机模式。
发射模式时序图如图10所示:
3、接收模式
(1)通过设置TRX_CE高TX_EN低来选择RX模式2650us以后PTR8000监测空中的信息。
(2)当PTR8000发现和接收频率相同的载波时载波检测CD被置高。
(3)当PTR8000接收到有效的地址时地址匹配AM被置高。
(4)当PTR8000接收到有效的数据包CRC校验正确时PTR8000去掉前导码地址和CRC位。
数据准备就绪DR被置高
(5)MCU设置TRX_CE低进入standby模式待机模式。
(6)MCU可以以合适的速率通过SPI接口读出有效数据。
(7)当所有的有效数据被读出后PTR8000将AM和DR置低。
接收模式时序图如图11所示:
3.5系统报警电路
系统的报警电路采用一个三极管9013和一个电铃组成,其电路图如图12所示:
图12报警电路
其中,S2的功能时手动接触报警按钮,电铃为报警器,P1.7输出报警信号。
放大器的输出端。
4系统软件设计
本无线温度采集传输系统的软件设计主要包括:
芯片的初始化、PTR8000收发模块的设置、AT89C52的数据处理程序。
它有两个板子,因此程序的设计需要两个。
第一个主要控制温度采集和传输,第二个主要控制接收信息并通过数码管显示出来。
4.1发送端程序流程图
系统的发送端流程图主要包括:
处理器初始化、DS18B20的初始化、PTR8000初始化等。
其流程图如下图14所示:
4.2接收端程序流程图
接收端主要有微处理器、PTR8000,PTR8000接收到的数据经过微处理器的处
理变成可供显示的量,在数码管上进行显示。
它的流程图如下图15所示:
4.3DS18B20的软件设计
DS18B20采用单总线数据传输方式,对读写的操作时序要求严格。
DS18B20提供了一系列指令来控制传感器的工作,利用这些指令就可以对DS18B20进行操作了。
为了操作方便,可编写两个操作函数。
源码如下程序所示:
启动DS18B20的1次温度转换
voidConvertT(void)
{
RST18B20(); //初始化
WR18B20(0xcc); //跳过多传感器识别
WR18B20(0x44); //启动温度转换
}
//读取DS18B20
intReadT(void){
RST18B20(); //初始化
WR18B20(0xcc); //跳过多传感器识别
WR18B20(0xbe); //读DS18B20缓存器
DPL=RD18B20(); //温度低位
DPH=RD18B20(); //温度高位
return(DPTR); //返回读出的温度值}
4.4PTR8000的程序设计
PTR8000的初始化程序比较固定,只需定义它的每个接口,然后由单片机对它进行控制,实现无线传输。
它初始化端口定义下程序所示:
/配置口定义/
sbitTXEN=P2.0;
sbitTRX_CE=P2.1;
sbitPWR=P2.2;
/SPI口定义/
sbitMISO= P1.0;
sbitMOSI = P1.1;
sbitSCK=P1.2;
sbitCSN= P1.3;
/状态输出口/
sbitAM=P2.4;
sbitDR = P2.5;
ucharda=0;
/RF寄存器配置/
unsignedcharidataRFConf[11]=
{
0x00, //配置命令//
0x6C, //CH_NO,配置频段在433.2MHZ
0x0E, //输出功率为10db,不重发,节电为正常模式
0x44, //地址宽度设置,为4字节
0x03,0x03, //接收发送有效数据长度为3字节
0xE7,0xE7,0xE7,0xE7, //接收地址
0xC0, //CRC充许,16位CRC校验16M晶振
}
附录
附录1系统硬件电路图
附录2系统程序
1:
发送部分程序
#include
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
//配置口定义//
sbitTXEN= P2.0;
sbitTRX_CE= P2.1;
sbitPWR= P2.2;
//SPI口定义//
sbitMISO=P1.0;
sbitMOSI=P1.1;
sbitSCK= P1.2;
sbitCSN= P1^0;
//状态输出口//
sbitAM=P2.4;
sbitDR= P2.5;
ucharda=0;
/*/RF寄存器配置//
unsignedcharidataRFConf[11]=
{
0x00, //配置命令//
0x6C, //CH_NO,配置频段在433.2MHZ
0x0E, //输出功率为10db,不重发,节电为正常模式
0x44, //地址宽度设置,为4字节
0x03,0x03, //接收发送有效数据长度为3字节
0xE7,0xE7,0xE7,0xE7, //接收地址
0xC0, //CRC充许,16位CRC校验16M晶振
};
ucharTxRxBuffer[5];
/延时/
voidDelay(uintx)
{
uinti;
for(i=0;i _nop_(); } } voidSpiWrite(unsignedcharb) { unsignedchari=8; while(i--) { Delay(10); SCK=0; MOSI=(bit)(b&0x80); b<<=1; Delay(10); SCK=1; Delay(10); SCK=0; } SCK=0; } /from905readdata/ unsignedcharSpiRead(void) { registerunsignedchari=8; unsignedcharddata=0; while(i--) { ddata<<=1; SCK=0; Delay(20); ddata|=MISO; SCK=1; Delay(20); } SCK=0; returnddata; } /接收数据包/ voidRxPacket(void) { uchari; i=0; while(DR) { TxRxBuffer[i]=SpiRead(); i++; } } ;写发射数据命令: 20H ;读发射数据命令: 21H ;写发射地址命令: 22H ;读发射地址命令: 23H ;读接收数据命令: 24H voidTxPacket(ucharda) { PWR=1; TXEN=1; CSN=0; SpiWrite(0x22); //写发送地址,后面跟4字节地址// SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); SpiWrite(0xE7); CSN=1; Delay (2); CSN=0; SpiWrite(0x20); //写发送数据命令,后面跟三字节数据// SpiWrite(da); //SpiWrite(++da); //SpiWrite(++da); //SpiWrite(0x44); //SpiWrite(0x45); CSN=1; Delay (2); TRX_CE=1; //使能发射模式// Delay(100); //等带发送完成// while(! DR); TRX_CE=0; } /等待接收数据包/ uchartemp; voidWait_Rec_Packet(void) { TXEN=0; TRX_CE=1; PWR=1; Delay(1000); while (1) {//if(LCD==1)P0=~P0; if(DR) {//P0=~P0; TRX_CE=0; //如果数据准备好,则进入待机模式,以便SPI口操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 知识
![提示](https://static.bingdoc.com/images/bang_tan.gif)