当前位置: 首页 > news >正文

STM32F103+MPU6050两轮自平衡小车保姆级搭建指南(附完整代码)

STM32F103+MPU6050两轮自平衡小车保姆级搭建指南(附完整代码)

两轮自平衡小车作为嵌入式系统开发的经典项目,融合了传感器技术、控制算法和硬件设计,是电子爱好者进阶学习的绝佳选择。本文将手把手带你完成从元器件选型到代码调试的全过程,即使你是刚接触STM32的新手,也能跟着这份指南做出稳定站立的小车。

1. 硬件选型与电路设计

1.1 核心器件清单

平衡小车的硬件架构需要兼顾性能和成本,以下是经过验证的器件组合:

模块类型推荐型号关键参数
主控芯片STM32F103C8T672MHz Cortex-M3,64KB Flash
姿态传感器MPU6050三轴加速度计+陀螺仪
电机驱动TB6612FNG双路1.2A H桥驱动
直流电机N20减速电机6V/200RPM,带编码器
电源管理AMS1117-3.33.3V LDO稳压器

1.2 电源电路设计

稳定的电源是系统可靠运行的基础,建议采用两级稳压方案:

  1. 输入7.4V锂电池
  2. 通过DC-DC降压至5V(供电机驱动)
  3. 经AMS1117转换为3.3V(供MCU和传感器)

注意:MPU6050对电源噪声敏感,建议在3.3V输出端增加10μF钽电容滤波。

1.3 关键接口连接

// STM32引脚分配示例 #define MPU6050_I2C I2C1 // PB6-SCL, PB7-SDA #define MOTOR_PWM_A PA8 // TIM1_CH1 #define MOTOR_DIR_A PB12 #define ENCODER_A PA0 // TIM2_CH1

2. 机械结构搭建技巧

2.1 车体框架制作

使用3D打印或亚克力板材切割时需注意:

  • 重心高度控制在轮轴上方10-15cm
  • 电机安装需保证双轮完全同轴
  • 电池应安装在靠近轮轴的位置

2.2 电机安装要点

  • 使用金属支架固定减速电机
  • 车轮与电机轴之间加装橡胶垫片防滑
  • 编码器码盘与传感器间距保持1-2mm

3. 软件架构与核心算法

3.1 系统初始化流程

void Hardware_Init(void) { // 1. 时钟配置 RCC_Configuration(); // 2. 外设初始化 MPU6050_Init(); Motor_PWM_Init(); Encoder_Init(); // 3. 中断配置 NVIC_Configuration(); }

3.2 姿态解算实现

采用互补滤波融合加速度计和陀螺仪数据:

  1. 原始数据采集
MPU6050_GetData(&acc, &gyro);
  1. 角度计算
# 伪代码示例 pitch_acc = atan2(accY, accZ) * 180/PI pitch_gyro = pitch_prev + gyroX * dt pitch = 0.98*pitch_gyro + 0.02*pitch_acc

3.3 PID控制算法

typedef struct { float Kp, Ki, Kd; float error, integral, derivative; } PID_Controller; float PID_Update(PID_Controller* pid, float setpoint, float input) { pid->error = setpoint - input; pid->integral += pid->error; pid->derivative = (pid->error - pid->last_error); return pid->Kp*pid->error + pid->Ki*pid->integral + pid->Kd*pid->derivative; }

4. 调试与优化实战

4.1 传感器校准步骤

  1. 将MPU6050水平静置
  2. 连续采样100次取平均值作为零偏
  3. 存储校准参数到Flash

4.2 PID参数整定方法

按照以下顺序调整参数:

  1. 先设Ki=0, Kd=0,增大Kp直到小车出现小幅振荡
  2. 逐步增加Kd抑制振荡
  3. 最后加入Ki消除静差

提示:使用蓝牙模块实时发送姿态数据到上位机可显著提高调试效率。

4.3 常见问题排查

  • 小车往一侧倾倒:检查电机极性是否接反
  • 剧烈抖动:降低PID的Kp值
  • 反应迟钝:确认MPU6050的采样率是否≥100Hz

5. 完整工程代码解析

项目采用模块化设计,主要包含以下文件:

├── Drivers │ ├── mpu6050.c # 传感器驱动 │ ├── tb6612.c # 电机驱动 ├── Algorithm │ ├── filter.c # 滤波算法 │ ├── pid.c # 控制算法 └── Application ├── balance.c # 主控制逻辑 └── communication.c # 无线通信

关键数据结构设计:

typedef struct { float pitch; // 当前俯仰角 float target; // 目标角度(通常为0) int16_t motorA; // 左电机输出 int16_t motorB; // 右电机输出 } BalanceState;

在完成基础功能后,可以尝试添加超声波避障或手机蓝牙遥控等扩展功能。调试过程中建议先用支架固定小车,待PID参数初步稳定后再进行自由站立测试。

http://www.jsqmd.com/news/625471/

相关文章:

  • 搭建dcmtk的demo服务器
  • 零基础学黑客,必懂的5个核心概念(新手入门不迷路)
  • 实时计算框架
  • 【AI原生研发能力评估权威指南】:SITS2026首次公开5级成熟度模型与企业自评速查表
  • PHP反序列化安全核心重点总结
  • 虚拟机检测工具VMDE:3个实用技巧与核心功能深度解析
  • 3步极速解除极域电子教室控制:JiYuTrainer完整使用指南
  • Java JIT 编译优化策略
  • SITS2026圆桌闭门纪要首次公开(仅限技术决策者阅):AI原生团队组建的3个致命盲区与人才漏斗重建模型
  • @GetMapping @PostMapping @DeleteMapping @PutMapping
  • 工具技术中的工具选择工具集成与工具维护
  • 别再只比“会不会写代码”:我用 5 款 AI 编程工具实测需求理解、改 Bug 和项目接手能力
  • 瑜伽馆主必备!用雯雯的后宫-造相Z-Image快速生成宣传素材实战
  • ESP-C3实战指南:利用VSCode与内置JTAG实现高效调试
  • Python 爬虫限速策略实现
  • 金三银四看网络安全:2026年求职跳槽全指南(附薪资+岗位 +面试干货)
  • 仅限首批200家AI基建团队获取:NIST认证的AI原生事务SLA白皮书(含7类故障注入测试模板)
  • 智能投顾中的资产配置与组合优化模型
  • [AI/应用/MCP] MCP Server/Tool 开发指南恿
  • 2026年西城区离婚律师事务所推荐及服务解析 - 品牌排行榜
  • 20251910 2025-2026-2 《网络攻防实践》第3次作业
  • JimuReport 积木报表 v2.3.2 版本发布,免费的可视化报表和大屏设计
  • 大模型推理成本骤降63%的5个反直觉策略:2026年已验证,错过即淘汰
  • 51单片机项目省电实战:除了掉电模式,你的STC89C52还能这样‘偷懒’降功耗
  • hadoop+Spark+django基于大数据技术的高校岗位招聘平台与数据可视化分析(源码+文档+调试+可视化大屏)
  • 2026年全国新能源抓钢机、定制化工程机械与物料抓取设备深度横评选购指南 - 精选优质企业推荐榜
  • 2026年海淀区离婚律师事务所推荐及服务参考 - 品牌排行榜
  • 3分钟快速完成Axure RP汉化:免费中文语言包完整指南
  • 如何用RP-Soundboard让你的Teamspeak语音聊天变得生动有趣
  • 2026微信公众号编辑器深度选型指南:告别低效排版的实战手册 - 行业产品测评专家