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 的浓度。总的来说,我对传感器的复杂性和相对容易的使用印象深刻。
在我看来,这个传感器有一些有趣的应用评估室内空气质量在家庭和工作场所,也可以用于评估空气过滤系统的效率。