1、通信系统综合设计报告光照强度监测系统设计目 录第一章 概述 2第一节 课题背景与意义 2第二节 课题设计要求与指标 2第二章 系统方案选择与确定 3第一节 硬件系统方案选择 3一、 光照采集模块方案选择 3二、 无线传输模块方案选择 3三、 LCD显示模块方案选择 4四、 MCU模块方案选择 4第二节 软件系统方案选择 4第三章 系统硬件设计与实现 6第一节 采集端硬件设计 6一、光照采集模块设计 7二、ATmega16L最小系统模块设计 7三、无线传输模块设计 8第二节 终端硬件设计 9一、LCD显示模块设计 10二、变压电路设计 11第四章 系统软件设计与实现 12第一节 程序整体设计 1
2、2第二节 光照采集与AD转换程序设计 12第三节 无线传输程序设计 13第四节 LCD显示程序设计 15第五节 程序下载 16第四章 测试结果及讨论 17第一节 LCD显示测试 17第二节 光照采集与显示测试 18心得体会 20参考文献 21附 录 22一、 器件清单 22二、工具清单 22三、实物图 23四、程序代码 23第一章 概述第一节 课题背景与意义在现代农业和工业领域,经常需要对一些环境参数进行监测,以做出相应处理,确保设备和系统运行在最佳状态。随着科技的发展,对环境参数监测系统的要求也越来越高;因此基于传感器、单片机和无线通信芯片设计出一种无线环境参数监测系统十分的重要。光照强度是
3、一个重要的环境参数,在工业和农业领域有着重要的应用,本课程设计介绍一种可以应用在许多领域的无线光照强度监测系统,实现对环境中的光照强度进行实时采集处理、无线传输与显示的功能。本文的主要研究工作集中在光照强度监测系统的设计上,通过C语言编程对单片机进行控制,使单片机控制光照采集传感器、无线通信芯片和LCD,实现系统功能。在本课题的基础上可以设计完成一个高速、方便、稳定的环境数据监测采集和传输系统,可以广泛应用于现代农业和工业领域。第二节 课题设计要求与指标本系统以环境光照强度为研究对象,应满足的要求与指标为:1、监测点光照强度测量精确,精度大于0.1lux;2、将监测点的参数数据以无线方式发送至
4、汇节点,并LCD显示,要求分立元件实现的无线传输距离大于20cm,无线传输模块实现的传输距离大于1km;3、无线传输设备具有较强的抗干扰能力;4、设备具有较高的实时性;5、设备功耗功耗较低。第二章 系统方案选择与确定第一节 硬件系统方案选择系统硬件部分主要分为采集端和终端两个部分,采集端应包含:光照采集模块、MCU模块、无线传输模块;终端应包括:MCU模块、无线传输模块、LCD显示模块。针对各个模块,分别有几种不同的方案,本节将各个模块的方案进行比较并确定最终方案。1、光照采集模块方案选择 系统要求采集环境内实时光照强度,并有一定的精确度,光照采集模块有下列两种方案: 方案一:采用光敏电阻及相
5、关的外围电路,设计成的自制光照采集模块,用于采集环境光照信息。使用光敏电阻的电路结构简单、实时性高、成本低,但是一般的光敏电阻精确度较低,难以达到课题的要求。 方案二:采用光照传感器Po188采集环境的光照信息。使用光照传感器Po188的电路结构简单、实时性好、成本较低,灵敏度高、电流随光照度增强呈线性变化,采集精确度高,符合课题要求。故采用该方案。2、无线传输模块方案选择 系统要求采集端通过无线的方式将采集到的光照强度信息发送到终端,终端也是采用无线的方式接受采集端发来的数据。无线通信模块方案有下列几种方案: 方案一:通过自制的无线通信模块,但是由于是采用分立元件设计的自制无线通信模块,工作
6、不稳定,抗干扰性差,不满足题目的要求,故不采用该方案。 方案二:采用无线串口进行无线数据通信,具有接口简单,只需利用单片机的串口就可建立无线通信,采用该模块成本较高,虽然能够满足题目要求,但是考虑到系统的成本,不采用该方案。方案三:采用无线收发模块nRF24L01,该模块采用SPI接口可以很方便的与MCU建立通信,发送与接受只需通过简单的将控制指令通过SPI接口写入nRF24L01就可以发送和接收数据。具有低的系统费用(低速微处理器也能进行高速射频发射),数据在空中停留时间短,抗干扰性高。故采用该方案。3、LCD显示模块方案选择系统的终端需要实时地将环境光照强度信息显示出来,选择1602液晶模
7、块,该模块能够显示32个ASCII码,并且电路结构简单,能够满足系统的数据显示要求,故采用液晶1602进行数据显示。4、MCU模块方案选择方案一:采用51系列单片机及其最小系统作为MCU模块,其特点是结构简单,使用的是CISC指令系统,冯诺依曼总线结构,系统功能易于实现,成本低,但是处理速度较慢,故不采用此方案。方案二:采用AVR系列单片机及其最小系统作为MCU模块,其特点是结构简单,使用的是RISC指令系统,哈佛结构总线结构,处理速度较快,更好的满足系统实时性的要求,同时功耗较低。故采用该方案,我们选用的是ATmega16L单片机。第二节 软件系统方案选择 软件系统采用模块化设计思想,分别使
8、用C语言对对采集端和终端的MCU进行编程。软件系统的编译环境采用的是采用AVR单片机C语言集成开发环境code vision1.25.3,是HP Info Tech专为AVR系列单片机设计的一款低成本C语言编译器。它产生的代码非常严密,效率很高,不仅包括了AVR的C编译器,同时也是一个集成IDE的AVR开发平台,简称CVAVR。基于高级语言开发单片机系统具有语言简洁,可读性强,可移植性好,可进行结构化和模块化程序设计等优点。图2-1为code vision1.25.3的开发环境。图2-1 code vision1.25.3的开发环境第三章 系统硬件设计与实现系统硬件部分主要分为采集端和终端两个
9、部分,采集端应包含:光照采集模块、MCU模块、无线传输模块;终端应包括:MCU模块、无线传输模块、LCD显示模块。图3-1为系统硬件设计框图。 图3-1 系统硬件设计框图第一节 采集端硬件设计采集端主要由光照采集模块、MCU模块,即ATmega16L最小系统、以及无线传输模块构成,采集端电路图如图3-2所示。 图3-2 采集端硬件电路图 一、光照采集模块设计 采集端的光照采集模块的主要器件是光照传感器Po188。 Po188是一个光电集成传感器,典型入射波长为p=520nm,内置双敏感元接收器,可见光范围内高度敏感,输出电流随照度呈线性变化。Po188的主要特性有:暗电流小,低照度响应,灵敏度
10、高,电流随光照度增强呈线性变化;内置双敏感元,自动衰减近红外,光谱响应接近人眼函数曲线;内置微信号CMOS放大器、高精度电压源和修正电路,输出电流大,工作电压范围宽,温度稳定性好;可选光学纳米材料封装,可见光透过,紫外线截止、近红外相对衰减,增强了光学滤波效果;符合欧盟RoHS指令, 无铅、无镉等。光照采集模块Po188连接电路图如图3-3所示,Po188输出特性曲线如图3-4所示。 图3-3 Po188电路图 图3-4 Po188输出特性曲线 二、ATmega16L最小系统模块设计 采集端和终端的MCU模块都由ATmega16L单片机及其最小系统。ATmega16是基于增强的AVR RISC
11、结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达 1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。 ATmega16L最小系统主要由ATmega16L芯片、晶振电路、复位电路组成。ATmega16L芯片的工作电压2.7v-5.5v,我们采用的是3.3v供电,由电源电路提供。在ATmega16L芯片的XTAL1和XTAL2之间加上8M的晶振,通过30pf电容接地为单片机提供工作时钟。在RESET引脚加上低电平复位的复位电路,一开始上电的时候是自动上电复位,后来工作过程中通过复位开关实现手动复位。ATmega16L最
12、小系统如图3-5所示。图3-5 Atmega16L最小系统 三、无线传输模块设计 无线传输模块使用的主要芯片是nRF24L01,nRF24L01是一款工作在2.42.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurst模式控制器、功率放大器、晶体振荡器、调制器解调器。输出功率频道选择和协议的设置可以通过SPI 接口进行设置。芯片电流消耗极低,当工作在发射模式下发射功率为-6dBm 时电流消耗为9.0mA,接收模式时为12.3mA掉电模式和待机模式下电流消耗更低。支持六路通道的数据接收,工作电压为1.9v3.6v。无线传输模块示意图如图3-6所
13、示。在实际电路中我们使用的是集成的nRF24L01模块,如图3-7所示。 图3-6 nRF24L01与单片机连接示意图 图3-7 nRF24L01集成模块实物 nRF24L01集成模块有8个引脚,各个引脚的功能及与单片机的连接如表3-1所示。引脚名称引脚功能描述与Atmega16L连接1VSS电源接地(0V)2VDD电源电源(+3V)3CE数字输入RX或TX模式选择PB24CSN数字输入SPI片选信号PB15MOSI数字输入从SPI数据输入脚PB66MISO数字输出从SPI数据输出脚PB57SCK数字输入SPI时钟PB78IRQ数字输出可屏蔽中断脚PD2 表3-1 nRF24L01集成模块引脚
14、功能 在系统工作时,采集端单片机将光照传感器采集到的光照强度信息处理后传给采集端的无线传输模块,采集端的无线模块将32字节信息打包,通过无线传输协议发送,终端的无线传输模块接收,传给单片机,通过相关处理,显示结果。第2节 终端硬件设计终端主要由LCD显示模块、MCU模块,即ATmega16L最小系统、以及无线传输模块构成,终端电路图如图3-8所示。 图3-8 终端硬件电路图终端中的MCU模块,ATmega16L最小系统、无线传输模块的设计与采集端类似,故不再赘述,下面介绍一下终端中的LCD显示模块和变压电路。 一、LCD显示模块设计终端中选用的是字符液晶显示器1602,工作电压为5V,两行显示
15、,每行显示16个字符,一共有16个引脚,1602引脚功能如表3-2所示。引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、
16、双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极16BLK背光 电源负极表3-2 1602引脚功能在1602的引脚中,714 DB0-DB7八位数据总线,三态双向。实际使用时,用的是DB4-DB7这四位数据线,这样节省了ATmega16L的I/O资源。因为液晶引脚是与单片机PA口相连的,PA口只有八位,液晶4、5、6引脚分别接的PA0、PA1、PA2,剩下的只
17、有五个口,所以用四位数据线分两次传送来缓解接口的紧张。1602引脚示意图如图3-9所示,1602与ATmega16L引脚连接示意图如图3-10所示。 图3-9 1602引脚示意图 图3-10 1602与ATmega16L引脚连接 二、变压电路设计变压电路部分的主要功能是给无线传输模块提供稳定的3.3V的电压,使其正常工作,在采集端的电路中也有变压电路,在这里一同介绍。系统使用的是AMS1117系列稳压器。AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V。在最大输出电流时,AMS1117器件的压差保证最大不超过1.3V,并随负载电流的减小而逐渐降低。
18、AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力。AMS1117电路图如图3-11所示。图3-11 AMS1117电路图第4章 系统软件设计与实现第1节 程序整体设计系统软件部分主要是使用C语言对ATmega6L进行编程,使采集端的MCU能够处理光照传感器Po188传递来的模拟电流信号,将其转换为数字信号;同时MCU传递给无线传输传输模块,将光照信息发送出去。在终端,无线传输模块可以接收到采集端传来的光照信息,传递给MCU进行处理,最终显示在LCD上面。系统程序的整体流程就是这样,下面分别给出采集端和终端的程序流
19、程图,采集端程序流程图如图4-1所示,终端程序流程图如图4-2所示。 图4-1 采集端程序流程图 图4-2 终端程序流程图我们将重点介绍光照采集与AD转换程序,无线传输程序以及LCD显示程序,并简单说明一下程序下载的方法,详细的程序代码将在附录中给出。第2节 光照采集与AD转换程序设计 这部分程序要求将光照采集模块采集到的电压信号转换成电流信号后经过函数转换成光照强度单位勒克斯。这里需要注意四个与数模转换ADC相关的I/O寄存器:ADC多路复用器选择寄存器ADMUX、ADC控制和状态寄存器ADCSRA、ADC数据寄存器ADCL和ADCH,这些寄存器在数模转换前都需要根据需求进行设置。光电函数关
20、系即Po188特性曲线在第二章第一节中有所介绍,可以参考图3-4,下面给出本部分程序代码。unsigned int read_adc(unsigned char adc_input)float adc_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_d
21、ata/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=1.1&(adc_data=0.5&(adc_data1.1)adc_data=100.0+(adc_data-0.5)*333.3;if(adc_data0.5)adc_data=adc_data*200.0;adc_data=adc_data*10.0;return adc_data;第3节 无线传输程序设计MCU与nRF24L01是通过SPI接口进行通信的,SPI的接口的读时序如图4-3所示,写时序如图4-
22、4所示,图中Cn-SPI指令位,Sn-状态寄存器位,Dn-数据位(注:由低字节到高字节,每字节中高位在前)。 图4-3 SPI写时序图4-4 SPI读时序在配置nRF24L01的寄存器之前一定要确保nRF24L01进入待机模式或掉电模式。nRF24L01在接受模式的初始化函数为:void RX_Mode(void) nRF24L01_CE = 0; delay_us(130); write_register_onebyte(EN_AA, 0x00); / Enable Auto.Ack:Pipe0 write_register_onebyte(EN_RXADDR, 0x01); / Enabl
23、e Pipe0 write_register_onebyte(SETUP_AW,0x03); /ADDR WIDTH 5 BYTES write_register_onebyte(RF_CH, 40); / Select RF channel freq 2440Mhz write_register_onebyte(RX_PW_P0,TX_PLOAD_WIDTH); / Select same RX payload width as TX Payload width write_register_onebyte(RF_SETUP, 0x07); / TX_PWR:0dBm, Datarate:2
24、Mbps, LNA:HCURR /write_register_onebyte(CONFIG, 0x0f); / Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled. write_register_bytes(RX_ADDR_P0,flash_channel0,TX_ADR_WIDTH); / Use the same address on the RX device as the TX device write_register_bytes(TX_ADDR,flash_channel0,TX_ADR_WIDTH); wri
25、te_register_onebyte(CONFIG, 0x0f); / Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled. write_register_onebyte(STATUS,0xF0); /接收模式要为高电平 nRF24L01_CE = 1; delay_us(130); / This device is now ready to receive one packet of 16 bytes payload from a TX device sending to addressnRF24L01在发射模式的初始化
26、函数为:void TX_Mode(void) write_register_onebyte(EN_AA,0x01); / Enable Auto.Ack:Pipe0 write_register_onebyte(EN_RXADDR,0x01); / Enable Pipe0 write_register_onebyte(SETUP_AW,0x03); write_register_onebyte(SETUP_RETR,0x0a);/1A / 500us + 86us, 10 retrans. write_register_onebyte(RF_CH,40); / Select RF chann
27、el 40 write_register_onebyte(RF_SETUP,0x07); / TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR write_register_onebyte(CONFIG,0x0E); / Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled. write_register_bytes(RX_ADDR_P0,flash_channel0,TX_ADR_WIDTH); / RX_Addr0 same as TX_Adr for Auto.Ack wri
28、te_register_bytes(TX_ADDR,flash_channel0,TX_ADR_WIDTH); write_register_onebyte(CONFIG,0x0E); / Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX_DS enabled. write_register_onebyte(STATUS,0XF0);第4节 LCD显示程序设计LCD显示程序比较简单,主要是put和goto语句的应用。代码如下:write_register_onebyte(STATUS,0xF0); read_rx_palyoa
29、d(R_RX_PAYLOAD,data,5); lcd_gotoxy(0,0); lcd_putsf(light); for(i=0;i4;i+) lcd_gotoxy(i,1); lcd_putchar(datai); lcd_gotoxy(4,1); lcd_putsf(.); lcd_gotoxy(5,1); lcd_putchar(data4); lcd_gotoxy(7,1); lcd_putsf(lux) delay_ms(100);第5节 程序下载Code Vision软件在对项目编译成功后会在项目文件夹的EXE文件夹中生成.hex文件,此文件可通过下载软件经下载线下载至单片机上
30、。我们使用的是progisp1.72烧写软件,它支持所有的AVR芯片的编程、支持AT89S51,AT89S52支持自定义并口下载编程器、支持自定义串口的下载编程器、支持STK500编程器、支持USBASP编程器、支持并口的并行编程器、支持USBProg编程器、支持自定义编程芯片、支持自定义编程熔丝信息提示信息、支持USBProg的在线升级(通过USB口)、支持USBProg-C实现脱机下载、支持命令行方式,可以直接嵌入其他IDE中使用、绿色软件,无需安装,占用资源少、支持自定义汉化信息提示 、支持工程管理,可以将所有的配置数据与编程数据打包为单一文件。progisp1.72程序操作界面图4-5所示。图4-5 progisp1.72烧写软件第四章 测试结果及讨论测试贯穿于硬件和软件的设计过程中,用于检查设计过程的出现的各种问题,下面介绍一下在设计过程我们对各个模块的测试过程与结果。第一节 LCD显示测试LCD显示测试的目的是测试ATmega16L单片机与1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1