基于mega16单片机的声波测量与声源定位.docx
- 文档编号:14824902
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:21
- 大小:599.04KB
基于mega16单片机的声波测量与声源定位.docx
《基于mega16单片机的声波测量与声源定位.docx》由会员分享,可在线阅读,更多相关《基于mega16单片机的声波测量与声源定位.docx(21页珍藏版)》请在冰点文库上搜索。
基于mega16单片机的声波测量与声源定位
基于mega16单片机的声波测量与声源定位
∙项目背景
声学定位技术是一项拥有广阔发展前景的技术,在军事和民用上都有极为广泛的应用。
目前,用于声音定位的技术主要有:
声呐水下定位、雷达定位,激光地位,无线通信GPS定位等,这些定位技术已经相当成熟,并且在空中定位水下定位系统中得到广泛的应用,但是这些传统的声音定位技术大都是主动式定位,以致能耗较高,隐蔽性差,而且,对信号处理十分繁琐,硬件设施也非常复杂。
同时经济投入较大,应用技术要求也较高。
∙项目目的
通过三个驻极体话筒、相关的硬件处理系统和mega16单片机对二位平面内的声音信号进行采样及处理,从而实现对二维平面内的声源进行定位,确定声源相对于参考点的距离和角度,并确定出声波的频率。
∙项目优势
与传统声源定位技术相比,该技术具有抗干扰能力强、被动定位、隐蔽性好、适应性高、成本低廉、便于推广等优点。
该技术采用了峰值比较的方法来测量相位差别,继而通过相位差别进行定位,这样只要保证被定位的声源信号强度高于环境的噪声,即可将其定位,如此便能排除噪音的影响;同时,被动接受声源声波,通过计算得出声源位置,隐蔽性好;对绝大部分的声源(包括频率、位置、强度等变化的)均可定位,具有一定的适应能力。
∙硬件电路设计思想
硬件是功能的载体,所以硬件的设计也要以功能的为中心;本作品主要功能是声波的频率测量和声源定位,并且能够排除一定的环境干扰,即只要环境的噪声强度不超过所要定位声源的强度,便能顺利实现声源定位。
通过相关的计算,我们得知通过三个传感器测得其分别获取的声波相位差,以及根据它们之间的几何关系,便能将声源定位,于是我们需要将声源的模拟信号转换为电平信号,以便测量相位差;同时也可以通过直接测量电平信号的频率来获得原始声波的频率;然而,仅仅将声波信号转换为单片机能够识别的高低电平信号,虽然基本功能可以实现,但若环境中有噪声影响怎么办呢?
这样,转换的电平信号便不再是定位声源发出的信号转换的了,从而导致频率的测量和定位的误差,为了解决这个问题,我们采取了将原始波形峰值附近很小的邻域内的波形转换为高电平的方案,这样,只要保证定位的声源强度稍微高于环境噪声的强度,便可以获取能够代表原始声波参数的电平信号;另外为了增强人机交互,使得作品更加人性化,我们采用液晶屏来将测量的结果显示出来,并辅以人性化的各种简单的按键操作,即可操作该作品进行测频和定位:
以上的功能都是依靠硬件来实现的,硬件功能便是如此。
硬件电路实现其功能的过程为信号采集,信号预处理,单片机数据处理,并将结果通过液晶屏显示。
具体设计如下,首先由三套驻极体话筒采集声波信号,再由放大电路分别将其放大,然后进行电压比较,将峰值附近的波转换为高电平脉冲,至此我们将得到三套具有一定相位差的高电平脉冲,然后将其输入单片机的外部中断接口;单片机外部中断触发后,开始进行一系列的数据采集,并进行数据运算,最终将声源的位置信息(在由三个传感器组成的坐标系中的具体位置,极径和极角)和频率计算出来并发送给LCD显示屏,由显示屏呈现给用户。
用户可以通过按按键选择模式,即测定声源位置还是声源频率,按模式选择键可进行重新定位和频率测量。
硬件系统详细设计:
全部的硬件电路设计分为信号采集和预处理系统设计,以及执行系统的设计,外加正负12V电源设计,频率可调正弦波声源设计。
下面进行硬件电路设计方案和测试数据的详细分析。
1.采样系统设计
该部分是要获取声波的波形,声波的获取是通过驻极体话筒实现的,在直角坐标系中放置三个不共线的驻极体话筒,分别位于直角坐标系的原点和坐标轴上,0号传感器位于直角坐标系的原点,1号传感器位于Y轴,具体坐标为(0,3cm),2号传感器位于X轴上,具体坐标为(3cm,0);
驻极体采集的声波信号要输送给放大器,进行信号放大。
驻极体话筒采集到得信号经过电容传送到放大器,放大器是由两级运放组成,第一级放大核心元件是OP07,放大倍数为60倍左右,第二级放大由LM324构成,放大倍数约为20倍,总体的放大倍数为1200倍左右。
OP07是精密运放具有低偏置电压,低温漂,低噪声等优点,非常适合做前端放大器;为了提高精度,这里采用阻值较小的电阻,但是这与获得一个高输入电阻和高增益的目的相冲突,于是便采用了一个T型网络。
如图1
图1
经过实验测得,几米内人们一般谈话的声音在驻极体话筒上可产生几个mV的电压峰值,基于此我们将能够使驻极体话筒产生10mV峰值电压的声音信号强度设定为定位的最佳强度,这样声源可以有更大的动态范围。
因为对于机器人的“耳朵”,这个环境是个一般环境,于是这个声波强度便是一个一般强度,具有很强可移植性。
此信号经过两级放大后,电压振幅可达近12V,于是波动范围最大可从-12V到+12V,这样当信号小于10mV很多时,我们也能够得到一个较大波动。
下面的信号预处理系统中将解释为什么要有一个较大的波动。
2.信号预处理系统
该部分对信号进行预处理,要得到信号的峰值及其附近邻域所转化形成的高电平信号,之后再输入单片机进行处理。
该部分功能实现是有一个峰值获取电路和一个电压比较电路实现:
将放大器放大后的声波信号输入到峰值获取电路,峰值获取电路将输出一个峰值电压值,将此电压值作为电压比较器的一个参考电压并加在其反相输入端,并将放大器输出的信号加大该电压比较器的同相输入端,则此电压比较器将输出一个,经过放大器放大的信号的峰值及其邻域内的电压值转化成的高电平;峰值获取电路核心是一个电容单向充电电路,辅以两个电压更随器,电压跟随器由LM324等元件组成(如图2所示)。
图2
图中第一个运放起到电压跟随的作用,其输入端1接放大电路的输出端,经过电压跟随器,使其具有更强的带负载能力,以便下一步的采峰值处理;电压信号通过二极管对电容充电,由于二极管的单向导电性,电容不能通过二极管放电,所以当电压增大时电容的两端的电压会升高;当电压减小时,电容两端的电压会保持先前的值不变,于是我们便能取得输入电压的峰值U,其实该值要电压信号真正的峰值Up要小,因为二极管有压降Ud,故U=Up-Ud,但是如要保证Up远大于Ud,则该由于二极管压降造成的影响可以降到最低。
经过电压跟随器之后的信号有很大的电流输出能力,可以使得电容充电的过程很快,有利于快速精确地定位。
为了方便下一次定位声波强度较小的声源,电容的电荷需要有所释放,我们便采取在电容两端并联一个大电阻的方式来解决。
电容值和电阻值是通过实验获取的,该值组合即可以使得能够较快的获取电压信号的峰值,又能能够将电荷很快的泻放掉,这样系统就可以很块的进行下一次定位。
获取到峰值之后,将这个峰值作为电压比较器的参考电压并且加在电压比较器的反相端,同时,在同相端加上上一步中通过电压跟随器之后的电压信号,由电压比较器的特点我们知道,只有当同相端电压信号的值大于反相端的峰值时,电压比较器才会输出一个高电平;否则,电压比较器将会输出低电平。
由以上叙述可知,这里的峰值要略低于实际峰值,因此我们便可以从电压比较器的输出端得到一个很窄的高电平脉冲。
脉冲的高度为12V,此脉冲下一步要输入到单片机中,所以我们需要将此高电平匹配成CMOS电平,我们采取方案是在电压比较器输出端接一个大电阻,然后再输入到单片机,这个电阻值范围很广,我们取20K,这样这个电阻和单片机端口的保护电路构成一个分压电路,使得电平自动的匹配。
图3声波原信号与峰值转换高电平信号波形对比1
图4峰值转换高电平信号波形2
图5不同位置传感器接收信号峰值转换高电平信号波形对比
图6不同位置传感器接收信号峰值转换高电平信号波形对比放大图
3.信号处理系统和执行系统
采用maga16单片机,使用外部8M晶振,进行数据采集和处理,处理结果发送给液晶屏1602,进行显示,并辅以按键进行整个系统的控制。
4.正负12V电源和频率可调正弦波声源作简单的介绍
(1)正负12V电源
OP-07等运放需要在双电源模式下工作,所以我们设计了正负12V电源,该电源为线性电源,电原理图如下:
图7
该电源的输入端是电网,电源变压器输出为正负18V,通过过整流桥整流,用两个4700uf的电解电容进行滤波,用三端稳压器7812和7912进行稳压便可得到正负12V的直流电压。
(2)频率可调正弦波声源
电原理图如下:
图8
该电路可分为两部分,一部分是以左边的运放为中心的正弦波振荡电路,右边是以LM386-1为中心的功率放大电路。
正弦波振荡电路采用文氏电桥,但是在文氏电桥的两个电阻两端分别“并”了一个J型FET,目的是为了实现单滑动变阻器控制的连续变频,其原理是:
让J-FET工作在可变电阻区(其特点是Rds随着栅极电压的改变而改变),它们的栅极电压连接到同一个滑动变阻器的输出端上,这样滑动变阻器可通过改变其阻值分配来改变两个FET栅极的电压,进而控制两个FET的漏极和源极之间的电阻,从而改变振荡电路的频率,实现单滑动变阻器连续变频的目的。
另外通过实验我们发现,只有当LM324运放工作在双电源模式下才能产生正弦波振荡,否则就不会产生正弦波振荡,但是必须由电池供电(因为声源需要移动),所以我们采取制造假“双电源”的方案来解决这个问题,即用两个1K的电阻对电源进行分压,并且在其两端分别并联了一个大的电解电容以保证其稳定性。
图9正弦波信号1
图10正弦波信号2
功率放大电路中,核心元件是LM386,电压增益为2倍,由于是OTL输出,故需要通过一个大的电解电容(即图中的C22)接扬声器。
5.电原理总图
图11电原理总图1
系统总电路图2
∙软件设计思想
本系统软件的设计使用前后台的模式,并通过函数指针实现多种工作方式选择。
使用外部中断,触发后,对应的中断服务程序进行数据采集工作,采集完成后,主函数主要负责数据的计算求解以及控制人机界面(液晶屏及按键)的交互。
∙程序流程图
∙程序详细设计过程及功能算法实现
F.位置的测定
1.建立位置测定数学模型
要实现仅仅依靠对声音信号的接收来实现定位,必须考虑不同地点的声波函数中相位因素,通过检测已知阵列接收器之间的相位差,进而计算出其距离差,结合已知的接收器间距,列出声源与各接收器间距之间的方程,求解方程进而求出距离,由距离即可算出在已建立的坐标系中的相应坐标值。
考虑到平面中三个圆心不共线的圆,确定一个唯一的交点,实际过程中应采用不共线的三个驻极体话筒。
邻近的驻极体话筒必处于同一声波周期方位内,从而避免了相位求解过程中的周期性多解问题。
当传感器之间的距离与所要定位声源所发声波的波长相当或比其大时,影响最大;当传感器之间的距离远小于声波波长时,周期性多解问题就可以避免。
由于日常生活中,常见的声音的频率在最大在1000Hz数量级,相应的波长最小在30厘米的数量级。
因此,本系统采用了一个边长为3厘米阵列计算可定位的声源频率将达到6千赫兹数量级,充分的满足了实际问题的需求。
实际过程中,采用测量峰值的方法,通过硬件电路,将所得到的声波信号处理成峰值附近的尖脉冲,比较不同驻极体位置到达该峰值即同一相位的时间,从而方便的得到声源到驻极体的距离差值,避免了不同相位值的换算问题。
实际问题中取声波的波函数为
,取任意两个驻极体,不妨以0号、1号为例,相位相同即
,得到
结合图形中的几何关系列出方程如下:
将以上各式整理可得到关于0x的一元二次方程:
并取其中的正根,即为到0号传感器的距离。
将其带入三角函数式,求解反三角函数,即可得到角度的值。
数学表达式中的符号说明如下:
此外,对于实际中,声源位置较远,可以将02T构成的三角形近似看作直角三角形,从而
,进而求得角度值。
2.使用单片机实现位置测定时算法
首先,时间差的测定。
使用三个外部中断接口接三个驻极体的信号输入端,上升沿有效,当有一个检测到上升沿时,中断服务程序中判断标记变量的值,若为初始值,则为第一次中断触发,则将启动计时器计时,同时,记录时间为0,将标记变量自加一次。
若标记变量为一,说明已经触发过一次中断,此时记录时间值,并将标记变量自加一次;若标记变量为二,则说明是最后一次中断触发,记录时间值,关闭计时器,并将计时器清零,标记变量清零,方便下一次的测量,同时将测量结束标记赋值一,说明一次测量结果完成。
在时间测量过程中,会出现一个波峰恰好出现在两个驻极体之间的情况,此时将造成对不同的波峰时间的测量,测不到真实的数值。
由于这种情况会造成时间差的极大值出现,合理的对计时器的工作进行设置,使得当驻极体之间无波峰出现时,计时器的值在最大值以下变动,当出现中间有波峰时,会造成时间过长的计时器溢出,此时在其中断服务程序中,清零相关标记,对计时器进行重新复位,使得快速舍弃此次计数值,进行下一次的采集数据。
其次,数据的处理。
数据采集完成后,将屏蔽全局中断,进入到数据的计算过程中。
根据数学模型中的算法,将测定的时间值,带入化简计算的一元二次方程的根中,得到距离,并带入三角函数,得到角度的值。
或者通过近似算法得到角度值。
最后,将所得到的值,在液晶显示器上进行显示,显示完成后,初始化相关参数设置,并使能全局中断,进行下一次的数据采集工作。
G.声音频率的测定
频率测量算法及功能实现:
频率的测量,将使用测周期法,利用T/C1的输入捕捉功能,得到两次上升沿触发的计时器值。
当两次值后者小于前者时,表明此过程中计时器无溢出,可根据系统时钟频率除以差值得到频率,反之,则存在溢出,此时将计时器的最大值加到该负的差值上,根据系统时钟频率除以该修正后的差值,可得到频率值。
H.人机交互实现
1.功能概述
本系统采用了液晶屏1602来实现了人机交互的显示。
首先根据1602的数据手册,采用八位并行方式,编写底层驱动程序。
主要包括了液晶屏的写命令函数,写数据函数,初始化函数,清屏幕函数,在指定位置显示字符函数,在指定位置显示字符串函数,在指定位置显示整型数据数值函数。
同时,通过采用三个按键,配合相应的函数指针,其中两个不同的按键操作,调用不同的函数,来实现系统不同测量模式的选择与切换。
主要有位置测量模式和频率测量模式,其中,位置测量模式包括子模式,坐标测量模式和角度近似测量模式,其中坐标测量模式包括高精度测量模式、快速位置测量模式。
2.液晶屏参数
引脚定义:
命令指令:
时序图:
并行写操作:
3.液晶屏驱动软件算法及功能实现
根据lcd1602的命令集以及其并行写操作的时序图,可以编写出底层驱动的程序,实现对液晶屏幕的初始化、清屏、显示字符功能。
4.模式选择功能及算法
首先,系统启动后,使用液晶屏显示欢迎界面,延迟一段时间,待系统稳定后,进入模式选择界面。
其次,使用循环检测按键是否按下,但有按键按下时,判断该按键的值,进而得到对应的函数指针。
调用该函数指针即可实现对应模式的测量功能。
子模式的选择与此类似,仍然使用相同的按键即可实现所有的模式选择功能。
I.程序代码的编写
本系统要将采集的数据,通过计算得到声源的信息数据,并将数据输出。
在此过程中,数据处理占到了非常大的比重。
考虑到单片机的特点,如果对测量的实时性要求不高,声源持续时间较长的情况,可使用浮点型数据,进行精确地位置计算,每次计算大约消耗上百毫秒的时间。
如果要求很高的采样率,来多次捕捉声源的信号值,对计算的速度,便提出了要求。
程序在采用整型数据进行计算。
首先,将采样数据进行同比例放大,便于在整型的计算过程中保证精度的要求。
此外,在计算过程中对于数值较大的数,将其同比例缩小一定倍数,防止计算过程中的溢出。
此外,对于求解开方以及反三角两个较复杂运算,前者采用了自己编写的长整型开方函数,对于后者,则采用二分法查表,进行声源角度的求解。
这些措施极大的提高了数据计算的速度,不同的计算方法,可通过模式选择来实现。
∙软件功能测试
10.浮点型精确计算
三个传感器的计时器时间值如下:
TCNT0_VALUE0=78,TCNT0_VALUE1=53,TCNT0_VALUE2=0;得到声源的距离为为9厘米,角度为25度。
TCNT0_VALUE0=78,TCNT0_VALUE1=43,TCNT0_VALUE2=0;得到声源的距离为为17.7厘米,角度为28度。
11.长整型快速计算
TCNT0_VALUE0=0,TCNT0_VALUE1=53,TCNT0_VALUE2=60;得到声源的距离为为0厘米,角度为65度。
TCNT0_VALUE0=78,TCNT0_VALUE1=0,TCNT0_VALUE2=34;得到声源的距离为为189厘米,角度为61度。
12.角度计算
TCNT0_VALUE0=60,TCNT0_VALUE1=34,TCNT0_VALUE2=0;得到声源的角度为49度。
TCNT0_VALUE0=0,TCNT0_VALUE1=34,TCNT0_VALUE2=70;得到声源的,角度为219度。
TCNT0_VALUE0=0,TCNT0_VALUE1=78,TCNT0_VALUE2=34;得到声源的角度为248度。
∙系统参数分析
13.系统测量原理可以测量的声波范围
由测量原理可知,相邻的驻极体必须处于同一波长范围内,考虑到驻极体之间的距离最大为
厘米,可以计算得到所测量的声音频率存在上限,在15摄氏度的平均温度下,应为8013Hz,远远满足实际情况的测量需要。
14.频率测定的范围
通过T1计数器进行频率的测定,计数的范围为0到65535,系统频率为8MHz,故可测量的频率范围为8MHz/65536到8MHz,即122Hz到8MHz。
15.系统时间测量误差的分析
误差主要来源有两个硬件和软件,硬件方面电压比较器输出的三套高电平脉冲如果宽度不一样的话,导致相位差的改变,以致对定位结果产生影响,为了尽量减小此处的误差,通过尽量减小脉冲的宽度实现,这同时也要求峰值保持电路中电容的放电回路中的电阻要足够大,这也是选择1兆欧姆的原因之一;二是由于系统软件设计使用中断来测量到达峰值的时间,单片机响应中断函数需要6到7个系统时钟周期,但是每个信号的输入都要通过中断,且最后需要的是其差值,同等的时间延迟便可以消除。
16.频率测定的误差分析
采用的计数器存在正负一的数值误差,造成的频率误差在频率较小时,误差较小,当频率较高是误差较大,在正常声音如800Hz时,误差为1Hz。
建议在人类正常发出声音范围内测量。
17.输出数据误差及精度
采用浮点型精确测量,距离可以精确到0.1厘米,角度可以精确到0.1度。
采用长整型快速计算时,距离可以精确到1厘米,角度可以精确到1度。
角度近似测量在1m范围外,角度可以精确到1度。
18.优化改进
由于本系统进行二维的定位,实际过程中声源很难做到完全的共面于传感器,因此会造成一定的误差。
需要使其尽量共面来减少该误差。
(实际情况中,由于声音传播过程中引起的各种效应,干涉等,将加大误差,实际的误差可能会大于该软件算法预计值)。
其它硬件电路参数分析可参看硬件电路设计。
∙系统整体测试
19.频率测试
首先,改变所做声源频率,对频率测量测试,得到610Hz,824Hz,5000Hz,理论值误差在3Hz以内。
20.声源角度测试
对声源角度测试,在环境干扰较小的情况下,测量35度,225度等,误差在5度以内。
当环境比较复杂时,误差相对增加。
21.声源位置测试
系统对位置的测量比较敏感,轻微的波动会引起很大的误差,在一定情况下,能够得到准确的数值,如7cm,110cm。
测试的环境,以及系统在此方面优化设计需要进一步提高。
∙附件
22.系统所需硬件资源
Easyavrmeag16 开发板1
mega16A单片机 118¥
电阻 金属膜电阻58,共1¥,可变电阻20.5¥
电容 独石电容20共1¥,电解电容4共3¥
场效应管 2SK30A21¥
二极管 1N400720.1¥,414850.1¥
集成运放 OP0731.5¥,LM32440.7¥,LM38611¥)
驻极体话筒 30.5¥
三端稳压器 31¥
晶振 10.5¥
按键 30.5¥
拨动开关 21¥
lcd1602 116¥
变压器 借用实验室设备
整流桥 11.5¥
共计:
56¥(包括测试声源及单片机价格)
23.程序代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 mega16 单片机 声波 测量 声源 定位