音频d类功放lc滤波器设计(一)-皇冠最新app版本

×
rf射频 > rf技术 > 详情

音频d类功放lc滤波器设计(一)

发布时间:2023-12-06 发布时间:
|
【导读】有了上一节的基础,这一节我们来看看d类音频功放的lc滤波器如何设计,思路是怎么样的,可以看作是一个案例。考虑到有些同学没接触过d类音频功放,我会先简单介绍下d类功放的工作原理,然后d类功放为什么要用lc滤波器,再到lc滤波器设计具体过程。
 
lc串联谐振的意义
 
有了上一节的基础,这一节我们来看看d类音频功放的lc滤波器如何设计,思路是怎么样的,可以看作是一个案例。
 
考虑到有些同学没接触过d类音频功放,我会先简单介绍下d类功放的工作原理,然后d类功放为什么要用lc滤波器,再到lc滤波器设计具体过程。
 
ti公司也有介绍d类放大器lc滤波器的设计文档,文末会分享出来。我写的与ti的区别,ti的主要介绍具体如何设计,我主要想说明思路过程,并指出里面的一些细节,为什么是这样。我希望的是,有了思路,即使没有任何文档,遇到类似的问题,也能自己去分析。
 
d类功放工作原理
 
d类功放相对于a,b,c类来说更不好理解,因为它是需要调制的,看起来就是占空比不同的pwm波,波形看着与我们的音频模拟波形一点都不像。
 
下面来看一看它的原理。
 
 
简单理解就是:音频信号与三角波高频载波经过比较器进行比较,得到占空比不同的pwm波,然后将得到pwm信号通过mos管对管,经过滤波器输入到喇叭。调制后得到的pwm里面含有音频分量,然后通过lc滤波器滤掉高频载波还原成原始信号。
 
原理确实非常简单,但是我们可能会有如下问题,仅仅理解以上内容还是远远不够的。
 
为什么有的电路喇叭两端用示波器量就是pwm波,但是却能正常发出声音?
 
lc滤波器该如何设计,l,c如何取值?
 
有的d类放大器要lc滤波,有的用磁珠就可以了,为什么?
 
还有的厂家的宣称它们的放大器不需要滤波,用了什么技术?
 
下面来看看这些问题是怎么分析的。
 
典型的d类放大器电路
 
d类放大器,我们常用的方式是差分的方式,即两个mos对管中间接喇叭。下面就只分析这种差分方式,单端的分析方法也差不多。
首先,d类放大器是一个大类,主要区别在于有不同的调制方式,下面先介绍两种,ad类,和bd类。
 
 
ad类是经过三角波调制后再反相,用了一个比较器。bd类是先将音频信号反相,再将原信号和反相后的信号分别通过调制,用了两个比较器,从图中看不出来差别,下面来看看波形的区别。
 
 
红色的为音频信号,三角波是调制信号,我们可以很容易的得到滤波之前的差分输出信号。从波形上看到,ad与bd的差分输出有着明显的区别,但是二者的电平都是高低变化,我们没法从上面直接得到有用的信息,比如看不出来哪种效率更高,哪种辐射会小一些等等。
 
这时候,我之前的文章“信号在脑子里面应该是什么样的”就要派上用场了,我们需要把输出信号进行傅里叶变换,得到它们的频谱,有了频谱,就很容易看出差别。为此,我借助了matlab软件,分别画出它们的频谱。
 
注:为了减小matlab软件的计算量(计算量大了电脑会卡),我设定的音频信号为1hz,调制三角波为20hz,虽然实际音频信号频率肯定是比1hz要高的,但是分析结果应是一样的。
 
下图是用幅度为1,频率为20hz的三角波,来调制幅度为0.9,频率为 1hz的正弦波。
 
 
从上图看出,调制之后的有用信号1hz被保留,幅度都是0.9,两种方式都是一样的,这说明都能达到目的,包含了完整的音频信号。
 
ad调制方式,除了有用信号1hz在,还有调制三角波频率20hz的幅度也很大。而bd调制方式,20hz频率消失了,只存在更高的谐波。从这个角度说, bd的方式是要更好的,损耗降低了。
 
在音频输入为0的时候,也就是说放大器空闲,更能看出ad与bd的区别,如下图:
 
 
在输入为0的时候,ad方式的差分输出为方波,而bd方式输出为0,毫无疑问,bd方式功耗更低。
 
事实上,我们拿到了频谱,就能知道很多事情了。
 
首先,这些开关信号实在看起来不像是模拟音频信号,但是其确实包含了完整的音频频率信号在其中,所以直接通到喇叭也是可以正常响的,虽然额外多了高频载波,但是频率太高,超过人耳范围,高频分量是听不见的。
 
其次,这些开关信号除了包含有用信号,还有丰富的高频频率,这些高频频率从调制频率开始往上。这些高频分量通到喇叭是没有什么好处的,反而会额外带来功率损耗,还有会造成emi的问题。所以,我们需要一个滤波器来滤掉高频分量。并且,因为驱动喇叭需要的功率较大,而rc滤波器会有额外损耗,所以,lc低通滤波器就自然而然被选中了。
 
最后,我们知道频谱里面的高频的频谱分布,那么滤波器的截止频率自然就出来了。截止频率必须高于音频频率上限20khz,而要小于三角波的调制频率,在这个范围内,截止频率越低,去除高频分量越好。
 
下面分享下上面波形的matlab源码,有兴趣的同学可以去试试。
 
f_audio=1;      %被调制信号(音频信号)频率为1hz 
f_sanjiao=20;   %三角波调制频率为20hz
 
%%%%%%%%%%%%%%%%%%%%%%%%  fft采样设置
fs=10000;  %采样率为fs 
l=(fs/f_audio)*100;   
%信号长度(采样总点数):100个周期的信号,长度越长,fft精度越高,但是执行时间越长
t=1/fs;    %采样周期
t=(0:l)*t; %时间长度
 
a_audio = 0.9;   %音频信号的幅度为 0.9----可以修改为不同的值尝试
s1=a_audio*sin(2*pi*f_audio*t);         %被调制信号(音频信号)为幅度a_audio的正弦波
s2=sawtooth(2*pi*f_sanjiao*t,0.5);  %调制信号(三角波)为幅度为1的三角波
 
n=length(t);
pwm1=zeros(1,n); %定义pwm1的长度  ad调制后差分波形
pwm2=zeros(1,n); %定义pwm2的长度  bd调制后差分波形
tmp=zeros(1,n);  %定义tmp的长度  计算用(中间变量)
for i=1:n    
      if s1(i)>s2(i)        
           pwm1(i) = 1;        
           tmp(i)  = 1;    
     else        
           pwm1(i) = -1;        
           tmp(i)  = 0;    
     end
end
 
for i=1:n    
     if -s1(i)>s2(i)        
           pwm2(i) = tmp(i)-1;    
     else        
           pwm2(i) = tmp(i);    
     end
end
 
%%%%%%%%%%%%%%%%%%%%%%%% ad调制
subplot(3,2,1);
plot(t,s1,t,s2,'k');
set(gca,'xlim',[0 2/f_audio]);%x轴的数据显示基频2个周期
set(gca,'ylim',[-1.1 1.1]);
title('ad调制');
xlabel('t (s)');
ylabel('幅度');
 
subplot(3,2,3);
plot(t,pwm1);
set(gca,'xlim',[0 2/f_audio]);%x轴的数据显示范围
set(gca,'ylim',[-1.1 1.1]);
title('ad方式调制之后的-差分-信号');
xlabel('t (s)');
ylabel('幅度');
 
x1=abs(fft(pwm1));
subplot(3,2,5);
semilogx(fs*(0:(l/2))/l,x1(1:l/2+1)*2/l); 
set(gca,'xlim',[0.1 10000]);%x轴的数据显示范围
set(gca, 'xticklabel' ,{'0.1','1','10','100','10k','100k'}); %x轴频率数据
title('ad方式调制之后的-差分-频谱');
set(gca,'ylim',[-0.1 1.5]);
xlabel('f (hz)');
ylabel('幅度');
 
%%%%%%%%%%%%%%%%% bd调制差分信号
subplot(3,2,2);
plot(t,s1,t,-s1,'--r',t,s2,'k');
set(gca,'xlim',[0 2/f_audio]);%x轴的数据显示基频2个周期
set(gca,'ylim',[-1.1 1.1]);
title('bd调制');
xlabel('t (s)');
ylabel('幅度');
 
subplot(3,2,4);
plot(t,pwm2);
set(gca,'xlim',[0 2/f_audio]);
%x轴的数据显示范围set(gca,'ylim',[-1.1 1.1]);
title('bd方式调制之后的-差分-信号');
xlabel('t (s)');
ylabel('幅度');
 
x2=abs(fft(pwm2));
subplot(3,2,6);
semilogx(fs*(0:(l/2))/l,x2(1:l/2+1)*2/l);
 set(gca,'xlim',[0.1 10000]);     %x轴的数据显示范围
title('bd方式调制之后的-差分-频谱');
set(gca, 'xticklabel' ,{'0.1','1','10','100','10k','100k'}); %x轴频率数据
set(gca,'ylim',[-0.1 1.5]);
xlabel('f (hz)');
ylabel('幅度');
 
小结
 
这一节我们看了class d的输出信号波形,并分析了其频谱,我们要学会看频谱。本节就先写到这里吧,下一节会具体看看lc滤波器的设计过程。


『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
rfid技术可以制作出药品识别箱吗
网站地图