两轮平衡小车,为了进一步研究机器人相关的运动平衡核心产品系统Vibe Coding

我要开发同款
Pro_EmbedC2026年10月09日
3阅读

技术信息

语言技术
C++、C、C#
系统类型
MacOS、Linux、Windows
行业分类
机器人、人工智能
参考价格
1000

作品详情

行业场景


项目来源:原文件源码
行业分类:机器人 / 智能硬件
行业场景:
主要面向嵌入式教学实训、电子科创竞赛、移动机器人算法验证场景程序员客栈。两轮平衡底盘是移动机器人的经典实验载体,用来验证姿态解算、PID 闭环运动控制,可为巡检机器人、小型移动机器人底盘开发提供算法测试平台。
业务场景(解决什么产品问题):
解决移动机器人姿态稳定控制的验证需求;传统的开发缺少低成本实验平台,本项目搭建一套可调试的两轮自平衡系统,完成角度、速度双闭环控制,用来调试运动控制算法,适合学生、创客做二次开发与算法调试验证程序员客栈。
功能介绍:
基于 STM32 单片机,读取 MPU6050 陀螺仪加速度计,互补滤波解算车身倾角;采用双环 PID 算法实现车体直立平衡;编码器采集电机转速做速度闭环;支持前进后退转向;串口输出姿态、转速数据;代码模块化,便于修改调试参数。
项目实现:
使用 C 语言开发,实现传感器数据读取、姿态滤波、PID 控制器、PWM 电机驱动、串口数据输出;完成整车调试,工程可直接编译运行,代码附带注释。
备注:仅软件代码开发,不承接 PCB 硬件打样、量产业务。
简短

功能介绍


本项目基于 STM32 实现两轮自平衡小车,划分传感器采集、姿态解算、控制算法、电机驱动、数据交互五大功能模块,主要功能如下:
传感器采集模块:读取 MPU6050 陀螺仪、加速度计原始数据,获取小车角速度与加速度信息;读取电机编码器脉冲信号,采集电机实时转速。
姿态解算模块:对传感器原始数据做互补滤波,过滤噪声干扰,解算出小车车身实际倾斜角度。
双环 PID 控制模块:角度环 PID 维持车身直立平衡,速度环 PID 控制小车行进速度;可调试 PID 参数,实现直立、前进、后退、转向运动。
电机驱动模块:输出 PWM 信号控制电机驱动板,调节电机转速与正反转,执行平衡控制输出。
串口交互模块:通过串口向外输出车身倾角、电机转速、PID 输出等运行数据,方便调试、观察运行状态。
代码模块化设计:各功能相互解耦,方便修改参数、二次开发,工程可直接编译运行,关键代码带有注释。

项目实现

项目实现(直接复制粘贴,适配程序员客栈表单|STM32 两轮平衡小车)
我负责的具体任务
独立完成整套软件代码设计与调试工作:
完成 MPU6050、编码器底层驱动编写,实现传感器原始数据读取;
实现互补滤波算法,对加速度计、陀螺仪数据融合,解算车身倾斜角度;
设计角度环 + 速度环双 PID 控制器,完成参数整定调试,实现车体自平衡;
编写 PWM 电机驱动逻辑,控制电机正反转与输出功率;
开发串口打印模块,输出姿态、转速、PID 中间变量,用于线下调试;
代码模块化拆分,接口封装,添加代码注释,完成工程整体联调。
注:硬件机械结构、PCB 不在本人负责范围内。
技术栈
主控:STM32 单片机
编程语言:C 语言(标准库开发)
外设:I2C(MPU6050)、TIM 定时器(PWM 输出、编码器计数)、USART 串口
算法:互补滤波、双环 PID 闭环控制
项目架构
采用模块化分层软件架构:
底层驱动层:传感器驱动、定时器、串口、电机 PWM 驱动,负责硬件外设读写;
算法处理层:传感器数据滤波、姿态解算、PID 控制器运算;
应用业务层:运动逻辑控制,接收算法输出,下发控制指令给电机驱动;
调试交互层:串口数据输出,用于查看变量、调试参数。
各模块之间通过函数接口调用,模块解耦,修改算法不会改动底层驱动,便于后续二次开发。
实现亮点
采用角度‑速度双闭环 PID 控制,分别负责车身直立和行进速度,平衡效果稳定;
使用互补滤波对 IMU 数据做融合,抑制陀螺仪漂移、加速度计噪声,提升角度输出可靠性;
软件分层模块化设计,驱动、算法、业务逻辑相互隔离,方便修改 PID 参数、更换硬件平台;
串口完整输出关键运行变量,不需要仿真器也可以快速调参,调试效率高;
代码附带详细注释,可读性好,适合二次学习与二次开发。
实现难点
MPU6050 原始数据噪声大,单纯直接读取角度抖

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论