站内搜索
发作品签到
有刷平衡车开源
专业版

有刷平衡车开源

简介

自己的毕设,学了两个月搓出来的平衡车小板,用来验证串级pid的直立算法

简介:自己的毕设,学了两个月搓出来的平衡车小板,用来验证串级pid的直立算法
复刻成本:20

开源协议

GPL 3.0

创建时间:2026-06-02 18:33:16更新时间:2026-06-08 09:45:19

描述

【开源毕设/项目】基于STM32F103C8T6与TB6612FNG的串级PID直立平衡小车

自己的毕设,学了两个月搓出来的平衡车小板,用来验证串级pid的直立算法,有演示视频:https://www.bilibili.com/video/BV1CZ9ZBTELb/
代码和3d模型在附件

本项目是一个基于STM32F103C8T6单片机制作的迷你两轮平衡小车,包含原理图PCB3D打印外壳全开源软件算法。核心算法采用串级PID(双闭环) 进行直立控制,非常适合单片机初学者、控制理论入门以及毕业设计参考。

🧩 项目亮点

  • 纯国产/易购买器件:STM32F103C8T6 + TB6612FNG(经典低成本方案)。
  • 核心算法:使用 串级PID + 互补滤波,实现稳定的自平衡效果。
  • 硬件开源:提供Altium Designer/立创EDA源文件,修改方便。
  • 3D打印结构:提供小车底壳、电机支架、电池卡扣等STL模型。
  • 快速上手:提供完整的Keil工程代码和烧录教程。

🔧 硬件方案详解 (基于原理图)

1. 主控单元 (MCU)

  • 型号:STM32F103C8T6
  • 最小系统:8M晶振 + 复位电路,支持SWD调试接口。

2. 电机驱动

  • 驱动芯片:TB6612FNG (双路直流电机驱动)
  • 优点:相比L298N,TB6612的发热量更小,响应频率更高,支持大电流。可直接接入锂电池供电。

3. 电源管理

  • 输入:7.4V - 12V 锂电池。
  • 5V稳压:R3TPS5430DDAR(高效率DC-DC降压芯片),为大功率电机驱动提供稳定5V。
  • 3.3V稳压:RT9013-33GB(低压差线性稳压器),为MCU和传感器提供低噪3.3V。

4. 姿态传感器 (通常配合板载I2C接口)

  • 板载预留I2C接口,推荐使用 MPU6050 六轴陀螺仪/加速度计。

5. 人机交互

  • 按键:SW1 (PB3), SW2 (PB4), SW3 (PB5)
    • 用途:控制小车启停、切换调试模式、PID参数加减调整。
  • 指示灯:提供系统状态LED。

6. 引脚分配(核心)

  • MCU - 电机A (左/右)
    • PB14, PB15 (PWM/方向)
    • PB12, PB13 (PWM/方向)
  • 传感器:支持I2C (PB10/PB11) 连接MPU6050。

🧠 软件与算法设计 (核心部分)

1. 姿态解算:互补滤波 (Complementary Filter)

为了获得平滑且无漂移的角度,软件中使用互补滤波融合陀螺仪与加速度计数据:
Angle = 0.98 * (Angle + GyroY*dt) + 0.02 * AccelAngle

2. 控制算法:串级PID (Cascade PID)

为什么不只用单级PID?
单级PID直接调节电机输出来平衡车身,响应慢且容易过冲。本项目采用内环+外环模式:

  • 外环 (角度环):输入为目标角度(0°)和当前实际角度。输出为目标角速度
  • 内环 (角速度环):输入为上面计算出的目标角速度和实测角速度。输出直接为电机PWM值

调参心得:一定要先调内环P值(使车能僵直地阻止你推它),再调外环P值(让车快速回正),最后加一点D值抑制震荡。

3. 避震与保护代码

  • 死区补偿:解决电机在极小PWM下不动的问题。
  • 限幅保护:PWM输出上限保护电机不烧坏。
  • 电池过放检测:通过ADC读取电池电压(如有),低电量时自动停机。

🖨️ 3D打印结构件 (基于此PCB)

本小车的3D打印件包含(需自行组装):

  1. 车架:固定PCB和电池和电机。

注:附件中包含 xxx.stlxxx.step 源文件,可根据个人电机尺寸调整。


🚀 快速上手 & 复现指南

  1. 准备物料
    • 本PCB打样 * 1。
    • STM32F103C8T6 * 1、TB6612FNG * 1、MPU6050 * 1。
    • N20或GA12电机 * 2(带编码器非必需,纯位置/速度控制)。
    • 电池组2s/3s * 1。
  2. 组装
    • 焊接好板子 -> 安装MPU6050 -> 安装电机 -> 连接电源。
  3. 烧录程序
    • 使用ST-Link连接SWD接口。
    • 打开 Keil_Project/ 目录下的工程,编译并下载。
  4. 试车
    • 打开开关 -> 放置在地面上 -> 等待MPU6050初始化完毕 -> 轻推小车观察是否平衡。

💡 常见问题 (FAQ)

  • Q:小车一直往一边倒怎么调?
    • A:调整板子的物理重心,或者通过软件给PID增加一个机械零点补偿值
  • Q:电机发出嗡嗡声且剧烈震荡怎么办?
    • A:这是因为PID参数P值过大。请降低角速度环(内环)的P参数。
  • Q:遥控控制怎么实现?
    • A:你可以在代码中添加HC-05蓝牙模块(在串口1/UART上),通过把上位机发送的速度值叠加到电机总输出上即可实现。

📺 演示视频

https://www.bilibili.com/video/BV1CZ9ZBTELb/

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
平衡车主体.STL
4

附件

序号文件名称下载次数
1
平衡车主体.SLDPRT
6
2
BalanceCar.rar
10
3
平衡车主体.STL
4
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航