目录

一、平衡车全链路问题(按顺序编排)

1.车怎么知道自己要倒了?

(1). IMU(硬件传感器)

(2). DMP (硬件算法:内置姿态解算算法)

总结图中的逻辑:

2.车怎么把自己扶起来?——电机+直立环PD

1. 核心原理:电机 + 直立 PD(比例-微分)控制 (反向推)

2. 什么是“直立 PD”?

3. 为什么只用 PD 就够了?

3.车为什么不会自己乱跑?——编码器+速度环PI(比例-积分)控制

1. 核心逻辑:从“角度”到“速度”的跨越

2. 关键硬件:编码器 (Encoder)

3. 什么是“速度 PI”?

4. 如何实现“不让它乱跑”?

4. 车怎么听话?——蓝牙 +转向环+三环混合(直立环PD、速度环PI、转向环)

1. 蓝牙 (Bluetooth):让车“听懂人话”

2. 转向 (Steering):让车“改变方向”

3. 三环混合 (Three-loop Mixing):让车“一心多用”

5.怎么调出来:整体调优——最后一步,也是最难的一步

一、 节拍 (Step / Rhythm)

二、 调参 (Parameter Tuning)

三、 坑 (Pitfalls / Common Mistakes)

总结

 二、平衡车工作原理与开发流程

1.传感器感知:

MPU6050——负责看车身

编码器——负责看轮子。速度环不看编码器,就不知道车到底有没有在跑

2.控制算法(决策)

3.电机驱动(执行)

4.左右电机(动力)

5.车身姿态变化


学习内容:调电机、PID控制算法

应用:平衡车,四轴飞行器,机器人


一、平衡车全链路问题(按顺序编排)

1.车怎么知道自己要倒了?

  • (1). IMU(硬件传感器

全称:Inertial Measurement Unit(惯性测量单元)。

通俗解释:它是车上的“平衡感知器官”。通常是一个小芯片,里面至少包含加速度计(测前后左右的晃动)和陀螺仪(测旋转的角速度)。

作用:靠 IMU 来时刻感知车身的倾斜角度和旋转趋势。

  • (2). DMP (硬件算法:内置姿态解算算法)

全称:Digital Motion Processor(数字运动处理器)。

通俗解释:这是 IMU 内部自带的一个微型“协处理器”(类似于手机的 GPU,专门干重活的)

在图中的作用:它是一个算法加速器

如果不加 DMP:单片机(主控板)需要自己读取原始的加速度和陀螺仪数据,通过复杂的数学公式(如互补滤波、卡尔曼滤波)去计算出当前的精确角度。这非常吃单片机的算力,代码也难写。

如果加了 DMP你只需要给 IMU 发一条指令,DMP 就会利用它内部的硬件电路,自动把原始数据算成角度,直接把结果(角度值)扔给单片机。

结论:用了 DMP,单片机就可以“偷懒”,直接拿角度值去控制电机,反应更快,程序更简单。

总结图中的逻辑:

  • IMU + DMP​ = 硬件传感器 + 内置算法

  • 它们合起来的作用就是:让车瞬间知道自己是歪了 5 度还是 10 度。这是实现自平衡的第一步,也是最关键的一步。

2.车怎么把自己扶起来?——电机+直立环PD

1. 核心原理:电机 + 直立 PD(比例-微分)控制 (反向推)

当车身向前倾倒时,传感器(IMU+DMP)会检测到倾斜角度。此时,控制器会命令电机向相反方向(向后)转动,产生一个推力,试图把车推回垂直位置。像“反向推秋千”一样把歪倒的车身推回直立状态

2. 什么是“直立 PD”?

PD 控制是实现精准推力的数学算法,包含两个参数:

  • P(比例)负责“用力”。车身歪得越厉害,电机转速越快。比如歪 30 度比歪 10 度转速快三倍。

  • D(微分)负责“刹车/减冲”。它不仅看角度,还看倾倒的速度。如果车正在快速倒下,D 参数会提前加大反向力,防止冲过头;如果车已经站稳,D 参数能抑制车身的抖动,让车更稳。

3. 为什么只用 PD 就够了?

在这个阶段,目标只有一个:保持直立。不需要考虑车往哪走,也不需要转弯。PD 控制足够快且稳定,能把车身稳定在平衡位置,防止它乱跑或摔倒。这是后续实现前进和转向的基础。

3.车为什么不会自己乱跑?——编码器+速度环PI(比例-积分)控制

如果说前面的“直立 PD”是让车学会站立不倒,那么这里的“速度 PI”就是给车套上“缰绳”,防止它因为惯性或外力而失控冲出去。

1. 核心逻辑:从“角度”到“速度”的跨越

  • 仅靠直立很难控速:如果只用电动机控制车身角度,一旦车头前倾,车就会一直往前冲,直到撞墙。因为它没有限制“跑多快”。

  • 引入速度闭环:我们需要给车设定一个目标速度(比如每秒跑 1 米)。系统会不断比较“目标速度”和“实际速度”,通过调节电机的出力,让实际速度始终跟上目标速度。

2. 关键硬件:编码器 (Encoder)

  • 作用:它是安装在电机轴上的传感器,像汽车的“码表”一样,能极其精确地反馈车轮转了多少圈当前转速是多少

  • 为什么重要:没有编码器,系统就不知道车到底跑得快还是慢,速度控制就成了瞎猜。有了编码器,系统才能实时获取真实速度数据,形成闭环控制。

3. 什么是“速度 PI”?

PI 控制用于精确调节速度,解决两个问题:

  • P(比例):负责“加速”和“减速”。发现车跑得比目标慢,就加大动力;跑得快了,就减小动力。

  • I(积分):负责“消除误差”。比如车轮因为地面摩擦阻力变慢了,P 可能拉不回来,I 就会累积过去的误差,持续施加一点额外的力,直到速度恢复正常,防止车“偷懒”停下来。

4. 如何实现“不让它乱跑”?

系统将两个控制环结合起来:

  1. 内环(直立 PD):始终在工作,确保车身不倒。

  2. 外环(速度 PI):根据设定的目标速度,微调“目标倾角”。

    • 想加速?PI 控制会命令车身稍微前倾一点。

    • 想减速或停止?PI 控制会命令车身稍微后仰一点。

通过这种方式,车不再是自由落体式地冲撞,而是被精确地控制在一个设定的速度范围内行驶。

4. 车怎么听话?——蓝牙 +转向环+三环混合(直立环PD、速度环PI、转向环)

这部分解决“人机交互”“多任务协调”的问题。如果说前面的三个部分(直立、控速)是车的“本能”,那么这部分就是车的“意识”和“执行力”

1. 蓝牙 (Bluetooth):让车“听懂人话”

  • 作用:无线通信模块。

  • 解释:这是连接你和车的桥梁。通过手机 App 或遥控器发送指令(比如“前进”、“后退”、“左转”),蓝牙模块接收这些信号并传给主控板(单片机),车才能知道你想让它干什么。

2. 转向 (Steering):让车“改变方向”

  • 作用:执行左右转弯的动作。

  • 解释:平衡车通常采用差速转向(类似坦克):

    • 左转:左轮减速,右轮加速。

    • 右转:右轮减速,左轮加速。

    • 原地转圈:两轮反向转动。

  • 关键点转向必须配合直立。如果一边轮停了,车身会立刻倒向那一边,所以转向时,直立控制(PD)也要同步调整两边电机的力度。

3. 三环混合 (Three-loop Mixing):让车“一心多用”

  • 作用:控制算法的架构,把各个指令融合在一起。

  • 解释:现在的车需要同时处理三个主要指令:

    1. 直立环保持不倒(最高优先级)

    2. 速度环保持速度(中优先级)

    3. 转向环控制方向(低优先级)

“混合”是怎么做到的?

单片机的运算速度极快,它会在极短时间内轮流处理这三个环,并把它们的输出叠加在一起,最终得到一个总的电机控制量。

  • 举个例子

    你按下“左转”键(蓝牙接收指令),同时车正在“前进”(速度环在工作)。

    单片机会算出:

    • 为了保持直立,电机需要输出 X 力量;

      为了维持速度,电机需要输出 Y 力量;

      为了向左转,电机需要输出 Z 力量(左轮减、右轮加)

最后,把 X+Y+Z 合在一起,发给电机。这就是三环混合

5.怎么调出来:整体调优——最后一步,也是最难的一步

平衡车最核心的技术在于“调试(Tuning)”

一、 节拍 (Step / Rhythm)

在这里,“节拍”指的是调试的顺序和步骤,不能乱调,要踩着点来:

  1. 第一步:先调直立(内环)

    • 目标:让车能独立站稳,不倒下。

    • 操作:此时断开速度控制,用手扶着车或者用车架支撑,慢慢加大直立环的 P 值,直到车身能自己稳住。

    • 意义:这是地基。地基不稳,后面全废。

  2. 第二步:再调速度(外环)

    • 目标:让车能匀速跑,且松开手后速度能稳定在一个值。

    • 操作:接入速度 PI 控制,先调 P(让车动起来并能刹车停下),再调 I(消除静差,让车停得准)。

    • 意义:给车装上“油门”和“刹车”

  3. 第三步:最后调转向(混合)

    • 目标:让车能转弯,且转弯时不倒

    • 操作:加入转向控制,注意转向时要同步削弱两侧的直立力度,防止转圈时翻车

二、 调参 (Parameter Tuning)

这是“调优”的核心,指的是PID 参数的微调。参数直接决定了车的性格:

  • 直立环 (PD)

    • P(比例):决定反应速度。太小车站不住(软绵绵);太大车会剧烈抖动(抽搐)

    • D(微分):决定稳定性。太小车倒下时刹不住(冲量大);太大车会高频啸叫(噪音大)

    • 技巧:通常先调 P 找到临界的抖动,稍微减小一点,再加 D 抑制抖动。

  • 速度环 (PI)

    • P:决定加速的猛度。

    • I:决定最终的稳态速度是否准确。

  • 方法:通常采用“试凑法”,一点点加减参数,观察车的反应。

三、 坑 (Pitfalls / Common Mistakes)

这部分是前辈踩过的血泪教训,新手极易中招:

  1. 电源掉电坑

    • 现象:一推车电机,主控板重启或蓝牙断连。

    • 原因:电机启动瞬间电流极大,电池内阻大或线太细导致电压跌落。

    • 解决:换粗线、加电容、换好电池。

  2. 信号干扰坑

    • 现象:车不动的时候自己乱跑,或者一开电机就失控。

    • 原因:电机线跟信号线绑在一起了,PWM 信号受到干扰。

    • 解决:电机线用屏蔽线,或者与信号线分开走线,GND 多点接地。

  3. 机械安装坑

    • 现象:车往一边跑偏。

    • 原因:两个轮子摩擦力不一样、轮胎气压不同、或者电机轴不平行。

    • 解决:物理调平,打磨轮子,确保对称。

  4. 采样噪声坑

    • 现象:直立时车像喝醉了一样,MPU6050 数据乱跳。

    • 解决:检查接线是否虚焊,传感器是否固定牢固(不能有相对位移)。

总结

“整体调优”​ 就是一个不断“看现象 -> 猜原因 -> 改参数/改硬件 -> 再试”的循环过程。没有一套完美的参数能通吃所有硬件,你的车最终能不能跑起来,全看这最后一步的耐心了。

 二、平衡车工作原理与开发流程

  • 工作原理:

  • 开发流程:
  • 核心要点:
    这辆车本质上是一个倒立摆闭环控制系统。它不是天然稳定,而是靠传感器、控制器和电机不断闭环纠正,才能站住。

1.传感器感知:

  • MPU6050——负责看车身

作用:负责“感知车身姿态”的 IMU(惯性测量单元)

  1. 感知“倒没倒”:它内部的加速度计陀螺仪,分别实时测量车身的倾斜角度角速度(倒下的速度)

  2. 提供“控制依据”:它输出的数据(经过 DMP 处理后的角度),直接作为 PID 控制器的输入。控制器根据这个角度偏差,决定电机是加速还是刹车,从而让车保持直立。

简单说:MPU6050 负责告诉主控板:“我现在歪了 10 度,快往反方向转轮子!”

MPU6050 与 DMP 的关系

  • MPU6050 是硬件:负责采集原始的三轴“加速度”和三轴“角速度”数据。

  • DMP 是MPU6050 内部的协处理器:负责把 MPU6050 采集的6个原始数据,通过内置算法(如四元数、姿态解算)直接转换成稳定的角度值

  • 编码器——负责看轮子。速度环不看编码器,就不知道车到底有没有在跑

作用:左右轮转速(速度反馈)

2.控制算法(决策)

PID算法:

P 是什么
        P 是比例项。
        它解决的问题是:现在偏了多少,就按偏差大小立刻纠正,偏得越多,纠正越强,所以它通常是“主力纠偏项”


I是什么
        I 是积分项。
        它解决的问题是:虽然当前误差不大,但长期总有一点点偏差。如果这个偏差一直存在,就持续累加,直到把这点长期误差消掉。所以I项最擅长消除的是:稳态误差。

D 是什么
        D 是微分项。
        它解决的问题是:变化太快了,再不提前刹车就会冲过头。所以 D项本质上是在看变化速度,它最大的作用通常是

  • 增加阻尼
  • 抑制振荡

一句话理解 PID

  • P:偏得越多,拉得越狠
  • I:总有一点偏,就慢慢积起来消掉
  • D:变化太快,提前刹车

理解 PID 最重要的,不是会写公式,而是知道:为什么这个环用这个组合

为什么直立环用 PD
        直立环的目标是:别摔。
        所以它最需要两类信息:
                车已经偏了多少——P:看偏差大小
                车正在以多快的速度倒下去——D:看变化速度
        那为什么通常不用I?——因为直立环如果把一点小误差长期积起来,很容易把“零点偏了一点“变成”持续推车往前或往后跑”。所以在平衡车直立控制里,直立环通常更适合PD。

为什么速度环用 PI

        速度环的目标是:别乱跑,最终回到目标速度。它特别关心的是      

  • 当前速度偏差
  • 长期的小漂移

        这正对应:
        P:立刻修正当前速度偏差
        I:慢慢消除长期稳态误差
        为什么常常不用 D?——因为编码器测速本身有量化噪声,D项对噪声很敏感,容易把抖动放大,所以速度环通常更适合 PI。

结论

不是所有地方都机械地上 PID,而是根据物理目标去选:

  • 直立环:PD
  • 速度环: PI
  • 转向环:按需要做简化控制

PID 调参与常见现象对照——调参是平衡车真正落地的一大门槛

  • 调参顺序不能乱

推荐顺序是
1.先确认方向正确

2.再调直立环 Kp
3.再调直立环 Kd
4.再调 Car_zero:机械零点
5.再调速度环 Kp
6.再调速度环 Ki
7.最后处理转向

  • 常见现象怎么反推问题

常见现象和可能原因大致可以这样对应
一松手就倒:方向错了,或者Kp太小
高频抖动:Kp太大,或者阻尼不够

注意:控制系统不仅拼算法,也拼时序。快任务放中断,慢任务放主循环

3.电机驱动(执行)

(1)TB6612FNG双路直流电机驱动模块(PWM控制)

它负责接收单片机(STM32/Arduino)发出的微弱指令(PWM信号),然后输出大电流去驱动两个直流电机,实现正转、反转、调速和刹车。相比老旧的 L298N,它效率更高、发热更小,是小型机器人项目的首选。

参数

数值/说明

对平衡车意义

驱动路数

双路(A路 + B路)

正好驱动左、右两个轮子

连续电流

每路 1.2A(峰值 3.2A)

足够驱动中小型减速电机

电机电压

VM:2.5V ~ 15V

接锂电池(如 7.4V 或 12V)

逻辑电压

VCC:2.7V ~ 5.5V

接单片机(3.3V 或 5V),电平兼容

PWM 频率

最高 100 kHz

响应快,电机运行更平滑

(2)实物图:

4.左右电机(动力)

5.车身姿态变化

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐