基于STC15W 的水下机器人控制系统设计

2022-05-06 13:32朱万浩章盼梅孔令棚张紫凡
电子设计工程 2022年8期
关键词:舵机单片机无线

朱万浩,章盼梅,孔令棚,张紫凡

(1.广州城市理工学院 电气工程学院,广东广州 510800;2.广州城市理工学院机械工程学院,广东广州 510800)

水下机器人是一种在深水极限环境工作的智能机器人,能潜入水中代替人工完成某些操作,又称为水下无人机。目前它主要用于水下探测、水下救援等,已成为开发海洋的重要工具之一。近年来,随着智能控制技术、水下导航定位技术、通信技术、水下探测技术的不断进步,水下机器人得到了快速发展,应用范围也越来越大。

当前有部分学者对水下机器人控制系统进行研究,以寻求稳定性更好、可靠性更高的水下机器人,以服务于各领域。文献[1]设计了一台应用在渔业养殖领域的低成本模块化水下观察机器人,用于观察水下养殖环境,提高渔业养殖的自动化水平。文献[2]为解决水下侦察、探测等困难,开发了一款能潜水探测的智能机器人,设计了系统总体方案和各功能模块,用实验验证了方案的可行性。文献[3]针对当前军用水下机器人价格昂贵、设计复杂的缺点,设计了一台价格便宜、结构简单的水下机器人。文献[4]面对深海设备检修作业时的困难,提出了水下机器人的总体模块化设计,并用虚拟仿真技术进行仿真测试。文献[5]为解决水下机器人传感器经常出现故障的难题,提出一种小波变换的传感器故障检测方法,提高了水下机器人的检测效率。

为了解决当前水下探测、水下救援等难题,文中利用STC15W 单片机、无线通信模块、摄像头模块、舵机模块等控制技术,设计了一台智能控制的水下机器人。

1 系统总体方案

系统总体方案设计分为硬件电路设计和软件设计两大部分。设计水下机器人前,首先要确定水下机器人的目标功能,然后通过对比择优法,选择方案,实现设计目标[6-7]。

水下机器人工作原理:首先,遥控器上的单片机通过A/D 模数转换读取摇杆上的角度信号,经过一系列分析转换后,把角度信号和其他的附加指令打包成一长串数据,通过SPI 协议写入无线模块中;然后,遥控器的无线模块通过一系列指令进行模块间的通信,将数据发送给水下机器人的无线模块;接着,水下机器人在接收到数据后,一方面会对发送模块产生应答,另一方面发送命令到水下机器人的中央处理器;中央处理器收到指令后,通过SPI 协议读出该无线模块所传输的数据,根据预先设定的程序进行运算;最后,中央处理器把陀螺仪模块上读取的实时姿态信号转换成电信号,以脉冲宽度调制方式发送给电调和舵机,从而实现水下机器人的智能控制。系统总体架构如图1 所示。

图1 系统总体架构

2 硬件电路模块设计

水下机器人硬件电路由STC15W 单片机、摄像头模块、陀螺仪模块、电机控制模块、无线模块、舵机模块等组成。

2.1 STC15W单片机设计

水下机器人选用STC15W4K48S4 单片机作为中央处理器。该单片机是新一代增强型单片机,是我国自主生产的第一款具有国际先进水平的单片机。它具有性价比高、抗干扰性强、运行速度快,且能与MCS-51 单片机兼容等优点,目前在市场上得到广泛的应用[8-9]。STC15W4K48S4 单片机功能包含大容量程序存储器、集成MAX810 专用复位电路、EEPROM Data Flash、看门狗、7 组8 位并行端口、A/D 比较器、内置系统ISP 监控程序、定时器0/1/2/3/4 超高速四串口、可当D/A 使用的8 路10 位PWM、高精度集成R/C时钟等。除上述功能外,它还具有大容量片内EEPROM、ISP/IAP。单片机的功能框图如图2 所示。

图2 STC15W4K48S4单片机的功能框图

2.2 电调模块设计

电调的作用是输出三路相位相差为120°的脉冲信号,用以驱动无刷电机旋转。电调通过检测输入脉冲的宽度PWM 来改变电调输出信号的频率,输出到电机,最终实现改变无刷电机转速的目的。当前,电调在车辆模型、航海模型、船舶模型、飞碟模型、飞盘模型等领域得到广泛的应用。电调工作时需配合电机同步使用,它可识别单片机所传达的控制信号,对电机进行控制驱动。通过电调驱动电机,实现了电调在各领域的广泛应用[10-11]。

电调分为有刷电调和无刷电调,设计选择无刷电机作为水下机器人的动力源,因此需选择无刷电调与电机搭配使用。通常情况下,电调除控制无刷电机转向外,还需控制转速。在实际运行中,转速通过脉冲宽度调制(PWM)技术进行控制。PWM 技术实质上是通过改变高电平时间所占总周期的比例,用高频率的PWM 方波将原来的直接导通方式替换掉,也即通过控制PWM 的实际导通时间达到控制无刷电机转速的目的。电调输入的是直流电,设计选用锂电池或稳压电源为其供电。电调输出的是三相脉动直流,因此可以将它与电机的三相进行连接。可以通过改变电调与电机的连接方式改变电机转向。无刷电调的工作原理如图3 所示。

图3 无刷电调的原理图

2.3 舵机模块设计

舵机又称为伺服电机,与其他的普通直流电机相比,舵机具有如下特点:一是舵机存在最大旋转角度,只可控制舵机在一定角度范围内旋转;二是舵机具有反馈控制系统,通过反馈角度信息实现精确控制与保持角度的目的;三是舵机控制精度并不太高、位置稳定性偏低[12-13]。但由于舵机结构紧凑、体积小、控制原理简单和性价比高,因此文中使用舵机控制水下机器人的摄像模块。舵机通过速度传感器、角位置传感器进行反馈,形成一个闭环控制系统。根据速度传感器和角位置传感器的灵敏度不同,舵机作出不同精度的速度和角度反应。舵机工作时,读取返回值的大小,并与预设值进行对比后,将其存在的偏差值回馈给系统,从而达到闭环控制的目的,如图4 所示。

图4 舵机闭环控制框图

2.4 无线模块设计

无线模块NRF24L01的通信是通过SPI通信双向协议来进行的,该模块使用全球统一的通信频段,在2.4~2.5 GHz的频率下工作[14-15]。无线模块NRF24L01是目前一款发展较好、功能较齐全的通信模块,虽然内置了调制器、解调器等器件,但工作电流损耗却不大。当无线模块处于接收模式时,可接收6 路来自不同信道的信号,但发送信号的频道必须相同。发送过来的数据可同时发送给同一个正处于接收模式下的无线模块,各个通道数据使用的地址并不相同。当无线模块对其6 路数据进行接收、识别并记录地址后,会向各原发送模式下的无线模块发送应答信号,发送与接收应答的环节是通过通道0 实现的,如图5 所示。

图5 无线模块星形网络拓扑图

3 程序设计

单片机软件开发技术与硬件技术是相互促进、共同发展的。单片机编程方式由一开始的汇编语言到现在的高级语言,发展非常迅速。目前主流的单片机开发软件有Keil MDK、Code Sourcery、GNU Tools、Green Hills 等。虽然Keil 系统软件中没有中文版本,但因为它具有强大的功能和良好的兼容性,因此受到广大设计人员的喜爱[16]。当前许多高校的学生或科技公司的设计人员都使用Keil 软件进行编程。对于很多初学者,只需要掌握C 语言以及Keil 的基础操作,就可完成程序的最终编写。

3.1 主程序设计

水下机器人的主程序设计步骤:单片机由外置电源上电后,内部系统进行初始化,单片机I/O 口呈高阻态。单片机将所有I/O 口初始化为准双向口,初始化无线模块、清除状态寄存器缓存等。无线模块初始化后将其设置成接收模式,设置状态寄存器接收数据的地址,接着判断NRF24L01 无线模块是否接收到数据,若接收到数据,则读取状态寄存器一个字节;若没有接收到数据,则返回。然后程序判断是否接收到正确的数据,若数据正确,则从RX FIFO 将数据读出传递给单片机,由单片机根据数据对三相直流无刷电机正转、反转等进行控制;若数据不正确,则返回,如图6 所示。

图6 水下机器人主程序流程图

3.2 无线模块程序设计

无线模块的程序设计步骤:NRF24L01 无线模块在接收到数据后,引脚RX_RD 置1,同时拉低IRQ 的电平,此时单片机进入外部中断状态。单片机读取状态寄存器数据,将读取的数据放入sta 中,判断中断标志位RX_RD 是否成功读取数据。若读取数据成功,则调用SPI_Read_Buf 函数,确定读取的寄存器、地址、数组以及位数,并将数据存取至RX_BUF;若读取数据成失败,则返回重新读取数据。然后,程序将最初读取状态寄存器的数据写入状态寄存器中,完成中断复位操作并跳出外部中断,恢复进入外部中断程序前的现场,继续向下执行其他程序,如图7所示。

图7 无线模块设计流程图

4 系统测试

系统测试是设计的最后一个环节,是保证水下机器人稳定可靠运行的关键。在水下机器人软件系统设计完成之后,进行系统测试。测试前首先要进行硬件电路的检测和组装,然后再进行软件程序调试[17]。

4.1 硬件电路测试

硬件电路测试时,首先逐个检查无线通信模块、电机模块、陀螺仪模块、遥控器模块等外观是否完好、电路板有无虚焊;然后通电测试能否正常工作。各个模块测试通过后,把它们组装成一个整体进行工作,检测能否正常开机、电机等模块能否正常工作;最后把水下机器人投入水中,检查有无漏水等情况。水下机器人实物模型如图8 所示。

图8 水下机器人实物模型

4.2 程序调试

开启水下机器人和遥控器的电源,把水下机器人投入水中,进行程序调试。旋转遥控器的“向左”和“向右”手柄,水下机器人向左和向右运行;旋转“向前”和“向后”手柄,水下机器人做出前进和后退动作;点击“摄像头开关”,可在手机屏幕上实时监控水中环境[18]。水下机器人遥控手柄实物如图9 所示。

图9 水下机器人遥控手柄

5 结束语

基于STC15W 单片机的水下机器人控制系统搭载了摄像头模块、无线通信模块、陀螺仪模块等,实现了水下环境的实时监控,解决了水下探测、水下救援的困难。水下机器人自试运行以来,系统稳定性高、可靠性好,没有发生漏水和无法控制等情况。

该文的亮点是利用单片机和嵌入式技术设计了一台水下机器人,为技术人员开发水下机器人和学生学习单片机、嵌入式系统等技术提供参考。

猜你喜欢
舵机单片机无线
《无线互联科技》征稿词(2021)
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
无线追踪3
基于ARM的无线WiFi插排的设计
一种PP型无线供电系统的分析
基于dsPIC单片机的飞艇舵机控制实现
超音速舵机保护器