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