声音定位系统
摘要
本作品是一个以定位声源位置为目的的小系统,在本系统中我们用launchpad430来提供500HZ的信号,送给扬声器,构成声源模块。用三个声源接收模块来给声音定位,一个声源接收模块来对接收到的信息进行校正,用STC89c52单片机作为中央处理器,它会对通过中断接收到的信息进行处理计算,进而在TFT彩屏上显示声源位置信息。当声源移动时,单片机将对接受到的信息进行刷新,这样就可以在液晶显示屏上显示声源的动态位置信息。这就是对声源定位系统的简单描述。
关键字: Launchpad430、STC89c52、接收模块、TFT彩屏
Abstract
This work is a sound source to locate position for the purpose of small system in the system we use launchpad430 to provide 500 HZ signal, and then the signal is spread through the speaker, this constitutes the sound source module. With three receiving module to sound to sound localization, a sound source receiving modules docked to the information received calibration, with STC89c52 single chip microcomputer as the central processor, it will be through interrupt receiving to process information of the calculation, and in the 12864 LCD display on location information source. When sound moves, the single chip microcomputer by information will docking refresh, and that could be the LCD screen shows the location information dynamic position. This is the sound of a simple description of the positioning system.
Key words :Launchpad430、STC89c52、 receiving module、 TFT
一 、系统方案 1、方案比较与选择 (1)声响模块:
方案一、STC89c52单片机简单实用,便宜也很容易购买,用它产生一个500HZ
左右的信号非常方便,而且写程序也很简单。但考虑到题目要求用3V以下的电压,而STC89c52标准电压是5V,所以STC89c52单片机在这里就显得不合适了。
方案二、555定时器使用简单,而且可以产生500HZ的信号,但电压也不符合,
用3V电源采用升压芯片虽然可以使它的电压升到5V,但是比较麻烦耗
精彩文档
实用标准文案
时,即使把电压升到了5V功耗也不一定达得到,所以我们在这里就把这种方案淘汰了。
方案三、launchpad430做声响模块:它凭借着超低功耗和工作电压比较低的优
点,在这里就占有很明显的优势。 经过上述的方案比较,我们选择方案三,也就用launchpad430来做声响模块。
(2)中央处理模块:
方案一、用STC89c52单片机做中央处理,操作起来比较简单,而且比较容易
购买。里面资源丰富,两个定时器和两个外部中断可以实现数据的采
集,而且对数据进行进一步的处理和计算用STC89c52已经足够。除此之外,STC89C52单片机技术已经非常纯熟,用起来比较容易上手, 不足之处在于52工作频率比较低,这对信号的采集会产生一定的误差。
方案二、用MSP430做中央处理系统,运算速度快,而且还是超低功耗。资源
非常丰富,但相对STC89c52单片机,它要贵很多,而且用STC89c52单片机就可以比较轻松的完成这项任务。
考虑到本题的实际情况,并兼顾经济节约的观念,我们选择STC89c52单片机做为中央处理核心系统。
2、方案流程图及声源定位的实现
生源发射模3、 块发射 500HZ信号 接收模块接收并触发中断 单片机处理信号,得出生源位置 二、 理论分析与计算 1、声响模块分析与计算
声响模块总体是由两部分构成,一部分是信号发生模块,另一部分是微型扬声器驱动模块,由launchpad430产生一个500HZ的信号,通过一个简单的驱动电路使声响模块工作。
2、声音接收放大器分析与计算
声音接收放大器由四部分组成,第一部分是初级放大部分,第二部分是滤波部分,它会选出频率为500HZ的波,第三部分是再次放大我们需要的波形。第四部分是一个单限比较器。这个模块通过一个MIC接受信号,最后输出一个方波。
3、数据处理原理分析与计算
如下图,我们设x1=vdt1,x2=vdt2;dt1,dt2分别为第二个,第三个接收模块相对第一个接收模块的时间差。P、Q分别450mm和600mm。a,m,n,都为变量。
精彩文档
实用标准文案
以下图中左下角的接受器定为原点,则m,n算出来就可以唯一的确定声源的位置。
由图可得:
(ax1)2n2(ax2)2n2qa2m2(ax2)2m2pm2n2(ax2)2
设为a 设为m 设为P 设为a+x1 设为a+x2 设为n
设为Q
这个方程组将在程序中用计算机算出结果m,n(程序见附录),并将结果显示在TFT彩屏液晶屏上。
三、电路与程序设计 1、声响模块电路设计
图一
精彩文档
实用标准文案
2、声音接收放大器电路设计
在这部分中主要有四部分电路:一级放大,带通滤波,二级放大,单限比较。 第一部分:图见图二:
图二
第一级放大用于放大接收到的初始信号,放大倍数在10到20,以便在放大信号的同时尽可能的减少噪声的放大。现选用OP07作为放大IC,因为OP07有偏置电压控制端口,可以更好的放大输入信号。在第三级的放大电路中同样选用OP07。
第二部分:图见图三
图三
设置中心频率500Hz的带通滤波电路,滤去杂波。 第三部分:二级放大图见图四
精彩文档
实用标准文案
图四
第四部分:单限比较,图见附录图五
图五
这部分是模拟和数字电路的接口,将接收到的信号变换为单片机可以识别的高低电平。
3、测量与数据处理电路设计
Launchpad430驱动+扬声器 =声源 接收并放大,中央处理系统产生中断 进入程序得到信息,计算并得到声源坐标 4、程序设计及其流程图
开始等待中断检测接收信号求时间差确定坐标TFT彩屏显示
精彩文档
实用标准文案
四、测试方案与测试结果
1、测试方法与仪器
方法:第一先用示波器测launchpad430产生信号输出端口的波形频率。第二连接好所有电路,用眼睛读出声源在坐标纸上的位置并记录,按下声响模块上的按键,让它产生一秒的信号波,此时读出TFT彩屏液晶上的声源坐标并记录。然后将两次的数据做差,差值就是误差值。 仪器:数字万用表 VICIOR VC890D
函数信号发生器/计数器 SPI1641B 直流稳压稳流源 SG1732SB3A 示波器 UTD2102CEL
2、测试结果一览表(单位:mm)
测量1 次数 理论 x=50 y=50 实际 x=51 y=51 误差 2 2 x=100 y=50 x=101 y=52 3 3 x=150 y=50 x=153 y=50 3 4 x=150 y=100 x=152 y=100 2 5 x=150 y=150 x=151 y=151 2 6 x=150 y=200 x=150 y=202 2
3、测试结果分析
经过测试,可以知道大部分数据都比较准确,有个别数据跟理论数据有点误差。因为实验条件的限制,数据测量误差和一些系统误差都可能会引起这样的结果,所以这是比较正常的。
五、系统总结
本声音定位系统很好的完成了设计要求的各项基本要求和可以做的发挥部分要求。有的地方还超过了题目要求的指标。我们非常高兴在我们经过了努力之后将我们的作品完美的展现给大家。
附参考文献
【1】杨素行 主编.《模拟电子技术基础简明教程》.北京:高等教育出版社.2005年10月第三版。
【2】李朝青 编著.《单片机原理及借口技术》.北京 :航空航天大学出版社.第三版。
【3】张华林 编著.《电子设计竞赛实训教程》 北京 :航空航天大学出版社.第二版。 【4】谢自美 主编.《电子线路设计 实验 测试》武汉:华中科技大学出版社. 第三版。
精彩文档
实用标准文案
附录:500HZ频率
算法程序:
void scan_pin() {
unsigned char flage_a = 0, flage_b = 0, flage_c = 0; double time_a = 0, time_b = 0, time_c = 0, min = 0;
flage_a = 1; flage_b = 1; flage_c = 1;
while (flage_a || flage_b || flage_c) {
精彩文档
实用标准文案
if (mic_a == 1 && flage_a) {
TR0 = 0; // 停止计时(在执行程序前已经开始计时)
time_a = TH0 << 8 + TL0; flage_a = 0;
TR0 = 1; // 开启计时 }
if (mic_b == 1 && flage_b) { TR0 = 0; // 停止计时 time_b = TH0 << 8 + TL0; flage_b = 0;
TR0 = 1; // 开启计时 }
if (mic_c == 1 && flage_c) { TR0 = 0; // 停止计时 time_c = TH0 << 8 + TL0; flage_c = 0;
TR0 = 1; // 开启计时 } }
dt_y = time_b - time_a;
精彩文档
实用标准文案
dt_x = time_C - time_b;
col_y = 17 + dt_y * 34 / 1000; row_x = 25 + dt_x * 34 / 1000;
dt_x = 0;
dt_y = 0; // OUT = 0; }
精彩文档
对时间清零
因篇幅问题不能全部显示,请点此查看更多更全内容