汪淑贤,李 明,王 旬
(桂林电子科技大学 信息科技学院,广西 桂林 541004)
水下探测仪也称为无人水下潜水器,是一种在水下作业最具潜力的开发工具,具有运动控制、通信导航、实时反馈水下环境等功能[1]。由于水下环境的不确定性,人的潜水深度有限,目前水下机器人已成为海洋开发的重要工具。国外从20世纪20年代 开始现代潜水器的研制,并不断对其进行改造,目前研制了更多功能的水下机器人,如法国的“逆戟鲸”号,日本的R2D4和“海鲀3K”号,美国的REMUS和“UUV”号等,且REMUS6000能达到25~6 000 m的工作深度,代表了自主式水下探测器的最高水平[1]。文献[2]和文献[3]探讨分析了国内外各种水下机器人的研究现状和结构,为现在的深入研究提供了一定的帮助。
国内从2010年开始,水下机器人迅速发展,如“蛟龙”号载人潜水器、2014年青岛世园会海洋馆展览的“小蛟龙”号模型、“潜龙一号”和“潜龙二号”等。目前,很多IT公司也逐渐关注水下机器人的研究,不断增强水下机器人的娱乐功能和简单便携性,如2017年应用最新科技的“小海鳐”可以实现实时图传、诱鱼功能、探测鱼类等;在电影《功夫瑜伽》里也出现了小型便携的水下探测机器人。结合国内外水下机器人的研究进展,有研究学者对其进行了结构的改进。文献[4]为提升其低速航行时的机动性,提出了基于球面并联结构的无鳍舵矢量推进水下机器人;文献[5]为提高其机动性和可控性,构建了矢量喷水推进系统的多自由度水下机器人;同时,文献[6]也证明了矢量推进方式能有效提升水下机器人的定位能力;在文献[7]中,通过6路PWM信号对电机调速控制和12路正反转信号驱动改善了推进器的控制效果,并采用三子样优化算法完成水下探测仪的导航定位功能。根据已有对水下机器人推进器结构的改进,本文将螺旋桨通过无刷电机和无刷电调相结合形成推进器,并以Arduino Mega 2560最小系统为控制核心设计水下探测仪,有效实现了相关功能。
水下探测仪旨在实现水下的自由移动,实时传输水下状况至电子显示设备上,并能照明和诱鱼。本文首先通过DC-DC可调降压模块对水上和水下的设备供电,并能根据电路的需要进行降压、稳压;然后采用脉冲调制技术实现推进器的不同转速来供给动力。考虑到水下不同的环境,本文通过云台舵机摄像头观察水下状况以完成自由调节角度,并由Arduino串口通信实现水下远距离指令的发送与接收,继而通过传输稳定、效率高的电力载波通信模块,加以发射端和接收端的双绞线连接,构成整个水下探测仪控制流程图,如图1所示。
图1 系统控制流程图
水下探测仪系统的硬件结构包括Arduino Mega 2560最小系统、DC-DC可调降压模块、电力载波模块、继电器模块、有源双绞线传输器、推进器模块、摄像头云台、诱鱼灯模块等。
Arduino系统采用的是AVR单片机,最大的特点是具有54路数字输入输出(其中16路可作为PWM输出)、16路模拟输入和4个串口,且串口通信功能强大,能快速地与下一个Arduino端接通以进行串口通信[8-9],完成信息的传递。由于水下探测仪需要通过水下推进系统获得移动动力,才能完成自由移动,水上和水下设备间的距离相对较远。为了更好地远距离实现水下移动和传输水下设备采集的数据,本设计选择4路脉冲宽度调制PWM输出分别进行左推、右推、垂推、垂推,以完成方向的控制;同时选择Arduino串口进行通信,4个串口对交叉相连设备的发送端(TX)和接收端(RX)有特定选择,如表1所示。其中电脑与Arduino Mega 2560的USB接口相连,默认串口0,并选择串口3完成本设计所需的串口通信,通过相应函数即可完成串口的通信设置。
表1 Arduino Mega 2560的4个串口设置
DC-DC可调降压模块旨在调整各模块的工作电压以保护芯片正常运作,考虑到LM2596开关电压调节器具有线性和负载调节特性,LM可以在输入电压和输出负载给定的情况下,将误差降低为4%范围内,自我保护功能强。因此,本系统选择LM2596S DC-DC可调降压模块,输入电压要求3 V~40 V之间,输出电压直流1.5 V~35 V且电压连续可调,高效率最大输出3 A,可以在各个设备无对应电压电源时,调节出适合电路所需的电压。
本系统采用基于移频键控方式的第四代电力载波模块,一方面可以通过电缆线以载波的形式对电路模拟信号进行打包并传输,且无需架设网络,另一方面在系统正常工作时,能通过电阻值控制输出电流,达到电压保护和限制电流的效果,是本系统数据传输的首选模块。
推进器是水下探测仪在水下移动的重要组成部分,其包括浮力调整的载铁、防水的壳体、驱动电机、水上动力装置及设备、传动系统装置、螺旋桨等。其中浮力装置需要与配重之间达到平衡才能保证零浮力,以保证探测仪能在水下不同地方悬浮;水下动力装置由蓄电池供电,其好坏决定推进器的动能和水下工作时间,而水下控制设备需要根据推进器的运动方向和速度才能进行调节。故本文考虑将螺旋桨结合无刷电机和无刷电调形成推进器,能够更好地控制转速和转向。
实时传输视频图像是水下探测仪最重要的功能之一。考虑到水下探测仪的工作环境,加之双绞线本身拥有抗干扰能力强、传输距离远、传输质量好等优势,本文采用有源双绞线传输器作为视频图像传输的重要部件。通过输入设备和输出设备的接入完成相应的视频传输线路,如图2所示。
图2 视频传输线路
在图2中,由摄像机采集视频图像信息,根据差分传输原理,将该视频信号转换为幅度相等相位相反的信号,并连接到接收设备中,将两个信号的差值还原为不平衡信号,进而通过显示器设备加以显示。
通过上述硬件结构的组合,可以完成整个系统硬件形式的发射端和接收端,发射端输出的串口数据,经过双绞线传输,可在接收端打印出来。其中发射端由Arduino Mega 2560、电压检测模块、LM2596S DC-DC降压模块、电力载波通信模块、有源双绞线传输器模块、显示器等组成,如图3所示。接收端包括Arduino Mega 2560、LM2596S DC-DC降压模块、电力载波通信模块、有源双绞线传输器模块、推进器和摄像头等,如图4所示。
图3 系统发射端原理框图
图4 系统接收端原理框图
水下探测仪软件设计的整体流程图如图5所示。在启动机器人之后,需要对推进器、串口及LED灯进行设置。首先是对控制系统的初始化。若使得推进器控制摇杆工作,则在Arduino Mega 2560发送指令数据之前,需要对舵机的精确度、电调归零、串口的读取等进行初始化,且在开始读取旋转角度之时,经过Arduino上位机发送指令,接收到指令之后再回复一个应答信号。若Arduino上位机接收到该应答信号,则代表舵机的角度初始化实现,即可工作,并在再次接收信号时读取摇杆的位置,以驱动无刷电机转动。
图5 软件设计整体流程图
在初始化控制系统之后,将串口读数据设为bit,值为9 600,并将串口数据发送至接收端,接收端再从串口读取有效存储在串行缓冲区的数据。若接收的指令信息无法执行,则需检查线路并重新接收新的指令信息。
在将各个模块进行装配之后,通过软硬件调试形成完整的水下探测仪,如图6所示。首先在电池量充满的情况下,将水下系统放入耐压仓并检测密封性,用连接线将水下探测仪接在控制板脐带缆接口,串口与电脑相连接。启动电源、显示屏、探测仪和照明的开关,调整摄像头的最佳位置,完成云台转动角度和摄像头的测试。
图6 完整的水下探测仪模拟系统
为了验证系统的有效性,以学校内部湖水为测试场景,完成了如下功能调试:(1)根据最后接收串口信息记录的摇杆位置,以控制中心为起点,输出脉冲信号,通过控制线发送脉冲宽度调制(PWM)的电脉冲控制舵机,不断的PWM波使得舵机在某个角度有扭矩,以推动探测仪移动。同时测试得出电调归零值为1 470,由调速控制数值大小作用于舵机旋转的快慢,向前行进指令电压映射值若大于560,则向右前方行驶,若小于440,则向左前方行驶,否则直行。最终实现探测仪在1~5 m的水下探测和自由移动。由于直接拍摄水下探测仪前后、上浮下沉、加减速的照片效果不明显,本次调试以拍摄其移动视频为主,在此只展示了水下探测仪的左转和右转,如图7所示。在移动的过程中,考虑到水下的阻力作用,长时间工作的螺旋桨有可能会脱落,运行方向会产生部分偏移。(2)Arduino串口通信由摄像头采集信息,充分利用有源双绞线传输器的差分传输原理,将发射端信号转换成等幅度、极性相反的视频信号,传输至接收端中,原信号与之相减后的视频信号传输到电子设备显示屏上,即可完成实时的视频图像传输。(3)由继电器控制LED灯和诱鱼灯,且将诱鱼灯设置为蓝色光源,实现了水下照明和对鱼群的引诱呼唤,如图8所示。
图7 水下探测仪的移动
图8 照明与诱鱼功能
本文基于Arduino Mega 2560最小系统,通过LM2596S DC-DC可调降压模块给系统电路供电稳压,将螺旋桨与无刷电机和无刷电调相结合形成推进器,并结合电力载波模块、摄像头等,共同构建了一款水下智能探测仪,实验证明该探测仪能够有效地进行1~5 m水下移动,实现实时图传、照明诱鱼功能。本设计能与当前的前沿科技紧密联系,具有重要的现实研究意义。但本设计仍属于实验成品,对于探测的水下深度、机器工作续航时间、推进器螺旋桨的稳固、电调归零值的精确度等问题仍需要深入研究和改进。