摘 要: 本文介紹了一種基于S3C2410微控制器的直流電機(jī)調(diào)速系統(tǒng)。文章在介紹PWM調(diào)速原理的基礎(chǔ)上詳細(xì)說明了S3C2410的PWM發(fā)生器的結(jié)構(gòu)特點(diǎn)及其使用方法。并給出了實(shí)現(xiàn)調(diào)速的核心代碼及調(diào)速系統(tǒng)的總體設(shè)計(jì)。
關(guān)鍵詞: S3C2410; PWM; 調(diào)速
0 引言
PWM(Pulse-Width Modulation)是脈寬調(diào)制技術(shù)的簡(jiǎn)稱。PWM控制技術(shù)以其控制簡(jiǎn)單、靈活和動(dòng)態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電力電子技術(shù)廣泛應(yīng)用的控制方式,也為高性能的直流電機(jī)數(shù)字化控制提供了基礎(chǔ)。
1 PWM調(diào)速原理
晶體管開關(guān)器件的導(dǎo)通時(shí)間也被稱為導(dǎo)通角 ,通過控制晶體管的開通與關(guān)斷時(shí)間來改變導(dǎo)通角 的大小,就可以調(diào)節(jié)加在負(fù)載上的平均電壓的大小,以實(shí)現(xiàn)對(duì)直流電機(jī)的調(diào)速,這就是PWM變速控制技術(shù)的基本原理,如圖一所示。調(diào)速控制常通過調(diào)節(jié)脈沖寬度的方法來實(shí)現(xiàn)。
圖1 PWM調(diào)速原理
2 S3C2410的PWM發(fā)生器
2.1 PWM發(fā)生器的結(jié)構(gòu)和計(jì)時(shí)原理
用分立器件組成PWM電路一般來說需要如下幾個(gè)部分:三角波產(chǎn)生電路、脈沖調(diào)制電路、PWM信號(hào)延遲及分配電路。S3C2410做為一款功能強(qiáng)大的微處理器,其內(nèi)部已經(jīng)集成了包含上述三個(gè)部分的PWM發(fā)生器,只要對(duì)相關(guān)寄存器進(jìn)行簡(jiǎn)單的設(shè)置,就可以產(chǎn)生需要的PWM信號(hào)。
S3C2410的定時(shí)/計(jì)數(shù)器0~3都具有PWM輸出功能,以定時(shí)/計(jì)數(shù)器0為例說明。時(shí)鐘信號(hào)PCLK經(jīng)過可編程的8位預(yù)分頻器和時(shí)鐘除法器分頻后,驅(qū)動(dòng)定時(shí)器內(nèi)的邏輯控制器進(jìn)行工作。邏輯控制器的核心,是一個(gè)16位的減法計(jì)數(shù)器。
我們可以賦于計(jì)數(shù)緩沖寄存器(TCNTB0) 和比較緩沖寄存器(TCMPB0)不同的初始值,當(dāng)定時(shí)器使能時(shí),這兩個(gè)寄存器中的數(shù)據(jù)將被分別載入到減法計(jì)數(shù)器(TCNT0)和比較寄存器(TCMP0)。計(jì)數(shù)緩沖寄存器和比較緩沖寄存器的設(shè)計(jì)思想在S3C2410中被稱為“雙緩沖”,它的優(yōu)點(diǎn)是在頻率或占空比改變時(shí),定時(shí)器仍然能產(chǎn)生穩(wěn)定的輸出。
計(jì)時(shí)過程如下:從PCLK過來的時(shí)鐘信號(hào)到達(dá)邏輯控制器時(shí),減法計(jì)數(shù)器的值自動(dòng)減1,當(dāng)減法計(jì)數(shù)器的值為0時(shí),定時(shí)器會(huì)向CPU發(fā)送中斷請(qǐng)求,一輪計(jì)時(shí)操作完成。在自動(dòng)裝載模式下,計(jì)數(shù)緩沖寄存器中的初始值會(huì)由硬件控制自動(dòng)載入減法計(jì)數(shù)器,進(jìn)行下一輪的計(jì)時(shí)操作。
2.2 PWM發(fā)生器的原理
比較緩沖寄存器(TCMPB0)中設(shè)定的初值是用來產(chǎn)生PWM信號(hào)的. 信號(hào)的產(chǎn)生規(guī)則是:每當(dāng)TCNT0的值和TCMP0的值相等時(shí),定時(shí)器的輸出邏輯電平翻轉(zhuǎn)。PWM脈沖頻率由TCNT0決定,而脈沖寬度由TCMP0決定。TCMP0的值越大,PWM脈沖的占空比越大,也即平均輸出電壓越大,反之亦然。
2.3 死區(qū)(Dead Zone)發(fā)生器
為了能夠控制較大功率的設(shè)備,PWM發(fā)生器中還集成了死區(qū)發(fā)生器。這一特性用于在開關(guān)設(shè)備的斷開和另一個(gè)開關(guān)設(shè)備的閉合之間插入一個(gè)時(shí)間缺口,使它們不會(huì)處于同時(shí)閉合的狀態(tài)。如圖2所示:

圖2 死區(qū)發(fā)生器的保護(hù)作用
已知TOUT0是定時(shí)器0的PWM輸出引腳,而TOUT1是TOUT信號(hào)的反相輸出引腳,如果開啟了死區(qū)發(fā)生器功能,那么TOUT0和TOUT1的輸出波形就不可能同時(shí)為高電平了,這樣就有效的防止了開關(guān)設(shè)備同時(shí)閉合時(shí)的輸出短路情況。
3 PWM發(fā)生器程序
PWM發(fā)生器的寄存器配置和控制過程如下:
// 定義死區(qū)寬度和預(yù)標(biāo)定值
#define PRE_SCALER0 (2 << 0)
#define DEAD_ZONE (20 << 16)
// 和定時(shí)控制有關(guān)的宏定義
#define START_TIMER0 (1 << 0)
#define UPDATE_CFG (1 << 1)
#define AUTO_RELOAD (1 << 3)
#define ENABLE_DEADZONE (1 << 4)
// 定時(shí)緩沖器初值1024,電機(jī)調(diào)速步長 2
// 可進(jìn)行1024/2 = 512級(jí)調(diào)速
#define MOTOR_COUNT (1024)
#define MOTOR_STEP (1)
// 用來控制轉(zhuǎn)速的靜態(tài)變量
static int nSpeed =0;
/* 初始化PWM發(fā)生器 */
void InitPWM()
{
/* TOUT0 對(duì)應(yīng)著 GPB0,TOUT1對(duì)應(yīng)著GPB1,因此初始化GPB0/1為第二功能端口 */
rGPBCON = rGPBCON & 0x3FFFF0 | 0xA;
/* 死區(qū)為24個(gè)計(jì)時(shí)單位,預(yù)分頻器設(shè)置為 0,時(shí)鐘除法器和MUX分配器取默認(rèn)值 */
rTCFG0 = DEAD_ZONE | PRE_SCALER0;
/* 設(shè)置計(jì)數(shù)緩沖寄存器初值、比較緩沖寄存器初值*/
rTCNTB0 = MOTOR_COUNT;
rTCMPB0 = MOTOR_STEP * nSpeed;
/* 計(jì)時(shí)器0停止,更新配置 */
rTCON = (~ START_TIMER0) | UPDATE_CFG;
/* 使能死區(qū)發(fā)生器,進(jìn)入自動(dòng)裝載模式,計(jì)時(shí)器0啟動(dòng) */
rTCON = NABLE_DEADZONE | AUTO_RELOAD | START_TIMER0;
?。?
這樣,TOUT0和TOUT1引腳上就會(huì)輸出帶有死區(qū)的PWM波形。通過控制變量nSpeed的值,就可以調(diào)節(jié)PWM的占空比,從而調(diào)節(jié)了電機(jī)的轉(zhuǎn)速。
4 調(diào)速系統(tǒng)總體設(shè)計(jì)
系統(tǒng)由S3C2410系統(tǒng)板、光耦、光電編碼器、功率驅(qū)動(dòng)電路和直流電機(jī)組成,如圖3所示。
圖3 調(diào)速系統(tǒng)結(jié)構(gòu)框圖
S3C2410作為主控制器,通過TCP/IP協(xié)議和中央控制室通信,負(fù)責(zé)接收控制命令和報(bào)告系統(tǒng)狀態(tài)。S3C2410的定時(shí)器0做為PWM發(fā)生器,光耦用于光電隔離,有效的抑制了后向通道的干擾,功率驅(qū)動(dòng)電路提供給電機(jī)“H”橋式驅(qū)動(dòng),光電編碼器將采樣到的電機(jī)轉(zhuǎn)速轉(zhuǎn)化為數(shù)字信號(hào),反饋給S3C2410,用來實(shí)現(xiàn)閉環(huán)控制。為減小誤差,程序中應(yīng)該對(duì)光電編碼器傳來的電機(jī)轉(zhuǎn)速數(shù)據(jù)進(jìn)行均值濾波處理。
5 結(jié)束語
使用S3C2410的PWM發(fā)生器對(duì)小型直流電機(jī)的轉(zhuǎn)速進(jìn)行控制,電路簡(jiǎn)單,使用方便,并可以由軟件實(shí)現(xiàn)靈活的控制算法以提高系統(tǒng)性能。S3C2410內(nèi)建的強(qiáng)大通訊和I/O功能使得只需加入少量電路即可以方便的和外界以TCP/IP、無線射頻、串口等方式通訊并加以LCD顯示,使控制更加便利和可靠。
參考文獻(xiàn):
[1] 李志寧,張英堂. PLC中PWM功能模塊的應(yīng)用研究 [J].微計(jì)算機(jī)信息,2006(25):42-45.
[2] 于明. ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)教程 [M]. 北京:電子工業(yè)出版社,2006.
[3] 周立功.ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程 [M]. 北京:北京航空航天大學(xué)出版社,2004.
[4] 呂達(dá)昱,竺長安. 一種利用PIC實(shí)現(xiàn)PWM控制的方案 [J]. 機(jī)床與液壓,2004(11):133-134.
[5] 姜長泓,于萬元. 基于AVR單片機(jī)的直流電動(dòng)機(jī)的PWM調(diào)速系統(tǒng)設(shè)計(jì) [J]. 儀器儀表用戶,2006,2(42).