魯 鵬,付 強(qiáng),楊 艷,胡 旭,谷明信,羅天洪
(重慶文理學(xué)院智能制造工程學(xué)院,重慶 402160)
隨著我國(guó)高端制造行業(yè)的發(fā)展,基于數(shù)字控制的電機(jī)調(diào)速系統(tǒng)在很多領(lǐng)域得到了廣泛應(yīng)用,掌握電機(jī)控制系統(tǒng)的原理與應(yīng)用,已成為智能制造、機(jī)器人、無(wú)人駕駛、航空航天等行業(yè)相關(guān)技術(shù)人員的迫切需求[1]。
電機(jī)控制課程實(shí)驗(yàn)是掌握控制理論的重要環(huán)節(jié),而現(xiàn)在國(guó)內(nèi)的教學(xué)裝置有些開(kāi)放性差,只能修改某些參數(shù)或者簡(jiǎn)單外部接線(xiàn),學(xué)生無(wú)法掌握內(nèi)部的開(kāi)發(fā)流程;另外一類(lèi)實(shí)驗(yàn)設(shè)備又過(guò)于復(fù)雜,如基于C 語(yǔ)言的電機(jī)控制開(kāi)發(fā)套件,欲對(duì)系統(tǒng)有深入理解需花費(fèi)大量時(shí)間,而且信號(hào)檢測(cè)還需要單獨(dú)的儀器,中間變量的輸出更是難以圖形化顯示,以上兩種方式均不能達(dá)到理想教學(xué)效果。
近10 年來(lái),基于模型設(shè)計(jì)(MBD)的V 形開(kāi)發(fā)流程在華為、波音等先進(jìn)制造業(yè)中獲得了廣泛認(rèn)同。這種設(shè)計(jì)思路是在系統(tǒng)開(kāi)發(fā)的不同階段建立相應(yīng)的系統(tǒng)模型,利用高層次語(yǔ)言進(jìn)行設(shè)計(jì)、仿真和系統(tǒng)實(shí)現(xiàn)。如圖1 所示,這種思想讓理論與實(shí)踐緊密地聯(lián)系起來(lái)。開(kāi)發(fā)人員在各個(gè)環(huán)節(jié)可以進(jìn)行硬件在環(huán)(Hardware-in-the-Loop,HIL)仿真,從而降低了開(kāi)發(fā)難度,縮短研發(fā)時(shí)間,真正做到設(shè)計(jì)更快,質(zhì)量更高,靈活性更大[2-5]。
圖1 基于模型設(shè)計(jì)的控制策略開(kāi)發(fā)流程
德國(guó)dSPACE 公司開(kāi)發(fā)的實(shí)時(shí)仿真系統(tǒng)以及加拿大的Quanser 系統(tǒng)是目前被廣泛使用的MBD 實(shí)時(shí)硬件在環(huán)開(kāi)發(fā)平臺(tái)[6-8],系統(tǒng)軟件平臺(tái)采用MATLAB∕Simulink,自動(dòng)化的代碼生成∕下載以及快捷的調(diào)試環(huán)境使得應(yīng)用開(kāi)發(fā)過(guò)程快速易行;性能強(qiáng)勁的專(zhuān)用硬件具有高速計(jì)算能力,能夠滿(mǎn)足控制工程領(lǐng)域的各種相關(guān)產(chǎn)品開(kāi)發(fā)。但是以上設(shè)備比較昂貴,目前主要用于科研,要作為普通高等院校實(shí)驗(yàn)設(shè)備還有一定難度,而另一種通用低成本的Arduino 單片機(jī)方案能夠?qū)崿F(xiàn)上述產(chǎn)品的替代[9]。為此,本文介紹了基于MATLAB∕Simulink 軟件平臺(tái),硬件采用Arduino單片機(jī)為核心的開(kāi)源低成本的直流電機(jī)控制教學(xué)實(shí)驗(yàn)裝置,并實(shí)現(xiàn)了硬件電路設(shè)計(jì)、系統(tǒng)搭建、模型設(shè)計(jì)、自動(dòng)代碼生成、系統(tǒng)調(diào)試等功能。通過(guò)PID 算法在線(xiàn)控制測(cè)試,電機(jī)速度超調(diào)量小,在有外接負(fù)載擾動(dòng)情況下能迅速穩(wěn)定,達(dá)到控制預(yù)期效果。
本文的伺服控制實(shí)驗(yàn)裝置以Simulink 為軟件平臺(tái),構(gòu)建了開(kāi)放式、圖形化的實(shí)驗(yàn)設(shè)計(jì)環(huán)境,實(shí)現(xiàn)了伺服控制模型設(shè)計(jì)、仿真和控制程序的自動(dòng)化生成??刂破鞯挠布脚_(tái)采用基于ATmega 2560 單片機(jī)的Arduino 電路板作為中央處理器,具有性能高、集成度高、可靠性好、成本低等優(yōu)點(diǎn)。為實(shí)現(xiàn)與伺服電機(jī)等被控對(duì)象的連接,實(shí)驗(yàn)裝置擴(kuò)展了A∕D、D∕A、編碼器、通用I∕O 等接口,也提供了彩色液晶顯示器、按鍵、LED、RS-232通信接口等外設(shè),便于實(shí)現(xiàn)人機(jī)交互和數(shù)據(jù)采集。該系統(tǒng)用于變負(fù)荷情況下,電機(jī)的速度控制以及控制量的計(jì)算與分析。直流伺服控制實(shí)驗(yàn)裝置系統(tǒng)框圖如圖2所示。
圖2 直流伺服控制實(shí)驗(yàn)裝置系統(tǒng)框圖
Arduino Mega2560 具有54 路數(shù)字輸入輸出接口(其中14 路可作PWM 輸出),適合需要大量I∕O 接口的設(shè)計(jì)。Arduino Mega2560另含16路模擬輸入,每個(gè)I∕O的電流為40 mA。4路UART接口,一個(gè)16 MHz晶體振蕩器,一個(gè)USB 口,一個(gè)電源插座,一個(gè)ICSP header 和一個(gè)復(fù)位按鈕,第3版支持I2C接口。閃存為256 kB,其中8 kB由引導(dǎo)加載程序(BootLoader) 使用,SRAM 為8 kB,EEPROM 為4 kB。Arduino Mega2560 也 能 兼 容 為Arduino UNO 設(shè)計(jì)的擴(kuò)展板。在不燒錄Arduino 固件時(shí),也可以作為普通的單片機(jī)使用,通常采用C語(yǔ)言對(duì)其開(kāi)發(fā)。
圖3 Arduino Mega2560R3 電路板
目前,直流減速電機(jī)在平衡車(chē)、倒立擺以及智能車(chē)中應(yīng)用廣泛,為此本文選擇帶編碼器的微形直流減速電機(jī)SZCMMOTOR的JGA25-370,具體參數(shù)如表1所示。
表1 減速電機(jī)參數(shù)
如圖4 所示,直流電機(jī)由電刷、換向器、電樞繞組、主磁極構(gòu)成。通過(guò)給電機(jī)的外部接入直流電,換向器根據(jù)電樞的位置切換,由法拉第電磁定律,帶電的繞組在主磁極中會(huì)受到洛倫茲力的作用從而旋轉(zhuǎn)。由電機(jī)學(xué)知識(shí)可知,電機(jī)速度如公式(1)所示,可以看出,要改變速度n有3 種方法:改變磁通?、電樞電壓U或電樞回路電阻Ra。最為通用的電子調(diào)速器都是改變電樞電壓來(lái)改變轉(zhuǎn)速,本文也是采用控制電樞電壓的方式實(shí)現(xiàn)調(diào)速,具體由Arduino 2560 根據(jù)控制量的大小從而輸出不同占空比的PWM 波形到驅(qū)動(dòng)電路板TB6612FNG,驅(qū)動(dòng)電路板核心為H 形全橋電路,通過(guò)控制橋臂的功率管導(dǎo)通時(shí)間從而改變輸出電壓有效值的大小與方向,達(dá)到控制直流電機(jī)速度與方向的目的。
圖4 直流電機(jī)原理
對(duì)于減速直流電機(jī)而言,電機(jī)的輸出軸連接到了減速器,而電機(jī)的尾部直接安裝了霍爾編碼器。如圖5 所示,電機(jī)的正負(fù)電源線(xiàn)為紅色與白色,調(diào)換可以控制電機(jī)正反轉(zhuǎn);其他4 種顏色為編碼器的電源線(xiàn)與信號(hào)線(xiàn),其中黑色為編碼器電源負(fù)極,藍(lán)色為編碼器的電源正極(3~5.5 V),黃色線(xiàn)與綠色線(xiàn)分別是電機(jī)反饋信號(hào)線(xiàn)(電機(jī)轉(zhuǎn)1圈可以產(chǎn)生11個(gè)脈沖信號(hào)),用于控制器測(cè)速。減速器的減速比為4.4。
圖5 直流減速電機(jī)實(shí)物
由于單片機(jī)輸出的電流達(dá)不到電機(jī)工作所需的電流,所以需要設(shè)計(jì)驅(qū)動(dòng)電路。常用的驅(qū)動(dòng)電路可以通過(guò)繼電器、功率晶體管、可控硅或功率型的MOS 場(chǎng)效應(yīng)管來(lái)實(shí)現(xiàn),不過(guò)以上都是分離元件實(shí)現(xiàn)方式,實(shí)現(xiàn)方式較為繁瑣。本文選擇了一種成熟的驅(qū)動(dòng)芯片來(lái)實(shí)現(xiàn),型號(hào)為T(mén)B6612FNG,其體積小,在當(dāng)前的電子設(shè)計(jì)中應(yīng)用廣泛,性能超過(guò)以前常用的L298N。
TB6612FNG 是東芝半導(dǎo)體公司生產(chǎn)的一款直流電機(jī)驅(qū)動(dòng)器件,它具有大電流MOSFET-H 橋結(jié)構(gòu),雙通道電路輸出,可同時(shí)驅(qū)動(dòng)2個(gè)直流電機(jī)。它無(wú)需外加散熱片,外圍電路簡(jiǎn)單,只需外接電源濾波電容就可以直接驅(qū)動(dòng)電機(jī),利于減小系統(tǒng)尺寸。對(duì)于PWM 信號(hào)輸入頻率范圍,高達(dá)100 kHz 的頻率更是足以滿(mǎn)足大部分的需求,其最大輸入電壓為15 V,最大輸出電流為1.2 A,內(nèi)置過(guò)熱保護(hù)和低壓檢測(cè)電路。
如圖6 所示,TB6612 的端口分為兩組,分別控制電機(jī)A 與電機(jī)B,以電機(jī)A 端口為例,單片機(jī)輸出的電機(jī)速度控制PWM 信號(hào)接入PWMA 端口;STBY 為整個(gè)驅(qū)動(dòng)芯片的使能信號(hào),當(dāng)將低電平輸入到該引腳,則其所驅(qū)動(dòng)的電機(jī)全部停止;方向控制信號(hào)端為AIN1、AIN2,具體控制真值表如表2 所示,其中布爾量“0”表示低電平,“1”表示高電平。系統(tǒng)硬件實(shí)物如圖7所示。
圖6 TB6612驅(qū)動(dòng)模塊電路
表2 電機(jī)方向控制真值
圖7 系統(tǒng)硬件實(shí)物
PID 控制,即比例-積分-微分控制,是自動(dòng)控制原理中定義的一種控制方法,在現(xiàn)代工業(yè)控制中占有舉足輕重的作用。PID 控制主要是對(duì)系統(tǒng)輸出偏差進(jìn)行比例、積分、微分3 種操作的組合而形成輸出控制量,以減小系統(tǒng)誤差,提高系統(tǒng)響應(yīng)速度和響應(yīng)效果[10-13]。圖8 所示為限幅PID算法示意。
圖8 限幅PID算法示意
PID 控制可以分為模擬PID 控制與數(shù)字PID 控制,在數(shù)字PID控制中,其控制量計(jì)算式為:
式中:u(n)為控制器的輸出;e(n)為控制器的輸入,即系統(tǒng)的期望值r(n)與實(shí)際測(cè)量值y(n)之差;數(shù)字PID 采用n代替連續(xù)PID中的t。
由于式(2)在實(shí)現(xiàn)時(shí)會(huì)將所有的誤差值累加,計(jì)算量較大,所以出現(xiàn)了增量式算法。增量式PID 控制是數(shù)字PID 控制算法的一種基本形式,是通過(guò)對(duì)控制量的增量(本次控制量和上次控制量的差值)進(jìn)行PID 控制的一種控制算法。控制系統(tǒng)輸出為控制量的變化量。由于控制量剛開(kāi)始時(shí)會(huì)非常大,常常會(huì)超過(guò)系統(tǒng)存儲(chǔ)器的最大值,本系統(tǒng)采用的控制量大小為8 位,所以最后限幅為255。
本文軟件開(kāi)發(fā)環(huán)境:WIN10 操作系統(tǒng)、MATLAB2015a 以及相匹配Simulink 關(guān)于Arduino 的硬件支持包。Simulink 具有強(qiáng)大的圖形化建模、仿真能力,以及完整的信號(hào)處理與算法工具箱,并且可以與MATLAB 無(wú)縫集成,是控制系統(tǒng)工程師的常用軟件,也是高校工程類(lèi)專(zhuān)業(yè)師生熟悉的編程系統(tǒng)。本文的電機(jī)控制實(shí)驗(yàn)裝置以Simulink 為軟件平臺(tái),構(gòu)建了開(kāi)放式、圖形化的實(shí)驗(yàn)設(shè)計(jì)環(huán)境,實(shí)現(xiàn)了電機(jī)控制系統(tǒng)模型設(shè)計(jì)、仿真和控制程序的自動(dòng)化生成。
由于PID 是一種反饋型的控制方法,第一步就是通過(guò)編碼器獲得電機(jī)的實(shí)際轉(zhuǎn)速。如圖9 所示,本文采用Simulink 中的soEncoder 模塊對(duì)電機(jī)編碼器脈沖進(jìn)行計(jì)數(shù),該模塊采用四倍頻技術(shù)對(duì)編碼器脈沖進(jìn)行絕對(duì)計(jì)數(shù)。從上電開(kāi)始該模塊輸出0,即以電機(jī)當(dāng)前位置為初始點(diǎn),當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí)對(duì)編碼器的脈沖進(jìn)行計(jì)數(shù),y值為32 位有符號(hào)整型,正負(fù)代表不同的旋轉(zhuǎn)方向。速度的獲取的方法是采用延時(shí)環(huán)節(jié)計(jì)算兩個(gè)時(shí)刻soEncoder模塊輸出的數(shù)據(jù)差值,再用差值除以?xún)蓚€(gè)時(shí)刻之間的時(shí)間隔。由于受電機(jī)編碼器本身存在的干擾以及電機(jī)自身運(yùn)行過(guò)程中不穩(wěn)定等因素的影響,獲取的轉(zhuǎn)速數(shù)據(jù)會(huì)有很大的噪聲波動(dòng),直接使用會(huì)導(dǎo)致信息檢測(cè)不準(zhǔn),所以還需要進(jìn)行濾波處理。圖9 中Data type conversion 模塊后面采用一階數(shù)字低通濾波器對(duì)速度信號(hào)進(jìn)行濾波。
式中:Xn為當(dāng)次采樣值;Yn-1為前次濾波輸出值;a為濾波系數(shù),遠(yuǎn)小于1;Yn為當(dāng)前濾波輸出值。
圖9 編碼器讀取子模塊
圖10 所示為直流電機(jī)速度控制Simulink 主程序圖,其中電機(jī)轉(zhuǎn)速和濾波器模塊即為圖9 所描述的,最終得到一個(gè)速度信號(hào)。圖中常數(shù)15 為設(shè)置的電機(jī)主軸(經(jīng)減速器后)轉(zhuǎn)速,下方濾波器輸出為電機(jī)的實(shí)際轉(zhuǎn)速,由于電機(jī)動(dòng)力輸出經(jīng)過(guò)減速器才到達(dá)主軸,主軸的轉(zhuǎn)速需要電機(jī)編碼器的測(cè)量速度除以一個(gè)減速比,所以下方編碼器輸出與常數(shù)項(xiàng)K相乘。設(shè)定值與實(shí)際值相減得到誤差error,即電機(jī)轉(zhuǎn)速PID 控制器的輸入,系統(tǒng)輸出為電機(jī)驅(qū)動(dòng)器的PWM控制量,其正負(fù)符號(hào)與絕對(duì)值大小決定電機(jī)的方向與速度。
圖10 電機(jī)速度控制的Simulink主程序
圖10 中上半部分Switch 模塊的作用是當(dāng)輸入速度值不等于0 時(shí),直接送入“1”高電平到電機(jī)模塊,作為電機(jī)驅(qū)動(dòng)器的使能信號(hào);當(dāng)輸入速度值為0 時(shí),將送入“0”低電平到電機(jī)模塊,電機(jī)停止轉(zhuǎn)動(dòng)。電機(jī)模塊詳見(jiàn)圖11,其中In1 是電機(jī)驅(qū)動(dòng)器的使能信號(hào)輸入,In2 為PWM 控制量輸入,這個(gè)量在程序里面被取絕對(duì)值并限幅。本文用到了Simulink 的Arduino 硬件包里的PWM 輸出模塊,即輸入255 到此模塊,則模塊自動(dòng)輸出占空比100%的PWM 波形;而當(dāng)輸入127 時(shí)則產(chǎn)生50%占空比的PWM 波形。該模塊為圖中的PWMA,對(duì)應(yīng)于Arduino電路板的4號(hào)引腳。
圖11 電機(jī)模塊程序
圖12所示為電機(jī)轉(zhuǎn)速PID 控制器程序圖,是圖10中PID控制器的子程序。根據(jù)經(jīng)驗(yàn)調(diào)試方法[14],設(shè)置PID對(duì)應(yīng)的控制參數(shù)為[5,0.1,2],控制器的輸出是PWM 控制量,其正負(fù)號(hào)將決定電機(jī)的正反轉(zhuǎn),絕對(duì)值大小確定電機(jī)轉(zhuǎn)速,最后連接到圖10中的In2。
本小節(jié)將對(duì)系統(tǒng)進(jìn)行控制測(cè)試。系統(tǒng)控制采樣率為50 ms,程序下載方式為“外部運(yùn)行模式”[15],即HIL控制模式。
圖12 Simulink中PID控制器程序
如圖13 所示,一共采樣了700 步,可以看出在不到5 步的時(shí)間(250 ms),電機(jī)輸出達(dá)到設(shè)定值,系統(tǒng)基本無(wú)超調(diào)。在500 步時(shí),電機(jī)主軸輸入一個(gè)隨機(jī)負(fù)載,系統(tǒng)在50步內(nèi)恢復(fù)到設(shè)定值。圖中子圖為局部放大圖。
圖13 有外部干擾下的系統(tǒng)速度控制階躍響應(yīng)
為了進(jìn)一步研究系統(tǒng)的內(nèi)部控制原理,本文測(cè)試了PID 模塊的輸出。如圖14 所示,可以看出系統(tǒng)開(kāi)始時(shí)的速度差值最大,從而PID 模塊輸出值達(dá)到80,不過(guò)其仍然沒(méi)有達(dá)到系統(tǒng)255 的閾值,所以系統(tǒng)的設(shè)定速度仍然可以增加。由局部放大圖可看出,系統(tǒng)速度受外部負(fù)載干擾時(shí)導(dǎo)致速度降低,PID 控制器的輸出會(huì)立即增大,從而實(shí)現(xiàn)直流電機(jī)的速度實(shí)時(shí)控制。
圖14 PID模塊輸出的PWM控制量
本文構(gòu)建了基于Simulink 與Arduino 等低成本硬件的電機(jī)速度控制平臺(tái),詳細(xì)分析了編碼器速度采集、PID控制模塊、電機(jī)控制模塊等軟件程序的實(shí)現(xiàn)過(guò)程。經(jīng)過(guò)試驗(yàn)驗(yàn)證,系統(tǒng)跟蹤能力強(qiáng)、超調(diào)小、抗擾能力好,控制效果達(dá)到要求。
本實(shí)驗(yàn)平臺(tái)最大特點(diǎn)是低成本、開(kāi)放性好、控制過(guò)程信息可視化。在此平臺(tái)基礎(chǔ)上,硬件可以繼續(xù)增加陀螺儀、藍(lán)牙、物聯(lián)網(wǎng)通信等模塊;進(jìn)而驗(yàn)證多環(huán)PID、自抗擾控制、模糊控制、滑??刂啤⑸疃葟?qiáng)化學(xué)習(xí)等諸多控制算法[16-20]。利用本實(shí)驗(yàn)平臺(tái),有利于將復(fù)雜的控制算法快速地向?qū)W生展示,提高了教學(xué)效率;另一方面實(shí)驗(yàn)平臺(tái)采用MBD設(shè)計(jì)理念,有助于培養(yǎng)學(xué)生的系統(tǒng)設(shè)計(jì)與研發(fā)能力。