钱平 周宣宇 胡建梅 杨彩蝶 于欢成
摘要:该文设计了一款可实现上浮下潜、转弯等功能小型的ROV。该系统是基于Arduino Mega 2560为核心控制器,控制六个推进器实现ROV的基本运动,并搭载水下LED和水下摄像头作为视频传输模块,以数字压力传感器作为水深探测,以及搭载温度传感器进行温度的测试,所有信号通过有线脐带缆与上位机通信。该小型ROV可实现基本运动和视频图像的传输。
关键词: ROV;Arduino Mega 2560;信号传输
中图分类号:TP242 文献标识码:A
文章编号:1009-3044(2022)02-0074-02
近年来,随着海洋科学的不断发展,国家层面也对海洋事业的发展不断重视,并且海底蕴藏着丰富的矿产、海洋生物等重要资源。因此人类对海洋或者是水下的开发有着可持续发展的重要意义。而水下机器人作为专用的水下工具,在水下作业有着不可或缺的地位。特别是水下有缆线的机器人(Remotely Operated Vehicle, ROV)也成为水下开发的重要工程技术装备。而小型的ROV可以作为水下工程(比如水质监测、水下探测等)有着至关重要的作用。所以小型的ROV可以作为开放平台,为后续的工程作业提供开放的重要载体。
1 整体的硬件系统设计
1.1整体系统组成概况
硬件的整体控制系统框图如图1所示,其中采用主要的控制器是一款Arduino的单片机,Arduino 2560是基于ATmega的微控制芯片。该微控制器是AVR单片机,最大特点是54路数字输入/输出端口(其中15个可以作为PWM输出),16路模拟输入端口,4路UART串口,16MHz的晶振,USB连接口,电池接口,ICSP头和复位按钮。Mega2560使用Arduino IDE环境编程,简单明了。通过引脚6、7、8、12、45、46六个引脚提供输出PWM波控制相应的六个推进器,实现ROV的基本运动。电源模块通过变压模块给主芯片和其他部件供电。数字压力传感器作为系统的压力传感器,温度传感器作為测试系统内部温度的模块。水下的LED灯和水下摄像头组成水下探测模块。所有信号通过以太芯片网口连接脐带缆传至上位机,达到信号传输的目的。
1.2推进器模块
推进器是ROV的重要动力模块,本系统采用的都是直流无刷电机作为推进器的推进电机,螺旋桨采用的是三叶螺旋桨。根据流体力学原理,本系统采用经典的六个推进器模式,示意图如图2所示,其中前后两个推进器分别连接D12和D6两个I/O口,用于控制整个ROV的上浮下潜。左右四个推进器分别连接D7、D8、D45、D46四个I/O口,并且互相配合用于控制整个ROV的前进后瑞以及左转右转。推进器上的L标志表示逆时针旋转表示正浆,R表示顺时针旋转表示反浆,前后左右相对方向的三对推进器是不同的旋转方式是因为软件设计都是两两控制,且用于正反浆间周向力的相互抵消。
1.3传感器模块
本系统涉及的传感器都是安装在核心舱内部测试系统参数的传感器,分别为用于测试水深和温度数字压力传感器,用于测试水深和温度一体化数字传感器测试水温。压力传感器采用的是MS5803,该传感器是一款高分辨率的专业测量高度的新一代传感器,具有SPI和I²C 总线接口。压力传感器模块内含标定系数,该标定系数具有线性关系,便于单片机数据处理。该模块提供的是一个较为精确的24位数字的压力运作模式。该模块通用度较高、通讯协议较为简单,也适合本系统采用的单片机,并且不需要在内部寄存器编程,压力信号稳定性高。本系统采用的是SPI通信来获得数据,通过气压值来换算成水的深度。另一个传感器则为温度传感器,本系统采用的是DHT11温度传感器,该传感器也是一款数字传感器,并且含有温度和湿度集合在一起,可以同时测量温湿度。DHT11传感器和所采用的单片机之间只采用单总线的模式相连,彼此之间通信只需要占用一个通用的输入输出口,本系统采用了D28引脚与温湿度传感器相连。传感器接收到的数据通过单总线传送给单片机,接收到的数据也会通过校验方式保证数据的正确性。
1.4视频传输模块
本系统采用的水下LED探照灯最大亮度100流明,最大射程100m,防水深度达50m。LED探照灯信号线与D44引脚相连,受单片机输出高低电平控制。摄像头采用的是OpenMV4 H7智能模块,可以采用Python语言编辑脚本,调用库函数方便控制摄像头,视频数据是通过串口传输给单片机。
以太网芯片W5500是一款性能比较高的芯片,里边是采用硬件的TCP/IP协议栈,采用硬件协议栈的好处是利用硬件的逻辑电路实现软件的协议簇。不需要再通过特殊的软件编程与单片机连接,并且采用该方式传输信号时,单片机的硬件电路也变得比较简单,降低了硬件成本,使用这种方案和设计使得两者相连变得快捷、效率高。传感器信息传输、单片机与上位机沟通通过脐带缆进行通信。
2 系统的软件设计
因为主控芯片采用了Arduino Mega 2560,所以开发环境是Arduino 开发板专用的IDE。Arduino开发板是开源的平台,具有开发方便、使用简单、编程简易等优点,并且属于C 语言的开发环境。图3为软件设计流程图,上电后小型ROV完成整个系统包括电量等自检功能,接下来是利用void ROV_CONTROL:: PWM_init(void) 函数进行PWM信号初始化;利用void ROV_SENSOR::DHT11_GetData(TempHumiMsg_t *temphum)温度传感器初始化,利用float ROV_SENSOR::GetCurrent(void) 进行数字压力传感器初始化;利用void ROV_NETWORK::Udp_Init(void)函数进行W5500网口初始化。之后系统处于待机状态等待上位机发出命令信号,通过对上位机信号的解析后进行ROV的上浮下潜、前进后退、左转右转、传感器参数的获取以及视频信号的获取等相关操作。
3 实验室水池测试
经过软硬件的调试,在实验室水池进行测试,下水之前首先是防水的准备,各个接口都必须打上热熔胶以防漏水使得内部电路损坏,其次是小型ROV整个系统的配重,需要达到能自然悬浮在水中。做好防水和配重工作后,通过上位机的操作实现小型ROV的上浮下潜、前进后退、左转右转等基本运动功能,并且水深。温度等参数也通过有线的脐带缆上传至上位机。如图4所示为实验室测试的上位机显示界面,其中获取到水温等参数数据以及摄像头的视频数据。
4 结束语
本文设计的是基于Arduino的小型ROV系统,利用传统的六推进器模式满足ROV的基本运动,并且搭载温度传感器和压力传感器测试相关参数,还用摄像头模块实现未污染水源的探测功能。并通过脐带缆与上位机通信实现信号的双向通信,实现上位机控制ROV的运动以及传感器数据传输至上位机显示。本系统还预留相关接口,还可搭载更多水质传感器或者红外传感器,为水中工程作业的实现提供参考思路和借鉴。
参考文献:
[1] 汪淑贤,李明,王旬.基于Arduino Mega 2560的水下探测仪设计与实现[J].信息技术与网络安全,2020,39(4):48-52.
[2] 覃小兵,杨孟鑫.基于STM32控制的水下检测与作业机器人研究[J].智能城市,2020,6(3):193-194.
[3] 郭爱龙,柏星江,金永芳,等.ROV潜水器及水质检测系统设计[J].现代信息科技,2020,4(3):164-166.
[4] 高芬.一种小型消费级水下机器人的设计与实现方法[J].机电信息,2019(20):115-116.
[5] 张欢欢,田军委,熊靖武,等.水下机器人运动控制系统设计与分析[J].计算机系统应用,2018,27(12):83-89.
【通联编辑:唐一东】
2882501705251