2024电子设计竞赛自动驾驶小车寻迹抖动问题分析与红外对码管优化方案

1次阅读
没有评论

共计 1466 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

红外对码管工作原理与典型电路

红外对码管是寻迹小车的核心传感器,由红外发射管和接收管组成。发射管发出特定波长的红外光,接收管检测反射光强度。当小车在黑色轨迹线上行驶时,黑色区域吸收红外光导致接收信号弱,白色区域反射强烈。典型电路包含以下部分:

2024 电子设计竞赛自动驾驶小车寻迹抖动问题分析与红外对码管优化方案

  • 发射端:通过限流电阻(通常 220Ω)驱动红外 LED
  • 接收端:光电三极管输出信号经比较器或 ADC 转换
  • 参考电路电压:VCC=3.3V 时,白线反射电压约 2.8V,黑线约 0.3V

寻迹抖动的三大根源分析

  1. 环境光干扰 :日光、灯光中含红外成分,会淹没有效信号。表现为 ADC 读数波动超过±100mV

  2. 机械振动 :电机转动引起传感器支架共振,导致检测距离变化。常见于未使用减震海绵的刚性安装

  3. 采样频率不当

  4. 过高(>1kHz)时噪声被放大
  5. 过低(<50Hz)导致控制延迟
  6. 理想范围:200-500Hz(对应 2 -5ms 采样间隔)

硬件滤波改进方案

二级 RC 低通滤波电路

[红外接收]--[10kΩ]--+--[0.1μF]--GND
                     |
                    [ADC 输入]

– 截止频率:f_c=1/(2πRC)=159Hz
– 可叠加两级实现 -40dB/dec 衰减

光学改进措施

  • 加装 3mm 厚黑色橡胶遮光罩
  • 发射管串联 10Ω 电阻降低发射功率(减少相邻传感器串扰)

STM32 软件滤波实现

均值滤波 + 动态阈值算法

#define SAMPLE_NUM 5

uint16_t IR_Filter(uint16_t raw_adc) {static uint16_t buf[SAMPLE_NUM] = {0};
    static uint8_t index = 0;
    uint32_t sum = 0;

    buf[index++] = raw_adc;
    if(index >= SAMPLE_NUM) index = 0;

    for(int i=0; i<SAMPLE_NUM; i++)
        sum += buf[i];

    return sum/SAMPLE_NUM;
}

uint16_t Dynamic_Threshold(uint16_t filtered_val) {
    static uint16_t min_val = 4095, max_val = 0;

    if(filtered_val < min_val) min_val = filtered_val;
    if(filtered_val > max_val) max_val = filtered_val;

    return (max_val + min_val)/2;  // 自动计算中间阈值
}

PID 参数整定技巧

参数初始化范围建议

  • Kp:0.5-2.0(响应速度)
  • Ki:0.01-0.1(消除静差)
  • Kd:5-20(抑制超调)

调试步骤

  1. 先将 Ki、Kd 设为 0,逐步增加 Kp 直到出现轻微振荡
  2. 加入 Kd,每次增加 5 直到消除振荡
  3. 最后微调 Ki,每次增加 0.01 直到静差消失

三大调试避坑要点

  1. PWM 频率设置
  2. 电机 PWM 频率建议 8 -10kHz
  3. 避免与采样频率成整数倍关系(如 500Hz 采样时不用 1kHz PWM)

  4. 传感器布局优化

  5. 相邻传感器间距≤15mm(针对 20mm 宽赛道)
  6. 安装高度 8 -12mm(需实际测量反射曲线)

  7. 电源去耦

  8. 每个传感器 VCC 端加 0.1μF 陶瓷电容
  9. 电机驱动电源与控制系统独立供电

实测效果对比

优化前后关键指标对比表:
| 指标 | 优化前 | 优化后 |
|————–|———-|———-|
| 最大偏移量 | ±35mm | ±5mm |
| 调节时间 | 1.2s | 0.3s |
| 功耗 | 280mA | 210mA |

通过上述软硬件协同优化,我们团队最终实现了在 2m/ s 速度下±3mm 的轨迹跟踪精度。特别提醒:不同赛道的反射率差异较大,建议赛前采集各赛段的典型 AD 值建立阈值数据库。

正文完
 0
评论(没有评论)