基于FPGA的便携式甲烷浓度测试仪的设计_第1页
基于FPGA的便携式甲烷浓度测试仪的设计_第2页
基于FPGA的便携式甲烷浓度测试仪的设计_第3页
基于FPGA的便携式甲烷浓度测试仪的设计_第4页
基于FPGA的便携式甲烷浓度测试仪的设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1 绪论11.1 瓦斯气体概述11.1.1 瓦斯气体性质11.1.2 瓦斯气体的爆炸11.2 煤矿瓦斯检测仪的发展状况21.3 本课题的研究意义32 系统总体方案设计52.1 系统总体构成及工作原理52.2 系统的设计原理62.2.1 传感器的选择62.2.2 无线数据传输模块的选择92.2.3 fpga芯片、vhdl语言简介113 系统硬件设计133.2 a/d转换模块133.2.1 adc0809概述133.2.2 数模转换电路163.3 无线传输模块设计163.4 led显示电路设计183.5 报警电路设计194 系统软件设计214.1 ptr2000无线传输模块224.1.1 p

2、tr2000模块程序设计224.1.2 串行无线传输协议设计224.1.3 发射端程序设计234.1.4 接收端程序设计284.2 ad转换程序设计314.3 码制转换子程序344.4 显示译码子程序355 总结38参 考 文 献39附 录40致 谢421 绪论 中国煤炭产量高居世界第一,国家一直把煤矿的安全生产作为重中之重,给予高度的关注。在我国的煤矿生产事故中,瓦斯造成的伤亡和损失成为实现安全生产的最大障碍。我国95%的煤矿开采是地下作业。煤矿事故占工矿企业一次死亡10人以上特大事故的72.8%至89.6%(2002-2005年);煤矿企业一次死亡10人以上事故中,瓦斯事故占死亡人数的71

3、%。煤矿所面临的重大灾害事故是相当严峻的,造成的损失是极其惨重的。由于煤矿事故多,死亡人数多,造成了我国煤矿的百万吨死亡率一直居高不下。特别是煤矿重大及特大瓦斯灾害的频发,不但造成国家财产和公民生命的巨大损失,而且严重影响了我国的国际声誉。所以及时准确地检测瓦斯浓度和报告危险在安全生产中具有重要意义1-2。 为了确保矿井的生产安全,防止瓦斯爆炸,国内外煤矿研究所在此领域进行了很长时间的研究,开发出很多类型的瓦斯检测仪,但目前的瓦斯检测仪都普遍存在体积大、安装复杂、操作不便、智能化程度低等缺点。因此开发研制便于携带、多功能,精度高的瓦斯检测仪对促进煤炭行业安全生产具有重要的现实意义。1.1 瓦斯

4、气体概述 要设计一个瓦斯浓度检测仪,就必须,明确研究对象的性质及其爆炸所需的条件等,只有在明确了研究对象之后,才能很好地对其进行检测,下面就将对瓦斯气体的特性和爆炸条件进行详细地介绍。1.1.1 瓦斯气体性质瓦斯是煤矿开采过程中的多种有害气体的总称,它有自己的性质和特点,是可以被控制和利用的。矿井瓦斯是指从煤体和围岩中逸出的以及在生产过程中产生的多成分的混合气体,包括:ch4、co2、co、n2、c2h6、so2、h2s等。主要成分是甲烷、一氧化碳和二氧化碳、硫化氢等。甲烷是矿井瓦斯的主要成分,是一种无色无味的气体,不助燃,但当与空气混合到一定浓度时,遇明火能燃烧或爆炸,爆炸界限为516%;空

5、气中甲烷浓度超过40%时,空气中的氧含量将下降到12%以下,此时空气与甲烷的混合气体不再发生爆炸,但能将人窒息3。1.1.2 瓦斯气体的爆炸 矿井瓦斯爆炸是一种热-链式反应(也叫链锁反应)。当爆炸混合物吸收一定能量(通常是引火源给予的热能)后,反应分子的链即行断裂,离解成两个或两个以上的游离基(也叫自由基)。这类游离基具有很大的化学活性,成为反应连续进行的活化中心。在适合的条件下,每一个游离基又可以进一步分解,再产生两个或两上以上的游离基。这样循环不已,游离基越来越多,化学反应速度也越来越快,最后就可以发展为燃烧或爆炸式的氧化反应。所以,瓦斯爆炸就其本质来说,是一定浓度的甲烷和空气中度作用下产

6、生的激烈氧化反应。 瓦斯在煤体和围岩中以游离状态和吸附状态存在,一般情况下处于动态平衡,当外界温度、压力变化时,几种状态会互相转化,煤层在开采过程中,瓦斯被逸散出来,在井下积聚,造成瓦斯浓度增加,当ch4浓度达5%16%时具有爆炸性,ch4浓度为9.5%时,爆炸威力最大,ch4浓度小于5%或大于16%时,一般不会爆炸,遇明火只会燃烧,瓦斯爆炸的上下限是可变的,当现场混合气体的温度和压力发生变化或混入煤尘及其它可燃气体时,可影响瓦斯爆炸的上下限,如空气中的煤尘含量为1012mg/m3浓度达到4%时,遇火就会爆炸。要消除引爆火源,必须严禁明电、明火下井,禁止明火放炮,要求井下电器设备必须防爆4。所

7、以控制瓦斯浓度是防止瓦斯爆炸的根本,实时掌握瓦斯浓度状况是煤矿安全的头等大事。1.2 煤矿瓦斯检测仪的发展状况 多年来市场上用于瓦斯浓度检测的仪器主要有:气相色谱仪,气敏元件传感器,光学干涉仪等。(1)气相色谱仪该类仪器可以检测甲烷、二氧化碳等多种气体,测量范围大而且精度很高,但成本较高,目前国内一台这样的仪器要8万元。这种仪器的缺点是:体积较大,无法方便携带,工作环境要求很高,无法进行野外探测;测量时要先对气体取样,无法实时探测,功率很大一般达到2500w,需要与计算机相连。这种仪器目前主要应用在实验室内。(2)气敏元件传感器该类仪器是以“催化”元件作为传感元件,利用催化元件在不同浓度的瓦斯

8、中使电桥电阻发生变化而制成的,是目前矿井中最常见的瓦斯检测手段。它的特点是:体积小、重量轻、线性度较好、可实现电量输出、使用方便、价格便宜。但当甲烷浓度较大时,催化元件温度过高会使催化剂氧化或者烧断铂金丝而损坏仪器。该仪器的缺点是:测量范围有限、精度较低、响应时间长。 (3)光学干涉仪该类仪器利用光干涉的原理,两束光所经过光程相同时,干涉条纹不发生移动。如果气样室中气体的成分发生改变,则折射率会发生改变,光程也会发生变化,所看到的干涉条纹就发生移动。当两个气室的温度等条件相同时,由于甲烷的折射率n=1.000411,而空气的折射率n=1.000272,便可以利用测量干涉条纹的移动对甲烷的浓度进

9、行定量分析。这种仪器在使用中必须消除二氧化碳和水蒸气的干扰。一般要在仪器的进气口处加一个吸收管,装入碱石灰和氯化钙以吸收二氧化碳和水蒸气。光学干涉仪的特点是:使用的条件要求不高,精度可以达到0.1左右,一般矿井中的瓦斯安全员用的多为这种仪器。缺点是:当水蒸气含量较高时,测量精度下降,需要经常更换药品;仪器的安装较困难,读数不方便,读数的精度直接与使用人员的操作有很大关系;测量范围有限,精度不高2。综合来说,目前市场上的每种系统都存在量程小、体积大、功耗大、需短期内校准、使用寿命短、无数据传输方式等其中某种或某几种缺点。因此十分需要研制一种新型瓦斯浓度检测仪以克服现有设备存在的各种问题,使其具有

10、微型化、智能化、低功耗、无线化并能够准确的测量出现场的瓦斯浓度。1.3 本课题的研究意义 从我国煤炭生产的现状及我国能源结构战略规划均可看出,在本世纪中叶以前,煤炭仍将是支持我国国民经济发展的主要能源。煤炭生产作为我国能源工业的支柱,其地位将是长期的,稳定的。但是,目前煤炭工业的安全生产状况却很差,其中之一便是有害气体的危害性,包括ch4,co,so2等。瓦斯(ch4)是煤矿井下危害最大的气体,它是在成煤过程中形成并大量贮存于煤层之中的气体,无色、无味,有易燃、易爆等特点。瓦斯的危害主要表现为三个方面:第一、瓦斯浓度过高,对工人身体健康造成伤害,表现为缺氧,呼吸困难,窒息等;第二、瓦斯煤尘爆炸

11、,瓦斯爆炸所产生的巨大冲击波和高温火焰,往往导致群死群伤,而且扬起的煤尘又会参与爆炸,摧毁巷道,毁坏设备,甚至毁灭整个矿井,给国家和人民生命财产造成巨大损失。第三、大量的瓦斯排入大气,污染大气环境。目前我国已经使用的瓦斯报警矿灯具有体积小、结构简单、安装方便等优点,但存在的问题是传感器漂移大,要定期维护,并且需要维护的周期很短;维护方法复杂,成本较高,抗机械干扰能力较差5。为了解决这些问题,本课题在分析国内外各种瓦斯报警器特点的基础上,充分利用了fpga的强大功能,对瓦斯浓度进行实时采集、数据处理,对提高瓦斯检测的可靠性和系统的性价比具有十分重要的意义。2 系统总体方案设计2.1 系统总体构成

12、及工作原理 系统硬件结构图如图2-1和图2-2所示。图2-1为系统对瓦斯浓度进行检测和无线数据发射部分,是由fpga、甲烷气体传感器、a/d转换电路、电源时钟及复位电路、无线发射模块组成。图2-2由fpga、无线接收模块、电源时钟及复位电路、报警电路、显示电路组成。瓦斯浓度检测仪的功能是能够检测甲烷浓度,同时本着方便使用的原则,还应具备报警、浓度显示等功能。其工作原理是现场瓦斯浓度通过瓦斯传感器mq-4及信号调理电路转变成相应的电信号,电信号通过a/d转换器转成相应的数字信号送入fpga处理、然后通过无线传输模块ptr2000传输到接收部分进行显示和报警。 无线发射模块 甲烷传感器a/d转换器

13、fpga信号调理电路 时钟、复位电路 电源 图2-1 发射部分结构图报警电路fpga 电源无线接收模块时钟、复位电路显示电路 图2-2 接收部分结构图 2.2 系统的设计原理2.2.1 传感器的选择 要进行个具体的测量工作,首先要考虑采用何种原理的传感器,而这需要分析多方面的因素之后才能确定。因为,即使是测量同一物理量,也有多种原理的传感器可供选用,哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小;被测位置对传感器体积的要求;测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,还是自行研制,价格能否承

14、受。 mq-4甲烷传感器具有在较宽的浓度范围内对可燃气体有良好的灵敏度、快速的响应恢复特性、对甲烷的灵敏度较高、快速的响应恢复特性、低成本、简单的驱动电路即可等优点,故本设计选用mq-4甲烷传感器。 瓦斯浓度测试部分电路主要是由气体传感器mq-4组成的,其作用为将瓦斯气体的体积分数转化成对应的模拟电压信号并输出出来。mq-4气敏元件的结构和外形如图2-3所示,由微型al2o3陶瓷管、sno2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流5。 结构 外形图2-

15、3 mq-4的结构和外形其中:mq-4的标准工作条件见表2-1、mq-4的环境条件见表2-2、mq-4的灵敏度特性见表2-3。表2-1 mq-4的标准工作条件符号参数名称技术条件备注vc回路电压15vac or dcvh加热电压5.0v±0.2vac or dcrl负载电阻可调rh加热电阻31±3室温ph加热功耗900mw表2-2 mq-4的环境条件符号参数名称技术条件备注tao使用温度-10-50tas储存温度-20-70rh相对湿度小于 95%rho2氧气浓度21%(标准条件)氧气浓度会影响灵敏度特性最小值大于2%表2-3 mq-4的灵敏度特性符号参数名称技术参数备注r

16、s敏感体表面电阻1060(5000ppmch4)适用范围:30010000ppm甲烷,天然气(1000ppm/5000ppmch4)浓度斜率0.6标准工作条件温度:20±2 vc:5.0v±0.1v相对湿度:65%±5% vh:5.0v±0.1v预热时间不少于24小时 图2-4 mq-4型气敏元件的灵敏度特性 其中:温度为20、相对湿度为65%、氧气浓度为21%rl=20k。rs是指元件在不同气体,不同浓度下的电阻值。ro是指元件在洁净空气中的电阻值。 根据甲烷报警浓度为0.8%,从上图中可以得报警时rs为0.38ro=0.38*20=7.6 k。同时m

17、q-4甲烷传感器元件需要进行测量之后才可以使用,这是因为其出厂时电阻不稳定所造成的,为了使用可靠,其电阻是必须测量的,其传感器电阻(rs),可以用下式计算:rs=(vc/vrl-1)*rl。 mq-4型气敏元件对不同种类,不同浓度的气体有不同的电阻值。因此,在使用此类型气敏元件时,灵敏度的调整是很重要的。在这里我们用5000ppm甲烷校准传感器进行校准。其校准过程如下:在测试条件下对传感器进行校准时,我们进行硬件部分电路的调试。在调节确定mq-4的可调负载电阻值时,以空气中甲烷浓度值为5000ppm时作为校准,此时观察显示部分电路,又因为要求显示的瓦斯浓度精度要求优于5%,即准确显示的范围为5

18、000ppm(15%)也就是4750ppm5250ppm的范围内,若不在该范围内则说明甲烷传感器的灵敏度不够高,需要进行调节。而灵敏度的调节是依靠调节负载电阻rl来实现的。我们调节rl使显示的瓦斯浓度值尽可能与实际相符合。这样确定下来的rl的阻值,换言之传感器的灵敏度也就确定下来了,此时我们已经完成了甲烷传感器的校准。校准后的传感器就可以用来监测实际中各个不同的瓦斯浓度了6。 图2-5 mq-4型元件温湿度特性 其中纵坐标是传感器的电阻比(rs/ro)。rs表示在含1000ppm甲烷、不同温/湿度下传感器的电阻值。ro表示在含1000ppm 甲烷、20/65%rh环境条件下传感器的电阻值。由上

19、可知mq-4的测量时应考虑温湿度的影响。2.2.2 无线数据传输模块的选择 本设计采用ptr2000作为无线传输模块ptr2000芯片性能优异,在业界居于领先水平,它的显著特点是所需外围元件少,设计非常方便。该模板在内部集成了高频接收、pll合成、fsk调制/解调、参量放大、功率放大、频道切换等功能,因而是目前集成度较高的无线数传产品。以往设计无线数传产品常常需要相当多的无线电专业知识和昂贵的专业设备,而且传统的电路设计方案不是电路太复杂就是调试困难,而令人望而却步,以至影响了用户的使用和新产品的开发研制工作。ptr2000的出现,使用户摆脱了传统无线产品设计的困扰。该器件采用抗干扰能力强的f

20、sk调制/解调方式,其工作频率稳定可靠、外围元件少、功耗极低且方便设计生产。它的优异特性使其非常适合于应用在便携式及手持产品的设计中,符合本设计的要求,其具体性能指标如下:(1) 该器件将接收和发射合接为一体;(2) 工作频率为国际通用的数传频段433mhz ;(3) 采用fsk调制/解调,可直接进入数据输入/输出,抗干扰能力强,特别适合工业控制场合;(4) 采用dds(直接数据合成)ppl频率合成技术,因而频率稳定性好;(5) 灵敏度高达105dbm;(6) 工作电压低(2.7v),功耗小,接受待机状态电流仅为8ua;(7) 具有两个频道,可满足需要多信道工作的场合;(8) 工作频率最高达2

21、0kbit/s(也可在较低频率下工作,如9600bit/s),超小体积,约40×27×5mm3;(9) 可直接与cpu串口进行连接;(10) 标准的dir管脚间距更适合于嵌入式设备;(11) 由于采用了低发射功率、高接收灵敏的设计,因此使用无需申请许可证,开阔地时使用距离最远可达1000m12-14。ptr2000模板的引脚排列如图2-6所示。 图2-6ptr2000模板的引脚图各引脚的功能说明如下:vcc(1脚);输入端,电压范围为2.75.25v;cs(2脚):频道选择端。cs=0时,选择工作频道1, 即433.92mhz;cs=1时选择工作频道2,即434.33 mh

22、z;do(3脚):数据输出端;di(4脚):数据输入端;gnd(5脚):电源地;pwr(6脚):节能控制端。当pwr=1时,模块处于正常工作状态,pwr=0时,模块处于待机微功耗状态;txen(7脚):发射/接收控制端。当txen=1时,模块为发射状态;当txen=0时模块被设置为接收状态。2.2.3 fpga芯片、vhdl语言简介 fpga(fieldprogrammable gate array),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程

23、器件门电路数有限的缺点。早在1980年代中期,fpga已经在pld设备中扎根。cpld和fpga包括了一些相对大数量的可编辑逻辑单元。cpld逻辑门的密度在几千到几万个逻辑单元之间,而fpga通常是在几万到几百万。另外cpld和fpga的主要区别是他们的系统结构。cpld是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而fpga却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。cpld和fpga另外一个区别是,大多数的fpga含有

24、高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的fpga支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些fpga可以让设备的一部分重新编辑而其他部分继续正常运行。vhdl语言可以支持自上至下(top-down)和基于库(library-based)的设计方法,而且还支持同步电路、异步电路、fpga以及其它随即电路的设计,vhdl语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型到门级电路。另外高层次的行为描述可以和低层次的rtl描述和结构描述混用,这个是vhdl不同于其它hdl语言的。其它hdl语言只能进行

25、ic级、pcb级描述,而不能对系统级的硬件进行很好的描述。在传统的设计方法里面,往往要求设计者在设计电路前写出该电路的逻辑表达式或者真值表(时序电路的状态表)。这一工作是相当困难和繁杂的,特别是当系统比较复杂的时候更是如此。利用vhdl设计硬件电路时候,就可以使用设计者免除编写表达式真值表之苦,从而大大降低设计的难度,也缩短设计了周期。与传统的电路原理图相比,使用vhdl源程序有以下好处:其一是资料量小,便于保存;其二是继承性好,当设计其他硬件电路时,可以使用文件中的某些库、过程和进程等描述某些局部硬件电路的程序;其三是阅读方便,阅读者很容易能从程序中看出某一电路的工作原理和逻辑关系。而从原理

26、图推知其工作原理,则需要更多的硬件知识和经验。3 系统硬件设计3.1 甲烷传感器模块 电路设计如图3-1所示。 -图3-1 mq-4甲烷传感器模块设计电路图上图是传感器模块的测试电路。该传感器需要施加2个电压:加热器电压(vh)和测试电压(vc)。其中 vh用于为传感器提供特定的工作温度。vc则是用于测定与传感器串联的负载电阻(rl)上的电压(vrl)。这种传感器具有轻微的极性,vc需用直流电源。在满足传感器电性能要求的前提下,vc和vh 可以共用同一个电源电路。为更好利用传感器的性能,需要选择恰当的rl值。本模块输出为模拟量0-5v电压,浓度越高电压越高。已知选择的传感器电阻rs为20k,电

27、阻r0也为20 k,这样的话理想情况下根据vrl=vcc/(rs/r0+1)得:输出电压vrl=2.5v;而危险情况下传感器电阻为7.6 k,则输出电压为3.623v。由此可知最终送到fpga的安全电压低于3.623v,报警电压为3.623v,高于此电压需撤离。3.2 a/d转换模块3.2.1 adc0809概述a/d转换器(analog digital converter简称adc)是将输入的模拟电压或电流转换成数字量的器件或设备,即能把被控对象的各种模拟信息变成计算机可以识别的数字信息,它是模拟系统与数字系统或计算机之间的接口。在这里选用的是adc0809,下面就介绍adc0809。adc

28、0809是cmos的8位模/数转换器,采用逐次逼近原理进行a/d转换,芯片内有模拟多路转换开关和a/d转换两大部分,可对8路05v的输入模拟电压信号分时进行转换。 图3-2 adc0809管脚图管脚功能说明:in0in7:模拟量输入通道。就是说它可以分时地分别对八个模拟量进行测量转换;addac:地址线。也就是通过这三根地址线的不同编码来选择对哪个模拟量进行测量转换;ale:地址锁存允许信号。在低电平时向addac写地址,当ale跳至高电平后addac上的数据被锁存;start:启动转换信号。当它为上升沿后,将内部寄存器清0。当它为下降沿后,开始a/d转换;d0d7:数据输出口。转换后的数字数

29、据量就是从这输出的;oe:输出允许信号,是对d0d7的输出控制端,oe0,输出端呈高阻态,oe1,输出转换得到的数据;clock:时种信号。adc0809内部没有时钟电路,需由外部提供时钟脉冲信号。一般为500khz;eoc:转换结束状态信号。eoc0,正在进行转换。eoc1,转换结束,可以进行下一步输出操作ref(+)、ref(-):参考电压。参考电压用来与输入的模拟量进行比较,作为测量的基准。一般ref(=)5vref(-)0v。时序图如图3-3所示: 图3-3: adc0809工作时序图它的工作过程为:在in0in7上可分别接上要测量转换的8路模拟量信号;将addaaddc端给上代表选择

30、测量通道的代码。如000(b)则代表通道0;001(b)代表通道1;111则代表通道7;将ale由低电平置为高电平,从而将addaaddc送进的通道代码锁存,经译码后被选中的通道的模拟量送给内部转换单元;给start一个正脉冲。当上升沿时,所有内部寄存器清零。下降沿时,开始进行a/d转换;在转换期间,start保持低电平;eoc为转换结束信号。在上述的a/d转换期间,可以对eoc进行不断测量,当eoc为高电平时,表明转换工作结束。否则,表明正在进行a/d转换;当a/d转换结束后,将oe设置为1,这时d0d7的数据便可以读取了。oe0,d0d7输出端为高阻态,oe1,d0d7端输出转换的数据11

31、。3.2.2 数模转换电路图3-4 数模转换电路 当传感器所处环境中存在甲烷气体时,传感器的电导率随空气中甲烷气体浓度的增加而增大,输出的电压值送入in-0输入端,由于mq-4的模拟输出量在0-5v,所以不用对信号进行放大处理。add-a、add-b、add-c三条地址线接地使adc0809只对in-0输入端进行信息采集。而in-0端输入的电压值随着环境中甲烷浓度的变化而变化,adc0809对输入的电压进行采样、保持、量化、编码最后输出为8位二进制数,然后送入fpga进行数据处理。同时ale、enable、start、clock接fpga,fpga为adc0809提供地址锁存信号、输出允许控制

32、信号、启动控制信号和时钟信号。由于危险情况下(甲烷浓度为0.8%)电压输出值为3.623v,所以经过ad转换得此时adc0809的输出为10111001。3.3 无线传输模块设计 本文中的无线数据传输模块采用ptr2000,因为它是目前集成度较高的无线收发产品,其接受和发送合为一体,具有两个频道,可满足多信道工作的场合。 其硬件结构框图如图3-5所示。 图3-5 无线数据传输模块硬件结构框图 其工作模式包括工作频道的设置和发送、接收、待机状态,由txen、cs、pwr引脚共同决定,其工作模式设置如表3-1所示。 表3-1 ptr2000工作模式设置 引脚引入电平 模块工作状态txencs pw

33、r工作频道工作状态0011接收0112 接收1011 发射1112 发射xx0发射由上图得:由于模块不同的工作模式,可以设置不同的引脚输入电平得到不同的工作模式,可以由此设置让ptr2000无线传输模块工作于接收或放射状态。ptr2000模块的txen=1,接到vcc上,ptr2000出于发射状态;如果txen=0,接到gnd上,ptr2000出于接收状态。ptr2000的cs引脚和gnd连接,即使固定通讯频道为频道1。ptr2000的pwr引脚连接到vcc上,使ptr2000的固定工作在正常状态。具体的连接图如图3-6和图3-7所示。 图3-6 接收端ptr2000连接图 图3-7 发射端p

34、tr2000连接图3.4 led显示电路设计发光二极一般是砷化镓半导体二极管,在发光二极管两端加上正向电压,则发光二极管发光。数码管是由若干发光二极管组合而成的,有共阴极和共阴极两种结构形。8段共阴极数码管由a、b、c、d、e、f、g、d、g这8个发光二极管组成。把8个发光二极管的阴极连接在一起构成共阴极端,接进电路时,共阴极端接地,给要发光显示的二极管的阳极端接高电平可使该二极管导通点亮。如图3-8所示。 图3-8 led显示电路3.5 报警电路设计采用电磁式蜂鸣器作为声音报警的发声器件,其工作原理为:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信

35、号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期地振动发声,当瓦斯浓度超过阈值时,fpga输出低电平使pnp型三极管导通,蜂鸣器两端脚产生压差,从而发出声音报警信号。其具体连接方法如图3-9所示。 图3-9 报警电路 4 系统软件设计软件部分的总体设计流程图如下: 开始 系统初始化 调用a/d转换子程序 数据处理 超过阈值ptr2000模块发送数据接收ptr2000数据 显示浓度 数据处理ny 报警 结束 图4-1 软件设计流程图 工作原理:当传感器完成预热后,调用a/d转换子程序进行数据采集,然后进行数据处理,当数据处理完毕后,就进行串口通信,将数据通过串口

36、送出,最后送至ptr2000无线传输模块进行发射,然后再次进行串口通信,接收来自无线接收模块ptr2000的数据,然后将数据送入fpga进行数据处理,经处理后,将瓦斯浓度显示在数码管上,比较瓦斯浓度,确定是否大于设定的浓度阈值,若大于,则进行报警,否则返回执行。4.1 ptr2000无线传输模块 无线传输的软件设计包括发射端和接收端两部分,两部分软件相互配合,设置各自的 ptr2000模块的工作状态。4.1.1 ptr2000模块程序设计发射端和接收端软件配合设置ptr2000的状态(发射或接收),选择固定的通信频道1(cs=0), 并让ptr2000模块一直处于正常工作状态(pwm=1)。无

37、线传输实现过程如下:(1)发送在发送数据之前,应将ptr2000模块置于发射模式,即txen=1。然后等待至少后5ms(接收到发射的切换时间)才可发射数据。发送结束后,应将模块置于接收状态,即txen=0;(2)接收应将ptr2000置于接收模式,即txen=0。当发射端发送时,接收端应为接收。4.1.2 串行无线传输协议设计 无线通信中,由于外部环境的干扰,通常误码率较高,因此通信协议的设计对保证通信的可靠性十分重要。协议的设计主要是帧结构的设计,在该无线通信系统中,存在指令帧和数据帧。 数据帧的内容包括起始字节、数据长度字节、数据字节、结束字节和校验和字节,如表4-1所示。表4-1 数据帧

38、设置起始字节数据长度字节数据字节校验和字节接收字节1字节 1字节n字节1字节1字节采用校验和的方法进行帧的校验,将所有字节相加,然后将结果截短到所需的位长。发射端对待发送的数据进行校验和计算,将校验和值放在数据后一起发送;在接收端,对接收到的数据 进行校验和计算,然后与收到的校验和字节比较,进行误码判断13。程序流程图如图4-2所示。 图4-2 ptr2000无线传输流程图4.1.3 发射端程序设计 图4-3 发射端模块 此模块是模拟ptr2000发射端的。cs、txen和pwm三个引脚控制其工作状态。当cs=0,pwr=1,txen=1时处于发射状态。由于数据输入是并行输入,输出是串行输出,

39、所以需要编写一个并行转串行的程序。txmit_over是发送结束标志,发送结束后txmit_over=1。程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fashe_module is port(clk,reset:in std_logic;- clock and reset txd_data: in std_logic_vector(7 downto 0);-parell data input a:in std_logic;-start fasong cs,txen,pw

40、m:out std_logic; txd:out std_logic;-serial output txmit_over:out std_logic );-zhishi:fasong wanbi end fashe_module ;architecture rtl of fashe_module is type state is (start, trans_state, trans_done); signal current_state:state:=start; signal clk_co:std_logic;-5fenpin shuchu signal start_trans:std_lo

41、gic; -kaishi chuanshu signal counter,clk_1x_counter,clk_2x_counter:integer range 0 to 15; signal clk_2x:std_logic_vector(2 downto 0); signal clk_1x:std_logic; signal txd_counter:integer range 0 to 15; signal txd_over:std_logic; signal zancun_data:std_logic_vector(7 downto 0);begin -16fenpin clock_fe

42、npin_16: process(clk)-clock process begin if clk'event and clk='1' then if clk_1x_counter<8 then clk_1x_counter<=clk_1x_counter+1; else clk_1x_counter<=0; clk_1x<=not clk_1x; end if; end if; end process clock_fenpin_16;-5fenpin clock_fenpin_5: process(clk)-clock process begin

43、 if a='1' then clk_co<='0'clk_2x<="000" else if clk'event and clk='1' then if clk_2x<"100" then clk_2x<=clk_2x+1; clk_co<='0' else clk_co<='1' end if; end if; end if; end process clock_fenpin_5;process(clk_1x,start_tra

44、ns) begin if start_trans='0' then txd_counter<=0; txd_over<='0' elsif clk_co='1' then if(clk_1x'event and clk_1x='1' ) then if txd_counter<10 then txd_counter<=txd_counter+1; else txd_over<='1' txd_counter<=0; end if;end if;end if;end pro

45、cess; process(txd_counter) begin case txd_counter is when 0=>txd<='1' when 1=>txd<='0'-begin bit when 2=>txd<=zancun_data(0);-data follow when 3=>txd<=zancun_data(1); when 4=>txd<=zancun_data(2); when 5=>txd<=zancun_data(3); when 6=>txd<=zanc

46、un_data(4); when 7=>txd<=zancun_data(5); when 8=>txd<=zancun_data(6); when 9=>txd<=zancun_data(7); when 10=>txd<='1'-stop bit when others=>txd<='1' end case;end process;fsm:process(reset,clk)-zhuangtaijibegin if reset='1' then start_trans<=

47、9;0' txmit_over<='0' current_state<=start; elsif clk'event and clk='1' then case current_state is when start => cs<='0' txen<='0' pwm<='1' if a='0' then start_trans<='1' zancun_data<=txd_data; current_state<=t

48、rans_state; end if; when trans_state => txen<='1' if txd_over='1' then current_state<= trans_done; start_trans<='0' txmit_over<='1' end if; when trans_done => txen<='0' if a='1' then current_state<=start; txmit_over<='0&#

49、39; end if; end case; end if;end process fsm;end rtl;4.1.4 接收端程序设计 图4-4 接收端模块 此模块是模拟ptr2000接收端的。cs、txen和pwm三个引脚控制其工作状态。当cs=0,pwr=1,txen=0时处于接收状态。由于数据输入是串行输入,输出是并行输出,所以需要编写一个串行转并行的程序。程序如下:library ieee;use ieee.std_logic_1164.all;entity receiver is port(clk,reset:in std_logic;- clock and reset rxd: in

50、 std_logic;-serial data input get_data:out std_logic; cs,txen,pwm:out std_logic; receive_data:out std_logic_vector(7 downto 0);-output clock end receiver ;architecture rtl of receiver is type state is (start, receive_state, stop_state); signal current_state:state:=start; signal start_receive:std_log

51、ic; signal counter,clk_1x_counter:integer range 0 to 15; signal inner_clk,clk_1x:std_logic; signal rxd_counter:integer range 0 to 15; signal receive_over:std_logic; signal zancun_data:std_logic_vector(7 downto 0);begincs<='0'txen<='0'pwm<='1' -16fenpin clock_fenpin: process(clk,start_receive)-clock process begin if clk'event and clk='1' then if clk_1x_counter<8 then clk_1x_counter<=clk_1x_counter+1; else clk_1x_counter<=0; clk_1x<=not clk_1x; end if; end if; end process clock_fenpin; process(start_receive,clk_1x,rxd) if current_state=st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论