单车平衡
独轮车
本文会在项目完毕持续更新
在备战2025年全国大学生智能车竞赛中,我们团队采用英飞凌AURIX™系列单片机成功实现独轮车自平衡控制。本文将系统性分享从环境搭建到算法调参的全链路经验,重点解析独轮车相较于传统两轮车的技术难点与解决方案。
一、环境配置篇
1.1 开发工具链
-
AURIX Development Studio:集成编译器/调试器(需安装
TASKING TriCore™ VX Toolkit
) -
MiniWiggler调试器:Jtag接口配置(注意TC2XX/TC3XX系列差异)
-
关键依赖库:
iLLD_1_0_1_12_0 # Infineon底层库 ADS_SAR_ADC_Example # 传感器采集模板
1.2 硬件环境
模块 | 型号 | 备注 |
---|---|---|
主控 | TC387 | 四核架构处理控制环路 |
电机驱动 | TLE7189F | 支持PWM死区控制 |
陀螺仪 | MPU6050+卡尔曼滤波 | 姿态角实时解算 |
电源管理 | LMR14050SDDAR | 5V/3A降压稳压 |
二、硬件设计关键点
2.1 机械结构设计
-
重心配平:电池组下置降低质心(实测质心高度需<15cm)
-
轮径选择:8英寸空心橡胶轮(兼顾扭矩与响应速度)
2.2 电路设计规范
// 电机驱动保护电路示例
void Motor_Safeguard() {
setFaultHandling(FAULT_OVERCURRENT, SHUTDOWN_PWM); // 过流保护
enableWatchdog(WDT_TIMEOUT_100ms); // 看门狗
}
三、核心代码实现
3.1 控制主循环架构
while(1) {
readIMUData(&pitch, &gyro); // 50μs级采样
balance_angle = PID_Calculate(pitch, target);
updatePWM(MOTOR_CH, balance_angle);
checkSystemStatus(); // 故障诊断
}
3.2 关键算法实现
改进型串级PID控制
// 角度环(外环)
float Angle_PID(float current_angle) {
static float integral = 0;
integral += Ki_angle * (current_angle - target_angle);
return Kp_angle * (current_angle - target_angle) + integral;
}
// 角速度环(内环)
float Gyro_PID(float current_gyro) {
return Kp_gyro * current_gyro; // 微分先行结构
}
四、调试经验
4.1 典型问题排查
-
问题1:陀螺仪零点漂移导致静差
解决方案:上电时自动校准(持续3秒静止采样) -
问题2:电机高频啸叫
根因分析:PWM频率过低(最终设定16kHz消除噪音)
4.2 调参黄金法则
-
先调内环后调外环:角速度环→角度环
-
增益取值范围:
-
0 < Kp_angle < 5.0 0 < Ki_angle < 0.1 Kd_gyro ≈ 2*Kp_angle
五、致谢与源码
完整工程考虑开源至Github,,欢迎同行交流。特别感谢英飞凌工程师提供的Technical Case Support服务,极大缩短了开发周期。
后续会跟进更新
-
插入PID参数整定过程曲线图(示波器截图)
-
补充硬件接线图(电机-驱动-主控连接方式)
-
添加关键寄存器配置代码片段(如PWM模块初始化)