雷慧杰
摘 要: 設(shè)計一種基于單片機的直流電機調(diào)速系統(tǒng),該系統(tǒng)以基于ARM Cortex?M3內(nèi)核的STM32微控制器為核心,利用軟件產(chǎn)生PWM控制信號,采用增量式PID算法控制直流電機的起動、制動、正反轉(zhuǎn)和速度調(diào)節(jié),簡單友好的上位機界面可實時監(jiān)測電機的各種運行信息。實驗結(jié)果表明,該系統(tǒng)具有穩(wěn)態(tài)誤差小,控制精度高,響應(yīng)速度快,能耗低、效率高等優(yōu)點,對上肢康復(fù)機器人的研究具有一定的借鑒價值。
關(guān)鍵詞: STM32; 直流電機; PID; 調(diào)速系統(tǒng)
中圖分類號: TN710?34; TM921; TP29 文獻標(biāo)識碼: A 文章編號: 1004?373X(2016)08?0165?03
Design of STM32?based PID speed control system for DC motors
LEI Huijie
(College of Electronic Information and Electrical Engineering, Anyang Institute of Technology, Anyang 455000, China)
Abstract: The DC motor speed control system based on MCU was designed. The system takes the microcontroller STM32 based on ARM Cortex?M3 as its core. Its PWM control signal is generated with software. The incremental PID algorithm is adopted to control starting, braking, positive inversion and speed regulation of DC motors. The running information of the motors can be monitored in real time on the simple and friendly interface of the upper computer. Practical result shows that the system has small steady state error, high control precision, fast response, low energy consumption and high efficiency, and has a certain reference for the research of upper limb rehabilitation robot.
Keywords: STM32; DC motor; PID; speed control system
直流調(diào)速系統(tǒng)廣泛應(yīng)用于低轉(zhuǎn)速、高精度等各領(lǐng)域,如精密辦公設(shè)備(噴墨打印機、激光打印機),自動售貨機,家用電器、機器人和玩具設(shè)備等。其發(fā)展得力于微電子技術(shù)、電力電子技術(shù)、傳感器技術(shù)、永磁材料技術(shù)、自動控制技術(shù)和微機應(yīng)用技術(shù)的最新發(fā)展成就[1]。順應(yīng)調(diào)速系統(tǒng)智能化、簡單化的發(fā)展趨勢,本設(shè)計采用一款性價比高、功耗低的基于ARM Cortex?M3內(nèi)核的STM32 單片機[2?3]為控制核心,結(jié)合PID控制技術(shù),實現(xiàn)了直流電機范圍大、精度高的調(diào)速性能。
1 系統(tǒng)的總體設(shè)計
該調(diào)速系統(tǒng)能夠?qū)崿F(xiàn)對電機的啟動、制動、正反轉(zhuǎn)調(diào)速、測速和數(shù)據(jù)上傳等功能,可方便地實現(xiàn)直流電機的四象限運行。本系統(tǒng)的性能指標(biāo)為:調(diào)速精度高達到1 r/min;調(diào)速穩(wěn)態(tài)誤差不超過0.5%;調(diào)速范圍為-500~500 r/min;串口指令控制方式;驅(qū)動電路導(dǎo)通阻抗低,能耗少;運行穩(wěn)定可靠。系統(tǒng)由電源、上位機、通信接口、控制電路、電機驅(qū)動電路、電機與負載和測速裝置等模塊組成,結(jié)構(gòu)框圖如圖1所示。
2 硬件設(shè)計
2.1 控制電路設(shè)計
控制電路負責(zé)接收控制指令,并產(chǎn)生相應(yīng)的控制信號,同時返回電機速度數(shù)據(jù)和電機運行狀態(tài)數(shù)據(jù)等。為了保證電路工作穩(wěn)定可靠,控制電路應(yīng)具有較高的運行速度、高度可靠的穩(wěn)定性能、開發(fā)容易、高性價比,產(chǎn)生的PWM控制信號應(yīng)具有死區(qū)延時、互補輸出、緊急剎車等功能。STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex?M3內(nèi)核[4],本系統(tǒng)采用STM32F103作為核心控制器??刂齐娐芬許TM32F103為核心的最小系統(tǒng)包括STM32主芯片、時鐘電路、復(fù)位電路、UART?USB轉(zhuǎn)換電路、JTAG調(diào)試接口電路、電源等,其原理圖如圖2所示。
2.2 驅(qū)動電路設(shè)計
根據(jù)系統(tǒng)正反轉(zhuǎn)的控制要求,采用H橋驅(qū)動電路,由MOS管構(gòu)成的H橋驅(qū)動電路原理圖如圖3所示。
MOSFET是電壓控制型器件,具有開關(guān)速度快、輸入阻抗高、驅(qū)動方便等優(yōu)點[5]。本系統(tǒng)采用IRF9630和IRF630對管,組成H橋,上橋臂均使用PMOS,下橋臂均使用NMOS,兩種MOS管基本特性如表1所示。
控制電路的輸出信號為DC 3.3 V信號,需要與驅(qū)動電路隔離,采用了LTV352光電耦合隔離器。互補PWM輸入信號經(jīng)過光耦隔離作用到MOSFET柵極,從而控制OUTA,OUTB之間的電壓。MOSFET中G,S兩極之間使用了雙向TVS管抑制瞬態(tài)電壓,防止MOSFET損壞。由于采用了PMOS,NMOS對管電路, MOSFET柵極電壓是由輸入電壓進行分壓得到,因此不需要采用額外的高電壓信號源。
互補PWM輸入信號中,PWMA控制V1,V4橋臂,PWMB信號控制V2,V3橋臂。當(dāng)占空比為50%的PWM輸入信號時,OUTA,OUTB之間輸出電壓是0 V,電機處于停止?fàn)顟B(tài)時,由于電機電樞中仍存在高頻微震電流,從而消除了正反向轉(zhuǎn)動時的靜摩擦死區(qū),起著動力潤滑作用[6]。
2.3 速度反饋裝置設(shè)計
本系統(tǒng)采用高達888線AB相光電編碼器,兩相脈沖相差90°,通過測量某相的周期T可以得到電機運行速度,通過測量兩相的上升沿時刻可以得到電機運行方向。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)的軟件設(shè)計主要完成硬件和數(shù)據(jù)初始化功能,然后進入標(biāo)志位循環(huán)掃描狀態(tài),一旦中斷發(fā)生便處理中斷程序,在中斷程序中有相關(guān)標(biāo)志位置位(包括上位機發(fā)送來的、通信異常處理、電機停轉(zhuǎn)處理),有則處理,無則繼續(xù)進行中斷等待[7]。系統(tǒng)軟件主程序流程如圖4所示。
中斷源分為USART中斷、PWM剎車中斷、EXTI、TIMER中斷。
USART中斷是由于與上位機的數(shù)據(jù)交換過程中產(chǎn)生的,在中斷程序中需要對接收到的數(shù)據(jù)包進行解析,并更新通信超時計數(shù)器。
PWM剎車中斷是由于PWM剎車輸入信號產(chǎn)生的,代表電機控制現(xiàn)場產(chǎn)生了緊急停車的請求。
EXTI中斷由AB相編碼器產(chǎn)生的光電編碼脈沖產(chǎn)生,需要在中斷服務(wù)歷程中計算電機運行速度和方向,同時更新測速超時計數(shù)器。
TIMER中斷為1 ms定時中斷,這個中斷源的存在是為了系統(tǒng)通信超時檢測、電機停轉(zhuǎn)檢測使用,在中斷中需要對通信超時計數(shù)器和測速超時計數(shù)器進行自減處理,如果到零則發(fā)出響應(yīng)信號通知系統(tǒng)。
由于中斷源的多樣性,STM32自帶有可嵌套的中斷向量控制器(NVIC)[8],因此中斷處理程序?qū)嶋H上是相互獨立的。
3.1 PID算法設(shè)計
PID控制器將給定轉(zhuǎn)速和反饋測得轉(zhuǎn)速相比較后,經(jīng)計算得出一個輸出信號,將此輸出信號量化為PWM的占空比,最終作用在電機的驅(qū)動電路上來控制電機。本系統(tǒng)中采用增量式PID算法[9?10],增量式數(shù)字PID表達式為:
[Δuk=Aek-Bek-1+Cek-2]
式中:[A=KP1+TTI+TDT],[B=KP1+2TDT],[C=KPTDT],[KP]為比例系數(shù);[TI]為積分項積分時間常數(shù);[TD]為微分時間常數(shù)。由上式可以得出增量式PID算法程序如下:
#define KP 0.15
#define TI 0.95
#define TD 0
#define T 0.001
#define EMIN 0.01
#define A (KP*(1+T/TI+TD/T))
#define B (KP*(1+2*TD/T))
#define C (KP*TD/T)
float PIDCompute(float r,float y)
{ static float e0 = 0.0;
static float e1 = 0.0;
float e = 0.0;
float delta;
e = r - y;
delta = A*e-B*e1+C*e0;
e0 = e1;
e1 = e;
return delta; }
3.2 測速軟件設(shè)計
測速軟件需要完成測量電機轉(zhuǎn)速與測量電機運行方向兩部分內(nèi)容。光電測速編碼器輸出的888線AB相脈沖分別連接到STM32的PA0,PA1上。
將B相信號輸入至PA1(EXTI1)之上,編程使EXTI1的上升沿和下降沿均要觸發(fā)中斷,電機轉(zhuǎn)動一柵格的時間內(nèi)要觸發(fā)2次中斷。每次中斷之間的時間差假定為T,則電機瞬時轉(zhuǎn)速n=[1888T r/s],對最近4次所測量到的瞬時轉(zhuǎn)速進行加權(quán)求和,就可得到當(dāng)前電機轉(zhuǎn)動速度。
測速在STM32上的編程實現(xiàn)過程如下:
(1) 配置EXTI1上升沿、下降沿均觸發(fā)中斷;
(2) 配置端口與TIM2,TIM3;
(3) 開啟中斷;
(4) EXTI中斷程序中讀取TIM2 CNT中的數(shù)據(jù)并記錄,清空TIM2 CNT寄存器中的數(shù)據(jù)并重新啟動計數(shù);
(5) 根據(jù)記錄的數(shù)據(jù)進行瞬時速度計算;
(6) 當(dāng)若干個時基中斷發(fā)生且期間無測速中斷請求則宣告電機轉(zhuǎn)速為0。
將A相信號輸入至PA0(EXTI0)之上,編程使得EXTI0上升沿中斷。在中斷例程里讀取B相信號,根據(jù)AB相脈沖時序可以判斷電機轉(zhuǎn)動方向,即B=1,電機反轉(zhuǎn);B=0,電機正轉(zhuǎn)。
4 系統(tǒng)驗證
本系統(tǒng)經(jīng)過原理圖和PCB設(shè)計、焊接制板、硬件測試、模塊程序編寫、模塊程序功能測試、連接各個子模塊程序、PID參數(shù)整定,最后通過反復(fù)的調(diào)試,系統(tǒng)完全滿足預(yù)期要求,能夠?qū)崿F(xiàn)-500~500 r/min之間任意速度控制(以順時針方向為正方向),控制精度達1 r/min,穩(wěn)態(tài)誤差不超過0.5%。在正常工作環(huán)境下,電機空載運行時,此時系統(tǒng)測試參數(shù)見表2,上位機界面如圖5所示。
5 結(jié) 論
本文設(shè)計了一種基于ARM Cortex?M3內(nèi)核的STM32微控制器的直流電機PID調(diào)速系統(tǒng)。實驗結(jié)果表明,該系統(tǒng)具有穩(wěn)態(tài)誤差小,控制精度高,響應(yīng)速度快,能耗低、效率高等優(yōu)點,對上肢康復(fù)機器人的研究具有一定的借鑒價值。
圖5 上位機界面
參考文獻
[1] 楊耕,羅應(yīng)立.電機與運動控制系統(tǒng)[M].北京:清華大學(xué)出版社,2014.
[2] 劉慧勇,楊虹.基于STM32的智能電風(fēng)扇設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(21):108?110.
[3] 蔡光昭,洪遠泉,周永明.基于STM32的超聲波測速測距系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(24):87?89.
[4] 宋勐翔,陳蘭嵐.基于ADS1298和STM32F407的心電采集與顯示系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2015,38(13):141?144.
[5] 王兆安,劉進軍.電力電子技術(shù)[M].北京:機械工業(yè)出版社,2009.
[6] 郭榮祥,崔桂梅.電力電子應(yīng)用技術(shù)[M].北京:高等教育出版社,2013.
[7] 潘新民,王燕芳.微型計算機控制技術(shù)[M].北京:電子工業(yè)出版社,2006.
[8] 陳志旺.STM32嵌入式微控制器快速上手[M].北京:電子工業(yè)出版社,2012.
[9] 田苗,史玉琴.基于PID 技術(shù)的工業(yè)自動控制系統(tǒng)的優(yōu)化改進研究[J].現(xiàn)代電子技術(shù),2015,38(13):132?133.
[10] 朱貴國,汪黨.基于STM32單片機的直流電機調(diào)速系統(tǒng)設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2013(5):2?3.