摘 要: 一種利用單片機(jī)MSP430F413的定時(shí)器Time_A實(shí)現(xiàn)采樣和脈沖寬度調(diào)節(jié)(PWM)的方法,,并應(yīng)用于精密溫度控制系統(tǒng)。該系統(tǒng)采用時(shí)間量采樣的模數(shù)轉(zhuǎn)換方法,,并設(shè)計(jì)了完全采用軟件實(shí)現(xiàn)的PID調(diào)節(jié)程序,,用PWM方式完成對精密溫度的控制。
關(guān)鍵詞: PWM控制 單片機(jī) 定時(shí)器 MSP430F413
PWM控制方式廣泛應(yīng)用于各種控制系統(tǒng)中,,但對脈沖寬度的調(diào)節(jié)一般采用硬件來實(shí)現(xiàn),。如使用PWM控制器或在系統(tǒng)中增加PWM電路[1]等,則成本高,、響應(yīng)速度慢,,而且PWM控制器與系統(tǒng)之間存在兼容問題。另外,,控制系統(tǒng)中的信號采樣通常是由A/D轉(zhuǎn)換器來完成,,因此檢測精度要求較高時(shí),,調(diào)理電路復(fù)雜,而且因A/D的位數(shù)高,,從而使設(shè)計(jì)的系統(tǒng)成本居高不下,。
本文以應(yīng)用于溫度控制系統(tǒng)為例,介紹利用Motorola公司生產(chǎn)的新型單片機(jī)MSP430F413內(nèi)的定時(shí)器Time_A設(shè)計(jì)可以用時(shí)間量進(jìn)行溫度采樣以及實(shí)現(xiàn)PWM調(diào)節(jié)的方法,。為了可在使用少量外圍電路的情況下實(shí)現(xiàn)控制系統(tǒng)的高精度測量和控制,,一方面用時(shí)間量采樣,在省去1片A/D的情況下得到12位的高精度,;另一方面在定時(shí)中斷內(nèi)完全用軟件實(shí)現(xiàn)PWM調(diào)節(jié),,以易于進(jìn)行數(shù)據(jù)的通信和顯示。該系統(tǒng)在中斷內(nèi)可以解決波形產(chǎn)生的實(shí)時(shí)在線計(jì)算和計(jì)算精度問題,,可精確,、實(shí)時(shí)地計(jì)算設(shè)定頻率下的脈沖寬度。
1 單片機(jī)MSP430F413及定時(shí)器
MSP430系列的單片機(jī)F413在超低功耗和功能集成上都有一定的特色,,可大大減小外圍電路的復(fù)雜性,,它的實(shí)時(shí)處理能力及各種外圍模塊使其可應(yīng)用在多個(gè)低功耗領(lǐng)域[2]。MSP430F413中通用16位定時(shí)器Timer_A有如下主要功能模塊,。
(1)一個(gè)可連續(xù)遞增計(jì)數(shù)至預(yù)定值并返回0的計(jì)數(shù)器,。
(2)軟件可選擇時(shí)鐘源。
(3)5個(gè)捕獲/比較寄存器,,每個(gè)有獨(dú)立的捕獲事件,。
(4)5個(gè)輸出模塊,支持脈寬調(diào)制的需要,。
定時(shí)器控制寄存器TACTL的各位可控制Timer_A的配置,,并定義16位定時(shí)器的基本操作,可選擇原始頻率或分頻后的輸入時(shí)鐘源及4種工作模式,。另外還有清除功能和溢出中斷控制位,。5個(gè)捕獲/比較寄存器CCRx的操作相同,它們通過各自的控制寄存器CCTLx進(jìn)行配置,。
2 時(shí)間量采樣及PWM控制的實(shí)現(xiàn)原理
以應(yīng)用于溫度控制系統(tǒng)為例,,介紹用定時(shí)器實(shí)現(xiàn)信號采樣和PWM控制的方法。該溫度控制系統(tǒng)包括單片機(jī),、溫度測量電路,、負(fù)載驅(qū)動(dòng)電路及電源控制、低電壓檢測和顯示電路等其他外圍部分,。
單片機(jī)MSP430F413中用于測量和控制溫度的主要I/O口有:
P1.0:輸出50Hz方波,,用于產(chǎn)生三角波。
P1.2:驅(qū)動(dòng)溫度控制執(zhí)行元件,2kHz方波PWM輸出,。
P2.0:脈寬捕捉,。
2.1 單片機(jī)端口的中斷設(shè)置
溫度控制系統(tǒng)的50Hz方波輸出、PWM輸出和輸入捕捉都是由定時(shí)中斷來實(shí)現(xiàn),。這3個(gè)中斷分別由P0,、P1和P2口的外圍模塊引起,屬于外部可屏蔽中斷,。初始化時(shí),,對這3個(gè)I/O口進(jìn)行中斷設(shè)置,并對Time_A控制寄存器TACTL設(shè)置,,包括輸入信號2分頻,、選用輔助時(shí)鐘ACLK等。當(dāng)定義完捕獲/比較寄存器后,,重新賦值TACTL,,啟動(dòng)定時(shí)器,開始連續(xù)遞增計(jì)數(shù),。
2.2 脈寬捕捉實(shí)現(xiàn)溫度值的采樣
溫度測量電路將溫度值轉(zhuǎn)換為電壓值,,同時(shí)單片機(jī)產(chǎn)生的50Hz方波經(jīng)電容充放電電路變換得到同頻率的三角波,,其電壓值切割三角波,,從而將溫度值轉(zhuǎn)換為相應(yīng)寬度的脈沖送入單片機(jī)。波形變化如圖1所示,。
通過設(shè)置CCTLx中的模式位,,可將對應(yīng)的捕獲/比較寄存器CCRx設(shè)定為捕獲模式,用于時(shí)間事件的精確定位,。如果在選定的輸入引腳上發(fā)生選定脈沖的觸發(fā)沿,,則定時(shí)器計(jì)數(shù)的值將被復(fù)制到CCRx中。根據(jù)這一原理,,選定P2.0為輸入引腳,,設(shè)置CCTL2為捕獲模式,所測溫度值由模擬量經(jīng)測量電路轉(zhuǎn)換為脈沖后,,P2.0捕捉脈沖下降沿,,進(jìn)入中斷T2,得到與溫度值一致的單位時(shí)間內(nèi)的脈沖數(shù),,存入CCR2作進(jìn)一步處理,。
這樣,系統(tǒng)就在不使用A/D轉(zhuǎn)換器的情況下完成了模數(shù)轉(zhuǎn)換,。因?yàn)閱纹瑱C(jī)的時(shí)鐘精確度高,,而且時(shí)間量是一個(gè)相對精度極高的量,但本系統(tǒng)中用時(shí)間量進(jìn)行溫度采樣可獲得12位的高精度,,同時(shí)采用50Hz脈沖,,可以大大消除工頻干擾,。這些都為進(jìn)行精確的溫度控制提供了必要的條件。2.3 PWM信號生成原理
將捕獲/比較寄存器CCR0和CCR1定義為比較模式,,它們的輸出單元OUT0和OUT1分別對應(yīng)單片機(jī)引腳P1.0(TA0)和P1.2(TA1),。進(jìn)入比較模式后,如果定時(shí)器CCRx的計(jì)數(shù)值等于比較寄存器x中的值,,則比較信號EQUx輸出到輸出單元OUTx中,,同時(shí)根據(jù)選定的模式對信號置位、復(fù)位或翻轉(zhuǎn),。其中:設(shè)置EQU0將OUT0信號翻轉(zhuǎn),,信號時(shí)鐘與定時(shí)器時(shí)鐘同步,這樣就可以在P1.0引腳上得到50Hz的方波信號,;設(shè)置EQU1輸出模式為PWM復(fù)位/置位,。
設(shè)定模式下定時(shí)中斷的輸出如圖2所示。根據(jù)設(shè)定的PWM復(fù)位/置位模式,,若CCR1計(jì)數(shù)器溢出,,則EQU1將OUT1復(fù)位;若CCR0計(jì)數(shù)器溢出,,則EQU0將OUT1置位,。利用CCR0和CCR1計(jì)數(shù)起始點(diǎn)的差值,實(shí)現(xiàn)占空比的變化,,從而在P1.2上完成PWM輸出,。系統(tǒng)對占空比的調(diào)節(jié)是通過改變CCR1的基數(shù)來實(shí)現(xiàn)的。定時(shí)器時(shí)鐘為2MHz,、CCR1和CCR0的計(jì)數(shù)值為1 000時(shí),,可獲得2kHz的PWM輸出頻率。負(fù)載驅(qū)動(dòng)電路將單片機(jī)P1.2引腳輸出的PWM信號放大濾波,,用于驅(qū)動(dòng)大功率的執(zhí)行元件,。
3 軟件設(shè)計(jì)
3.1 系統(tǒng)主程序
在主程序中包括系統(tǒng)初始化、定時(shí)器的初始化,、溫度采樣值的讀入,、負(fù)載驅(qū)動(dòng)和顯示等。系統(tǒng)進(jìn)行溫度值采樣和PWM輸出均在定時(shí)中斷內(nèi)完成,,PWM輸出脈沖的占空比則由PID算法得到,。系統(tǒng)主程序流程圖如圖3所示。
3.2 PID脈寬調(diào)節(jié)
系統(tǒng)對脈寬的調(diào)制由PID算法實(shí)現(xiàn),。根據(jù)算法原理,,本系統(tǒng)設(shè)計(jì)了一套完全由軟件實(shí)現(xiàn)的PID算法,并且在控制過程中完成參數(shù)的自整定。PID調(diào)節(jié)的控制過程:單片機(jī)讀出數(shù)字形式的實(shí)際溫度Tn,,然后和設(shè)定溫度Tg相比較,,得出差值en=Tn-Tg,根據(jù)en的正負(fù)和大小,,調(diào)用PID公式,,計(jì)算得到與輸出電壓Δun一致的占空比,調(diào)節(jié)溫度的升降,,同時(shí)尋找最優(yōu)條件,,改變PID參數(shù)。
增量式PID控制算法的輸出量[3]:
PID調(diào)節(jié)程序直接寫入單片機(jī)內(nèi),,根據(jù)得到的值改變計(jì)數(shù)器CCR1的基數(shù)值,,從而改變輸出脈沖的占空比,達(dá)到調(diào)節(jié)PWM的目的,。
3.3 定時(shí)中斷
定時(shí)中斷子程序流程如圖4所示,。系統(tǒng)采用的晶振頻率為2MHz,T0中斷的作用是得到頻率為50Hz,、占空比為90%的方波,,用以產(chǎn)生三角波,并檢查1個(gè)周期內(nèi)是否有漏采的數(shù)據(jù),。T0模溢出翻轉(zhuǎn)為高電平,,輸出比較間隔為18ms。其中,,CCR0加了PWM的模,,該值即為CCR0和CCR1的差值,,用以產(chǎn)生輸出所需的脈沖寬度,。
T1中斷內(nèi)處理的是控制端口的PWM輸出,并檢查1個(gè)周期內(nèi)是否重復(fù)采集數(shù)據(jù),,T1輸出比較產(chǎn)生低電平,,輸出比較間隔為20ms。T2中斷捕捉溫度測量端口的脈寬,,得到所測的溫度值,。
4 結(jié)束語
利用單片機(jī)MSP430F413內(nèi)的定時(shí)器Time_A進(jìn)行溫度采樣以及實(shí)現(xiàn)PWM調(diào)節(jié)的方法,可以廣泛用于具有端口捕捉功能的單片機(jī)中,。與傳統(tǒng)方法比較,,它不僅可以簡化測量和控制電路的硬件結(jié)構(gòu),而且可以方便地建立人機(jī)接口,,實(shí)現(xiàn)用軟件調(diào)整參數(shù),,使控制更精確、實(shí)時(shí)、可靠,。經(jīng)過實(shí)驗(yàn),,該方法應(yīng)用于溫度控制系統(tǒng)中獲得了預(yù)期的精確PWM調(diào)節(jié)波形。該方法同樣可以用于其他單片機(jī)控制系統(tǒng)中,。
參考文獻(xiàn)
1 Rahban T.穩(wěn)定度0.1℃的PWM控制器.電子產(chǎn)品世界,,2003;(2)
2 胡大可.MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用.北京:北京航空航天大學(xué)出版社,,2001
3 惠長坤.PID算法在可編程控制器上的軟件實(shí)現(xiàn)方法.華東船舶工業(yè)學(xué)院學(xué)報(bào),,1995;9(3)