版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章概述1.1课题背景及意义当前,我国社会和工业的发展已经进入全新阶段,对化石燃料的使用和需求也进一步加大,这种情况已经促生越来越多的矿井将被建立,随着矿井不断的开采和使用,使井内的原料不断减少,同时也将会有越来越多的矿井出现废弃情况。与此同时,随着国内对油田不断开发和不断调整,直接导致长期停滞的油气井数量增加,即所占比例随之增加。以华北油田采油二厂为例:据资料显示,华北油田采油二厂共有880口井,其中331口井停产,其开井率为62%,油田现场不在井控要求内的长其停滞油井,则是分布在油田建设中的“不定时炸弹”。本文结合大庆油田开发区、居民居住区的废弃油气井可能出现的不安全因素及其可能出现的对环境污染的实际情况,对基于单片机的油井井口智能监测报警装置进行阐述说明。在油田中的废弃油井中存在诸多有毒有害气体,比较常见的有毒有害气体,例如:甲烷气体(化学式为CH4)、一氧化碳(化学式为CO)、硫化氢(化学式为H2S)、二氧化氮气体(化学式为NO2)、氨气(化学式为NH3)等气体。由于废弃油井不在具有利用价值,因此人们经常忽略对废弃油井的管理,由于管理的疏松与欠缺具有极大的可能会引起一系列的环境问题和安全问题,从而对人们的生产、生活造成极大的影响。因此,在废弃油井井口放置一款可以实时监控井口温度大小、是否有有害气体及其可燃气体生成并且可以及时报警的智能监测报警装置至关重要。在居民区、采油井井场的废弃油井上安装该装置,不仅可以推进小区、油气田的智能化进程,同时更可以为智能化小区的建设和工业数字化生产即(工业4.0)注入新的动力、生机和方向。该装置的投入使用,可以及时的发现油井井口是否出现异常情况发生,对环境的保护具有重要的价值和现实意义。此装置将在废弃油井动态监测中扮演重要的角色,其利用将成为重要趋势。1.2国内外研究现状目前,国内外对油井的实时监测及其控制分布主要在油井的生产过程,例如气井井口设备数字化集成及智能控制技术。气井井口设备数字化集成及智能控制技术为一套可以在前端对井口所有设备数据进行采集,并对采集的数据进行就地分析控制的智能控制系统,该系统取用满足气井全生命周期排水采气所需求的RTU,同时将现有井场气井井口所有的标准化仪表和排采设备的数据进行采集、远距离传输通信及供电系统统一纳入此检测系统,并根据油气田的特性对嵌入式程序进行编制的技术[1]。气田井口智能高效电加热装置的应用:该装置是专门为满足气田特殊需求而特制的加热设备。此装置可以改变气田井口气加热常采用天然气燃烧的火筒水套炉的方式。此装置通过接触器实现启动与停止的控制,当水浴的温度超过某一个设定的数值时,电加热器停止运行,当水浴温度低于某一个设定数值时,电加热器则自动启动并运行[2]。高效智能化的电力加热设备对天然气进行加热时,天然气被加热的温度要被控制在设计时要求的波动区间之内,天然气出口温度误差要控制在±1℃,设备通过对加热器分组化、智能化投放的方法和高效绝热保温等举措,使综合热效率超过92%,符合国务院国发〔2012〕40号印发《节能减排“十二五”规划》中综合能耗节能指标要求[3]。基于ARM和无线网络技术的潜油泵远程监控保护系统:该系统的设计以对潜油电泵在深井、高温环境以及长期连续工作为背景,由于潜油电泵在井下工作时非常容易出现故障、油井分散、现场数据返回不及时的现象,从而导致故障发生且不能及时地预测、报警和处理等一系列的问题[4],由此所研制的保护系统装置。油井系统效率在线监测研究与应用技术:由于长庆油田具有较为完善的计算机网络系统,该项技术已经在长庆油田开展系统性测试和相关研究。该技术与传统的抽油机系统在效率、智能等方面进行对比分析得出,该项技术的研究与应用有效的解决了在传统的测试系统中测试代表性差、随机性强、工作量大以及间隔周期长等相关问题,该技术对油田高效利用、合理开发以及管理水平的提升具有积极的促进作用,并且具有广泛的应用前景及其实际意义价值[5]。油井热洗监测装置:该装置由两硬件系统部分组成,分别为温度测量装置、温度记录仪,设备中的温度检测装置可以深入石油开采树四通内部,使所测量的温度实现高精度检测。油井中采出液体温度大小通过温度记录仪进行记录,该设备可以将所检测的温度实时记录,同时可以将数据下载并保存在office软件中,方便工作人员对所测量的数据进行分析。该装置不仅可以准确的反应油井热洗过程及其热洗质量,还可以为相关技术部门提供更为准确的信息[6]。除上文所述装置技术外,还有柱塞气举井口智能捕捉柱塞装置、苏里格油气田智能井口智能控制装置、井口智能防盗装置和井口自动监测液面技术及其井口智能间歇抽油技术、全电动井下流体控制技术等。综上所述,截止目前还尚且没有任何一款针对废油气田的井口温度监测、可燃气体浓度监测及有害气体监测的智能监测装置。1.3本文主要内容及其前景本文对油井井口智能监测报警装置的软件系统部分和硬件电路结构部分进行设计分析,对MQ-2烟雾传感器模块(此设计模拟监测有害气体监测)、MQ-7传感器模块(此设计模拟监测可燃气体)、DS18B20温度传感器模块,LCD1602A显示屏和蜂鸣器蜂鸣报警模块、ESP8622无线网络数据传输模块以及51单片机系统进行深度探究,利用AltiumDesigner对系统原理图进行绘制[7],利用C语言对控制程序进行编写、利用word对程序框图及其流程图进行建立,利用Keil将对应程序烧入51单片机,焊接电路,最后对本设计实体装置进行功能调试及问题分析;通过本次设计的装置实现井口的温度、可燃气体浓度数据实时检测,判断是否产生有害气体,当温度、可燃气体浓度达到相对应的阀值以及井口产生有害气体时执行蜂鸣报警器报警,LCD显示屏显示当前温度和可燃气体浓度,此时,ESP8266无线传输模块将在该状态下监测到的动态数据上传至通过HBulider制作的手机软件中,该软件每3s刷新记录数据一次,软件中对所监测到的温度、可燃气体浓度进行曲线绘制,从而实现废油气井井口监测数据量的动态监控。该装置为结合当前对油田及居民区废油气井管理疏忽的实际状况所提出的一种油井井口智能检测报警装置,该装置造价低、性价比高、性能优良、管理方便,具有在油田废弃油井和居民区废弃油井中广泛的推广价值和使用空间,具有良好的现实意义。
第2章硬件系统设计2.1总体方案设计本设计从软件系统和硬件电路及结构两部分对设计整体进行分析,对MQ-2烟雾传感器模块、MQ-7一氧化碳传感器模块、DS18B20温度传感器模块,LCD1602a显示屏和蜂鸣器模块[8]、ESP8622无线网络数据传输模块以及51单片机系统进行深度探究,本设计采用AltiumDesigner软件对所涉及系统原理图进行绘制,采用C语言对程序进行编写及其控制、word对流程图进行建立,利用Keil将对应程序烧入51单片机,焊接电路。最后对本设计的实体装置进行功能调试及问题分析;本设计实现井口的温度、可燃气体浓度数据实时检测,并判断是否产生有害气体,当温度、可燃气体浓度达到相对应的阀值以及井口产生有害气体时执行蜂鸣报警器报警,LCD显示屏显示当前温度和可燃气体浓度,所测量的数据通过ESP8266模块将所监测动态数据上传至手机APP,方便现场员工对数据监测,同时所测得的数据将通过曲线图的形式直观的呈现在手机APP中,方便员工对废弃井井口的数据状态走向进行直观观察与分析。系统主结构电路连接图如图2-1所示图2-1系统主结构电路图2.2主控芯片模块本设计以STC12C5A08S2芯片作为中心控制芯片,此芯片的机器周期时单一的机器周期,具有快速运行、低能耗、反干扰能力强大等特点。该单片机指令与STC89C52单片机完全兼容,52系列单片机执行速度的8倍至12倍是该款单片机的执行速度。单片机内部由MAX810专用复位电路、2路PWM、8路高速10位A/D转换集成,工作电压为3.5V-5.5V,工作频率为0-35MHz,芯片上集成12820字节的RAM,用户应用的程序空间为8K/16K/20K/32K等字节[9]。系统主控芯片图如图2-2所示:a)主控芯片原理图b)主控芯片实物图图2-2系统主控芯片图2.2.1内部结构STC12C5A08S2单片机中具有的模块有程序存储器、中央处理器和数据存储器及定时/计数器、UART串口和串口2、I/O接口和高速AD转换模块、SPI接口、看门狗定时器及片内RC振荡器、外部的晶体振荡电路模块等[10]。MCU的内部结构如图2-3所示:RAM256字节RAM256字节RAM地址寄存器AUX-RAM1024字节ACCBACCB寄存器堆栈指针堆栈指针定时器0/1TMP2TMP1定时器0/1TMP2TMP1串口1串口1ALUALU串口2串口2WDTPSWWDTPSWLLVD/LVRPort0,2Port0,2,3,4,5锁存器Port1锁存器Port1锁存器ControlUnit RESETPort1驱动器ADCPort1驱动器Port0,2,3,4,5驱动器XTL1Port0,2,3,4,5驱动器 8 P1.0-P1.7P1.0-P1.7 P0,P2,P3,P4,P5图2-3芯片内部结构图2.2.2应用系统对于STC12C5A08S2的复位电路:当时钟频率低于12MHz时,在此状态下电容器C1,电阻R1可以不通过1K的电阻与地端相连接,当时钟频率高于12MHz时,在此状态下采用第二复位功能引脚最佳[11]。关于单片机晶振电路阐述:当单片机外部时钟频率高于33MHz时,可以直接采用外部有源晶振[12],XTAL1和XTAL2两引脚需要浮空。晶体的基本频率为高于27MHz的频率,三泛音晶体在该状态下不被使用。外部有源晶振部分被直接使用时,时钟从XTAL1脚输入,且XTAL2脚须在浮空状态[13]。MCU芯片应用系统如图2-4所示:图2-4芯片应用系统图2.2.3STC12C5A08S2时钟STC12C5A08S2是具有内部R/C振荡时钟和外部晶体时钟两个时钟源的单片机控制系统。对于5V单片机而言,常温下芯片内部的R/C振荡器的频率为11MHz-17MHz,对于3V单片机而言,常温下其芯片内部频率为8MHz-12MHz。与此同时,伴随着温度的变化,单片机板内部的R/C振荡器的频率会出现温飘现象,由于制造时存在制造误差,因此内部R/C振荡器仅仅适用于对时钟频率要求不高度敏感的场合[14]。外部晶振被省略当单片机工作在内部时钟频率时,XTAL1/XTAL2两个接口这时悬空。对时序要求高或连续通信的电路中,内部时钟源会造成比较大偏差而不被使用。在电路通电初始化程序时,通过读取内部RAM单元(FCH,FDH,FEH,FFH连续的单元)的数值获得STC12C5A08S2单片机出厂时内部R/C振荡器频率(内部时钟频率),通过读取内部RAM单元(F8H,F9H,FAH,FBH连续的单元)数值来获得用户最后一次使用本单片机时内部R/C振荡器时钟下载程序时的频率(内部时钟频率),运用“MOV@Ri”指令来读前面RAM单元数值[15]。众所周知,机器在油田油井井口投入运行的过程中,节能环保性能至关重要,同时节能性能亦是对设备性能优良评估的指标之一,对于时钟而言,降低时钟对系统的功耗,可以采用将时钟分频的方式,即对时钟进行分频处理。时钟分频可以采用时钟分频控制寄存器CLK_DIV对时钟进行分频处理,另单片机系统在较低频率下完成工作,达到节能的目的。时钟分频寄存器CLK_DIV各位的定义如表2-5所示:表2-5CLK_DIV位定义表SFRNameSFRAddressBitB7B6B5B4B3B2B1B0CLK_DIV97HName—————CLKS2CLKS1CLKS0分频后的CPU实际工作时钟与CLKS2、CLKS1、CLKS0的关系如表2-6所示:表2-6分频后CPU工作表CLKS2CLKS1CLKS0分频后CPU的实际工作时钟000外晶体时钟或内R/C振荡时钟001(外晶体时钟或内R/C振荡时钟)/2010(外晶体时钟或内R/C振荡时钟)/4011(外晶体时钟或内R/C振荡时钟)/8100(外晶体时钟或内R/C振荡时钟)/16101(外晶体时钟或内R/C振荡时钟)/32110(外晶体时钟或内R/C振荡时钟)/64111(外晶体时钟或内R/C振荡时钟)/128STC12C5A08S2时钟结构图如图2-7所示:不分频不分频000÷2÷2001÷÷4010÷8内部R/C震荡时钟 ÷8 外部晶体或时钟 011 系统时钟SYSclk÷16 (至单片机及其外围备)÷16100÷÷32101÷÷64110÷÷128111CLKS2,CLKS1,CLKS0图2-7时钟结构图2.2.4掉电/停机模式PD/PCON.1置1时,MCU将进入掉电模式,在进入该模式后,内部时钟振动停止。由于此时没有时钟源,所以只有外部中断继续工作,若低压检测电路可以产生中断,代表该部分可以继续工作,反之将停止。该模式下,所有I/O口、SFRs维持进入掉电模式前那一刻的状态并保持不变,可以把中央处理器从掉电模式唤醒的外部管脚有以下几个外部管脚[16]:(INT0)’/P3.2,(INT1)’/P3.3,(INT)’/T0/P3.4,(INT)’/T1/P3.5,(INT)’/RxD/P3.0。除此之外,外部复位也将MCU从停电模式下唤醒,唤醒后的MCU将从用户程序的0000H处开始正常工作运行。在用户系统没有外部中断源将STC12C5A08S2单片机从停电模式唤醒时,可以用如图2-8唤醒电路对掉电模式进行唤醒。I/O INTx 300ΩII 0.1μF C1 5MΩR1放电电阻该I/O口控制充电图2-8唤醒电路图2.2.5复位STC12C5A08S2单片机芯片有5种复位方式:分别为外部RST引脚复位、外部低压检测复位、软件复位、掉/上电复位及其看门狗复位五种复位方式[17]。1)外部RST引脚复位:单片机外部向RST引脚添加复位脉冲从而使其复位的方式。在出厂时,P4.7/RST管脚设定置为RST复位管脚,如果需要将其设置为I/O管脚口,则需在STC-ISP编程器中进行相关设置才可完成,若未被设置I/O口[18],则P4.7/RST管脚为芯片复位输入管脚端口。2)外部低电压检测复位:本复位功能在单片机运行时可以不采用,本复位为低于1.33V且可以通过2个电阻进行分压实现外部可调的门槛电压复位[19],用户可将P4.6管脚设置为第二幅为引脚,当时钟频率大于12赫兹时,启用本复位并利用增加的外部低压检测LVD功能作外部低压检测复位脚[20]。电路如图2-9所示:图2-9复位功能电路与低电压检测有关的寄存器有电源控制寄存器、中断允许寄存器、高位中断优先级控制寄存器和低位中断优先级控制寄存器[21]。PCON寄存器表如表2-10所示:表2-10PCON寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0PCON87HnameSMODSMOD0LVDFPOFGF1GF0PDIDLIE寄存器表如表2-11所示:表2-11IE寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0IEA8HnameEAELVDEADCESET1EX1ET0EX0IPH寄存器表如表2-12所示:表2-12IPH寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0IPHB7HnamePPCAHPLVDHPADCHPSHPT1HPX1HPT0HPX0HIP寄存器表如表2-13所示:表2-13IP寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0IEB8HnamePPCAPLVDPADCPSPT1PX1PT0PX03)软件复位:当程序在运行的过程且有特殊要求时需要实现单片机的软件复位,STC12C5A08S2单片机IAP_CONTR特殊功能寄存器,当对IAP_CONTR特殊功能寄存器中的SWBS/SWRST两位即可对软件复位进行控制[22]。IAP_CONTR:ISP/IAP控制寄存器相关表示如表2-14所示:表2-14ISP/IAP控制寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0IAP_CONTRC7HnameIAPENSWBSSWRETCMD_FAIL—WT2WT1WT04)上/掉电复位:在电源电压小于上电复位电路的门槛检测电压时,所有的逻辑电路复位;电源电压恢复正常时,延在迟32768个时钟后,上电/掉电复位结束;当电路进入掉电模式时,上电/掉电复位功能全部关闭[23]。5)看门狗复位:在工业控制领域中,为防止系统异常时受到干扰,MCU/CPU程序跑飞,使致系统长时间异常工作,此时通常引入看门狗复位计时器,如果MCU/CPU不在规定的时间内并且按要求访问看门狗时,则认为MCU/CPU异常,看门狗则会强迫MCU/CPU复位,使系统重新开始,并按规律执行用户程序[24]。WDT_CONTR:看门狗计时控制寄存器相关表示如表2-15所示:表2-15看门狗控制寄存器表SFRnameAddressbitB7B6B5B4B3B2B1B0WDT_CONTR0C1HnameWDT_FLAG—EN_WDTCLR_WDTIDLE_WDTPS2PS1PS0看门狗定时器预分频数值表如表2-16所示:表2-16预分频数值表PS2PS1PS0Pre-scale预分频WDToverflowTime@20MHz000239.3mS001478.6mS0108157.3mS01116314.6mS10032629.1mS101641.25S1101282.5S1112565S说明:看门狗溢出时间=(12*Pre-scale*32768)/Oscillatorfrequency例如:时钟频率为12MHz,看门狗计时器分频数值相关表示如表2-17所示:表2-17时钟为12MHz看门狗分频数值表PS2PS1PS0Pre-scale预分频WDToverflowTime@20MHz000265.5mS0014131.0mS0108262.1mS01116524.2mS100321.0485S101642.0971S1101284.1943S1112568.3886S2.3温度传感器模块本次设计温度感应模块采用DS18B20温度传感器模块,DS18B20温度传感器是一个无需外部器件的且每个器件都有唯一一个64位序列号,且存储在内部存储器中的简单多点分布式测温应用传感器[25]。此温度传感器是一个独特且具有单接线口的仅需一个引脚进行通信的传感器,其供电范围为3.0V-5.5V,温度范围为-55~+125℃,温度计分辨率可以选择为9到12位且最多可以再750ms内将温度转化成12位数字等特点[26]。DS18B20引脚排列图如图2-18所示: a)b)图2-18DS18B20引脚排列图引脚说明表如表2-19所示:表2-19引脚说明表1GND接地2DQ数据输入、输出引脚。对于单线操作时,漏极开路。当其工作在寄生电源模式时用于提供电源3VDD可选择的VDD引脚。当工作在寄生电源模式时,本引脚需接地1NC无任何链接DS18B20温度传感器各个引脚的对地电压为-0.5V~+0.6V,其工作温度为-55℃~+125℃,储存温度为-55℃~+125℃[27]。DS18B20温度传感器内部线路方框图如图2-20所示:4.7KDs18b20存储器和控制逻辑6Ds18b20存储器和控制逻辑64位ROM和单总线端口 DQ暂存器暂存器温度传感器温度传感器上限触发TH上限触发TH温度传感器温度传感器温度传感器电源探测温度传感器电源探测温度传感器VDD温度传感器图2-20温度传感器内部线路方框图DS18B20的功能指令为总线控制器发给想要与其连接的温度传感器一条ROM指令,随后即可发送一条DS18B20功能指令,此命令允许总线控制器读写温度控制器的暂存器,并发生温度转换和识别电源模式,其中,功能指令包括温度转换指令、写暂存器指令、读暂存器指令、拷贝暂存器指令、召回EEPROM指令、读电源模式指令等[28]。DS18B20原理图如图2-21所示:图2-21DS18B20原理图2.4MQ7传感器模块MQ7传感器是具有双路信号输出,且具有信号输出指示的模拟量输出0~5V电压的一氧化碳传感器检测装置,本次设计以一氧化碳检测传感器模拟油田或居民区废弃油井井口的可燃性气体,例如:一氧化碳、甲烷、乙炔等气体。其对一氧化碳具有监测灵敏度高、选择性好的特点,其有效信号为低电平,即当输出低电平的信号灯亮时,可以与单片机直接连接[29],具有寿命长、稳定且可靠的有点。MQ7传感器原理图如图2-22所示:图2-22MQ7传感器原理图2.5MQ2传感器模块MQ2传感器模块是具有模拟量输出、TTL电平输出双信号输出通道的具有信号输出指示的烟雾传感器,本次设计以烟雾检测传感器模拟油田或居民区废弃油井井口的有害气体,例如:硫化氢、氮氧化物、硫氧化物等气体。该模块的模拟量输出电压为0~5V,工作电压为5V直流电,当烟雾浓度越高时电压越高。该装置输出低电平时,信号灯亮起并可以与单片机直接相连接。此传感器具有响应快速恢复性能,不仅寿命长、稳定性好,而且可靠性高。其电路原理图同MQ7相同,下图2-23所示:图2-23MQ2传感器原理图MQ2硬件实物图如图2-24所示:图2-24MQ2硬件实物图2.6ADC0809模块本次对油井井口智能检测报警装置的设计中,MQ2、MQ7两传感器模块搭载ADC0809模/数转换硬件电路,本模块将对模拟信号进行识别处理转换成数字信号。该模块A/D转换器为8路8位,且分辨率为8位,该模块不仅单电源供电,且转换时间为100μs,同时具有转换启停控制端,其模拟输入电压不需要进行零点校正和满刻度校准[30],装置工作在-40~+85℃的环境中,功耗可以低至15mW。模块可以与单片机相连接协同工作,亦可以单独进行工作。芯片外部是采用双列直插式封装结构,且具有28条功能引脚。ADC0809转换器内部结构逻辑图如图2-25所示:8路模拟量开关 STCLK8路模拟量开关 IN0 EOC IN1三态输出锁存器8路A/D三态输出锁存器8路A/D转换器 IN3 D0 IN4 D1 IN5 D2 IN6 D3 IN7 D4 D5地址锁存与译码器 D6地址锁存与译码器 A D7 B C VREF(+)VREF(-) OE ALE图2-25AD转换内部结构逻辑图ADC0809数据转换模块实物图如图2-26所示:图2-26ADC0809实物图2.7无线传输模块本次设计采用的无线传输方式对油井井口监测到的温度、可燃气体和有害气体进行实时数据传输,本模块与手机app进行连接,使工作人员可以直观的对废油气井井口所测量的相关数据进行监测。ESP8266无线传输模块具有高性能的无线soc,成本低且实用性强。此模块可以独立运行,也可以作为slave搭载在不同的Host上运行,还可以直接从外接闪存中启动,模块内部拥有高速缓冲存储器,本存储器对系统性能的提高有利且可以减少对内存的需求[31]。于模块片上,可以令其通过GPIO口对传感器进行集成和集成其他应用的特定设备,实现了最低的前期开发和在运行中最少的占用系统资源[32]。电源管理转换器、天线开关都置于模块片内,在几乎不需外电路条件下,可以将包括前端模块在内的整个系统解决方案占有的PCB空间降到最低[33]。ESP8266结构图如图2-27所示:接口MAC数字基带模拟接收射频接收开关射频balun接口MAC数字基带模拟接收射频接收开关射频balunSDIO寄存器SDIO寄存器SPICPU内核模拟发射SPICPU内核模拟发射射频发射GPIO成帧器GPIO成帧器锁相环1/2V锁相环1/2VOC锁相环I2C加速器I2C加速器电源管理SRAM电源管理SRAM晶振偏置电路偏置电路偏置电路偏置电路电源管理图2-27ESP8266结构图本模块灵敏度高,在3.3V电压、80mA电流、-40℃~125℃环境中工作,常温下储存。ESP8266管脚定义图如图2-28、管脚功能表如表2-29所示:图2-28ESP8266管脚定义图表2-29ESP8266管脚功能定义表PinNameFunction1VDDA本引脚为模拟电源为3.0~3.3V2LNA本引脚为射频天线接口,其芯片输出阻抗为50欧姆,不需要对芯片进行匹配,保留π型匹配网络与天线进行匹配3VDD3P3本引脚功放电源为3.0~3.3V4VDD3P3本引脚功放电源为3.0~3.3V5VDD_RTCNC(1.1V)6TOUTADC管脚7CHIP_EN本引脚为芯片使能端。输入高电平有效,芯片正常工作;输入低电平芯片关闭,电流小。8XPD_DCDCDeep-SleepWakeup;GPIO169MTMSGPIO14;HSPICLK10MTDIGPIO12;HSPIQ11VDDPST本引脚为数字和IO电源(电压工作范围为1.8V~3.3V)12MTCKGPIO13;HSPID13MTDOGPIO15;HSPICS14GPIO2本引脚可以用作于对Flash烧写时的URTTx端;GPIO215GPIO0GPIO0;SPICS216GPIO4GPIO417VDDPST本引脚为数字和IO电源(电压工作范围为1.8V~3.3V)18SDIO_DATA_2本引脚连接到SD_D2(与200Ω电阻串联);SPIHD;HSPIHD19SDIO_DATA_3本引脚连接到SD_D3(与200Ω电阻串联);SPIWP;HSPIWP20SDIO_CMD本引脚连接到SD_CMD(与200Ω电阻串联);SPICS021SDIO_CLK本引脚连接到SD_CLK(与200Ω电阻串联);SPICLK续表2-29PinNameFunction22SDIO_DATA_0本引脚连接到SD_D0(与200Ω电阻串联);SPIQ23SDIO_DATA_1本引脚连接到SD_D1(与200Ω电阻串联);SPID24GPIO5GPIO525U0RXD本引脚可以用作于对Flash烧写时的URTTx端;GPIO326U0TXDGPIO1;SPICS127XTAL_OUT本引脚连接晶振电路输出端,可用于对BT提供时钟输入28XTAL_IN本引脚连接晶振电路输入端29VDDD本引脚为模拟电源为3.0~3.3V30VDDA本引脚为模拟电源为3.0~3.3V31RES12K本引脚串联12kΩ电阻到地端32EXT_RSTB外部RESET信号(电平为低电平时有效)备注:当构成3bit可进行对SDIO模式选择的管脚有GPIO2/GPIO0/MDTO。2.8报警模块及按键本设计蜂鸣器选取有源蜂鸣器,蜂鸣器以电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声为原理,需要一定电流方可驱动,由于单片机I/O引脚输出的电流较小,而单片机上输出的TTL电平不足以驱动蜂鸣器,因此需要增加电流放大的电路[34]。本设计中的蜂鸣电路通过三极管C8550对电流进行放大处理来以实现蜂鸣器驱动。蜂鸣报警电路图如图2-30所示:图2-30蜂鸣报警电路图本系统按键电路如图2-31所示:按键电路原理图b)按键电路实物图图2-31系统按键电路本按键电路设定P25按键为系统下调模式控制键,P26为温度控制键,P27为MQ7传感器阈值控制键。系统控制过程:1)按压系统复位键,按压P27按键实现温度监测上调,按压P26键实现可燃气体浓度监测阈值上调,连续按键可对阈值连续上调。2)按压系统复位键,按压P25键控制此时电路处于阈值下调模式,压P27按键实现温度监测下调,按压P26键实现可燃气体浓度监测阈值下调,连续按键可对阈值连续下调。2.91602A液晶显示本设计显示屏幕采用LCD1602A显示屏,此显示屏由字符型液晶显示屏(LCD)、控制驱动主电路HD44780、扩展驱动电路HD44100、少量电阻、电容元件和结构件等器件封装而成[35]。1602A外形尺寸如图2-32所示:图2-321602A外形尺寸图1602A控制器内部时带有80字节的RAM缓冲区域,内部逻辑图如图2-33所示:LCDLCD16字节*2行000101030405060708090A0B0C0D0E0F10…27404142434445464748494A4B4C4D4E4F50…67图2-33内部逻辑图2.10供电模块本设计供电模块采用18650供电电池配合18650供电槽对单片机电路进行全局供电,设计中运用3.7V、4800mWh的18650锂离子电池,该电池具有质地较轻、大容量等特点,同时具有很低自动放电率且可以循环利用、不存在记忆效应的优势。该电池安全、内部电阻小、寿命长、使用广泛,还可以提供相对于一般电池不能提供的较高电压。18650电池如图2-34所示:图2-3418650电池图该设计运用的电池槽为支持3V/1A和5V/2.2A两个电压输出的且最大输出电流为3A的18650电池槽,为了保护装置的寿命,减少模块损坏,提高利用价值,实际使用中要尽量避免使用极限电流。该供电槽支持USB充电和Typec充电两种充电模式,方便为槽内电池充电,具有当电力系统意外停电时,电池组可以继续为设备供电的优势。该电池槽可以输出3V和5V两种电压,为不同电压需求的装置提供供电可能,模块中还具有开关机控制,当开关拨动到NOMAL模式时,输出的电流低于30mA,持续约10秒钟会则会自动停止,转为待机模式。当开关拨动到HOLD模式的时候,会处于开启状态。供电槽如图2-35所示:图2-35供电槽图2.11本章小结本章节对本次设计电路进行深入探究,详细的对本次设计所需要的硬件元件STC12C5A60S2单片机、MQ2监测烟雾传感器、MQ7监测一氧化碳传感器、DS18B20温度监测传感器、ESP8266WIFI模块、蜂鸣报警模块和LCD1602A显示器显示模块等进行所需功能介绍[36],系统性分析了不同种器件在不同种环境下的适用范围及其使用条件、特点等。本设计运用以上硬件进行实物设计焊接,设计出所需功能的油井井口智能监测报警装置,该装置具有实际的现场应用价值,不仅可以安装在油田废弃的油气矿井井口对井口是否有异常情况进行实时监测,还可以安置于居民区对居民区内废弃油井进行监控,以防止油井井口出现异常溢出有害气体甚至发生矿井事故对人们生活造成影响。该装置在油田和居民小区废油气井井口安装此装置具有重要价值,以其成本低、可靠性高、性能优异等优势,具有良好的推广价值。
第3章软件系统设计3.1软件设计本系统通过C语言对程序进行编写,通过Keil对程序指令进行调控编译,运算指令正确无误后将主程序生成HEX文件并烧入单片机,烧入完成后测试单片机运行是否正常运行。通过STC12C5A08S2对温度传感器模块、气体传感器模块、蜂鸣报警模块以及无线网络传输模块进行控制,本次设计系统流程图如图3-1所示:5151单片机MQ7一氧化碳传感器MMQ7一氧化碳传感器MQ2烟雾传感器Ds18b20温度传感器Ds18b20温度传感器蜂鸣器WIFIWIFI无线传输模块LCD1602aLCD1602a显示屏手机手机图3-1系统流程图本设计通过LCD1602A显示屏对当前环境实时监测到的温度及设定的阈值温度进行显示、对当前环境下可燃气体浓度及其设定的可燃气体阈值进行显示,当温度和可燃气体在当前环境下的动态检测值到达设定阈值时(可燃气体模块指示灯闪烁),蜂鸣报警器进行蜂鸣报警;当烟雾传感器监测到当前环境中存在有害气体时,烟雾传感模块指示灯闪烁,同时蜂鸣器进行报警。通过ESP8266无线数据模块,将当前环境下监测到的实时可燃气体浓度、温度、有无有无有害气体产生及其是否报警在手机app端显示,当可燃气体浓度或温度超过设定阈值或有有害气体产生,app的报警对话框显示报警,并通过对话框提醒工作人员此时废油气井井口出现异常,需要处理。同时在手机app中可看见几月几日几时几分几秒废油气井井口出现的异常。手机app端可以将所监测的温度和气体浓度通过曲线绘制出,直观展示当前环境下废油气井井口温度及可燃气体浓度变化规律,便于直观分析。本次设计程序控制流程图如图3-2所示:开始开始程序初始化程序初始化MQ7数值获取MQ7数值获取MQ2数值获取 N NMQ2数值获取温度数值获取 温度数值获取 是否有烟雾/有害气体产生? 是否有烟雾/有害气体产生?LCDLCD显示是否超过预设极限数值?是否超过预设极限数值? Y蜂鸣器报警 Y蜂鸣器报警是否到数据采集时间?是否到数据采集时间? N YWIFIWIFI数据传输图3-2程序控制流程图3.2主控芯片模块软件设计本次设计采用STC12C5A08S2对温度传感器模块、气体传感器模块、蜂鸣报警模块以及无线网络传输模块进行控制,在KEIL软件中运用C语言编写主程序并对主程序编译检测是否有错误,主程序编译结果如图3-3所示:图3-3主程序编译结果图编辑的主程序在KEIL中仿真结果如图3-4所示:图3-4仿真结果图本次设计的油井井口智能监测报警装置编辑输入单片机对整体系统进行控制的主程序如下:#include"stc12c5a60s2.h"#definestc_1Tsbitkeys=P2^5;sbitkey1=P2^6;sbitkey2=P2^7;sbitled=P1^2;sbitbeep=P1^2;#defineBeepbeepsbitjdq=P1^3;#include"header.h"vu8mq7,temp;sbitmq2=P1^6;vu8flag=0;voidmain(void)//切换界面才进行保存{ vu16i,j,k;LCD_Init();//液晶初始化 Usart_Config(1);//串口1初始化 Timer0_Init();//定时器0初始化 #ifdefstc_1T Usart_Config(2);//串口1初始化 #endif SysRead((u8*)&sys[0],4);//系统读取参数 while(1){ mq7=GetADCResult(3)/(1024.0/99.0); temp=DS18B20_GetTemp()/10.0; display2(mq7,temp,&sys[0],&sys[1]); if((mq7>sys[0])||(temp>sys[1])||(mq2==0)) { flag=1; Beep=~Beep; } else { flag=0; Beep=1; } delayms(100); k++; if(k>12) { k=0; sendchar(1,'S'); sendchar(1,'0'); sendchar(1,'1'); sendchar(1,'5'); sendchar(1,flag+48); sendchar(1,','); sendchar(1,mq7/10+48); sendchar(1,mq7%10+48); sendchar(1,'_'); sendchar(1,sys[0]/10+48); sendchar(1,sys[0]%10+48); sendchar(1,','); sendchar(1,temp/10+48); sendchar(1,temp%10+48); sendchar(1,'_'); sendchar(1,sys[1]/10+48); sendchar(1,sys[1]%10+48); sendchar(1,','); sendchar(1,(vu8)mq2+48); sendchar(1,'E'); } }}voidtimer0()interrupt1{ TH0=(65536-1000)/256; TL0=(65536-1000)%256; uartint();}/* i=GetADCResult(3)/(1024.0/99.0); if(Uart_RecOk1) { Uart_RecOk1=0; if(strstr((constchar*)&Uart_Rx1[0],"see")) { } if(Recmsg_getval((constchar*)&Uart_Rx1[0],"k1",&dat11[0],5)) { } } DH11_GetTempDamp(); display2(TempNow,DampNow,&sys[0],&sys[1]); if((TempNow>sys[0])&&(DampNow>sys[1])) { beep=~beep; } else { beep=1; } k++; if(k>12) { k=0; sendchar(1,'S'); sendchar(1,'0'); sendchar(1,'0'); sendchar(1,'7'); sendchar(1,TempNow/10+48); sendchar(1,TempNow%10+48); sendchar(1,','); sendchar(1,DampNow/10+48); sendchar(1,DampNow%10+48); sendchar(1,','); sendchar(1,b+48); sendchar(1,'E'); } delayms(100);*/3.2.1看门狗定时器本设计中,看门狗时单片机的可靠性更加方便、简洁。看门狗测试程序如下:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsfrWDT_CONTR=0xe1;//定义看门狗寄存器;//程序延时voiddelayms(uintxms){ inti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--);}voidmain(){ while(1) { WDT_CONTR=0x35;//看门狗设置2秒复位 P1=0x00; delayms(1000);//P1灯全亮1秒; while(1) { P1=0x55; //当P1灯间隔亮约1秒后会全亮,则芯片已经被看门狗复位。 } }}看门狗定时器程序在软件中编译图如图3-5所示:图3-5看门狗测试程序图3.2.2EEPROM字节本部分为只读存储器,具有带电可擦除且可以灵活编程的特点存储芯片,即使单片机掉电停机,该部分数据也不会丢失。EEPROM字节编程测试程序如下:voidByte_Program(unsignedintadd,unsignedcharch)//对字节编程,在调用前需要打开IAP功能,入口:DPTR=字节地址,A=须编程字节的数据{IAP_CONTR=ENABLE_ISP;//打开IAP功能,设置Flash操作等待时间IAP_CMD=0x02;//IAP/ISP/EEPROM字节编程命令IAP_ADDRH=(unsignedchar)(add>>8);//将目标单元地址设定为高8位地址IAP_ADDRL=(unsignedchar)(add&0xff);//将目标单元地址设定为低8位地址IAP_DATA=ch;//需要编程的数据先送进IAP_DATA寄存器EA=0;IAP_TRIG=0x5a;//先送46h,后送B9h到ISP/IAP触发寄存器,每次相同IAP_TRIG=0xa5;//送完B9h,ISP/IAP命令立即触发起动_nop_();EA=1;IAP_Disable();//IAP功能关闭,相关特殊功能寄存器清空,CPU处于安全状态,//一次连续的IAP操作完成后,IAP功能建议关闭,并非每次都关}在软件中编译测试图如图3-6所示:图3-6EEPROM字节编程测试程序图3.3温度传感器软件设计本设计温度监测采用DS18B20温度传感器,通过该传感器对废油气井井口温度进行实时监测,本模块测量迅速、敏感、稳定性好。DS18B20读取数据程序如下://从DS18B20读取一个字节unsignedcharRead_DS18B20(void){ unsignedchari; unsignedchardat; EA=0; for(i=0;i<8;i++) { DQ=0; dat>>=1; //先接受低位 DQ=1; if(DQ) { dat|=0x80; } Delay_OneWire(5); } EA=1; returndat;}DS18B20程序在软件中运行图如图3-7所示:图3-7DS18B220程序运行图3.4一氧化碳传感器软件设计本次设计对可燃气体浓度监测采用一氧化碳传感器,通过监测一氧化碳的浓度代表废油气井井口中的一系列可燃气体。一氧化碳传感器测试程序如下:intmain(){MQ7_Init(); //传感器初始化USART1_Init();//串口初始化SYSTICK_Init(1);//滴答定时器初始化while(1){ printf("CO:%.2fppm\n",MQ7_GetPPM());//计算一氧化碳浓度并通过串口打印 SYSTICK_DelayMs(500);}}在软件中编译运行图如图3-8所示:图3-8MQ7测试程序图3.5烟雾传感器软件设计本次设计对于有害气体的监测采用烟雾传感器。通过烟雾传感器对废油气井井口有害气体的监测代表对废油气井井口所有有害气体的监测。烟雾传感器测试程序如下:intmain(){MQ2_Init();//传感器初始化USART1_Init();//串口初始化SYSTICK_Init(1);//滴答定时器初始化while(1){ printf("smoke:%.2fppm\n",MQ2_GetPPM());//计算烟雾浓度并通过串口打印 SYSTICK_DelayMs(100);}}MQ2传感器程序测试编译图如图3-9所示:图3-9烟雾传感器程序测试图3.6ADC0809软件设计本次设计通过ADC0809集成电路部分对所测得到的温度、可燃气体的浓度模拟量转换成数字量,方便工作者直观对两部分数值进行观察。元件程序测试程序如下:include<reg52.h>#include<stdio.h>sbitADC_CLK=P1^4;sbitADC_DI=P1^5;sbitADC_DO=P1^6;sbitADC_CS=P1^7;unsignedchara;voidDelay(unsignedcharx){unsignedchari;for(i=0;i<x;i++);}unsignedcharADC0832(void){unsignedchari,data_c;data_c=0;ADC_CS=0;//启用ADC_DO=0;for(i=0;i<10;i++){;}ADC_CLK=0;Delay(2);ADC_DI=1;ADC_CLK=1;Delay(2);ADC_CLK=0;//启动Delay(2);ADC_DI=1;//单极ADC_CLK=1;Delay(2);ADC_CLK=0;//下降1Delay(2);ADC_DI=1;//ch1。若ch0则为0。ADC_CLK=1;Delay(2);ADC_CLK=0;//下降2ADC_DI=0;ADC_DO=1;//脱离高阻态,作准备ADC_CLK=1;Delay(2);ADC_CLK=0;//第三个下降沿di失去作用Delay(2);for(i=0;i<8;i++){ADC_CLK=1;Delay(2);ADC_CLK=0;Delay(2);data_c=(data_c<<1)|ADC_DO;}ADC_CS=1;//关adcreturn(data_c);//输出8位二进制数字}voidmain(){a=ADC0832();while(1){a=a;}}ADC0809程序测试图如图3-10所示:图3-9ADC0809程序测试图3.7蜂鸣报警软件设计本部分以可燃气体传感器监测到的浓度报警为例,程序如下:voidbeep_handle(ucharlevel)//蜂鸣器报警{switch(level){case1://收集到MQ7输出电压大于Low时,报警,报警等级为1{bell=1;delay_nms(40);bell=0;delay_nms(40);}break;case2://收集到MQ7输出电压大于Mid时,报警,报警等级为2{bell=1;delay_nms(40);bell=0;delay_nms(40);bell=1;delay_nms(40);bell=0;delay_nms(40);}break;case3://收集到MQ7输出电压大于High时,报警,报警等级为3{bell=1;delay_nms(40);bell=0;delay_nms(40);bell=1;delay_nms(40);bell=0;delay_nms(40);bell=1;delay_nms(40);bell=0;delay_nms(40);}break;default:break;}}蜂鸣报警程序测试图如图3-10所示:图3-10蜂鸣报警测试图3.8无线传输及APP生成软件设计本部分采用正点原子的ESP8266无线数据传输模块进行对所监测到的温度大小、可燃气体浓度、是否有有害气体产生以及是否产生报警进行设计,与此同时对温度、可燃气体浓度在不同的时间采集的不同数据进行曲线绘制,方便管理人员在对废油气井井口状态检测时直观查看当前时段该井口的活动趋势,判断当前情况是否会出现异常。本部分运用HBuilder国产化软件对上位机程序进行编写,在程序编写完成在本站内对手机app软件生成。本次针对油井井口智能监测报警装置所编写的上位机程序节选如下:functionplusReady(){ document.getElementById("ggag").innerHTML=plus.storage.getItem("test1");} functionwebsockstart() { //要连接b230这个 varhostname=serverip, port=8083, clientId=myid+"aa", timeout=5, keepAlive=100, cleanSession=false, ssl=false, temp1='12', topic=''; client=newPaho.MQTT.Client(hostname,port,clientId); //建立客户端实例 varoptions={ invocationContext:{ host:hostname, port:port, path:client.path, clientId:clientId }, timeout:timeout, keepAliveInterval:keepAlive, cleanSession:cleanSession, useSSL:ssl, //userName:userName, //password:password1, onSuccess:onConnect, onFailure:function(e){ //s="{time:"+newDate().Format("yyyy-MM-ddhh:mm:ss")+",onFailure()}"; websockstart() } }; client.connect(options); //连接服务器并注册连接成功处理事件 functiononConnect(){ alert(newDate().Format("yyyy-MM-ddhh:mm:ss")+"连接服务器成功"); flagmqttok=1 client.subscribe(myid) } client.onConnectionLost=onConnectionLost; //注册连接断开处理事件 client.onMessageArrived=onMessageArrived; //注册消息接收处理事件 functiononConnectionLost(responseObject){ s="{time:"+newDate().Format("yyyy-MM-ddhh:mm:ss")+",onConnectionLost()}"; console.log(s); if(responseObject.errorCode!==0){ //console.log("onConnectionLost:"+responseObject.errorMessage); console.log("连接已断开"); flagmqttok=0 websockstart() } } }functiononMessageArrived(message){console.log("主题:"+message.destinationName); console.log("收到消息:"+message.payloadString); varobj=JSON.parse(message.payloadString); if(obj.V1=='1') { document.getElementById("id1").value="有" if(ga1==0) { ga1=1 alert("异常") } } else { document.getElementById("id1").value="无" ga1=0 } document.getElementById("id2").value=Number(obj.V2.substring(0,2)); document.getElementById("id3").value=Number(obj.V3.substring(0,2)); if(obj.V4=='0') { document.getElementById("id4").value="有" } else document.getElementById("id4").value="无" if(flagquxian==0) { console.log("Gag") d12[reccnt]=Number(document.getElementById("id2").value.substring(0,2)) } else { d12[reccnt]=Number(document.getElementById("id3").value.substring(0,2)) } reccnt++; if(reccnt>=10) reccnt=0; document.getElementById("ggag").innerHTML="<"+newDate().Format("yyyy-MM-ddhh:mm:ss")+"->报警:"+document.getElementById("id1").value+",MQ7:"+document.getElementById("id2").value+ ",温度:"+document.getElementById("id3").value+ ",MQ2:"+document.getElementById("id4").value+ "<br>"+document.getElementById("ggag").innerHTMLplus.storage.setItem("test1",document.getElementById("ggag").innerHTML);} functionaa()//显示消息 { }functionsend(vala){if(vala){message=newPaho.MQTT.Message(vala);message.destinationName=myid+"/ctrl";client.send(message);}}functionk1(){ reccnt=0 d12.splice(0,d12.length);flagquxian=1-flagquxianif(flagquxian) document.getElementById("check").value="曲线:温度" elsedocument.getElementById("check").value="曲线:MQ7" }functionk2(){ document.getElementById("ggag").innerHTML=""plus.storage.setItem("test1",document.getElementById("ggag").innerHTML);}varcount=0;functionstart(){window.tester=window.setInterval(function(){if(client.isConnected){vars="{time:"+newDate().Format("yyyy-MM-ddhh:mm:ss")+",content:"+(count++)+",from:webconsole}";message=newPaho.MQTT.Message(s);message.destinationName=topic;client.send(message);}},1000);}functionstop(){window.clearInterval(window.tester);}functionblink(){ if(flagmqttok==0) { serverip=document.getElementById("id").value myid=document.getElementById("sn").value websockstart() } else { alert("服务器已经连接") }}functionrestart(){window.location.reload()}Dtotype.Format=function(fmt){//author:meizzvaro={"M+":this.getMonth()+1,//月份"d+":this.getDate(),//日"h+":this.getHours(),//小时"m+":this.getMinutes(),//分"s+":this.getSeconds(),//秒"q+":Math.floor((this.getMonth()+3)/3),//季度"S":this.getMilliseconds()//毫秒};//reainif(/(y+)/.test(fmt))fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));for(varkino)if(newRegExp("("+k+")").test(fmt))fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));returnfmt;}</script></head><body><inputtype="button"value="连接"onclick="blink()"/><inputtype="button"value="断开"onclick="restart()"/><br><br>服务器<inputtype="text"id="id"value="9"/>设备<inputtype="text"id="sn"value="8EAAB55965EA"/><divalign="center"><divid="myChart"style="width:350px;height:400px;"></div> <scriptsrc='js/jquery.js'></script> <scriptsrc='js/jquery.flot.min.js'></script> <scriptsrc="js/index.js"></script><br><inputtype="button"va
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论