1. 项目概述:当平衡车遇上BLDC与动态调参
平衡车作为经典的机电一体化项目,一直吸引着众多创客和工程师的目光。而在这个项目中,我们尝试将无刷直流电机(BLDC)与动态参数调整算法相结合,打造一台响应更灵敏、适应性更强的智能平衡车。不同于传统平衡车使用编码器或霍尔传感器的方案,BLDC电机的高效率、高扭矩特性为系统带来了新的可能性。
这个项目的核心在于"动态调参"和"速度前馈"两个关键技术点。动态调参意味着控制系统能够根据实时运行状态自动调整PID参数,而速度前馈则是在传统反馈控制基础上增加了对速度变化的预判补偿。这两项技术的结合,使得平衡车在面对不同路面状况或负载变化时,都能保持出色的稳定性。
2. 硬件架构解析
2.1 BLDC电机选型与驱动
在这个项目中,我们选择了外转子型BLDC电机,其典型特性包括:
- 额定电压:24V
- 空载转速:3000RPM
- 额定扭矩:0.25N·m
- 极对数:7对极
驱动方案采用TI的DRV8323三相栅极驱动器,配合STM32G4系列MCU的硬件六步换相功能。这种组合既保证了换相精度,又能实现高达50kHz的PWM频率。电机的三相电流通过低边采样电阻检测,经运算放大器放大后送入MCU的ADC。
注意:BLDC电机在低速时容易产生转矩脉动,这会直接影响平衡车的稳定性。建议在软件中实现正弦波驱动或采用FOC算法来改善低速性能。
2.2 惯性测量单元(IMU)配置
平衡车的姿态检测采用MPU6050六轴传感器,包含三轴加速度计和三轴陀螺仪。传感器的安装位置和方向对测量精度有重要影响:
- 传感器应尽量靠近车辆的重心位置
- 安装时要确保传感器坐标系与车辆坐标系对齐
- 使用减震材料隔离电机振动带来的干扰
传感器的数据通过I2C接口以400kHz的速率读取,采用DMA传输减少CPU开销。为了获得更准确的姿态角,我们实现了互补滤波算法,将加速度计和陀螺仪的数据进行融合。
2.3 主控系统设计
主控采用STM32G474RET6,主要特性包括:
- 170MHz Cortex-M4内核
- 硬件浮点运算单元
- 高级定时器支持六步换相
- 5Msps ADC采样率
系统架构如下图所示(文字描述):
code复制[传感器层] --> [数据融合层] --> [控制算法层] --> [电机驱动层]
↑ ↑ ↑
[IMU数据] [姿态估算] [动态参数调整]
3. 控制算法实现
3.1 基础PID控制器设计
平衡车的核心控制采用串级PID结构:
- 外环:角度环,控制车身直立
- 内环:速度环,维持设定速度
角度环PID参数初始值:
- Kp=15.0, Ki=0.5, Kd=2.0
速度环PID参数初始值:
- Kp=0.8, Ki=0.05, Kd=0.01
PID算法的离散化实现采用位置式算法:
code复制// 伪代码示例
error = setpoint - measurement;
integral += error * dt;
derivative = (error - last_error) / dt;
output = Kp*error + Ki*integral + Kd*derivative;
last_error = error;
3.2 动态参数调整策略
动态调参算法基于车辆当前状态实时调整PID参数,主要考虑以下因素:
- 倾角变化率:当车身快速倾斜时,适当增加微分项
- 速度偏差:长时间存在速度误差时,调整积分项
- 电机负载:通过电流检测估算负载变化
参数调整规则示例:
code复制if (abs(pitch_rate) > threshold) {
Kd = base_Kd * (1 + pitch_rate * factor);
}
if (speed_error > threshold && integral < limit) {
Ki = base_Ki * (1 + speed_error * factor);
}
3.3 速度前馈补偿
速度前馈环节在传统反馈控制基础上增加了前向通路,其传递函数为:
code复制U_ff = Kff * (a_desired / Kv)
其中:
- Kff:前馈增益
- a_desired:期望加速度
- Kv:速度-电压比例系数
实现代码片段:
cpp复制float speed_feedforward(float target_speed, float current_speed, float dt) {
static float last_speed = 0;
float acceleration = (target_speed - last_speed) / dt;
last_speed = target_speed;
return feedforward_gain * acceleration / speed_constant;
}
4. 系统调试与优化
4.1 参数整定流程
调试过程遵循由内到外的原则:
-
先调速度环:
- 设角度环输出为零
- 给固定速度指令
- 调整参数使响应快速无超调
-
再调角度环:
- 手持车辆测试
- 逐步增加P直到出现小幅振荡
- 然后加入D项抑制振荡
-
最后调动态调整规则:
- 模拟不同负载条件
- 观察参数自适应效果
- 调整调整因子
4.2 常见问题排查
-
电机抖动严重:
- 检查PWM频率是否足够高(建议>20kHz)
- 确认电流采样无干扰
- 尝试增加死区时间
-
车辆容易倒向一边:
- 校准IMU零位
- 检查机械结构对称性
- 验证电机转向是否正确
-
动态调整不灵敏:
- 检查状态检测是否准确
- 调整参数变化率限制
- 验证调整规则条件设置
4.3 性能优化技巧
-
计算效率优化:
- 使用查表法替代实时三角函数计算
- 将常用参数预加载到CCM RAM
- 启用FPU和DSP指令集
-
控制周期优化:
- 角度环:1ms
- 速度环:5ms
- 动态调参:20ms
-
抗干扰措施:
- 电源输入端加π型滤波
- 信号线使用双绞线
- 软件上实现滑动平均滤波
5. 实测效果与扩展方向
经过实际测试,这套系统相比传统固定参数平衡车展现出明显优势:
- 载重适应性:在5kg负载变化范围内能自动保持平衡
- 路面适应性:能应对约10°的斜坡变化
- 响应速度:从静止到1m/s加速时间<2秒
未来可能的扩展方向包括:
- 加入蓝牙/WiFi远程监控接口
- 实现路径规划与自主导航
- 增加能量回收功能提升续航
- 尝试更先进的鲁棒控制算法
在实际调试过程中,我发现动态调参算法对参数变化率的限制非常重要。过快的参数变化会导致系统不稳定,而太慢则失去自适应意义。经过多次试验,将关键参数的变化率限制在基础值的±30%/s范围内取得了较好效果。