2012 年大学生电子设计 TI 杯竞赛
声音定位系统(D 题)
1
一、系统方案
声音信号产生
:用单片机 C8051F310 来产生频率为 500Hz 的方波用来作为声音信号。方波
信号的产生实质上是在定时器溢出中断次数达到规定次数时,将输出 I/O
管脚的状态取反。该程序比较容易实现,且不会占用单片机太多资源。
方案比较:方案一中,用 NE555 产生信源不是很稳定,波形不太规范
且信号的频率不固定,这样的信号对本系统不太合适。方案二中,用软件来
产生信号,该信号很稳定,是比较标准的频率为 500Hz 的方波信号,而且,
产生波形比较灵活,从而为发挥部分做好准备。因此选择方案二。
2.声源的选择
采用无源蜂鸣器作为声源。无源蜂鸣器在提供一定频率的方波震荡源时,
能够发出声音。试验中用无源蜂鸣器发声时,声音比较清晰,但声音强度比
扬声器稍弱。
2
3.滤波方案的选择
用有源滤波器。有源滤波器是利用可关断电力电子器件,产生与负荷电
流中谐波分量大小相等、相位相反地电流来抵消谐波的滤波装置。有源滤波
器除了滤除谐波外,同时还可以动态补偿无功功率。其优点是反映动作迅速,
滤除谐波可达到 95%以上,补偿无功细致。
三、电路与程序设计
1. 声响模块电路设计
声响模块是由 C8051F310 单片机输出频率为 500Hz 的方波,然后从单片
机引脚输出,输出的信号经过三极管后放大后,再接入到蜂鸣器。此时
蜂鸣器的输出电流为 35mA 左右,供电电源为 5V,发声模块的功率低于
200mW,符合本题的要求。
2. 声音接收放大器电路设计
接收部分是用拾音器接收声音信号。由于拾音器接收到的信号在不经过
放大时信号很小,不易检测,故后级利用单管放大将接收的信号进行处
3
发
射
部
分
Q
?
9
0
1
4
1
2
3
5
K
R
1
9
L
S
2
B
u
z
z
e
r
G
N
D
V
C
C
I
O
理,电路中通过 RC 可以把集电极电流的变化转换成电压的变化送到输出
端。
C
3. 测量、数据处理电路设计
根据要求只有当接收到的信号为 500Hz 时,我们才能保证接收到的信号
是由声源发出的。而拾音器接收到的声音信号是任意频率的,故此处要
进行滤波处理。滤波采用的是带通滤波器,通过电容电阻的匹配,最终
滤波器的中心频率为 500Hz,带宽为 50Hz。拾音器接收到的信号经过带
通滤波器后,能够将生源发出的信号滤出,正符合本题要求。
4
Q
2
9
0
1
4
M
K
1
M
i
c
2
0
.
1
u
F
C
1
5
4
.
7
K
R
2
1
1
0
K
R
2
0
1
.
5
M
R
2
2
1
0
u
F
C
1
4
+
5
G
N
D
接
带
通
滤
波
声
音
接
收
放
大
电
路
滤波后的信号为正弦波,但该信号不便于用单片机进行处理,故在后级加
入了一级 LM393 比较器。其基本功能是对两个输入电压进行比较,并根据
比较结果输出高电平或低电平。并由此来判断输入信号的大小和极性。从
滤波器中输出的信号的幅值为 1V 以上,故将比较器的比较端给的比较电
压设定为 500mV 左右,这样当输出的信号是频率为 500Hz 的方波,幅值为
3.3V,能够用单片机进行检测,效果比较满意。
5
V
C
C
3
1
.
8
k
R
1
3
0
.
0
1
u
F
C
7
I
N
0
.
0
1
u
F
C
4
1
.
6
8
k
R
1
6
1
0
k
R
1
5
G
N
D
6
3
6
.
6
k
R
1
0
O
U
T
多
路
负
反
馈
二
阶
有
源
带
通
滤
波
器
1
u
F
C
8
1
0
k
R
1
7
(
单
电
源
供
电
模
式
)
G
N
D
V
C
C
F
c
=
5
0
0
H
z
2
3
1
A
8
4
U
3
A
L
M
3
5
8
P
3
1
8
4
2
1
U
5
A
L
M
3
3
9
P
G
N
D
3
.
3
V
1
2
3
1
0
K
R
2
4
3
.
3
V
G
N
D
4
K
7
R
1
8
O
U
T
G
N
D
0
.
1
u
F
C
1
3
I
N
比
较
器
4. 程序设计及其流程图
4.1 程序设计思想:
设坐标纸为图中的矩形 ABCD。声源在点 O,拾音器分别位于矩形四角 A、
B、C、D。声源到 A 点的距离为 Da,到 B 点的距离为 Db,到 C 点的距离
为 Dc,到 D 点的距离为 Dd。分别经过时间 Ta,Tb,Tc,Td 后,拾音器 A、
B、C、D 接收到信号,然后可以计算出三个时间差值 t1,t2,t3,声音
传播速度为 v。通过下列算法后可计算出声源 O 的坐标值(x,y):
4.1.1 定位算法一:
(1)
(2)
(3)
(4)
单片机检测到的为四个时间点算出三个时间差,上面四个式子可用
6
时间差表示出
解出:
;
(5)
;
(6)
; (7)
;
(8)
;
;
;
;
;
;
上式总共两个未知数四个等式,可以根据任意三个式子解出一组解,
总共会有两组解。由于测出的结果会有误差,所以将所得的两组解进
行平均值求解,则结果误差会减小,准确度会进一步提高。该算法程
序比较简短,适合用单片机处理。
4.1.2 定位算法二:
(1)
7
(2)
=0 (3)
=0 (4)
f1(x,y)=
f2(x,y)=
然后对(3)(4)分别对 x,y 求一介微分:
f1x(x,y)=
f1y(x,y)=
f2x(x,y)=
f2y(x,y)=
;
;
;
;
然后将 f1(x,y),f2(x,y)进行泰勒级数展开,则可得出递推公式:
Xk+1=Xk+
Yk+1=Yk+
;
;
经过递推后可得出比较准确的 O(x,y)的坐标,程序比较大,适合在
PC 机上运行,准确度比较高。
4.2 程序流程图:
主程序流程图:
中断程序流程图:
8