1、12014 年 重 庆 理 工 大 学 电 子 设 计 竞 赛声音定位系统(C 题)2摘要:本系统使用 STM32产生频率为 500Hz的正弦波信号,该信号用 LM386进行功率放大及驱动后输入到蜂鸣器作为声源。接收部分使用拾音器进行接收,首先对接收的信号经过同相放大,使变化的电流信号转换为变化的电压信号。然后经过由 OP07组成的有源带通滤波器,该滤波器的中心频率为500Hz,带宽为 100Hz,增益为 1倍,去除周围环境的声波,滤波后的信号正好是蜂鸣器发出的声音信号。再对滤波后的两路信号经过相移检测电路,可以把滤波后的正弦波转换为方波,以便单片机 STM32对相位差信号进行捕获。声源定位是
2、通过对四个拾音器接收到相位差信号进行处理,经过一套比较完善的算法可得声源的坐标,即可进行声源定位。关键词:500Hz 声音定位 STM32 一、系统方案31.声音信号产生的选择方案一:采用 NE555产生频率为 500Hz的方波用来作为声音信号。它的作用是用内部的定时器来构成时基电路。外部通过简单的电路可获得所得的信号。该电路搭建比较简单,原理易于理解,电路中元器件参数也比较好计算。方案二:用单片机 STM32来产生频率为 500Hz的正弦波用来作为声音信号。该正弦波信号的产生实质上是将正弦波转换的到的数组存入单片机,经 DA转换输出正弦波。方案比较:方案一中,用 NE555产生信源不是很稳定
3、,波形不太规范且信号的频率不固定,这样的信号对本系统不太合适。方案二中,用软件来产生信号,该信号很稳定,是比较标准的频率为 500Hz的正弦波信号,而且,产生波形比较灵活,从而为发挥部分做好准备。因此选择方案二。2.声源的选择方案一:采用低音扬声器作为声源。扬声器是一种把电信号转变为声信号的换能器件。将单片机产生的频率为 500Hz的信号接在扬声器的接收端,扬声器能发出强度比较大的声音信号。方案二:采用无源蜂鸣器作为声源。无源蜂鸣器在提供一定频率的正弦波震荡源时,能够发出声音。试验中用无源蜂鸣器发声时,声音比较清晰,但声音强度比扬声器稍弱。方案比较:这里选择方案二。3.滤波方案的选择方案一:用
4、 RC无源滤波器。通过计算可以较方便的通过匹配电阻电容得出所需要的通频带。该滤波电路抗干扰性较强,有较好的低频特性,并且选用标准的阻容元件易得。方案二:用有源滤波器。有源滤波器是利用可关断电力电子器件,产生与负荷电流中谐波分量大小相等、相位相反地电流来抵消谐波的滤波装4置。有源滤波器除了滤除谐波外,同时还可以动态补偿无功功率。其优点是反映动作迅速,滤除谐波可达到 95以上,补偿无功细致。方案比较:方案一中,谐波滤除率一般只有 80,对基波的无功补偿也是一定的,并且通频带比计算出的要宽,不太符合设计要求。方案二中,电路比较复杂,但通过匹配后能较好的完成带通滤波,能达到预期的要求。因此选择多路负反
5、馈二阶有源带通滤波器,即方案二。二、定位算法理论分析与计算根据题目要求,A,B,C,D 为声音接收模块,现对元坐标系进行坐标变换,以 A 点为坐标原点,建立笛卡尔坐标系,动点 P(x,y)至点 A,B,C,D 的距离之差为一常数,建立数学模型:21=bCa令 , 得 :222122223123 211().-)-).=Ccosin(Csi).xybxytvaxyxytvtvRt bC ( ( ( 令原 方 程 转 化 为 : 2223 3211co(+sin).+sincoRaabbaC 得 :5212121=arctnarcos(sin)CbabRCb三、电路与程序设计1. 声响模块电路设计
6、声响模块是由 STM32单片机输出频率为 500Hz的正弦波,然后从单片机引脚输出,输出的信号经过功率放大电路放大后,再接入到蜂鸣器,驱动发声。2. 声音接收放大器电路设计接收部分是用拾音器接收声音信号。由于拾音器接收到的信号在不经过放大时信号很小,不易检测,故后级利用放大电路将接收的信号进行处理。图 1 放大电路3. 测量、数据处理电路设计根据要求只有当接收到的信号为 500Hz时,我们才能保证接收到的信号是由声源发出的。而拾音器接收到的声音信号是任意频率的,故此 处要进行滤波处理。滤波采用的是带通滤波器,通过电容电6阻的匹配,最终滤波器的中心频率为 500Hz,带宽为 50Hz。拾音器接收
7、到的信号经过带通滤波器后,能够将声源发出的信号滤出,正符合本题要求。图 2 二阶有源滤波电路滤波后的信号为正弦波,但该信号不便于用单片机进行处理,故在后级加入了相移检测电路。其基本功能是对两路正弦波信号进行比较,并根据比较结果输出一路方波信号。并由此来判断声音信号的位置差。能够用单片机然后用单片机进行捕获处理,效果比较满意。图 3 相移检测电路4. 程序设计4.1该系统程序设计主要分为四部分:7用 STM32产生 500hz正弦波; 1利用 STM32的输入捕获捕获相移检测电路后的方波信号; 2利用定位算法,通过单片机对检测到的相位差信号进行处理,得到声源位置 3坐标;将得到的声源位置坐标送
8、TFT屏显示,并将位置坐标存入数组中,实现连续 4显示声源位置轨迹的功能四、测试方案与测试结果1. 测试方法与仪器声源定位测试方法:将声源放在坐标纸上的任意坐标,不让声源发声,记下坐标值(x0,y0)。然后启动声源,让声源发出 1s左右的声音信号,同时单片机接收信号后开始进行计算,计算出的坐标值(x1,y1)通过TFTLCD屏显示出来。2. 测试结果与分析该系统的软件部分设计经验证,实现了捕获、处理、定位功能,如图所示为当声源信号位于(200,100)mm 位置时,通过单片机定位算法得到的位置坐标:图 4 捕获的到的高电平及单片机处理得到的位置信息该系统的缺陷为功率放大模块和滤波模块没有做好,
9、滤波模块实际滤波中8心频率约为 460hz,带宽 100hz。效果不够理想。五、思考与总结经过几天的努力,终于基本完成了声音定位系统的制作与程序设计,在此过程中,收益颇多,熟悉了功放、滤波、放大等模块的制作以及如何利用STM32单片机完成一个系统设计等。在此过程中也认识到了许多不足,为以后的学习指明了方向。六、参考文献(略)9七、附录1、主程序#include “led.h“#include “delay.h“#include “key.h“#include “sys.h“#include “lcd.h“#include “usart.h“#include “timer.h“#include
10、“math.h“/全局变量 x,y 为坐标,以坐标纸左下角为原点,单位 mms32 xx=0,yy=0;u8 xp=0,yp=0;u8 xp1=0,yp1=0;u16 cap_num1=0,cap_num2=0;u32 sum1=0,sum2=0;s16 t1=0,t2=0;u16 pointx280;/定义点的位置数组u16 pointy280;u8 DrawLine_flag=0;/定义画线标志位10extern u8 TIM5CH1_CAPTURE_STA; /输入捕获状态 extern u16TIM5CH1_CAPTURE_VAL; /输入捕获值extern u8 TIM5CH2_CA
11、PTURE_STA; /输入捕获状态 extern u16TIM5CH2_CAPTURE_VAL; /输入捕获值void Display_Change(void);/对声源信号进行处理,得到声源位置/当 t1、t2 情况为负值时,情况如何?void pxf(int t1,int t2)int a=500;int b=350;float v=340;float c1=t1*v/1000;float c2=t2*v/1000;float delta=(b*b-c1*c1)/(a*a-c2*c2);float sita=atan2(b,delta*a)+acos(c2*delta-c1)/sqrt(delta*delta*a*a+b*b);float R=(b*b-c1*c1)/2/(c1+b*sin(sita);xx=-R*cos(sita);yy=R*sin(sita);int main(void)
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。