最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

声音定位系统设计

来源:动视网 责编:小OO 时间:2025-09-25 16:19:09
文档

声音定位系统设计

声音定位系统设计摘要从GPS到手机定位,定位系统在我们的日常生活中越来越重要。声音定位,即确定声源(待测目标)在空间中的位置,其在地质勘探、人员搜救、目标跟踪等方面有着广泛的应用。现在已将声音定位应用在可视电话、视频会议等系统中。本系统由两部分组成。声源模块是用单片机产生一个音频信号,该信号用三极管进行放大后输入到扬声器作为声源;接收模块使用麦克风进行接收,然后对接收的信号经过放大,接着经过带通滤波,去除周围环境的噪声,滤波后的信号正好是扬声器发出的声音信号。声源定位是通过对四个拾音器接收到信
推荐度:
导读声音定位系统设计摘要从GPS到手机定位,定位系统在我们的日常生活中越来越重要。声音定位,即确定声源(待测目标)在空间中的位置,其在地质勘探、人员搜救、目标跟踪等方面有着广泛的应用。现在已将声音定位应用在可视电话、视频会议等系统中。本系统由两部分组成。声源模块是用单片机产生一个音频信号,该信号用三极管进行放大后输入到扬声器作为声源;接收模块使用麦克风进行接收,然后对接收的信号经过放大,接着经过带通滤波,去除周围环境的噪声,滤波后的信号正好是扬声器发出的声音信号。声源定位是通过对四个拾音器接收到信
声音定位系统设计

摘 要

从GPS到手机定位,定位系统在我们的日常生活中越来越重要。声音定位,即确定声源(待测目标)在空间中的位置,其在地质勘探、人员搜救、目标跟踪等方面有着广泛的应用。现在已将声音定位应用在可视电话、视频会议等系统中。

本系统由两部分组成。声源模块是用单片机产生一个音频信号,该信号用三极管进行放大后输入到扬声器作为声源;接收模块使用麦克风进行接收,然后对接收的信号经过放大,接着经过带通滤波,去除周围环境的噪声,滤波后的信号正好是扬声器发出的声音信号。声源定位是通过对四个拾音器接收到信号的时间先后进行处理,经过一套比较完善的算法可得声源的坐标,即可进行声源定位,最后将声源的具体坐标显示在液晶屏上。

设计完成后,进行了整体测试,基本能够达到设计要求。

关键词:定位,时间差,滤波,设计

Design of Sound Positioning System

ABSTRACT

From the GPS to the phone positioning, positioning system in our daily life plays an increasingly important role. Sound localization, that determines sound source (test target) position in space, and its geological exploration, search and rescue personnel, target tracking, and so has a wide range of applications. Now sound positioning has been applying in video telephony, video conferencing systems.

This system is to use MCU produce a audio signal, which is amplified by the transistor input to the speaker as the sound source. Receiving section for receiving the microphone, the first of the received signal after amplification and then through a band-pass filter, remove ambient noise, the filtered signal just beep emitted sound signal. Sound source localization is achieved by the four pickups have received the signal processing time, through a more perfect sound source algorithm can be obtained coordinates to the sound source localization. Finally, the sound source the specific coordinates displayed on the LCD screen.

After the completion of the design, has carried on the overall test, basic can meet the requirements.

KEY WORDS: positioning, time gap, filtering, design

1 绪论

1.1 课题研究背景及意义

在电子对抗领域,对辐射源位置信息侦察越精确,就越有助于对辐射源进行有效的战场情报信息获取和电子干扰,以及精确的打击,为最终摧毁目标提供有力的保障。因此,对辐射源的无源定位技术在电子对抗领域占有很重要的地位。利用多个已知辐射源的信号可以对目标定位,这通常是指目标对自身的定位,其典型应用就是GPS全球卫星定位系统,它具有全天候、高精度、隐蔽性强等优点。但是由于辐射源信号形式已知,接收机极容易受到电子干扰,导致定位性能降低。并且目前我国并不掌握GPS的主动权,因此对其使用的效果就会大打折扣。实现对目标的定位也可以利用第三方的辐射源信号。这种方法是指通过已知参数和位置的第三方辐射信号和经过目标反射信号的相关接收和处理,对目标进行定位,因此它对于隐身目标和寂静目标具有较强的定位能力[1]。

对目标的定位,还可以利用目标上的无意辐射和有意辐射来进行,这一类定位通常称为无源定位。在不发射对目标照射的电磁波的条件下,通过测量雷达、通信等发射机(辐射源)的电磁波参数来确定辐射源及其携载平台或目标的位置信息和航迹。无源定位具有作用距离远、隐蔽性好等优点,对于提高系统在电子战环境下的生存能力具有重要作用。随着测量技术、信号截获和处理技术的发展,无源定位技术在电子战系统中占据着越来越重要的地位[2]。目前无源定位的方法主要包括:

(1)时差定位:利用三个或者多个侦察站,测量出同一信号到达各侦察站的时间差进行定位。

(2)基于子空间定位:来源于现代高分辨谱估计技术。子空间技术是阵列信号处理技术中研究最多、应用最广、最基本也是最重要的技术之一。

随着科技的进步,定位已经在我们的日常生活中扮演的角色越来越重要。确定一个声源在空间中的位置是一项有广阔应用背景的有趣研究,将来可以将语音声源定位应用在可视电话、视频会议等系统中检测说话人的位置。声源定位通过测量物体发出的声音对物体定位,与使用声纳、雷达、无线通讯的定位方法不同,前者信源是普通的声音,是宽带信号,而后者信源是窄带信号。对声源位置的确定能给大家有效的利用声音提供帮助。事实证明,声源定位系统是一个很有意义的研究课题[3]。

综上所述,由于声音定位的众多优点,在很多条件下都具有十分广泛的应用前景。所以对声音定位的研究有十分重要的理论意义和工程价值。

1.2 国内外研究现状

由于定位导航在生产生活和军事中所发挥的巨大作用及该领域潜在的丰厚利润使得国内外都投了大量的人力物力进行研究。特别是近年来移动定位服务的需求,进一步推动了定位技术的研究。在卫星定位导航方面,2003年3月26日在欧洲交通会上发起实施了伽俐略(Galileo)卫星导航定位系统,该系统将于2008年完成,标志着欧洲将拥有自己的卫星导航定位系统。2003年11月10日,欧盟15个国家依次签署了我国参与欧洲“伽利略”计划的正式协议,中国成为加盟“伽利略”计划的唯一的非欧盟国家。另外,我国开发了双星定位导航系统,并于2000年底成功发射了“北斗试验卫星”,相关的应用正在积极的研发中。在移动通信定位方面,从定位算法的研究到各种定位系统的开发也成为当前一个研究热点。各大公司,如Motorola、Nokia、Ericsson、QUALCOMM等都在积极开展对基于GSM、IS-95和第三代移动通信系统的定位技术的研究,并且制定了相应的实施方案,同时也出现了一些专门从事定位技术研究与开发的公司。目前,一些定位系统已经投入使用,以提供一些简单的定位服务,如中国联通采用QUALCOMM公司的GPS one技术可以提供相当精确定位服务,如安全监护、个人导航、消费指南等,中国移动也已经在广东、福建等地进行了移动定位服务的试点工作。由于TDOA技术所具有的优良性能,在各种定位系统的开发中,都将TDOA定位技术作为其备选方案,如GSM系统中选用的增强观测时间差(E-OTD)定位法,其原理同TDOA类似,WCDMA系统中选用的OTDOA-IPDL法,这进一步促进TDOA技术的研究[4]。

查阅近期发表的论文,对TDOA定位算法研究具有代表性的有:C.K.Chen和W.A.Garder在论文中对基于通信信号循环平稳特性估计波达时差进行了系统分析Y.T.Chan提出了一种在TDOA误差服从理想高斯分布时性能优良的定位算法;Ling Cong在论文中对TDOA定位中非视线传播误差进行了研究,同时对TDOA与AOA的混合定位进行了探讨.国内对移动通信定位技术研究起步较晚,这两年呈快速上升的趋势,一些院校主要有国防科技大学、西南交通大学、北京邮电大学等及华为、中兴等通信公司在从事这方面的研究[5]。

1.3 设计任务

设计一套声音定位系统。在一块不大于1m2的平板上贴一张500mm×350mm的坐标纸,在其四角外侧分别固定安装一个声音接收模块,声音接收模块通过导线将声音信号传输到信息处理模块,声音定位系统根据声响模块通过空气传播到各声音接收模块的声音信号,判定声响模块所在的位置坐标。系统结构示意图如图1-1所示。

图1-1 声音定位系统结构示意图

具体要求如下:

(1) 设计制作一个声响模块,含信号产生电路、放大电路和微型扬声器等,每按键一次发声一次,声音信号的基波频率为500Hz左右,声音持续时间约为1s。

    (2) 设计制作四路声音接收模块,由麦克风、放大电路等组成,并分别与信息处理模块相连接,以便将频率为500Hz左右的信号传送至信息处理模块。

(3) 设计制作一个信息处理模块,要求该模块能根据从声音接收模块传来的信号判断声响模块所在位置的x、y坐标,并以数字形式显示x、y坐标值,位置坐标值误差的绝对值不大于30mm。

2 定位分类及原理

2.1 定位系统的概述

无源定位技术实质上是定位方法与定位算法的融合。具体的说,要实现无源定可分为两个步骤。首先,利用现有的测量技术,尽可能多的获得辐射源的参数以及辐射信号的参数,根据这些信息来选择相应的定位方法。其次,建立观测模型,根观测模型选择正确的有效的定位算法。对辐射源的无源定位因为其目的的不同,对位精度的要求也不相同,所采取的定位方法和定位算法也不相同,对电子侦察、干扰机来说,定位精度要求较低,一般认为在2km左右,对EOB分析、武器传感器位来说,定位要求较高,在1km左右,而直接用于引导时,定位精度要求很在0.1km左右[6]。无源定位框图如图2-1所示。

图 2-1无源定位框图

定位声源的精度受多方面因素的影响,因此声无源定位系统所面临的难点主要有:

(1) 定位系统不仅受到噪声的干扰,而且由于反射作用,会产生相关噪声。这样各传感器间噪声的互相关函数就不等于零,从而增大了定位的难度。

(2) 由于反射,传感器不仅收到声源的直接到达部分,还收到反射部分。而声音的反射会导致互相关函数或者波束的尖峰扩展,使得难以确定最大值,从而加大了定位的误差。

(3) 对于摆放的线性传感器,当声源在方向角比较小的位置时,会影响几何近似的精度,从而给传感器与声源间距离的确定引入了比较大的误差。因此,声源与传感器的相对位置也会极大地影响定位的精度。

(4) 传感器的摆放。对于一个定位系统而言,传感器的数量越多,传感器的相对位置越多样化,提供的空间信息量越大,从而具有较高的定位精度。而在实际系统中,传感器的摆放位置比较固定,数量也比较少。因此难点就是在尽量少的传感器和固定摆放位置条件下,提供高的定位精度[7]。

多基传感器声无源定位系统有很多难点,但是它较之单传感器系统具有许多优点,其优越性表现在:

(1) 多基传感器系统具有空间选择特性,可以用瞄准的方式从所需的声源位置提供高品质的信号,同时抑制其他说话人的声音和环境噪声,因此可以取得明显的消噪效果。在这一点上,传感器阵列明显优于良好瞄准的、高方向性的单传感器系统。

(2) 高方向性的单传感器系统通常只能拾取一路信号,且一般不能随声源一起运动,这就了它的使用范围,而且由于说话人的一些运动,也会导致其接收效果下降。多基传感器系统不要求在声源本地放置传感器,也不会说话人,并且不需要移动以改变接收方向。这些特性有利于它获取多个或移动声源,并且可用于一些特殊的场合。

(3) 它具有单个传感器不具备的性能,即自动探测、定位,并且在其接收区域内追踪正在说话的人。如果算法设计精简得当,则系统可实现高速的实时跟踪定位。

2.2 常用定位技术介绍

2.2.1 GPS定位系统

GPS是英文Global Positioning System的缩写,即全球卫星定位系统。GPS系统是目前技术上最成熟且已实用的一种卫星导航和定位系统。它由24颗卫星组成,对于地球任何位置,均能观测到6-9颗卫星,并能保持良好的定位精度几何图形,提供了在空间连续的全球导航能力。设计粗码定位精度为100m左右,精码定位精度为10m左右。对于各种定位导航应用来说,一个最直接的解决方案就是在移动台上增加一个GPS接收机,称为辅助GPS定位技术(A-GPS),如联通公司就采用了这项技术。移动台接收GPS信号,并且通过反向链路将收到的信号发送给基站,由基站对GPS信号进行处理,得到位置信息。这种方法虽然可以达到一个很高的精度,但是它会增加移动台的体积和重量,并且对移动台电源消耗严重,大大地减少了通信时间。同时,GPS工作在L波段,蜂窝通信系统使用的频率不同,因此移动台的天线也必须重新设计,这些都将导致移动台费用的提高。另外,移动台定位时,GPS接收机至少同时需要四颗可见卫星,这在有强遮蔽物的环境中(如城市、室内)是无法作到精确定位,而对于车辆的导航定位优势明显。

2.2.2 TDOA技术

时差(TDOA)定位又称为双曲线定位,是一种重要的无源定位方法,它是通过处理三个或更多个传感器采集到的信号到达时间测量数据对未知声源进行定位的。在二维平面中,声源信号到达两个传感器的时间差确定了一对以传感器为焦点的双曲线,利用三站就可形成两对双曲线来产生交点,再利用测向信息排除虚假点,就能把声源的位置确定下来。若要确定三维空间的声源,声源信号到达两传感器的时间差规定了一对以两传感器为焦点的双曲面,则至少需要四个传感器形成三个单边双曲面来产生交点,以确定声源的位置。

时差测量定位技术来自于“罗兰”定位系统,罗兰导航系统,依据来自三个己知位置的发射机的信号来确定自身的位置,而时间差测量定位系统是利用三个己知位置的传感器接收某一个未知位置的声源的信号,来确定声源的位置。因此,时间差测量定位系统可以认为是反“罗兰”系统。它是通过处理三个或更多个传感器采集到的信号到达时间测量数据对未知声源进行定位的。

时间差测量定位的精度在很大程度上决定于到达时间的测量精度和传感器,因此如何提高时间测量精度和系统的定位精度是时间差测量定位的一个重要研究内容。而要了解一个时差定位系统的定位性能,必须对该系统的定位性能作全面的分析。

基于到达时间差的定位算法,在导航、声纳等领域有广泛的应用。该算法首先估计各传感器之间的相对时延,然后利用估计出的时延,确定声源的位置。在现有的定位方法中,该方法运算量相对较小,实时性较好,硬件成本较低,因而倍受关注。但是,该算法适合于单个声源的定位系统,如果用于多声源定位,性能将会严重下降。基于时延估计的定位方法,基于时延估计的定位算法在运算量上优于其它的定位算法,可以在实际系统中低成本实现[8]。

双曲线定位方法又称TDOA法,从理论上分析,传感器不少于3个就可以对声音源进行目标定,我们首先将问题简化为在二维平面内对声音源的定位。

图2-2 两个传感器确定声源位置曲线

如图2-2,在一个平面上分布有两个传感器A和B坐标分别为(-a,0)和(a,0),当平面上某处S(x,y)发出声波时,两个传感器将先后接收到信号。实验时并不能真正测到事件到达的绝对时间,而只能测出它们的时间差,设声音传播速度为v,可以得到:

                                          (2-1)

等式两端同时乘以得:

                                             (2-2)

联立式(2-1)和(2-2)得:

                                                (2-3)

令:

                                                            (2-4)

式(2-3)化简得:

                                                                      (2-5)

由此可知声源发生的位置应当在到A,B两点的距离差为的曲线上。很明显,该曲线是一条双曲线。根据两节点之间的和声音在空气中传播的速度,可以计算出声音源相对于两节点的距离差。一个对应一条双曲线,两条曲线相交处即是日标所在的位置。因此从理论上讲,一旦获得两个以上的加上传感器之间的己知距离和方位数据,就可以计算出声源的位置。于是可将此结论推广到3个传感器对声源定位的情况。

图2-3 多个声源曲线确定声源位置

如图2-3所示,在平面上分布有3个传感器A,B和C坐标分别为(-a,0),(a,0)和。当平面上某处S(x,y)发出声音时,3个传感器将先后接收到信号。设信号到达A和B的时间差为,到达A和C的时间差为,到达B和C的时间差为,则声源发生的位置应当在到A和B两点的距离差为的曲线和到A和C两点的距离差为的曲线上,确定两条曲线的交点就可以确定声源所在的位置。很明显,3个时间差可得出3条双曲线。由于实验中存在误差,因而3条曲线不会交于一点,而是两两相交形成二角形。求解3个交点的坐标的推导过程如下。设A(-a,0),B(a,0),C(x3,y3),S(x,y)。

3条曲线的方程分别如下:

                                        (2-6)

                                   (2-7)

                               (2-8)

由式(2-6)可以得到:

                                                 (2-9)

由式(2-7)可以得到:

             (2-10)

由式(2-9)和式(2-10)可以得到:

                     (2-11)

令:

                              (2-12)

式(2-11)简化为,将式代入(2-9)中得:

                     (2-13)

令:

                                    (2-14)

将式(2-13)化简为:

                                (2-15)

方程有解的条件:

                                   (2-16)

由于在求解过程中扩大了根的取值范围,因而舍去负根得:

                             (2-17)

同理可得另外两个交点的坐标,设为和。由于传感器在测量过程中受环境以及自身等多方面因素的影响,因而测量的结果为3个点的坐标。为了确定较为精确的声源位置,可以考虑找出3个坐标点形成的三角形的重心,该重心即为发声源的位置。如图2-4所示。

图2-4 声源位于三点形成的三角形的重心

2.2.3 时差定位技术的优势

TDOA方法与其它定位技术相比,存在以下优点。首先,TDOA估计所有的处理都发生在下层网络,所以在现有的移动台上无需做硬件变动,这一点特别适合于移动通信定位系统,较A-GPS定位存在明显的优势[9]。

其次,TDOA是基于测量时差的定位系统,因此不需要知道信号从移动台到基站的绝对时间,对基站上是否有精确的定时参考时钟没有要求,从这点看TDOA定位技术优于TOA定位技术。并且这种技术不需要架设专门的天线,安装费用比AOA便宜。

最后,TDOA定位技术能够取得较高的定位精度。TDOA技术本身可以抗一定程度的NLOS传播,没有LOS信号的情况下,仍可以获得比较高的精度。因此,TDOA技术可以较好的满足移动通信定位的需要,在各种蜂窝通信中,都将TDOA定位技术作为其定位技术备选方案[10]。

2.3 本章小结

本章主要详细的介绍了定位的基本原理及分类,在此基础上,并对现有的几种定位方法进行了详细的对比,介绍了他们各自的优缺点。经过综合对比本次设计采用TODA定位算法比较适合。

3 总体设计方案

3.1 系统方案论证

为了设计出满足需要的系统,必须要先了解系统的基本要求,并能够对其进行深入彻底的分析,才能确立正确的设计方案。系统的设计任务已在第一章中介绍,这里不再赘述。根据分析,得出大概总体框图如图3-1所示。

图3-1 系统总体设计框图

3.1.1 信源模块

方案一:采用12MHz的单片机的定时中断产生500Hz的方波信号,用扬声器作为发声装置。使用简单,可以在响一秒后关闭定时器从而关闭扬声器。能够产生频率很准确的方波信号,并且经过简单的功率放大就可以使扬声器发出很响亮的声音,便于接收。

方案二:采用NE555接成多谐振荡电路产生500Hz的音频信号,但是此种方案的频率不是很稳定,并且不易实现向一秒后关闭扬声器[11]。

综上所述,系统采用单片机的定时中断产生500Hz的方波信号,用扬声器作为发声装置。

3.1.2 声音接收模块

方案一:采用压电式声敏传感器。压电声敏传感器是利用压电晶体的压电效应制成一种能实现声-电转换器件。但压电声敏传感器较为少见,价格较贵。

方案二:采用电容式驻极体话筒。该元件能将一般的声音信号转化为电信号。加上后续的滤波放大电路构成声音接收模块,实现简单,价格便宜。

基于以上分析,系统拟采用方案二进行接收信号。

3.1.3 滤波模块

由于外界的噪音信号比较多,所以在进行信号处理之前要进行滤波。

方案一:接收到的信号经过由LM358组成的二阶带通滤波器,该滤波器的中心频率为500Hz,去除周围环境的噪声。由于对声音信号的准确性要求比较高,所以要有很高的Q值,故要用高阶带通滤波器,所以设计的电路比较复杂而且中心频率不是很稳定。

方案二:采用LM567的选频作用。把他的中心频率设置为500Hz,带宽为50Hz左右,可以达到很好的选频效果。

综上所述,系统选方案二为滤波模块。

3.1.4 信号处理模块 

方案一:采用XC9000系列的FPGA。该种类器件具有并行处理能力,能快速的响应外部的各种数字信号,但在数字的乘除运算等数据处理方面不方便,而且芯片价格较昂贵。

方案二:采用单片机作为控制核心,单片机数算功能较强。在程序相互调用方面,处理方便灵活,适合实际应用。且单片机技术发展较为成熟,价格便宜。

基于以上分析,系统拟采用方案二。使用两片C52单片机作为系统的控制器与信号处理器,实现产生信号与计算出生源位置并控制液晶显示生源坐标。

3.1.5 数据显示模块

方案一:使用传统的数码管显示。但显示的信息量较小且占用的端口资源也较多。

方案二:使用液晶显示屏显示。液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,画面效果好,分辨率高,抗干扰能力强等特点。

基于以上分析,系统拟用方案二,采用1602液晶显示器实现显示生源的坐标。

3.2 系统总体设计

图3-2 系统总体框图

由系统框图可以看出本系统的主要原理,通过单片机的定时中断产500Hz的方波信号作为信源,用麦克风进行接收信号,随后将接收到的信号用LM358进行前置放大,紧接着用锁相环LM567的选频功能进行选频,已达到很好的带通滤波作用。再将锁相环的输出信号接到单片机的外部中断及计数器中断上,单片机进行判断、获取时间差、处理数据等一系列操作最终算出声源的坐标(x,y),最后在液晶屏上进行显示。

3.3 本章小结

在本章重点介绍了系统的总体框架结构,简述了系统各部分的方案对比、特点、作用及功能,简单介绍了系统的工作流程。为整体设计构造出整体框架。

4 硬件设计

4.1 声响模块电路的设计

本次课题中的要求是设计制作一个声响模块,含信号产生电路、放大电路和微型扬声器等,每按键一次发声一次,声音信号的基波频率为500Hz左右,声音持续时间约为1s。由上文所述可知,用单片机的定时中断可以得到频率很稳定、波形很好,很易于控制的方波,可以很好的达到设计要求,综上所述,本次该模块设计用ATC51单片机的定时器中断输出频率为500Hz的方波,然后从单片机引脚输出,输出的信号经过三极管S9012放大后,再接入到扬声器发声[12],如图4-1所示。

图4-1 声响模块电路图

4.2 声音接收放大电路设计

4.2.1 LM358芯片资料

LM358内部包括有两个的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单

电源供电的使用运算放大器的场合[13]。

(1) 直流电压增益高(约100dB);

(2) 单位增益频带宽(约1MHz);

(3) 电源电压范围宽:单电源(3~30V);

(4) 双电源(±1.5~±15V);

(5) 共模输入电压范围宽,包括接地;

(6) 差模输入电压范围宽,等于电源电压范围;

(7) 输出电压摆幅大(0至Vcc-1.5V)。

4.2.2 信号接收与放大电路

接收部分是用麦克风接收声音信号。由于麦克风接收到的信号在不经过放大时信号很小,不易检测,故后级利用运算放大器将接收的信号进行放大,已达到后级电路的要求。设计的电路图如图4-2所示[14]。

图4-2 声音接收放大电路

本次放大电路采用把运算放大器接成同相比例放大电路,放大倍数由R5和R8共同决定,放大倍数Au=R5/R8+1,通过调节R5可以很方便的改变放大倍数,以达到要求。

4.3 选频电路设计

4.3.1 LM567选频电路资料

、脚外接定时电阻及电容决定锁相环内部压控振荡器的中心频率(fo=1/1.1RC)。第脚对地接电容C2为相位比较器输出的低通滤波器。第脚所接电容C2对锁相环的捕捉带宽Bw有影响[15]。

图4-3 LM567的选频电路

    ①、②脚通常分别通过一电容器接地,形成输出滤波网络和环路单级低通滤波网

②脚所接电容决定锁相环路的捕捉带宽:电容值越大,环路带宽越窄。①脚所接电容的容量应至少是②脚电容的2倍。

③脚是输入端,要求输入信号大于等于25mV。

⑤、⑥脚外接的电阻和电容决定了内部压控振荡器的中心频率f0,f0≈1/1.1RC。

⑧脚是逻辑输出端,其内部是一个集电极开路的三极管,允许最大灌电流为100mA。

LM567的工作电压为4.75~9V,工作频率从直流到500kHz,静态工作电流约8mA。

当LM567的输入信号的频率落在其内部压控振荡器中心频率fo附近时,逻辑输出端(8脚)将由原高电平变为低电平,输出一个负脉冲。8脚不仅可以实现选频,而且还有负脉冲形成功能。改变Rp可改变选频频率。

由于8脚为集电极开路输出,故实际应用时,其8脚应接一上拉电阻至电源正极Vdd。

通过试探和误差处理来选择C2,一开始可选择C2的值为C1的2倍。随后可增加C2的值以减小带宽,也可减小C2的值以增加带宽。

4.3.2 选频电路

根据要求只有当接收到的信号为500Hz时,我们才能保证接收到的信号是由声源发出的。而拾音器接收到的声音信号是任意频率的,故此处要进行滤波处理。滤波采用的是带通滤波器。由上文可知,用锁相环的选频功能能够很好的达到要求。用锁相环的选频功能代替贷通滤波器具有以下优点:中心频率很稳定,受外界环境影响比较小;中心频率很方便调节,只需要调节R6就可以调节中心频率;选频特性很好,带宽很窄,带宽很好调节,只需调节C5就可以调节带宽;外围电路简单,实现简单;很方便和后级电路连接,因为带通滤波器的输出接单片机的外部中断,外部中断为下降沿触发,而当有有用信号输入LM567时LM567会输出一个下降沿,刚好符合后级要求。综上所述,故选用锁相环的选频功能实现带通滤波功能。将中心频率设置为500Hz,带宽为50Hz左右。拾音器接收到的信号经过带通滤波器后,能够将生源发出的信号滤出,正符合本题要求。设计的电路图如图4-4所示。

图4-4 选频电路

4.4 显示电路设计

4.4.1 1602

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)[16]。

1602LCD是指显示的内容为16×2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

1602采用标准的16脚接口,其中:

第1脚:VSS为电源地

第2脚:VCC接5V电源正极

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。

第6脚:E(或EN)端为使能(enable)端,高电平1时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

特性:

(1) 3.3V或5V工作电压,对比度可调;

(2) 内含复位电路;

(3) 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;

(4) 有80字节显示数据存储器DDRAM;

(5) 内建有192个5×7点阵的字型的字符发生器CGROM;

(6) 8个可由用户自定义的5×7的字符发生器CGRAM。

特征应用:

微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。

4.4.2 显示电路

把处理好的四路信号分别接到单片机的四个中断源上,两个外部中断,两个计数器中断。当单片机接收到中断信号时,把得到的数据进行处理,用定位算法求出声源的位置坐标,然后经LCD显示出声源坐标。设计的电路图如图4-5所示。

图4-5 显示接口电路

4.5 本章小结

硬件电路是系统设计成败的关键之一,本章对声音定位系统的电路设计做了详细的介绍,内容包括了声响模块电路、接收放大电路、选频电路和显示电路。

5 软件设计

根据设计需求,需要一个声源模块软件和一个数据处理及控制显示模块软件。软件设计总体框图如图5-1所示。

图5-1 总体软件设计框图

5.1 声源模块软件设计

根据本次声源设计的要求,要求实现每按键一次发声一次,声音信号的基波频率为500Hz左右,声音持续时间约为1s。故本次设计用单片机的定时中断来实现此功能。

5.1.1 声源模块软件流程图

图5-2 声源模块软件流程图

5.1.2 声源模块参数计算

由于方波频率f=500Hz周期T=1/500=2ms,让定时器计满1ms,P3.0输出“0”,再计满1ms,P3.0输出取反,这样就可以产生500Hz的方波。

由于晶振为12MHz,所以1个机器周期T=12*1/12_000_000=1us。所以计数值N=t/T=1000,所以定时器初值M=65536-1000,故TH0=(65536-1000)/256,TL0=(65536-1000)%256。T0的方式控制字TMOD=01H。

由于每1ms定时器发生一次中断,故等发生1000此中断时,声音就持续1s,所以等发生1000此中断就关闭定时器中断,并且给P3.0高电平,蜂鸣器关闭,等再次按下复位键蜂鸣器再次向1s。具体程序如下。

#include         

#define uchar unsigned char

#define uint unsigned int 

sbit buzz=P3^0;        //定义蜂鸣器端口

uint count;

void InitTimer0()//初始化函数

{    

    TMOD=0x01;//设置定时器0工作模式1

     TH0=(65536-1000)/256;//定时器装初值

     TL0=(65536-1000)%256;

     EA=1;    //开总中断

     ET0=1;    //开定时器0中断

     TR0=1;    //启动定时器0

}

void main()

{

    count=0;

    InitTimer0();

    while(1)

    {

if(count>=1000)

        {

            buzz=1;    //关蜂鸣器            

             EA=0;       //关总中断

        }

    }

}

void timer0() interrupt 1//定时器0中断服务程序

{

    TH0=(65536-1000)/256;//再次装定时器初值

    TL0=(65536-1000)%256;

    buzz=~buzz;

    count++;        //中断次数累加

}

5.2 数据处理及控制显示

5.2.1 1602的指令说明及时序

    1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。

指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。

指令7:字符发生器RAM地址设置。

指令8:DDRAM地址设置。

指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

读写操作时序如图5-3和5-4所示。

图5-3 读操作时序

图5-4 写操作时序

    1602 LCD的RAM地址映射及标准字库表。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图5-5是1602的内部显示地址。

图5-5 1602LCD内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B40+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”[17]

1602LCD的一般初始化(复位)过程

延时15mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号

写指令38H:显示模式设置

写指令08H:显示关闭

写指令01H:显示清屏

写指令06H:显示光标移动设置

写指令0CH:显示开及光标设置。

5.2.2 数据获得与处理的原理

本次设计的定位算法采用TDOA算法,具体方法已经在前面有过详细叙述。所以关键要得到声源到达不同拾音器的时间差。由于本次设计有四个拾音器,所以需要四个外部中断,但本次设计的数据处理芯片用ATC52只有两个外部中断,所以需要进行外部中断扩展。扩展方法如下:

MCS-52单片机多外部中断扩展方法:

用定时器/计数器溢出中断扩展外部中断

MCS-52有三个定时器/计数器,分别为T0,T1,T2,当他们为计数器工作方式时,当他们的计数端引脚有负跳变信号时,将使T0,T1,T2,计数器加1,利用这一特性,

可将T0,T1,T2,的初值设置为TH=FFH,TL=FFH,当连接T0,T1,T2引脚的外部中断请求输入发生负跳变时,TL加1,产生溢出,向CPU发出请求。这样T0,T1,T2就相当于边沿触发的外部中断[18]。

此外,通常还有四种方法来扩展MCS-52单片机外部中断。1,用串行中断扩展外部中断;2,用查询方式扩展外部中断;3,用Intel8259A可编程中断控制器来扩展外部中断;4,用优先编码器扩展外部中断。具体方法就不在此过多说明。

本次设计采用把两个定时器/计数器改造为外部中断使用,具体方法如以上介绍。故将A,B两个拾音器的信号分别接在INT0,INT1两个外部中断上,C,D两个拾音器分别接在T0,T1两个装满初值的定时器/计数器上,T2定时器/计数器当做定时器使用。

当连接外部中断的A,B,C,D路中某路接收到信号时,该路发生中断,通过设置标志位m来判断是第几次发生中断,当m=1时,为第一次发生中断。在第一次发生中断时,打开T2定时器,让它从0开始计数。然后每次发生中断时就从T2中读取TH2和TL2的值,从而得到ta、tb、tc、td(ta为连接A路的中断服务程序所得参数、tb为连接B路……、tc为连接C路……、td为连接D路……)的值,它们的值为tx=TH2*256+TL2(x为a、b、c或d)。当第四个中断发生(m=4)后关闭所有中断。然后将ta、tb、tc、td互相相减就可以得到两路信号的时间差,进而得到两路信号的距离差,再将所得的距离差带入TDOA算法中就可以求解出声源坐标(x,y),详细程序见附录。

5.2.3 软件流程图

根据本次设计的需求与上文的具体实行实行方法,设计的流程图如图5-6所示。

                   

    (a) 主流程图                                  (b) 中断流程图

图5-6 主流程图与中断流程图

5.3 本章小结

本章是全文的一个重点,本章工作的核心是:将TODA定位算法转化为程序,学会MCS单片机外部中断的扩展问题,通过中断来的迟早获得声源到两两拾音器的距离差,求出声源坐标。

6 总结与展望

6.1 设计总结

文中详细阐述了声音定位系统的研究意义,介绍了目前国内外声音定位系统的应用现状。在经过大量的查阅资料与学习的基础上,本文详细的分析了本设计的几个关键所在,最终得出了总体设计方案,本文并且详细的介绍了本次设计各模块详细的设计方案与具体实施办法。

除此之外,本文主要深入研究了定位算法,特别针对平面声音定位做了详细的研究,详细的介绍了几种常见的声音定位算法。介绍了声源的产生方法;介绍了锁相环的选频功能及用法;介绍了液晶1602的使用方法;介绍了单片机外部中断的扩展方法;并且用单片机实现了平面声音定位。

6.2 设计展望

虽然在不到半年的毕业设计期间,本人从刚开始只知道一些单片机的一些基本知识,一步步完成硬件设计、软件设计的制作,最后完成声音定位系统的设计,但是限于时间问题,还有很多的工作需要进一步完善,接下来的工作可以主要围绕下面三个方面进行:

(1) 改善接收信号的放大电路性能,改进算法,进一步提高定位精度。

(2) 控制声响模块以不间断的连续周期波的形式发出声音信号,当声响模块在坐标纸上移动时,声音定位系统能连续跟踪显示声响模块的x、y坐标值,随机停止声响模块的移动,能立即稳定地显示声响模块的x、y坐标值,误差的绝对值不大于10mm。

(3) 具有显示声响模块移动轨迹的功能。当声响模块在坐标纸上按指定路径移动时,液晶显示屏能动态显示声响模块移动的轨迹,显示的轨迹与声响模块移动的路径一致。

参 考 文 献

[1] 郭引用,翁芸,杨完全.无源探测定位技术分析[J].现代电子技术,2004,第21期:9-11.

[2] 朱丽莉,陈永健.无源探测定位网[J].情报指挥控制系统与仿真技术,2004,第26卷(第5期):22-24.

[3] 单月晖,孙仲康.不断发胀的无源定位技术[J].航天电子对抗,2002,第1期:36-42.

[4] 陆晓燕.基于麦克风阵列实现声源定位[D].大连:大连理工大学,2003,3.

[5] 李剑锋.无源时差定位技术及其应用研究[D].成都:成都理工大学,2007,3.

[6] 邓勇,徐晖.平面三站时差定位中的模糊及无解研究研究[J].系统工程与电子技术,2000,第22卷(第3期):27-29.

[7] 张波.无源时差定位系统的仿真研究[J].测控技术,2005,第24卷(第1期):52-53.

[8] 黄智伟.全国大学生设计竞赛培训教程[M].北京:电子工业出版社,2003:12-16.

[9] 童诗白.模拟电子技术基础(第四版)[M].北京:高等教育出版社,2010:-99.

[10] 黄智伟.全国大学生电子设计竞赛系统设计[M].北京:北京航空航天大学出版社,2006:25-30.

[11] 黄智伟.全国大学生电子设计竞赛电路设计[M].北京:北京航空航天大学出版社,2006:13-17.

[12] 魏立峰.单片机原理与应用技术[M].北京:北京大学出版社,2010:56-65.

[13] 万永波,张根宝等.基于ARM 的嵌入式系统[J].微计算机信息,2005(22):1-2.

[14] 黄智伟.全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(2005)[M].北京:北京理工大学出版社,2007:45-48.

[15] 黄智伟.全国大学生设计竞赛培训教程[M].北京:电子工业出版社.2003:23-28.

[16] 黄智伟.全国大学生电子设计竞赛制作实训[M].北京:北京航空航天大学出版社,2007:31-36.

[17] 康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社.第五版2005:-97.

[18] 康光华.电子技术基础(数字部分)[M].北京:高等教育出版社.第五版2005:102-125.

附录 主程序

#include

#include         

#define uchar unsigned char

#define uint unsigned int 

uchar code table[]="X:";

uchar code table1[]="Y:";

sbit lcden=P3^4;      //液晶使能端

sbit lcdrs=P3^5;      //液晶数据命令选择端

sbit lcdrw=P3^6;    //液晶数据的读与写控制

uchar num=0;

uchar flag=0;       //标志位,启动定时器2

uint Ta,Tb,Tc,Td;

uint x=0,y=0;

void delay(uint z)

{

    uint m,n;

for(m=z;m>0;m--)

     for(n=110;n>0;n--);

}

void Init_ex_int()     //外部中断初始化函数

{

    EA=1;

    EX0=1;

    EX1=1;

    IT0=1;        //下降沿触发

    IT1=1;

}

//计数器0

void InitTimer0()    //初始化函数

{    

    TMOD=0x05;    //设置定时器0工作模式1

    TH0=0x0FF;    //计数器装初值

    TL0=0x0FF;

    EA=1;          //开总中断

    ET0=1;         //开计数器0中断

    TR0=1;         //启动定时器0

}

//计数器1

void InitTimer1()      //初始化函数

{    

    TMOD=0x50;    //设置定时器1工作模式1

    TH1=0x0FF;     //计数器装初值

    TL1=0x0FF;

    EA=1;           //开总中断

    ET1=1;          //开定时器1中断

    TR1=1;          //启动定时器1

}

//定时器

void InitTimer2()      //初始化函数,打开定时器2

{    

    TMOD=0x01;    //设置定时器2工作模式1

    TH2=0;         //定时器装初值

    TL2=0;

    EA=1;           //开总中断

    ET2=1;          //开定时器2中断

    TR2=1;          //启动定时器2

}

void write_com(uchar com)      //写命令

{

    lcdrs=0;

    P0=com;

    delay(5);

    lcden=1;

    delay(5);

    lcden=0;

}

void write_data(uint date)      //写数据

{

    lcdrs=1;

    P0=date;

    delay(5);

    lcden=1;

    delay(5);

    lcden=0;

}

void printc(uint cc)      //将阿拉伯数字在液晶上准确显示

{    

    write_data(cc/100+'0');       //百位

    write_data(cc/10%10+'0');     //十位

//    prints(".");

    write_data(cc%10+'0');        //个位

}

void Initlcd()

{

    lcden=0;

    write_com(0x38);          //设置16X2显示,5X7点阵,8位数据接口

    write_com(0x0c);          //设置开显示,不显示光标

    write_com(0x06);          //写一个字符后地址指针加1

    write_com(0x01);          //显示清零,数据指针清零

}

void date(uint Ta,uint Tb,uint Tc,uint Td)       //定位算法

{

    double m1,n1,m2,n2,b1,b2,c1,c2,c3,c4,d1,d2;     //计算中的中间变量

    uint x1,x2,y1,y2;

    c1=0.34*(Ta-Tb);        //时间差到距离差 单位为毫米

    c2=0.34*(Ta-Tc);

    c3=0.34*(Tc-Td);

    c4=0.34*(Tb-Td);

    m1=(4*c2)/(c1*3);

    n1=(c1*c2-c2*c2+300*300)/600;      //计算中的中间变量

    b1=m1*m1+1-(4*200*200)/(c1*c1);

    b2=n1*n1+200*200-(c1*c1)/4;

    x1=(int)((sqrt((m1*m1*n1*n1-b1*b2))-m1*n1)/b1);     //第一组想(x,y)

    y1=(int)(m1*x1+n1);

    m2=4*c4/(3*c3);

    n2=(c3*300*300+c3*c4*c4-c4*c3*c3)/(600*c3);

    d1=m2*m2+1-(4*200*200)/(c3*c3);

    d2=n2*n2-600*n2+300*300+200*200-(c3*c3)/4;

    x2=(int)((sqrt((m2*m2*(n2-300)*(n2-300)-d1*d2))-m2*(n2-300))/d1);    //第二组(x,y)

    y2=(int)(m2*x2+n2);

    x=(int)((x1+x2)/2);      //最终的(x,y)(取算数平均值)

        y=(int)((y1+y2)/2);

}

void main()

{

    Init_ex_int();

    InitTimer0();

    InitTimer1();

    Initlcd();

    TH2=0;       //定时器2装初值

    TL2=0;

        while(1)

        {

            if(flag==1)      //第一次外部中断发生后打开T2

                {

                    InitTimer2();    

                }

                if(flag==4)      //第四个外部中断发生后关掉所有中断

                {

                    EA=0;       //关总中断

                     ET2=0;        //关定时器2中断    

                   }

                date( Ta,Tb,Tc,Td);

           // date( 300,250,300,250);

            write_com(0x80);        //在1602的第一行上显示X

         for(num=0;num<2;num++)

            {

                write_data(table[num]);

                delay(5);

            }

            //write_data(48);

            printc(x);      //显示X的值

            delay(5);

            write_com(0x80+0x40);       //在1602的第二行上显示Y

         for(num=0;num<2;num++)

            {

                write_data(table1[num]);

                delay(5);

            }

            printc(y);       //显示Y的值

            delay(5);

        }

}

void ex_int0() interrupt 0       //外部中断0的中断服务程序

{

    EX0=0;       //关闭外部中断0

    flag++;

    Ta=TH2*256+TL2;      //读取定时器2中的值

}

void ex_int1() interrupt 0       //外部中断1的中断服务程序

{

    EX1=0;

       flag++;

    Tb=TH2*256+TL2;       //读取定时器2中的值

}

void timer0() interrupt 1       //定时/计数器0中断服务程序

{

    ET0=0;         //关定时器0中断

    flag++;

    Tc=TH2*256+TL2;      //读取定时器2中的值

}

void timer1() interrupt 1      //定时/计数器1中断服务程序

{

    ET1=1;           //关定时器1中断

    flag++;

    Td=TH2*256+TL2;

}

文档

声音定位系统设计

声音定位系统设计摘要从GPS到手机定位,定位系统在我们的日常生活中越来越重要。声音定位,即确定声源(待测目标)在空间中的位置,其在地质勘探、人员搜救、目标跟踪等方面有着广泛的应用。现在已将声音定位应用在可视电话、视频会议等系统中。本系统由两部分组成。声源模块是用单片机产生一个音频信号,该信号用三极管进行放大后输入到扬声器作为声源;接收模块使用麦克风进行接收,然后对接收的信号经过放大,接着经过带通滤波,去除周围环境的噪声,滤波后的信号正好是扬声器发出的声音信号。声源定位是通过对四个拾音器接收到信
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top