王楚楚,林權,沈鎬哲,金浥,金寶根,盧新祥
(紹興文理學院數理信息學院,浙江紹興,312000)
關鍵字:非線性失真;STM32F407;FFT;THD;晶體管放大器
放大器處在理想工作狀態時,其輸入信號應與輸出信號波形一致。而在實際電路工作時,放大器的輸入信號與輸出信號的波形總會存在一定的差別,這種現象叫失真。造成非線性失真的原因主要有兩個:(1)晶體管等特性的非線性;(2)各部分電路靜態工作點不同,導致模塊的工作電平超出了其內部晶體管的線性工作范圍。本次設計通過改變偏置電路來改變靜態工作點,從而實現四種失真現象。
此設計的系統框圖如圖1所示。

圖1 系統框圖
本設計將交流220V經過變壓、整流與穩壓濾波后產生12V、-12V、5V、-5V電壓,以此作為電源模塊。輸入端輸入正弦波信號后,通過按鍵控制通道選擇輸出原始信號還是放大電路模塊的輸出信號,并將波形在示波器上顯示。其中,放大電路模塊使用4051模擬開關,實現對頂部失真、雙向失真、底部失真、正常放大、交越失真等5類放大電路通道的自動輪詢或人工切換,同時對所選通道的放大電路輸出信號進行AD采集,通過STM32F4核心板處理采集的AD信號并進行FFT運算,最后求得輸出信號的THD值并顯示在TFTLCD液晶屏上。
本裝置由STM32F407核心控制板、晶體管及偏置電路組成,通過改變五個通道的放大器偏置電路調節靜態工作點,實現“無明顯失真”、“頂部失真”、“底部失真”、“雙向失真”、“交越失真”五種波形。
STM32F407單片機基于高性能32位RISC內核,擁有168MHz主頻、1MFLASH、64KRAM、18路12位ADC等外設,尤其適用于浮點運算及DSP處理的應用。此外,STM32F4具有更快的模數轉換速度。
由信號發生器輸出的20mV、1kHz正弦信號作為整個電路的輸入信號,通過單刀雙擲開關選擇輸出測試電路。測試電路一,輸入正弦信號直接經MCP6002放大電路得到輸出電壓,測試MCP6002放大電路效果。測試電路二,輸入正弦信號經4051選擇晶體管放大電路,再由4051輸出波形,用示波器可以觀察測得。測試電路三,單片機通過AD采集MCP6002輸出信號,經FFT計算得各次諧波分量。
放大電路選擇了基極分壓式共射極放大電路,該電路的直流靜態工作點和負反饋易于計算,能夠僅調整各個元器件參數獲得各個失真波形。電路中的三極管選擇2N3904型NPN三極管,該三極管具有較低的漏電流,直流電流增益線性度好,集電極-發射極飽和壓降小,理論值與實際值的差距會比較小。另外在交越失真電路中,選擇2N3904和2N3906組成乙類互補對稱功率放大電路。在發生失真后,部分電路的峰峰值會小于2V,因此需要在其后再連接一個無失真的放大電路組成多級放大電路,提高電壓放大倍數。有了5個獨立的能夠產生不同失真情況的放大電路后,我們要讓信號源的信號能夠正確地輸入到需要的放大電路中。我們使用了兩片具有低導通阻抗和很低的截止漏電流的 CD4051單端8通道電子開關,它有A、B和C三個二進制控制輸入端以及INH共4個輸入。以下為四種失真及無明顯失真的電路原理圖:

圖2 電路原理圖
其中:a為“雙向失真”,b為“無明顯失真”,c為“頂部失真”,d為“底部失真”,e為“交越失真”。
因為TFT-LCD液晶顯示屏低功耗,固體化使用安全性、可靠性高、平板化、輕薄,節約了大量空間,此外其亮度好、對比度高、層次感強、顏色鮮艷、無閃爍便于更好的觀察波形圖。本系統采用TFT-LCD液晶顯示屏,以顯示THD值和波形圖。
本設計使用交流220V經過變壓整流與穩壓濾波后產生12V、-12V、5V、-5V電壓,以此作為不同通道的饋電直流電壓。
線性放大器輸入為正弦信號的時候,其非線性失真表現為輸出信號中出現諧波分量,常用總諧波失真(THD)來衡量線性放大器的非線性失真程度。而快速傅里葉變換(FFT)就是一種時間復雜度為的算法,它能將一個多項式轉換成它的點值表示。因此,我們采用快速傅里葉變換來計算THD值。
FFT是用于計算DFT的快速算法,它是基于復數的,因此在計算實數DFT時需先轉換為復數的格式。實數DFT將時域中N點信號轉換為2個(N/2+1)的頻域信號,其中一個信號為實部,另一個信號為虛部,而實部和虛部分別是正弦和余弦信號的幅度。在這次設計中,我們使用了STM32F4的浮點運算庫中的cfft函數,可以通過采集的數據,直接計算出基波及各次諧波的幅度值,并存于數組中。當對1024個點采樣完畢后,通過已有的DSP庫中的現成算法函數FFT進行變換計算。首先利用arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1)函數對FFT進行初始化設置,隨后調用arm_cfft_radix4_f32(&scfft,fft_inputbf)函數來實現程序中時域變頻域的計算。運用arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH)函數計算復數模值,執行取模操作,其中fft_inputbuf為復數輸入數組,指向FFT變換后的結果;outputbuf為輸出數組,存儲取模后的值;FFT_LENGTH指的是取模個數。

當n趨向于+∞時,Uon趨向于0,此時Uon便可忽略不計,因此為了計算的方便,我們在計算THD時,諧波均只取到五次,即:

首先上電后各個系統模塊進行初始化,初始化完成后通過AD采集各種波形信號數據,一方面該數據用于計算THD值,另一方面用于畫波形圖,當檢測到有按鍵按下時,就切換采樣通道,然后繼續通過AD采集數據,最終將THD值以及波形圖顯示在LCD屏上,具體程序流程如圖3所示。

圖3 程序流程圖
(1)從信號源發送頻率為1kHz,峰峰值為20mV的正弦波。
(2)信號源連接電路的輸入端口,示波器連接電路的輸出端口。
(3)在示波器觀察上波形,初始為無明顯失真波形,每按一次按鍵即可切換下一種模式,在示波器上可以依次觀察到五種波形,在FTFLCD屏上也可以觀察到波形圖。

表格1 不同波形下的THD值
系統實現了對放大器的非線性失真研究。第一種波形靜態工作點適中,失真程度小,因此其THD值最小,而雙向失真的失真程度最大,因此其THD值最大,其余三種波形失真程度較為類似,因此其THD值比較接近,處于中間大小。
此外,我們還輸入了矩形波來對本系統中對THD值的算法進行驗證,發現其THD值大小約為39%,查閱文獻[1]可得,符合實際,證明本系統算法正確。
分析本系統可能存在的誤差原因主要有以下兩點:(1)在測量過程中,外界干擾因素或者系統本身引起的靜態工作點變化,會造成一定程度上的波形圖變化較;(2)信號發生器或示波器表筆接觸不良,導致存在測量誤差。

圖4 測試結果
本文研究了基于晶體管放大器的非線性失真。根據非線性失真的原因,通過改變偏置電路來改變靜態工作點,從而得到四種非線性失真波形圖,并將THD值和波形圖顯示在TFT-LCD液晶顯示屏上。