宋 林,吴尹红
(攀枝花学院,四川 攀枝花 617000)
近年来,随着江河湖泊的开采、水底调研探索以及军事等领域的运用,无人水下航行器(Unmanned Underwater Vehicle,UUV)得到越来越广泛的应用。UUV进行江海湖泊水底世界的探索需要各个传感器反馈的数据综合判断水下环境来反馈自身环境信息和调整自身状态。UUA搭载的采集设备,可对水底环境进行采样,通过采集到的环境信息经过反馈处理,可进行地图绘制,也可根据IMU惯性测量单元检测出当前的机体状态。本设计采用四翼螺旋桨结构,可飞出水面方便观测回收。
本文研究的无人水下航行器以STM32单片机为主控芯片,搭载MS5803温度压力传感器,以温度压力传感器计算温度、深度与海拔。电量计芯片HLW8032测量电压计算电量,避免电量不足无法回收。为避免在失联情况下,UUA发生碰撞损坏航行器,本设计还增加了障碍检测设计。对于UUA的姿态控制采用MPU6050六轴陀螺仪配合STM32主控芯片进行姿态控制与机翼故障检测。LoRa模块负责传输采集到的姿态深度、速度等数据和指令的接受。其整体硬件思路如图1所示。
图1 整体硬件思路
本文选用STM32F446RET6芯片为微控制单元(Microcontroller Unit,MCU),采用ARM框架Cortex-M4内核、180 MHz主频、50个I/O接口、128 kB RAM、512 kB Flash,3个高精度的12位ADC配有16个通道,拥有4个USART、2个速度达11.25 Mbit/s的UART、4个速度达45 Mbit/s的SPI、2个CAN、SDIO、HDMI等接口。与其它单片机相比,STM32价格较便宜且性能高,性价比极高,同时具有方便设计的配套软件,且生成代码易维护。
MPU6050具有X轴、Y轴、Z轴加速度计和X,Y,Z三轴角加速度计,可以输出三轴加速度,三轴角速度。其中,INT引脚接口为中断引脚。MPU6050中,时钟引脚SCL与数据传输引脚SDA连接控制芯片的I2C接口,控制芯片可以通过I2C通信协议读取数据。MPU6050除SDA与SCL两个接口外,还有XDA与XCL接口,这两接口是用于连接地磁计,配合地磁计组合成九轴惯性测量单元。姿态控制与故障检测都需靠MPU6050计算出机体的俯仰角,横滚角与偏航角。
市场上电子调速器通常一端接电源,一端接电机,剩余三根线分别为5 V输出,GND与信号线,不需要再用5 V降压芯片进行降压。为避免电压不足造成的电池损坏与UUA电量不足无法回收,则需要进行电量计算,市场上对于电池电量的计算常采用测量电压确定电量的方法,因电压与电量非线性关系需对电压与电量关系进行量化后一一对应。本文所采用的为HLW8032计量芯片,其优点是可通过UART通信直接读取数据,相比于HLW8012工作电流更高但其功能更为丰富,使用更为方便。
为保证水下UUV航行安全、数据采集与控制等需求外,还需要对当前压强进行实时测量。UUV实时位置与距离水底位置信息,无人水下航行器常采用回声测距原理计算测量,如单/双频单波束声呐、多波束声呐等[1],但考虑到成本与用途本文则采用MS5803压力传感器进行深度测试。压强信息的采集主要利用压强较为敏感的传感器,将从外界采集到的信息用ADC转换器,转换为数字信号。在经过一系列的复杂运算,得到需要的压强值,再通过MCU读取出测量所得压强与温度,最后通过压强计算,可以得到机器人目前的下潜深度,因此也可被称为深度传感器[2]。其中,深度可由压强公式计算得出。
姿态解算算法各有特点,选择合适的姿态解算算法是得到更为准确的姿态信息的关键,也可由姿态矩阵计算得出所需的载波姿态和方位距离等重要信息,这也是惯性导航算法的重要数据来源过程[3]。MPU6050官方推出了自动数字处理,即DMP库。与欧拉角法、四元数法相比,DMP库可通过移植直接读取姿态角,而不需要烦琐的调试参数工作[4]。MPU6050配合地磁计能完整的输出四元数,除输出三轴角速度与三轴加速度外,MPU6050还可输出芯片温度值,本文所设计的UUA其姿态解算便是采用了DMP库。
四翼无人水下航行器受力分析,如图2所示。无人水下航行器四翼安装4个无刷电机,改变这4个无刷电机螺旋桨旋转速度改变四翼的升力F1,F2,F3,F4。当四翼电机旋转时,因螺旋桨的造型,四翼上电机螺旋桨旋转时会产生一个与旋转相反的转矩T1,T2,T3,T4。如果其四翼同时旋转时,旋转方向相同,则四翼上螺旋桨产生的转矩会使机身旋转。为使航行器不产生自转,因此,使对角的两翼螺旋桨正转或者反转,另一对螺旋桨与之相反则可以使四翼产生的转矩相互抵消。通过改变其中一对对角两翼无刷电机的转速,从而改变机体运动姿态[5]。当F1=F3>F2=F4时,则UUA逆时针旋转,反之正转;当F1=F2>F4=F3时,则UUA向y轴正方向运动,反之y轴负方向运动;当F1=F4>F2=F3时,则UUA向x轴正方向运动,反之x轴负方向运动。
图2 受力运动分析示意
UUV控制部分解码出从惯性测量单元模块收集到的姿态数据之后,从解码出的结果对姿态进行相应的调整,即通过控制模块输出PWM信号到电调部分,对无刷电机进行转速调节。此时,需要通过PID算法进行调节输出需要的控制量,从而避免电机因本身质量分布不规则导致的姿态无法达到预定状态。在实际运用中,把这种比例、积分和微分通过计算反馈线路控制输出量的方式,称为PID算法。PID控制的优势在于结构简单数学原理清晰、易于实现且性能优良,常用的公式为:
式中:e(t)为期望值与当前状态值的偏差;u(t)为PID调节后的系统控制输人量;Kp指比例系数;K1积分系数;KD微分系数。
本文研究设计的水下无人航行器对于故障检测也做了相应设计,当其中某一机翼破损时,当前姿态平衡会被打破。例如,当F1对应机翼损坏时,当前四翼两对角螺旋桨旋转时保持的平衡会被打破不仅出现倾斜且机身会顺时针旋转。当PID算法连续调节多次且误差依旧太大,则可认为机翼发生破损,通过姿态解算,根据旋转方向可知是哪一对角出现故障,根据误差倾斜角度可判断出其中损坏的机翼。
若信号丢失,MCU输出PWM信号给予UUA搭配舵机,通过舵机的转动带动超声波模块,通过超声波模块检测出障碍避免损坏UUA。对于复杂地形,如水底洞穴探索,若因信号丢失而原路返回,则需要考虑电量是否充足,中途是否发生障碍变故,根据实际情况出发,若无变故则当入水时将运行轨以数据结构“图”的形式储存,若无意外则通过记录入水时起始位置与当前的位置,最后通过Floyd算法进行求解。若UUA信号丢失返回时原路出现障碍,则须通过超声波模块检测障碍,同时重新记录路径再通过算法计算出最优路径。
本次设计使用的无线通信模块选用E220-400T30S模块,其理论通信距离为10 km,发送长度为200 Byte,更加适用于传输较大的数据。相比于其他无线模块,可在其现有功能上进行二次开发,如调节空中速率,更改发送功率,进行分包设定等优点。
对于上位机主要功能是通过MCU自带的ADC采集到的摇杆与拨盘电压值,再将这些电压值等分处理设置成对应的方向,油门等信息,然后将处理后的信息发送给下位机。同理,下位机也可将采集到的信息进行处理,因无线通信模块接收到数据即可根据设置好的发送机制将数据发送出去,无须考虑起始位和完成标志位,但因数据较多,仍需将所有的信息设置地址加信息的格式发送给无线通信模块,方便对数据的还原。因水下通信的局限性,须考虑延长信号接收线至水面。
本文通过对无人水下航行器的设计研究,其电路原理,如图3所示。无人水下航行器以高性能的STM32F446RE微控制器为核心的处理系统,四翼采用4个无刷电机为动力源,搭配六轴陀螺仪以Floyd算法配合超声波模块检测障碍在失联情况下自动返航,同时,利用陀螺仪mpu6050对自身四翼破损情况进行检测,其模型和实物,如图4所示。通过该方案成功的设计了无人水下航行器。
图3 航行器电路原理
图4 模型和实物