基于A(yíng)rduino與LabVIEW的直流電機轉速控制系統
pinMode(3,OUTPUT);
analogWrite(3,127);
圖4 PWM頻率測量結果
在圖4所示的PWM頻率測量結果中,去除前兩個(gè),可以發(fā)現頻率值穩定在490和491,且4個(gè)490之后出現一個(gè)491,基本可以認為是490Hz。
同時(shí),為了進(jìn)一步的確認PWM的頻率為490Hz,已驗證頻率測量的準確性,利用NI USB-6009便攜式數據采集卡和LabVIEW 2012軟件實(shí)現一個(gè)簡(jiǎn)易的模擬量采集器,使用10kps的采樣率,5秒的采樣時(shí)間的參數分別采集了PWM的占空比為10/255、127/255和245/255時(shí)的波形圖,取波形圖的前0.01秒,如圖5、圖6和圖7所示,在0.01秒內約有5個(gè)周期,同時(shí)使用頻率分析工具對占空比為127/255的波形數據進(jìn)行分許,得到其頻率為490.099Hz。
通過(guò)對基于A(yíng)rduino與TimerOne定時(shí)器庫的頻率測量與基于LabVIEW和數據采集卡的數據對比與分析,得出頻率測量非常準確。
圖5
圖6
圖7占空比為245/255時(shí)的波形
2.4搭建測量轉速的平臺
在驗證了基于A(yíng)rduino與TimerOne定時(shí)器庫的頻率測量的準確性之后,我們就可以著(zhù)手搭建一個(gè)直流電機轉速測量系統。
2.4.1硬件平臺
直流電機轉速測量系統的直流電機和編碼器有兩者分離式,使用聯(lián)軸器將兩者連接起來(lái),也有帶有編碼器的直流電機,此處為了簡(jiǎn)化設計,直接選用帶有編碼器的直流電機。JGB37-371-12V-228RPM帶有編碼器的直流減速電機如圖8所示,額定電壓為12V,額定空載轉速為228rpm,其編碼器為334線(xiàn)增量式光電編碼器,其接口有6根數據線(xiàn),黃色和橙色是電機電源,綠色和白色是AB相脈沖輸出,紅色和黑色是編碼器的電源端和接地端。
圖8
圖9 OCROBOT Motor Shield
OCROBOT Motor Shield是基于A(yíng)rduino Motor Shield設計的增強版本的電機驅動(dòng)器,如圖9所示,電機驅動(dòng)器采用獨立供電、GND分離技術(shù),且與Arduino控制器之間采用光耦隔離,這充分保證了Arduino控制器在大負載、大功率、急剎車(chē)、瞬時(shí)正反轉等惡劣電磁環(huán)境下的穩定性。需要注意的是:Arduino控制器與電機驅動(dòng)器應使用兩塊電池或者兩個(gè)獨立的電源,保證電機驅動(dòng)板與Arduino控制板電源完全獨立,從而保證其電氣隔離性。OCROBOT Motor Shield的I/O口的控制功能如表2所示,如果使用電機時(shí)還會(huì )接駁其他設備應避免占用這些I/O口。
表2OCROBOT Motor Shield的控制引腳
功能 | 電機A | 電機B |
方向 | D12 | D13 |
速度(PWM) | D3 | D11 |
制動(dòng)(剎車(chē)) | D9 | D8 |
搭建的直流電機轉速測量系統如圖10所示。OCROBOT Motor Shield直接堆疊在A(yíng)rduino Uno控制器上,OCROBOT Motor Shield采用7.4V的鋰電池供電,Arduino Uno控制器使用方口USB線(xiàn)連接至計算機上,提供電源且可以方便的通過(guò)串口上傳數據至計算機上。電機的黃色和橙色連接至OCROBOT Motor Shield電機接口A(yíng),綠色和白色分別連接至Arduino Uno控制器的數字端口2、3,紅色和黑色連接至Arduino Uno控制器的電源端口5V、GND。
圖10直流電機轉速測量系統
2.4.2軟件設計
由于JGB37-371-12V-228RPM直流減速電機的編碼器輸出AB相脈沖,為了充分利用兩相脈沖以提高測量準確性,在程序代碼2轉速測量程序中的attachInterrupt(0, counter, RISING)之后增加如下代碼,將B相脈沖輸出也用來(lái)計數,以實(shí)現2倍頻測量。JGB37-371-12V-228RPM直流減速電機的編碼器為334線(xiàn)增量式光電編碼器,也就說(shuō)電機旋轉一圈輸出334個(gè)脈沖,2倍頻之后即為668個(gè)脈沖。
attachInterrupt(1, counter, RISING);//設置編碼器B相位上升沿中斷
修改完編碼器部分,需要增加電機驅動(dòng)部分的代碼,以實(shí)現驅動(dòng)直流電機旋轉。由于硬件上將直流電機的電源線(xiàn)接在L298P的A端口,其控制信號為3、9和12,分別為PWM信號、制動(dòng)信號和方向信號。需要在void setup()中的delay(2000)之后增加如下代碼。當PWM值為80時(shí),串口輸出的轉速如圖8所示,且當PWM低于80時(shí),減速電機輸出軸不轉動(dòng);將PWM設置為255時(shí),串口輸出的轉速如圖9所示。
pinMode(12,OUTPUT);
analogWrite(3,80);
圖8 PWM為80時(shí)轉速數據
圖9 PWM為255時(shí)轉速數據
3.轉速的比例控制
3.1PID控制方法
PID控制器(比例-積分-微分控制器),由比例單元P、積分單元I和微分單元D組成。通過(guò)Kp,Ki和Kd三個(gè)參數的設定來(lái)實(shí)現對某個(gè)變量的實(shí)時(shí)控制,主要適用于基本上線(xiàn)性,且動(dòng)態(tài)特性不隨時(shí)間變化的系統。
PID控制器是一個(gè)在工業(yè)控制應用中常見(jiàn)的反饋控制方法,其原理如圖10所示,其將采集的數據和設定參考值進(jìn)行比較,然后將這個(gè)差值通過(guò)PID三個(gè)模塊計算出新的控制值用于執行,計算差值的目的是讓系統的數據達到或者保持在設定的參考值。PID控制器可以根據歷史數據和差別的出現率來(lái)調整輸入值,使系統更加準確而穩定。
評論