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