本文不涉及具体的电路设计和方案说明,只对Sharp GP2Y1010AU0F空气质量传感器的使用和计算做个笔记。


Sharp GP2Y1010AU0F空气质量传感器通过电压信号来指示当前空气质量(AQI),单位是mg/m^3,此为国际标准计量单位,可通过计算公式直接得到我们通常意义上的0到500来表示的PM2.5值。


关于AQI的解释,可搜索百度。

关于AQI和PM2.5值的计算公式,在百度AQI时可以得到。


对于目前网上流传的有关GP2Y1010AU0F的使用、代码及计算公式,基本都是来自一名叫Chris Nafis的网友。参见:http://www.howmuchsnow.com/arduino/airquality/


上文的中文译文请见:http://www.guokr.com/article/434130/


Chris Nafis通过测算得到,AQI与传感器输出电压存在:AQI = 0.172 x 输出电压 - 0.9999 的关系。


这一公式基本符合GP2Y1010AU0F官方datasheet所给出的数据,参见:https://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf


经过实际操作和测量,我所读取到的模拟输出电压值要远高于Chris Nafis的平均低于0.05v的电压水平(我的Vcc = 5.0v)。


如果用Chris Nafis提供的公式来计算AQI,然后再换算成PM2.5值,结果将远高于真实水平


确保不是电路设计的问题后,经过仔细研究,发现GP2Y1010AU0F官方datasheet存在如下信息:

Output voltage at no dust (没有粉尘时的理论输出电压)= 0.9v (Vcc @ 5v)


这一发现意味着,我的AQI与输出电压的关系应该是:


wKioL1MsgwejK3y-AABFBTFW4Wk626.png


注解:0.9v输出时,AQI为0(当然这是理想状态),然后datasheet还说,每0.1mg/m^3的粉尘会增加输出电压0.5v,我以0.25v步进,得到上图,得到如下公式:


AQI = 0.2 × 输出电压 - 0.18


这一公式显然与Chris Nafis的存在较大差异,且比较“理想化”,但经过实际测量,结果与气象台的数据还是较为吻合的。


考虑到GP2Y1010AU0F属于廉价传感器,在精准度上当然不能与工业级产品媲美,因此输出结果也会有个体的较大差异。不过考虑到测量综合数据的波形图与较昂贵商业测试仪器所给出的测量波形图基本一直,通过“人工校正”的方式来修饰数据结果应该是可行的。