朱志強(qiáng)
(江陰職業(yè)技術(shù)學(xué)院,江陰 214400)
基于MATLAB/Simulink閉環(huán)小車控制系統(tǒng)設(shè)計(jì)
朱志強(qiáng)
(江陰職業(yè)技術(shù)學(xué)院,江陰214400)
針對小車運(yùn)動過程中易受外界因素干擾,運(yùn)動狀態(tài)出現(xiàn)不確定性的問題,提出基于MATLAB/Simulink的閉環(huán)系統(tǒng)設(shè)計(jì)方法,系統(tǒng)使用Simulink自帶的Arduino硬件目標(biāo)庫進(jìn)行小車驅(qū)動電路、測速電路的設(shè)置及運(yùn)動狀態(tài)的閉環(huán)建模,將整定后的系統(tǒng)由MATLAB/Simulink環(huán)境下載至下位機(jī)Arduino后,小車能精準(zhǔn)實(shí)現(xiàn)預(yù)設(shè)的運(yùn)動狀態(tài)。結(jié)果表明:將Arduino與Simulink有效結(jié)合后,開發(fā)靈活,成本低,對基于算法的運(yùn)動控制系統(tǒng)研究有推廣價(jià)值。
Arduino;Simulink;閉環(huán)系統(tǒng);PID控制;智能小車
2016年江蘇高校哲學(xué)社會科學(xué)研究課題(No.2016SJD79002)、2016年江陰職業(yè)技術(shù)學(xué)院科研項(xiàng)目(No.16-E-DZ-18)
小車運(yùn)動控制可分為開環(huán)和閉環(huán)兩種模式。開環(huán)控制系統(tǒng)軟硬件設(shè)計(jì)都較為簡單,常用于小車機(jī)械部分的功能測試,但在實(shí)際運(yùn)行過程中小車不能根據(jù)外在因素變化及時(shí)對小車的運(yùn)行姿態(tài)進(jìn)行調(diào)整。以走直線為例,小車會受到兩側(cè)車輪摩擦阻力、路面平整度、電機(jī)傳動差異性等因素影響,使小車偏離直線車道。
閉環(huán)控制可以通過計(jì)算機(jī)編程來控制其行駛,可以按照預(yù)先設(shè)定的模式在一個(gè)特定的環(huán)境里自動地運(yùn)行,無需人工干預(yù)便可以完成預(yù)期所要達(dá)到的目標(biāo),是一個(gè)集環(huán)境感知、規(guī)劃決策、自動行駛等功能于一體的綜合系統(tǒng)[1-4];它集中地運(yùn)用了計(jì)算機(jī)、傳感、信息、通信、導(dǎo)航、人工智能及自動控制等技術(shù),是典型的高新技術(shù)綜合體[5-6]。
本設(shè)計(jì)在傳統(tǒng)小車驅(qū)動基礎(chǔ)上增加了測速反饋裝置,采用MATLAB/Simulink對小車驅(qū)動進(jìn)行PID調(diào)節(jié),小車的運(yùn)動狀態(tài)得以實(shí)時(shí)調(diào)整,使小車在運(yùn)行中能有效減少外部因素的干擾。
本系統(tǒng)設(shè)計(jì)分為上位機(jī)和下位機(jī)兩部分,上位機(jī)由MATLAB/Simulink進(jìn)行建模,下位機(jī)負(fù)責(zé)采集小車運(yùn)行速度信號,并根據(jù)上位機(jī)的實(shí)時(shí)調(diào)節(jié)及時(shí)調(diào)整輸出小車直流電機(jī)驅(qū)動模塊的PWM控制信號。系統(tǒng)設(shè)計(jì)框圖如圖1所示。

圖1 小車閉環(huán)控制系統(tǒng)框圖
系統(tǒng)硬件主要包括Arduino核心板控制電路、小車電機(jī)驅(qū)動電路、車輪測速傳感模塊。這些模塊安裝于車體上,由7.2V大容量鋰電池經(jīng)各穩(wěn)壓模塊向相應(yīng)電路提供電源。
2.1核心控制電路
Arduino是一系列基于單片機(jī)的人機(jī)互動產(chǎn)品開發(fā)平臺,它的硬件平臺是開放的。Arduino的硬件平臺包括基于AVR單片機(jī)的主控制電路板,以及大量的各式輸入/輸出電子模塊。輸入/輸出模塊包括開關(guān)輸入模塊、溫度壓力傳感器輸入模塊、超聲測距傳感器輸入模塊、各類顯示輸出模塊、電機(jī)控制模塊等[7]。
系統(tǒng)開發(fā)時(shí),使用Simulink來設(shè)計(jì)控制系統(tǒng)和小車運(yùn)動的算法,通過與執(zhí)行平臺相連,程序可以在Arduino上運(yùn)行。Arduino Mega 2560對MATLAB/Simulink支持較好,是Simulink的外接硬件目標(biāo)庫的成員之一,該板內(nèi)置一個(gè)Atmel ATmega處理器,提供數(shù)字和模擬連接以及串口通信,方便檢測電機(jī)轉(zhuǎn)速,并及時(shí)調(diào)整輸出PWM占空比以調(diào)節(jié)電機(jī)驅(qū)動速度。系統(tǒng)設(shè)計(jì)時(shí)可以在Arduino Mega上運(yùn)行應(yīng)用程序的交互式參數(shù)調(diào)整和信號監(jiān)控,而這在Arduino Uno上是無法使用的。
2.2電機(jī)驅(qū)動電路
現(xiàn)代豫劇《香魂女》和《常香玉》帶著強(qiáng)烈地創(chuàng)新使命和探索意識,有效地嘗試并創(chuàng)造性地完成了戲曲現(xiàn)代戲在新時(shí)期的現(xiàn)代化創(chuàng)作,在創(chuàng)作中,也有意識地以局部形態(tài)向戲曲的現(xiàn)代性逼近。可以斷言,戲曲現(xiàn)代戲未來的發(fā)展,仍然面臨著這兩個(gè)問題:戲曲現(xiàn)代戲的戲曲化和戲曲現(xiàn)代戲的現(xiàn)代性。
電機(jī)工作時(shí)電流高于核心板I/O口輸出電流,使用時(shí)必須外接電機(jī)驅(qū)動電路。驅(qū)動電機(jī)可采用L298N雙H橋電機(jī)驅(qū)動控制模塊[8],其驅(qū)動部分端子的電壓范圍為:+5V~+35V,驅(qū)動電流峰值可達(dá)2A。L298N既可以用來驅(qū)動直流電機(jī),實(shí)現(xiàn)直流電機(jī)的正反轉(zhuǎn)控制及調(diào)速功能,還可以用來控制步進(jìn)電機(jī)。本設(shè)計(jì)用L298N驅(qū)動小車左右兩個(gè)輪子,實(shí)現(xiàn)小車的前進(jìn)、后退及左右轉(zhuǎn)彎,L298N用于直流電機(jī)驅(qū)動的引腳邏輯關(guān)系如表1所示。

表1 L298N驅(qū)動直流電機(jī)控制邏輯(以左輪為例)
2.3光電編碼測速電路
要實(shí)現(xiàn)小車的閉環(huán)控制,必須對小車左右兩側(cè)車輪的轉(zhuǎn)速實(shí)時(shí)跟蹤檢測,光電脈沖編碼器憑借其在價(jià)格和性能方面的優(yōu)勢一直是轉(zhuǎn)速檢測的主要器件[9],測速時(shí)編碼器碼盤以透光區(qū)和不透光區(qū)來表示碼的狀態(tài)是1或0,電機(jī)轉(zhuǎn)速的快慢和脈沖編碼的頻率成線性關(guān)系。光電編碼信號經(jīng)調(diào)理電路調(diào)理后輸出至Arduino核心板。
Simulink是MATLAB最重要的組件之一,它提供一個(gè)動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。在該環(huán)境中,無需大量書寫程序,而只需要通過簡單直觀的鼠標(biāo)操作,就可構(gòu)造出復(fù)雜的系統(tǒng)。MATLAB/ Simulink2012版本后提供了對Arduino的全面支持,使用Simulink Support Package for Arduino Hardware庫中的模塊進(jìn)行建模,然后在目標(biāo)硬件Arduino上運(yùn)行,可以非常方便地實(shí)現(xiàn)各類閉環(huán)控制。Arduino與Simulink的混合應(yīng)用模式如圖2所示。

圖2 Arduino與Simulink混合應(yīng)用模式
3.1電機(jī)控制
小車的運(yùn)行動作有直行、轉(zhuǎn)向、停止三種,Simulink建模時(shí)無法同時(shí)對兩側(cè)電機(jī)分別給出獨(dú)立的速度控制信號,設(shè)計(jì)時(shí)可以將兩側(cè)車輪的驅(qū)動信號分解為速度信號和轉(zhuǎn)彎信號,如圖3所示。

圖3 電機(jī)驅(qū)動信號的分解
由圖3可看出,兩側(cè)車輪的輸入信號為速度信號與轉(zhuǎn)彎信號的正負(fù)疊加。直行時(shí),無需轉(zhuǎn)彎信號,兩輪速度信號相同;轉(zhuǎn)彎時(shí),只需改變轉(zhuǎn)彎信號的極性,便可實(shí)現(xiàn)左轉(zhuǎn)或右轉(zhuǎn)。由于后續(xù)還要進(jìn)行PID調(diào)節(jié)控制,圖3輸出的速度信號還要經(jīng)過比較器和PID控制器的計(jì)算及PWM飽和模塊設(shè)置才能經(jīng)Arduino生成相應(yīng)的PWM波。與Arduino相連的L298N邏輯控制如圖4所示。

圖4 L298N的邏輯控制
3.2編碼測速控制

設(shè)計(jì)中采用的光電編碼器為100步數(shù),故可得:

由式(2)可知,只要準(zhǔn)確測出相鄰兩次脈沖的時(shí)間間隔便可推算出車輪轉(zhuǎn)速,設(shè)計(jì)時(shí)先由Digital Clock模塊來產(chǎn)生一個(gè)準(zhǔn)確的時(shí)間,再在Simulink庫中調(diào)用觸發(fā)子系統(tǒng)既可實(shí)現(xiàn)該功能。
3.3PID調(diào)節(jié)
PID(Proportional,Integral and Differemial)控制器是一種的簡單的反饋調(diào)節(jié)控制算法,常規(guī)PID控制系統(tǒng)原理框圖如圖5所示。

圖5 PID控制器結(jié)構(gòu)框圖
本系統(tǒng)使用PID控制器可以使小車運(yùn)動具有更快的時(shí)間響應(yīng)和更小的穩(wěn)態(tài)誤差,即小車運(yùn)行過程中可以最大程度的消除理想狀態(tài)外的各種干擾因素。本設(shè)計(jì)的PID反饋控制如圖6所示。

圖6 小車閉環(huán)控制框圖
PID控制器由比例、積分、微分三個(gè)環(huán)節(jié)構(gòu)成。在控制系統(tǒng)結(jié)構(gòu)確定后、控制對象處于正常狀態(tài)時(shí),應(yīng)適當(dāng)調(diào)整控制器的參數(shù)使控制系統(tǒng)的運(yùn)行達(dá)到最佳狀態(tài),實(shí)現(xiàn)最好的控制效果。由于具體的傳遞函數(shù)難以確定,所以系統(tǒng)設(shè)計(jì)時(shí),PID參數(shù)整定采用試湊法。
4.1比例環(huán)節(jié)參數(shù)Kp的整定
偏差信號e(t)產(chǎn)生后,負(fù)反饋介入以修正偏差。理論上,比例系數(shù)Kp增大可提高系統(tǒng)的響應(yīng)速度,但比例系數(shù)太大會產(chǎn)生有害振蕩。將系統(tǒng)的積分和微分環(huán)節(jié)移除后,在比例環(huán)節(jié)單獨(dú)作用下,通過改變Kp值并觀察系統(tǒng)運(yùn)行情況,考慮到設(shè)計(jì)中的被控量是小車車輪轉(zhuǎn)速,系統(tǒng)是一階系統(tǒng),因此Kp可以適當(dāng)放寬,經(jīng)過試湊后,Kp值設(shè)為20。
4.2積分環(huán)節(jié)參數(shù)Ti的整定
在比例控制的基礎(chǔ)上加入積分控制,是系統(tǒng)增加一階,這可以使系統(tǒng)的穩(wěn)態(tài)誤差進(jìn)一步得到改善。積分控制取決于積分時(shí)間Ti,整定時(shí)將微分控制移除,逐步對積分系數(shù)進(jìn)行試湊,直至靜差消除的速度滿意。由于系統(tǒng)已經(jīng)是二階系統(tǒng),過大的積分系數(shù)會降低系統(tǒng)穩(wěn)定性,試湊后,1/Ti設(shè)為了0.005比較合適。
4.3微分環(huán)節(jié)參數(shù)Td整定
微分控制反映了偏差信號的變化速率,改控制是一種預(yù)見性控制,使得系統(tǒng)能在偏差信號變得太大之前,在系統(tǒng)中引入一個(gè)有效的早期修正信號,從而加快系統(tǒng)的動作速度,減少調(diào)節(jié)時(shí)間。對Td試湊時(shí),最后選擇的Td的值為4。
將系統(tǒng)從Simulink環(huán)境寫入Arduino Mega后,由于小車采用了PID閉環(huán)控制控制系統(tǒng),很大程度上提高了小車運(yùn)動的瞬態(tài)性能和穩(wěn)態(tài)性能,使小車能更快響應(yīng)測速信號的變化,更準(zhǔn)確地按照給定的指令運(yùn)轉(zhuǎn),在出現(xiàn)外界干擾時(shí)能夠迅速調(diào)節(jié)回正常狀態(tài),小車運(yùn)行穩(wěn)定性得到了改善。利用MATLAB/Simulink可以實(shí)現(xiàn)PID控制器的離線設(shè)計(jì)和整定,將Simulink與開源硬件Arduino配合使用,可以推廣到多種運(yùn)動控制系統(tǒng)中,有較強(qiáng)的使用價(jià)值。
[1]李明.先進(jìn)制造技術(shù)與應(yīng)用前沿———機(jī)器人[M].上海:上海科學(xué)技術(shù)出版社,2012.
[2]王紹坤.基于ARMS的無線遙控車系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].長春:吉林大學(xué),2011.
[3]陳松,宋曉琳.基于DSP的智能小車路徑跟隨系統(tǒng)設(shè)計(jì)[J].工程設(shè)計(jì)學(xué)報(bào),2012,19(4):312-317.
[4]李波,楊衛(wèi),張文棟,等.一種智能小車自主尋/循跡系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2012,20(10):2798-2801.
[5]朱思敏.自循跡智能小車控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2013.
[6]宋永獻(xiàn),馬娟麗,賀乃寶,等.基于TMS320F2812的智能循跡小車控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2011,19(9):2128-2130.
[7]楊繼志,郭敬.Arduino的互動產(chǎn)品平臺創(chuàng)新設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng),2012,4:39-41.
[8]梁學(xué)修,陳志,趙博.基于FPGA的電機(jī)轉(zhuǎn)速高精度測量技術(shù)研究[J].制造業(yè)自動化,2015,37(12):50-52.
[9]呂云芳,等.基于C51高級語言程序控制的智能循跡小車設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,2015,34(3):142-145.
Arduino;Simulink;Closed-Loop System;PID Control;Smart Vehicle
Design of Closed-Loop Control System for Vehicle Based on MATLAB/ Simulink
ZHU Zhi-qiang
(Jiangyin Polytechnic College,Jiangyin 214400)
Vehicle can be interfered by external factors,and motion appears uncertain state,to deal with these issues,proposes closed-loop system design based on MATLAB/Simulink,the system uses the target hardware library for Arduino by Simulink to drive the vehicle,speed measurement and modeling of the closed-loop system,the tuning system after downloading the MATLAB/Simulink environment to Arduino,the vehicle can achieve precise default state of motion.The result shows that:after the effective combination Arduino and Simulink,the development of flexible,low cost,motion control system based on the algorithm research has promotional value.
1007-1423(2016)28-0049-04
10.3969/j.issn.1007-1423.2016.28.014
朱志強(qiáng)(1981-),男,江蘇靖江人,講師,碩士,研究方向?yàn)殡娮油ㄐ偶扒度胧较到y(tǒng)
2016-07-28
2016-09-25