基于STM32的直流電機(jī)PID調(diào)速系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
直流調(diào)速系統(tǒng)廣泛應(yīng)用于低轉(zhuǎn)速、高精度等各領(lǐng)域,如精密辦公設(shè)備(噴墨打印機(jī)、激光打印機(jī)),自動(dòng)售貨機(jī),家用電器、機(jī)器人和玩具設(shè)備等。其發(fā)展得力于微電子技術(shù)、電力電子技術(shù)、傳感器技術(shù)、永磁材料技術(shù)、自動(dòng)控制技術(shù)和微機(jī)應(yīng)用技術(shù)的最新發(fā)展成就。順應(yīng)調(diào)速系統(tǒng)智能化、簡單化的發(fā)展趨勢,本設(shè)計(jì)采用一款性價(jià)比高、功耗低的基于ARMCortex?M3內(nèi)核的STM32單片機(jī)為控制核心,結(jié)合PID控制技術(shù),實(shí)現(xiàn)了直流電機(jī)范圍大、精度高的調(diào)速性能。
1、系統(tǒng)的總體設(shè)計(jì)
該調(diào)速系統(tǒng)能夠?qū)崿F(xiàn)對(duì)電機(jī)的啟動(dòng)、制動(dòng)、正反轉(zhuǎn)調(diào)速、測速和數(shù)據(jù)上傳等功能,可方便地實(shí)現(xiàn)直流電機(jī)的四象限運(yùn)行。本系統(tǒng)的性能指標(biāo)為:調(diào)速精度高達(dá)到1r/min;調(diào)速穩(wěn)態(tài)誤差不超過0.5%;調(diào)速范圍為-500~500r/min;串口指令控制方式;驅(qū)動(dòng)電路導(dǎo)通阻抗低,能耗少;運(yùn)行穩(wěn)定可靠。系統(tǒng)由電源、上位機(jī)、通信接口、控制電路、電機(jī)驅(qū)動(dòng)電路、電機(jī)與負(fù)載和測速裝置等模塊組成,結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
2、硬件設(shè)計(jì)
2.1、控制電路設(shè)計(jì)
控制電路負(fù)責(zé)接收控制指令,并產(chǎn)生相應(yīng)的控制信號(hào),同時(shí)返回電機(jī)速度數(shù)據(jù)和電機(jī)運(yùn)行狀態(tài)數(shù)據(jù)等。為了保證電路工作穩(wěn)定可靠,控制電路應(yīng)具有較高的運(yùn)行速度、高度可靠的穩(wěn)定性能、開發(fā)容易、高性價(jià)比,產(chǎn)生的PWM控制信號(hào)應(yīng)具有死區(qū)延時(shí)、互補(bǔ)輸出、緊急剎車等功能。STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARMCortex?M3內(nèi)核,本系統(tǒng)采用STM32F103作為核心控制器??刂齐娐芬許TM32F103為核心的最小系統(tǒng)包括STM32主芯片、時(shí)鐘電路、復(fù)位電路、UART?USB轉(zhuǎn)換電路、JTAG調(diào)試接口電路、電源等,其原理圖如圖2所示。
圖2 以STM32F103為核心的控制電路原理圖
2.2、驅(qū)動(dòng)電路設(shè)計(jì)
根據(jù)系統(tǒng)正反轉(zhuǎn)的控制要求,采用H橋驅(qū)動(dòng)電路,由MOS管構(gòu)成的H橋驅(qū)動(dòng)電路原理圖如圖3所示。
圖3 由MOS管構(gòu)成的H橋驅(qū)動(dòng)電路原理圖
MOSFET是電壓控制型器件,具有開關(guān)速度快、輸入阻抗高、驅(qū)動(dòng)方便等優(yōu)點(diǎn)[5]。本系統(tǒng)采用IRF9630和IRF630對(duì)管,組成H橋,上橋臂均使用PMOS,下橋臂均使用NMOS,兩種MOS管基本特性如表1所示。
表1H橋MOSFET主要參數(shù)表
控制電路的輸出信號(hào)為DC3.3V信號(hào),需要與驅(qū)動(dòng)電路隔離,采用了LTV352光電耦合隔離器?;パa(bǔ)PWM輸入信號(hào)經(jīng)過光耦隔離作用到MOSFET柵極,從而控制OUTA,OUTB之間的電壓。MOSFET中G,S兩極之間使用了雙向TVS管抑制瞬態(tài)電壓,防止MOSFET損壞。由于采用了PMOS,NMOS對(duì)管電路,MOSFET柵極電壓是由輸入電壓進(jìn)行分壓得到,因此不需要采用額外的高電壓信號(hào)源。
互補(bǔ)PWM輸入信號(hào)中,PWMA控制V1,V4橋臂,PWMB信號(hào)控制V2,V3橋臂。當(dāng)占空比為50%的PWM輸入信號(hào)時(shí),OUTA,OUTB之間輸出電壓是0V,電機(jī)處于停止?fàn)顟B(tài)時(shí),由于電機(jī)電樞中仍存在高頻微震電流,從而消除了正反向轉(zhuǎn)動(dòng)時(shí)的靜摩擦死區(qū),起著動(dòng)力潤滑作用。
2.3、速度反饋裝置設(shè)計(jì)
本系統(tǒng)采用高達(dá)888線AB相光電編碼器,兩相脈沖相差90°,通過測量某相的周期T可以得到電機(jī)運(yùn)行速度,通過測量兩相的上升沿時(shí)刻可以得到電機(jī)運(yùn)行方向。
3、系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)主要完成硬件和數(shù)據(jù)初始化功能,然后進(jìn)入標(biāo)志位循環(huán)掃描狀態(tài),一旦中斷發(fā)生便處理中斷程序,在中斷程序中有相關(guān)標(biāo)志位置位(包括上位機(jī)發(fā)送來的、通信異常處理、電機(jī)停轉(zhuǎn)處理),有則處理,無則繼續(xù)進(jìn)行中斷等待。系統(tǒng)軟件主程序流程如圖4所示。
圖4 主程序流程圖
中斷源分為USART中斷、PWM剎車中斷、EXTI、TIMER中斷。
USART中斷是由于與上位機(jī)的數(shù)據(jù)交換過程中產(chǎn)生的,在中斷程序中需要對(duì)接收到的數(shù)據(jù)包進(jìn)行解析,并更新通信超時(shí)計(jì)數(shù)器。
PWM剎車中斷是由于PWM剎車輸入信號(hào)產(chǎn)生的,代表電機(jī)控制現(xiàn)場產(chǎn)生了緊急停車的請(qǐng)求。
EXTI中斷由AB相編碼器產(chǎn)生的光電編碼脈沖產(chǎn)生,需要在中斷服務(wù)歷程中計(jì)算電機(jī)運(yùn)行速度和方向,同時(shí)更新測速超時(shí)計(jì)數(shù)器。
TIMER中斷為1ms定時(shí)中斷,這個(gè)中斷源的存在是為了系統(tǒng)通信超時(shí)檢測、電機(jī)停轉(zhuǎn)檢測使用,在中斷中需要對(duì)通信超時(shí)計(jì)數(shù)器和測速超時(shí)計(jì)數(shù)器進(jìn)行自減處理,如果到零則發(fā)出響應(yīng)信號(hào)通知系統(tǒng)。
由于中斷源的多樣性,STM32自帶有可嵌套的中斷向量控制器(NVIC),因此中斷處理程序?qū)嶋H上是相互獨(dú)立的。
3.1、PID算法設(shè)計(jì)
PID控制器將給定轉(zhuǎn)速和反饋測得轉(zhuǎn)速相比較后,經(jīng)計(jì)算得出一個(gè)輸出信號(hào),將此輸出信號(hào)量化為PWM的占空比,最終作用在電機(jī)的驅(qū)動(dòng)電路上來控制電機(jī)。本系統(tǒng)中采用增量式PID算法[9?10],增量式數(shù)字PID表達(dá)式為:
KP為比例系數(shù);TI為積分項(xiàng)積分時(shí)間常數(shù);TD為微分時(shí)間常數(shù)。由上式可以得出增量式PID算法程序如下:
#defineKP0.15
#defineTI0.95
#defineTD0
#defineT0.001
#defineEMIN0.01
#defineA(KP*(1+T/TI+TD/T))
#defineB(KP*(1+2*TD/T))
#defineC(KP*TD/T)
floatPIDCompute(floatr,floaty)
{staticfloate0=0.0;
staticfloate1=0.0;
floate=0.0;
floatdelta;
e=r-y;
delta=A*e-B*e1+C*e0;
e0=e1;
e1=e;
returndelta;}
3.2、測速軟件設(shè)計(jì)
測速軟件需要完成測量電機(jī)轉(zhuǎn)速與測量電機(jī)運(yùn)行方向兩部分內(nèi)容。光電測速編碼器輸出的888線AB相脈沖分別連接到STM32的PA0,PA1上。
測速在STM32上的編程實(shí)現(xiàn)過程如下:
(1)配置EXTI1上升沿、下降沿均觸發(fā)中斷;
(2)配置端口與TIM2,TIM3;
(3)開啟中斷;
(4)EXTI中斷程序中讀取TIM2CNT中的數(shù)據(jù)并記錄,清空TIM2CNT寄存器中的數(shù)據(jù)并重新啟動(dòng)計(jì)數(shù);
(5)根據(jù)記錄的數(shù)據(jù)進(jìn)行瞬時(shí)速度計(jì)算;
(6)當(dāng)若干個(gè)時(shí)基中斷發(fā)生且期間無測速中斷請(qǐng)求則宣告電機(jī)轉(zhuǎn)速為0。
將A相信號(hào)輸入至PA0(EXTI0)之上,編程使得EXTI0上升沿中斷。在中斷例程里讀取B相信號(hào),根據(jù)AB相脈沖時(shí)序可以判斷電機(jī)轉(zhuǎn)動(dòng)方向,即B=1,電機(jī)反轉(zhuǎn);B=0,電機(jī)正轉(zhuǎn)。
4、系統(tǒng)驗(yàn)證
本系統(tǒng)經(jīng)過原理圖和PCB設(shè)計(jì)、焊接制板、硬件測試、模塊程序編寫、模塊程序功能測試、連接各個(gè)子模塊程序、PID參數(shù)整定,最后通過反復(fù)的調(diào)試,系統(tǒng)完全滿足預(yù)期要求,能夠?qū)崿F(xiàn)-500~500r/min之間任意速度控制(以順時(shí)針方向?yàn)檎较?,控制精度達(dá)1r/min,穩(wěn)態(tài)誤差不超過0.5%。在正常工作環(huán)境下,電機(jī)空載運(yùn)行時(shí),此時(shí)系統(tǒng)測試參數(shù)見表2,上位機(jī)界面如圖5所示。
圖5 上位機(jī)界面
表2 系統(tǒng)特性參數(shù)表
5、結(jié)論
本文設(shè)計(jì)了一種基于ARMCortex?M3內(nèi)核的STM32微控制器的直流電機(jī)PID調(diào)速系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)具有穩(wěn)態(tài)誤差小,控制精度高,響應(yīng)速度快,能耗低、效率高等優(yōu)點(diǎn),對(duì)上肢康復(fù)機(jī)器人的研究具有一定的借鑒價(jià)值。