2024电赛G题超声波屏蔽方案简述(附代码)

 一.题目要求

二.方案原理简述

一定频率的正弦波或方波信号经过功放放大后直接连接到超声波探头两端,使其发出超声波,对收音装置有一定屏蔽效果,输入信号频率要与探头频率相对应。

三.方案实现

由stm32单片机作为信号发生装置,利用定时器触发DAC,DMA运输输出19k正弦波信号,相继连接功率放大模块与超声波探头(多个探头并联,数量越多效果越好,但也会相应增加功率),供电部分由电源箱(测评场地提供),稳压模块与固态继电器组成,连接到功放模块,由单片机控制继电器开关,达到可控效果。 音频接收部分:用声音传感器模块与单片机相连,采用定时器触发ADC采样DMA运输,得到采样数组,根据数组值进行后续判断以及控制效果。功率调整则可通过改变单片机输出信号的幅值来实现。

四.模块选择

1.声音传感器模块:MAX4466,灵敏度较高

2.功放模块:TDA2050或LM1875均可

3.固态继电器模块:不带声音即可,否则会自激。

4.超声波探头:如下图,经尝试,频率为19k的探头屏蔽效果最好

5.开关电源降压模块:LM2596S模块(别用LM7805等,功率会大很多)

五.软件部分

1.发出19k正弦波,可调幅值。

配置:DAC触发方式选择定时器触发,开启DAM选择circular,定时器配置注意选择updata event

先生成正弦波数组,前面乘一个系数变量,改变幅值只需要改变该变量的值,系数为1则峰峰值为3.3v。然后开启dac输出和定时器。

注意频率的计算,f=170M/psc/arr/数组个数,这里数组个数是128,系数配置要确保频率尽可能接近19k。

2.音频识别部分

将声音传感器模块与单片机引脚相连,开启ADC采样。

ADC配置如下,同时配置定时器

首先开启ADC采样和定时器,psc和arr值影响采样频率。

然后在回调函数中关闭ADC和定时器,在主函数循环末尾开启

然后在主函数中把获得的数组进行处理,使其以电压值的方式呈现,以便后续fft处理。

对数组进行fft处理,得到其频域信息,存在一数组里。

把得到的频域数组进行判断,分为无声,人声(非自然人声),乐声三种,对应标志位的不同值。这里采用的识别方法是先找到数组中的最大值,把最大值与第一个阈值进行比较,比阈值小则视为无声,否则为有声。把最大值的百分之十作为第二个阈值,计算数组里比第二个阈值大的值的个数N,人声一般个数较多,乐声较低,再找一个数作为第三个阈值与N比较,N大则为人声,否则为音乐。阈值的选取需要不断试验修改,以得到最合适的。可以借助串口进行调试。此方法也不是那么精确,不同音乐可能会影响结果是否正确,测评时新闻联播可准确识别为人声,音乐则识别成乐声与人声不断切换。

接下来便是根据标志位进行相应处理,如点灯和开启继电器。以及按键部分和LCD显示部分。在这里,会出现一个现象,一首歌持续播放,但有时音量低,导致误判为无音乐,比如人在朗读时由没说话的时间,使信号发生器不断开与关,影响正常效果,于是决定延长输出一定时间,即在识别到声音信号从有到无时,不立即关闭,而是延时一定时间再关闭。该功能的实现这里使用定时器中断函数完成。

主函数整体如下

按键34负责改变当前系数值来改变幅值,幅度值数组里的值由自己调试得到,确保这些幅度值出现后系统消耗功率为1-4w步进即可。

这是我们经过调试得到的幅度数组对应的值。

六.比赛心得与经验

由于是大一队伍能力有限,加上时间比较紧,作品有很多不足之处。比如最低功率都有1.2w,无法实现1-4w步进,只能实现2-5w步进。以及音乐与人声识别并不精确,且识别后只能在LCD屏幕上显示,没有做到控制信号发生器的开闭等。各位大神读者们,作为一名初次参加电赛的小白,真诚的希望能够得到众位大神们的点拨,使我能够不断进步。更希望以赛会友,以技会友,以文会友,期待您各种形式的支持!

七.作品展示

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值