本發(fā)明涉及自動控制類教學(xué)實驗裝置,更具體地說,涉及一種面向Matlab的直流電機(jī)調(diào)速控制教學(xué)實驗裝置。
背景技術(shù):
《自動控制理論》是一門理論性較強的課程,是自動化類專業(yè)(獨立本科段)的一門重要的技術(shù)基礎(chǔ)課程,與工程實踐密不可分。它既是基礎(chǔ)課程向?qū)I(yè)課程的深入,又是專業(yè)課程的理論基礎(chǔ),自動控制理論的任務(wù)是研究自動控制系統(tǒng)中變量的運動規(guī)律和改變這種運動規(guī)律的可能性和途徑,為建造高性能的自動控制系統(tǒng)提供必要的理論手段。作為大部分學(xué)生來講,沒有直觀的實物教學(xué)裝置聯(lián)系理論知識,完全掌握這門課程會有一定的難度,因此,實驗教學(xué)環(huán)節(jié)對于學(xué)生掌握基礎(chǔ)的知識理論會有很大的幫助,且對提高課程的教學(xué)質(zhì)量也有很大的促進(jìn)作用。
目前,自動控制類教學(xué)實驗裝置種類很多,比如常見的實驗裝置有:倒立擺實驗裝置、水箱水位控制系統(tǒng)等等,已被各大高校和科研院所等廣泛使用。為了快速進(jìn)行控制系統(tǒng)搭建與實驗,這些設(shè)備常常要求與Matlab進(jìn)行連接。已有的與Matlab聯(lián)合仿真的控制系統(tǒng)價格較高,且底層硬件實現(xiàn)較為復(fù)雜,難以在教學(xué)實驗中廣泛應(yīng)用。
Arduino開發(fā)板是一類結(jié)構(gòu)簡單、成本較低的單片機(jī)系統(tǒng),具有與Matlab通訊的功能。如果能夠利用Arduino作為控制對象與Matlab的連接接口,則有可能開發(fā)出一類低成本、實用性強的教學(xué)實驗系統(tǒng)。另一方面,雖然Arduino開發(fā)板具有較為豐富的外部接口,由于受到CPU位數(shù)和頻率的限制,通常難以滿足控制系統(tǒng)的實時性要求。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種系統(tǒng)結(jié)構(gòu)簡單、價格成本低、數(shù)據(jù)采集和傳輸實時性強的面向Matlab的直流電機(jī)調(diào)速控制教學(xué)實驗裝置。
本發(fā)明的技術(shù)方案如下:
一種面向Matlab的直流電機(jī)調(diào)速控制教學(xué)實驗裝置,包括依次連接上位機(jī)、下位機(jī)、驅(qū)動模塊、直流電機(jī)、編碼器、轉(zhuǎn)速計算模塊,轉(zhuǎn)速計算模塊還與下位機(jī)連接;其中,上位機(jī)運行Matlab環(huán)境,下位機(jī)與上位機(jī)直接模塊化編程;下位機(jī)接收上位機(jī)的Matlab程序后產(chǎn)生PWM,通過驅(qū)動裝置驅(qū)動直流電機(jī)轉(zhuǎn)動,通過修改Matlab程序改變PWM的占空比,進(jìn)行控制直流電機(jī)的轉(zhuǎn)速;經(jīng)編碼器將轉(zhuǎn)速轉(zhuǎn)化為脈沖信號,再經(jīng)轉(zhuǎn)速計算模塊輸出轉(zhuǎn)速信號,轉(zhuǎn)速信號反饋至下位機(jī),上位機(jī)獲取反饋至下位機(jī)的轉(zhuǎn)速信號。
作為優(yōu)選,還包括D/A轉(zhuǎn)換模塊,轉(zhuǎn)速信號經(jīng)D/A轉(zhuǎn)換模塊轉(zhuǎn)換輸出模擬信號,將模擬信號反饋至下位機(jī)。
作為優(yōu)選,下位機(jī)為采用Arduino開發(fā)板,包括CPU、A/D轉(zhuǎn)換模塊,D/A轉(zhuǎn)換模塊輸出的模擬信號為模擬電壓信號,經(jīng)A/D轉(zhuǎn)換模塊,得到預(yù)設(shè)位數(shù)的整數(shù)形式的數(shù)字信號,并反饋至CPU,完成轉(zhuǎn)速信號的采集、傳輸與接收。
作為優(yōu)選,上位機(jī)和下位機(jī)之間采用串口協(xié)議進(jìn)行控制命令以及數(shù)據(jù)的采集、發(fā)送和接收。
作為優(yōu)選,所述上位機(jī)和下位機(jī)的傳輸數(shù)據(jù)總線采用USB轉(zhuǎn)接口。
作為優(yōu)選,轉(zhuǎn)速計算模塊基于單片機(jī)板,將轉(zhuǎn)速計算程序載入單片機(jī)板的CPU中,將脈沖信號轉(zhuǎn)換為轉(zhuǎn)速信號。
作為優(yōu)選,下位機(jī)接收的Matlab程序包括運動控制模塊、ADC轉(zhuǎn)換模塊和串口通信模塊;
運動控制模塊根據(jù)上位機(jī)發(fā)出的指令,控制電機(jī)轉(zhuǎn)速和方向,使電機(jī)能夠按照指定的轉(zhuǎn)速轉(zhuǎn)動;
ADC轉(zhuǎn)換模塊將外部輸入的模擬信號轉(zhuǎn)換為運算時可識別的數(shù)字信號,并與設(shè)定的速度值進(jìn)行差值校正;
通過串口通信模塊接收上位機(jī)發(fā)送的指令信號,串口通信模塊對接收到的指令進(jìn)行校驗,為運動控制模塊提供指令,同時將ADC轉(zhuǎn)換模塊采集到的轉(zhuǎn)速信號發(fā)送到上位機(jī)。
作為優(yōu)選,上位機(jī)與下位機(jī)的軟件開發(fā)環(huán)境包括Matlab/Simulink模塊的安裝、系統(tǒng)的參數(shù)設(shè)置;Matlab/Simulink模塊的安裝中,加入下位機(jī)適用的編程環(huán)境,進(jìn)而上位機(jī)與下位機(jī)直接模塊化編程。
作為優(yōu)選,系統(tǒng)的參數(shù)設(shè)置包括上位機(jī)的Matlab程序與下位機(jī)之間的通信設(shè)置、采樣頻率設(shè)置和系統(tǒng)時間同步設(shè)置,實現(xiàn)教學(xué)實驗裝置的直接模塊化編程和實時性;采樣頻率設(shè)置時,上位機(jī)采樣頻率大于下位機(jī)采樣頻率。
作為優(yōu)選,教學(xué)實驗裝置在面包板上進(jìn)行組裝。
本發(fā)明的有益效果如下:
本發(fā)明所述的教學(xué)實驗裝置采用Arduino開發(fā)板作為控制系統(tǒng)與Matlab通信的接口,針對一類直流電機(jī)調(diào)速控制系統(tǒng)進(jìn)行優(yōu)化設(shè)計,使該裝置成為一套完整、簡易、低成本的教學(xué)實驗和算法驗證平臺。
本發(fā)明通過對直流電機(jī)的運行狀態(tài)進(jìn)行實時性、直接性的控制,能夠讓學(xué)生直觀的了解控制算法的實用效果,使學(xué)生們?nèi)鎸嵸|(zhì)性地理解閉環(huán)控制應(yīng)用系統(tǒng)的基本原理,作為理論教學(xué)的一個簡易、快捷、低成本的實驗平臺,對于提高教學(xué)質(zhì)量,增強學(xué)生控制理論和控制算法的理解、設(shè)計,都具有重要的促進(jìn)作用。
此外,本發(fā)明實施于面包板上,可自由組裝,可自由拆卸,方便初學(xué)的學(xué)生的實踐使用,具有很強的實用性;同時各個功能模塊也可用于其他控制裝置,有很強的通用性。
附圖說明
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖;
圖2是本發(fā)明的電路原理示意圖;
圖3是本發(fā)明的硬件連接示意圖;
圖4是下位機(jī)軟件流程圖設(shè)計;
圖5是本發(fā)明的軟件開發(fā)環(huán)境結(jié)構(gòu)圖。
具體實施方式
以下結(jié)合附圖及實施例對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明。
本發(fā)明為了解決現(xiàn)有技術(shù)的控制實驗教學(xué)裝置系統(tǒng)復(fù)雜、價格成本較高、數(shù)據(jù)實時性的采集和傳輸方面的不足,提供一種面向Matlab的直流電機(jī)調(diào)速控制教學(xué)實驗裝置,包括硬件電路裝置和軟件開發(fā)環(huán)境的優(yōu)化合理設(shè)計,實現(xiàn)教學(xué)實驗裝置結(jié)構(gòu)簡單和低成本。
如圖1、圖2所示,所述的教學(xué)實驗裝置包括依次連接上位機(jī)、下位機(jī)、驅(qū)動模塊、直流電機(jī)、編碼器、轉(zhuǎn)速計算模塊,轉(zhuǎn)速計算模塊還與下位機(jī)連接;其中,上位機(jī)運行Matlab環(huán)境,下位機(jī)與上位機(jī)直接模塊化編程;下位機(jī)接收上位機(jī)的Matlab程序后產(chǎn)生PWM,通過驅(qū)動裝置驅(qū)動直流電機(jī)轉(zhuǎn)動,利用脈寬調(diào)制PWM技術(shù)對直流電機(jī)進(jìn)行調(diào)速控制;通過修改Matlab程序改變PWM的占空比,進(jìn)行控制直流電機(jī)的轉(zhuǎn)速;經(jīng)編碼器將轉(zhuǎn)速轉(zhuǎn)化為脈沖信號,再經(jīng)轉(zhuǎn)速計算模塊輸出轉(zhuǎn)速信號,轉(zhuǎn)速信號反饋至下位機(jī),上位機(jī)獲取反饋至下位機(jī)的轉(zhuǎn)速信號。
為了方便教學(xué)使用,教學(xué)實驗裝置在面包板上進(jìn)行組裝,可自由組裝、自由拆卸,方便初學(xué)的學(xué)生的實踐使用,具有很強的實用性;同時各個功能模塊也可用于其他控制裝置,有很強的通用性。
電機(jī)調(diào)速原理如下:
電機(jī)平均轉(zhuǎn)速Vd=Vmax*D;其中,D=t1/T;
其中,D為占空比,Vd是電機(jī)轉(zhuǎn)速,Vmax是電機(jī)通電時的最大速度,t1為通電時間,T為通電周期。當(dāng)改變占空比D=t1/T時,則得到不同的電機(jī)平均速度,從而達(dá)到調(diào)速的目的。嚴(yán)格地講,平均速度Vd與占空比D并不是嚴(yán)格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似地看成線性關(guān)系。
本實施例中,直流電機(jī)轉(zhuǎn)速信號的采集和傳輸由編碼器和轉(zhuǎn)速計算模塊來實現(xiàn),編碼器采用光電增量式編碼器。轉(zhuǎn)速計算模塊基于單片機(jī)板,將轉(zhuǎn)速計算程序載入單片機(jī)板的CPU中,將脈沖信號轉(zhuǎn)換為轉(zhuǎn)速信號。與下位機(jī)配合使用,則形成雙CPU結(jié)構(gòu),以實現(xiàn)電機(jī)轉(zhuǎn)速信號實時的檢測和控制。
基于光電增量旋轉(zhuǎn)編碼器的原理,只要得知碼盤的步數(shù)(即碼盤轉(zhuǎn)一圈所產(chǎn)生的脈沖數(shù)),以及兩個脈沖之間的時間,利用公式ω=θ/t(其中,ω為角速度,θ為角度,t為時間),求得車輪的角速度。
而已知編碼器的步數(shù),則可利用公式θ=360/n,其中,n為編碼器的步數(shù)。
聯(lián)立公式ω=θ/t、θ=360/n,即可得到ω=1116.07/t,即得到電機(jī)轉(zhuǎn)速計算公式。
通過上述計算公式,編寫計算轉(zhuǎn)速程序下載單片機(jī)板(轉(zhuǎn)速計算模塊)。
本發(fā)明還包括D/A轉(zhuǎn)換模塊,轉(zhuǎn)速計算模塊與D/A轉(zhuǎn)換模塊相連,轉(zhuǎn)速信號經(jīng)D/A轉(zhuǎn)換模塊轉(zhuǎn)換輸出模擬信號,將模擬信號反饋至下位機(jī)??朔司幋a器輸出信號頻率大于Matlab采樣頻率,導(dǎo)致采樣失真的情況出現(xiàn);避免占用下位機(jī)過多的IO管腳,減輕CPU工作量,使系統(tǒng)輸出更為快速、精準(zhǔn)。所述D/A轉(zhuǎn)換模塊包括D/A轉(zhuǎn)換器和運算放大器,實現(xiàn)D/A轉(zhuǎn)換模塊為電壓輸出型。
下位機(jī)為采用Arduino開發(fā)板,包括CPU、A/D轉(zhuǎn)換模塊,D/A轉(zhuǎn)換模塊輸出的模擬信號為模擬電壓信號,經(jīng)A/D轉(zhuǎn)換模塊,得到預(yù)設(shè)位數(shù)的整數(shù)形式的數(shù)字信號,并反饋至CPU,完成轉(zhuǎn)速信號的采集、傳輸與接收。
則本發(fā)明中,由編碼器輸出的脈沖信號,經(jīng)過輸入單片機(jī)板,輸出二進(jìn)制轉(zhuǎn)速信號給D/A轉(zhuǎn)換模塊;D/A轉(zhuǎn)換模塊輸出模擬電壓信號傳輸給下位機(jī),最后由下位機(jī)的A/D模塊將輸入的模擬電壓轉(zhuǎn)換為10位精度的整數(shù)形式表示。
如圖3所示,本發(fā)明形成的閉環(huán)控制系統(tǒng)中,上位機(jī)和下位機(jī)之間采用串口協(xié)議進(jìn)行控制命令以及數(shù)據(jù)的采集、發(fā)送和接收。所述上位機(jī)和下位機(jī)的傳輸數(shù)據(jù)總線采用USB轉(zhuǎn)接口,支持熱插撥、即插即用、傳輸速度快。根據(jù)反饋速度差,采用脈寬調(diào)制PWM控制電機(jī)轉(zhuǎn)速的原理,下位機(jī)根據(jù)程序指令計算出給定速度差值,輸出PWM;驅(qū)動模塊接收到PWM,產(chǎn)生驅(qū)動電壓,控制直流電機(jī)轉(zhuǎn)速;電機(jī)轉(zhuǎn)速通過編碼器輸出為脈沖信號,單片機(jī)板(轉(zhuǎn)速計算模塊)的速度計算程序使轉(zhuǎn)速由脈沖信號變?yōu)閿?shù)字信號,實現(xiàn)轉(zhuǎn)速的模數(shù)轉(zhuǎn)換;模擬信號輸入給D/A轉(zhuǎn)換模塊,輸出模擬電壓信號,完成轉(zhuǎn)速的數(shù)模轉(zhuǎn)換;最后由下位機(jī)的A/D轉(zhuǎn)換模塊轉(zhuǎn)換成轉(zhuǎn)速信號輸出,得到整個系統(tǒng)的閉環(huán)控制過程。
在軟件部分中,上位機(jī)與下位機(jī)的軟件開發(fā)環(huán)境包括Matlab/Simulink模塊的安裝、系統(tǒng)的參數(shù)設(shè)置;Matlab/Simulink模塊的安裝中,加入下位機(jī)適用的編程環(huán)境,進(jìn)而上位機(jī)與下位機(jī)直接模塊化編程。系統(tǒng)的參數(shù)設(shè)置包括上位機(jī)的Matlab程序與下位機(jī)之間的通信設(shè)置、采樣頻率設(shè)置和系統(tǒng)時間同步設(shè)置,實現(xiàn)教學(xué)實驗裝置的直接模塊化編程和實時性;采樣頻率設(shè)置時,上位機(jī)采樣頻率大于下位機(jī)采樣頻率。
如圖4所示,在本發(fā)明的教學(xué)實驗裝置的下位機(jī)軟件流程圖設(shè)計中,下位機(jī)選取Arduino開發(fā)板,能夠通過USB轉(zhuǎn)串口和Matlab直接通信,具有電機(jī)控制的14路PWM接口,2*8通道、10位分辨率的AD轉(zhuǎn)換接口等豐富資源。
下位機(jī)接收的Matlab程序包括運動控制模塊、ADC轉(zhuǎn)換模塊和串口通信模塊。
運動控制模塊是下位機(jī)控制器的核心,其根據(jù)上位機(jī)發(fā)出的指令,控制電機(jī)轉(zhuǎn)速和方向,使電機(jī)能夠按照指定的轉(zhuǎn)速轉(zhuǎn)動。
ADC轉(zhuǎn)換模塊將外部輸入的模擬信號轉(zhuǎn)換為運算時可識別的數(shù)字信號,并與設(shè)定的速度值進(jìn)行差值校正;且可以使上位機(jī)實時、快速的接收到電機(jī)的真實轉(zhuǎn)速。
串口通信模塊包括串口接收和發(fā)送兩種方式,通過串口通信模塊接收上位機(jī)發(fā)送的指令信號,串口通信模塊對接收到的指令進(jìn)行校驗,為運動控制模塊提供指令,同時將ADC轉(zhuǎn)換模塊采集到的轉(zhuǎn)速信號發(fā)送到上位機(jī),以便上位機(jī)對轉(zhuǎn)速信號進(jìn)行實時處理。
如圖5所示,本發(fā)實施例在軟件開發(fā)環(huán)境中,包括Matlab/Simulink下arduino package的安裝、系統(tǒng)的參數(shù)設(shè)置。在2014a版Matlab主頁界面上,點擊附加功能Get Hardware Support Packages,選中Download from Internet,找到Simulink Support Package for Arduino Hardware安裝包,完成安裝,模塊的安裝在Matlab/Simulink中加入適合下位機(jī)編程環(huán)境,實現(xiàn)下位機(jī)和上位機(jī)的直接模塊化編程。參數(shù)設(shè)置包括上位機(jī)中Matlab與下位機(jī)之間的通信設(shè)置、采樣頻率設(shè)置和系統(tǒng)時間同步設(shè)置,在Simulink中搜索real-time模塊,直接添加到環(huán)境中,實現(xiàn)了系統(tǒng)的實時性操作;在Simulink主界面中,點擊Simulation選項中的Model Configuration Parameters,點擊solvers選項,設(shè)置type為Fixed-step,根據(jù)實驗需要設(shè)置Fixed-step size(采樣周期),完成采樣頻率設(shè)置。切記只有保證上位機(jī)采樣頻率要大于下位機(jī)采樣頻率的情況下,采集到的數(shù)據(jù)才具有實際意義,完成數(shù)據(jù)的準(zhǔn)確有效的傳輸;在Run on Target Hardware中,設(shè)置下位機(jī)型號、USB端口、波特率,使上位機(jī)和下位機(jī)之間進(jìn)行良好的通信效果,整個Matlab/Simulink開發(fā)環(huán)境的設(shè)置,保證了上位機(jī)和下位機(jī)之間通信效果的實時性、有效性、準(zhǔn)確性和快速性。
上述實施例僅是用來說明本發(fā)明,而并非用作對本發(fā)明的限定。只要是依據(jù)本發(fā)明的技術(shù)實質(zhì),對上述實施例進(jìn)行變化、變型等都將落在本發(fā)明的權(quán)利要求的范圍內(nèi)。