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秒才能读一次。如果你要做快速响应的控制,比如风机联动,这个速度就不太够。

⚠️ 避坑指南: 我曾经在湿度超过90%的育苗棚里用DHT22,连续运行三个月后,湿度读数开始漂移。后来拆开发现,传感器外壳的透气膜被水汽堵塞了。建议在高湿环境下加装防尘罩,或者定期校准。

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 抗凝结能力强,长期稳定性更好
💡 我的经验: 如果预算允许,我建议在温室里同时部署DHT22和SHT30。DHT22做冗余备份,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的测量上限是65535 lux。正午阳光直射时,光照强度能到10万lux以上。所以如果你把传感器放在露天位置,读数会饱和。我一般会在传感器外面加一个遮光罩,或者用软件做限幅处理。

代码示例:读取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读数越来越低。一开始以为是传感器坏了,后来才发现是ABC功能在作祟——它把室内的高CO2当成了基线,不断往下拉。解决办法:关闭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。

你想想看,传感器就是温室的眼睛。眼睛花了,手脚再利索也没用。所以选型时多花点心思,后面调试能省一半时间。

💡 最后一个小建议: 不管选什么传感器,都建议在部署前做一次「零点校准」和「满量程校准」。拿温湿度来说,用饱和盐溶液做湿度校准,用冰水混合物做0°C校准。虽然麻烦,但数据可靠。我每次做项目,都会在笔记本上记下每个传感器的校准系数,方便后期追溯。