OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7925|回复: 16

DIY频谱喷泉(缺陷版)

[复制链接]

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
发表于 2014-12-1 20:40:36 | 显示全部楼层 |阅读模式
视频地址是:http://v.youku.com/v_show/id_XODM4NTQ5Njcy.html
s
如题,小弟在个大哥的帮助下,做了个3个道的频谱喷泉,想用三个道来显示出高中低音频的;
先给大家介绍下电路.


下面是ADC采集音频信号的电路:



下面是使用的运放(MCP6002):



下面是通过PWM来控制水柱高低的电路:



=  = 额,这是实体电路板,第二次焊板,别介意;




代码的实现和代码我整理下,等会发;
 

做这个频谱喷泉用到的代码和功能其实不多,主要就是定时器的计时和比较输出模式,ADC

 

 

先说ADC

根据查找的资料,信号的采集需要44.1KHz的频率,所以,我用以下的方法配置ADC及处理采集的数据:

1.设置ADC分频因子为6,即可得到72M/6=12M的频率;(ADC不能超过14M

2.配置PA0为模拟输入模式;

3.配置ADC独立,单通道,单次转换,软件触发,右对齐;

4.比较重要的一步,利用定时6来控制ADC的采集工作和采集频率。(定时器的预分配为1,自动重载为1633)我设置定时器6的频率为44090HZ(约为44.1KHz),每次中断采集一次,当满64个数据时,失能定时器6,代码如下:

 

 

接着是定时器的PWM

1.为了方便,我直接用3个不同的通用定时器来输出PWM

2.如同定时6,预分频为1,自动装载为899.

3.配置跟原子哥给的例程一样;

4.占空比的数值跟后面要提到的数据处理有关,稍后再说;

 

完成上面的,就完成采集和输出的步骤,接着是最重要的一步,数据处理。这个我是用官方DSP库对ADC采集的信号数据做FFT,再将处理好的数值作为定时器输出模式的占空比;代码如下:

1.powerMag()应该是求频域的幅度,NPT64

2.for的循环体中,是为了取的3组连续的3个幅度值的和;

3.i= 50中,i是用来扩大获得的幅度值,再用来改定时器的占空比;

 

整体的代码就是上面所述的了;
代码包已发;


稍后说下这个缺陷版中还存在的问题和总结。今年才开始接触单片机的,希望各位前辈看完后能指出问题,给些指导;

频谱喷泉.rar

2.39 MB, 下载次数: 530

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

85

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-10-10
在线时间
5 小时
发表于 2014-12-1 20:47:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-12-1 21:27:53 | 显示全部楼层
用什么控制水柱呀?电机吗?
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-1 21:57:19 | 显示全部楼层
回复【2楼】祝锦烨:
---------------------------------
嗯,我会再好好努力的;
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-1 22:00:12 | 显示全部楼层
回复【3楼】muniao:
---------------------------------
是的,用高速直流电机来控制的,我是在淘宝买两套音乐喷泉音响来改装的,晚点我把电机照片发上来;
回复 支持 反对

使用道具 举报

7

主题

85

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2013-10-10
在线时间
5 小时
发表于 2014-12-1 22:33:53 | 显示全部楼层
回复【4楼】小郭:
---------------------------------
话说你FFT用的是ST官方的库还是自己写的?速度如何呀?
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-1 22:35:43 | 显示全部楼层
回复【6楼】祝锦烨:
---------------------------------
没测试过,我是用官方的库;
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-12-1 23:17:04 | 显示全部楼层
不错,谢谢分享。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2014-12-2 10:45:13 | 显示全部楼层
腻害腻害!谢谢分享!
一直努力就很好。
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-2 21:40:55 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
回复【9楼】qq942266575:
---------------------------------
谢谢,昨晚弄得有点晚,今天咨询了2个大神并查了资料,发现我设置的采集点数好像不够,44.1KHz在采集音频信号时,64个采集点分辨率太低了,得再调高点,今晚调整了下:
1.尝试用adc的高八位来做为处理数据;
2.输出到PWM的数值减去某个值(仿真查看静态时的数值),用这终方式来减少噪音的干扰;

还在调试中,问题还是存在;
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-2 21:41:33 | 显示全部楼层
回复【10楼】小郭:
---------------------------------
对了,我这次是改用1024位做FFT
回复 支持 反对

使用道具 举报

9

主题

97

帖子

5

精华

金牌会员

Rank: 6Rank: 6

积分
1015
金钱
1015
注册时间
2012-7-16
在线时间
25 小时
发表于 2014-12-2 22:36:09 | 显示全部楼层
比我当年做的好多了 不知道你的AD采样出来的数据范围是多少?ADC前的0.1uF换成10uF再加两个二极管作限幅会不会好点?
我的微博:weifengdq,欢迎关注和私信:http://weibo.com/3193061857/profile?rightmod=1&wvr=5&mod=personinfo
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2014-12-3 09:19:04 | 显示全部楼层
回复【12楼】weifengdq:
---------------------------------
谢谢指点。1.AD采样的数据范围我没记录下来,我下班后回去测下;
          2.好的,我回去试试;
回复 支持 反对

使用道具 举报

21

主题

243

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2015-3-12
在线时间
168 小时
发表于 2015-3-29 11:11:48 | 显示全部楼层
楼主用的是战舰控制???效果好像真的很强
回复 支持 反对

使用道具 举报

11

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-8-18
在线时间
3 小时
 楼主| 发表于 2015-3-29 16:50:24 | 显示全部楼层
回复【14楼】HerryZ:
---------------------------------
不是啊,我用的是奋斗板,这个问题没什么影响的。
回复 支持 反对

使用道具 举报

2

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2112
金钱
2112
注册时间
2012-5-8
在线时间
314 小时
发表于 2016-4-14 13:56:58 | 显示全部楼层
好牛啊!支持了!
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-11-6
在线时间
2 小时
发表于 2016-11-6 15:00:59 | 显示全部楼层
我也刚学  TIM_SetCompare2(TIM5,a+280);               
                TIM_SetCompare1(TIM4,b+390);                a+280 和 b+390 c+420  数字是怎么来的
                TIM_SetCompare2(TIM3,c+420);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 00:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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