2024年电子设计竞赛自动驾驶小车弧形寻迹方案:红外对码管原理与实战优化

1次阅读
没有评论

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

image.webp

背景痛点

弧形赛道在电子设计竞赛中越来越常见,但传统直线寻迹方案往往在这里栽跟头。我自己在调试时就发现,当小车遇到 30°以上的弯道时,红外对管的误判率会突然飙升。经过反复测试,发现问题主要来自两个方面:

2024 年电子设计竞赛自动驾驶小车弧形寻迹方案:红外对码管原理与实战优化

  1. 弧形赛道导致红外光反射角度变化,部分传感器可能同时检测到黑白区域
  2. 环境光干扰(特别是场馆顶灯)会使接收管产生约 200mV 的基线漂移

技术方案对比

参加过三届竞赛后,我总结出这些传感器的特点:

  • 红外对管
  • 成本最低(约 0.8 元 / 对)
  • 响应时间快(<0.1ms)
  • 需要精心设计抗干扰电路

  • 灰度传感器

  • 价格中等(5-15 元)
  • 自带环境光补偿
  • 响应速度较慢(1-2ms)

  • 摄像头方案

  • 成本高(>200 元)
  • 需要图像处理算法
  • 受光照影响极大

核心实现方案

传感器布局优化

通过 3D 打印不同角度的测试支架,最终确定 15°弧形排布效果最佳:

  1. 中心对称布置 5 组对管
  2. 相邻对管间隔 15°
  3. 安装高度保持在 8 -10mm

硬件设计要点

使用 STM32F103 的 ADC 时要注意:

// ADC 配置示例
void ADC_Config() {
    ADC_InitTypeDef ADC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 多通道扫描
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // 连续转换
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_Cmd(ADC1, ENABLE);
}

动态阈值算法

关键是要实时更新环境光基准:

#define SENSOR_NUM 5
uint16_t dynamicThreshold(uint16_t rawValues[]) {static uint16_t baseline[SENSOR_NUM];
    uint16_t threshold = 0;

    // 更新基线(移动平均滤波)for(int i=0; i<SENSOR_NUM; i++) {baseline[i] = 0.9*baseline[i] + 0.1*rawValues[i];
        threshold += abs(rawValues[i] - baseline[i]);
    }
    return threshold/SENSOR_NUM * 1.5; // 1.5 倍系数经验值
}

常见问题解决方案

PCB 布线避坑

遇到过最头疼的问题是串扰:

  1. 接收管信号线必须远离电机驱动线路
  2. 每组对管的 VCC 都要加 0.1μF 去耦电容
  3. 模拟地与数字地单点连接

赛道材质适配

实测反射率数据:

材质 白区反射率 黑区反射率
亚克力 85%-90% 5%-8%
KT 板 70%-75% 10%-15%

性能验证

在 50cm/ s 速度下测试结果:

  • 直线赛道:误判率 <1%
  • R30cm 弯道:误判率 3.2%
  • R15cm 急弯:误判率 8.7%

进阶优化思路

结合 PID 控制时要注意:

  1. 根据检测到的有效传感器数量判断弯道曲率
  2. 大曲率时适当降低 P 参数
  3. 加入微分项抑制过冲

通过这套方案,我们最终在省赛中获得了一等奖。最关键的经验是:前期花时间做好传感器标定,比赛时能省去 80% 的调试麻烦。

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