搜索
bottom↓
回复: 98

STM32做的音频分析仪

[复制链接]

出0入0汤圆

发表于 2009-5-30 18:59:32 | 显示全部楼层 |阅读模式
07年全国大学生电子设计竞赛的题目,今年又开始准备这个比赛了。从寒假开始上手STM32,到现在总算有点感觉了,东西三个人断断续续做了1个多月,还是要多感谢这个万能的论坛啊,学了不少东西,论坛上的大餐太多,我这只能算小菜,哈哈
题目是这样的

音频信号分析仪(A题)
【本科组】
一、任务
设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。
二、要求
1.基本要求
(1)输入阻抗:50Ω
(2)输入信号电压范围(峰-峰值):100mV~5V
(3)输入信号包含的频率成分范围:200Hz~10kHz
(4)频率分辨力:100Hz(可正确测量被测信号中,频差不小于100Hz的频率分量的功率值。)
(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的绝对值小于5%。
(6)分析时间:5秒。应以5秒周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。
2.发挥部分
(1)扩大输入信号动态范围,提高灵敏度。
(2)输入信号包含的频率成分范围:20Hz~10kHz。
(3)增加频率分辨力20Hz档。
(4)判断输入信号的周期性,并测量其周期。
(5)测量被测正弦信号的失真度。
(6)其他。



要求都达到了,还多了一个判断信号类型的功能


(原文件名:IMG_1351.jpg)


(原文件名:IMG_1360.jpg)


(原文件名:IMG_1394.jpg)


(原文件名:IMG_1379.jpg)


(原文件名:IMG_1406.jpg)


(原文件名:IMG_1400.jpg)


(原文件名:IMG_1352.jpg)


(原文件名:IMG_1403.jpg)


(原文件名:IMG_1405.jpg)


(原文件名:IMG_1381.jpg)


点击此处下载 ourdev_531901.rar(文件大小:4.67M) (原文件名:AudioFreq_Analyzer_2009.5.25全功能版(重要备份)修正.rar)

出0入0汤圆

 楼主| 发表于 2009-5-30 19:05:44 | 显示全部楼层
沙发!方波三角波的名字起的不太专业,呵呵,改完也懒得再照了

出0入0汤圆

发表于 2009-5-30 21:00:44 | 显示全部楼层
很不错,关注。

出0入0汤圆

发表于 2009-6-27 15:52:50 | 显示全部楼层
要是能开源就好了.还有楼主方便透露前端用的是什么芯片么??

出0入0汤圆

发表于 2009-6-27 18:21:30 | 显示全部楼层
不错不错......关注LZ能否还能再透露多些(开源)....

出0入0汤圆

发表于 2009-6-27 20:14:53 | 显示全部楼层
不错!
用多高的采样率和多少点的采样,感觉采样点比较少,造成频率分辨率不高。
200Hz~10kHz---采样要20K以上
20Hz的分辨率,如果是20K采样需要1K的采样点做FFT运算
对算法不作任何优化都是可以在5S内分析一次的,问题是RAM够不够?
当然,FFT是有很多优化手段的,如果我们把虚部直接填零进行运算一般是比较浪费时间的。

不知道分析得对不对,有空可以交流!

出0入0汤圆

发表于 2009-7-21 16:31:08 | 显示全部楼层
看到这个帖子想起了2007年9月那几个不眠夜。楼主你用FFT做到多少个点了?我记得要达到题目发挥部分的话是要做到512个点。当时我用凌阳单片机来做。做到了512点。但是是用外置AD来做。运行FFT的速度很快。但是由于时间关系。显示部分没做好。结果没拿什么奖

出0入0汤圆

发表于 2009-7-22 08:56:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-8 01:45:47 | 显示全部楼层
楼主的屏不可以显示中文么?楼主那块是ARM吧?ARM跑1024个点一般没问题的。。。

出0入0汤圆

发表于 2009-8-8 01:48:25 | 显示全部楼层
测出来的频率这么准?想知道楼主用什么方法。。。

出0入0汤圆

发表于 2009-8-8 13:32:23 | 显示全部楼层
功率是怎么算出来的??

出0入0汤圆

发表于 2009-8-13 11:31:22 | 显示全部楼层
同顶一下

出0入0汤圆

发表于 2009-8-13 14:38:40 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-1-31 11:42:57 | 显示全部楼层
回复【3楼】hedianchao
要是能开源就好了.还有楼主方便透露前端用的是什么芯片么??
-----------------------------------------------------------------------

NE5532+MAX4677直接给STM32的AD采集

出0入0汤圆

 楼主| 发表于 2010-1-31 11:47:29 | 显示全部楼层
回复【5楼】moen
不错!
用多高的采样率和多少点的采样,感觉采样点比较少,造成频率分辨率不高。
200Hz~10kHz---采样要20K以上
20Hz的分辨率,如果是20K采样需要1K的采样点做FFT运算
对算法不作任何优化都是可以在5S内分析一次的,问题是RAM够不够?
当然,FFT是有很多优化手段的,如果我们把虚部直接填零进行运算一般是比较浪费时间的。
不知道分析得对不对,有空可以交流!
-----------------------------------------------------------------------

用STM32给的官方的DSP的库里的FFT来做的,好像20HZ分辨率的用1024点,100HZ分辨率的用256个点
RAM够用的,后面过了4096点的FFT用老师改过的算法然后自己超频一下也是能搞定的

出0入0汤圆

 楼主| 发表于 2010-1-31 11:49:16 | 显示全部楼层
回复【6楼】bnn1044
看到这个帖子想起了2007年9月那几个不眠夜。楼主你用FFT做到多少个点了?我记得要达到题目发挥部分的话是要做到512个点。当时我用凌阳单片机来做。做到了512点。但是是用外置AD来做。运行FFT的速度很快。但是由于时间关系。显示部分没做好。结果没拿什么奖
-----------------------------------------------------------------------

最多有用1024个点,STM32的AD能到1M

出0入0汤圆

 楼主| 发表于 2010-1-31 11:50:27 | 显示全部楼层
回复【8楼】lknlfy
楼主的屏不可以显示中文么?楼主那块是ARM吧?ARM跑1024个点一般没问题的。。。
-----------------------------------------------------------------------

可以中文显示,但是用中文的话就一个屏幕显示不完,呵呵

出0入0汤圆

 楼主| 发表于 2010-1-31 11:52:27 | 显示全部楼层
回复【9楼】lknlfy
测出来的频率这么准?想知道楼主用什么方法。。。
-----------------------------------------------------------------------

就是直接AD采进来,FFT找功率最大的那个点啊,很多同学用同样的思路没弄好,我想应该都是定时器和AD采集的没有配合好

出0入0汤圆

 楼主| 发表于 2010-1-31 12:04:39 | 显示全部楼层
回复【10楼】bigflower
功率是怎么算出来的??
-----------------------------------------------------------------------

汗一下,貌似那时候这块的单位没有做对,想想貌似应该是uW,呵呵,最重要的一个地方出岔子了~~~
功率是实部平方加虚部平方除去电阻再除一个AD采集产生的系数得到的
学校没有合适的频谱分析仪来验证下,所以不保证正确

出0入0汤圆

 楼主| 发表于 2010-1-31 12:17:20 | 显示全部楼层
版主要看到的话就帮忙放楼主位吧,在这里收获就在这里付出
阿莫是个强悍的好人,哈哈,最近这里事情挺多的,支持阿莫!

电设比赛准备时候的这个作品的全部相关ourdev_531035.rar(文件大小:3.61M) (原文件名:AudioFreq_Analyzer_2009.5.25全功能版(重要备份)修正.rar)


能做到的效果就上面的图示了,没有经过仪器验证,不保证正确
资料里的PCB板子没有做过,不保证能用,不过应该没问题

出0入0汤圆

发表于 2010-1-31 18:17:57 | 显示全部楼层
烟酒烟酒。。。

出0入0汤圆

发表于 2010-1-31 19:36:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-1 17:54:57 | 显示全部楼层
里面没有原理图和PCB图啊。

出0入0汤圆

发表于 2010-2-1 19:31:20 | 显示全部楼层
GOOD

出0入0汤圆

 楼主| 发表于 2010-2-2 19:47:17 | 显示全部楼层
回复【22楼】sl961102
里面没有原理图和PCB图啊。
-----------------------------------------------------------------------

不好意思,从新传份~~
点击此处下载 ourdev_531901.rar(文件大小:4.67M) (原文件名:AudioFreq_Analyzer_2009.5.25全功能版(重要备份)修正.rar)

出0入0汤圆

发表于 2010-2-3 10:42:47 | 显示全部楼层
mark,好

出0入0汤圆

发表于 2010-2-3 11:12:23 | 显示全部楼层
学习中!!!!

出0入0汤圆

发表于 2010-2-8 11:43:26 | 显示全部楼层
回复【24楼】yycool
-----------------------------------------------------------------------

非常感谢楼主。

出0入0汤圆

发表于 2010-2-8 15:10:41 | 显示全部楼层
谢谢楼主共享!
头像被屏蔽

出0入0汤圆

发表于 2010-5-11 20:00:06 | 显示全部楼层
Cool !

出0入0汤圆

发表于 2010-5-11 21:30:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-11 22:17:41 | 显示全部楼层
学习

出0入8汤圆

发表于 2010-5-11 22:39:30 | 显示全部楼层
记号~

出0入0汤圆

发表于 2010-5-13 06:47:44 | 显示全部楼层
回复【17楼】yycool  
回复【9楼】lknlfy
测出来的频率这么准?想知道楼主用什么方法。。。
-----------------------------------------------------------------------
就是直接ad采进来,fft找功率最大的那个点啊,很多同学用同样的思路没弄好,我想应该都是定时器和ad采集的没有配合好
-----------------------------------------------------------------------

做的不错!

楼主,能否再详细解释下频率测量思路么?

我的意思是,事先不知道测量信号的频率;或者说采样频率和测量信号频率不是成倍关系时,怎么处理?

出0入0汤圆

发表于 2010-5-14 17:42:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-14 18:47:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-15 07:24:11 | 显示全部楼层
不错,很值得鼓励~~

出0入0汤圆

发表于 2010-5-27 13:55:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-27 14:07:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-27 14:42:50 | 显示全部楼层
我也很想知道楼主的频率,具体怎么测的?

出0入0汤圆

发表于 2010-5-28 16:21:10 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-5-28 21:02:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-28 21:44:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-29 07:44:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-29 14:09:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-30 20:41:51 | 显示全部楼层
顶~~哈哈

出0入42汤圆

发表于 2010-5-30 22:02:13 | 显示全部楼层

出0入0汤圆

发表于 2010-5-30 22:45:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-3 09:44:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-3 10:44:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-5 16:00:50 | 显示全部楼层
顶一下!

出0入0汤圆

发表于 2011-4-1 10:28:40 | 显示全部楼层
好牛大大地

出0入0汤圆

发表于 2011-5-26 14:57:50 | 显示全部楼层
牛~~

出0入20汤圆

发表于 2011-5-26 15:08:34 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2011-5-28 14:12:26 | 显示全部楼层
原理图只有一张接口电路,希望能看到控制电路

出0入0汤圆

发表于 2011-6-29 22:19:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-30 09:50:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-30 10:46:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-30 18:28:51 | 显示全部楼层
呵呵,这个比赛我参加过!!!
也是做的这一题!

出0入0汤圆

发表于 2011-7-30 12:47:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-30 21:53:40 | 显示全部楼层
学习中……

出0入0汤圆

发表于 2011-8-9 12:24:39 | 显示全部楼层
回复【14楼】yycool
-----------------------------------------------------------------------

楼主大人你的4096点的算法是直接用在RAM中运行的C语言FFT的算法吗?
还是根据1024的ST DSP库修改出来的的4096点的FFT库?

出0入0汤圆

发表于 2011-8-11 09:54:43 | 显示全部楼层
有屏的型号就可以自己做出来试试了。

出0入0汤圆

发表于 2011-8-11 12:56:42 | 显示全部楼层
最近想做个数字示波器...有值得借鉴的地方...

出0入0汤圆

发表于 2011-8-11 15:11:18 | 显示全部楼层
很好!

出0入0汤圆

发表于 2011-8-12 09:09:53 | 显示全部楼层
额,最近需要分析交流信号,但反应时间需求短。20ms,所以来来下,头疼

出0入0汤圆

发表于 2011-8-12 09:57:23 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-13 22:13:16 | 显示全部楼层
留名

出0入0汤圆

发表于 2011-8-14 08:57:11 | 显示全部楼层
很牛

出0入0汤圆

发表于 2011-8-15 10:34:05 | 显示全部楼层
源代码好大啊……很不错的作品
不过功率计算确实有问题:
1.单位应该是uW(这一点楼主18楼指明了)
2.某一谐波的功率计算公式应为:P = U²/(2×R);【U为该谐波信号的幅值】
而楼主的程序计算公式为 P = U²/R; 这个貌似适用于在直流情况

不知楼主是不是有别的处理是小弟没有考虑到的

出0入0汤圆

发表于 2011-8-15 16:32:09 | 显示全部楼层
这是一定要再次回复的,楼主你的快速排序算法Qsort()太强了,是自己优化过的吗?
我自己看着一本C算法书上的快速排序算法,在PC端的GCC编译器对242点以上的进行排序无法执行出结果,烧到STM32片子上难怪没有响应呢...
而用楼主你的算法4096点居然都只用了2.841s(PC端)……
也许是我对这块儿算法不熟,但是真的很谢楼主

出0入0汤圆

发表于 2011-8-15 17:34:18 | 显示全部楼层
太牛了

出0入0汤圆

发表于 2011-8-16 07:43:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 08:17:56 | 显示全部楼层
值得借鉴,谢谢

出0入0汤圆

发表于 2011-8-16 09:08:49 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-8-16 09:26:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 18:02:04 | 显示全部楼层
楼主失真度的计算有点取巧喔霍……

出0入0汤圆

发表于 2011-8-16 18:04:54 | 显示全部楼层
期待开源!

出0入0汤圆

发表于 2011-8-29 21:00:25 | 显示全部楼层
回复【24楼】yycool  
-----------------------------------------------------------------------

恩,,顶。。

出0入0汤圆

发表于 2011-10-18 22:18:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-8 09:58:23 | 显示全部楼层
同Mark

出0入0汤圆

发表于 2011-11-8 10:24:06 | 显示全部楼层
谢谢楼主,下载来学习学习。

出0入0汤圆

发表于 2011-11-8 10:59:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-27 21:01:55 | 显示全部楼层
借鉴一下

出0入0汤圆

发表于 2011-11-28 00:11:43 | 显示全部楼层
强烈感谢!!!

出0入0汤圆

发表于 2011-11-28 07:30:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-28 08:43:51 | 显示全部楼层
mark标记了~

出0入0汤圆

发表于 2011-11-28 14:10:29 | 显示全部楼层
进来捡宝贝、
谢谢LZ

出0入0汤圆

发表于 2011-11-29 00:00:08 | 显示全部楼层
好东西

出0入0汤圆

发表于 2012-3-30 22:22:28 | 显示全部楼层
感谢分享。收藏。

出0入0汤圆

发表于 2012-4-2 10:58:19 | 显示全部楼层
下来学学,很多的东西都是第一次见 啊

出0入0汤圆

发表于 2012-4-13 01:20:35 | 显示全部楼层
谢谢楼主无私奉献

出0入0汤圆

发表于 2014-8-23 16:12:11 | 显示全部楼层

出0入0汤圆

发表于 2014-8-23 16:16:12 | 显示全部楼层
文不对题,小心封号

出0入0汤圆

发表于 2014-8-23 17:30:15 | 显示全部楼层
杠杠的....

出0入0汤圆

发表于 2014-8-23 17:41:24 | 显示全部楼层
强烈支持一个。

出0入0汤圆

发表于 2014-8-23 18:46:06 | 显示全部楼层
剛看到, 支持一個

出0入0汤圆

发表于 2014-8-23 20:00:42 | 显示全部楼层
果断收藏

出0入0汤圆

发表于 2015-9-17 09:27:15 | 显示全部楼层
yycool 发表于 2010-1-31 11:42
回复【3楼】hedianchao
要是能开源就好了.还有楼主方便透露前端用的是什么芯片么??
------------------- ...

有噪声输入吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 11:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表