雷慧杰



摘 要: 設計一種基于單片機的直流電機調速系統,該系統以基于ARM Cortex?M3內核的STM32微控制器為核心,利用軟件產生PWM控制信號,采用增量式PID算法控制直流電機的起動、制動、正反轉和速度調節,簡單友好的上位機界面可實時監測電機的各種運行信息。實驗結果表明,該系統具有穩態誤差小,控制精度高,響應速度快,能耗低、效率高等優點,對上肢康復機器人的研究具有一定的借鑒價值。
關鍵詞: STM32; 直流電機; PID; 調速系統
中圖分類號: TN710?34; TM921; TP29 文獻標識碼: 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
直流調速系統廣泛應用于低轉速、高精度等各領域,如精密辦公設備(噴墨打印機、激光打印機),自動售貨機,家用電器、機器人和玩具設備等。其發展得力于微電子技術、電力電子技術、傳感器技術、永磁材料技術、自動控制技術和微機應用技術的最新發展成就[1]。順應調速系統智能化、簡單化的發展趨勢,本設計采用一款性價比高、功耗低的基于ARM Cortex?M3內核的STM32 單片機[2?3]為控制核心,結合PID控制技術,實現了直流電機范圍大、精度高的調速性能。
1 系統的總體設計
該調速系統能夠實現對電機的啟動、制動、正反轉調速、測速和數據上傳等功能,可方便地實現直流電機的四象限運行。本系統的性能指標為:調速精度高達到1 r/min;調速穩態誤差不超過0.5%;調速范圍為-500~500 r/min;串口指令控制方式;驅動電路導通阻抗低,能耗少;運行穩定可靠。系統由電源、上位機、通信接口、控制電路、電機驅動電路、電機與負載和測速裝置等模塊組成,結構框圖如圖1所示。
2 硬件設計
2.1 控制電路設計
控制電路負責接收控制指令,并產生相應的控制信號,同時返回電機速度數據和電機運行狀態數據等。為了保證電路工作穩定可靠,控制電路應具有較高的運行速度、高度可靠的穩定性能、開發容易、高性價比,產生的PWM控制信號應具有死區延時、互補輸出、緊急剎車等功能。STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex?M3內核[4],本系統采用STM32F103作為核心控制器。控制電路以STM32F103為核心的最小系統包括STM32主芯片、時鐘電路、復位電路、UART?USB轉換電路、JTAG調試接口電路、電源等,其原理圖如圖2所示。
2.2 驅動電路設計
根據系統正反轉的控制要求,采用H橋驅動電路,由MOS管構成的H橋驅動電路原理圖如圖3所示。
MOSFET是電壓控制型器件,具有開關速度快、輸入阻抗高、驅動方便等優點[5]。本系統采用IRF9630和IRF630對管,組成H橋,上橋臂均使用PMOS,下橋臂均使用NMOS,兩種MOS管基本特性如表1所示。
控制電路的輸出信號為DC 3.3 V信號,需要與驅動電路隔離,采用了LTV352光電耦合隔離器。互補PWM輸入信號經過光耦隔離作用到MOSFET柵極,從而控制OUTA,OUTB之間的電壓。MOSFET中G,S兩極之間使用了雙向TVS管抑制瞬態電壓,防止MOSFET損壞。由于采用了PMOS,NMOS對管電路, MOSFET柵極電壓是由輸入電壓進行分壓得到,因此不需要采用額外的高電壓信號源。
互補PWM輸入信號中,PWMA控制V1,V4橋臂,PWMB信號控制V2,V3橋臂。當占空比為50%的PWM輸入信號時,OUTA,OUTB之間輸出電壓是0 V,電機處于停止狀態時,由于電機電樞中仍存在高頻微震電流,從而消除了正反向轉動時的靜摩擦死區,起著動力潤滑作用[6]。
2.3 速度反饋裝置設計
本系統采用高達888線AB相光電編碼器,兩相脈沖相差90°,通過測量某相的周期T可以得到電機運行速度,通過測量兩相的上升沿時刻可以得到電機運行方向。
3 系統軟件設計
系統的軟件設計主要完成硬件和數據初始化功能,然后進入標志位循環掃描狀態,一旦中斷發生便處理中斷程序,在中斷程序中有相關標志位置位(包括上位機發送來的、通信異常處理、電機停轉處理),有則處理,無則繼續進行中斷等待[7]。系統軟件主程序流程如圖4所示。
中斷源分為USART中斷、PWM剎車中斷、EXTI、TIMER中斷。
USART中斷是由于與上位機的數據交換過程中產生的,在中斷程序中需要對接收到的數據包進行解析,并更新通信超時計數器。
PWM剎車中斷是由于PWM剎車輸入信號產生的,代表電機控制現場產生了緊急停車的請求。
EXTI中斷由AB相編碼器產生的光電編碼脈沖產生,需要在中斷服務歷程中計算電機運行速度和方向,同時更新測速超時計數器。
TIMER中斷為1 ms定時中斷,這個中斷源的存在是為了系統通信超時檢測、電機停轉檢測使用,在中斷中需要對通信超時計數器和測速超時計數器進行自減處理,如果到零則發出響應信號通知系統。
由于中斷源的多樣性,STM32自帶有可嵌套的中斷向量控制器(NVIC)[8],因此中斷處理程序實際上是相互獨立的。
3.1 PID算法設計
PID控制器將給定轉速和反饋測得轉速相比較后,經計算得出一個輸出信號,將此輸出信號量化為PWM的占空比,最終作用在電機的驅動電路上來控制電機。本系統中采用增量式PID算法[9?10],增量式數字PID表達式為:
[Δuk=Aek-Bek-1+Cek-2]
式中:[A=KP1+TTI+TDT],[B=KP1+2TDT],[C=KPTDT],[KP]為比例系數;[TI]為積分項積分時間常數;[TD]為微分時間常數。由上式可以得出增量式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 測速軟件設計
測速軟件需要完成測量電機轉速與測量電機運行方向兩部分內容。光電測速編碼器輸出的888線AB相脈沖分別連接到STM32的PA0,PA1上。
將B相信號輸入至PA1(EXTI1)之上,編程使EXTI1的上升沿和下降沿均要觸發中斷,電機轉動一柵格的時間內要觸發2次中斷。每次中斷之間的時間差假定為T,則電機瞬時轉速n=[1888T r/s],對最近4次所測量到的瞬時轉速進行加權求和,就可得到當前電機轉動速度。
測速在STM32上的編程實現過程如下:
(1) 配置EXTI1上升沿、下降沿均觸發中斷;
(2) 配置端口與TIM2,TIM3;
(3) 開啟中斷;
(4) EXTI中斷程序中讀取TIM2 CNT中的數據并記錄,清空TIM2 CNT寄存器中的數據并重新啟動計數;
(5) 根據記錄的數據進行瞬時速度計算;
(6) 當若干個時基中斷發生且期間無測速中斷請求則宣告電機轉速為0。
將A相信號輸入至PA0(EXTI0)之上,編程使得EXTI0上升沿中斷。在中斷例程里讀取B相信號,根據AB相脈沖時序可以判斷電機轉動方向,即B=1,電機反轉;B=0,電機正轉。
4 系統驗證
本系統經過原理圖和PCB設計、焊接制板、硬件測試、模塊程序編寫、模塊程序功能測試、連接各個子模塊程序、PID參數整定,最后通過反復的調試,系統完全滿足預期要求,能夠實現-500~500 r/min之間任意速度控制(以順時針方向為正方向),控制精度達1 r/min,穩態誤差不超過0.5%。在正常工作環境下,電機空載運行時,此時系統測試參數見表2,上位機界面如圖5所示。
5 結 論
本文設計了一種基于ARM Cortex?M3內核的STM32微控制器的直流電機PID調速系統。實驗結果表明,該系統具有穩態誤差小,控制精度高,響應速度快,能耗低、效率高等優點,對上肢康復機器人的研究具有一定的借鑒價值。
圖5 上位機界面
參考文獻
[1] 楊耕,羅應立.電機與運動控制系統[M].北京:清華大學出版社,2014.
[2] 劉慧勇,楊虹.基于STM32的智能電風扇設計[J].現代電子技術,2014,37(21):108?110.
[3] 蔡光昭,洪遠泉,周永明.基于STM32的超聲波測速測距系統設計[J].現代電子技術,2014,37(24):87?89.
[4] 宋勐翔,陳蘭嵐.基于ADS1298和STM32F407的心電采集與顯示系統設計[J].現代電子技術,2015,38(13):141?144.
[5] 王兆安,劉進軍.電力電子技術[M].北京:機械工業出版社,2009.
[6] 郭榮祥,崔桂梅.電力電子應用技術[M].北京:高等教育出版社,2013.
[7] 潘新民,王燕芳.微型計算機控制技術[M].北京:電子工業出版社,2006.
[8] 陳志旺.STM32嵌入式微控制器快速上手[M].北京:電子工業出版社,2012.
[9] 田苗,史玉琴.基于PID 技術的工業自動控制系統的優化改進研究[J].現代電子技術,2015,38(13):132?133.
[10] 朱貴國,汪黨.基于STM32單片機的直流電機調速系統設計[J].數字技術與應用,2013(5):2?3.