范志華劉宇彤楊光蘇成貴
(1.吉林省農(nóng)業(yè)機械研究院,吉林 長春 130022;2北京航空航天大學(xué)機械工程及自動化學(xué)院,北京 100191)
水泵是一種通用機械,其應(yīng)用范圍非常廣,幾乎存在國民經(jīng)濟建設(shè)的所有行業(yè)中,社會需求量大。提升水泵質(zhì)量,對我國經(jīng)濟建設(shè)的持續(xù)發(fā)展具有一定的促進(jìn)作用[1]。在實驗室內(nèi)利用試驗臺測定水泵性能參數(shù),是一種檢測水泵綜合性能非常有效的方式。
水泵閉式試驗臺通常由臺架、電機、聯(lián)軸器、扭矩傳感器、入口測壓管路、出口測壓管路、伸縮節(jié)、變徑管路、直管路、支撐架、流量計、閥門、穩(wěn)流密封罐、控制系統(tǒng)等部分組成[2],各部分之間通過法蘭、彎頭連接。水泵啟動后,管路中存在一定壓力,所以試驗臺周圍要有試驗人員隨時觀察管路的泄漏量與承壓能力。連接件的飛出或者高壓水從管路中竄出,都將對試驗人員的人身安全造成危害。本文提出了一種安裝了網(wǎng)絡(luò)攝像頭的能夠?qū)崿F(xiàn)手動控制和自動控制2種方式行走的巡檢小車算法,小車可以在試驗臺周圍智能循跡、自動避障,也可以由檢測人員遙控小車行走在特定區(qū)域。從而實現(xiàn)試驗人員坐在辦公室中觀察攝像頭傳過來的影像信息就可以了解水泵運行現(xiàn)場的狀況,保障了人員安全,減少了工作量。
巡檢小車采用Arduino UNO R3開發(fā)板進(jìn)行開發(fā)設(shè)計,集成了智能循跡、自動避障、遙控回收和視頻監(jiān)測等功能。小車主要由行走和監(jiān)測2部分組成,行走部分由紅外循跡模塊、電機驅(qū)動模塊、舵機模塊、超聲測距模塊構(gòu)成,監(jiān)測部分由視頻監(jiān)測模塊構(gòu)成。巡檢小車的操作系統(tǒng)安裝在手機上,操作手機APP就能實現(xiàn)對巡檢小車的遙控和水泵試驗臺現(xiàn)場工作情況的視頻監(jiān)測等功能。巡檢小車實物圖如圖1所示。巡檢小車主要解決了在水泵測試過程中,檢測人員在試驗臺周圍長時間走動觀察水泵運行狀態(tài),管路泄漏情況,臺架的穩(wěn)定性等過程中容易造成人身安全危害的問題。
圖1 巡檢小車實物圖
Arduino UNO R3開發(fā)板是本巡檢小車的主控中心。R3開發(fā)板采用ATMEGA328P單片機作為核心處理器,耗電量少、成本低、安全性較高、簡單靈活、便于上手,是目前Arduino平臺上最常見的一款產(chǎn)品[3]。其接口豐富,有14個數(shù)字I/O口(包含6個PWM輸出),6個模擬I/O口,1個USB口,1個頻率為16MHz的晶體振蕩器,同時支持SPI,IIC,UART串口通信[4]。這些特點,使其完全能夠滿足本巡檢小車的設(shè)計需求。
本巡檢小車的程序設(shè)計是運用Arduino語言在電腦上完成編譯,并通過開發(fā)板上的USB口將程序下載到中央處理器中,由中央處理器運行程序使小車完成其相應(yīng)的功能。小車共采用2塊Arduino UNO R3,1塊主要負(fù)責(zé)指令信號、傳感器數(shù)據(jù)的采集以及對于舵機的驅(qū)動;1塊主要負(fù)責(zé)通過輸出使能信號以及PWM信號,控制L298N電機驅(qū)動模塊進(jìn)而驅(qū)動小車進(jìn)行多樣的運動。兩板之間通過串口通信相連接,用于在手動控制時傳遞手柄的信號,控制電機的運動。同時,還實現(xiàn)了對小車攝像頭云臺的控制,完成了攝像頭從不同角度來觀察水泵試驗臺的各個關(guān)鍵部位的運行情況。為了減少視頻傳輸延時,小車攝像頭不經(jīng)過中央處理器,而是通過WIFI直接對接到手機 APP的后臺端口[5]。
選用智能小車避障傳感器模塊作為紅外循跡模塊,該傳感器模塊對環(huán)境光線適應(yīng)能力強,可以通過調(diào)節(jié)電位器上的旋鈕改變探測距離,具有抗干擾能力強、容易安裝、操作便捷等特點[6]。該模塊有效探測距離2~30cm,檢測角度35°。實物圖見圖2。
圖2 紅外循跡模塊
本巡檢小車選用L298N直流步進(jìn)電機驅(qū)動板作為電機驅(qū)動模塊,其可以控制直流電機的方向和速度。大容量濾波電容、續(xù)流保護(hù)二極管是這款驅(qū)動板的一個特點,并且其驅(qū)動能力強,發(fā)熱量低,這些優(yōu)勢保證了小車運行的可靠性。實物圖見圖3。
圖3 電機驅(qū)動模塊
選用MG996R金屬標(biāo)準(zhǔn)舵機作為本巡檢小車的舵機模塊,其速度慢、扭力大、精度高,性能穩(wěn)定附帶自鎖功能,確保在信號不穩(wěn)定因素下不會失控,實物圖見圖4。舵機的控制需要1個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5~2.5ms的角度控制脈沖部分,總間隔為2ms。本設(shè)計采用180°角度伺服,對應(yīng)的控制關(guān)系見表1。
圖4 MG996R 舵機
表1 控制關(guān)系
選用HC-SR04超聲波測距傳感器作為本巡檢小車的超聲測距模塊,其安裝方便、材料堅固、耐腐蝕、精度高、使用壽命長。實物圖見圖5。
圖5 HC-SR04超聲波測距傳感器
本設(shè)計選用PS2手柄,其是4軸12按鍵、雙高精度模擬搖桿設(shè)計,使操作更加便捷。實物圖見圖6。
圖6 PS2手柄
為了保證水泵試驗臺現(xiàn)場工作時各種突發(fā)狀況的發(fā)生,將巡檢小車的行走方式設(shè)計為手動和自動2種控制模式。手動控制采用與常見的遙控車類似的設(shè)計方案,將PS2手柄通過紅外信號接收器與單片機開發(fā)板相連。利用PS2手柄發(fā)出的信號來控制舵機的轉(zhuǎn)動,進(jìn)而改變機械臂的形態(tài)以實現(xiàn)相應(yīng)的目標(biāo),也可以通過2個開發(fā)板之間的串口通信實現(xiàn)PS2手柄對于電機的驅(qū)動。
自動控制采用紅外循跡模塊與超聲波測距模塊相結(jié)合的方案,紅外循跡模塊用于實現(xiàn)小車按照人為預(yù)設(shè)的軌跡行進(jìn),以實現(xiàn)循跡的目的;超聲波測距模塊用于對小車前方的距離進(jìn)行測算,但距離過小時,小車會逐漸減速直至停止,用于對于障礙物的規(guī)避。
3.2.1 工作原理
手動控制根據(jù)搖桿方向?qū)崿F(xiàn)小車的移動。自動控制通過按動手柄上的L3按鍵實現(xiàn)手動和自動模式的轉(zhuǎn)換,在自動控制時,只需要將小車的2個紅外循跡模塊置于軌跡線兩側(cè)即可實現(xiàn)自動的循跡避障功能。
3.2.2 手動控制程序設(shè)計
控制小車運動的信號主要采用2塊板之間的串口通信來實現(xiàn),其中2號板,用于讀取1號板搖桿位置改變的串行信號,即而通過控制L289N電機驅(qū)動模塊來控制電機轉(zhuǎn)動。
算法邏輯:1號板讀取PS2信號→發(fā)送信號給2號板→2號板讀取→控制電機轉(zhuǎn)動。示例代碼如下。
1號板:
void PS2_control(void) {
if (error == 1)
return;
if (type != 1)
return;
ps2x.read_gamepad(false, vibrate);
int Y2,X2,Y1,X1;
Y2 = ps2x.Analog(PSS_LY);
X2 = ps2x.Analog(PSS_LX);
Y1 = ps2x.Analog(PSS_RY);
X1 = ps2x.Analog(PSS_RX);
if (Y1 < 5 && X1 > 0 && X1 < 255)
{
Serial.print("#");
delay(5);
}
}
2號板:
void Up(){
digitalWrite(L1_IN2,HIGH);
digitalWrite(L1_IN1,LOW);
digitalWrite(R1_IN4,HIGH);
digitalWrite(R1_IN3,LOW);
analogWrite(pwm_L1,pwmspeed);
analogWrite(pwm_L2,pwmspeed);
}
void loop()
{
if(a==1&&Serial.available())
{
c=Serial.read();
switch (c)
{
case ‘#’: {
Up();
Serial.println("u");
break;
}
}
}
3.2.3 自動控制程序設(shè)計
小車的自動控制主要基于紅外循跡模塊與超聲波測距模塊的配合,通過開發(fā)板讀取到傳感器的數(shù)據(jù)并對其進(jìn)行處理與判斷,進(jìn)而通過輸出使能信號與PWM信號到L298N電機驅(qū)動模塊以改變電機轉(zhuǎn)動的方向與轉(zhuǎn)速,進(jìn)而實現(xiàn)循跡與避障,示例代碼如下。
傳感器模塊的信號讀?。?/p>
int x1,x2;
float distance=200;
x1=digitalRead(xj_1);
x2=digitalRead(xj_2);
digitalWrite(T_pin,LOW);
delayMicroseconds(2);
digitalWrite(T_pin,HIGH);
delayMicroseconds(10);
digitalWrite(T_pin,LOW);
int pwmspeed=int(pwmspeed_1*(double(distance)/
double(400)));
int pwmlowspeed=pwmlowspeed_2*(double
(distance/double(400)));
if(x1==1&&x2==0)
{
digitalWrite(L1_IN1,HIGH);
digitalWrite(L1_IN2,LOW);
digitalWrite(R1_IN3,HIGH);
digitalWrite(R1_IN4,LOW);
analogWrite(pwm_L1,pwmlowspeed);
analogWrite(pwm_L2,pwmspeed);
}
為了證明所編寫的控制代碼邏輯成立可行性,減少現(xiàn)場調(diào)試的工作量,分別進(jìn)行了2種方式的仿真模擬。
3.3.1 QuartusII仿真模擬
3.3.1.1 輸入輸出變量
通過VHDL語言,利用FPGA的知識,對于巡檢小車的整體進(jìn)行了脈沖波形信號的仿真模擬,輸入輸出的變量見圖7。
圖7 輸入輸出變量圖
Choose:用于選擇自動模式與手動模式,當(dāng)為高電平時為手動模式,當(dāng)為低電平時為自動控制模式。
clk_pwm,clk_time:2個時鐘信號,用于pwm調(diào)速。
distant:三位二進(jìn)制數(shù),用于模擬超聲波測距模塊讀取到的距離信號。
en_1,en_2:電機的使能信號,一高一低時電機可以轉(zhuǎn)動。
motor_1,motor_2:電機的輸出信號,采用pwm調(diào)速。
position:用于記錄運動方向(前后)的信號。
switch:四維二進(jìn)制數(shù),用于模擬PS2手柄的搖桿。
xj_1,xj_2:模擬2個紅外循跡模塊的信號。
3.3.1.2 仿真結(jié)果
仿真結(jié)果由調(diào)速、減速避障、循跡轉(zhuǎn)彎和手動控制4種。
調(diào)速:改變clk_pwm的頻率,觀察到motor_1與motor_2的占空比發(fā)生率變化,占空比的改變可以帶來1個周期內(nèi)平均電壓的改變,可以實現(xiàn)車速的改變,同理,僅僅改變一側(cè)的車速,即可實現(xiàn)對于轉(zhuǎn)彎的控制。仿真的波形如圖8所示。
圖8 調(diào)速的仿真結(jié)果
減速避障:控制clk_pwm的頻率不變,改變?nèi)欢M(jìn)制數(shù)distance的值,觀察到motor_1與motor_2的占空比發(fā)生了改變,仿真結(jié)果如圖9所示。
圖9 減速避障的仿真結(jié)果
循跡轉(zhuǎn)彎:改變其它變量不變,改變xj_1與xj_2的值,觀察到僅有1個電機在轉(zhuǎn)動,在實物上表現(xiàn)為小車轉(zhuǎn)彎。仿真結(jié)果如圖10所示。
圖10 循跡轉(zhuǎn)彎的仿真結(jié)果
手動控制:當(dāng)choose為高電平時,改變四位二進(jìn)制數(shù)switch的值,可以觀察到電機輸出前進(jìn)、左轉(zhuǎn)、右轉(zhuǎn)等形式,仿真結(jié)果如圖11所示。
圖11 手動控制的仿真結(jié)果
3.3.2 Protues 仿真模擬
考慮到僅利用QuartusII進(jìn)行仿真雖然可以得到預(yù)期的結(jié)果,但是波形圖不夠直觀反映小車的運動狀態(tài),設(shè)計時又采用了Protues對于自動控制部分進(jìn)行了仿真。通過改變超聲波測距模塊讀取到的距離信號,可以觀察到2個電機的轉(zhuǎn)速發(fā)生了變化,改變2個高線平開關(guān)(用于模擬循跡模塊的信號),可以觀察到,2個電機出現(xiàn)了轉(zhuǎn)速差,即實現(xiàn)了轉(zhuǎn)彎。利用Protues進(jìn)行仿真的電路如圖12。
圖12 仿真模擬電路圖
本文設(shè)計的水泵試驗臺巡檢小車,通過多次調(diào)試、改進(jìn),實現(xiàn)了在水泵試驗臺周圍智能循跡、自動避障和視頻監(jiān)測,并可通過人工遙控停留在重點區(qū)域進(jìn)行視頻監(jiān)測。使用Arduino平臺,能夠根據(jù)現(xiàn)場檢測工作的需要快速修改巡檢小車的程序代碼,使小車能夠更好地適應(yīng)不同檢測環(huán)境,代替了人工巡檢,提高了工作效率,降低了風(fēng)險。