1. 传感器基础:常见传感器类型及其工作原理
各位同学好,我是老张。做嵌入式传感器融合这块有些年头了。今天咱们聊聊智能灯具里最常用的几种传感器——PIR、光敏、超声波、雷达。
你想想看,一个灯具要“智能”,首先得知道周围发生了什么。是有人走过来了?天黑了没有?距离多远?这些信息全靠传感器来采集。我个人习惯把传感器比作灯具的“五官”,没有它们,灯具就是个瞎子。
1.1 PIR传感器——被动红外传感器
PIR,全称是Passive Infrared,被动红外。说白了,它就是个“体温探测器”。
工作原理:
所有高于绝对零度的物体都会辐射红外线。人体温度大约37°C,辐射的红外线波长在9-10μm左右。PIR传感器内部有两个敏感元,当人移动时,红外线变化被两个敏感元检测到差异,就会输出一个脉冲信号。
关键点:PIR只能检测移动的人体,不是静止的人。你坐在那里不动,它检测不到。
我的经验:我在做办公室智能灯控项目时遇到过一个问题——员工午休趴在桌上不动,灯自动灭了。后来我加了光敏传感器做辅助判断,才解决。嗯,这里要注意,PIR的检测范围通常是个扇形,角度90°-120°,距离3-8米。
典型参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 检测角度 | 90°-120° | 透镜决定 |
| 检测距离 | 3-8米 | 可调灵敏度 |
| 响应时间 | 0.5-2秒 | 取决于移动速度 |
| 工作电压 | 3.3V-5V | 常见数字输出 |
避坑指南:我曾经在户外灯具上直接用PIR,结果夏天高温时频繁误触发。因为环境温度接近体温,传感器灵敏度会下降。后来我加了温度补偿算法才搞定。
1.2 光敏传感器——环境光检测
光敏传感器,也叫环境光传感器。它的任务很简单——告诉灯具现在是白天还是黑夜。
工作原理:
常见的有两种:光敏电阻和光电二极管。光敏电阻的阻值随光照强度变化,光照越强,阻值越小。光电二极管则是输出电流与光照成正比。
我个人习惯用数字式环境光传感器,比如BH1750。它直接输出lux值,省去了模拟量计算的麻烦。
// BH1750读取示例
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
void setup() {
Serial.begin(9600);
Wire.begin();
lightMeter.begin();
}
void loop() {
float lux = lightMeter.readLightLevel();
Serial.print("光照强度: ");
Serial.print(lux);
Serial.println(" lux");
delay(1000);
}
我的经验:做智能路灯时,我遇到过一个问题——黄昏时分光照变化很快,传感器频繁触发开关。后来我加了迟滞算法,比如光照低于50lux开灯,高于80lux才关灯。这样就不会来回跳了。
典型参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 测量范围 | 1-65535 lux | BH1750 |
| 分辨率 | 1 lux | 高分辨率模式 |
| 响应时间 | 120ms | 典型值 |
1.3 超声波传感器——距离测量
超声波传感器,大家最熟悉的就是HC-SR04了。它通过发射超声波并接收回波来测量距离。
工作原理:
发射器发出40kHz的超声波脉冲,遇到障碍物反射回来,接收器收到回波。距离 = 声速 × 时间 / 2。声速在空气中大约340m/s,受温度影响。
关键点:超声波对软性物体(如布料、海绵)反射效果差,对硬质平面反射效果好。而且它有个盲区,通常2-3cm内测不准。
// HC-SR04距离测量示例
#define TRIG_PIN 9
#define ECHO_PIN 10
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
Serial.print("距离: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
避坑指南:我曾经在会议室装超声波传感器检测人员就座情况,结果发现空椅子也能反射超声波。后来我结合了PIR传感器,只有同时检测到人体移动和距离变化才判定有人。
1.4 雷达传感器——微波运动检测
雷达传感器,常见的是24GHz或5.8GHz的微波雷达。它比PIR更灵敏,能检测微小的动作。
工作原理:
雷达发射微波信号,遇到移动物体时,反射信号的频率会发生变化(多普勒效应)。通过检测频率变化,就能判断是否有物体移动。
关键点:雷达可以穿透非金属材料(如塑料、木板),所以可以藏在灯具外壳内部。而且它能检测到呼吸引起的微小移动,比PIR灵敏得多。
典型参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 工作频率 | 5.8GHz / 24GHz | ISM频段 |
| 检测距离 | 3-15米 | 可调 |
| 穿透性 | 可穿透非金属 | 塑料、木板等 |
| 功耗 | 0.1-0.5W | 比PIR高 |
我的经验:做智能家居时,我对比过PIR和雷达。PIR便宜但容易漏检,雷达灵敏但功耗高。我的建议是:走廊、卫生间用PIR就够了;卧室、书房这种需要检测微小动作的地方,用雷达更靠谱。
1.5 传感器选型对比
最后,我整理了一个对比表,方便大家选型时参考:
| 传感器 | 检测对象 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|---|
| PIR | 人体移动 | 便宜、低功耗 | 不能检测静止、受温度影响 | 走廊灯、感应灯 |
| 光敏 | 环境光照 | 简单、成本低 | 响应慢、精度一般 | 路灯、自动调光 |
| 超声波 | 距离 | 精度高、不受颜色影响 | 有盲区、受温度影响 | 自动门、停车辅助 |
| 雷达 | 微小移动 | 灵敏、可穿透 | 功耗高、成本高 | 智能家居、安防 |
最后提醒:传感器融合不是简单地把几个传感器拼在一起。我曾经犯过这个错——把PIR和超声波直接并联使用,结果互相干扰。正确的做法是分时工作,或者用不同的工作频率。这些我们后面章节会详细讲。
好了,这一章就到这里。下一章我们讲传感器数据采集与预处理,包括滤波、去噪、校准这些实战内容。有什么问题欢迎交流。