林廣峰
廣東汕頭超聲電子股份有限公司,廣東 汕頭 515041
在嵌入式系統(tǒng)及控制系統(tǒng)中,經(jīng)常需要產(chǎn)生特定頻率和PWM的方波脈沖信號(hào),以便實(shí)現(xiàn)精確的控制過程。在實(shí)際應(yīng)用中,為了達(dá)到最佳的控制,往往需要對(duì)驅(qū)動(dòng)控制信號(hào)的頻率和占空比都能夠按要求進(jìn)行調(diào)節(jié),也就是需要實(shí)現(xiàn)可調(diào)頻率的PWM控制。在傳統(tǒng)電路中,用555來實(shí)現(xiàn)的是比較經(jīng)典的電路,但通過R、C來調(diào)節(jié)脈沖時(shí),頻率和占空比可調(diào)的范圍不大,器件的誤差帶來的影響較大,調(diào)節(jié)時(shí)不直觀,調(diào)節(jié)參數(shù)具有一定的離散性,不利于批量生產(chǎn)。對(duì)于需要經(jīng)常改變參數(shù)的情況更不方便。
隨著數(shù)字技術(shù)的不斷發(fā)展,單片機(jī)的性能越來越強(qiáng),價(jià)格也越來越低,51系列作為非常成熟的8位單片機(jī),在國內(nèi)得到了廣泛的應(yīng)用。采用51系列單片機(jī)除了能完成所需的控制功能外,完全能夠?qū)崿F(xiàn)對(duì)方波信號(hào)的頻率和占空比的調(diào)節(jié),不再需要額外的信號(hào)發(fā)生電路,采用軟件控制這種方法,電路簡單,調(diào)節(jié)方便,顯示直觀,誤差小,一致性好,可靠性高。
脈沖寬度調(diào)制(PWM)是英文“Pulse Width Modulation”的縮寫,它是通過調(diào)節(jié)方波的占空比來實(shí)現(xiàn)的,只要占空比的步進(jìn)精度足夠,就可以通過PWM來實(shí)現(xiàn)數(shù)字輸出信號(hào)對(duì)模擬電路的有效控制,比如燈光的亮度、流量的控制、開關(guān)電源電壓的控制等等。脈沖寬度調(diào)制在工業(yè)控制、電源變換、測(cè)試測(cè)量、通信等領(lǐng)域都有廣泛的應(yīng)用。
在一些文獻(xiàn)中,產(chǎn)生各種波形信號(hào),采用的是軟件延時(shí)的方式,但這種方式占用了單片機(jī)的處理時(shí)間,且精度不易控制,尤其是在調(diào)節(jié)時(shí)計(jì)算比較復(fù)雜,本文采用的是定時(shí)器中斷方式,單片機(jī)通過中斷來產(chǎn)生對(duì)應(yīng)的脈沖信號(hào),還可以同時(shí)進(jìn)行其他輸入、輸出控制功能,定時(shí)器的精度較高,調(diào)節(jié)時(shí)也僅需通過軟件調(diào)整對(duì)應(yīng)的設(shè)置值即可。單片機(jī)內(nèi)部一般都包含有定時(shí)/計(jì)數(shù)器功能,通過對(duì)系統(tǒng)時(shí)鐘的分頻計(jì)數(shù),可以設(shè)定某個(gè)輸出端口的接通、斷開時(shí)間,也即高、低電平的時(shí)間,就可以通過這個(gè)輸出端口實(shí)現(xiàn)頻率和占空比可調(diào)的脈沖信號(hào)。頻率即為高、低電平總時(shí)間也就是周期的倒數(shù)。占空比就是高電平接通時(shí)間與周期之比。
對(duì)于51系列單片機(jī)來說,通過編程設(shè)置其方式寄存器TMOD可設(shè)定定時(shí)器工作于所需的工作模式,我們僅需按手冊(cè)說明將其工作設(shè)定為定時(shí)方式,設(shè)定好定時(shí)時(shí)間,在時(shí)間到達(dá)時(shí)就會(huì)產(chǎn)生定時(shí)中斷,單片機(jī)響應(yīng)定時(shí)中斷,我們?cè)诙〞r(shí)中斷中根據(jù)所需的時(shí)間控制相應(yīng)輸出端口的電平,即可實(shí)現(xiàn)對(duì)輸出端口信號(hào)的頻率、占空比的控制。
在系統(tǒng)設(shè)計(jì)中,首先需要確定系統(tǒng)最小能調(diào)節(jié)的基準(zhǔn)周期,也就是定時(shí)器的周期T0。
若PWM調(diào)節(jié)的占空比的步進(jìn)精度為△d,則我們能調(diào)節(jié)得到的最高頻率fh為:
則根據(jù)fh即可求出所需的T0值;
式中的C為單片機(jī)的周期指令系數(shù),一般51系列為12周期指令系統(tǒng),即每條指令需要12個(gè)系統(tǒng)周期,則C的值為定時(shí)中斷的指令周期數(shù)乘以12。目前一些新的51系列單片機(jī),比如STC有單周期指令的單片機(jī),則C的值為定時(shí)中斷的指令周期數(shù),所以為了得到較高的可調(diào)節(jié)的頻率,一方面可以采用較高的時(shí)鐘頻率,另一方面則可以采用單周期指令的單片機(jī)。
雖然STC單片機(jī)有具備PWM調(diào)節(jié)功能的型號(hào),但是其占空比是按1/256周期為步進(jìn)的,在我們不需要這么細(xì)的調(diào)節(jié)范圍時(shí),反而限制了所能達(dá)到的最高調(diào)節(jié)頻率,同時(shí)也為了通用性,我們采取的是用定時(shí)中斷的方式來設(shè)定占空比、頻率,控制單片機(jī)的一個(gè)通用端口作為信號(hào)的輸出。
我們的一個(gè)實(shí)例系統(tǒng)的系統(tǒng)原理框圖如圖1,單片機(jī)采用了單周期的STC16C5628系列單片機(jī),其最高的系統(tǒng)時(shí)鐘頻率可達(dá)40MHz,在實(shí)例中采用的外接晶振為32MHz。為了較好的人機(jī)交互調(diào)節(jié),采用了按鍵輸入和LED顯示輸出部分。通過接收按鍵輸入,頻率可以設(shè)置從1KHz~80KHz,占空比調(diào)節(jié)范圍為5%~95%(最小步進(jìn)為5%),在調(diào)節(jié)過程中用2位數(shù)碼管LED顯示對(duì)應(yīng)的頻率和占空比,能夠很好地實(shí)現(xiàn)了最高80KHz的頻率可調(diào)的PWM信號(hào)輸出,用來驅(qū)動(dòng)對(duì)應(yīng)頻率的超聲波探頭,得到了較好的效果,并通過調(diào)節(jié)占空比,獲得了最佳的諧振。
圖1 系統(tǒng)原理框圖
這里主要描述產(chǎn)生頻率、占空比可調(diào)信號(hào)的算法流程,其他的按鍵輸入、數(shù)碼管分時(shí)顯示控制模塊都是通用的一些方法,不作進(jìn)一步說明。
在系統(tǒng)軟件中首先需要完成以下初始化工作:
1)根據(jù)所需脈沖波的頻率f、占空比步進(jìn)值△d,按照以上所述的公式(1)計(jì)算出所需設(shè)置的定時(shí)器/計(jì)數(shù)器的周期T0,再除以系統(tǒng)時(shí)鐘頻率得到所需設(shè)定的定時(shí)器常數(shù);
2)根據(jù)占空比和脈沖周期除以T0計(jì)算出占空比設(shè)定值n,以及脈沖周期計(jì)數(shù)值N;
3)設(shè)定定時(shí)器的工作模式;
4)設(shè)定定時(shí)器的常數(shù);
5)設(shè)定一個(gè)通用I/O管腳作為輸出;
6)啟動(dòng)定時(shí)器,計(jì)數(shù)值m清零,輸出端口輸出高電平。開定時(shí)器中斷,開始一個(gè)脈沖周期。
定時(shí)器中斷的流程如圖2所示,通過在定時(shí)中斷中比較計(jì)數(shù)值m和設(shè)定的占空比值n,周期計(jì)數(shù)值N來控制輸出端口的電平,即可在輸出端口得到所需的理想的脈沖波形。
圖2 定時(shí)中斷流程圖
通過按鍵改變占空比和頻率時(shí),單片機(jī)只需要根據(jù)所要設(shè)定的值按照公式重新計(jì)算定時(shí)中斷的周期T0,占空比計(jì)數(shù)n,脈沖周期計(jì)數(shù)N,再按以上的步驟對(duì)定時(shí)器重新初始化一次即可,定時(shí)中斷不需進(jìn)行修改。
本文通過用單片機(jī)來實(shí)現(xiàn)頻率、占空比可調(diào)的方波脈沖信號(hào),對(duì)于很多工業(yè)控制場合來說有很好的適應(yīng)范圍。以上描述的電路,除了用來實(shí)現(xiàn)對(duì)超聲波探頭的驅(qū)動(dòng)外,還可以直接作為一個(gè)簡單的方波脈沖信號(hào)發(fā)生器,用來控制開關(guān)電源、以及LED燈亮度控制等,都得到了比較好的效果。
系統(tǒng)軟件主要采用定時(shí)器中斷方式來實(shí)現(xiàn),單片機(jī)還可以進(jìn)行常規(guī)的按鍵、顯示、控制等處理,能有效降低系統(tǒng)的總體成本。
[1]何立民.單片機(jī)應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社.
[2]李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù).北京航空航天大學(xué)出版社.
[3]STC12C5628AD系列單片機(jī)用戶手冊(cè).宏晶科技.