司開波 黃 健 呂林濤
(西京學院,西安 710123)
直流電機因其效率高、壽命長、低噪聲、力矩大等優點,在工業生產和家用電器等方面得到了廣泛的應用。人們經常用PWM波來調整直流電機的轉速,但在實際應用中常常會發現,即使是一個固定的PWM值,也不能得到一個恒定不變的轉速。因此,人們常常用PID算法來調整電機的轉速。這種算法在使用時,要根據不同的電機建立不同的模型,然后分別得到P、I、D的系數,根據系數調整電機的轉速。但該方法受客觀因素影響較大,不能克服非線性摩擦力以及電機力矩波動對轉速的影響,而且相應速度不夠快[1~3]。
為了克服以上缺點,本文提出采用基于Cortex-M3的高性能微處理器STM32,應用其內部定時器Timer,每間隔10ms對PWM波中的正脈寬寬度作出調整,以控制電機的轉速。對電機的轉速采用編碼器測速,精度高、響應速度快。將設定的速度值與編碼器測得的速度進行比較,若其值為正,說明實際速度值偏小,在定時器中將正脈寬的寬度加大,以提高驅動能力,達到提升速度的目的;若其值為負,說明實際速度值偏大,在定時器中將正脈寬的寬度減小,以減小驅動能力,達到降低速度的目的;若兩值相等,則當前的正脈寬值保持不變。采用這種方法,調節時間間隔短、響應快,能夠較好的控制電機的轉速。
系統設計框圖如圖1所示。圖中主控采用STM32F103ZET6,在STM32F1系列中屬于高端產品,功能強大,資源豐富。基于Cortex M3的32位微處理器,有3個硬件SPI接口、8個定時器、3個串口、144個引腳[4,5]。圖1中首先用按鍵電路設置電機轉速,用TB6612驅動直流微型電機,該微型電機自帶編碼器,可用于測速。測速時,將編碼器的A、B相分別連接到STM32定時器T2的PA2和PA3引腳上,就可測得電機的轉速。將測得的轉速值與設置的轉速值進行比較,就可得到誤差值,根據誤差值調節PWM中的正脈寬寬度。若測量值小于設定值,則增大正脈寬的寬度;若測量值大于設定值,則減小正脈寬的寬度;若相等,則維持原來正脈寬的值不變。

圖2 4*1按鍵設計電路Fig.2 4*1 Button design circuit
按鍵設計電路如圖2所示。采用4*1按鍵,用于設置電機轉速。
TB6612是日本東芝公式出品的一款直流電機驅動器,性能優于L298,可同時驅動2路直流電機。最大電流可達1.5A,TB6612與STM32的連接圖如圖3所示。

圖3 TB6612與STM32的連接圖Fig.3 Connection graph between TB6612 and STM32
圖3中AIN1、AIN2、PWMA分別控制1路電機,對應電機連接端是AO1和AO2; BIN1、BIN2、PWMB分別控制1路電機,對應電機連接端是BO1和BO2; 可將AIN1、AIN2、PWMA連接到對應的STM32的IO口。PWMA和PWMB分別連接到STM32的PA0、PA1,這兩個引腳對應的是定時器T5的通道1和通道2,能夠產生對應的PWM波形,用于電機的調速。對應的真值表如表1所示。
表1 TB6612真值表
Tab.1 Truth table of TB6612

表1中H代表高電平,L代表低電平。當電機全速運行時,PWMA輸出高電平,要調整速度時,PWMA輸出不同占空比的方波。另一路電機BIN1、BIN2、PWMB、 BO1、BO2的控制邏輯與表1類似。
12V直流電機連接圖如圖4所示。電機驅動 PWM 頻率是10kHZ。電機尾部自帶了13線的磁(霍爾)編碼器,電機減速比30:1,故車輪轉一圈,電機可以輸出 390個脈沖。編碼器的額定工作電壓是3.3V,集成了上拉電阻和比較整形功能,可以直接輸出方波。將編碼器的輸出A相、B相分別接到定時器T2的PA2和PA3,用定時器T2的計數功能測速[6~8]。圖4中的“電機線+”和“電機線-”分別接圖3中TB6612的輸出端AO1和A02。

圖4 12V直流電機連接圖Fig.4 Connection diagram of 12V DC motor
顯示單元采用1.44寸SPI接口真彩屏,顯示電路設計如圖5所示。圖中采用0.96寸的OLED做顯示屏,分辨率為128×64。接口非常簡單,采用模擬IIC接口,帶有2個10K上拉電阻,分別連接到STM32的PE0、PE1引腳。采用3.3V電壓供電。性能優于普通的液晶顯示器LCD1602,引腳數比1602少很多。按鍵設定的速度值和編碼器測量的速度值都將在OLED顯示屏上顯示,還可以顯示時間等其它信息。

圖5 OLED顯示電路原理圖Fig.5 Schematic diagram of OLED display circuit
軟件設計流程圖如圖6所示。首先對IIC、定時器等進行初始化,然后用按鍵設置電機轉速。按照表1送出對應信號,啟動電機旋轉。在旋轉過程中,利用定時器T1每隔10ms測試一次電機轉速[9]。根據公式(1)得到速度差e。若設定值大于測量值,則PWM的正脈寬加e;若設定值小于測量值,則PWM的正脈寬減e;若相等,則PWM的值不變。一直循環,流程圖如圖6所示。

圖6 軟件流程圖Fig.6 Software flow chart
公式(1)中,vs為設定的速度值,vc為測量的速度值。兩者相減得到速度的誤差值Er
Er=vs-vc
(1)
以下是定時器T1的初始化程序,調用形式是Timer1_Init(99,7199);根據公式(2)計算,定時時間恰好是10ms。
Tout=(arr+1)×(psc+1)/Fclk
(2)
式中:Tout——定時時間;Fclk——時鐘頻率,STM32F103的時鐘頻率是72MHz;arr——定時器的自動重裝值;psc——時鐘預分頻系數,分別做為函數Timer1_Init的兩個參數。
void Timer1_Init(u16 arr,u16 psc)
{
RCC->APB2ENR|=1<<11;
TIM1->ARR=arr;
TIM1->PSC=psc;
TIM1->DIER|=1<<0;
TIM1->DIER|=1<<6;
TIM1->CR1|=0x01;
MY_NVIC_Init(0,0,TIM1_UP_IRQn,2);
}
以下代碼是定時器1的中斷代碼,每隔10ms中斷一次。程序中Read_Encoder(2)為讀取編碼器值的函數,并將其賦給Encoder_Left。程序中Set_value為按鍵設定電機轉速。若測量值大于設定值,則pwm值減1,并調用TIM5_PWM_Set函數重新設定pwm脈寬,降低電機轉速;若測量值小于設定值,則pwm值加1,并調用TIM5_PWM_Set函數重新設定pwm脈寬,提高電機轉速。利用此函數,能夠快速調節電機的轉速。
int TIM1_UP_IRQHandler(void)
{
if(TIM1->SR&0X0001)
{
Encoder_Left=Read_Encoder(2);
if(Encoder_Left>Set_value)
{pwm-= Vs-Vc;
TIM5_PWM_Set(35999,0,3,3,pwm);
}
Else if(Encoder_Left {pwm+= Vs-Vc; TIM5_PWM_Set(35999,0,3,3,pwm); } } } 測試時,根據上述硬件原理圖進行連接。在KEIL下用C語言編寫程序,調試好后下載到STM32F103中,就可進行測試。實物如圖7所示。 測試時,將編碼器輸出值用串口輸出,每隔10ms記錄一次,并將結果保存在一個表格中,如表2所示。由于篇幅有限,表2中只給出了部分數據。根據更多個數據,得到時間與測量速度值之間的曲線如圖8所示。測試時按鍵設定的速度值是240cm/ms。 圖8 時間與測量速度值之間對應關系圖Fig.8 Corresponding graph between time and measured velocity value 從表格2和圖8中可以看出,從0到60ms,PWM值不斷增大,電機轉速不斷提高;從70ms到110ms,由于慣性左右,電機轉速還在增大,但此時定時器已經開始調節速度,調節過程中電機轉速有適當的波動,但是到120ms后趨于穩定。速度穩定在240cm/ms,也就是設定值,達到了調速的目的。 表2 編碼器測量值與時間之間的對應關系 Tab.2 Relationship between encoder measurement value and time 本文提出了一種直流電機的調速新方法,繪制了硬件原理圖,編寫了軟件程序,制作出了實物,并對該方法進行了驗證[10]。測試結果表明:該方法具有簡單、實用、響應快等優點,能夠快速調節電機的轉速,取得了較好的效果。 [1] 余熾業, 宋 躍, 雷瑞庭.基于STC12C5A60S2 的智能循跡小車[J]. 實驗室研究與探索,2014,33(11):46~49. [2] 徐坤,徐坤,吳定允.基于DSP直流無刷電機控制系統的設計與實現[J].信陽師范學院學報( 自然科學版),2016,29(2):249~252. [3] 張厚升,董 碩,姜吉順,邢雪寧.基于Matlab_Simulimk的直流調速系統虛擬實驗教學[J].實驗室研究與探索,2016,35(6) : 66~70. [4] 敬光紅. 基于FPGA的無刷直流電機數字控制方法研究[J].電子器件,2016,39(1) : 111~117. [5] 莫太平,楊宏光,劉冬梅. 面向多路線的智能循跡小車的設計與實現[J].自動化與儀表,2014,(4):6~9. [6] 賀桂芳. 一種新型智能金屬探測儀的設計[J]. 儀表技術與傳感器,2016,1:13~15. [7] 師樹恒,趙斌,郭朋彥,鄒棟. 基于MK60N512的智能循跡小車設計[J].機床與液壓,2014,42(2):91~96. [8] 王茹茹,宋開宏,明軍,潘煜天,吳振飛. 基于開放線圈系統金屬探測儀傳感器的特性分析[J].合肥工業大學學報(自然科學版),2015,38(3):354~357. [9] 宋永獻,馬娟麗,賀乃寶,張先進. 基于TMS320F2812的智能循跡小車控制系統設計[J].計算機測量與控制,2011,19(9):2 128~2 130. [10] 張從鵬,邢慶輝. 基于ARMCortex_M4的永磁無刷直流調速系統設計[J].微特電機,2016,44(1):90~92.5 測試結果


6 結束語