3、传感器选型与原理:温湿度传感器(DHT22/SHT30)、光照传感器(BH1750)、CO2传感器(MH-Z19B)的原理与选型
做温室环境调控,第一步就是选对传感器。传感器选错了,后面的控制算法再牛也是白搭。我见过太多项目,花大价钱买了执行器,结果传感器数据不准,整个系统都在瞎忙活。
今天咱们就聊聊温室里最常用的三类传感器:温湿度、光照、CO2。我会结合自己的实战经验,把每个传感器的脾气秉性说清楚。
3.1 温湿度传感器:DHT22 vs SHT30
温湿度是温室调控的基础参数。市面上选择很多,但DHT22和SHT30是我用得最多的两款。为啥?性价比高,够用。
DHT22:皮实耐造的老将
DHT22也叫AM2302,是一款数字温湿度传感器。它内部集成了一个电容式湿度感应元件和一个NTC热敏电阻,通过单总线协议输出数据。
核心参数:
- 温度范围:-40°C ~ 80°C,精度 ±0.5°C
- 湿度范围:0% ~ 100% RH,精度 ±2% RH
- 采样周期:2秒(最低间隔)
- 接口:单总线(One-Wire)
DHT22最大的优点是稳定。我在东北的一个大棚项目里用过,冬天零下二十多度,它照样工作。但要注意,它的采样速度很慢,2秒才能读一次。如果你要做快速响应的控制,比如风机联动,这个速度就不太够。
SHT30:快准稳的后起之秀
SHT30是瑞士Sensirion公司的产品,采用CMOSens®技术,把传感器和信号处理电路集成在一个芯片上。它通过I2C接口通信,速度比DHT22快得多。
核心参数:
- 温度范围:-40°C ~ 125°C,精度 ±0.3°C
- 湿度范围:0% ~ 100% RH,精度 ±2% RH
- 采样周期:最快可达2.5ms
- 接口:I2C(地址0x44或0x45)
我个人习惯在需要快速响应的场景用SHT30。比如温室顶窗的开闭控制,温度变化快,SHT30能及时反馈。而且它体积小,适合集成到PCB上。
选型建议:
| 场景 | 推荐传感器 | 理由 |
|---|---|---|
| 低成本、简单监控 | DHT22 | 单总线,接线简单,抗干扰能力强 |
| 快速闭环控制 | SHT30 | 采样快,精度高,I2C便于多传感器组网 |
| 高湿环境(>90%RH) | SHT30 | 抗凝结能力强,长期稳定性更好 |
3.2 光照传感器:BH1750
光照强度直接影响植物的光合作用。温室里常用的光照传感器是BH1750,它基于I2C接口,直接输出勒克斯(lux)值,不用自己换算。
工作原理: BH1750内部有一个高灵敏度的光电二极管,配合一个16位的模数转换器(ADC)。它通过测量光电流的大小,计算出环境光照强度。说白了,就是把光信号变成电信号,再变成数字量。
核心参数:
- 测量范围:1 ~ 65535 lux
- 分辨率:可选1 lux(高分辨率模式)或4 lux(低分辨率模式)
- 接口:I2C(地址0x23或0x5C)
- 测量时间:典型值120ms
BH1750有个好处——它自带光谱响应校正,能模拟人眼对光的感知。这意味着它测出来的lux值,和植物实际感受到的光照强度比较接近。当然,如果你需要测量光合有效辐射(PAR),那得用专门的量子传感器,BH1750就不太合适了。
代码示例:读取BH1750数据
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
void setup() {
Serial.begin(9600);
Wire.begin();
lightMeter.begin();
Serial.println("BH1750 初始化完成");
}
void loop() {
float lux = lightMeter.readLightLevel();
Serial.print("光照强度: ");
Serial.print(lux);
Serial.println(" lux");
delay(1000);
}
这段代码很简单,但实际部署时要注意一点:BH1750的I2C地址默认是0x23,如果你的总线上有其他设备冲突,可以把ADDR引脚拉高,地址就变成0x5C。嗯,这个小技巧我经常用。
3.3 CO2传感器:MH-Z19B
CO2浓度是温室里容易被忽略的参数。其实植物光合作用需要CO2,浓度太低会限制生长。MH-Z19B是一款非色散红外(NDIR)CO2传感器,精度高、寿命长,是我做温室项目的首选。
工作原理: NDIR传感器利用CO2分子对特定波长(4.26μm)红外光的吸收特性。传感器内部有一个红外光源和一个探测器。光源发出的红外光穿过气室,被CO2吸收一部分,探测器测量剩余的光强,就能算出CO2浓度。说白了,就是「看」光被吸了多少。
核心参数:
- 测量范围:400 ~ 5000 ppm(可选2000ppm或10000ppm版本)
- 精度:±50 ppm + 读数的5%
- 接口:UART(串口)或PWM
- 预热时间:约3分钟
- 寿命:>5年
MH-Z19B最让我放心的是它的自校准功能。它内置了自动基线校准(ABC)逻辑,会定期把最低浓度值校准到400ppm(大气本底值)。但要注意,如果温室长期处于高CO2环境(比如冬天密闭大棚),ABC反而会把正常值校准偏。我建议在这种场景下关闭ABC,手动校准。
选型对比:
| 参数 | MH-Z19B | 其他CO2传感器(如SCD30) |
|---|---|---|
| 测量原理 | NDIR(非色散红外) | NDIR 或 电化学 |
| 精度 | ±50 ppm + 5% | ±30 ppm + 3% |
| 价格 | 约50-80元 | 约150-300元 |
| 寿命 | 5年以上 | 3-5年 |
| 适用场景 | 温室、大棚、室内农业 | 实验室、高精度科研 |
说实话,对于大多数温室项目,MH-Z19B的精度完全够用。没必要花大价钱买SCD30,除非你做的是高附加值的组培或科研实验。
3.4 传感器选型总结
选传感器,我总结了三句话:
- 温湿度: 追求稳定选DHT22,追求速度选SHT30。
- 光照: BH1750够用,但别让它晒太阳。
- CO2: MH-Z19B性价比之王,记得关ABC。
你想想看,传感器就是温室的眼睛。眼睛花了,手脚再利索也没用。所以选型时多花点心思,后面调试能省一半时间。