//Logo Image
作者:洪永杰(2002-04-30),推薦:徐業良(2002-05-02)

單晶片實習-交流馬達轉速控制

本文將針對如何使用單晶片PIC16F877搭配交流馬達變頻器(將頻率設定訊號轉成直流)作交流馬達轉速控制的原理做一介紹,同時以復健運動腳踏車為例,介紹一具體的交流馬達轉速控制實驗範例。

1.     PWM的基本原理

PWM(Pulse Width Modulation)稱為脈波寬度調變,常用於直流馬達的控制、電源變換器之穩壓控制、甚至是直流轉換交流弦波的控制等,是控制直流馬達轉速最常見的方法。其原理如圖1(a)1(b)所示,圖中高電位的部份是馬達「動作(active)」時間,或叫做「責任週期(Duty Cycle)」,低電位的部份是馬達「停止(stop)」時間,兩者時間和即為一週期。當使用者想降低馬達轉速時,只要減少動作的時間、增加停止的時間,並保持週期不變即可,如圖1(a)所示。反之,如果想加快馬達的轉速,則需要加長動作的時間、縮短停止的時間,並且保持週期不變,如圖1(b)所示。由於改變轉速係透過改變動作的時間比例,也就是圖1(a)1(b)中高電位脈波(Pulse)的相對時間寬度(Width),因此這樣的控制方式稱作脈波寬度調變。

1(a). PWM動作原理於低轉速時

1(b). PWM動作原理於高轉速時

對於比較精密、反應比較快的直流馬達控制器,圖1(a)1(b)中的脈波寬度變化需要相當的快,通常是以mSec”為單位,甚至更精密的以0.1mSec為單位,如果想使用軟體程式來控制輸出脈波的時間寬度,不但程式本身極為繁瑣,會佔據微處理器大部份的工作,而且控制時間還無法完全準確,因此如果想精確控制直流馬達的驅動訊號,最好使用具有內嵌PWM功能的微處理器。本文中所使用的單晶片PIC16F877就是具有內嵌PWM功能的微處理器,只要透過幾個簡單的暫存器設定,使用者就可以同時擁有兩組10位元、時脈頻率為Fosc/4的精密PWM輸出(Fosc為微處理器振盪器頻率)。

2. PWM的設定

PIC16F877中,搭配PWM使用的計時器為Timer2,其內部架構如圖2所示。Timer2是一個8位元的計時器,其中還包括一個預除器(Prescaler)和一個後除器(Postscaler),預除器有1:11:41:16三種比例選擇,後除器則是從1:11:2…1:1616種比例選擇。

2. Timer2內部架構【圖片來源:PIC16F877快速上手,全華科技,2000

由圖2中可以發現,Timer2的訊號來源只能是右邊的Fosc/4,也就是只能接微處理器的clock,因此,Timer2只能做為計時器(Timer)而不能當作計數器(Counter)使用。而PWM的訊號週期主要是由PR2暫存器(週期暫存器)所決定,其實際的計算公式如下:

        PWM訊號週期 = (PR2+1)×(4/Fosc)×(TMR2 prescale value)               (1)

PWM的訊號頻率則為訊號週期的倒數。本範例中PR2=249Fosc=20MHzTimer2的預除器比例為1:4,所以利用式(1)可得PWM訊號週期=200ms

至於PWM的責任週期的計算則可以表示如下:

        PWM責任週期

        = (CCPR1L:CCP1CON5:4)×(1/Fosc)×(TMR2 prescale value)        (2)

Duty Cycle部份是由10個位元決定,其中8位元為CCPR1L,另外兩個位元為CCP1CON暫存器的bit5bit4。而式(2)CCPR1L:CCP1CON5:4>的意思則是暫存器CCPR1L8個位元和CCP1CON暫存器中的bit5bit4合併使用時,可以構成10個位元解析度的PWM脈波寬度控制。若是只需做8位元解析度的PWM脈波寬度控制,將CCPR1L:CCP1CON5:4>設成CCPR1L:CCP1CON0:0>即可。

3. 交流馬達轉速控制程式

本文以復健運動腳踏車為例,描述單經片作交流馬達轉速控制。復健運動腳踏車馬達控制架構如圖2所示,可分成VB端與PIC端兩大部份。VB端的工作重點為提供一介面供使用者設定所需馬達轉速,並藉由RS232將命令傳送至PIC端。PIC端的工作重點則為負責A/D轉換類比輸入,以及利用上述的Timer2產生PWM訊號(如圖1(a)與圖1(b)的訊號),並將其輸出訊號傳送至交流馬達變頻器,進而使馬達產生所需之轉速。以下將就VB端與PIC端程式設計部份做一說明。

2. 復健運動腳踏車馬達控制架構流程圖

3、圖4VB程式介面與程式碼,相關通訊屬性的設定方式請參考“單晶片實習—PIC與電腦之非同步串列通訊一文整個程式設計是由一個“Select Case”敘述所架構而成,當使用者於左行程速度等級設定框內設定馬達轉速等級(0~15)後,“Select Case”敘述會判別Index的值,決定對應之輸出字串(0~9a~f),經由RS232傳送到PIC端來驅使馬達作對應的速度轉動。同理,當使用者於右行程速度設定框內設定馬達轉速等級(0~15)後,“Select Case”敘述會判別Index的值,決定對應之輸出字串(g~v)

3. VB程式介面

4. VB程式碼

5PIC端馬達轉速控制主程式部分,整體架構可分成兩個部份,第一部份(圖5(a))為引用CCS內建函數庫(#include “yz_lib.h”)同時宣告相關變數。第二部分(圖5(b))則是利用類比數位轉換程式擷取數位轉速計的電壓值變化,並等待由RS232所傳來的控制指令以改變馬達轉速。程式的工作原理為當使用者於VB介面視窗的欄位(如圖3)設定左右行程兩組不同馬達轉速後,藉由RS232傳送至PIC端,此時程式進入While迴圈,使用“get_cmd()”指令,接收RS232所傳來的字串,並判斷將其相對應的轉速以驅動馬達。由於復健運動腳踏車可以提供不同的左右行程速度等級,因此何時需要轉換速度與轉換成何種速度的工作則必須仰賴類比數位轉換程式與其判斷式來達成。類比數位轉換程式負責擷取數位轉速計的電壓值,利用轉速計有無接收到反光貼紙的反射光線進而產生電壓差的方式,經由判斷式加以判斷即可達成左右行程速度獨立控制的目的。

5(a). 馬達轉速控制主程式

5(b). 馬達轉速控制主程式

參考資料

何信龍、李雪銀編著,PIC16F877快速上手,全華科技,2000

盧春林編著,PIC16F877微處理器技術精解,標高電腦,2001

趙春棠編著,PIC單晶片學習秘笈,全威圖書,2001

范逸之、陳立元編著,Visual Basic RS-232串列通訊控制最新版,文魁資訊,2001