《基于STM32的红外测距系统设计(34页).doc》由会员分享,可在线阅读,更多相关《基于STM32的红外测距系统设计(34页).doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于STM32的红外测距系统设计-第 32 页基于STM32的红外测距系统设计摘 要随着现代科学技术的发展,出现了很多新的领域,为了实现对物体近距离、高精度的无线测量,本论文对红外测距领域进行了研究。本论文采用单片机作为处理器,编写A/D转换程序及LCD显示程序,红外传感器作为工作模块,完成一套高精度显示、实时测量的红外测距系统。本系统结构简单、体积小、测量精度高、成本低、方便使用。本论文所介绍的是一种基于STM32单片机并运用日本夏普公司型号为GP2Y0A21的红外传感器所设计的红外测距系统。首先,介绍红外线及红外传感器的分类及应用、STM32单片机的简介与功能;其次,阐述红外测距系统工作
2、原理及基本结构并对单片机、红外传感器、LCD液晶显示屏的工作电路做了介绍;再次,对系统进行了整体设计构想,先后对系统硬件及软件进行设计,并对整个系统的功能进行了调试。最后对整个设计进行总结,说明红外测距系统实现的可行性。关键词红外测距;单片机;A/D转换;LCDSTM32-based infrared ranging system designAbstractWith the development of modern science and technology, there are many new areas, in order to achieve the object close r
3、ange, high-precision wireless measurement,this topic of infrared ranging is studied. This topic using SCM as the processor, to write A/D converter and LCD display program, an infrared sensor as a working module, complete set of precision display, real-time measurement of infrared ranging system. Thi
4、s system has the advantages of simple structure, small size and high accuracy, low cost and convenient use.This paper introduced is based STM32 microcontroller and use of Japans Sharp Corporation model GP2Y0A21 infrared sensor designed infrared ranging system. Firstly, introduce the classification a
5、nd application of infrared distance measurement,it also introduces the function of STM32 microcontroller. Then illustrate the work theory and basic structure of it and introduce the LCD screen and work circuit. Again, the system has carried on the overall design idea, successively on the system hard
6、ware and software design, and probes into the function of the whole system debugging. Finally, summarize the entire design to illustrate the feasibility of infrared distance measurement.Keywords Infrared range, SCM, A/D converter, LCD目 录摘要IAbstractII第1章 绪论41.1 课题研究背景及意义41.2 本论文主要研究内容4第2章 红外测距系统硬件设计6
7、2.1 红外测距系统的工作原理62.1.1 时间差法测距原理62.1.2 反射能量法测距原理62.1.3 相位法测距原理62.1.4 三角法测距原理72.2 红外测距系统的基本结构72.2.1 红外传感器模块82.2.2 单片机处理模块92.2.3 LCD显示模块162.3 本章小结17第3章 红外测距系统的软件设计及功能调试183.1 红外测距系统工作流程183.2 软件程序设计193.3 硬件功能调试193.4 软件功能调试203.5 测量数据绘图203.6 本章小结23结论25致谢26参考文献27附录A29附录B35附录C38第1章 绪论1.1 课题研究背景及意义随着科学技术的不断发展,
8、在测距领域也先后出现了激光测距、微波雷达测距、超声波测距及红外线测距等方式。激光测距是以激光为传输信号对目标物体进行精确的测量。激光测距在工作开始瞬间向物体发射出一束很细的激光,并由接受端接收物体反射回来的激光束,同时计时器通过测定激光束从发射到接收的时间进而计算出从测量者到物体的距离。该方法对使用环境要求较高,应用范围较少。微波雷达测距是军事和工业上开发采用的技术,其技术要求严格和设备价格非常之高,在民用市场上几乎得不到应用。超声波测距原理与激光测距原理相似,只不过是以声音为传输介质,但是此方法灵活性差、组件造价相对昂贵,在市场开拓空间并不大。作为一种应用广泛、测量精度高的测量方式,红外测距
9、利用红外线传播时不扩散、折射率小的特性,根据红外线从发射模块发出到被物体反射回来被接受模块接受所需要的时间,采用相应的测距公式来实现对物体距离的测量。红外测距最早出现于上世纪60年代,是一种以红外线作为传输介质的测量方法。红外测距的研究有着非比寻常的意义,其本身具有其他测距方式没有的特点,技术难度相对不大,系统构成成本较低、性能良好、使用方便、简单,对各行各业均有着不可或缺的贡献,因而其市场需求量更大,发展空间更广。红外测距仪是指用调制的红外光进行精密的距离测量,测量范围一般为1-5公里,在100米以内的范围内则超声波测距更有优势,但是超声波测距无法检测到1米以内的区域距离,而红外测距可以精准
10、的测出这一段距离,本论文研究的就是这一种情况的红外线测距。1.2 本论文主要研究内容红外线别名红外光或者热辐射线,是一种波长比红色可见光(约)较长、比微波(约)较短的电磁波。以波长长度为基准,红外线可分为三部分,即近红外线是波长为之间;中红外线是波长为之间;远红外线是波长为之间。物质本身温度在不低于绝对零度(-273.15)的情况下均可以产生红外线。它不能引起人的视觉反应,有显著的热效应(易被物体吸收而转化为内能)。能产生反射、折射、干涉、衍射等光学现象。不易被云雾等悬浮微粒散射而具有较强的穿透力。凭借着诸多优点,红外线在军事、人造卫星以及工业、卫生、科研等工作领域方面的应用日益广泛,有着不可
11、替代的作用及研究价值。红外测距传感器是以红外线为传输介质的精确测量系统,主要应用于现代科学技术、国防军队建设、工业和农业等领域。按照其功能可以分为五种类型:(1)辐射计,又称“发射计”,是一种用于电磁辐射和光谱测量的装置。(2)搜寻和锁定系统,具有寻找和锁定红外目标的功能,确定其空间位置并对它的运动进行追踪。(3)热成像系统,通过辐射的分布图像。(4)红外测距系统。(5)综合系统,是集于两个或者多个的系统功能的组合系统。本论文选用的红外测距传感器GP2Y0A21是由日本夏普公司推出的一款性价比高、最常用的红外测距传感器,与其前身GP2D12相比,测量射程相同,但探测面积略有增加,可用来对物体的
12、距离进行测量。具有体积小、功耗低、价格便宜等优点,而且测量效果好适合在小范围内高精度测量物体的实时距离。红外传感器GP2Y0A21技术规格如表1所示。表1 红外传感器GP2Y0A21技术规格测量射程范围10-80cm最大允许角度40电源电压4.5-5.5V平均功耗33-40mA峰值功耗200mA更新频率/周期25Hz/40ms模拟输出噪声200mV单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成
13、到一块硅片上构成的一个小而完善的微型计算机系统。本论文选用的单片机型号为STM32F103RBT6,其中STM32代表ARM Cortex-M内核32位微控制器;F代表芯片子系列;103代表增强型系列;R表示芯片有64个引脚;B代表内嵌Flash容量为128K字节;T代表芯片封装为LQFP封装;6代表工作温度范围为-4085。第2章 红外测距系统硬件设计2.1 红外测距系统的工作原理2.1.1 时间差法测距原理 时间差法测距原理是将红外测距传感器的红外发射端发送信号与接收端接受信号的时间差t写入单片机中,通过光传播距离公式来计算出传播距离L,见公式(2-1)。 (2-1)式中c是光的传播速度为
14、 。2.1.2 反射能量法测距原理反射能量法是由发射控制电路控制发光元件发出信号(通常为红外线)射向目标物体,经物体反射后传回系统的接收端,通过光电转换器接收的光能量大小进而计算出目标物体的距离L,见公式(2-2)。 (2-2)式中P为接收端接收到的能量,K为常数,其大小由发射系统输出功率、转换效率决定,d为被测目标漫反射率。2.1.3 相位法测距原理相位测距法是利用无线电波段的频率,对红外激光束进行幅度调制并测定调制光往返一次所产生的相位延迟 ,再根据调制光的波长,换算出此相位延迟所代表的距离D,此方式测量精度非常之高,相对误差可以保持在百分之一以内,但要求被测目标必须能主动发出无线电波产生
15、相应的相位值。见公式(2-3)。 (2-3)式中c是光的传播速度为, 是调制信号的角频率。2.1.4 三角法测距原理三角法测距原理是由一个红外发射管和一个PSD(Position Sensing Device 位置敏感检测装置)以及相应的计算电路来实现的。而夏普公司的PSD具有更优良的性能,它可以检测到光点落在它上面微小的位移,分辨率达微米,红外传感器GP2Y0A21正是利用了这个特性来实现对目标物体距离的精确测量。如图1所示。图1 三角法测距原理红外测距传感器首先通过红外发射管发出红外线,遇到障碍物反射回来落在PSD上形成了一个等腰三角形。而两个底角是固定的,由发射管来确定,且红外发射管到P
16、SD的距离为已知,此时便可运用三角函数来推算出高,即我们要测量的距离。本论文就是采用此原理来实现对物体距离的测量。2.2 红外测距系统的基本结构红外测距系统主要有红外传感器模块(包括红外发射端和红外接收端两部分)、单片机处理模块、LCD显示模块三大部分组成。如图2所示。图2 红外测距系统基本结构图3为红外测距系统整体硬件原理图,对应系统组成的三大部分,由图可知,系统工作核心为单片机,红外传感器及LCD液晶显示屏分别接收单片机发出的指令来实现各自的功能,最后结合各个部分的功能来实现整个红外测距系统的运作。对于单片机、红外传感器、LCD液晶显示屏的工作原理及实现功能在下文会一一对其进行介绍。图3
17、红外测距系统硬件工作原理图2.2.1 红外传感器模块本模块选用的是由日本夏普公司研发的型号为GP2Y0A21的红外传感器。引脚图如图4所示。此红外传感器一共有三个引脚,其中VCC(电源电压)为信号接入,接入电源电压为4.5-5.5V,单片机5V工作电压即可;GND为接地引脚,连接地线即可;Vout为模拟电压输出引脚,此引脚输出的模拟电压值为0.4-2.4V,相对应的距离范围是80-10。此引脚需要接入单片机处理模块中的多路A/D转换通道上的任意一路上。即STM32单片机内部A/D转换通道的PA7引脚上。图4 GP2Y0A21引脚图根据红外传感器的电压和相对应的距离测量值可知,夏普GP2Y0A2
18、1系列的红外传感器输出曲线是非线性的,且每个型号的红外传感器输出曲线都不相同。所以对所使用红外传感器的矫正是必须要做的,创建出一张实测输出曲线图,以便在实际测量的过程中获得真实准确的测量数据。图5为本论文使用的红外传感器GP2Y0A21实测输出曲线。图5 夏普GP2Y0A21输出曲线2.2.2 单片机处理模块STM32单片机是ST(意法半导体)公司基于ARM最新Cortex-M架构内核的32位处理器产品,内置128KB的Flash、20K的RAM、12位A/D转换、4个16位定时器和3路USART通讯口等多种功能资源,时钟频率最高可达到72MHz。图6 STM32单片机引脚图图6为STM32单
19、片机的引脚图,由图可见此系列单片机功能之全、用法之便、外设之多,一个共有64个扩展I/O口,方便外接工作模块,这里就不一一介绍了。本论文所研究的红外测距系统应用到以下引脚,如表2所示,除了表2所示之外,还有一些电源引脚和接地引脚,在图上没有一一列出,在这里需要说明一下的是,单片机外加电源为+5.0V,内部工作电源为+3.3V,红外传感器的工作电压为4.5-5.5V,直接接到单片机+5.0V上即可,液晶显示屏LCD1602的电源电压为+5.0V。对于红外传感器来说,工作电压的要求相对严格,过高容易烧坏传感器内部结构,过低达不到指定的测量范围,所以条件允许的情况下应该为其单独准备一个+5.0V的电
20、源。表2 红外测距系统各引脚功能符号引脚名称连接对象及功能23PA7连接红外传感器Vout引脚,作为单片机的模拟电压输入。14PA0连接LCD1602的R/S引脚,作为LCD的输入引脚,接收判断来自单片机的高低电平,然后选择输入指令或者数据。15PA1连接LCD1602的R/W引脚,作为LCD的输入引脚,接收判断来自单片机的高低电平,然后选择写入指令/数据或者读取信息。16PA2连接LCD1602的E引脚,作为LCD的输入引脚,接收判断来自单片机的高低电平对LCD进行使能。8PC0连接LCD1602的DB0引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。9PC1连接LCD16
21、02的DB1引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。10PC2连接LCD1602的DB2引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。11PC3连接LCD1602的DB3引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。24PC4连接LCD1602的DB4引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。25PC5连接LCD1602的DB5引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。37PC6连接LCD1602的DB6引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。38PC7连
22、接LCD1602的DB7引脚,作为LCD的输入/输出引脚,并在单片机与LCD之间传输数据。STM32单片机的最小工作系统,顾名思义就是可以使单片机工作起来同时由最少的器件构成的系统。最小工作系统虽然结构简单,但却是大多数单片机控制系统不可缺少的重要部分,所以要熟练运用单片机的各种各样的功能就必须要熟悉掌握并了解最小工作系统的组成。STM32单片机最小工作系统包括以下四部分:1、电源系统图7 电源系统工作原理图如图7所示,STM32单片机的供电系统设计还是比较简单、易懂、方便使用理解的。从电脑USB端口或者其它的供电设备接入+5V的电源,当选择U8这个USB座时,此时的功能是通过USB座给单片机
23、开发板下载程序和供电;当选择U4这个USB座时,此时的功能是通过USB座与外界进行通信或者给单片机开发板进行供电;随后经过P2(P2是一个500mA的自恢复保险丝,作用是防止单片机工作过程中短路现象的发生,当电源瞬间短路时,会产生强大的电流,这时会把与单片机相连设备的主板给烧坏,同时对开发板自己也是一种保护)到达开关S1和S2,若要给单片机开发板通电需要接通开关S1和S2,若要切断单片机开发板电源,还需要再一次按下开关S1和S2。当单片机开发板得到+5V的电源后,一路经电解电容C12滤波以后会更加稳定的从C12正极输出,供给单片机开发板所需要的地方;另一路直接接入U7(U7是一个型号为AMS1
24、117的稳压芯片,作用就是把+5V的电压稳压成+3.3V的电压)的3引脚上,经过U7稳压以后由2引脚直接输出+3.3V电源,一路经电容C11滤波以后,作为单片机开发板的电源使用或者作为开发板其它器件的+3.3V电源使用;另一路经过电容C13滤波以后,作为单片机开发板A/D转换模块供电电压。2、复位系统图8 复位系统原理图单片机复位系统就是让程序计数器回到0000h这个地址,程序重头开始执行,将一些寄存器、存储单元都置为初始设定值,单片机复位的形式有很多种,比如上电复位、看门狗复位、手动复位等等。本开发板运用的是外接电路来手动复位,如图8所示,STM32单片机采用低电平复位,使复位开关RESET
25、按下单片机接入低电平即完成复位操作。3、时钟系统时钟系统相当于单片机的脉搏,好比人得心跳,其重要性不言而喻。STM32单片机的时钟系统比较复杂,由于单片机本身结构复杂,外设模块又非常多,而需要很高的系统时钟的模块又在少数,同时为了降低时钟功耗减少电磁干扰,单片机一般都采取多种时钟控制方法。本论文主要应用的是SYSCLK(系统时钟)的配置,驱动系统时钟可由3种不同的时钟源:(1)STM32单片机内部有一个8MHz RC高速振荡器,它产生的的时钟信号会兵分2路,一路直接加到时钟选择器开关(SW),这个开关是由STM32单片机的时钟配置寄存器的第0位和第1位来控制,如若时钟配置寄存器的第0位和第1位
26、分别写入0,0的话,内部的8MHz RC 高速振荡器产生的8MHz的时钟信号就可以轻松通过SW开关,此时单片机就产生了8MHz的系统时钟。(2)内部的8MHz RC 高速振荡器产生的8MHz的时钟信号另一路经过一个1/2分频器变成了4MHz的时钟信号加到了PLLSRC(PLLSRC是由STM32单片机的时钟配置寄存器的第16位来控制的)这个选择开关上,如果时钟配置寄存器的第16位写入一个0的话,内部的8MHz RC 高速振荡器产生的8MHz的时钟信号经过1/2分频器变成4MHz的时钟信号,就会成功的通过开关PLLSRC,然后到达STM32单片机的锁相环PLL倍频器(倍频器就是起到一个倍频的作用
27、,通过对时钟配置寄存器的第18-21位来配置),如果对时钟配置寄存器第21-18位写入0110,则就是8倍频输出,之前PLL输入的为4MHz时钟信号,经8倍频以后就输出32MHz的时钟信号了。这时SW第0位和第1位都写入0,则单片机系统时钟为32MHz。(3)在外部8MHz的晶振下和内部的振荡电路的结合下会产生相对稳定的8MHz的系统时钟。其中一路直接通过SW开关设置为01,正好选择了这路产生的8MHz系统时钟信号。另一路是首先通过一个选择开关PLLXTPRE(PLLXTPRE是由时钟配置寄存器的第17位来控制的),如若PLLXTPRE被写入0,这时8MHz的时钟信号就会通过此开关到达开关PL
28、LSRC;如若PLLXTPRE被写入1,这时8MHz的时钟信号就会通过对PLLSRC的设置然后通过锁相环PLL倍频器的扩展加到SW上,通过SW后形成相应系统时钟信号。最后一路是首先遇到了一个1/2分频器,变成4MHz时钟信号后,又到达了PLLXTPRE这个开关然后,随后的设置与上一路时钟信号一样,也可得到相应的系统时钟信号。 从以上的介绍可以看出STM32单片机的系统时钟是很复杂的,需要很多寄存器的配置,而每个寄存器又有很多位的配置等等要求,但是时钟系统却又是单片机工作起来必不可少的部分,所以更详细的学习应该对我们来说是非常必要的。图9为STM32单片机的晶振电路与时钟振荡电路。图9 晶振电路
29、(左) 时钟晶振电路(右)4、程序下载电路在某些定义中,程序下载电路不被定义为单片机的最小工作系统,而本论文所运用到的下载电路是USB下载电路。从图8可知,STM32单片机下载电路支持JATG/SWD下载,同时还支持串口下载通信。由于本论文研究的红外测距系统重点应用USB下载电路,相对于JTAG/SWD下载的原理这里就不详细介绍,其工作原理图如图10所示。图10 JTAG/SWD下载电路本论文主要运用到的是STM32单片机的电源电路、复位电路、USB下载电路、A/D转换等功能,前两者在单片机最小工作系统里已经介绍过,下面介绍一下USB下载电路和A/D转换。STM32单片机主要是采用串口通信的工
30、作原理,串行通信就是指数据一位一位地按顺序传输的通信方式,最简单的串口通信电路只需要2根信号线和一根地线皆可以完成,大幅度地降低了使用成本且能实现远距离传输。在本开发板上,运用了PL2303(用于实现USB座和标准RS-232串行端口之间的转换)的芯片功能来实现直接运用电脑USB口下载程序的功能。由图11可以看出,从PL2303输出的信号直接连接到单片机的USART1这个串口模块上,实现了USB转串行通信的连接。图11 USB下载电路STM32单片机内置3个12位模拟/数字转换模块(ADC),转换时间最快为。ADC模块是一种逐次逼近型模拟数字转换器,具有18个通道(16个外部信号源和2个内部信
31、号源),也具有自校验功能,在任何条件下都能保证较高的转换精度。A/D转换器的主要技术指标有三点:(1)转换时间,从发出启动命令后到转换结束获得完整的数字信号为止所需的时间。(2)分辨率,是指数字量最低位代表的模拟量数值大小。比如5.0V的电压,系统使用10位的ADC进行测量,就相当于把5.0V分成1024份,那么分辨率为5.0/1024=0.005V。(3)转换精度,是指转换结束后所得的结果相对于实际值的准确度,可用满量程的百分数来表示。本论文所设计的红外测距系统只需要一个ADC即可完成。以ADC1为基础来实现A/D转换功能,首先需要对ADC模块的输入通道进行了解,STM32单片机的A/D转换
32、通道很多,共有18路,本论文应用的是通道7(PA7)来实现对Vout的模拟/数字转换。其次就是ADC模块的工作电压,在这18路通道中只能实现0-3.6V之间的转换,也就是说不支持负电压和大于3.6V电压的工作转换。再者就是以什么样方式来启动A/D转换,如单片机的定时捕获、EXTI线中断等等。然后就是ADC转换器的分组,STM32单片机ADC转换器分为2个通道组:规则通道组(最多包含16个转换通道)和注入通道组(最多包含4个转换通道),两个组别只能一组一组进行转换,当一组进行转换时另一组可视为中断,可打断当前执行也可等到执行完毕随后执行。最后就是把通过A/D转换得到的数据存入相应的数据寄存器,等
33、待下一次转换或者结束。对于A/D转换电路来说,如果单片机处理模块是整个红外测距系统的重点研究模块,那么A/D转换电路就是重中之中。从红外测距系统启动开始,到单片机初始化,再到测量距离的实施,最后到LCD的显示,如果A/D转换功能瘫痪,就意味着单片机与红外传感器的沟通桥梁断掉,也就是说大脑与肢体的分离,是不能让整个系统运转起来的。对于此次所采用的STM32单片机的开发板,还有很多功能,比如测温功能、键盘功能、数码管显示功能等等,由于对于红外测距系统的设计没有直接的关系,就不一一进行详细介绍,各部分的工作原理图见附录B里。2.2.3 LCD显示模块本论文所设计的红外测距系统最终是要求显示出测量物体
34、的距离,所应用的液晶显示屏型号为LCD1602。图12为LCD1602原理图。图12 LCD1602原理图由图12可知,LCD1602结构非常简单、使用方便,共有16个引脚,其每个引脚功能表3所示。通过表3所示,把LCD1602每个引脚的功能了解掌握,并与STM32单片机的相应I/O口连接上,烧入显示程序即可完成红外测距系统的最终要求。2.3 本章小结本论文所设计的红外测距系统是以STM32单片机为核心,应用由日本夏普公司研发的型号为GP2Y0A21的红外传感器的测距功能和液晶显示屏LCD1602的显示功能。首先通过对单片机的电源电路、复位电路、时钟电路、USB下载电路和A/D转换电路等功能进
35、行主要学习了解并运用,然后了解红外传感器GP2Y0A21的使用方法与特性,结合单片机和红外传感器的功能,采集出电压并通过电压距离公式转换为测量距离。最后通过LCD1602的显示功能给予显示,使整个系统更加完美的来完成对物体距离的测量。表3 LCD1602引脚功能图符号名称电平输入/输出功能1VSS电源地2VDD电源(+5V)3VL对比调整电压,接滑动变阻器4R/S0/1输入0=输入指令;1=输入数据5R/W0/1输入0=向LCD写入指令或数据;1=从LCD读取信息6E1,10输入使能信号,1时读取信息,10时执行命令7DB00/1输入/输出数据总线line0(最低位)8DB10/1输入/输出数
36、据总线line19DB20/1输入/输出数据总线line210DB30/1输入/输出数据总线line311DB40/1输入/输出数据总线line412DB50/1输入/输出数据总线line513DB60/1输入/输出数据总线line614DB70/1输入/输出数据总线line715BLA+VCCLCD背光电源正极16BLKGNDLCD背光电源负极第3章 红外测距系统的软件设计及功能调试3.1 红外测距系统工作流程在整个红外测距系统工作中,当系统被接入启动电源后,首先,对STM32单片机进行初始化,当单片机接收到红外传感器GP2Y0A21传输的模拟电压信号后,经过A/D转换电路,将输入单片机的模
37、拟电压信号Vout转换为单片机可识别的数字信号,并经过电压距离转换程序,转换出要测量的距离,然后通过10次均值滤波来提高测量的精确度,最后在通过液晶显示屏LCD1602显示出测量结果。红外测距系统工作流程图如图13所示。图13 红外测距系统工作流程图3.2 软件程序设计对便于编程,一定要有一个好的编译器。对于STM32单片机来讲,可以编译其的开发工具有很多,如IAR,KEIL,ADS等等,本论文研究的过程中选择KEIL进行编程的。下面对KEIL进行一下简介:KEIL MDK开发工具源自德国KEIL公司,被全球的嵌入式开发工程师验证和使用,是ARM公司目前推出的最新的针对各种嵌入式处理器的软件开
38、发工具。LEI MDK集成了业内最先进的技术,支持ARM7、ARM9、和最新的Cortex-M系列内核处理器,启动代码不需要人工配置,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。目前KEIL MDK在国内ARM开发工具市场已经达到九层的占有率。红外测距系统软件程序主要由主程序、A/D转换程序、延时函数、LCD显示程序等等,在红外测距系统硬件已经确定的情况下,程序设计步骤为:(1)分析红外测距系统功能,对已知条件及运算控制的要求进行掌握,准确地编写出能完成规定任务的程序。(2)确定所需要函数及算法,根据系统设计要求及功能特点,选择相应的解决方法。(3)设计系统工作
39、流程图,采用直观的方式清晰地表达出程序的整体设计思想。(4)根据系统工作流程图编写源程序,对主函数及子函数的功能进行逐一分析,并写出相应的程序。(5)调试源程序,将编好的程序通过编译去除语法及功能上的错误,然后将程序烧入单片机中以达到最终要求。在这里需要说明的是按照红外传感器GP2Y0A21给出使用手册,正常经过软件编程并成功下载到STM32单片机之后,测量结果所绘制的电压距离曲线应该是一条非线性曲线,如图5所示。但是为了更方地使用此款红外传感器,在更多商家的研究与开发下,通过不断地采集实验数据并对此款传感器进行曲线拟合,最终实现了输出曲线近似线性化的处理。本论文采用了这个拟合之后的公式,并在
40、编程时直接编入电压距离转换公式,烧入单片机内直接进行测量。3.3 硬件功能调试单片机处理模块、红外传感器模块及LCD显示模块是红外测距系统的三大组成,也是硬件设计中重要的部分,所以在设计完成后要分别对这三部分进行功能调试以达到稳定的工作要求。首先,对单片机处理模块进行调试,此模块是整个红外测距系统工作的大脑,所以对此模块的要求绝对要做到万无一失,对此模块我进行了如下调试:(1)检查开发板电源电路是否短路,造成开发板损坏。(2)检查开发板焊接情况,有无虚焊、错焊等现象。(3)检查带有极性原件的焊接是否焊反。(4)在确定整个开发板无误的情况下,先烧入简单程序试一试开发板的功能,随后再烧入红外测距系
41、统程序。其次,对红外传感器模块进行检查,由于本论文重点研究方向不在传感器内部结构与工作原理方面,所采用的红外传感器GP2Y0A21是由日本夏普公司所提供的完整模块,所以只需把单片机编入A/D转换程序后是红外传感器的Vout引脚接入单片机的PA7引脚,通过串口检验是否有电压输入,如若有则证明此模块可以作为所设计系统的红外传感器模块,如若没有,则需调试或者调换另一模块。最后,对液晶显示屏LCD1602模块进行调试,在调试此模块时,遇到的最大一个问题就是对LCD1602引脚3(VL)功能的忽视,最开始并没有对此引脚接入相应的滑动变阻器,导致了无论怎么调试程序或者更改硬件都无法显示最简单的字符,在不断
42、地实验中发现了这个故障,最终接入相应的滑动变阻器并调整到适当的位置,最终在LCD上得到了显示的字符。再者就是由于红外测距系统中单片机与LCD之间的连接为直接采用跳线连接I/O的方法,为了提高系统工作的稳定性及抗干扰能力,防止工作过程中排针与跳线之间松动,单对LCD显示模块又焊接了一块扩展板,把接地端及电源端尽量合并,减少对跳线的使用,提高系统工作稳定性及可靠性。3.4 软件功能调试对于红外测距系统软件的调试,主要是对主程序及子程序的调试,在最开始编写程序的时候,首先对主函数进行大致编写,并逐一加入一些算法公式及相应的函数语句。然后再开始编写相应的功能模块的子程序,对A/D转换程序、LCD160
43、2显示程序等都需要一一编写。在硬件电路制作并调试好以后,便可将编译后的程序下载到单片机中运行调试。根据所设计的电路结构、编写的程序及传感器本身的功能,在测量范围内对各个距离进行多次测量并与实际距离相比较,通过对实验数据的分析,不断调节器件和修改程序使红外测距系统能更精确、更稳定地达到实际使用的要求。3.5 测量数据绘图经过对红外测距系统硬件及软件的调试后使整个系统能正常运行,接下来就是要对整个系统的功能进行实际测量与验证。红外传感器GP2Y0A21正常的电压距离输出曲线为图5所示。由于我们采用的是拟合后的测量公式,见公式(3-1),所测量的数据曲线会有所不同。测量数据如表4所示。 (3-1)式
44、中R代表测量距离,AD代表输入单片机的AD转换值,m,b,k均为常量;m=0.0000954,b=0.000502,k=4。表4 测量数据电压V2.411.340.930.750.630.520.430.40AD754414290235190166141123测量值R cm9.8720.9629.7541.0650.0961.0169.9879.891/(R+k)0.0720.0400.0290.0220.0180.0150.0130.011实际距离cm1020304050607080经过实际测量,得出如表4的实验数据,为了对比实验结果分别以距离、电压两个变量作为横纵坐标对数据进行绘图,由于数
45、据是离散的且不遵守某个函数,选择采用Labview软件进行作图。图14是距离与电压输出曲线图,也就是经过拟合加入常量后的曲线,与实测输出曲线相比更近乎线性化,由图可知,红外测距系统在10-80cm范围内为正常测量范围。图14 电压距离输出曲线图15是1/(R+k)与电压输出曲线,为了使曲线线性化便于分析和处理数据,把公式(3-1)进行整理,使1/(R+k)与电压成线性关系,并绘图。可见,在没有经过公式变换的电压距离输出曲线是一条非线性反比例输出曲线,经过转换,添加常数参数使1/(R+k)与电压成线性关系。图15 1/(R+k)与电压输出曲线图16,图17,图18是测量数据中采集的照片。图16图
46、17图183.6 本章小结对于整个红外测距系统软件的设计,是在硬件设计大致完成的基础上展开的,主要是对STM32单片机运行程序的编写,还有系统整体工作流程的设计与搭建。在程序编写的过程中我深刻地认识到了各种工作语言的重要性,并且你需要对STM32单片机各种函数语句的使用进行掌握,单是函数语句的名称就很难记住,更何况每个语句的功能及使用方法。所以,通过系统软件的设计,在STM32单片机编程着方面我得到了很大的提高,而在编译每个程序的过程中对语句的修改更让我煞费苦心,有的语句可以很通顺的编写成功,而有些语句则需改了又改才可以正常运行。对我自己的品质也进行了历练,让我更加知道了持之以恒的道理。最终所编写的主要工作程序见附录A。从测量数据与绘图来看,本论文所研究的红外测距系统工作范围在10-80厘米,其电压与距离的不是纯线性关系,是一条平滑的非线性反比例曲线。在工作范围内,此系统可以高精度实现对物体距离的测量。当然,系统在工作稳定性上还需要改进。结论对本论文所设计的红外测距系统进行测量、校准发现其测量范围在1