我欢迎所有对室内空气质量感兴趣并希望对其进行控制和管理的人。
我本人最近对此问题开始感兴趣,因此决定用自己的双手去感受CO2传感器MH-Z19B。 我受到许多文章的启发,例如
MH-Z19的黑暗面 。

但是,在任何地方(甚至在说明中)我都没有找到如何使用Vo引脚的方法...
我提请注意:在
红外CO2传感器MH-Z19概述一文中提到了这一点:
一些在线商店,例如“
二氧化碳传感器CO2 MH-Z19B ”,也
提供类似的信息:
(作为复本)
但是说明(
此处 )指出了更多:
- Vo 模拟输出 (0.4〜2 V)或(0〜2.5V)
而且,如果您进行更多挖掘,那么说明(
此处 )将更加详细地指示:
- Vo(Pin2)- 模拟输出 (0.4〜2 V)(0〜3V范围可定制)
我迅速搜寻了一下,发现没有任何关于这种出路的信息! Stirlitz认为奇怪,他很快将此输出连接到ESP8266的模拟输入(对于Arduino,这也很重要),并开始研究。
结论:
- 模拟输出上的电压在0.4xx至2.002v之间变化。
- 模拟输出重复数字ppm信号的电压。
- 当UART命令将ppm范围更改为2k,5k,10k时,Vo转换范围也会相应更改。
- Vo = 2,001v的最大值不会因范围而变化,因为转换范围需要以ppm(2/5 / 10k)为单位设置最大值。
- Vo的最小值根据范围(α)而变化,并且范围本身以400ppm开始。
- 如果选择ADC控制器的实际值,则可以在电压和ppm电平之间获得不错的匹配。 在高达2k的范围内,数字UART信号和模拟Vo转换之间的误差不超过几个ppm单位。
- 您可以先使用USB-TTL转换器或使用Arduino +配置传感器(禁用自动校准,然后将400 ... 2000ppm切换到“原始”范围),然后像模拟信号一样使用它。
我如何转换:
[...] const word cADC00v = 3;
“魔术”数字是通过实验获得的。 它发生得更快,更准确。 当试图在数学上非常准确地计算时,实际上发现了一个很大的误差。
为什么它对我有用(0.4 ... 2.0v而不是0 ... 2.5v)我不知道。 传感器是在几天前购买的,于2019年9月26日生产。 外壳上的压印范围高达5k ppm。
我为什么需要它? (答案为“所以我做错了……”)
好吧...有些人喜欢手持烙铁,但与控制器不是朋友。 对于他们来说,模拟输出至少可以打开/关闭风扇,并且最大程度地-平稳控制排气/进气/换热器的速度。
具体来说,对我来说:在隔壁的房间里,通风系统已经工作了2年,这是我使用可自由编程的工业控制器制造的。 因为 控制器是工业控制器,那么编程系统是特定的,我不确定您是否可以在上面编写自己的UART交换协议。 是的,有一个RS484串行端口可以在ModBus上正常工作,但是此端口已由调度系统占用。
但是有一个免费的模拟输入,可以将其设置为0-10V。 因此,只有30美元左右,您就可以升级通风系统以实现智能节能(仅在必要时通风,并根据需要进行通风)。
PS:代码SoftSerial.readBytes(mhzBuffer,9); 在我的ESP8266上拒绝工作。 他杀死了大约五个小时。
他们在
这里讨论了这个
问题 ,但我稍后再阅读。 我以
if (SoftSerial.available() { x=SoftSerial.read(); }
样式编写了函数。