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

1次阅读
没有评论

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

image.webp

一、背景痛点:为什么选择红外对码管?

弧形赛道与传统直线赛道的核心差异在于 路径曲率连续性变化。传统直线寻迹常用的灰度传感器在弧形区域会出现:

  • 检测盲区增大(传感器间距固定)
  • 反射信号强度突变(赛道边缘曲率变化)

红外对码管方案的优势突显在:

  1. 抗干扰能力:940nm 波长红外光可有效抑制环境光干扰
  2. 响应速度:调制解调电路可实现微秒级响应(实测 <200μs)
  3. 安装灵活:可呈弧形阵列排布匹配赛道曲率

二、技术方案对比

传感器类型 灵敏度 成本 复杂度 适用曲率范围
光电编码器 ★★★☆ <0.5m 半径
摄像头 ★★★★ 极高 极高 全范围
红外对管 ★★☆ >0.2m 半径

注:灵敏度评级基于 5cm 检测距离下的实测数据

三、核心实现细节

3.1 电路设计关键点

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

  • 发射端
  • 使用 TSAL6200 红外 LED
  • 限流电阻 R1=100Ω(If=20mA 时)
  • 38kHz 载波由 NE555 产生

  • 接收端

  • TSOP4838 解调接收器
  • 旁路电容 C1=0.1μF(必须靠近 VCC 引脚)
  • 上拉电阻 R2=10kΩ

3.2 信号处理代码(PlatformIO 格式)

// 红外传感器阵列定义
const uint8_t irPins[] = {A0, A1, A2, A3, A4};
#define SAMPLE_COUNT 5  // 滑动窗口大小

void setup() {Serial.begin(115200);
  for(auto pin : irPins) pinMode(pin, INPUT);
}

void loop() {static uint16_t history[5][SAMPLE_COUNT] = {0};
  static uint8_t idx = 0;

  // 带滑动平均的 ADC 采样
  for(uint8_t i=0; i<5; i++) {history[i][idx] = analogRead(irPins[i]);
    uint16_t avg = 0;
    for(uint8_t j=0; j<SAMPLE_COUNT; j++) avg += history[i][j];
    avg /= SAMPLE_COUNT;

    // 动态阈值判断
    bool isBlack = avg > (getBaseline(i) + 50);
    trackStatus |= (isBlack << i);
  }
  idx = (idx + 1) % SAMPLE_COUNT;

  // 赛道边缘检测算法
  int16_t error = calculateError(trackStatus);
  // ...PID 计算部分省略...
}

四、调优实战技巧

4.1 环境光干扰消除

  • 载波频率选择 38kHz(避开日光灯 100Hz 干扰)
  • 在接收端添加光学滤光片(建议 RG850 玻璃)
  • 代码实现动态基线校准:
uint16_t getBaseline(uint8_t ch) {static uint16_t baselines[5] = {512}; 
  if(millis() % 1000 == 0) { // 每秒校准
    baselines[ch] = analogRead(irPins[ch]);
  }
  return baselines[ch];
}

4.2 曲率自适应策略

  1. 建立曲率 - 阈值对照表:
  2. 直线段:阈值差±30
  3. R=0.5m 弯道:阈值差±45
  4. R=0.3m 急弯:阈值差±60

  5. 通过传感器阵列的激活模式判断当前曲率

五、常见问题排查

5.1 焊接缺陷检测

  • 症状:某通道始终输出最大值
  • 诊断
  • 测量接收端 VCC-GND 间电阻(正常应 >1MΩ)
  • 用手机摄像头观察发射管(应可见紫色光点)

5.2 多传感器仲裁逻辑

当相邻传感器出现冲突时:

  1. 优先信任内侧传感器(弯道内侧)
  2. 检查信号上升沿斜率(真实赛道边缘变化更陡)
  3. 启用历史数据加权(最近 3 次采样占 70% 权重)

六、测试验证方法

6.1 示波器诊断

  • 正常信号特征:
  • 接收端输出脉冲宽度 >200μs
  • 无信号时基线噪声 <50mV

6.2 PID 整定建议

  1. 先调 D 参数抑制过冲(典型值 0.5-1.5)
  2. 再调 P 参数提升响应速度(典型值 2.0-4.0)
  3. 最后微调 I 参数消除静差(典型值 0.01-0.05)

延伸思考

  1. 如何结合光电编码器实现里程辅助定位?
  2. 在 S 弯道场景下,传感器阵列的最佳间距是多少?
  3. 当需要检测交叉线时,信号处理算法需要哪些改进?

实战建议:先用纸板制作可变曲率测试轨道,逐步调整传感器倾角(推荐 15°-30°)

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