原创 带频谱显示的HIFI耳放

2008-12-11 19:11 8506 11 41 分类: MCU/ 嵌入式

 


最近终于把我的频谱显示作出来了,不过光用来显示频谱似乎没大用,所以顺便做了个耳机放大到里面,这样就比较实用了.本来想把它放到功放上面,但是鉴于自己以前做了一个,而且做功放花费比较大,而耳放倒是没有做过,而且成本相对比较低,所以就选择做耳放了.好了废话不多说了.


我这个方案用的是CD3315+TDA2822+Mega<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />8L,还用了一片LM386做电平移动,同时也把模拟信号放大到适合MEGA8ad采样的程度.整个方案使用芯片比较少而且成本相对较低,最贵就是那些点阵,总共只用了三个点阵来显示频谱,这几个点阵几乎占了整个成本的一半.


数字部分原理图:点击看大图


                         图()数字部分原理图


模拟部分原理图:


点击看大图


 


                          图()模拟部分原理图


上面给出了整个系统的电路图,包括两个部分:数字部分和模拟部分.电路图比较简单,大部分时间花在代码编写上面.


       整个系统采用一个mega8控制,代码比较多.这次用mega8也算是用到极致了,用了一个外部中断(红外接收),两个定时器(一个adc采样,一个扫描点阵),同时加上内部eeprom存储DSP音频设置数据.本来还加了pwm功能,实在是代码没地方写了最后舍弃掉了.下面就介绍一下各个部分.


      


模拟部分:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


       前端音频处理,这个耳放通过CD3315,可以对音频信号实现非常好的处理,输入到TDA2822驱动耳机,可以很明显听出处理前后的效果,尤其对音质不怎么样的mp3或者其他音频设备,只要通过CD3315进行高低音的调节可以调出非常好的效果(媲美媚族MP3音质),不过要注意耳机不能太烂.CD3315(PT2315,TDA7315)这几个芯片都是管脚完全通用的音频数字调节芯片,一块芯片就可以实现对两个声道的音频信号的主音量,高音,低音,左声道,右声道,超重低音,静音实现数字控制,而且效果特好.关于这个芯片的详细资料大家可以去网上查.


      后端输出,采用TDA2822这个是一个双声道的音频放大芯片,不是专用的HIFI耳放芯片,常用在一般收音机和录音机上面.不过和CD3315搭配起来效果确是非常好.驱动能力大,音质也不错.


       电源,整个系统的电源全部来自USB,可以从电脑上取电,也可以从MP3充电器上取电,因为系统功耗不是很大(<200mA),但是这其中一个比较麻烦的问题就是不论是电脑电源还是MP3电源,都是开关电源,纹波都比较大.所以如何抑制纹波是一个重点.这里我通过实验,发现加电感可以很好的抑制纹波,比加电容效果好得多,所以我从USB得到电源之后就把正负电源线都经过电感,同时数字和模拟部分也都用电感连接,这样很好的一抑制了纹波,在没有声音输入的时候,耳机里也听不到烦人的噪声了.


       系统还有一个备用电源,ds1302,因为系统会偶尔断电,所以要保正时钟在断电之后也能正常跑,就必须加备用电源,我试过3V的钮扣电池,但是发现我那个ds1302在这个电压下不太爱跑,经常出错,没办法,最后选择了用电容充电来提供电压,用了两个4700uF的电容并联供电,据网友介绍一个100uF的电容就可以跑1个小时,所以估计这样可以跑三四天,应该够用了,呵呵.


 


数字部分:    


主控部分,主控部分由mega8控制,整个系统的运行都是在mega8控制之下工作,系统分两个模式:音乐模式(M 00)和时钟模式(M 01),系统默认进入音乐模式,在这个模式下,mega8主要处理FFT和频谱显示.同时兼顾红外遥控对该模式下的一些数据进行修改.时钟模式,mega8则主要控制时钟显示,同时监视闹钟.同音乐模式一样,在时钟模式下也要兼顾红外遥控,以修改时钟或者修改闹钟.在音乐模式下,如果长时间没有音频信号输入则系统自动跳到时钟模式显示时间.


主程序流程:


ec3a61a2-243d-4812-8c0c-232ff941742b.JPG


               ()程序流程


       ADC采样,音频信号因为是由正负的,mega8又不支持对负电压进行采样,所以,要一个电平移动电路.同时由于有时音频信号会比较小,需要放大适当倍数才比较好处理.本来想要用运放的,但是运放一般要双电源,而且要一个加法电路.实现起来比较麻烦,所以我采用了一个LM386这个芯片不但可以实现信号放大,更重要的是可以实现电平转移,把原来的正负信号,转换为单一极性的信号.选择200倍的固定增益,然后通过在输入端加一个可调电阻,控制输出大小,这样很好的解决了adc的采样问题.


       FFT变换,根据纳醛斯特律,音频信号的最高频率大概20Khz,所以adc的采样频率设置为40Khz.FFT根据这个采样频率计算各个频率分量的幅值大小.因为mega8sram只有1K,所以最大只能支持64点的FFT变换,也就是显示的频段最多32,实际上由于第一个频率是直流分量,所以没用,只有31个频段.这样就可以对应得出每个频段的频率值.


       fo adc的采样频率,N为傅立叶变换的点数.则最小分辨频率f


                                            f=fo/N


       这样我这个频谱显示的最低频率就是625Hz,以后每向右移一个,频率加625Hz.正因为这样所以低频频段的频谱显示不是很好.你可以加大采样点数,或者降低采样频率来提高最小分辨率.


       点阵驱动,这个本人做得比较多,在做这个频谱显示同时还在帮实验室做一个点阵显示牌,分辨率192*32,工程比较大,不过还好现在也完工了.在这个项目上面我用的是74HC595来做驱动的,595驱动电流大,而且具有三态输出.74164好用.所以这个耳放的驱动也用595来做列驱动,行驱动用了d882,这个驱动电流比较大(Ice=3A),本来理论上计算的话,要达到1A的电流才能满足要求,所以就选了d882,但是后来实践发现整个系统跑起来也不到200ma,所以有点大材小用的感觉,不过没办法,下次在改把,呵呵.这样由这两种期间实现了点阵的行列的驱动.再用一个595控制8d882,大大减少了对mega8io口使用.


       遥控部分,遥控选用了一个市场上买的遥控器,专门用于音响系统的,因为去年做过一个耳机放大,用的是这种遥控器,觉得不错,而且解码都搞定了,所以选择了这款遥控器来控制整个系统,遥控器面板见图四:


点击看大图


 

              图()系统遥控器     


       接收部分直接用一个38k的接收头就搞定了,很方便.


       整个系统的硬件差不多就是这样了,下面是一张合照:


点击看大图


下面再发几张频谱显示的图片:


cfd64721-1223-42c8-bde1-414287ed8564.jpg


                            频谱显示(一)


3ca2a1e7-46d5-4249-98e1-f269613e5b44.jpg


                             频谱显示(二)


e832670d-1b00-4a4f-8b71-d5949c23ae07.jpg


                           频谱显示(三)


再发一个频点测量的图片:


点击看大图


 


                                                 1.825Khz时对应的频显


                                                      正点原子@scut


                                                                                                    2008/5/8


rar rarrarrarrar


这个是关于我这个系统的说明,有兴趣的朋友可以看看.


 


 


 


发上源代码:https://static.assets-stash.eet-china.com/album/old-resources/2008/12/11/ca1abc2f-fda9-42e7-a9d6-a3f9cb95275c.rar(应求)


 

PARTNER CONTENT

文章评论31条评论)

登录后参与讨论

用户446306 2013-7-30 23:47

很感兴趣,能否传上电路图,文中的电路图不太清楚,谢谢

用户428390 2013-4-29 15:54

赞一个!

用户349488 2011-4-16 13:44

上面两张原理图看不太清,方便的话发下原理图PDF和PCB,谢谢

用户539704 2011-3-7 18:54

我也学习一下,呵呵

用户283823 2010-11-23 23:32

楼主我是一个将要毕业的学生,想参考一下你的这个作品做毕业设计,可以把你资料全都发给我么?邮箱865658948@qq.com 非常之谢谢哦~

用户967597 2010-6-16 10:09

还是比较喜欢频谱显示

用户140223 2010-4-27 16:56

USB上的超级电容不合适: 其一,耐压值不够;其二造成usb上的瞬间电流大,造成主板浪涌保护

用户166298 2010-1-15 09:29

楼主厉害啊!!!!

用户177065 2009-12-5 22:57

你好.我有项目想找你合作.请与我联系.qq:48005752

用户892181 2009-12-1 14:09

很敢兴趣,是否能提供数字部分图纸SCH邮件SDMCU51@163.COM
相关推荐阅读
正点原子 2013-05-17 23:47
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十一章 战舰STM32开发板综合实验(标准例程终结篇)
   第六十一章 战舰STM32开发板综合实验        前面已经给大家讲了55个实例了,本章将设计一个综合实例,作为本指南的最后一个实验 ,该实验向大家展示了STM...
正点原子 2013-05-03 23:02
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十章 UCOSII实验3-消息队列、信号量集和软件定时器
   第六十章 UCOSII实验3-消息队列、信号量集和软件定时器   上一章,我们学习了UCOSII的信号量和邮箱的使用,本章,我们将学习消息队列、信号量集和软件定时器...
正点原子 2013-05-03 20:42
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
第五十七章 ENC28J60网络实验   本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块...
正点原子 2013-05-01 23:00
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十九章 UCOSII实验2-信号量和邮箱
第五十九章 UCOSII实验2-信号量和邮箱      上一章,我们学习了如何使用UCOSII,学习了UCOSII的任务调度,但是并没有用到任务间的同步与通信,本章我们将学习两个最基本的...
正点原子 2013-04-30 10:55
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十八章 UCOSII实验1-任务调度
  第五十八章 UCOSII实验1-任务调度      前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系...
正点原子 2013-04-26 23:16
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
 第五十七章 ENC28J60网络实验  本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块和uIP 1...
EE直播间
更多
我要评论
31
11
关闭 站长推荐上一条 /1 下一条