基于STM32的声音定位系统
作者:严梓扬 陈金栋 张宏鑫
来源:《中国新通信》 2017年第15期
【摘要】 本系统是用STM32 单片机产生频率为1000Hz 的正弦波信号,该信号用TDA2030 集成运放进行放大及驱动后输入到扬声器作为声源。接收部分使用驻极体话筒进行接收,首先对接收的信号经过单管共射放大,使变化的电流信号转换为变化的电压信号。然后经过由LM393 组成的电压跟随器进行稳压,当电流足够大让指示LED 亮起时,接收模块就向数据处理MCU 发送接收捕获成功信号,负责数据处理的STM32 触发定时器中断,纪录此接收模块收到信号的时间。声源定位是通过对四个驻极体话筒接收到信号的时间先后进行处理,利用归一正方形算法可算得声源的坐标,即可进行声源定位。最后,MCU 将计算结果通过OLED 液晶显示屏模块显示出来。 防摔玻璃杯
中轴旋转门 【关键词】 归一正方形算法 声音定位 STM32
一、理论设计与论证
1. 声音发生模块分析、计算。由于正弦波频率f=1000Hz周期T=1/1000=1ms,让定时器计满0.5ms,
将蜂鸣器输出口反转,再计满0.5ms 后将定时器溢出标志位置1,然后触发定时器溢出中断这样就可以产生1KHz 的正弦波。
2. 声音接收模块分析、计算。由于接收到的信号强度随着距离的增加而快速衰减,因此在驻极体话筒输入电路后需要连接带通滤波和共射放大电路。本作品的输入电路设计有一个LED,当有声音被录入时,电路会根据信号强度产生电流,电流流过LED 出现亮度时,通过wifi 向数据处理单元发送成功捕获的指令,负责数据处理的MCU 将开启定时器中断。我们设计上使用了S9014 作为放大电路的三极管,通过数据手册理论上本电路的电压增益Au=200~450,足够将测试范围内最大距离的时候产生的电流放大到LED 足以产生亮度的范围。 3. 数据处理模块分析、计算。数据处理部分是将信号通过比较器进行处理。信号经过带通滤波后,其幅值可达到3.8V左右,而没有信号时噪声信号幅值比较小。接收模块发送的信号经过比较器后可以被检测出来,比较器端输出3.3V 的高电平,当没接收到信号时,比较器端输出0V 低电平。再将这种信号输入到单片机中进行处理,很方便的能判断是否检测到有用声源信号。比较器是由LM393 构成,在运放的同向端经过10K 滑线变阻器分压,进行阈值设定,反相端输入滤波后的信号,输出端则会输出3.3V 或0V 的方波信号。
二、电路与程序设计
脚手架网 2.1 声音发生模块设计
首先放大电路与MCU 的VCC 连接,输入电压为3.3-5.0V,经过RC 滤波后进入TDA2030 功放模块进行放大,输出电流通过两个三极管进行稳流。C6、R6 的电阻电容串联叫“茹贝尔网络”,起消振防自激作用。因为扬声器是感性负载,长期对扬声器输入直流电压会损坏扬声器。因此C7起到隔直通交的作用,最后扬声器发出声音。
电源散热片 2.2 声音接收模块设计
a) 接收模块。电路VCC 与MCU 的VCC 相连为接收电路供电。驻极体话筒接收到信号之后,信号通过由S9014 组成的共射放大电路进行放大(Au=βRC/(1+β)RB+Rbe ≈ 200-450),然后LM393 电压跟随模块可以起缓冲、隔离、提高带载能力的作用。10K 的可调电阻可以调整反馈信号,消除寄生电容引起的振荡。当充当开关指示的LED 亮起时,就说明电路接收到了声源信号,并且通过wifi模块向数据处理模块发送成功接收的信号指令,开启处理模块MCU 的定时中断。信息提取
b) 滤波模块。声音接收电路中在进行带通滤波的同时对接收到的信号进行了放大。带通滤波的中心
频率为500Hz。
现浇箱梁施工
数据处理部分是将信号通过比较器进行处理。信号经过带通滤波后,其幅值可达到3.8V 左右,而没有信号时噪声信号幅值比较小。声源信号经过比较器后可以被检测出来,比较器端输出3.3V 的高电平,当没接收到有用信号时,比较器端输出0V 低电平。再将这种信号输入到单片机中进行处理,很方便的能判断是否检测到有用声源信号。比较器是由LM339 构成,在运放的同向端经过10K 滑线变阻器分压,进行阈值设定,反相端输入滤波后的信号,输出端则会输出3.3V 或0V 的方波信号。