智能车竞赛 独轮车平衡控制实战经验

单车平衡

独轮车

 

本文会在项目完毕持续更新

在备战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+卡尔曼滤波姿态角实时解算
电源管理LMR14050SDDAR5V/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 调参黄金法则

  1. 先调内环后调外环:角速度环→角度环

  2. 增益取值范围

  3. 0 < Kp_angle < 5.0  
    0 < Ki_angle < 0.1  
    Kd_gyro ≈ 2*Kp_angle  

五、致谢与源码 

完整工程考虑开源至Github,,欢迎同行交流。特别感谢英飞凌工程师提供的Technical Case Support服务,极大缩短了开发周期。

后续会跟进更新

  1. 插入PID参数整定过程曲线图(示波器截图)

  2. 补充硬件接线图(电机-驱动-主控连接方式)

  3. 添加关键寄存器配置代码片段(如PWM模块初始化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值