版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE9地下管道超声检测系统硬件设计摘要无损检测是指在不损害或不影响被检测对象使用性能,不伤害被检测对象内部组织的前提下,利用材料内部结构异常或缺陷存在引起的热、声、光、电、磁等反应的变化,以物理或化学方法为手段,借助现代化的技术和设备器材,对试件内部及表面的结构、性质、状态及缺陷的类型、性质、数量、形状、位置、尺寸、分布及其变化进行检查和测试的方法。超声检测就是无损检测技术其中的一种应用。以往的管道检测和探伤技术在测量精确性方面有着很大的缺陷,现在随着科学技术和经济的发展,对石油、化工行业存在的大量地下管道必须要有更加精确的检测技术,在这样一种环境和背景下,超声检测就慢慢出现在人们的视野中。本设计采用STM32单片机对超声波探头传回的数据进行处理分析再通过蓝牙传输给单片机,实现在线采集数据的功能。本设计经过机械结构的构想,原理图的设计和对上位机程序的设计,基本能达到很好的控制效果。在地下管道中行驶的检测系统通过前端的减速电机旋转使三个超声探头都能很好的检测信号,转动一周是为了确保检测的信号完整性,不遗漏每一处管道的信息。关键词:无损检测;超声;单片机ThehardwaredesignofundergroundpipelineultrasonictestingsystemAbstractNondestructivetestingisamethodoftestingandchecking.Itcannotdamageoraffectthefunctionofthetestingobjectanditcannotruinstheinternalsofobject.Usetheunusualorbugofinternalstructure,causedbyheat,sound,light,electricandmagnetic,withphysicalorchemicalmethodsorwithusingadvancingtechnologyandequipment,ittestssomethingweneed.Alsoitcheckandtestobeject’sstrcture,properties,status,type,quality,quantity,shape,location,size,distribution,changeandsoon.Ultrasonictestingisoneofthemethodsofnondestructivetesting.Longago,thepipelinetestinganddetectionofdefectshavealotofbugs.Butnowwiththedevelopmentofthetechnologyandeconomy,itmustbemoreaccuratelyintesting.Soultrasonictestingiscoming.ThisdesignuseSTM32microcontrollertodealwiththedataandtransmitthedatatocomputerbytheBluetooth.Thisisthefunctionofonlinedatacollecting.Thedesignofmechanicalstructure,schematicdiagramanduppermonitor,theyallachievebettercontroleffect.Drivingintheundergroundpipelinedetectionsysteminfrontofthegearmotorrotatethroughthreeultrasonicprobecandetectsignalwell,rotationaweekistoensuresignalintegritydetection,itcandetecteverypipelineinformation.KeyWords:Nondestructivetesting;ultrasonic;microcontroller目录引言 8第1章绪论 91.1国内外研究背景介绍 91.2整体设计思路 9第2章理论基础及设计原理 102.1设计需要的理论基础 102.2超声检测系统基本原理 102.2.1超声波介绍 102.2.2超声检测 102.3单片机原理 11第3章硬件电路整体设计 133.1系统硬件电路整体设计 133.2重要元器件选用 133.2.1单片机选型 133.2.2供电电源选型 153.2.3蓝牙模块选型 15第4章硬件电路模块设计 174.1绘图软件的介绍 174.2单片机最小系统 174.3单片机电源电路 184.4电机电源电路 194.5信号采集电路 194.6减速电机驱动电路 19第5章软件系统设计 215.1系统控制总体流程图 215.2编程软件介绍 225.2.1Keil介绍 225.2.2VS2010介绍 225.3在线采集子系统程序设计 225.3.1AD采集程序 225.3.2数据处理程序 255.3.3PWM控制程序设计 265.3.4上位机设计 26结论与展望 28致谢 29参考文献 30附录 31引言随着石油和天然气成为现在的主要能源之一,它的输送方式是通过管道传输的。目前为止,这是最为安全和经济的方式。然而,管道的输送也会发生故障。最近几年,国内外出现的大大小小的管道事故都很严重,造成了很多无法挽回的损失,给人民的生命财产安全带来隐患。国内外专家通过研究发现,管道发生事故和管道使用的时间长短及对它的检测有着很大的关联。研究表明,在管道使用的早期和晚期是事故发生的高危时间段,特别是晚期,管道发生事故的可能性随着使用时间长短的增加而增加,这就需要我们对管道进行周期性检测,以延长其使用年限并且节省大量的人力物力。根据对管道的维护策略,分为被动维护和主动维护。被动维护是等待管道发生事故之后才进行维护,这样的话很多事故依然难免发生,造成难以想象的后果。主动维护是在掌握管道状况的基本情况下,对其进行定期的检测,虽然这样也要消耗很多人力物力,但是总体来说比被动检测要好很多,很大程度上的避免了事故的发生。为了防止这类管道事故的继续发生,在主动检测的基础上,出现了很多新兴的检测技术和方法,使检测管道的水平不断提高,其中超声波检测就是很好的一种方法,通过超声波对管道内厚度和损伤进行探查,同时不对管道造成任何损伤,是今后管道检测技术的发展方向。第1章绪论1.1国内外研究背景介绍随着世界管道检测技术的迅速发展,人们对超声波检测的市场需求也进入了日益成熟的阶段。目前的管道运输形式主要有两种:地下管道运输和地上管道运输。地下管道运输又分为埋地管道运输和海底管道运输。不论是埋地管道运输还是海底管道运输,他们都会受到环境的影响,而且在管道外检测的施工难度巨大,只能依靠先进的技术在管道内进行检测。地上管道运输检测相对简单,可以手动在管道外进行检测,施工难度较小。1965年国际著名的管道检测公司TUBOSCOPE史无前例的采用了漏磁检测器对管道的内部进行检测。在1973年英国天然气公司BritishGas使用了漏磁检测器对一条直径60cm的管道内部进行检测后,新型的检测技术如雨后春笋般产生出来。同样的在国内也有很多高等院校和研究所在管道超声波检测系统上进行了深入的研究,可是在应用上目前还是达不到国外的先进水平。南京理工大学机器人研究所研制了一种用于检测小口径石油管道的智能管道检测机器人,它使用超声波原理对石油管道的残余壁厚进行检测,整个智能检测系统也分为管内和管外两大部分。该机器体积小,动作灵活,基本达到了在管道内的长距离检测的要求。国内外的研究都对将来的管道检测技术的发展起到了推动作用,具有长久的前瞻意义,产生现实的经济和社会效益1.2整体设计思路本设计采用三个超声波探头对管道进行检测,这三个超声波探头都垂直于管道内壁,连接的都是弹性可伸缩连杆,每个连杆之间的角度为120度,确保能最大范围的检测,防止遗漏,它可以根据管道直径的不同而改变长度从而方便检测。在三个可伸缩连杆前端加上一个减速电机,控制三个连杆的旋转速度,通过旋转,充分检测到圆周的每一个角度。单片机采用ST公司的STM32F103C8T6,这款32位单片机是CortexM3内核,拥有72MHz最大处理频率、512KbFlash、64KbSRAM,丰富的外设功能,基本能满足本设计需求。它在现在的各种电子技术研究方面都有应用,有很多的实用例程可以参考,使用非常方便。采集到的数据通过单片机处理滤波后通过蓝牙模块发送到上位机进行显示。本设计的机械机构图如图1-1所示。图1-1机械结构图第2章理论基础及设计原理2.1设计需要的理论基础本设计属于综合性设计,为了实现本次论文的撰写,需要在很多方面有着非常丰富的知识。首先设计系统的机械机构要对机械设计原理有着基本的理解,这样才能很好的设计出合理的机构。在电子方面,要对电路知识有着很深刻的理解,尤其是模电数电知识,同时还需要对单片机掌握的很透彻,不能只限于课本中学过的简单的51单片机,学习单片机最好的方法就是看英文原版手册,这一点也很重要。2.2超声检测系统基本原理2.2.1超声波介绍能够发出声音的物体产生的振动在空气或者其他介质中传播叫做声波。超声波是一种频率高于20KHZ的声波,它的频率下限大于人耳的听觉上限,是人耳所听不见的一种声波。它有很好的穿透能力,并且有很好的方向性,在水中的传播距离更远,可以用来测量距离,检测损伤部位等。在医学、军事、工业、农业等方面都具有非常广泛的运用。理论研究证明了在振幅相同的条件下,一个物体振动的能量和振动频率成正比,超声波在介质中传播时,介质质点的振动频率很高,所以能量也很大。2.2.2超声检测超声检测的原理是因为它能够检测超声波反射回来的回波,每次当超声波从探头发射出来的时候,经过测量的物体,最后接触到管道的分界面时,超声脉冲就会反射回来,形成超声回波,为了确定管道的厚度,就必须要测量出从发出到接收到的时间。如图2-1和图2-2所示。超声波检测探伤技术可以直接测量并且精确计算出损坏具体位置,更好的减小了系统误差并且增强了系统的抗干扰性能,超声波检测探伤技术的出现推动了地下管道检测技术的进一步发展。模拟式超声管道内检测系统的测厚原理之所以能够测量管道的厚度,是因为它能够检测超声波反射回来的回波,每次当超声波从探头发射出来的时候,经过测量的物体,最后接触到管道的分界面时,超声脉冲就会反射回来,形成超声回波,为了确定管道的厚度,就必须要测量出从发出到接收到的时间。超声波能在物体能以一个稳定的速度传播的物质和材料都可以用此原理测量出来,可广泛运用于石油、化工、冶金、造船、航空航天等各个领域,故各种地下管道满足此要求,可以很好的用超声检测测量其管道厚度。模拟式超声管道内检测系统的探伤原理是利用超声能透入金属材料的深处,并由一截面进入另一截面时,在界面边缘发生反射的特点来检查零件缺陷的一种方法,当超声波束自零件表面由探头通至金属内部,遇到缺陷与零件底面时就会分别发生反射波,根据反射波采集回来的波形判断缺陷的位置和大小。外壁反射外壁反射内壁反射超声脉冲超声探头管道壁图2-1超声检测示意图外壁反射波外壁反射波内壁反射波壁厚投射距离发射波时间幅度图2-2超声检测波形简图2.3单片机原理单片机又叫做微型控制器,它是一种常用的用于控制的器件,并且它相当于把一个小型的计算机主要的部件都集成到一个芯片上。可以称它为微型计算机,计算机和它进行对比的话,仅仅多出部分功能。意思也就是小小的一块芯片就集成了一台计算机的功能。它的价格相对便宜而且容易操作,对单片机的学习提供了便利条件。在另一方面,学习使用单片机也可以帮助我们更好的掌握和学习计算机原理与结构。单片机的使用领域已经十分的广泛了,像是在智能仪表、实时通信系统、导航系统、家用电器等。为我们所熟知的51单片机系列是最常用的单片机系列之一,它能很好的运用上英特尔8031的指令,所以之后这种类型的单片机都叫51单片机。这个系列的第一款单片机的出现时英特尔公司的型号8004单片机,以后通过发展闪存和内存技术,此型单片机的发展更进了一步,它成了后来其中一种使用人数最多的八位单片机,它的典型产品是艾特梅尔公司的AT89C51,被大量使用在各种电子产品中,很受使用者的欢迎。为了适应大环境,许多厂商都产出了适用于51系列的兼容产品,这说明了这个系列产品被市场所需求。然而本设计中有各种存在着各种需要处理的部分,如电机控制,蓝牙通信控制,数据采集处理部分,考虑到本设计要对数据进行在线监测和各种复杂的控制,所以要选用处理速度更加快速的单片机。综合考虑本设计的各种需求,32位单片机已经能够很好的达到处理要求。在32位单片机市场上,应用最广泛的就是STM32系列单片机,最后经过实际测试选用STM32F103C8T6。 第3章硬件电路整体设计3.1系统硬件电路整体设计在进行整体的硬件电路设计之前,首先要做的事就是画出系统整体的硬件框图,这样会对我们接下来的设计提供一个很好的思路,了解每一步该怎么做。本设计是由锂电池供电并带动两个电源电路,分别是单片机的电源电路和电机的电源电路,由于单片机的电源供电只有3.3V,不够带动电机输出,所以采用另外的5V电源电路给电机供电。在地下管道超声检测系统中,超声探头是最为重要的传感器,它的供电是和单片机使用同一个电路进行供电,将所采集到的信号传给STM32单片机进行处理。STM32的工作基本电路分为两个部分,一个是复位电路,另一个是晶振电路。最后所处理的数据会经过蓝牙传输给上位机进行显示观察。系统每一部分协调工作才能完成地下管道超声检测的任务,设计总体框图如图3-1所示。图3-1系统硬件电路框图3.2重要元器件选用3.2.1单片机选型在对单片机的选型上,要充分考虑到地下管道的环境条件等各种情况进行选型。首先就8位单片机的51系列单片机来说,要驱动地下管道超声检测系统的这些硬件电路,不论是Atmel公司的还是STC公司的51单片机都无法达到合适的要求,同时驱动这些硬件显然8位单片机显得不够好。再讨论16位单片机,常用的16位单片机虽然有很多,但是在电子领域人们大多数会选择MSP430单片机进行设计,这款单片机最大的特点就是低功耗功能,可是在本系统中最重要的是实时的数据处理能力,要求能够实时处理超声检测的信号,显然16位单片机也无法满足要求。最后在32位单片机的选择上,选了STM32F103C8T6这款芯片,它处理速度更快,具有更多的外设接口库函数,它经常作为消费电子,医疗电子等许多领域的控制器,在地下管道超声检测系统中能够很好的完成所有任务。既然选择了STM32单片机,就要对它有很好的了解,而了解一个芯片最好的办法就是去官网上下载它的英文版datasheet和官方库文件。进入ST公司的官网,如图3-2所示。图3-2ST官网首页点击产品选项,选择微控制器选项,进入如图3-3所示的所有单片机展示,选择STMF1系列,找到本设计需要使用的STM32F103C8T6。图3-3STM系列单片机选择官方标准库文件选项,库的版本是最新的3.5版本,下载库文件和使用手册。如图3-4所示。图3-4库文件下载3.2.2供电电源选型本设计中电源的选择也是非常重要的,通常有两种选择,一种是选择干电池串联进行供电,另外一种是选择锂电池进行供电。干电池自身的内阻比较大,如果使用干电池供电的话相当于在主电路上加了个电阻,对电流电压都会造成不同的影响,锂电池虽然也有这个问题,但是比干电池造成的影响小的多。而且就使用环境来看,本设计处于地下管道中,环境潮湿阴暗,会导致干电池电压不稳,随着使用时间的增加,对超声探头采集数据会造成影响,导致数据采集的不完整。综上所述,应该采用锂电池来给本系统供电,而本设计所用的锂电池是无人机航模的1100mah容量11.7V电压的锂电池,能够很好的满足本设计的要求。3.2.3蓝牙模块选型本设计的数据传输是使用蓝牙进行传输的,由于在地下管道中不能使用有线传输信号,从而采用蓝牙进行信号的传输,当超声探头采集到数据传输给单片机进行处理之后再通过蓝牙传输给上位机。为了使用的方便,就不对蓝牙模块进行PCB的绘制以及打样,蓝牙是2.4G传输的,涉及到高频电路的绘制。考虑到时间及各种因素,直接采用市面上常用的蓝牙模块HC-05.此模块分为两个部分,一个是接在地下管道超声检测系统上的用来连接单片机传输数据的从模块,另一个叫做蓝牙适配器,是连接在电脑上用来接收单片机传输过来的数据的。蓝牙适配器适用于所有蓝牙设备和电脑通信,符合BluetoothV2.0+EDR蓝牙标准,理论可以传输距离达100米,允许7个蓝牙设备同时连接,同时支持WindowsXP,Windows7等通用PC系统。从模块只有一个蓝牙模块,引出接口包括VCC,GND,TXD,RXD四个引脚。从模块的输入电压要严格限定在3.6V到6V之间,禁止超过6V,她的接口电平是3.3V的TTL电平,能够接到很多类型的MCU上(51,AVR,STM32,MSP430等)。供电电源VCC是5V的MCU,不需要使用MAX232芯片而且不能使用MAX232芯片。当匹配完成时,完全可以当成一个串口来看待,不要知道任意蓝牙协议,它只能使用一种通信格式,就是常见八位数据位,一位停止位,没有奇偶校验位。收到模块以后,先进行自收自发测试,验证模块是正常的。自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。蓝牙模块在发货前都是进行过测试的,默认出厂设置为:波特率9600bps,设备名称:HC-05,配对密码:1234。在从模块上电之后就可以在电脑上进行连接了。第4章硬件电路模块设计4.1绘图软件的介绍目前常用的绘制原理图的软件有Protel99,PADS,AltiumDesigner等,为了使用方便,选用最常使用的AltiumDesigner。AltiumDesigner是以前的Protel公司现在改成了Altium公司所开发的一款电路板绘制软件,它支持Windows操作系统。AltiumDesigner集成了很多的功能,有原理图绘制,PCB设计,产生Bom表,钢网等,给开发人员带来了更加快捷的体验,让开发人员能更加投入在电路板的设计上,很好的掌握AltiumDesigner一定会让开发人员在图纸绘制方面的效率提升很多。AltiumDesigner比以前的版本多了很多功能。它对Protel99SE、ProtelDXP等之前的版本内容进行了保留,并在设计上提升了很多更加方便的选项。这个软件增加了很多优化的界面,可以让更多的开发的人更加方便的使用它。但是AltiumDesigner对电脑的硬件需要之前的所有其它设计软件都要高很多。4.2单片机最小系统STM32单片机的最小系统由两个部分组成,分为晶振电路和复位电路。晶振电路是外接的8MHZ晶振,经过倍频可以升到72MHZ。晶振旁接的2个电容是22PF,它们叫做负载电容,一般单片机的晶振工作于并联谐振状态,可以通俗的解释为它是Resonantcapacitor的一部分。在生产晶振时,厂家往往会说明负载电容的值。也就是说,晶振频率能够减小很多误差,比如说频率的值和温度差异。这两个电容往往都是相等的容值,要不然也就是相差不大,否则会导致很多问题。它们有协助起振与稳定振荡的作用。一般频率高的会用较低的电容、频率低的会用较高的电容。电容过大会使信号衰减、并因吸收能量过大而抑制震荡。复位电路的原理是NRST引脚是低电平有效,上电复位时芯片需要有一定的时间进行操作,这段时间内NRST拉低。复位电路的基本原理就是通过对电容的充电来实现的,即电源通过R1向C3充电,一直到这个电容的电压充到高电平为止,就可以开始进行工作了。单片机最小系统原理图如图4-1所示。图4-1单片机最小系统STM32程序的下载需要注意两个地方,第一个是芯片有两个和程序烧录相关的特殊引脚:Boot0和Boot1。关于它的设置有三种模式,一是Boot0为低电平Boot1为任意电平的时候表示使用用户闪存存储器,也就是Flash启动;二是Boot0为高电平Boot1为低电平时表示使用系统存储器,这里适用于串口下载;三是Boot0和Boot1都是高电平时表示从SRAM启动,用于在SRAM中调试代码。这里我们使用的是Jlink进行下载调试,所以只需要把Boot0接地就可以了。下载需要注意的第二个地方是,使用Jlink要在单片机和Jlink上各引出四根线进行连接,用上插针做成一个独立的接口模块,方便下载调试。下载接口模块如图4-2所示。图4-2下载接口4.3单片机电源电路本设计在供电方面有两个电路,这个是单片机和超声探头的电源电路,供电部分采用一款低噪声稳压器LP2985,它采用贴片双列5引脚SOT-23封装,工作电压在2.5V到16V,稳定输出电压为3.3V,正好用来给单片机供电。输出电流为150ma(电压差为300mv)或者1ma(电压差为7mv);关断时静态电流小于1ua。工作温度为-40到125度。内置输出电流限制和热关断保护功能,用低ESR陶瓷电容可使电路稳定工作。参考芯片手册给出的外部电路图,画出了如图4-3所示的单片机电源电路原理图。图4-3单片机电源电路图4.4电机电源电路电机的电源电路芯片选用输出电压固定的低压差三端稳压器,输出电压固定在5V正好能够给超声检测系统的减速电机供电,它的最大输入电压是26V,所以能够完美承受供电锂电池11.7V的电压。而且此芯片内部含有过流限制和电池接反的保护电路。根据芯片手册所给出的典型应用电路图,如图4-4所示。图4-4电机电源电路4.5信号采集电路信号采集电路采集到的是三个超声波探头传回的回波信号,这个回波信号是一个模拟量,要对其进行转换,变成单片机能识别的数字量。参考STM32F103数据手册,由于我们选用的是48个引脚的版本,所以使用PA0,PA1,PA2引脚来作为超声信号的采样引脚。考虑到多方面原因,在设计上多设计出了一个引脚作为备用接口,如图4-5所示。图4-5超声波信号接口4.6减速电机驱动电路地下管道超声检测系统运行的时候,由于超声探头位置是固定的,不能够很好的检测到所有方位的信号,这样就可能对实际的检测结果造成影响,为了避免这样的影响,设计出了在超声探头前加上一个减速电机,使系统运行的时候可以带动超声探头的连杆使超声探头转动起来,这样就能够全方位的检测信号。本设计的减速电机驱动电路采用MOS管驱动,使用AOD409MOS管,它在大电流的情况下依然能够很好地工作,带动一个减速电机完全绰绰有余,电路图如图4-6所示。单片机PWM接口引出的信号接到三极管Q1上,此三极管起到开关作用,后接一个由Q2,Q3两个三极管组成的推挽电路。推挽电路结构为双管工作在线性放大区,其共输入端,共输出端。输入信号正半周信号由NPN上管放大,发射极输出;负半周信号由PNP下管放大,发射极输出;正半周时,下管截止,负半周时,上管截止,二管各负其责分工明确。输出端的负载,将正负半周波形合成为一完整波形,增强其带负载能力。最后的部分接到一个mos管,控制电机的转动,直流电机有两条线,另外一条接地就可以了。图4-6减速电机驱动电路第5章软件系统设计5.1系统控制总体流程图整个管道超声检测的流程构想是在上电之前连接好所有部分,包括探头装置和连杆的连接,连杆和减速电机的连接,探头采集接口与单片机的连接,蓝牙模块与单片机的连接等。在全部确认连接无误后,对系统进行上电,检测系统整体开始在管道内移动,为了达到均匀的测量到每一处管道的目的,在移动时,连杆会随着电机的转动旋转,这样超声波就能传到每一个角落,发现哪些地方有损伤。设计每采样10个数据进行一次数据处理并且向上位机发送一次,这里就涉及到中断的处理。计数到10次后中断触发,把这10个数据进行数据处理,也就是滤波。滤波算法是对这10个数据进行冒泡排序,并去掉一头一尾的最大值和最小值,再对剩下的数据进行平均值滤波,为的是去除杂波数据的干扰。得出来的数据即是最后发送到上位机上的数据。程序流程图如图5-1所示:开始开始程序初始化超声波探头实时采集数据数据滤波消除杂波蓝牙模块发送数据到上位机单片机数据处理成功显示失败结束图5-1总体流程图5.2编程软件介绍5.2.1Keil介绍Keil软件是开发各种单片机最常见的软件。它有了很多实用的功能,编译,下载,在线调试等。在学习51单片机的时候初次接触的就是Keil这款软件,其简易的使用方法让初学者很容易上手。在调试程序时,可以打开几个Watch窗口,监视变量的变化值,对程序调试起到了很好的帮助,便于我们修改程序以及调整程序的BUG。在编写51程序的时候,还可以使用C语言和汇编语言两种,总之,Keil是一款很实用很强大的软件。而STM32属于ARM系列,就需要下载另一种Keil:KeilforARM,这是Keil公司针对STM32和其它ARM系列单片机的MDK,从官网上下载的库文件就是使用KeilforARM打开的,在进行开发的时候能非常方便的进行调试。5.2.2VS2010介绍VisualStudio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP),并且支持开发面向Windows7的应用程序。除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库。本设计中的上位机软件就是使用VS2010里的VB功能编写的。VB是一种面向对象的语言,在调试接收蓝牙传输的数据时更加方便快捷。5.3在线采集子系统程序设计5.3.1AD采集程序ADC(AnalogtoDigitalConverter),模拟/数字转换器。在模拟信号需要以数字形式进行处理或者传输时,ADC几乎必不可少。STM32在片上集成的ADC外设非常强大。在STM32F103xC系列产品中,内嵌3个12位的ADC,每个ADC共用多达21个外部通道,可以实现单次或者多次扫描转换。ADC的结果可以左对齐或者右对齐的方式存储在16位数据寄存器中,模拟看门狗的特性允许应用程序检测输入电压是否超出用户定义的最大最小阈值。使用ADC的时候很多情况都会有很多的数据输入进来,在别的单片机上出现这种情况的时候就会一一扫描程序,对数据进行分析,这样执行的速度会变得很慢。在STM32中,使用ADC的时候一般都是用DMA传输数据,处理速度比扫描执行要快上几倍。关于ADC设置的子程序有两个部分,一个是对ADC的端口进行配置。如图5-2所示:开始开始DMA1使能ADC1使能,GPIOA使能配置A0、A1、A2为模拟输入模式配置结束图5-2ADC端口配置二是对ADC的模式进行配置,把它配置成DMA模式,如图5-3所示:开始开始DMA1选择通道1DMA1外部基地址设置DMA1内存地址设置DMA1内存地址设置DMA1内存数据位设置DMA1模式设置DMA1优先级设置ADC模式设置ADC禁止扫描模式,开启连续转换模式ADC触发模式及转换通道数设置ADC时钟配置ADC校准ADC使能结束图5-3ADC模式配置最后在主程序中对ADC采集到的数据进行计算得出AD转换后的结果,就是我们需要接下来进行滤波处理的数据。如图5-4所示:循环采集循环采集开始调用ADC1初始化函数计算ADC转换后的数值延时结束图5-4AD采集数值处理5.3.2数据处理程序在数据处理上对采集到的数据进行冒泡排序算法运算,冒泡排序的基本原理就是对每个数进行依次的比较,首先对第一个数和第二个数进行比较,把得出结果较小的数放在前面,再分别和第二个、第三个数进行比较,依此类推,就是把第一个数和每一个数都进行比较一次,比较结果小的放在前面。比较完这一轮,第二轮从第二个数开始继续依次和后面的数比较。将比较继续进行下去,最后得出的结果就是所有的数按从小到大的顺序排列了。冒泡排序程序算法如图5-5所示:否否是否开始程序初始化比较第n个数和接下来的第一个未比较的数如果第n+1个数较小交换这2个数的位置是否是最后一个数结束是图5-5冒泡排序算法5.3.3PWM控制程序设计在PWM控制程序里,最重要的就是PWM占空比的配置,这里有个很重要的公式:时钟频率/((TIM_Prescaler+1)*TIM_Period)=输出频率,根据需求计算出TIM_Prescaler=36,也就是36分频的意思,TIM_Period=9999,也就是当定时器从0计数到9999,即为10000次,为一个定时周期。更多设置在附录程序注释中解释了出来。5.3.4上位机设计VS2010比VB6.0多出了很多强大的功能,当然也比老版的VB6.0有很多功能改变了。最重要的就是串口接收控件的改变,这是本采集系统的主要控件,在以前的VB6.0中,它的名字叫MSComm,而在VS2010中它则变成了SerialPort,这对开始编写程序带来了小小的困难,查阅了各种资料后,发现实际上两个控件基本相差不大,也就是几个函数的名字稍微变了一下。对SerialPort的编程,是在Button组件下进行的,当点击Button之后才会进行数据的接收。如图5-6所示:图5-6SerialPort编程本段程序的意思是读取数据缓冲区的内容,若是数据缓冲区有数据,则在窗口显示出来,若是无数据,则弹出窗口显示缓冲区无数据。这样就能很好的监测到蓝牙模块发送过来的数据并进行显示了。程序的窗体架构如图5-7所示。图5-7上位机窗体架构程序的实际调试如图5-8所示,有两个主要功能,蓝牙模块上电并连接上自身的TXD和RXD两个引脚,在发送区窗口输入数据并且点击发送,在接收区点击接收,就会收到发送的数据,这个功能主要是测试收发数据的稳定性。实际使用时蓝牙模块还是连接单片机,并且只需要点击接收区的接收按钮,就会在接收区显示出超声波模块传回来的数据了。图5-8运行调试界面参考文献[1]常大海,蒋连生.输油管道事故统计分析[J].油气储运,1995,14(6):48-51.[2]高福庆.管道检测的必要性[J].管道技术与设备,1998,(1):40-41.[3]高福庆.管道内检测技术应用及发展[J].石油规划设计,2000,11(1):40-41.[4]杨嘉瑜.用于长输管道检测的智能清管器[J].石化管道,1992,22(2):17-22.[5]杨理践,王玉梅,冯海英.智能化管道漏磁检测装置的研究[J].无损检测,2002,24(3):100-102.[6]王玉辉.CPLD技术在时差法超声波流量计中的应用[J].微计算机信息,2005,8(2):117-120.[7]赵恒凯,方振和,章俊.输油管道探伤机器人的数据采集技术[J].无损检测,2002,10(6):358-365.[8]路勇.超声测距原理在液压缸行程检测中的分析及应用研究[D].山西:太原理工大学,2003.[9]单董娟,罗超超.基于超声波的地下管道探测研究[J].卷宗,2016(4).[10]刘镇清,黄瑞菊.薄板声—超声检测超声传播模式的实验研究[J].声学学报,2000(3):268-273.[11]朱武.功率超声振动系统的参数识别及其控制的研究[D].黑龙江:哈尔滨工业大学,1999.[12]何元安.大型水下结构近场声全息的理论与实验研究[D].黑龙江:哈尔滨工程大学,2001.[13]李晶,顾晓莉.基于STM32的城市地下管道检测系统[J].中国新通信,2013(22):89-90.[14]朱玉芳,施祖康.智能管道检测机器人[J].机械制造,2003,41(463):13-14.[15]APipelinedArchitectureforHighSpeedAutomatedNDE,C.Fritsch,IEEEUltrasonicsSymposium,1995.[16]ANewGenerationofUltrasonicIn-lineInspectionToolsforDetectingSizingandLocatingMetalLossandCracksinTransmissionpipelines,KReber,IEEEUltrasonicSymposium,2002附录主要程序:voidADC1_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; /*EnableDMAclock*/ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); /*EnableADC1andGPIOCclock*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE); /*ConfigurePC.01asanaloginput*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOC,&GPIO_InitStructure); }voidADC1_Mode_Config(void){ DMA_InitTypeDefDMA_InitStructure; ADC_InitTypeDefADC_InitStructure; /*DMAchannel1configuration*/ DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address; //ADC地址 DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue;//内存地址 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize=1; DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//外设地址固定 DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;//内存地址固定 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord; //半字 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode=DMA_Mode_Circular; //循环传输 DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel1,&DMA_InitStructure); /*EnableDMAchannel1*/ DMA_Cmd(DMA1_Channel1,ENABLE); /*ADC1configuration*/ ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//独立ADC模式 ADC_InitStructure.ADC_ScanConvMode=DISABLE;//禁止扫描模式,扫描模式用于多通道采集 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//开启连续转换模式,即不停地进行ADC转换 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //不使用外部触发转换 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; //采集数据右对齐 ADC_InitStructure.ADC_NbrOfChannel=1;//要转换的通道数目1 ADC_Init(ADC1,&ADC_InitStructure); /*配置ADC时钟,为PCLK2的8分频,即9Hz*/ RCC_ADCCLKConfig(RCC_PCLK2_Div8); /*配置ADC1的通道11为55. 5个采样周期,序列为1*/ ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); /*EnableADC1DMA*/ ADC_DMACmd(ADC1,ENABLE); /*EnableADC1*/ ADC_Cmd(ADC1,ENABLE); /*复位校准寄存器*/ ADC_ResetCalibration(ADC1); /*等待校准寄存器复位完成*/ while(ADC_GetResetCalibrationStatus(ADC1)); /*ADC校准*/ ADC_StartCalibration(ADC1); /*等待校准完成*/ while(ADC_GetCalibrationStatus(ADC1)); /*由于没有采用外部触发,所以使用软件触发ADC转换*/ ADC_SoftwareStartConvCmd(ADC1,ENABLE);}//ADC1转换的电压值通过MDA方式传到SRAMextern__IOuint16_tADC_ConvertedValue;//局部变量,用于保存转换计算后的电压值 floatADC_ConvertedValueLocal;//软件延时voidDelay(__IOuint32_tnCount){for(;nCount!=0;nCount--);}intmain(void){ /*enableadc1andconfigadc1todmamode*/ ADC1_Init(); while(1) { ADC_ConvertedValueLocal=(float)ADC_ConvertedValue/4096*3.3;//读取转换的AD值 Delay(0xffffee);//延时 }}//获取ad值并进行滤波/***********冒泡排序**********/for(i=0;i<3;i++)//1,2,3三个超声波传感器{for(j=0;j<N;j++)//N个数据排序{for(k=0;k<N-j;k++){if(AD_data[i][k]>AD_data[i][k+1])//前面的比后面的大则进行交换{AD_temp=AD_data[i][k];AD_data[i][k]=AD_data[i]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年河北省保定市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年辽宁省大连市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2021年内蒙古自治区呼伦贝尔市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2022年安徽省阜阳市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年辽宁省铁岭市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年江苏省盐城市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024深圳宝安住宅租赁合同(含租客身份核实)3篇
- 2022年公务员省考之行测考前冲刺模拟试卷A卷(含答案)
- 2024某地新材料研发与生产项目技术转让合同
- 2024民房施工环保验收合同3篇
- CBL胸腔穿刺教学设计
- Z矩阵、Y矩阵、A矩阵、S矩阵、T矩阵定义、推导及转换公式
- 软件工程填空题(18套试题与答案)
- 中美欧规范桩基承载力计算设计对比
- 动机式访谈法:改变从激发内心开始
- 瞬时单位线法计算洪水
- 2023-2024学年阿勒泰地区三年级数学第一学期期末统考试题含答案
- 经典红歌歌谱100首-
- 单位红头文件模板(各类通知、任命通知公函红头文件)
- Linux操作系统应用(麒麟系统)PPT完整全套教学课件
- 精神压力分析系统心率变异分析系统-健康管理师团队课件
评论
0/150
提交评论