新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于Arduino與LabVIEW的直流電機(jī)轉(zhuǎn)速控制系統(tǒng)

基于Arduino與LabVIEW的直流電機(jī)轉(zhuǎn)速控制系統(tǒng)

作者: 時(shí)間:2017-01-06 來(lái)源:網(wǎng)絡(luò) 收藏

pinMode(3,OUTPUT);

analogWrite(3,127);

圖4 PWM頻率測(cè)量結(jié)果

在圖4所示的PWM頻率測(cè)量結(jié)果中,去除前兩個(gè),可以發(fā)現(xiàn)頻率值穩(wěn)定在490和491,且4個(gè)490之后出現(xiàn)一個(gè)491,基本可以認(rèn)為是490Hz。

同時(shí),為了進(jìn)一步的確認(rèn)PWM的頻率為490Hz,已驗(yàn)證頻率測(cè)量的準(zhǔn)確性,利用NI USB-6009便攜式數(shù)據(jù)采集卡和LabVIEW 2012軟件實(shí)現(xiàn)一個(gè)簡(jiǎn)易的模擬量采集器,使用10kps的采樣率,5秒的采樣時(shí)間的參數(shù)分別采集了PWM的占空比為10/255、127/255和245/255時(shí)的波形圖,取波形圖的前0.01秒,如圖5、圖6和圖7所示,在0.01秒內(nèi)約有5個(gè)周期,同時(shí)使用頻率分析工具對(duì)占空比為127/255的波形數(shù)據(jù)進(jìn)行分許,得到其頻率為490.099Hz。

通過(guò)對(duì)基于Arduino與TimerOne定時(shí)器庫(kù)的頻率測(cè)量與基于LabVIEW和數(shù)據(jù)采集卡的數(shù)據(jù)對(duì)比與分析,得出頻率測(cè)量非常準(zhǔn)確。

圖5占空比為10/255時(shí)的波形

圖6占空比為127/255時(shí)的波形

圖7占空比為245/255時(shí)的波形

2.4搭建測(cè)量轉(zhuǎn)速的平臺(tái)

在驗(yàn)證了基于Arduino與TimerOne定時(shí)器庫(kù)的頻率測(cè)量的準(zhǔn)確性之后,我們就可以著手搭建一個(gè)直流電機(jī)轉(zhuǎn)速測(cè)量系統(tǒng)。

2.4.1硬件平臺(tái)

直流電機(jī)轉(zhuǎn)速測(cè)量系統(tǒng)的直流電機(jī)和編碼器有兩者分離式,使用聯(lián)軸器將兩者連接起來(lái),也有帶有編碼器的直流電機(jī),此處為了簡(jiǎn)化設(shè)計(jì),直接選用帶有編碼器的直流電機(jī)。JGB37-371-12V-228RPM帶有編碼器的直流減速電機(jī)如圖8所示,額定電壓為12V,額定空載轉(zhuǎn)速為228rpm,其編碼器為334線增量式光電編碼器,其接口有6根數(shù)據(jù)線,黃色和橙色是電機(jī)電源,綠色和白色是AB相脈沖輸出,紅色和黑色是編碼器的電源端和接地端。

圖8帶有編碼器的直流減速電機(jī)

圖9 OCROBOT Motor Shield

OCROBOT Motor Shield是基于Arduino Motor Shield設(shè)計(jì)的增強(qiáng)版本的電機(jī)驅(qū)動(dòng)器,如圖9所示,電機(jī)驅(qū)動(dòng)器采用獨(dú)立供電、GND分離技術(shù),且與Arduino控制器之間采用光耦隔離,這充分保證了Arduino控制器在大負(fù)載、大功率、急剎車、瞬時(shí)正反轉(zhuǎn)等惡劣電磁環(huán)境下的穩(wěn)定性。需要注意的是:Arduino控制器與電機(jī)驅(qū)動(dòng)器應(yīng)使用兩塊電池或者兩個(gè)獨(dú)立的電源,保證電機(jī)驅(qū)動(dòng)板與Arduino控制板電源完全獨(dú)立,從而保證其電氣隔離性。OCROBOT Motor Shield的I/O口的控制功能如表2所示,如果使用電機(jī)時(shí)還會(huì)接駁其他設(shè)備應(yīng)避免占用這些I/O口。

表2OCROBOT Motor Shield的控制引腳

功能

電機(jī)A

電機(jī)B

方向

D12

D13

速度(PWM)

D3

D11

制動(dòng)(剎車)

D9

D8

搭建的直流電機(jī)轉(zhuǎn)速測(cè)量系統(tǒng)如圖10所示。OCROBOT Motor Shield直接堆疊在Arduino Uno控制器上,OCROBOT Motor Shield采用7.4V的鋰電池供電,Arduino Uno控制器使用方口USB線連接至計(jì)算機(jī)上,提供電源且可以方便的通過(guò)串口上傳數(shù)據(jù)至計(jì)算機(jī)上。電機(jī)的黃色和橙色連接至OCROBOT Motor Shield電機(jī)接口A,綠色和白色分別連接至Arduino Uno控制器的數(shù)字端口2、3,紅色和黑色連接至Arduino Uno控制器的電源端口5V、GND。

圖10直流電機(jī)轉(zhuǎn)速測(cè)量系統(tǒng)

2.4.2軟件設(shè)計(jì)

由于JGB37-371-12V-228RPM直流減速電機(jī)的編碼器輸出AB相脈沖,為了充分利用兩相脈沖以提高測(cè)量準(zhǔn)確性,在程序代碼2轉(zhuǎn)速測(cè)量程序中的attachInterrupt(0, counter, RISING)之后增加如下代碼,將B相脈沖輸出也用來(lái)計(jì)數(shù),以實(shí)現(xiàn)2倍頻測(cè)量。JGB37-371-12V-228RPM直流減速電機(jī)的編碼器為334線增量式光電編碼器,也就說(shuō)電機(jī)旋轉(zhuǎn)一圈輸出334個(gè)脈沖,2倍頻之后即為668個(gè)脈沖。

attachInterrupt(1, counter, RISING);//設(shè)置編碼器B相位上升沿中斷

修改完編碼器部分,需要增加電機(jī)驅(qū)動(dòng)部分的代碼,以實(shí)現(xiàn)驅(qū)動(dòng)直流電機(jī)旋轉(zhuǎn)。由于硬件上將直流電機(jī)的電源線接在L298P的A端口,其控制信號(hào)為3、9和12,分別為PWM信號(hào)、制動(dòng)信號(hào)和方向信號(hào)。需要在void setup()中的delay(2000)之后增加如下代碼。當(dāng)PWM值為80時(shí),串口輸出的轉(zhuǎn)速如圖8所示,且當(dāng)PWM低于80時(shí),減速電機(jī)輸出軸不轉(zhuǎn)動(dòng);將PWM設(shè)置為255時(shí),串口輸出的轉(zhuǎn)速如圖9所示。

pinMode(12,OUTPUT);

pinMode(3,OUTPUT);

pinMode(9,OUTPUT);//啟用電機(jī)A的三個(gè)管腳,全部設(shè)置為輸出狀態(tài)

digitalWrite(9, LOW);//松開(kāi)電機(jī)A的制動(dòng)

digitalWrite(12, HIGH);//設(shè)置方向?yàn)檎?p>analogWrite(3,80);//設(shè)置PWM值

圖8 PWM為80時(shí)轉(zhuǎn)速數(shù)據(jù)

圖9 PWM為255時(shí)轉(zhuǎn)速數(shù)據(jù)

3.轉(zhuǎn)速的比例控制

3.1PID控制方法

PID控制器(比例-積分-微分控制器),由比例單元P、積分單元I和微分單元D組成。通過(guò)Kp,Ki和Kd三個(gè)參數(shù)的設(shè)定來(lái)實(shí)現(xiàn)對(duì)某個(gè)變量的實(shí)時(shí)控制,主要適用于基本上線性,且動(dòng)態(tài)特性不隨時(shí)間變化的系統(tǒng)。

PID控制器是一個(gè)在工業(yè)控制應(yīng)用中常見(jiàn)的反饋控制方法,其原理如圖10所示,其將采集的數(shù)據(jù)和設(shè)定參考值進(jìn)行比較,然后將這個(gè)差值通過(guò)PID三個(gè)模塊計(jì)算出新的控制值用于執(zhí)行,計(jì)算差值的目的是讓系統(tǒng)的數(shù)據(jù)達(dá)到或者保持在設(shè)定的參考值。PID控制器可以根據(jù)歷史數(shù)據(jù)和差別的出現(xiàn)率來(lái)調(diào)整輸入值,使系統(tǒng)更加準(zhǔn)確而穩(wěn)定。



評(píng)論


技術(shù)專區(qū)

關(guān)閉