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