RoboCon考核题——scilwb

0到入门环境搭建

【[稚晖君同款]使用Clion优雅开发STM32[瀚文]】 www.bilibili.com/video/BV1ft...

笔者已将代码上传github仓库

github.com/lwbscu/Robo...

考核题目

踩坑

过程记录

js 复制代码
#b站up主源代码
# choose st-link/j-link/dap-link etc.
#adapter driver cmsis-dap
#transport select swd
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f4x.cfg]
# download speed = 10MHz
adapter speed 10000
js 复制代码
#笔者自己的代码
source [find interface/stlink.cfg]
transport select hla_swd

# 使用检测到的实际芯片ID
set CPUTAPID 0x1ba01477

source [find target/stm32f1x.cfg]

# 降低适配器速度提高稳定性
adapter speed 1000

# 复位配置
reset_config none separate

# 注意:移除了 init/targets/halt 命令
# 这些命令应该由 OpenOCD 在运行时执行,而不是在配置文件中

STM32项目文件详细解释


📊 完整文件修改频率总结

文件类型 文件名 修改频率 主要用途 典型修改内容
头文件 main.h 🟡 中等 程序声明 添加函数声明、宏定义
头文件 stm32f1xx_hal_conf.h 🟢 经常 功能配置 启用/禁用HAL模块
头文件 stm32f1xx_it.h 🟡 中等 中断声明 添加中断处理函数声明
源文件 main.c 🔴 最频繁 主程序实现 初始化、主循环逻辑
源文件 stm32f1xx_it.c 🟡 中等 中断实现 中断服务程序实现
源文件 自定义.c文件 🔴 最频繁 功能实现 具体功能模块代码

TB6612双路驱动模块连接指南

🔌 硬件连接图

STM32F103C8T6 ↔ TB6612连接

STM32电机控制系统引脚分配

scss 复制代码
**从电机控制接线**

STM32引脚        →    TB6612引脚       →    功能说明
------------------------------------------------
PA8(TIM1_CH1)   →    PWMA            →    从电机PWM速度控制
PA9             →    AIN1            →    从电机方向控制1  
PA10            →    AIN2            →    从电机方向控制2
PB0             →    STBY            →    TB6612使能控制(高电平工作)


**编码器反馈接线**

STM32引脚        →    编码器          →    功能说明
------------------------------------------------
PA0(TIM2_CH1)   →    从电机编码器A相  →    从电机位置反馈
PA1(TIM2_CH2)   →    从电机编码器B相  →    从电机位置反馈
PB6(TIM4_CH1)   →    主电机编码器A相  →    主电机位置反馈
PB7(TIM4_CH2)   →    主电机编码器B相  →    主电机位置反馈

**用户控制接口**

STM32引脚        →    外设            →    功能说明
------------------------------------------------
PC13            →    模式按键(下拉)   →    控制模式切换
PC14            →    正转按键(下拉)   →    正转方向设置  
PC15            →    反转按键(下拉)   →    反转方向设置

**串口通信接线**

STM32引脚        →    USB转串口模块    →    功能说明
------------------------------------------------
PA2(USART2_TX)  →    USB转串口RX     →    发送数据到VOFA+
PA3(USART2_RX)  →    USB转串口TX     →    接收VOFA+命令

**TB6612电源接线**

电源            →    TB6612引脚       →    说明
------------------------------------------------
+5V(STM32)     →    VCC             →    逻辑控制电源
+7.4V(锂电池)   →    VM              →    电机驱动电源
GND(公共地)     →    GND             →    系统地线

**编码器电源接线**

电源            →    编码器          →    说明
------------------------------------------------
+5V            →    编码器VCC       →    编码器工作电源
GND            →    编码器GND       →    编码器地线

**从电机接线(A通道)**

TB6612引脚      →    从电机          →    说明
------------------------------------------------
AO1            →    电机正极        →    电机输出A+
AO2            →    电机负极        →    电机输出A-

8.18/0/06

完整的VOFA+命令控制表(含位置跟随功能)

按钮名称 VOFA+命令格式 参数值 具体功能说明
基础速度PID参数
Kp pid:kp,%f\n 任意浮点值 设置速度环PID比例增益参数
Ki pid:ki,%f\n 任意浮点值 设置速度环PID积分增益参数
Kd pid:kd,%f\n 任意浮点值 设置速度环PID微分增益参数
位置PID参数
pos_Kp pos_pid:kp,%f\n 任意浮点值 设置位置环PID比例增益参数
pos_Ki pos_pid:ki,%f\n 任意浮点值 设置位置环PID积分增益参数
pos_Kd pos_pid:kd,%f\n 任意浮点值 设置位置环PID微分增益参数
🆕跟随PID参数
follow_Kp follow_pid:kp,%f\n 任意浮点值 设置跟随环PID比例增益参数
follow_Ki follow_pid:ki,%f\n 任意浮点值 设置跟随环PID积分增益参数
follow_Kd follow_pid:kd,%f\n 任意浮点值 设置跟随环PID微分增益参数
控制模式设置
control_mode control_mode:%f\n 0.0=按键控制 1.0=VOFA+控制 切换控制模式
control_type control_type:%f\n 0.0=速度控制 1.0=位置控制 2.0=串级控制 🆕3.0=位置跟随控制 切换控制类型(新增跟随模式)
运动控制
TARGET_SPEED speed:%f\n 任意浮点值 直接设置目标速度值(转/秒),自动切换到速度控制模式
POSITION_CONTROL position:%f\n 任意浮点值 直接设置目标位置值(圈数),自动切换到位置控制模式
CASCADE_CONTROL cascade:%f,%f\n 位置值,速度值 设置串级控制目标(位置,速度),自动切换到串级控制模式
🆕跟随控制
FOLLOW_CONTROL follow\n 无参数 启动位置跟随控制模式,从电机跟随主电机位置
档位控制
speed_mode speed_mode:%f\n 0.0=0.5转/秒 1.0=1.0转/秒 2.0=2.0转/秒 设置速度档位,自动切换到速度控制模式
position_mode position_mode:%f\n 0.0=1圈 1.0=10圈 2.0=50圈 设置位置档位,自动切换到位置控制模式
cascade_mode cascade_mode:%f\n 0.0=1圈@0.5转/秒 1.0=10圈@1.0转/秒 2.0=50圈@2.0转/秒 设置串级控制档位,自动切换到串级控制模式
基础控制
DIR dir:%f\n 0.0=正转 1.0=反转 设置电机旋转方向
ENABLE enable:%f\n 0.0=禁用 1.0=启用 电机使能控制,启用或禁用电机
系统功能
RESET reset\n 无参数 复位所有PID积分项和位置累计值
INFO info\n 无参数 查询系统当前状态和参数信息

📊 数据输出格式(CH0-CH15:数据监控通道)

通道 通道名称 数据类型 单位 说明
CH0 Slave_Target_Speed 浮点值 rps 从电机目标速度
CH1 Slave_Current_Speed 浮点值 rps 从电机当前速度
CH2 Slave_Target_Pos 浮点值 turns 从电机目标位置
CH3 Slave_Current_Pos 浮点值 turns 从电机当前位置
CH4 PWM_Output 浮点值 0-1000 PWM输出值
CH5 Speed_PID_Error 浮点值 rps 速度PID误差
CH6 Position_PID_Error 浮点值 turns 位置PID误差
CH7 Speed_Kp_Current 浮点值 - 当前速度Kp参数
CH8 Speed_Ki_Current 浮点值 - 当前速度Ki参数
CH9 Speed_Kd_Current 浮点值 - 当前速度Kd参数
CH10 Position_Kp_Current 浮点值 - 当前位置Kp参数
CH11 Position_Ki_Current 浮点值 - 当前位置Ki参数
CH12 Position_Kd_Current 浮点值 - 当前位置Kd参数
CH13 Control_Type_Status 整数值 - 控制类型(0=速度,1=位置,2=串级,3=跟随)
CH14 Direction_Status 整数值 - 方向状态(0=正转,1=反转)
CH15 🆕Master_Position 浮点值 turns 主电机位置(跟随监控)

提示词

js 复制代码
我使用的是TB6612双路驱动模块带稳压版,STM32C8T6单片机,vofa+ 1.3.10进行串口传输仿真,使用STM32CubeMX和Clion联合来进行编译

💬 结语

这个电机控制项目不仅完成了RoboCon的考核要求,更重要的是通过实践掌握了现代嵌入式开发的完整流程。从环境搭建到硬件连接,从算法实现到调试优化,每一步都是宝贵的学习经历。

特别是位置跟随控制功能的创新实现,展现了对控制系统的深入理解。希望这个项目能为后续的机器人开发奠定坚实基础,也希望这份经验分享能帮助到其他同学。

项目亮点:

  • ✨ 完整的现代化开发工具链
  • 🎯 四种控制模式无缝切换
  • 🚀 创新的位置跟随功能
  • 📊 专业的数据可视化调试
  • 🔧 工程化的代码设计

如果你对项目有任何问题或建议,欢迎在GitHub仓库中提出Issue或PR,让我们一起学习进步!


作者 :scilwb
项目时间 :2024年8月
GitHubRoboCon_lwb
技术栈:STM32 + CLion + VOFA+ + PID控制

相关推荐
点灯小铭3 小时前
基于STM32单片机智能RFID刷卡汽车位锁桩设计
stm32·单片机·汽车·毕业设计·课程设计
bai5459364 小时前
STM32 软件I2C读写MPU6050
stm32·单片机·嵌入式硬件
逼子格7 小时前
AT89C52单片机介绍
单片机·嵌入式硬件·51单片机·硬件工程师·硬件工程师真题·at89c52·器件手册
Wallace Zhang13 小时前
STM32 - Embedded IDE - GCC - 显著减少固件的体积
stm32·单片机·嵌入式硬件
fengfuyao9851 天前
STM32如何定位HardFault错误,一种实用方法
stm32·单片机·嵌入式硬件
爱学习的颖颖1 天前
EXTI外部中断的执行逻辑|以对射式红外传感器计次为例
单片机·嵌入式硬件·exti中断
AI精钢1 天前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网
etcix1 天前
implement copy file content to clipboard on Windows
windows·stm32·单片机
谱写秋天1 天前
在STM32F103上进行FreeRTOS移植和配置(STM32CubeIDE)
c语言·stm32·单片机·freertos