簡單理解就是:音頻信號與三角波高頻載波經過比較器進行比較,得到佔空比不同的PWM波,然後將得到PWM信號通過MOS管對管,經過濾波器輸入到喇叭。調製後得到的PWM裡面含有音頻分量,然後通過LC濾波器濾掉高頻載波還原成原始信號。
原理確實非常簡單,但是我們可能會有如下問題,僅僅理解以上內容還是遠遠不夠的。
為什麼有的電路喇叭兩端用示波器量就是PWM波,但是卻能正常發出聲音?
LC濾波器該如何設計,L,C如何取值?
有的D類放大器要LC濾波,有的用磁珠就可以了,為什麼?
還有的廠家的宣稱它們的放大器不需要濾波,用了什麼技術?
下面來看看這些問題是怎麼分析的。
典型的D類放大器電路
D類放大器,我們常用的方式是差分的方式,即兩個MOS對管中間接喇叭。下面就只分析這種差分方式,單端的分析方法也差不多。
首先,D類放大器是一個大類,主要區別在於有不同的調製方式,下面先介紹兩種,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濾波器的設計過程。
推薦閱讀:音頻D類功放LC濾波器該怎麼設計
責任編輯:xj
原文標題:音頻D類功放LC濾波器設計(一)