无线信号传输系统设计Word格式.docx

上传人:b****1 文档编号:413886 上传时间:2023-04-28 格式:DOCX 页数:23 大小:126.02KB
下载 相关 举报
无线信号传输系统设计Word格式.docx_第1页
第1页 / 共23页
无线信号传输系统设计Word格式.docx_第2页
第2页 / 共23页
无线信号传输系统设计Word格式.docx_第3页
第3页 / 共23页
无线信号传输系统设计Word格式.docx_第4页
第4页 / 共23页
无线信号传输系统设计Word格式.docx_第5页
第5页 / 共23页
无线信号传输系统设计Word格式.docx_第6页
第6页 / 共23页
无线信号传输系统设计Word格式.docx_第7页
第7页 / 共23页
无线信号传输系统设计Word格式.docx_第8页
第8页 / 共23页
无线信号传输系统设计Word格式.docx_第9页
第9页 / 共23页
无线信号传输系统设计Word格式.docx_第10页
第10页 / 共23页
无线信号传输系统设计Word格式.docx_第11页
第11页 / 共23页
无线信号传输系统设计Word格式.docx_第12页
第12页 / 共23页
无线信号传输系统设计Word格式.docx_第13页
第13页 / 共23页
无线信号传输系统设计Word格式.docx_第14页
第14页 / 共23页
无线信号传输系统设计Word格式.docx_第15页
第15页 / 共23页
无线信号传输系统设计Word格式.docx_第16页
第16页 / 共23页
无线信号传输系统设计Word格式.docx_第17页
第17页 / 共23页
无线信号传输系统设计Word格式.docx_第18页
第18页 / 共23页
无线信号传输系统设计Word格式.docx_第19页
第19页 / 共23页
无线信号传输系统设计Word格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

无线信号传输系统设计Word格式.docx

《无线信号传输系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《无线信号传输系统设计Word格式.docx(23页珍藏版)》请在冰点文库上搜索。

无线信号传输系统设计Word格式.docx

2、接收及发射电路不能采用现成的专用无线模块。

3、设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。

完整的电路原理图、重要的源程序用附件给出。

基于PTR7660的无线信号传输系统设计

[摘要]采用ATmega16单片机作为主控制器,测量部分由数字传感器DS18B20实现温度采集,数据处理后通过PTR7660无线传输到到另一个接受模块上通过LCD1602进行显示。

  

[关键词]PTR7660DS18B20无线温度采集

 

 一:

系统设计

  1.PTR7660简介

  PTR7660是以nRF905为核心的一款无线收发芯片,工作电压为1.9~3.6V,工作在433/868/915MHz的ISM(工业、科学、医疗)频段,由一个完全集成的频率调制器、一个带解调器的接收器、一个功率放大器、一个晶体振荡器和一个调节器组成。

最大传输速率可达到100Kbit/s,可以很容易通过SPI接口进行编程配置。

  PTR7660采用Nordic公司的ShockBurst技术收发数据。

ShockBurst将与RF协议有关的高速信号处理放到芯片内,使收发芯片能够提供高速的数据传输,收发芯片由微控制器通过一个SPI接口控制,通信速率由微控制器通过程序设定。

在发送模式中,PTR7660自动产生前导码和CRC校验码,数据准备就绪DR信号通知AT89LV52数据传输已经完成。

在接收模式中,地址匹配AM和数据准备就绪DR信号通知AT89LV52一个有效的地址和数据包已经各自接收完成。

  由PWR、TRX_CE、TXEN三个引脚完成PTR7660四种工作模式的设定:

掉电各SPI编程模式、待机和SPI编程模式、发射模式、接收模式,如表所示。

信号调理电路

  2.PTR7660硬件电路

  PTR7660内置有完整的通信协议和CRC,单片机通过SPI接口便可完成无线数据收发,但PTR7660工作电压为3V,如果PTR7660与5V单片机连接,则必须进行电平转换。

这里选用低电压通用单片机AT89LV52,其供电和逻辑电平均为3V,因此不存在电平转换的问题。

ATmega16是ATMEL公司推出的低电压,高性能CMOS8位单片机,工作电压范围可达2.7V-6.0V,芯片内置通用8位中央处理器和Flash存储单元,可用于低功耗场合。

  PTR7660与AT89LV52的硬件连接如图1所示。

  3.温度检测

  数字温度传感器大大简化了温度检测装置的设计方案,工作稳定性高,并且能够直接将温度转换为数字值,便于单片机进行综理。

本系统采用DS18B20单总线数字传感器实现温度检测。

DS18B20是美国DALLAS公司生产的单总线温度传感器,它能够直接读出被测温度的数字量,其测温范围为-55~+125℃,在-10~+85℃时精度为±

0.5℃。

DS18B20采用单总线技术(1-WIRES),即单片机只用一根输入输出接口线,就可以实现单片机与传感器的数据传送,为此DS18B20数据线与单片机P2.4相连。

DS18B20读写数据仅需要一根口线,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。

为增强系统稳定性,在此选用外加电源方式,外加电源正负极分别接DS18B20引脚VDD及GND,如图2所示。

 

二、系统软件设计

  1.无线通信软件设计

  由于RF协议相关的高速信号处理部分已经嵌入在模块内部,PTR7660可与各种低成本单片机匹配使用,。

  

(1)配置编程。

上电以后AT89LV52首先配置PTR7660模块。

先将PWR_UP、TXEN、TRX_CE设为配置模式,AT89LV52通过SPI将配置数据移入PTR7660模块;

在掉电和待机模式工作后,配置内容仍然有效。

  

(2)发射模式。

当AT89LV52有数据需要发往规定节点时,首先设置TRX_CE、TXEN来启动传输,无线系统自动上电,将数据加前导码和CRC校验码并打包发送,如果AUTO_RETRAN被设置为高,PTR7660将连续地发送数据包,直到TRX_CE被置为低。

当TRX_CE被设置为低时,PTR7660结束数据传输并将自己设置成待机模式。

  (3)接收模式。

设置TRX_CE为1,TXEN为0选择接收模式,PTR7660开始监测信息,当PTR7660发现和接收频率相同的载波时,载波检测(CD)被置高,当PTR7660接收到有效的地址时,地址匹配(AM)被置高。

PTR7660接收到有效的数据校验正确时,PTR7660去掉前导码,数据准备就绪(DR)被置高。

AT89LV52通过SPI接口读出有效数据,当所有的有效数据被读出后,PTR7660将AM和DR置低。

  2.温度测量软件设计

  温度测量部分主要是利用程序控制DS18B20完成温度读取,DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性,AT89LV52控制DS18B20必须经过三个步骤:

  

(1)每一次读写之前都要对DS18B20进行复位。

  

(2)复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

  (3)复位要求ATmga将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,AT89LV52收到此信号表示复位成功。

  设置分辨率为12位,DS1820测量得到的温度数据存储在的两个字节的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;

如果温度小于0,这5位为1,数值需要取反加1再乘于0.0625即可得到实际温度。

三:

电路原理图

3.1发射电路原理图

3.2接受机电路图

四:

软件流程图及程序设计

4.1发射机

基于以上所述,整个无线温度采集系统都在单片机的控制下运行,这就需要编制程序来实现各部分的功能和工作过程。

发射部分的工作过程为:

标准热电偶在单片机的控制下采集温度数据信息,经热电偶数字转换器处理后发送给单片机进行A/D转换,同时,被测热电偶的输出数据也经放大器输入到单片机中,单片机对这些数据进行分组打包,发送给无线收发芯片PTR7660,通过PTR7660中的内置环形天线发送到上位机模块中。

下位机软件实现流程图如图3-13所示。

4.2接受机

接收部分的工作过程为:

在单片机的控制下接收来发射部分的数据信号,经PTR7660解调后经单片机处理在LCD1602上进行显示,或者可以经过MAX232进行电平转换,然后送入PC机串口。

上位机的软件实现流程图如图

程序:

1发射机程序:

PTR7660.H

#include<

avr/io.h>

avr/interrupt.h>

util/delay.h>

#include"

nRF2401.h"

constuint8_tInitData[15]=//nRF2401控制字15Byte

{

NRF2401_CH2_WIDTH,

(NRF2401_REC_ADDR_WIDTH

|NRF2401_CRC_LENGTH_16

|NRF2401_CRC_ENABLE),//b23~b18:

接收地址宽度(32位)

//b17~b16:

CRC模式选择(11-16bit)

(NRF2401_RX_CH1

|NRF2401_SHOCKBURST_MODE

|NRF2401_RF_RATE_250

|NRF2401_CRYSTAL_16M

|NRF2401_RF_POWER_0dB),

(NRF2401_FRE_CH_SEL

|NRF2401_TRANSMIT_MODE)//b7~b1:

收发频率(0110010,2.45GHz)

//b0:

收发控制(1-接收)

};

voidnRF2401_Initial(void)

#ifNRF2401_GPIO

//初始化端口

P_NRF2401_DDR|=_BV(CS)|_BV(DATA)|_BV(PWR)|_BV(CLK1)|_BV(CE);

P_NRF2401_DDR&

=~_BV(DR1);

P_NRF2401_PORT&

=~(_BV(CS)|_BV(DATA)|_BV(CLK1)|_BV(CE));

#endif

#ifNRF2401_SPI

P_NRF2401_DDR|=_BV(CS)|_BV(MOSI)|_BV(PWR)|_BV(CLK1)|_BV(CE);

=~_BV(MISO);

//SPI允许、数据传送为MSB、主机模式、极性与相位00、速率focs/2

SPCR=_BV(SPE)|_BV(MSTR)|_BV(SPR0)|_BV(SPR1);

//SPSR|=_BV(SPI2X);

#ifNRF2401_INT

DDRB&

//设置PB2口为输入口

MCUCSR|=_BV(ISC2);

//上升沿触发

GIFR|=_BV(INTF2);

//清中断

GICR|=_BV(INT2);

//允许外部中断INT2

sei();

nRF2401_ON();

//nRF2401上电

_delay_ms

(1);

nRF2401_WriteCommand();

//向nRF2401写命令字

}

voidnRF2401_ON(void)

P_NRF2401_PORT|=_BV(PWR);

=~_BV(PWR);

uint8_ti;

=~_BV(CE);

P_NRF2401_PORT|=_BV(CS);

_delay_us(50);

for(i=0;

i<

15;

i++)

{

nRF2401_WriteByte(InitData[i]);

}

=~_BV(CS);

P_NRF2401_PORT|=_BV(CE);

voidnRF2401_WriteByte(uint8_tuiData)

8;

P_NRF2401_PORT&

=~_BV(CLK1);

if(uiData&

0x80)

{

P_NRF2401_PORT|=_BV(DATA);

}

else

P_NRF2401_PORT&

=~_BV(DATA);

_delay_us(30);

P_NRF2401_PORT|=_BV(CLK1);

uiData=uiData<

<

1;

#else

SPDR=uiData;

while(!

(SPSR&

(1<

SPIF)));

a)

AddrByteCnt;

nRF2401_WriteByte(AddrBuffer[i]);

nRF2401_WriteByte(TxData);

_delay_us(2000);

16;

P_NRF2401_PO&

0x8000)

//===============================

_delay_us(10);

nRF2401_WriteWord(TxData);

nRF2401_WriteByte(TxData[i]);

_delay_us(200);

voidnRF2401_SendBuffer_Word(uint16_t*TxData,uint8_tDataWord)

DataWord;

nRF2401_WriteWord(TxData[i]);

if((P_NRF2401_PIN&

_BV(DR1))==0)

return0;

else

uint8_tj;

=~_BV(MOSI);

while(P_NRF2401_PIN&

_BV(DR1))

SPDR=0x00;

while(!

RxData[j]=SPDR;

P_NRF2401_DDR|=_BV(MOSI);

uint8_ti=0,j=0;

uint8_tdat=0;

dat<

=1;

P_NRF2401_PORT&

|=_BV(MOSI);

j++;

P_NRF2401_DDR|=_BV(DATA);

uint8_tAddress[4]={0x00,0x00,0x01,0xFF};

intmain(void)

uint8_tkey;

Key_Init();

nRF2401_Initial();

//初始化nRF2401A

nRF2401_Mode(NRF2401_TRANSMIT_MODE);

//切换nRF2401A收/发模式

nRF2401_SetAddress(Address,4);

//设置接收端地址000001FF

while

(1)

key=Key_Get();

//取键值

switch(key)

caseKEY_1:

nRF2401_SendByte(KEY_1);

break;

caseKEY_2:

nRF2401_SendByte(KEY_2);

caseKEY_3:

nRF2401_SendByte(KEY_3);

caseKEY_4:

nRF2401_SendByte(KEY_4);

default:

程序2:

接收机

NRF2401_CH2_WIDTH,//通道二接收数据宽度

NRF2401_CH1_WIDTH,

//b14:

收发模式(1-ShockBurst模式)

//b13:

波特率选择(0-250Kbps)

//b12~b10:

晶振选择(011-16M)

uint8_tAddrBuffer[5];

//保存地址

uint8_tAddrByteCnt;

//地址Byte数

的工作方式

//参数:

uiMode:

1--接收;

0--

if(uiMode==NRF2401_RECEIVE_MDOE)

nRF2401_WriteByte(InitData[14]|0x01);

else

nRF2401_WriteByte(InitData[14]&

0xfe);

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2