HPM 术语的屏幕截图
在这个例子中,Serial Out 和 Serial In 窗口首先被清除,然后单击 Read PM 按钮。发送到传感器的命令字节(十六进制)为0x68、0x01、0x04和0x93。这些值构成了 Header (0x68)、命令长度(0x01)、命令(0x04)和校验和(0x93)。校验和的计算方法是从0x10000减去字节之和的结果中取最小的8位。也就是说,((0x10000-(0x68 + 0 x01 + 0 x04) AND 0xFF) = 0x93。有时,这被称为“256模校验和”,并且是基于被称为 Fletcher 校验和的算法。
Serial In 窗口包含由传感器(同样是十六进制)发送的响应为0x40,0x05,0x04,0x00,0x09,0x00,0x0A,0xA4。这些值构成头(0x40)、响应长度(0x05)和命令(0x04) ,并作为正确的 ACK (确认)。接下来的字节告诉你2.5 μm PM 的高字节、低字节顺序(0x00 * 256) + 0 x09) ,10.0 μm PM 的浓度,还是高字节、低字节顺序(0x00 * 256) + 0 x0A,最后是校验和值(0xA4)。
在负 ACK 的情况下,表明传感器无法响应 PM 值,响应序列将只有0x96,0x96。然而,根据我的经验,我没有发现这种情况发生过。
传感器的数据表给出了所有命令交互的详细示例。这些信息可以帮助探索惠普术语的传感器功能。
单机 PM 探测器的构建
项目 BOM: HPMA115S0-XXX 粒子传感器,Teensy-LC 控制器,OLED 128 x 32显示(见文本) ,4.7 k 电阻(2) ,连接器(见前文)。
虽然连接 HPM 传感器到 PC 是值得探索的设备,我也想做一个独立的 PM 探测器。下面的示意图显示了我使用的
电路。
单独的 PM 探测器原理图
对于控制器,我使用了一个小型 lc。该板,如下图所示,具有 ARM Cortex-M0 + 处理器在48兆赫,62K 闪存,8K 内存,12位模拟输入和输出,硬件串行,SPI & I2C,USB,和总共27 i/o 引脚(
微型 lc 微控制器
该板可以使用 AVR c 编译器来编程,但是它也可以与著名的 Arduino IDE 一起使用。此外,许多 Arduino 库也将与 Teensy-LC 一起工作。
HPM 传感器需要5v 电源供电。在一块未经修改的 Teensy-LC 板上,只要你使用标准的5v USB 电源,比如 USB 墙疣,或者在 USB 连接器上安装5v 的便携式电池,就像下图所示:
值得注意的是,如果你在电路板上切割一个跟踪来为电路板提供一个不同的输入电压源(即,将 Vin 和 VUSB 分开) ,那么你将不能以相同的方式使用引脚。
我使用板上的硬件串口(rx1和 TX1)与 HPM 传感器的串口(RX 和 TX)进行通信。由于 Teensy-LC 和 HPM 传感器串行端口都是3.3 v,它们彼此兼容。
有了从传感器读取 PM 值的能力,我需要添加查看这些值的能力。该检测器的设计目的是简单地提供电力,并不断提供检测到的 PM 浓度。因此,一个简单的展示似乎是合适的。
我决定采用小型 OLED 显示器,如下图所示。
128 x 32 OLED 显示屏
这些微型(大约0.91英寸,128 x 32) oled 使用 ssd1306控制器,包含 I2C 接口,可以从许多不同的来源。
OLED 由 Teensy-LC 上的3.3 v 输出引脚提供动力,我使用 I2C 接口(scl0和 SDA0)支持和熟悉的 Arduino Wire 库。此外,每个 I2C 线上使用了4.7 k 的引出电阻。4.7 k 值推荐用于 Teensy-LC,并且没有任何问题。
我还使用了 u8g2单色图形库控制器,它支持 ssd1306控制器,并且很容易写入显示器。
完整的单独的实验板上的 PM 检测器
单机 PM 探测器的源代码
独立 PM 检测器霍尼韦尔 _ hpm 的整个程序。下载项目中包含了一个叫做 ino 的程序。这段代码很简单,并且有注释,但是有一些注释是必要的。
基本上,程序只是简单地运行一个循环,每六秒读取和显示 PM 浓度。可以修改变量 delaymsecs 来调整读取和显示速率。
在设置部分,我们多次尝试禁用自动发送功能的传感器,因为它是开启电源。在此期间,您将在显示器上看到“9999”,如果显示器上仍然存在“ e”,则意味着无法关闭“自动发送”,这可能表明存在连接/通信问题。
读取传感器的例程也会在显示值旁边显示一个 e 之前多次尝试成功读取,以通知用户一个通信问题。然而,一旦读取成功,“ e”将被删除。
这两个例程都使用 maxatures 变量来确定在显示错误通知之前尝试通信的次数。默认情况下,变量设置为2。这样做是为了提醒用户注意潜在的通信问题。除了故意强迫错误,我从来没有在正常的测试中观察到这样的通信错误。
当 PM 浓度超过各个变量(wpm25或 WPM100)的值时,在各个浓度旁边显示一个星号。Pm2.5 μm 和 pm10.0 μm 的缺省值分别为35(μg/m3)和150(μg/m3)。
然而,阈值可以由用户设定或在输入9999后禁用,因为传感器的上限范围不超过1000微克/立方米。
最后,一个测试探测器的简单方法是吹灭靠近进气口点燃的火柴。PM 值应该大幅度增加。
最后的想法
在本计画中,我们将 HPMA115S0-XXX 粒子传感器与一台使用串行介面的个人电脑连接,并且我们也构建了一个独立的探测器来监测2.5微米 PM 和10.0微米 PM 的浓度。总的来说,我对传感器的复杂性和相对容易的使用印象深刻。
在我看来,这个传感器有一些有趣的应用评估室内空气质量在家庭和工作场所,也可以用于评估空气过滤系统的效率。