新闻  |   论坛  |   博客  |   在线研讨会
带频谱显示的HIFI耳放
张阳 | 2008-05-12 16:49:00    阅读:2570   发布文章

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

我这个方案用的是CD3315+TDA2822+Mega8L,还用了一片LM386做电平移动,同时也把模拟信号放大到适合MEGA8ad采样的程度.整个方案使用芯片比较少而且成本相对较低,最贵就是那些点阵,总共只用了三个点阵来显示频谱,这几个点阵几乎占了整个成本的一半.

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

                         图(一)数字部分原理图

模拟部分原理图:

点击看大图

 

                          图(二)模拟部分原理图

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

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

      

模拟部分:

       前端音频处理,这个耳放通过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则主要控制时钟显示,同时监视闹钟.同音乐模式一样,在时钟模式下也要兼顾红外遥控,以修改时钟或者修改闹钟.在音乐模式下,如果长时间没有音频信号输入则系统自动跳到时钟模式显示时间.

主程序流程:

               图()程序流程 

       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的接收头就搞定了,很方便.

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

点击看大图

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

                            频谱显示(一)

                             频谱显示(二)

                           频谱显示(三)

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

点击看大图

 

                                                 1.825Khz时对应的频显

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
zxy1982  2008-09-19 13:08:10 

您好! 我对你这个东西很感兴趣!有成品买卖吗? 可以留个联系方式吗?

percyzh  2008-08-27 16:59:52 

兄弟,有趣,你也喜欢这篇文章。张阳是你的真实姓名?

推荐文章
最近访客