3、常用传感器详解(一):红外传感器、超声波传感器、激光雷达(LiDAR)的原理与选型
各位同学,欢迎来到传感器实战的第一讲。
做机器人,说白了就是让机器感知世界。而感知的第一步,就是选对传感器。今天咱们聊三个最常用的测距传感器:红外、超声波、激光雷达。这三种东西,我几乎在每个项目里都会用到,但它们的脾气秉性完全不同。
3.1 红外传感器:便宜但娇气
红外传感器,原理很简单——发射红外光,碰到物体反射回来,根据反射光的强度或三角测距法算出距离。
常见型号:
- GP2Y0A21YK0F(夏普,测距 10-80cm)
- GP2Y0A02YK0F(夏普,测距 20-150cm)
输出特性:模拟电压,距离越近电压越高,但注意——它不是线性的!
核心要点:红外传感器对物体颜色和表面材质极其敏感。黑色物体吸光,测距会偏远;白色物体反光强,测距会偏近。我曾在做避障小车时,黑色桌腿直接让传感器“失明”,小车一头撞上去。
避坑指南:我曾经在强光环境下调试红外传感器,发现数据乱跳。后来才意识到,太阳光里含有大量红外成分,直接干扰了传感器。所以,户外项目慎用红外。
3.2 超声波传感器:稳定但慢
超声波传感器,发射40kHz的声波,等它碰到物体弹回来,计算时间差。声速在空气中约340m/s,所以距离 = 时间 × 声速 / 2。
经典型号:HC-SR04
- 测距范围:2cm - 400cm
- 精度:约3mm
- 工作频率:40kHz
时序控制代码示例(Arduino):
// 触发引脚 Trig -> D2,回声引脚 Echo -> D3
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
}
void loop() {
// 发送10us高电平触发
digitalWrite(2, LOW);
delayMicroseconds(2);
digitalWrite(2, HIGH);
delayMicroseconds(10);
digitalWrite(2, LOW);
// 读取回声脉冲宽度(单位微秒)
long duration = pulseIn(3, HIGH);
// 换算成距离(cm)
float distance = duration * 0.034 / 2;
Serial.print("距离: ");
Serial.print(distance);
Serial.println(" cm");
delay(100);
}
个人经验:超声波不怕光照,也不受颜色影响。但它有个致命弱点——对软性物体(比如海绵、布料)几乎无效。声波被吸收了,回波很弱。另外,两个超声波靠太近会互相串扰。我建议你给每个传感器加个“时间窗口”,错开发射时机。
3.3 激光雷达(LiDAR):精准但贵
激光雷达,发射激光脉冲,测量飞行时间(ToF)。精度可以达到毫米级,扫描频率高,是SLAM建图的核心传感器。
常见类型:
| 类型 | 典型型号 | 测距范围 | 精度 | 价格区间 |
|---|---|---|---|---|
| 单线机械式 | RPLIDAR A1 | 0.15-12m | ±1% | ¥500-1000 |
| 单线固态 | VL53L1X | 0.04-4m | ±1mm | ¥30-80 |
| 多线机械式 | Velodyne VLP-16 | 0.1-100m | ±3cm | ¥20000+ |
选型建议:
- 做室内小车避障,用VL53L1X就够了,便宜又精准
- 做建图导航,至少上RPLIDAR A1,360度扫描
- 做自动驾驶?嗯,准备好预算吧
注意:激光雷达在强光下也会受影响,但比红外好得多。另外,玻璃和镜面是激光雷达的噩梦——激光直接穿透或反射到别处去了。我有个朋友做AGV小车,仓库里全是玻璃墙,激光雷达直接废了,最后换了超声波才搞定。
3.4 三种传感器对比总结
为什么要把这三种放一起讲?因为它们互补。你想想看:
- 红外便宜,但怕光、怕颜色
- 超声波不怕光,但怕软物、速度慢
- 激光雷达精准,但贵、怕玻璃
我个人的习惯是:能用激光雷达就用激光雷达,预算不够就上超声波,红外只用在室内、短距离、固定场景。记住,没有完美的传感器,只有合适的组合。
实战技巧:如果你做避障小车,我建议你同时装一个超声波(正前方)和两个红外(左右两侧)。超声波负责远距离预警,红外负责近距离防撞。这样既省钱又可靠。
好了,这一章就到这里。三种传感器的原理和选型,你心里应该有数了。下一章咱们会深入讲一讲传感器的数据融合——怎么把这三个家伙的数据揉在一起,让机器人更聪明。