朱奧辭, 趙 鋼
(天津理工大學(xué) 天津市復(fù)雜控制理論與應(yīng)用重點(diǎn)實(shí)驗(yàn)室,天津 300384)
隨著計算機(jī)仿真軟件功能不斷完善,處理速度快速提升,仿真在自動控制系統(tǒng)和產(chǎn)品設(shè)計中的發(fā)揮著舉足輕重的作用,當(dāng)原型硬件電路和嵌入式代碼主要部分實(shí)現(xiàn)后,就可以在仿真軟件中將硬件電路和軟件結(jié)合起來并開始測試工作,從而可以測試算法的可靠性,即提出的一種類RCP的實(shí)驗(yàn)設(shè)計方法。所謂類RCP實(shí)驗(yàn)設(shè)計方法是我們不需要在系統(tǒng)硬件搭建完成后才能對算法進(jìn)行驗(yàn)證,而是通過在Proteus仿真軟件中搭建硬件電路圖,算法通過keil軟件編譯下載到仿真電路圖中進(jìn)行仿真驗(yàn)證。本文利用Proteus仿真軟件設(shè)計了以AT89C52單片機(jī)為核心的算法驗(yàn)證直流電動機(jī)閉環(huán)調(diào)速系統(tǒng),完成了硬件電路模型的設(shè)計和PID算法程序的調(diào)試,實(shí)現(xiàn)了閉環(huán)PID控制策略,驗(yàn)證了PID控制算法,為實(shí)際系統(tǒng)的設(shè)計打下了理論與技術(shù)基礎(chǔ)。
本方案利用Proteus仿真軟件設(shè)計了以AT89C52單片機(jī)為核心的直流電機(jī)閉環(huán)調(diào)速系統(tǒng),快速的完成了硬件電路模型的設(shè)計和PID算法程序的調(diào)試,從而實(shí)現(xiàn)閉環(huán)PID控制策略[1]。將單片機(jī)產(chǎn)生的脈寬調(diào)制控制信號加在電機(jī)驅(qū)動模塊L293D芯片上驅(qū)動直流電機(jī)實(shí)現(xiàn)正反轉(zhuǎn)和加減速運(yùn)動的控制,4個獨(dú)立按鍵分別控制電機(jī)的速度增加、減小、停止、和正反轉(zhuǎn)等功能,用帶有測速裝置的電機(jī)模塊獲得實(shí)際轉(zhuǎn)速。通過控制系統(tǒng)輸出的脈沖寬度實(shí)現(xiàn)電機(jī)速度的精確控制,運(yùn)用偏差糾正偏差的閉環(huán)控制以及軟硬件相結(jié)合的實(shí)時仿真可以直觀地觀測到直流電機(jī)的給定速度和實(shí)際轉(zhuǎn)速,實(shí)現(xiàn)單片機(jī)對直流電動機(jī)的閉環(huán)調(diào)速控制,系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
脈沖寬度調(diào)制(PWM),簡稱脈寬調(diào)制,是通過調(diào)節(jié)脈沖寬度來調(diào)節(jié)電壓,最終實(shí)現(xiàn)對電機(jī)轉(zhuǎn)速的控制[2]。PWM是利用微處理器的數(shù)字輸出來對模擬硬件電路進(jìn)行控制的一種非常有效的技術(shù),簡單的講就是對輸出的脈沖寬度進(jìn)行控制[3]。PWM 有 3 個參數(shù),分別是頻率、占空比、周期。
對于電動機(jī)的轉(zhuǎn)速調(diào)整采用脈寬調(diào)制(PWM)辦法,控制電動機(jī)的時候,電源并非連續(xù)地向電機(jī)供電,而是在一個特定的頻率下以方波脈沖的形式提供電能。不同占空比的方波信號能對電機(jī)起到調(diào)速作用,這是因?yàn)殡姍C(jī)實(shí)際上是一個大電感,它有抑制輸入電流突變的能力,因此脈沖輸入信號被平均分配到作用時間上,通過改變在始能端EN1 和EN2 上輸入方波的占空比就能改變加在電機(jī)兩端的電壓大小,從而改變了轉(zhuǎn)速[4-5]。如圖2所示,占空比就是在輸出的PWM中,高電平持續(xù)的時間和該 PWM 信號的周期持續(xù)的時間之比??刂齐姍C(jī)轉(zhuǎn)速時,占空比越大,速度越快,如果全為高電平,占空比為100%時,速度達(dá)到最快。
圖2 PWM信號的占空比
主控制器采用AT89C52單片機(jī),AT89C52芯片是8位的CPU,片內(nèi)有振蕩器和時鐘電路,工作頻率為1~12 MHz,片內(nèi)有256 byte RAM,片內(nèi)26個特殊功能寄存器,4個8位的并行I/O口,1個全雙工串行口,2個16位定時器,可處理6個中斷源,兩級中斷優(yōu)先級。通常單片機(jī)的引腳分為3類:電源和時鐘引腳、編程控制引腳、I/O口引腳。單片機(jī)模塊主要由 AT89C52 單片機(jī)及外圍濾波、電源管理、晶振和復(fù)位電路組成,CPU總是按一定的時鐘節(jié)拍與時序工作[6]。
控制系統(tǒng)使用基于兩個I/O口的獨(dú)立按鍵實(shí)現(xiàn)電機(jī)的加速和減速,直接在驅(qū)動模塊設(shè)計兩個雙向開關(guān)按鍵用于電機(jī)的正反轉(zhuǎn)和啟動停止。直流電機(jī)運(yùn)行的實(shí)際速度狀態(tài)和給定的速度分別通過兩塊4位LED組成的顯示模塊顯示。
鍵盤模塊的特點(diǎn)在于采用獨(dú)立式鍵盤結(jié)構(gòu),使用AT89C52的P3.6和P3.7兩個引腳控制兩個獨(dú)立按鍵。按鍵在閉合和斷開會存在抖動現(xiàn)象,通常通過鍵盤軟件消抖的方法。單片機(jī)檢測按鍵是否按下的依據(jù)是檢測該鍵對應(yīng)的I/O口是否為低電平。兩塊四位LED通過鎖存端74LS245接在單片機(jī)P2.0~P2.7口上,分別顯示給定電機(jī)轉(zhuǎn)速和反饋轉(zhuǎn)速。
2.3.1L293D芯片介紹
L293D內(nèi)部等效電路圖如圖3所示,是雙H橋直流電機(jī)驅(qū)動芯片,L293D提供雙向驅(qū)動電流高達(dá)600 mA,電壓4.5~36 V,可以方便驅(qū)動兩個直流電動機(jī),兼容所有的TTL電平輸入。每個輸出都是推拉式驅(qū)動電路,當(dāng)高電平送入使能端,與之對應(yīng)的驅(qū)動電路被啟用,驅(qū)動器的輸出為活躍狀態(tài),當(dāng)使能端輸入為低電平,驅(qū)動器輸出被禁用關(guān)閉,處于高阻抗?fàn)顟B(tài)。用合適的電平輸入,驅(qū)動電路形成一個完整的H橋可逆驅(qū)動器即可用于驅(qū)動電機(jī)。
圖3 L293D內(nèi)部等效電路圖
2.3.2驅(qū)動電路設(shè)計
用單片機(jī)控制直流電機(jī)時,需要加驅(qū)動電路,為直流電機(jī)提供足夠大的驅(qū)動電流,通常有三極管電流放大驅(qū)動電路、電機(jī)專用驅(qū)動模塊(L293D)和達(dá)林頓驅(qū)動器等等。本設(shè)計采用電機(jī)驅(qū)動模塊L293D,AT89C52單片機(jī)通過P1.0口產(chǎn)生PWM波信號接在L293D的使能端,通過IN1和IN2端口控制電機(jī)正反轉(zhuǎn),通過一個非門實(shí)現(xiàn)。對應(yīng)的OUT1和OUT2輸出接在直流電機(jī)兩端,驅(qū)動電路如圖4所示。
圖4 驅(qū)動電路設(shè)計圖
本設(shè)計選用Proteus元件庫中的直流電機(jī)位置編碼器裝置(DC POSITION ENCODER MOTOR),MOTOR-encoder中間的是編碼器,電機(jī)每轉(zhuǎn)一周,編碼器檢測出一次高電平,根據(jù)這個原理可以測出轉(zhuǎn)速,檢測左右兩邊可以看出電機(jī)的正反轉(zhuǎn)。MOTOR-encoder的編碼輸出與本系統(tǒng)所要求的增量式旋轉(zhuǎn)編碼器具有同等功能,可提供兩路具有90°相位差的編碼脈沖,根據(jù)編碼器輸出的兩路具有90°相位差的編碼脈沖,反饋給單片機(jī)計數(shù)器T0后計數(shù),既可以測速又可以判斷方向[7]。利用其中任何一個可實(shí)現(xiàn)對轉(zhuǎn)速的檢測。本系統(tǒng)對MOTOR-encoder設(shè)置參數(shù)為如下圖5所示。
圖5 MOTOR-encoder參數(shù)設(shè)置
軟件由主程序、中斷子程序、PID子程序組成。
當(dāng)系統(tǒng)啟動后,單片機(jī)進(jìn)行初始化設(shè)置,主程序是一個循環(huán)程序。其主要思路是,先在程序中設(shè)定好速度的給定值,這個給定值與MOTOR-encoder測速電機(jī)送來的速度相比較得到一個誤差值,然后用PID算法輸出控制參數(shù)給PWM發(fā)生電路,從而改變波形的占空比,進(jìn)而控制電機(jī)的轉(zhuǎn)速[8]。單片機(jī)檢測是否有按鍵按下,通過對按鍵的判斷改變電機(jī)給定速度,從而改變系統(tǒng)輸出占空比。系統(tǒng)的主程序流程圖如圖6所示。
圖6 主程序流程圖
定時器0中斷程序先初始化清軟件計數(shù)器,然后判斷T0是否進(jìn)入定時狀態(tài),如果進(jìn)入定時狀態(tài)則對光電編碼盤發(fā)出有脈沖進(jìn)行計數(shù),在固定周期內(nèi)計算轉(zhuǎn)速和PID計算,同時定時器0具有對數(shù)碼管顯示送入段選和位選。流程圖如圖7所示。
圖7 定時器流程圖
比例環(huán)節(jié)的作用是對系統(tǒng)偏差瞬息進(jìn)行判斷,比例系數(shù)越大,控制作用越強(qiáng),但比例系數(shù)如果過大會導(dǎo)致系統(tǒng)振蕩不穩(wěn)定;積分環(huán)節(jié)雖然可以消除靜態(tài)誤差,但過大的積分作用會增加系統(tǒng)的超調(diào)量,響應(yīng)速度變慢,出現(xiàn)等幅振蕩等;微分環(huán)節(jié)的作用是可以起到超前作用,阻止偏差變化,能夠減小超調(diào)量,使系統(tǒng)更穩(wěn)定,但魯棒性差[9]。該程序主要是把設(shè)定的轉(zhuǎn)速現(xiàn)當(dāng)前測量得到的轉(zhuǎn)速來計算偏差,從而用PWM輸出方式來確定輸出脈沖的寬度。
常規(guī)的模擬PID控制系統(tǒng)原理框圖如圖8所示。該系統(tǒng)由模擬PID控制器和被控對象組成。圖中,r(t)是給定值,y(t)是系統(tǒng)的實(shí)際輸出值,給定值與實(shí)際輸出值構(gòu)成控制偏差[10]。
e(t)=r(t)-y(t)
(1)
式中:e(t)為PID控制的輸入;u(t)為PID控制器的輸出和被控對象的輸入。所以模擬PID控制器的控制規(guī)律為:
(2)
式中:Kp為控制器的比例系數(shù);Ti為控制器的積分時間,也稱積分系數(shù);Td為控制器的微分時間,也稱微分系數(shù)[11]。
圖8 模擬PID控制系統(tǒng)原理圖
對式(2)進(jìn)行適當(dāng)?shù)淖儞Q,即可以進(jìn)行數(shù)字PID控制。數(shù)字PID控制算法可以分為位置式PID和增量式PID控制算法。
位置式PID表達(dá)式為:
(3)
增量式PID控制算法公式:
Δuk=uk-uk-1=
Aek+Bek-1+Cek-2
(4)
由式(4)可以看出,如果單片機(jī)控制系統(tǒng)采用恒定的采樣周期T,一旦確定A、B、C,只要使用前后3次測量的偏差值,就可以由式(4)求出控制量。增量式PID控制算法與位置式PID控制算法相比,計算量小得多,因此本次設(shè)計中采用的PID算法是增量式的[12-13]。圖9所示為軟件實(shí)現(xiàn)PID算法流程圖。
圖9 增量式PID控制程序流程圖
本次設(shè)計采用Keil軟件和Proteus仿真軟件對直流電機(jī)閉環(huán)調(diào)速的PID算法進(jìn)行調(diào)試、驗(yàn)證、仿真。首先在Keil中對電機(jī)調(diào)速程序進(jìn)行編寫和調(diào)試,編譯生產(chǎn)“.HEX”的目標(biāo)代碼文件,時鐘頻率設(shè)置為12MHz。然后下載到Proteus中組建完成的硬件系統(tǒng)中進(jìn)行軟硬件聯(lián)調(diào)仿真。最終仿真效果如圖10所示[14-15]。
圖10 系統(tǒng)仿真效果圖
為了更直觀的觀察仿真結(jié)果,從虛擬儀器模式中選取示波器模塊分別對電機(jī)驅(qū)動模塊的使能端信號進(jìn)行檢測,利用圖表模式對編碼器的兩路信號和單片機(jī)產(chǎn)生的PWM波信號進(jìn)行電壓信號分析。
當(dāng)系統(tǒng)仿真開始運(yùn)行時,程序設(shè)定初始給定速度為240 r/min,電機(jī)實(shí)際轉(zhuǎn)速開始慢慢加速,最終穩(wěn)定在給定轉(zhuǎn)速。當(dāng)點(diǎn)擊加速按鍵或是減速按鍵時,電機(jī)轉(zhuǎn)速會出現(xiàn)短暫的超調(diào)或滯后,最終會穩(wěn)定在給定設(shè)置速度。通過連接示波器可以直觀的觀察到電機(jī)的實(shí)際轉(zhuǎn)速和當(dāng)前速度PWM的波形圖,通過圖表模式,添加激勵源探針,可以觀察到編碼器的電壓信號。示波器測量不同轉(zhuǎn)速波形如圖11所示。圖表測得波形如圖12所示。
圖11 電機(jī)加速前后的速度和PWM信號波形
圖12 編碼器電壓信號和PWM電壓信號
從圖11中可以看出,加速后系統(tǒng)的占空比增大,編碼器轉(zhuǎn)速的波形圖抖動頻率變大,電機(jī)速度變快,給定速度和電機(jī)實(shí)際速度相吻合,所以符合設(shè)計要求。采用PID閉環(huán)調(diào)速算法有效地抑制轉(zhuǎn)速的超調(diào),調(diào)速精確,效率高。運(yùn)用Proteus和Keil對直流電機(jī)閉環(huán)調(diào)速進(jìn)行了軟硬件的設(shè)計,有效地驗(yàn)證了PID算法,起到了本文提出的類快速控制原型的效果。
[1] 宛 錚,王慶泉. 基于Proteus的無刷直流電機(jī)控制器仿真設(shè)計[J].科技信息,2012(15):15-16.
[2] 王 玲,王中訓(xùn),王 恒.基于 MSP430 單片機(jī)的多路無線溫度檢測系統(tǒng)[J].現(xiàn)代電子技術(shù),2011,34(1):125-127.
[3] 李玲玲.一種智能電風(fēng)扇的設(shè)計[J].遵義師范學(xué)院學(xué)報,2016.08,18(4):105-106.
[4] 鄧春林.基于PWM調(diào)速技術(shù)的智能溫控風(fēng)扇系統(tǒng)[J].電子制作,2015.07,(108):88-89.
[5] 盧 瑩.基于BCI的假肢控制方法研究[D].秦皇島:燕山大學(xué),2011(3):37-39.
[6] 何 沖,王淑紅,侯勝偉,等.基于AT89C52單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)研究[J].電氣技術(shù),2012(4):5-6.
[7] 童東兵,張莉萍,張 穎,等.基于任務(wù)驅(qū)動的《微機(jī)控制系統(tǒng)課程設(shè)計》教學(xué)與實(shí)踐[J].上海工程技術(shù)大學(xué)教育研究,2016(1):32-35.
[8] 楊 靖.單片機(jī)控制的直流電機(jī)調(diào)速系統(tǒng)[J].機(jī)床電器,2008(1):45-47.
[9] 謝世杰,陳生潭,樓順天.數(shù)字PID算法在無刷直流電機(jī)控制器中的應(yīng)用[J].現(xiàn)代電子技術(shù),2004(2):59-61.
[10] 張大釗.基于開關(guān)變壓器式的電機(jī)軟起動器研究[D].西安:西安科技大學(xué),2010:24-25.
[11] 劉佳佳.大型強(qiáng)力數(shù)控旋壓機(jī)液壓伺服系統(tǒng)研究[D].北京:北京工業(yè)大學(xué),2014:20-21.
[12] 周 越.半自主足球機(jī)器人控制系統(tǒng)研究與開發(fā)[D].北京:華北電力大學(xué),2003:37-38.
[13] 孟凡兵.基于ARM的智能調(diào)節(jié)器研究與實(shí)現(xiàn)[D].大連:大連工業(yè)大學(xué),2011:48-50.
[14] 張毅剛.基于Proteus的單片機(jī)課程的基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計[M].北京:人民郵電出版社,2012.
[15] 袁占軍.基于proteus的直流電機(jī)PWM調(diào)速系統(tǒng)研究[J].電子設(shè)計工程,2013,21(15):115-116.