通信系统综合设计报告光照强度监测系统设计.docx
- 文档编号:14473140
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:36
- 大小:766.61KB
通信系统综合设计报告光照强度监测系统设计.docx
《通信系统综合设计报告光照强度监测系统设计.docx》由会员分享,可在线阅读,更多相关《通信系统综合设计报告光照强度监测系统设计.docx(36页珍藏版)》请在冰点文库上搜索。
通信系统综合设计报告光照强度监测系统设计
第一章概述
第一节课题背景与意义
在现代农业和工业领域,经常需要对一些环境参数进行监测,以做出相应处理,确保设备和系统运行在最佳状态。
随着科技的发展,对环境参数监测系统的要求也越来越高;因此基于传感器、单片机和无线通信芯片设计出一种无线环境参数监测系统十分的重要。
光照强度是一个重要的环境参数,在工业和农业领域有着重要的应用,本课程设计介绍一种可以应用在许多领域的无线光照强度监测系统,实现对环境中的光照强度进行实时采集处理、无线传输与显示的功能。
本文的主要研究工作集中在光照强度监测系统的设计上,通过C语言编程对单片机进行控制,使单片机控制光照采集传感器、无线通信芯片和LCD,实现系统功能。
在本课题的基础上可以设计完成一个高速、方便、稳定的环境数据监测采集和传输系统,可以广泛应用于现代农业和工业领域。
第二节课题设计要求与指标
本系统以环境光照强度为研究对象,应满足的要求与指标为:
1、监测点光照强度测量精确,精度大于0.1lux;
2、将监测点的参数数据以无线方式发送至汇节点,并LCD显示,要求分立元件实现的无线传输距离大于20cm,无线传输模块实现的传输距离大于1km;
3、无线传输设备具有较强的抗干扰能力;
4、设备具有较高的实时性;
5、设备功耗功耗较低。
第二章系统方案选择与确定
第一节硬件系统方案选择
系统硬件部分主要分为采集端和终端两个部分,采集端应包含:
光照采集模块、MCU模块、无线传输模块;终端应包括:
MCU模块、无线传输模块、LCD显示模块。
针对各个模块,分别有几种不同的方案,本节将各个模块的方案进行比较并确定最终方案。
1、光照采集模块方案选择
系统要求采集环境内实时光照强度,并有一定的精确度,光照采集模块有下列两种方案:
方案一:
采用光敏电阻及相关的外围电路,设计成的自制光照采集模块,用于采集环境光照信息。
使用光敏电阻的电路结构简单、实时性高、成本低,但是一般的光敏电阻精确度较低,难以达到课题的要求。
方案二:
采用光照传感器Po188采集环境的光照信息。
使用光照传感器Po188的电路结构简单、实时性好、成本较低,灵敏度高、电流随光照度增强呈线性变化,采集精确度高,符合课题要求。
故采用该方案。
2、无线传输模块方案选择
系统要求采集端通过无线的方式将采集到的光照强度信息发送到终端,终端也是采用无线的方式接受采集端发来的数据。
无线通信模块方案有下列几种方案:
方案一:
通过自制的无线通信模块,但是由于是采用分立元件设计的自制无线通信模块,工作不稳定,抗干扰性差,不满足题目的要求,故不采用该方案。
方案二:
采用无线串口进行无线数据通信,具有接口简单,只需利用单片机的串口就可建立无线通信,采用该模块成本较高,虽然能够满足题目要求,但是考虑到系统的成本,不采用该方案。
方案三:
采用无线收发模块nRF24L01,该模块采用SPI接口可以很方便的与MCU建立通信,发送与接受只需通过简单的将控制指令通过SPI接口写入nRF24L01就可以发送和接收数据。
具有低的系统费用(低速微处理器也能进行高速射频发射),数据在空中停留时间短,抗干扰性高。
故采用该方案。
3、LCD显示模块方案选择
系统的终端需要实时地将环境光照强度信息显示出来,选择1602液晶模块,该模块能够显示32个ASCII码,并且电路结构简单,能够满足系统的数据显示要求,故采用液晶1602进行数据显示。
4、MCU模块方案选择
方案一:
采用51系列单片机及其最小系统作为MCU模块,其特点是结构简单,使用的是CISC指令系统,冯诺依曼总线结构,系统功能易于实现,成本低,但是处理速度较慢,故不采用此方案。
方案二:
采用AVR系列单片机及其最小系统作为MCU模块,其特点是结构简单,使用的是RISC指令系统,哈佛结构总线结构,处理速度较快,更好的满足系统实时性的要求,同时功耗较低。
故采用该方案,我们选用的是ATmega16L单片机。
第二节软件系统方案选择
软件系统采用模块化设计思想,分别使用C语言对对采集端和终端的MCU进行编程。
软件系统的编译环境采用的是采用AVR单片机C语言集成开发环境codevision1.25.3,是HPInfoTech专为AVR系列单片机设计的一款低成本C语言编译器。
它产生的代码非常严密,效率很高,不仅包括了AVR的C编译器,同时也是一个集成IDE的AVR开发平台,简称CVAVR。
基于高级语言开发单片机系统具有语言简洁,可读性强,可移植性好,可进行结构化和模块化程序设计等优点。
图2-1为codevision1.25.3的开发环境。
图2-1codevision1.25.3的开发环境
第三章系统硬件设计与实现
系统硬件部分主要分为采集端和终端两个部分,采集端应包含:
光照采集模块、MCU模块、无线传输模块;终端应包括:
MCU模块、无线传输模块、LCD显示模块。
图3-1为系统硬件设计框图。
终端
LCD显示模块
(1602)
MCU模块
(ATmega16L)
无线传输模块(nRF24L01)
采集端
光照采集模块
(Po188)
MCU模块
(ATmega16L)
无线传输模块(nRF24L01)
图3-1系统硬件设计框图
第一节采集端硬件设计
采集端主要由光照采集模块、MCU模块,即ATmega16L最小系统、以及无线传输模块构成,采集端电路图如图3-2所示。
图3-2采集端硬件电路图
一、光照采集模块设计
采集端的光照采集模块的主要器件是光照传感器Po188。
Po188是一个光电集成传感器,典型入射波长为λp=520nm,内置双敏感元接收器,可见光范围内高度敏感,输出电流随照度呈线性变化。
Po188的主要特性有:
暗电流小,低照度响应,灵敏度高,电流随光照度增强呈线性变化;内置双敏感元,自动衰减近红外,光谱响应接近人眼函数曲线;内置微信号CMOS放大器、高精度电压源和修正电路,输出电流大,工作电压范围宽,温度稳定性好;可选光学纳米材料封装,可见光透过,紫外线截止、近红外相对衰减,增强了光学滤波效果;符合欧盟RoHS指令,无铅、无镉等。
光照采集模块Po188连接电路图如图3-3所示,Po188输出特性曲线如图3-4所示。
图3-3Po188电路图图3-4Po188输出特性曲线
二、ATmega16L最小系统模块设计
采集端和终端的MCU模块都由ATmega16L单片机及其最小系统。
ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
ATmega16L最小系统主要由ATmega16L芯片、晶振电路、复位电路组成。
ATmega16L芯片的工作电压2.7v-5.5v,我们采用的是3.3v供电,由电源电路提供。
在ATmega16L芯片的XTAL1和XTAL2之间加上8M的晶振,通过30pf电容接地为单片机提供工作时钟。
在RESET引脚加上低电平复位的复位电路,一开始上电的时候是自动上电复位,后来工作过程中通过复位开关实现手动复位。
ATmega16L最小系统如图3-5所示。
图3-5Atmega16L最小系统
三、无线传输模块设计
无线传输模块使用的主要芯片是nRF24L01,nRF24L01是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片。
无线收发器包括:
频率发生器、增强型SchockBurst模式控制器、功率放大器、晶体振荡器、调制器解调器。
输出功率频道选择和协议的设置可以通过SPI接口进行设置。
芯片电流消耗极低,当工作在发射模式下发射功率为-6dBm时电流消耗为9.0mA,接收模式时为12.3mA掉电模式和待机模式下电流消耗更低。
支持六路通道的数据接收,工作电压为1.9v~3.6v。
无线传输模块示意图如图3-6所示。
在实际电路中我们使用的是集成的nRF24L01模块,如图3-7所示。
图3-6nRF24L01与单片机连接示意图图3-7nRF24L01集成模块实物
nRF24L01集成模块有8个引脚,各个引脚的功能及与单片机的连接如表3-1所示。
引脚
名称
引脚功能
描述
与Atmega16L连接
1
VSS
电源
接地(0V)
2
VDD
电源
电源(+3V)
3
CE
数字输入
RX或TX模式选择
PB2
4
CSN
数字输入
SPI片选信号
PB1
5
MOSI
数字输入
从SPI数据输入脚
PB6
6
MISO
数字输出
从SPI数据输出脚
PB5
7
SCK
数字输入
SPI时钟
PB7
8
IRQ
数字输出
可屏蔽中断脚
PD2
表3-1nRF24L01集成模块引脚功能
在系统工作时,采集端单片机将光照传感器采集到的光照强度信息处理后传给采集端的无线传输模块,采集端的无线模块将32字节信息打包,通过无线传输协议发送,终端的无线传输模块接收,传给单片机,通过相关处理,显示结果。
第2节终端硬件设计
终端主要由LCD显示模块、MCU模块,即ATmega16L最小系统、以及无线传输模块构成,终端电路图如图3-8所示。
图3-8终端硬件电路图
终端中的MCU模块,ATmega16L最小系统、无线传输模块的设计与采集端类似,故不再赘述,下面介绍一下终端中的LCD显示模块和变压电路。
一、LCD显示模块设计
终端中选用的是字符液晶显示器1602,工作电压为5V,两行显示,每行显示16个字符,一共有16个引脚,1602引脚功能如表3-2所示。
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
底4位三态、双向数据总线0位(最低位)
8
DB1
底4位三态、双向数据总线1位
9
DB2
底4位三态、双向数据总线2位
10
DB3
底4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
表3-21602引脚功能
在1602的引脚中,7—14DB0-DB7八位数据总线,三态双向。
实际使用时,用的是DB4-DB7这四位数据线,这样节省了ATmega16L的I/O资源。
因为液晶引脚是与单片机PA口相连的,PA口只有八位,液晶4、5、6引脚分别接的PA0、
PA1、PA2,剩下的只有五个口,所以用四位数据线分两次传送来缓解接口的紧张。
1602引脚示意图如图3-9所示,1602与ATmega16L引脚连接示意图如图3-10所示。
图3-91602引脚示意图图3-101602与ATmega16L引脚连接
二、变压电路设计
变压电路部分的主要功能是给无线传输模块提供稳定的3.3V的电压,使其正常工作,在采集端的电路中也有变压电路,在这里一同介绍。
系统使用的是AMS1117系列稳压器。
AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V。
在最大输出电流时,AMS1117器件的压差保证最大不超过1.3V,并随负载电流的减小而逐渐降低。
AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力。
AMS1117电路图如图3-11所示。
图3-11AMS1117电路图
第4章系统软件设计与实现
第1节程序整体设计
系统软件部分主要是使用C语言对ATmega6L进行编程,使采集端的MCU能够处理光照传感器Po188传递来的模拟电流信号,将其转换为数字信号;同时MCU传递给无线传输传输模块,将光照信息发送出去。
在终端,无线传输模块可以接收到采集端传来的光照信息,传递给MCU进行处理,最终显示在LCD上面。
系统程序的整体流程就是这样,下面分别给出采集端和终端的程序流程图,采集端程序流程图如图4-1所示,终端程序流程图如图4-2所示。
图4-1采集端程序流程图图4-2终端程序流程图
我们将重点介绍光照采集与AD转换程序,无线传输程序以及LCD显示程序,并简单说明一下程序下载的方法,详细的程序代码将在附录中给出。
第2节光照采集与AD转换程序设计
这部分程序要求将光照采集模块采集到的电压信号转换成电流信号后经过函数转换成光照强度单位勒克斯。
这里需要注意四个与数模转换ADC相关的I/O寄存器:
ADC多路复用器选择寄存器ADMUX、ADC控制和状态寄存器ADCSRA、ADC数据寄存器ADCL和ADCH,这些寄存器在数模转换前都需要根据需求进行设置。
光电函数关系即Po188特性曲线在第二章第一节中有所介绍,可以参考图3-4,下面给出本部分程序代码。
unsignedintread_adc(unsignedcharadc_input)
{
floatadc_data;
ADMUX=adc_input|(ADC_VREF_TYPE&0xff);
delay_us(10);
ADCSRA|=0X40;
while((ADCSRA&0x10)==0);
ADCSRA|=0X10;
adc_data=ADCL;
adc_data=adc_data+ADCH*256;
adc_data=(adc_data*2560.0/1024.0)/1000.0;
adc_data=adc_data/330.0*1000;
if(adc_data>=2.0)
adc_data=800.0+(adc_data-2.0)*666.7;
if(adc_data>=1.5&&adc_data<2.0)
adc_data=500.0+(adc_data-1.5)*600.0;
if((adc_data)>=1.1&&(adc_data<1.5))
adc_data=300.0+(adc_data-1.1)*500.0;
if((adc_data)>=0.5&&(adc_data<1.1))
adc_data=100.0+(adc_data-0.5)*333.3;
if(adc_data<0.5)
adc_data=adc_data*200.0;
adc_data=adc_data*10.0;
returnadc_data;
}
第3节无线传输程序设计
MCU与nRF24L01是通过SPI接口进行通信的,SPI的接口的读时序如图4-3所示,写时序如图4-4所示,图中Cn-SPI指令位,Sn-状态寄存器位,Dn-数据位(注:
由低字节到高字节,每字节中高位在前)。
图4-3SPI写时序
图4-4SPI读时序
在配置nRF24L01的寄存器之前一定要确保nRF24L01进入待机模式或掉电模式。
nRF24L01在接受模式的初始化函数为:
voidRX_Mode(void)
{
nRF24L01_CE=0;
delay_us(130);
write_register_onebyte(EN_AA,0x00);//EnableAuto.Ack:
Pipe0
write_register_onebyte(EN_RXADDR,0x01);//EnablePipe0
write_register_onebyte(SETUP_AW,0x03);//ADDRWIDTH5BYTES
write_register_onebyte(RF_CH,40);//SelectRFchannelfreq2440Mhz
write_register_onebyte(RX_PW_P0,TX_PLOAD_WIDTH);//SelectsameRXpayloadwidthasTXPayloadwidth
write_register_onebyte(RF_SETUP,0x07);//TX_PWR:
0dBm,Datarate:
2Mbps,LNA:
HCURR
//write_register_onebyte(CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)&Prim:
RX.RX_DRenabled..
write_register_bytes(RX_ADDR_P0,flash_channel0,TX_ADR_WIDTH);//UsethesameaddressontheRXdeviceastheTXdevice
write_register_bytes(TX_ADDR,flash_channel0,TX_ADR_WIDTH);
write_register_onebyte(CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)&Prim:
RX.RX_DRenabled..
write_register_onebyte(STATUS,0xF0);
//接收模式要为高电平
nRF24L01_CE=1;
delay_us(130);
//Thisdeviceisnowreadytoreceiveonepacketof16bytespayloadfromaTXdevicesendingtoaddress
}
nRF24L01在发射模式的初始化函数为:
voidTX_Mode(void)
{write_register_onebyte(EN_AA,0x01);//EnableAuto.Ack:
Pipe0
write_register_onebyte(EN_RXADDR,0x01);//EnablePipe0
write_register_onebyte(SETUP_AW,0x03);
write_register_onebyte(SETUP_RETR
0x0a);//1A//500us+86us,10retrans...
write_register_onebyte(RF_CH,40);//SelectRFchannel40
write_register_onebyte(RF_SETUP,0x07);//TX_PWR:
0dBm,Datarate:
2Mbps,LNA:
HCURR
write_register_onebyte(CONFIG,0x0E);//SetPWR_UPbit,enableCRC(2bytes)&Prim:
TX.MAX_RT&TX_DSenabled..
write_register_bytes(RX_ADDR_P0,flash_channel0,TX_ADR_WIDTH);//RX_Addr0sameasTX_AdrforAuto.Ack
write_register_bytes(TX_ADDR,flash_channel0,TX_ADR_WIDTH);
write_register_onebyte(CONFIG,0x0E);//SetPWR_UPbit,enableCRC(2bytes)&Prim:
TX.MAX_RT&TX_DSenabled..
write_register_onebyte(STATUS,0XF0);
}
第4节LCD显示程序设计
LCD显示程序比较简单,主要是put和goto语句的应用。
代码如下:
write_register_onebyte(STATUS,0xF0);read_rx_palyoad(R_RX_PAYLOAD,data,5);lcd_gotoxy(0,0);lcd_putsf("light");for(i=0;i<4;i++){
lcd_gotoxy(i,1);lcd_putchar(data[i]);}lcd_gotoxy(4,1);lcd_putsf(".");lcd_gotoxy(5,1);lcd_putchar(data[4]);lcd_gotoxy(7,1);lcd_putsf("lux")delay_ms(100);
第5节程序下载
CodeVision软件在对项目编译成功后会在项目文件夹的EXE文件夹中生成.hex文件,此文件可通过下载软件经下载线下载至单片机上。
我们使用的是progisp1.72烧写软件,它支持所有的AVR芯片的编程、支持AT89S51,AT89S52支持自定义并口下载编程器、支持自定义串口的下载编程器、支持STK500编程器、支持USBASP编程器、支持并口的并行编程器、支持USBProg编程器、支持自定义编程芯片、支持自定义编程熔丝信息提示信息、支持USBProg的在线升级(通过USB口)、支持USBProg-C实现脱机下载、支持命令行方式,可以直接嵌入其他IDE中使用、绿色软件,无需安装,占用资源少、支持自定义汉化信息提示、支持工程管理,可以将所有的配置数据与编程数据打包为单一文件。
progisp1.72程序操作界面图4-5所示。
图4-5progisp1.72烧写软件
第四章测试结果及讨论
测试贯穿于硬件和软件的设计过程中,用于检查设计过程的出现的各种问题,下面介绍一下在设计过程我们对各个模块的测试过程与结果。
第一节LCD显示测试
LCD显示测试的目的是测试ATmega16L单片机与1602LCD显示屏的连接是否正确,能否正确显示,测试程序为在液晶屏上显示两行固定数据。
测试程序如下:
#include
#include
#asm
.equ__lcd_port=0x18;PORTB数据寄存器地址
#endasm
#include
flashchardis_str[]="HelloWorld!
";
voidmain(void)
{charflash*str;
str=dis_str;
lcd_init(16);
while
(1)
{lcd_clear();
lcd_putsf("It'sdisplaydemo.");
lcd_gotoxy(0,1);
lcd_putsf(str);
if(*str++==0)str=dis_str;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 系统 综合 设计 报告 光照强度 监测