基于A(yíng)RM的直流電機調速系統的設計與實(shí)現
關(guān)鍵詞:S3C44B0X; L298N; 嵌入式; 直流電機
0 引言
在智能小車(chē)的研制開(kāi)發(fā)中,很重要的一部分就是智能小車(chē)要能根據周?chē)系K物的情況自主的調節行駛速度和行駛方向。本文中所設計的直流電機調速系統是智能小車(chē)的一個(gè)重要組成部分,直流電機調速系統主要由S3C44B0X處理器和電機驅動(dòng)芯片L298N構成,主要功能是驅動(dòng)小車(chē)的兩個(gè)車(chē)輪,調節小車(chē)的行駛速,通過(guò)改變兩個(gè)車(chē)輪的轉速差調節行駛方向。
1 硬件設計
由ARM公司設計的采用RISC架構的ARM處理器性能強,功耗低,體積小,支持Thumb(16位)/ARM(32位)雙指令集,指令執行速度快。目前ARM系列微處理器在32位RISC嵌入式產(chǎn)品中已經(jīng)占據75%以上的市場(chǎng)份額。尤以ARM7TDMI系列應用最廣,其性?xún)r(jià)比也是最高。
1.1 S3C44B0X簡(jiǎn)介
S3C44B0X是由Samsung公司推出的基于A(yíng)RM7TDMI核的16/32位RISC處理器。此款處理器提供了豐富的通用的片上外設,大大減少了系統電路中除處理器以外的元器件配置。S3C44B0X具有6個(gè)16位定時(shí)器,每個(gè)定時(shí)器可以按照中斷模式或DMA模式運行。定時(shí)器0,1,2,3,4具有PWM功能,定時(shí)器5是一個(gè)內部定時(shí)器。定時(shí)器0和1,2和3,4和5分別共享一個(gè)8位的預分頻器(Prescaler),預分頻值的范圍為0—255,通過(guò)寄存器TCFG0設定這三個(gè)預分頻器的值;定時(shí)器0,1,2,3還各擁有一個(gè)具有5個(gè)不同分頻信號(1/2,1/4,1/8,1/16,1/32)的時(shí)鐘分割器(Divider),定時(shí)器4和5則各具有一個(gè)包含4個(gè)分頻信號(1/2,1/4,1/8,1/16)的時(shí)鐘分割器。這6個(gè)定時(shí)器的分割值通過(guò)寄存器TCFG1設定。
定時(shí)器輸入時(shí)鐘頻率=MCLK/Prescaler/Divider。其中MCLK=60MHz是系統的主頻。
1.2 硬件實(shí)現
為提高系統效率、降低功耗,功放驅動(dòng)電路采用基于雙極型H橋型脈寬調制方式(PWM)的集成電路L298N。L298N是SGS公司的產(chǎn)品,內部包含二個(gè)H橋的高電壓大電流橋式驅動(dòng)器,接收標準TTL邏輯電平信號,可驅動(dòng)46伏、2安培以下的電機,工作溫度范圍從-25度到130度。其內部的一個(gè)H橋原理圖如圖1所示。EnA是控制使能端,控制OUTl和OUT2之間電機的停轉, IN1、IN2腳接入控制電平,控制OUTl和OUT2之間電機的轉向。當使能端EnA有效,IN1為低電平IN2為高電平時(shí),三極管2,3導通,1,4截止,電機反轉。當IN1和IN2電平相同時(shí),電機停轉。表1是其使能引腳,輸入引腳和輸出引腳之間的邏輯關(guān)系。
圖1. H橋原理圖
表1.電機運行邏輯關(guān)系
另一個(gè)H橋的工作原理同上。由EnB控制OUT3和OUT4之間電機的停轉,根據IN3、IN4腳的輸入電平情況控制OUT3和OUT4之間電機的轉向。
由于S3C44B0X本身就帶有5個(gè)PWM輸出口,直接輸出控制信號到L298N即可,無(wú)須另加電路。系統原理框圖如圖2所示。系統中選用了工作在中斷模式下的定時(shí)器1和2作為產(chǎn)生PWM的定時(shí)器。通過(guò)編程設定I/O口PE4和PE5作為定時(shí)器1,2輸出PWM的端口,接入L298N的EnA和EnB端口,根據定時(shí)器1,2輸出的PWM頻率分別控制兩個(gè)直流電機的轉速。 PE6設定為輸出端口連接IN1并通過(guò)一反向器連接IN2;同樣,PE7也設為輸出端口,接入IN3并經(jīng)一個(gè)反向器接入IN4。通過(guò)接入反向器,IN1和IN2,IN3和IN4就不會(huì )同時(shí)處于高電平或低電平,即不會(huì )因為IN1和IN2,IN3和IN4電平相同而使電機停止轉動(dòng)。電機的停止操作可以通過(guò)調制脈沖寬度為0即占空比為0或者關(guān)閉定時(shí)器的使能位實(shí)現。這樣只需一路信號PE6就可控制IN1和IN2的狀態(tài),PE7控制IN3和IN4的狀態(tài),從而使得系統的控制信號得到減少,在一定程度上簡(jiǎn)化了系統。為保證L298N驅動(dòng)芯片正常工作,還要在其與直流電機之間加入四對續流二極管用以將電機中反向電動(dòng)勢產(chǎn)生的電流分流到地或電源正極,以免反向電動(dòng)勢對L298N產(chǎn)生損害。
圖2. 系統原理圖
2 系統的軟件設計
2.1 定時(shí)器工作方式
在S3C44B0X中,每個(gè)定時(shí)器具有一個(gè)倒計時(shí)器,通過(guò)定時(shí)器時(shí)鐘源驅動(dòng)16位倒計時(shí)寄存器TCNTn。定時(shí)器啟動(dòng)前,要向定時(shí)計數緩沖區寄存器(TCNTBn)寫(xiě)入一個(gè)初始值,這個(gè)值在定時(shí)器啟動(dòng)時(shí)載入到倒計時(shí)器TCNTn中。在定時(shí)器的比較緩沖器寄存器(TCMPBn)中同樣也要寫(xiě)入一初始值,運行時(shí)用來(lái)載入到比較寄存器TCMPn中與倒計時(shí)器TCNTn的值相比較。系統啟動(dòng)時(shí),需要通過(guò)置手動(dòng)刷新位的方式,將TCMPBn和TCNTBn這兩個(gè)緩沖區的值載入到TCMPn和TCNTn中。TCMPBn和TCNTBn這兩個(gè)緩沖區的應用(即雙緩沖器)使定時(shí)器能夠在頻率和占空比同時(shí)變化時(shí),仍然產(chǎn)生一個(gè)穩定的輸出。一般啟動(dòng)定時(shí)器的步驟如下:
1),將初始值寫(xiě)入到TCNTBn和TCMPBn中。
2),設置對應定時(shí)器的自動(dòng)重載位
3),設置對應定時(shí)器的手動(dòng)更新位,反向器置為off狀態(tài).
3),設置對應定時(shí)器的啟動(dòng)位來(lái)啟動(dòng)定時(shí)器,同時(shí)清除手動(dòng)更新位。
此時(shí)定時(shí)器TCNTn開(kāi)始倒計數,當TCNTn具有與TCMPn相同的值時(shí),TOUTn的邏輯電平由低變高。當計數器TCNTn到達0時(shí)將產(chǎn)生定時(shí)器中斷請求,通知CPU定時(shí)器操作已經(jīng)完成。此時(shí),如果自動(dòng)重載控制位使能,TCNTBn的值會(huì )自動(dòng)載入到TCNTn寄存器中,并開(kāi)始下一操作周期。如果通過(guò)清除定時(shí)器使能位等方法使定時(shí)器停止,計數值將不會(huì )自動(dòng)重載。
2.2 調制PWM
脈沖寬度調制(Pulse Width Modulation—PWM)是指將輸出信號的基本周期固定,通過(guò)調整基本周期內工作周期的大小來(lái)控制輸出功率。對于一個(gè)定時(shí)器來(lái)說(shuō),其時(shí)鐘源輸入頻率一般不變,即TCFG0(定時(shí)器預分頻值)和TCFG1(定時(shí)器分割值)的值設定后就不需改變。這樣對于PWM提供了一個(gè)穩定的時(shí)鐘源。電機的轉速與電機兩端的電壓成比例,而電機兩端的電壓與控制波形的占空比成正比,因此電機的速度與占空比成比例,占空比越大,電機轉得越快。系統中PWM脈沖頻率就由TCNTBn決定,PWM脈沖寬度值則由TCMPBn的值來(lái)決定,而占空比即為T(mén)CMPn/TCNTn。如果要使電機轉速下降,即得到一個(gè)比較低的PWM脈寬輸出值,可以減少TCMPBn的值;要使電機轉速增加,即得到一個(gè)更高的PWM的輸出值,可以增加TCMPBn的值。由于雙緩沖器的特性,下一個(gè)PWM周期的TCMPBn值可以通過(guò)ISR(中斷服務(wù)程序)或其他手段在當前PWM周期中低電平時(shí)的任何一點(diǎn)寫(xiě)入,即在程序中可以通過(guò)中斷重新設定TCMPBn的值來(lái)改變電機的轉速。緩沖區TCMPBn,TCNTBn的值不一定等于這個(gè)周期的TCMPn,TCNTn的值,但一定是TCMPn,TCNTn的下一個(gè)周期的值。
2.3 程序代碼
本文中的應用程序是在A(yíng)DS1.2的開(kāi)發(fā)環(huán)境下交叉編譯后下載到Flash中運行的。程序代碼(以定時(shí)器1為例):
//初始化端口
void Init_PortE( )
{
rPCONE=0x5a00; //定義I/O口//PE4,PE5,PE6,PE7的//功能
rPUPE=0xf8; //禁止相應位的電阻上拉使能
}
//啟動(dòng)A號電機,此電機由定時(shí)器1控制
void Start_MotorA ( )
{
rTCNTB1=Motor_CONT;//給兩個(gè)緩沖器//賦值
rTCMPB1=Motor_cont;
rTCON |=(0x01<<11); //定時(shí)器1自動(dòng)重載
rTCON |=(0x01<<9); //手動(dòng)刷新置位
rTCON &= ~ (0x01<<10); //關(guān)反向器
rTCON |=(0x01<<8); //啟動(dòng)定時(shí)器1
rTCON &= ~ (0x01<<9); //清手動(dòng)刷新位
}
//A電機停止
void Stop_Motor1()
{
rTCON &= ~ (0x01<<8); //清定時(shí)器1使能位
}
//改變電機占空比和轉向
void SetPWM (int valueA, int drct)
{
rPDATE=drct; // drct定義PE6口輸出高電平還是低電平,控制電機轉向
rTCMPB1=Motor_COUNT*valueA/0x64;//valueA為占空比,亦可設置valueA為0使電機A停//止轉動(dòng)。
}
另一電機的相關(guān)設置同上。小車(chē)行進(jìn)過(guò)程中可以同時(shí)改變兩組PWM的占空比來(lái)調節小車(chē)的行駛速度;通過(guò)設置兩組不同的占空比形成兩個(gè)車(chē)輪的轉速差達到改變行駛方向的目的。
在對比了100Hz,1KHz,10KHz的PWM輸出驅動(dòng)電機的情況發(fā)現:當頻率為100 Hz時(shí),電機運行呈間隙轉動(dòng)狀態(tài);當頻率為10KHz時(shí),電機運行不平穩;當頻率為1KHz時(shí),不同占空比下電機運行都很平穩,轉速、轉向改變迅速。圖3是由示波器產(chǎn)生的PWM頻率為1KHz,占空比為30%,電機反轉情況下的調制波形。
圖3占空比為30%,電機反轉
圖4是由示波器產(chǎn)生的PWM頻率為1KHz,占空比80%,電機正轉時(shí)的調制波形。
圖4占空比為30%,電機反轉
3 結束語(yǔ)
本文中所設PWM的輸出頻率為1KHZ,所用直流電機是120轉/分鐘,額定電壓為12V(電機外不加其他感性負載)。本課題最終實(shí)現的是基于A(yíng)RM的嵌入式智能小車(chē)系統,而直流電機的PWM調速控制是其中一個(gè)重要的子系統。實(shí)驗證明,Samsung公司的16/32位RISC處理器S3C44B0X對調制PWM實(shí)現方便,可編程,電機轉速、轉向的改變迅速,無(wú)停頓,可以很好的為智能小車(chē)服務(wù)。
參考文獻:
[1] 杜春雷 ARM體系結構與編程[M] 北京: 清華大學(xué)出版社 2003
[2] S3C44B0X USER MANUAL. SAMSUNG ELECTRONICS
[3] 田澤 嵌入式系統與應用[M] 北京:北京航空航天大學(xué)出版社 2005
[4] 李洪科 吳漢松等 基于RTW的無(wú)刷直流電機控制系統仿真的新方法 微計算機信息2005,06(006),P12-14
評論