一种水泵试验台巡检小车行走算法的设计

2023-02-06 06:59范志华刘宇彤杨光苏成贵
农业与技术 2023年2期
关键词:循迹试验台舵机

范志华刘宇彤杨光苏成贵

(1.吉林省农业机械研究院,吉林 长春 130022;2北京航空航天大学机械工程及自动化学院,北京 100191)

引言

水泵是一种通用机械,其应用范围非常广,几乎存在国民经济建设的所有行业中,社会需求量大。提升水泵质量,对我国经济建设的持续发展具有一定的促进作用[1]。在实验室内利用试验台测定水泵性能参数,是一种检测水泵综合性能非常有效的方式。

水泵闭式试验台通常由台架、电机、联轴器、扭矩传感器、入口测压管路、出口测压管路、伸缩节、变径管路、直管路、支撑架、流量计、阀门、稳流密封罐、控制系统等部分组成[2],各部分之间通过法兰、弯头连接。水泵启动后,管路中存在一定压力,所以试验台周围要有试验人员随时观察管路的泄漏量与承压能力。连接件的飞出或者高压水从管路中窜出,都将对试验人员的人身安全造成危害。本文提出了一种安装了网络摄像头的能够实现手动控制和自动控制2种方式行走的巡检小车算法,小车可以在试验台周围智能循迹、自动避障,也可以由检测人员遥控小车行走在特定区域。从而实现试验人员坐在办公室中观察摄像头传过来的影像信息就可以了解水泵运行现场的状况,保障了人员安全,减少了工作量。

1 系统方案设计

1.1 功能设计

巡检小车采用Arduino UNO R3开发板进行开发设计,集成了智能循迹、自动避障、遥控回收和视频监测等功能。小车主要由行走和监测2部分组成,行走部分由红外循迹模块、电机驱动模块、舵机模块、超声测距模块构成,监测部分由视频监测模块构成。巡检小车的操作系统安装在手机上,操作手机APP就能实现对巡检小车的遥控和水泵试验台现场工作情况的视频监测等功能。巡检小车实物图如图1所示。巡检小车主要解决了在水泵测试过程中,检测人员在试验台周围长时间走动观察水泵运行状态,管路泄漏情况,台架的稳定性等过程中容易造成人身安全危害的问题。

图1 巡检小车实物图

1.2 控制系统设计

Arduino UNO R3开发板是本巡检小车的主控中心。R3开发板采用ATMEGA328P单片机作为核心处理器,耗电量少、成本低、安全性较高、简单灵活、便于上手,是目前Arduino平台上最常见的一款产品[3]。其接口丰富,有14个数字I/O口(包含6个PWM输出),6个模拟I/O口,1个USB口,1个频率为16MHz的晶体振荡器,同时支持SPI,IIC,UART串口通信[4]。这些特点,使其完全能够满足本巡检小车的设计需求。

本巡检小车的程序设计是运用Arduino语言在电脑上完成编译,并通过开发板上的USB口将程序下载到中央处理器中,由中央处理器运行程序使小车完成其相应的功能。小车共采用2块Arduino UNO R3,1块主要负责指令信号、传感器数据的采集以及对于舵机的驱动;1块主要负责通过输出使能信号以及PWM信号,控制L298N电机驱动模块进而驱动小车进行多样的运动。两板之间通过串口通信相连接,用于在手动控制时传递手柄的信号,控制电机的运动。同时,还实现了对小车摄像头云台的控制,完成了摄像头从不同角度来观察水泵试验台的各个关键部位的运行情况。为了减少视频传输延时,小车摄像头不经过中央处理器,而是通过WIFI直接对接到手机 APP的后台端口[5]。

2 行走部分模块选择

2.1 红外循迹模块

选用智能小车避障传感器模块作为红外循迹模块,该传感器模块对环境光线适应能力强,可以通过调节电位器上的旋钮改变探测距离,具有抗干扰能力强、容易安装、操作便捷等特点[6]。该模块有效探测距离2~30cm,检测角度35°。实物图见图2。

图2 红外循迹模块

2.2 电机驱动模块

本巡检小车选用L298N直流步进电机驱动板作为电机驱动模块,其可以控制直流电机的方向和速度。大容量滤波电容、续流保护二极管是这款驱动板的一个特点,并且其驱动能力强,发热量低,这些优势保证了小车运行的可靠性。实物图见图3。

图3 电机驱动模块

2.3 舵机模块

选用MG996R金属标准舵机作为本巡检小车的舵机模块,其速度慢、扭力大、精度高,性能稳定附带自锁功能,确保在信号不稳定因素下不会失控,实物图见图4。舵机的控制需要1个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5~2.5ms的角度控制脉冲部分,总间隔为2ms。本设计采用180°角度伺服,对应的控制关系见表1。

图4 MG996R 舵机

表1 控制关系

2.4 超声测距模块

选用HC-SR04超声波测距传感器作为本巡检小车的超声测距模块,其安装方便、材料坚固、耐腐蚀、精度高、使用寿命长。实物图见图5。

图5 HC-SR04超声波测距传感器

2.5 手柄

本设计选用PS2手柄,其是4轴12按键、双高精度模拟摇杆设计,使操作更加便捷。实物图见图6。

图6 PS2手柄

3 行走方式设计

3.1 方案设计

为了保证水泵试验台现场工作时各种突发状况的发生,将巡检小车的行走方式设计为手动和自动2种控制模式。手动控制采用与常见的遥控车类似的设计方案,将PS2手柄通过红外信号接收器与单片机开发板相连。利用PS2手柄发出的信号来控制舵机的转动,进而改变机械臂的形态以实现相应的目标,也可以通过2个开发板之间的串口通信实现PS2手柄对于电机的驱动。

自动控制采用红外循迹模块与超声波测距模块相结合的方案,红外循迹模块用于实现小车按照人为预设的轨迹行进,以实现循迹的目的;超声波测距模块用于对小车前方的距离进行测算,但距离过小时,小车会逐渐减速直至停止,用于对于障碍物的规避。

3.2 程序设计

3.2.1 工作原理

手动控制根据摇杆方向实现小车的移动。自动控制通过按动手柄上的L3按键实现手动和自动模式的转换,在自动控制时,只需要将小车的2个红外循迹模块置于轨迹线两侧即可实现自动的循迹避障功能。

3.2.2 手动控制程序设计

控制小车运动的信号主要采用2块板之间的串口通信来实现,其中2号板,用于读取1号板摇杆位置改变的串行信号,即而通过控制L289N电机驱动模块来控制电机转动。

算法逻辑:1号板读取PS2信号→发送信号给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 自动控制程序设计

小车的自动控制主要基于红外循迹模块与超声波测距模块的配合,通过开发板读取到传感器的数据并对其进行处理与判断,进而通过输出使能信号与PWM信号到L298N电机驱动模块以改变电机转动的方向与转速,进而实现循迹与避障,示例代码如下。

传感器模块的信号读取:

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);

}

3.3 仿真模拟

为了证明所编写的控制代码逻辑成立可行性,减少现场调试的工作量,分别进行了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的占空比发生率变化,占空比的改变可以带来1个周期内平均电压的改变,可以实现车速的改变,同理,仅仅改变一侧的车速,即可实现对于转弯的控制。仿真的波形如图8所示。

图8 调速的仿真结果

减速避障:控制clk_pwm的频率不变,改变三位二进制数distance的值,观察到motor_1与motor_2的占空比发生了改变,仿真结果如图9所示。

图9 减速避障的仿真结果

循迹转弯:改变其它变量不变,改变xj_1与xj_2的值,观察到仅有1个电机在转动,在实物上表现为小车转弯。仿真结果如图10所示。

图10 循迹转弯的仿真结果

手动控制:当choose为高电平时,改变四位二进制数switch的值,可以观察到电机输出前进、左转、右转等形式,仿真结果如图11所示。

图11 手动控制的仿真结果

3.3.2 Protues 仿真模拟

考虑到仅利用QuartusII进行仿真虽然可以得到预期的结果,但是波形图不够直观反映小车的运动状态,设计时又采用了Protues对于自动控制部分进行了仿真。通过改变超声波测距模块读取到的距离信号,可以观察到2个电机的转速发生了变化,改变2个高线平开关(用于模拟循迹模块的信号),可以观察到,2个电机出现了转速差,即实现了转弯。利用Protues进行仿真的电路如图12。

图12 仿真模拟电路图

4 结语

本文设计的水泵试验台巡检小车,通过多次调试、改进,实现了在水泵试验台周围智能循迹、自动避障和视频监测,并可通过人工遥控停留在重点区域进行视频监测。使用Arduino平台,能够根据现场检测工作的需要快速修改巡检小车的程序代码,使小车能够更好地适应不同检测环境,代替了人工巡检,提高了工作效率,降低了风险。

猜你喜欢
循迹试验台舵机
基于DFT算法的电力巡检无人机循迹检测系统设计
含齿隙弹载舵机的全局反步模糊自适应控制
滚动直线导轨副静刚度试验台设计
基于单片机的智能循迹小车的设计
基于dsPIC单片机的飞艇舵机控制实现
智能差分循迹小车设计
基于高速同步485总线通信的多通道舵机控制器设计
基于MC9S12XS128处理器的智能循迹小车分析研究
防爆变频器加载试验台的设计
基于云模型的舵机同步控制