劉開緒, 孫 健, 付保紅, 吳春梅
(1.大慶師范學院電氣信息工程學院,黑龍江大慶 163712;2.大慶油田熱電廠,黑龍江大慶 163314)
在電源變換電路設計中經(jīng)常要用到受控PWM信號,為了實現(xiàn)智能控制,利用美國Silicon Lab半導體公司推出的C8051F系列高性能8位嵌入式單片機,實現(xiàn)受控PWM信號輸出及可實現(xiàn)電源變換電路工作的智能控制,下面重點闡述受控PWM信號的實現(xiàn)。
C8051F020單片機芯片集成了豐富的片內(nèi)外設資源,集成了數(shù)?;旌闲盘柼幚韱卧?,是真正意義上的系統(tǒng)級單片機SOC(System on Chip)[1-2]。其微控制器內(nèi)核CIP-51兼容MCS-51內(nèi)核的全部功能及指令集。通過JTAG接口實現(xiàn)非插入式、全速的在線調(diào)試功能。利用C8051F系列單片機可實現(xiàn)PWM信號輸出的同時,還可以實現(xiàn)電源變化的綜合控制。
C8051F020單片機片內(nèi)部集成有一個可編程計數(shù)器陣列(Programmable Counter Array,PCA),稱為PCA0,其原理如圖1所示。
圖1 可編程計數(shù)器陣列原理
它具有增強的定時器功能,與標準8051單片機的定時器/計數(shù)器相比,所需要CPU的干預更少。由圖1可知,PCA0包含一個專用的16位定時器/計數(shù)器及5個16位的捕捉/比較模塊。每個捕捉/比較模塊都有自己的輸入輸出口線(CEXn)。通過交叉開關的使能配置,可以將輸入輸出口線連接到并行I/O端口上。定時器/計數(shù)器有6個計數(shù)脈沖源:系統(tǒng)時鐘SYSCLK、系統(tǒng)時鐘4分頻SYSCLK/4、系統(tǒng)時鐘12分頻SYSCLK/12、外部振蕩器時鐘源8分頻、定時器0溢出、ECI口線上輸入的外部時鐘信號可供選擇。通過程序設置PCA0的特殊功能寄存器,可使每個捕捉/比較模塊獨立工作于邊沿觸發(fā)捕捉、軟件定時器、高速輸出、頻率輸出、8位PWM或16位PWM 6種方式之一。
設置相關PCA0的特殊功能寄存器,可設定需要工作在16位PWM方式下的PCA0捕捉/比較模塊,利用16位PWM方式產(chǎn)生頻率可設定的PWM信號[3]。在16位PWM方式下,16位捕捉/比較模塊定義PWM信號低電平時間的PCA0時鐘數(shù)。當PCA0計數(shù)器的值與捕捉/比較模塊的值匹配時,捕捉/比較模塊輸入輸出引腳CEXn輸出高電平;當PCA0計數(shù)器溢出時,引腳CEXn輸出低電平。為了得到一個頻率固定、占空比可變的波形,要求新值的寫入應與PCA0的CCFn匹配中斷同步。同時應將CCFn置為l,以允許匹配中斷。設置PCA0CPMn寄存器中的ECOMn,PWMn和PWM16n位為邏輯1,設置PCA0為16位脈沖寬度調(diào)制器方式。16位PWM波形圖如圖2所示。
圖2 16位PWM的波形圖
16位PWM方式的占空比由下式給出:
α為16位計數(shù)值的修整值,通過設定α的值可以改變PWM信號的周期,即可設定PWM信號的頻率。令α=F000H,以產(chǎn)生對應ADC0的12位A/D轉(zhuǎn)換所對應的PWM信號時,α原則上可以在區(qū)間0000H~FFFFH取值。波形原理如圖3所示。
圖3 12位PWM的波形圖
此時,所產(chǎn)生的12位PWM波的占空比為:
由式(1)可知,對應于PCA0CPn=0,理論上可實現(xiàn)最大占空比100%,對應于PCA0CPn=0x FFFF,可實現(xiàn)最小占空比為0.001 5%。但實際中由于執(zhí)行程序需要占用機器周期[4],實現(xiàn)不了理論上的最大和最小占空比,在這種情況下可通過對寄存器ECOMn位清0實現(xiàn)0%占空比信號輸出。
首先,進行程序初始化設計。置位REF0CN寄存器的BIASE位以使能1.2 V基準源,同時置位REFBE位以使1.2 V基準源倍乘得到2.4 V基準電壓,將該2.4 V基準電壓輸出作為ADC0轉(zhuǎn)換的參考電壓VREF0。
設電源變換電路的輸出取樣電壓為4.8 V,4.8 V的取樣電壓可以通過穩(wěn)壓和分壓獲得。配置ADC0CF寄存器的AMP0GN0~2位,設定ADC0輸入信號放大倍數(shù)為取0.5倍,以使反饋信號與參考電壓VREF0相吻合。電壓等各取樣信號可依次被檢測送往單片機的ADC0各通道,依次完成A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)經(jīng)過處理后去調(diào)理PCA0模塊比較器實現(xiàn)變換電路所需要的控制信號。
其次,需要配置端口交叉開關,以使能端口輸出功能。通過配置特殊功能寄存器XBR0和XBR2,使PCA0的捕捉/比較模塊輸入輸出線CEXn連接到端口引腳上,用于PWM波輸出[5-8]。
然后,進行程序的設計。將ADC0轉(zhuǎn)換的結果送PCA0形成16位的PWM信號,PCA0采用16位PWM方式。同時,使用ADC0的窗口檢測器實現(xiàn)電壓值超范圍報警,如低電壓設定為1 V,高電壓設定為3.7 V,ADC0是采用寫AD0BUSY為1啟動轉(zhuǎn)換的。因為ADC0是12位的,在程序中對PCA0的值進行了修整,以使PCA模塊0實現(xiàn)12位PWM輸出,輸出腳CEX0配置在P0.0腳。ADC轉(zhuǎn)換程序流程和PCA 16位PWM波程序流程分別如圖4和圖5所示。
圖4 ADC轉(zhuǎn)換程序流程
圖5 PCA 16位PWM信號程序流程
在程序中,采取查詢方式查詢12位ADC0轉(zhuǎn)換結果,ADC0窗口檢測器采取中斷方式,PCA0捕捉/比較模塊采取中斷方式,且PCA0捕捉/比較模塊工作設置為高優(yōu)先級別。
PCA0捕捉/比較模塊默認的PWM信號寬度是對應16位數(shù)字量的。為了與12位的ADC0轉(zhuǎn)換結果相匹配,采取ADC0輸出右對齊,使產(chǎn)生的PWM信號占空比能夠在0%~100%期間受控調(diào)整,并在PCA0中斷程序中對PCA0H寄存器的值進行修整。參考的程序段如下:
對應輸入電壓0.291 V時產(chǎn)生的PWM觸發(fā)脈沖如圖6所示。
圖6 對應輸入電壓0.291 V時的PWM波形
若改變輸出信號頻率,可以通過修改服務子程序PCA_ISR0中的“MOV A,#11110000B”實現(xiàn)。如修改為“MOV A,#11111000B”時,輸出的PWM信號的頻率將發(fā)生改變,測得的波形如圖7所示。
圖7 ADC0輸出右對齊,輸入電壓0.300 V
同理,每修改一位,頻率改變一倍。
C8051F020單片機具有豐富的片上外設資源,利用其可編程計數(shù)器陣列PCA可產(chǎn)生對應ADC0各通道的PWM信號,該PWM信號受控于反饋電壓,使得電源變換電路輸出受控。實際應用時,根據(jù)ADC0的輸入信號、基準電壓和控制要求來設定PCA0的初值,用來設定輸出的PWM信號的頻率,使得脈沖寬度在整個周期內(nèi)按照輸入變量進行調(diào)整,使用系統(tǒng)級單片機不僅可以提供電源變換所需的PWM信號,同時還可以提供開關電源綜合控制所需信號。
[1] 潘琢金,施國君.C8051Fxxx高速SOC單片機原理及應用[M].北京:北京航空航天大學出版社,2002.
[2] 鄭江海,林鈞峰,陳育群.基于AT89C51 PWM驅(qū)動電路遙控小車的研究[J].長春工業(yè)大學學報:自然科學版,2008,29(5):556-561.
[3] 鮑可進.C8051F單片機原理及應用[M].北京:中國電力出版社,2006.
[4] 何曦光,阮祥發(fā),趙燕.電機控制中的16位PWM在C8051單片機中的實現(xiàn)[J].中國水運,2006(5):48-49.
[5] 王蘇.直流電機PWM調(diào)速研究及單片機控制實現(xiàn)[J].機電工程技術,2008,37(18):82-85.
[6] 陸冬良,張代潤.基于C8051的軟開關用移相PWM的實現(xiàn)[J].電源技術應用,2005(9):49-52.
[7] 吳磊,李偉,張俊,等.基于C8051F020的開關電源并聯(lián)模塊供電系統(tǒng)設計[J].工業(yè)控制計算機,2013(6):128-129.
[8] 劉青青,朱清芳.基于C8051F020單片機的數(shù)據(jù)采集電路設計[J].現(xiàn)代電子技術,2012,9:135-136,140.