版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论1.1课题研究的背景及意义我国风能资源丰富,在过去十年里我国的风机产业得到了迅猛发展,但与此同时,风机安全事故也在逐年增加。另外,由于风机大多安装在野外或海上,一旦着火将造成严重的损失,因此急需装备自动消防控制系统。1.2课题研究的现状及发展趋势我国10m高度层的风能资源总储量为32.26亿kW,其中实际可开发利用的风能资源储量为2.53亿kW。东南沿海及其附近岛屿是风能资源丰富地区,有效风能密度大于或等于200W/m2的等值线平行于海岸线;沿海岛屿有效风能密度在300W/m2以上,全年中风速大于或等于3m/s的时数约为7000~8000h,大于或等于6m/s的时数为4000h。新疆北部、内蒙古、甘肃北部也是中国风能资源丰富地区,有效风能密度为200~300W/m2,全年中风速大于或等于3m/s的时数为5000h以上,全年中风速大于或等于6m/s的时数为3000h以上。我国的风力发电已成为大势所趋,但由于风机大多安装在野外或海上,一旦着火将造成严重的损失,这也导致了风电机组火灾事件猛增。2014年国能局印发《国家能源局关于印发〈防止电力生产事故的二十五项重点要求〉的通知》(国能安全〔2014〕161号)和《国家能源局综合司关于加强风电场安全管理防范风机火灾事故的通知》,《人民日报》曾经说到:“自2012年开始,我国的风电组火灾事故已让人大为吃惊。”上述数据表明:高效智能的消防系统的需求正以迅猛的速度上涨,这将使得风力发电在新能源行业中脱颖而出,同时也面临着严峻的挑战。为了解决火灾预防和高效灭火的问题,风电机组自动消防控制系统的设计显得尤为重要。由于新能源和风电的发展,我国风力发电机数量持续上涨,因此风电机组自动消防控制系统的设计刻不容缓。本文所设计的自动消防控制系统不仅能够预防火灾的,还可以在已经发生火灾的同时实现高效灭火。该系统所采用的ATmega128单片机,价格便宜性价比超高,同时本程序装有烟雾传感器,温湿度传感器,液晶显示器和无线通信系统,能将现场的数据传输到手机上,并通过红外遥控器控制灭火。1.3本设计主要内容本次设计是为了减轻野外风电机组消防灭火的压力,设计一种可以检测风电机组内部状态,并实现自动灭火的智能消防控制系统。该系统采用了ATmega128芯片作为控制单元,内部装有无线收发模块,利用NRF24L01实现内部信息传递,其次通过温湿度,烟雾传感器对机组内部进行检测,再由A/D转换器将得到的数据传输给ATmega128处理,所有传感器信息、火灾信息、消防装置运行情况等数据,在本地液晶上显示,通过NRF24L01实现传感器和监控中心的双向通信。1.4论文结构论文第1部分是说明本次课题的来源和近几年国内风电机组消防系统发展的趋势,最后对本次设计的系统进行一次简单概括。论文第2部分是系统设计方案选择,先说明每个模块的储备设计方案和任务,并对所选硬件的特点和优势进行说明。论文第3部分是硬件设计部分,近一步对论文第二部分的硬件做详细解释,包括无线通信、OV2640摄像头、温湿度传感器DHT11、烟雾传感器和2.8寸彩屏模块,并解释了各模块引脚如何与主芯片ATmega128连接。论文第4部分是软件设计部分,先对主程序流程进行了说明,接着对各个模块的主要程序进行了详细说明。论文第5部分是系统调试部分,一开始说明了我的准备工作,接着是对软件进行的仿真调试。最后,软件调试结束后,对各个模块的功能进行了调试。论文第6部分是结束语,主要再对风电机组自动消防控制系统进行一次说明,在这个部分讲述了工作过程中遇到的困难以及克服的办法。最后是致谢和参考文献。
第2章系统设计方案2.1系统设计任务本设计是风电机组自动消防系统进行一次研究,并且以ATmega128作为控制单元,并通过该芯片读取数据显示在TFTLCD屏上。该系统采用了ATmega128芯片作为控制单元,内部装有无线收发模块,利用NRF24L01实现内部信息传递,其次通过温湿度,烟雾传感器对机组内部进行检测,再由A/D转换器将得到的数据传输给ATmega-128处理,所有传感器信息、火灾信息、消防装置运行情况等数据,在本地液晶上显示,通过NRF24L01实现传感器和监控中心的双向通信。下面将会对系统功能及各模块设计的方案选择进行描述。2.2系统设计方案选择2.2.1单片机芯片的选择本次设计选择ATmega128作为核心芯片,内部含有128K的FLASH空间、4KB的RAM空间以及4KB的EEPROM空间,共有6.5组双向I/O口共计53个,分别为PA,PB,PC,PD,PE,PF,PG,多个接口[3]。同时内部程序存储器价格低廉、可擦写1万次以上、指令长度单元为16位的FlashROM,数据存储器为8位。2.2.2电源选择方案系统电源模块提供整个开发板的电源,支持USB接口和外接电源供电,使用USB供电显得尤其方便,一条USB线即可供电。开发板支持3.3V系统和5V系统,板上集成5V到3.3V的电压稳压芯片ASM1117-3,可以通过跳线自由选择。2.2.3无线通信模块选择方案对于信号的传输,本系统是采用NRF24L01芯片实现该功能的。该芯片适用于单片收发,一般可在2.4GHz~2.5GHz频段进行工作。该芯片拥有126个通信通道和六个数据通道。本次设计就是利用该芯片将机组内信息发给监控室。同时,NRF24L01芯片有很多优点,它的功能消耗较低。尽管使用高频率进行发射与接收。工作的输出电流很低,对于电能的节约有一定的帮助,而且该芯片对于信号传输的距离较远,设计时更加方便。2.2.4开发软件选择方案本系统采用的编译软件是Atmelstudio, 烧录的软件选择AVRstudio。ATMEL公司提供的AVRStudio开发平台是免费的汇编开发平台。该平台支持AVR汇编语言程序的编辑、编译、连接以及生成目标代码。同时,该软件平台还内嵌AVRGCC高级语言接口(C/C++语言开发,内含AVR软件模拟器,其仿真调试平台还可配合各种类型的AVR仿真器,如实时在板仿真器ICE40、ICE50,实时在线仿真器JTAGICE、JTAGICEmkⅡ可实现系统的在线的硬件仿真和代码的下载。2.2.5摄像头选择方案本部分采用的摄像头模块型号是OV2640,它是由OV公司产出的比较新型的摄像头传感器,该类型的摄像头模块具有很多优点:它的体积较小、工作电压低、清晰度高。OV2640是由SCCB总线进行控制,我们可以对SCCB接口进行编程,从而对图像的平衡度、色彩进行调整,除此以外。OV2640还可以改善图像缺陷,使得图像更加清晰。2.2.6传感器选择方案本系统用到的传感器有温湿度传感器和烟雾传感器,温湿度传感器型号选择的是DHT11温湿度传感器,这种传感器对温湿度的变化更加敏锐,数据更加准确。烟雾传感器型号选择的是AT89S52烟雾传感器,该烟雾传感器使用的气敏材料是在清洁空气中电导率较低的二氧化铝,与其它烟雾传感器相比优势在于可以检测多种可燃性气体,是一种适合多种场合的低成本传感器。2.2.7显示屏模块选择方案本系统采用的显示屏模块型号是DMTFT-28,是一种2.8寸TFTLCD,有着240×320的分辨率。其显示屏大小一般是OLED的三到四倍,该显示屏内部采用ST7789芯片实现对TFTLCD的驱动,同时芯片内部设有GRAM装置。通过该装置,主控制芯片实现驱动功能将会变得很方便。2.3系统整体设计框图本系统以ATmega-128为主控制器,接下来使用温湿度传感器、烟雾传感器、摄像头模块对数据进行采集,所有传感器信息、火灾信息、消防装置运行情况等数据,在本地液晶上显示,最后实现火灾现场和监控中心的双向通信。下图2-1为整个系统设计的框图。图2-1系统设计框图
硬件电路设计本系统是传感技术、通信技术和嵌入式技术的结合。具体实现方案如下:用AVR单片机作为控制核心,风电机组现场温度和湿度通过温度传感器来检测;通过红外传感器、烟雾传感器和摄像头模块显示机组内是否出现火灾,有则控制消防装置灭火;且将所有传感器信息、火灾信息、消防装置运行情况等数据,在本地液晶上显示;同时通过通信模块,实现现场传感器和监控中心的双向通信。本次风电机组自动消防控制系统的设计是利用ATmega128芯片作为控制中心,利用其它各个模块对数据的采集,最后通过无线通信进行传输从而得以实现。如果将其运用到实际中,能够有效地提高了风电机组发现火灾实施灭火的效率,风力发电行业将会得到很大的改善,也方便了我们的生活3.1主控制器ATmega128本次设计选用ATmega128芯片作为主控制器,该CPU功能消耗低并且价格便宜,功能齐全,资源丰富的ATmega128是ATMEL公司atmegaAVR系列单片机中的一款。此单片机支持多种方式的程序下载与烧写,包括高压并口方式、ISP方式和JTAG下载方式。ATmeaga128单片机作为主控单片机,该型单片机具有丰富的资源和接口,内部ROM和RAM完全能满足AVR单片机高级开发要求,内置大容量程序Flash空间和SRAM数据空间,还包含非易失性存储器EEPROM,对于那些实际项目中的数据存储也不需要扩展外部存储空间。单片机外部工作晶振默认为7.3728MHz,选择此晶振的目的是考虑到单片机的速度与单片机串行通信波特率所需时钟而选择的,可以自行更换使用其他频率晶振,最大支持16M。在该芯片中有SD卡读写模块,轻松实现对SD卡内部数据进行读写,SD卡可以作为外挂超大容量存储器,存储超大容量数据。支持计算机PS2键盘接口功能,使用普通的6针PS2计算机键盘可以实现与单片机的通信,方便灵活的采集各种输入信号。支持8位数码管显示,可选择使用其中任意的数码管使用,动态显示。支持1602字符型液晶显示器、128X64点阵图形液晶接口,可以适用于不同要求。支持TFT彩屏液晶驱动,板载TFT彩屏液晶接口,在TFT液晶上显示任意字符、汉字和彩色图片,可以方便实现人机界面。配合SD卡模块和TFT模块,可以实现类似数码相框功能,显示SD卡中的BMP图片文件,让你轻松学习FAT文件系统的应用。双串口DB9接口,方便多级控制,与电脑通信也易如反掌。小功率步进电机控制模块,方便进行控制级开发。所有AVR单片机I/O接口全部引出,如果需要自行配置使用单片机的I/O口,可以通过导线简单的实现连接,因此具有良好的扩展应用功能。支持红外一体化接收功能,通过板载的红外接收器可以接收38KHz红外遥控器信号,通过软件可解码,实现无线控制;在该芯片中,每个定时器的功能不同:其中有四个定时器可以对输入输出进行捕捉比较,还可以用作编码器输入和脉冲计数;两个十六位的定时器用来对PWN进行控制管理;一个独立型和一个窗口型的看门狗计时器;一个递减型的系统时间定时器和两个十六位的可对DAC进行驱动的基本定时器。图3-1为ATmege128芯片的硬件原理图:图3-1(a)ATmega128芯片引脚图图3-1(b)ATmega128芯片引脚图在图3-1(a)中,引脚PA0是按键引脚,可以在当MCU低功耗状态或者休眠状态下起唤醒作用。PA1是ADC输入引脚,PA2是RS485的RX脚,PF3是TX引脚,PF4是DAC-OUT输出脚,PF5可以连NRF24L01芯片的SCK口。图3-1(c)ATmega128芯片PB端口引脚图在图3-1(b)中,引脚PB0可用来接TFTLCD显示屏的控制背光脚LCD_BL,PB1可接TFTLCD的SCK信号,PB2可接TFTLCD的MISO信号,PB3可接OV2640 的FIFO_WEN接口,PB4可接OV2640的PCLK接口,PB5可接NRF24L01接口的SCK信号。图3-1(d)ATmega128芯片PC端口引脚图在图3-1(c)中,引脚PC0可用来接烟雾传感器的D0小板开关数字量输出接口,PC1可接DMT11的SCK信号,PC2可接DMT11的MISO信号,PC3可接OV2640的FIFO_WEN接口,PC4可接OV2640的SCCB接口,PC5可接LM393接口的SCK信号。图3-1(e)ATmega128芯片PD端口引脚图在图3-1(d)中,PD0-AD4为8位并行数据接口,作为数码管、液晶的数据口,D5-D7作为8位LED发光二极管的控制口,其他IO口为相关模块的控制口。3.2电源模块图3-2电源模块原理图系统电源模块提供整个系统的电源,本系统支持USB接口和外接电源供电,使用USB供电显得尤其方便,一条USB线即可供电。集成5V到3.3V的电压稳压芯片ASM1117-3,可以通过跳线自由选择,确定使用何种电压,对于低功耗场所使用提供了方便,有助于项目开发的使用。3.3无线通信模块本部分的无线通信模块主要采用了NRF24L01芯片,该种类的无线通信模块体积较小,方便安装并且2.4G工作频率传输距离大约是空旷距离的40到50米,同时该芯片内部还装有片内稳压器oltageregulators,该稳压器可以让无线通信模块在1.9到3.6v低电压工作,并可以通过软件设置芯片为发送或者接收模式,更有特点的是该模块在掉电模式下的功耗400nA,待机模式下的功耗32uA,非常的节能。该无线通信模块可支持3V~5V范围的电压,可不通过外部设备便可以主控制芯片相连。该种类型的无线通信模块可通过PPS指示灯的变化判断是否成功连接,当该指示灯不亮时,表明芯片内部已被损坏或者电路连接错误;当指示灯亮但并不闪烁时,表明芯片运作正常,但接收不到信号,可对接收端芯片进行设置;当指示灯跳闪,即实现了接收端和发送端的互联。这样一来,当无线通信模块不能实现双向通信时,便可以很快知道其中原因,方便解决。NRF24L01芯片原理图如下图3-3所示:图3-3无线通信模块NRF24L01芯片模块原理图在图3-3中,引脚CE可用来外接RX或TX模式选择,引脚CSN可接SPI片选信号,引脚SCK可用来接SPI时钟,引脚MOSI是从SPI输入脚,引脚MISO是SPI输出脚,引脚IRQ是可屏蔽中断脚,引脚VDD可用来外接3.3V-5V电源,引脚VSS接地,引脚XC2是晶体振荡器2脚,引脚XC1可接外部时钟,引脚VDD-PA是电源输出脚,给RF的功率放大器提供+1.8V电源,引脚ANT1/2是天线1/2接口,引脚DVDD是去耦电路电源正极端接口。 3.4摄像头模块本部分采用的摄像头模块选用了OV2640型号的摄像头,该种类的摄像头模块体积较小,工作电压低,清晰度高。同时OV2640型号的摄像头内部是由SCCB接口进行控制,我们可以对SCCB接口进行编程,从而通过软件设置图像的平衡度。OmmiVision图像传感器应用独特的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、拖尾、浮散等,提高图像质量,能得到清晰的稳定图像。该摄像头模块可支持3V~5V范围的电压,支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹、自动黑电平校准等自动控制功能。同时支持色饱和度、色相、伽马、锐度等设置。支持图像缩放、平移和窗口设置。支持图像压缩,即可输出JPEG图像数据。自带嵌入式微处理器、集成有源晶振,无需外部提供时钟。集成LDO,仅需提供3.3V电源即可正常工作。OV2640芯片原理图如下图3-4所示:图3-4摄像头模块OV2640芯片原理图从图3-4可以看出,模块自带了1.3V和2.8V的稳压芯片,给OV2640供电,因此外部仅需提供3.3V电压即可;同时自带了一个12M的有源晶振,所以模块不需要外部提供时钟。OV2640摄像头模块通过一个2*9的排针同外部电路连接,GND是接地线,VCC3.3是3.3V电源输入脚,OV_SCL为SCCB时钟线(IN1)接口,OV_VSYNC是帧同步信号(OUT2)接口,OV_SDA为SCCB数据线(IN/OUT)接口,OV_HREF为行参考信号(OUT)接口,OV_D0~D7为数据线(OUT)接口,OV_RESET为复位信号(低电平有效)(IN)接口,OV_PCLK为像素时钟(OUT)接口,OV_PWDN为掉电模式使能(高电平有效)(IN)接口,NC未用到。3.5传感器模块3.5.1温湿度传感器模块本部分采用的温湿度模块选用了DHT11作为核心芯片的数字温湿度传感器,DHT11数字温湿度传感器是已校准数字信号输出的温湿度复合传感器。它有专用的数字模块采集技术和温湿度传感技术,确保产品具有可靠性与卓越的长期稳定性,成本低、相对湿度和温度测量、快响应、抗干扰能力强、信号传输距离长、数字信号输出、精确校准。传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。该温湿度传感器模块可支持3.3V~5V范围的电压,支持相对湿度和温度一体测量,全量程标定,且响应时间很短。DHT11芯片原理图如下图3-5(a)所示:图3-5(a)温湿度模块DHT11芯片原理图在图3-5(a)中,引脚VCC可用来外接3.3V-5V,GND可外接GND接口,D0小板开关数字量输出接口接单片机IO口。3.5.1烟雾传感器模块本部分采用的烟雾传感器模块选用了LM393、MQ135气体感应探头作为核心芯片,DHT11数字烟雾传感器是可调节灵敏度的复合传感器,内置具有信号输出指示灯指示,双路信号输出(模拟量输出及TTL电平输出),TTL输出有效信号为低电平,(输出低电平时信号灯亮,可接单片机IO口),气感探头的模拟量输出随浓度增加而增加,浓度越高电压越高,对烟雾气体具有很高的灵敏度,使用寿命长且稳定,能够快速的响应和恢复。烟雾传感器芯片原理图如下图3-5(b)所示:图3-5(b)烟雾传感器模块芯片原理图在图3-5(b)中,引脚VCC可用来外接电源正输入,DOUT为TTL电平信号输出接口,GND为电源负输入接口,Aout为模拟信号输出接口。3.6显示屏模块本部分的显示屏模块选用了DMTFT-28模组,一种2.8寸TFT彩屏,主要用液晶面板,触摸屏和转接板组成,转接板与液晶面板通过排线连接。转接板电路共分为FPC接口电路、触摸屏控制电路、IO扩展电路、TFT控制接口电路、背光电路及SD卡接口电路等。屏幕显示分辨率为240X320,可自由显示字符、汉字、图片,支持3.3V或5V,可由模组的液晶转接板进行设置。显示屏模块原理图如下图3-7所示:图3-6(a)液晶显示屏模块FPC接口电路原理图FPC接口电路是用于将液晶面板与转接板连接起来,连接方式采用焊接,该种方式可以得到最稳定的工作状态,如果需要卸载面板,则需要使用专业的拆除工具。图3-6(b)液晶显示屏模块触摸屏控制电路原理图在图3-6(b)中,引脚BUSY是转换状态信号接口,DOUT为串行数据输出接口,DIN为串行数据输入接口,DLCK为外部串行时钟输入接口,引脚CS是片选信号接口,VCC为电源输入接口,VBAT为电池监视输入接口,AUX为ADC辅助输入通道接口,引脚VREF是参考电压输入/出接口,PRNIRQ为笔接触中断引脚,IOVDD为数字电源输入接口。图3-6(c)液晶显示屏模块触摸屏IO扩展电路原理图在图3-6(c)中控制器的8位IO口与锁存器的D0~D7连接,锁存器的输出与TFT的高8位数据口连接,当写16位数据时,现将16位数据的高8位送到D10~D17,此时通过LE控制管脚将数据锁存到TFT的高8位数据口,然后16位数据的低8位送到D10~D17即完成数据送至TFT数据口工作。图3-6(c)液晶显示屏模块电源电路原理图液晶屏支持外接3.3V或者5V电源,板上集成AMS1117芯片,在图3-6(c)中,引脚VIN为输入电压脚,TFT面板本身只能在3.3V下工作,所以当输入电压VIN脚为5V时,必须让AMS1117-3.3这个IC工作,当输入VIN脚为3.3V时,则需要使用0欧姆电阻将J2短接,相当于不通过稳压芯片直接给模块供电,引脚VOUT为输出电压脚。第4章系统软件设计本章详细介绍了各个模块的软件设计流程以及部分源代码,包括温湿度传感器模块、摄像头模块与ATmega128芯片之间的软件程序,显示屏模块的程序,最终得以在显示屏上显示出温湿度,烟雾浓度以及我的班级,姓名和课题。4.1自动消防控制系统主程序流程在该系统中,首先对变量进行定义,其次利用调用函数对液晶、摄像头、接下来对这些模块的参数进行设置,利用While语句进行循环,将读取的温湿度,烟雾浓度以及我个人的信息在液晶屏上显示出来。主程序流程图如图4-1图4-1主程序流程图4.2温湿度传感器模块程序温湿度传感器模块是利用温湿度传感器检测风电机组内部从而判断机组内是否要发生火灾,该部分程序L4.1如下:L4.1.1程序清单:#include<string.h>…#defineuintunsignedint#defineData_IO PORTA#defineData_DDRDDRA(1)#defineD_LE0 PORTD&=~(1<<PD4)(2)#defineD_LE1PORTD|=(1<<PD4)(3)#defineW_LE0 PORTD&=~(1<<PD5)#defineW_LE1PORTD|=(1<<PD5)#defineDQ_IN DDRE&=~(1<<PE4) (4)#defineDQ_OUT DDRE|=(1<<PE4) #defineDQ_CLR PORTE&=~(1<<PE4) #defineDQ_SET PORTE|=(1<<PE4) #defineDQ_R PINE&(1<<PE4) (5)程序L4.1.1说明:L4.1.1(1):设置数码管寄存器L4.1.1(2):设置数码管段控制位为0,锁存端口数据L4.1.1(3):数码管段控制位为1,锁存器输出与端口一致L4.1.1(4):设置输入,DHT11接单片机PE4口L4.1.1(5):读电平L4.1.2程序清单:ucharkey;uinttemp_value;uinttemp,A1,A2,A3; (1)ucharflag1;uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};(2) voidsystem_init(){Data_IO=0xFF;Data_DDR=0xFF;PORTD=0xFF;(3)DDRD=0xFF;}(4)L4.1.2程序说明:L4.1.2(1):定义的变量,显示数据处理L4.1.2(2):IO端口初始化L4.1.2(3):定义DHT11的控制口,设置为输出L4.1.2(4):DHT11控制数码管动态扫描显示函数,显示采集到的温度L4.1.3程序清单:unsignedcharDS18B20_Reset(void){unsignedchari;DQ_OUT; DQ_CLR; ... delay_us(500); (1) if(i) … return(value);}Void_wriu8_byte(unsignedcharvalue) ...} delay_us(80); (2) value>>=1; } }(3)voidDHT11_start(void){ dht11_Reset(); dht11_write_byte(0xCC); dht11_write_byte(0x44); } DHT11_Reset(); dht11_write_byte(0xCC); dht11_write_byte(0xBE); (4) for(i=0;i<9;i++){... data_do(temp_value);(5)for(j=0;j<200;j++){ Display_DHT11(A1,A2,A3);}}L4.1.3程序说明:L4.1.3(1):延时500usL4.1.3(2):延时80msL4.1.3(3):启动dht111转换L4.1.3(4):得到温度L4.1.3(5):处理数据,得到要显示的值4.3摄像头模块程序摄像头模块是利用摄像头检测风电机组内部从而判断机组内是否发生火灾,该部分程序L4.2如下:L4.2.1程序说明:#include"sys.h"#include"delay.h"…#include"dma.h"(1)#defineOV2640_JPEG_WIDTH 1024 (2) #defineOV2640_JPEG_HEIGHT 768 (3)u8*ov2640_framebuf; externu8ov_frame; (4)L4.2.1程序说明:L4.2.1(1):设置头文件L4.2.1(2):设置拍照的宽度L4.2.1(3):设置拍照的高度L4.2.1(4):帧缓存L4.2.1程序说明:voidcamera_new_pathname(u8*pname,u8mode){ u8res; u16index=0; … if(res==FR_NO_FILE)break; (1) index++; }}voidov2640_speed_ctrl(void){ u8clkdiv,pclkdiv; (2) if(lcddev.width==240) { clkdiv=1; pclkdiv=28; … }(3) SCCB_WR_Reg(0XFF,0X00); SCCB_WR_Reg(0XD3,pclkdiv); (4) SCCB_WR_Reg(0XFF,0X01); SCCB_WR_Reg(0X11,clkdiv); (5)}L4.2.1程序说明:L4.2.2(1):OV2640速度控制L4.2.2(2):设置时钟分频系数和PCLK分频系数L4.2.2(3):2.8寸LEDL4.2.2(4):设置PCLK分频L4.2.2(5):设置CLK分频L4.2.3程序说明:u8ov2640_jpg_photo(u8*pname){ … u8*pbuf;(1) f_jpg=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); (2) if(f_jpg==NULL)return0XFF; OV2640_JPEG_Mode(); (3) OV2640_OutSize_Set(OV2640_JPEG_WIDTH,OV2640_JPEG_HEIGHT); SCCB_WR_Reg(0XFF,0X00); SCCB_WR_Reg(0XD3,30); SCCB_WR_Reg(0XFF,0X01); SCCB_WR_Reg(0X11,0X1); for(i=0;i<10;i++) (4) { while(OV2640_VSYNC==1); while(OV2640_VSYNC==0); } while(OV2640_VSYNC==1) (5) { … { printf("jpegdatasize:%d\r\n",jpeglen);(6) pbuf=(u8*)ov2640_framebuf; for(i=0;i<jpeglen;i++)(7) { if((pbuf[i]==0XFF)&&(pbuf[i+1]==0XD8))break; } if(i==jpeglen)res=0XFD;(8) else (9) { pbuf+=i;(10) res=f_write(f_jpg,pbuf,jpeglen-i,&bwr); if(bwr!=(jpeglen-i))res=0XFE; } }L4.2.3程序说明:L4.2.3(1):设置要保存的jpg照片路径+名字L4.2.3(2):开辟FIL字节的内存区域L4.2.3(3):内存申请失败后切换为JPEG模式L4.2.3(4):丢弃10帧,等待OV2640自动调节L4.2.3(5):开始采集jpeg数据L4.2.3(6):串口打印JPEG文件大小L4.2.3(7):查找0XFF,0XD8L4.2.3(8):找到了0XFF,0XD8L4.2.3(9):没找到0XFF,0XD8L4.2.3(10):偏移到0XFF,0XD8处L4.2.3程序说明:intmain(void){ … delay_init(); (1)NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);(2) uart_init(115200); (3) usmart_dev.init(72); (4) LED_Init(); (5) KEY_Init(); (6) LCD_Init(); (7) BEEP_Init(); (8) W25QXX_Init(); (9) my_mem_init(SRAMIN); (10) exfuns_init(); (11) f_mount(fs[0],"0:",1); (12) f_mount(fs[1],"1:",1); (13) POINT_COLOR=RED; while(font_init()) { … LCD_Fill(30,150,240,146,WHITE);(14) delay_ms(200); } L4.2.3程序说明:L4.2.3(1):延时函数初始化L4.2.3(2):设置中断优先级分组L4.2.3(3):串口初始化为115200L4.2.3(4):初始化USMART L4.2.3(5):初始化与LED连接的硬件接口L4.2.3(6):初始化按键L4.2.3(7):初始化LCDL4.2.3(8):蜂鸣器初始化L4.2.3(9):初始化W25Q128L4.2.3(10):初始化内部内存池L4.2.3(11):为fatfs相关变量申请内存L4.2.3(12):挂载SD卡L4.2.3(13):挂载FLASHL4.2.3(14):清除显示 4.4烟雾传感器模块程序烟雾传感器模块是利用烟雾传感器检测风电机组内部烟雾浓度从而判断机组内部是否发生火灾,该部分程序L4.3如下:#include<reg52.h> (1)#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^0; (2)sbitDOUT=P2^0; (3)voiddelay(){ucharm,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);(4)}voidmain(){ while(1) { delay(); if(DOUT==0) { LED=0; (5) } } }} L4.3程序说明:L4.3(1):定义库文件L4.3(2):定义单片机P1口的第1位(即P1.0)为指示端L4.3(3):定义单片机P2口的第1位(即P2.0)为传感器的输入端L4.3(3):延时程序L4.3(5):当浓度高于设定值时,执行条件函数,点亮p1.0口4.5显示屏模块程序对于主程序的显示屏模块,在其中调用了显示字符串函数,接下来对该程序进行描述,程序如L4.5L4.5.1程序清单:#include<stdio.h>#include<math.h>#include<avr/io.h>#include<avr/iom128.h>#define F_CPU 7372800 (1)#include<util/delay.h>#include<avr/pgmspace.h> (2)程序L4.5.1说明:L4.5.1(1):单片机主频为7.3728MHz,用于延时子程序L4.5.1(2):须增加的头文件,用来将数据存放在flashL4.5.2程序清单:#include"Config.h"#include"Ascii_8x16.h"(1)#include"Chinese.h"(2)#include"GB2424.h"(3)#include"TFT28.h"(4)#include"TFT28.c"(5)程序L4.5.2说明:L4.5.2(1):设置字符大小为8x16L4.5.2(2):16x16像素大小的汉字,这是提取到的点阵L4.5.2(3):24x24像素大小的汉字,这是提取到的点阵L4.5.2(4):设置TFT头文件L4.5.2(5):TFT操作初始化及函数L4.5.3程序清单:unsignedintDevice_code;externvoiddelayms(unsignedintcount); (1)voidGPIO_Init(){ TFT28_PORT=0xFF; (2) TFT28_DDR=0xFF; (3) … TFT28_RST_PORT|=(1<<TFT28_RST); (4) TFT28_RST_DDR|=(1<<TFT28_RST); (5)}程序L4.5.3说明:L4.5.3(1):初始化TFT触摸屏IO口子程序L4.5.3(2):LCD口全部拉高L4.5.3(3):设置LCD数据口为输出模式L4.5.3(4):LCD控制口初始化为高电平L4.5.3(5):LCD控制口初始化为输出模式本段程序是使LED闪烁一次,类似断点L4.5.4程序清单:voidLED_Light(){LED8=0x00; (1)delay_ms(500);LED8=0xFF; (2)delay_ms(500);}程序L4.5.4说明:L4.5.4(1):点亮LEDL4.5.4(2):熄灭LEDL4.5.5程序清单:intmain(void){uinti,y;Close_LED8(); (1)Close_iRed(); (2)Close_LED_Show(); GPIO_Init();(3)LED_Light();(4)Device_code=0x7789;TFT_Initial();(5)PORTD|=(1<<PD6);(6)程序L4.5.5说明:L4.5.5(1):关闭8个LED灯L4.5.5(2):关闭红外接收端的LED灯L4.5.5(3):系统初始化,设置IO口属性L4.5.5(4):LCD点亮一次,如有现象说明单片机初始化成功L4.5.5(5):初始化LCDL4.5.5(6):关闭蜂鸣器避免乱响L4.5.程序清单:while(1){CLR_Screen(Black);(1)LCD_PutString24(35,140,"基于AVR的风电机组自动消防系统的研究与设计",Yellow,Black);(2)delay_ms(200);LCD_PutString24(83,170,"基",Yellow,Black);delay_ms(100);…LCD_PutString24(131,170,"计",Yellow,Black);delay_ms(100);LCD_PutString(69,300,"2020.5.24",White,Black);(3)delay_ms(200);CLR_Screen(Black);for(y=0;y<10;y++){LCD_PutString(52,y*32,"17通信二龚平",White,Black);(4)delay_ms(20);}delay_ms(200);CLR_Screen(Black);for(y=0;y<10;y++){LCD_PutString(24,y*32,"指导老师:徐强",White,Black);(5)delay_ms(20);}delay_ms(200);(6)}程序L4.5.5说明:L4.5.5(1):背景色清屏L4.5.5(2):显示课题名称L4.5.5(3):字符显示日期L4.5.5(4):汉字显示班级姓名L4.5.5(5):汉字显示指导老师L4.5.5(6):持续一会儿
第5章系统仿真与调试5.1设计前期工作在确定了这个基于AVR风电机组自动消防控制系统的研究与设计的课题后,我为整个方案搭建了一个基本的框架,随后先了解了现在风电机组的消防标准,接着开始着手了解设计一个自动消防系统所需要的模块。查阅资料后,我了解到一个自动消防系统一般有无线通信模块,摄像头模块,温湿度传感器模块,烟雾传感器模块,液晶显示模块模块以及消防模块模块,于是我就去细致了解它们各自的运作原理,并学习如何让它们互联互通相互协作。当学到了一定的深度,我就对主芯片ATmega128以及需要的材料包括MQ135烟雾传感器、TFT彩屏、OV2640摄像头、NRF24L01无线通信芯片、DHT11温湿度传感器进行购买,随后开始实操起来,然后通过ATmega128芯片读取所需要的数据,将我的数据与个人信息在显示屏上显示出来,接着就是将需要用到的ATmegaStudio和AVRstudio软件进行安装。硬件实物图如图5-1所示:图5-1硬件实物图5.2系统仿真本次开发基于AVR的风电机组自动消防系统的设计的软件是ATmegaStudio和AVRstudio,对于该软件的安装,可在64位的WIN10系统电脑上安装。利用ATmegaStudio软件可以编写我需要的软件,然后通过AVRstudio将程序烧录到ATmega128芯片中,最后实现自动消防系统的各个功能。下图5-2为ATmegaStudio软件的操作页面:图5-2ATmegaStudio软件操作界面右键点击屏幕右侧的项目树,选择“properties”,选择“Toolchain”,点击“Directories”设置项目路径,如图5-3:图5-3ATmegaStudio项目路径设置界面在图5-3中,我们可以设置一些选项,比如芯片类型,main程序类型以及Debug选项。设置成功后生成Hex文件,打开AVRstudio将生成的Hex文件烧录到我们的ATmega128芯片当中,从而使ATmega128芯片能够离开电脑也实现我们的所需要的功能。当液晶屏上出现我们需要的数据时,则该部分调试成功。在AVRstudio烧录前,我们首先要设置烧录接口。JTAGICE接口连接好之后,打开电脑的任务管理器,看到端口为COM4,如图5-4:图5-4电脑设备管理器界面接着设置AVRstudio中的JTAGICE接口,需要把接口设置与电脑设备管理器中的一样。如图5-5:图5-5SelectAVRProgrammer界面将生成的Hex文件烧录到的ATmega128芯片当中,从而使ATmega128芯片能够离开电脑也实现我们的所需要的功能。当液晶屏上出现我们需要的数据时,则该部分调试成功。5.3硬件电路调试这一部分的调试主要是测试一下各个模块的功能是否可以正常实现。在单片机中,电源、复位和晶振这三个部分是构成单片机系统中最为重要的三个部分。在对ATmega128单片机的硬件调试中,我们首先要确认GND管脚与电源管脚之间的电压正常,接着我们要对晶振引脚和复位引脚进行测试,测试成功的话就没有问题了。对于系统的摄像头模块,我可以通过它对同一场景的连续图像采集,从而知道它是否能够实时检测风电机组内部的状态;其次对于温湿度传感器和烟雾传感器,我们可以将其放在不同的环境下进行对比测试,进而判断它的准确性;最后,倘若在2.8寸TFT彩屏上能够显示我们需要的数据以及我的个人信息,则调试成功。5.3.1温湿度传感器模块调试温湿度传感器是用于采集风电机组内部环境中的实际温度及湿度的实际数值,可以测量温度、湿度信息。且在本风电机组自动消防控制系统中,在最后要将温湿度在显示屏上显示出来。对于温湿度传感器的调试,第一步先打开电源,先用传感器测量室内的温度,接着在阳台进行测量,将采集到的多组数据进行对比,从而判断温湿度传感器模块是否检测成功,在不同场景采集到的数据如图5-6(a)和5-6(b)所示:图5-6(a)室内温湿度检测图5-6(b)室外温湿度检测在图5-6(a)和5-6(b)的图中,记录了温湿度的变化。为了更加清晰的进行对比,我将数据转换成了表格,如图表一:表5-1室内外温湿度值对比表温度湿度室内2440室外3245在表5-1中,清晰的记录了不同状态下的温湿度变化,由此可见,对于温湿度传感器模块的功能测试是成功的。5.3.2摄像头模块调试本系统的摄像头模块主要是用于对风电机组内部进行图像采集,而且能够实时监测风电机组内部的实时变化并通过图像的模式记录在SD卡中,最后通过ATmega128芯片处理图像信息并在2.8寸彩屏显示器上显示出来。本次对摄像头模块的调试,主要是观察该摄像头模块是否清晰,是否连续。对于本次测试,我选取的被测物体是一个水杯通过对水杯不断加水,从而判断摄像头模块的上述功能是否实现。实现结果如图5-7(a)到5-7(c)所示:图5-7(a)水瓶未注水图5-7(b)水瓶第一次注水图5-7(c)水瓶第二次注水5.3.3烟雾传感器模块调试温湿度传感器是用于采集风电机组内部环境中的实际烟雾浓度的实际数值,可以测量烟雾浓度信息。且在本风电机组自动消防控制系统中,在最后要将烟雾浓度在显示屏上显示出来。对于烟雾传感器的调试,第一步先打开电源,先用传感器测量室内的烟雾,接着在附近点上蚊香进行测量,当烟雾浓度高于设定值时,led灯闪烁。如图5-8所示:图5-8LED灯闪烁LED灯闪烁视为报警,烟雾浓度超出设定值可能风电机组内部已经发生了火情,监控室应当立即采取措施,该模块调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政程序的主要制度
- 2025年事业单位口腔考试题目及答案
- 蛋鸭养殖基地购销台账制度
- 2025年四川甘孜事业单位考试及答案
- 2025年山东3月份事业编考试及答案
- 2025年港中深本科笔试面试及答案
- 2025年南充事业编考试题答案
- 2025年山东东营护理事业编考试及答案
- 2025年铺警报名笔试及答案
- 落实工作责任,严格执行值班制度
- 2026年1月浙江省高考(首考)地理试题(含答案)
- 职高信息技术题目及答案
- 2026年各地高三语文1月联考文言文汇编(文言详解+挖空)
- 冰箱安装施工方案
- 急性失代偿性心力衰竭管理的研究进展2026
- 老年人摔伤后的长期护理计划
- 2026年黑龙江民族职业学院单招职业倾向性考试题库带答案详解
- 消防维保应急预案及措施
- 2026元旦主题班会:马年猜猜乐猜成语 (共130题)【课件】
- 2026年盘锦职业技术学院单招职业技能测试题库及参考答案详解一套
- 创伤中心多发伤患者的分诊时间管理策略
评论
0/150
提交评论