水中机器人电控方案设计
一、机器人三视图
二、电控方案
2.1 识别及控制设计思路
功能 | 设计思路 |
---|---|
水中姿态稳定: | 采用陀螺仪实时检测当前姿态信息,输入到主控单片机,经过PID算法,输出到四路电调控制电机,维持姿态稳定。 |
水深高度控制: | 使用水深传感器,检测水压,输入到主控单片机,PID算法处理后,叠加输出到姿态电机之上,维持水深在目标值。 |
推进控制: | STM32单片机主控,输出PWM到电调控制电机转动,进而控制机器人前进方向。 |
管道路线识别: | 使用视觉处理器,二值化处理水下画面,识别管道位置,反馈角度环以及水平偏移位置环,通过串口发送到主控单片机,通过PID算法,使机器人沿管道平稳前进。 |
障碍块识别: | 使用视觉处理器,运行检测算法,发送识别结果到主控单片机,点亮相应LED灯。 |
调试及用户交互: | 使用蓝牙模块用于调试与启动,同时搭载一个OLED屏幕用于进行数据显示。 |
2.2 器件选择及实施方案
模块 | 方案 |
---|---|
陀螺仪: | 使用MPU6050模块,采用互补滤波对原始数据进行处理,计算出当前的ROLL轴和PITCH轴数据。 |
水深传感器: | 使用MS5837-60BA水深传感器,使用IIC读取数据,该模块数据精度高,水下检测稳定性高,适合本场景使用。 |
电调与电机: | 使用ZTW水冷双向无刷电调,以及正反桨电机,该电调适用于极端环境使用,具备双向推进,性能良好,搭配正反桨,两者相互抵消运行过程中电机的转动惯量。 |
视觉处理器: | 使用OPENMV模块,模块性能稳定,适合一般场景下的视觉识别,识别水下管道以及障碍物精确度高,通过Python编程,编程难度低。 |
主控单片机: | 使用STM32F103C8T6芯片,该芯片存储器FLASH容量是64KB,RAM容量是20KB, 37个通用I/O口,4个定时器,2IIC,2SPI,3*USART,系统时钟频率最高可到72MHz。 |
蓝牙模块: | 使用HC-05模块,成本低廉,可替换性高。 |
OLED模块: | 使用7脚12864模块,通过SPI通信,传输速率快,成本低,编程简易。 |
报警灯: | 使用WS2812 RGB彩灯模块,单总线编程,程序简单,灯光效果好。 |
三、程序设计
水中机器人的程序设计基于uC/OS-Ⅲ实时操作系统进行开发,左边为程序的整体流程图,程序流程中,我们使用UCOS创建了5个主要任务,具体任务的功能如下:
- 串口任务:串口任务中串口二用于与OpenMV通信,接收识别的水管位置信息以及障碍物的形状信息,同时串口一外接了蓝牙用于启动整体系统。
- RGB任务:RGB任务使用了 WS2812彩灯模块,采用单总线的方式编程,任务中通过传递的不同信号量进行不同颜色点灯操作。
- OLED任务:接收其他任务需要显示的消息,将其显示在OLED上。
- 电机控制任务: 读取陀螺仪当前的角度数据,带入角度环输出到电调上,维持机器人的平衡,同时通过上位机传过来的角度数据,维持机器人前进方向,读取水压数据,带入PID算法,维持水深。
- 水压检测任务: 通过IIC读取水压传感器数据,将压强数据发送给其他任务。
程序流程图如下:
四、硬件设计
电路原理图如下图所示,团队考虑水下机器人的主板容易损坏,设计思路为设计一块底板,预留接口,连接其他模块,方便替换,图中预留的接口分别为STM32F103C8T6最小系统板接口,上位机通信接口,水深传感器接口,OLED显示模块接口,6050模块接口,蓝牙模块接口,开关,以及舵机PWM接口,电源供电方式采用电调自身降压到5V给单片机进行供电。以下为各部分模块的介绍:
- STM32F103C8T6模块:两路排母接口,连接C8T6最小系统板, 引出各个IO口通过底部PCB连接到各个模块,进行控制。
- 上位机通信串口,采用4脚排针,引出串口二的VCC、GND、RX、TX与OpenMV连接。
- OLED排针接口,与主控板上硬件SPI相连接。
- MPU6050陀螺仪模块,使用模拟IIC与开发板连接。
- 蓝牙模块通信串口,使用排母将单片机串口二的RX、TX与蓝牙连接在一起。
- 六路PWM输出接口,信号端与C8T6主控TIM1和TIM3的PWM输出连接。
电路原理图:
版权声明:本文为CSDN博主「嵌入式up笔记」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45396672/article/details/118267629
暂无评论