极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14537|回复: 14

尝试DIY一个空气净化器 (2)空气检测模块方面 进展

[复制链接]
发表于 2014-2-9 22:38:25 | 显示全部楼层 |阅读模式
本帖最后由 hi55234 于 2014-2-10 20:06 编辑

预计实现目标:
1、空气质量双检测,粉尘检测+气味检测

实际现实目标:
粉尘检测:完成度30%
气味检测:完成度0% T_T

目前
最小化原型1=Arduino Pro mini + 8cmX2CM纤维洞洞板+0.96英寸 OLED + GP2Y1010 + 网线若干 + 手机电池一块

上裸照:

IMG_20140209_215505.jpg

IMG_20140209_215522.jpg

新鲜的照片配上新鲜的气象部门发布的数据

未命名.JPG

---------------------------------------

IMG_20140209_215551.jpg

IMG_20140209_215621.jpg

最小化原型2=Arduino Pro mini + 3块面包板板+4个LED数码管 + GP2Y1010 + 4片74HC595 +SD卡模块一个+网线若干 + DS18B20+CP2102模块一个

IMG_20140209_220413.jpg

IMG_20140209_220418.jpg

有原型2,就是为了和解决与气象站发布的数据尽量一致的问题:

例如这个:

110856gb5n4n5cmzs55be1.png

又比如这个:

204520bk3g730xe327fsxg.png

渐渐的发现问题了,PM2.5下降的时候,粉尘头的数据却低不下去:
133309yzie88kabkazk8e3.jpg

明显是没有扣除无尘时的电压嘛~~可是哪儿去找无尘时的电压呢?就算有无尘环境,也太麻烦了吧,对照GP2Y1010的原理,可知,所谓无尘情况,就是检测头接收不到红外信号的时候嘛:
213640v6r777r13vd7574p.png

果断用异物阻断后外线,得到近似于无尘时电压的输出值,将值扣除,却又发现了新问题,即二是同等粉尘增幅情况下的电压增量是不同的(PS:这个是推论,理由是同样扣除初始电压的几个GP2Y1010有的值是接近的,有的却差了十万八千里),于是以少数服从多数的原则,将值相识的粉尘头作为标准增幅标准,然后对“非标准”的电压值在程序中进行缩减或增加(当然,这种缩减与增加肯定有负作用,即缩减会降低粉尘头的量程,增加则会增加粉尘头的误差,为此,后面还要探索更加合理的异物,以模拟无尘与高粉尘状态,毕竟目前的缩减是在气象部门发布值PM10也就30-40的情况下拟定的,涵盖范围过小,误差必然极大

这个就是在种低粉尘值下进行缩减后的采集图
112754yvkkka5j5vjbd4jo.png

很明显的,抖动值变小了,但也可能是由于其他因素造成的
(1)近端时间空气很好,一直下雨,粉尘本来就低,0.8以上的颗粒更少
(2)设备的局限性:
0.jpg

夏普最新的PM2.5检测器也不过25ug以上的浓度才有意义,这就导致此浓度以下的推算不过电压与PM2.5的纯线性推导,误差必然也不小

下一步打算
1、探索更为合理的异物,模拟高粉尘的环境,争取以此与环保部分的发布值靠得更近

模拟高粉尘状态得到解决——水蒸气,不是超身波雾化哦,因为淡淡的水蒸气(50-60°C的开水在9°C环境温度下冒得气),通过调节距离就可以把GP2Y1010推到380ug/m3的电压,大概2.6v的电压,足够了,就此验证了通过2段调节,可以基本实现GP2Y1010的一致性(当然,有条件的话,在高状态,例如100ug/m3、200ug/m3、300ug/m3进行多次分段调节,可以进一步增加一致性)


与气象部门一致性的推测,以此刻为例,气象部门发布PM2.5为84ug/m3,PM10为100ug/m3,而我经过调试后的GP2Y1010则显示为20ug/m3左右,可见这个值涵盖了整个PM10-PM2.5,再加上很小部分的PM2.5,由此可知,要想较精确的获得PM2.5的值,需要知道大环境下PM2.5与PM10-PM2.5的比例,然后用这个比例去处理GP2Y1010的值~~~至于说精确测量,就算是0.3um的激光也是没戏的,何况是这0.8um的红外线

另外测得不够精确与测试结果没有参考价值是不同的,因为这个不完全的结果已经可以担负起粉尘这块的检测任务\(^o^)/

且通过联网,取得实时大环境数据后,在测试精度上有很大的可能性秒杀国产/山寨/不靠谱的手持激光PM2.5检测仪器
PS:通过颗粒数(还是不完整的)换算重量这个本身就不怎么靠谱


2、增加气味传感器

----------------------------------------------------------------------
关于气味的选择方面,从价格上考虑,MQ-2(3.9rmb)加上MQ-135(7.8rmb)是不错的,相关资料如下:

旁热式结构半导体式可燃气体敏感元件MQ-2
应用:可用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。

适用气体:可燃气体、烟雾
探测范围:300 to 10000ppm
特征气体:1000ppm异丁烷
灵敏度:R in air/R in typical gas≥5
敏感体电阻:1KΩ to 20KΩ in 50ppm甲苯

旁热式结构半导体式空气污染气体敏感元件MQ135
应用:用于家庭、环境的有害气体探测、自动排风装置、空气清新机。

适用气体:氨气、苯、酒精、烟雾
探测范围:10-300ppmNH3、10-1000ppm苯、10-600ppm酒精、1%/m3~10%/m3烟雾
特征气体:100ppm酒精
灵敏度:R in air/R in typical gas≥5
敏感体电阻:1KΩ to 2KΩ in 100ppm NH3


-----------------------------------------------------
3、增加蓝牙,与手机连接
4、手机根据与特定地点气象部门的发布曲线对比采集曲线,得出适合特定地点的修正系数,以此计算出更合理的PM曲线

MQ135__A.pdf

326.52 KB, 下载次数: 45

mq2.pdf

153.66 KB, 下载次数: 41

回复

使用道具 举报

 楼主| 发表于 2014-2-9 23:15:53 | 显示全部楼层
本帖最后由 hi55234 于 2014-2-10 07:36 编辑

毕竟目前的缩减是在气象部门发布值PM10也就30-40的情况下拟定的,涵盖范围过小,误差必然极大

马上用异物证明:

1、无异物状态,作为“标准”的粉尘头换算PM2.5显示18.7,而对应的调整粉尘头显示18 基本一致

IMG_20140209_230445.jpg

2、插入一根白色导线,模拟高粉尘状态,马上就打脸了:
作为“标准”的粉尘头换算PM2.5显示502,而对应的调整粉尘头显示361,差异巨大

IMG_20140209_230647.jpg

可能的其他原因:
(1)导线是软的,插入方式二者不一致

解决方式,多插几次试试

(2)导线模拟了粉尘的极限,因为量程有限,所以正常(最高电压没有5V)

解决方式,换其他异物,或者等天气恶劣情况下再对比一下
IMG_20140209_232637.jpg
回复 支持 反对

使用道具 举报

发表于 2014-2-10 10:18:15 | 显示全部楼层
支持一个。我买了个简化的空气净化器,主要是负离子功能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-10 12:09:05 | 显示全部楼层
本帖最后由 hi55234 于 2014-2-10 14:03 编辑

果断需要在扣除0点之后分2次修正,这样对于量程就不会有影响,现在零0、低粉尘、模拟极限貌似OK了,就差中度或重度粉尘的测试了~~~

无标题 up.jpg
up 4.jpg

回复 支持 反对

使用道具 举报

发表于 2014-2-10 13:52:03 | 显示全部楼层
难得楼主这么用心,我也用的这个传感器,即使在空气很好情况下,检测出来168左右,像楼主说的明显没有减去无尘电压,后来就丢在那边没去深究。佩服你钻研的精神
回复 支持 反对

使用道具 举报

发表于 2014-2-11 08:42:41 | 显示全部楼层
有个想法供楼主参考:如果制造一个真空是不是就可以很容易作为0灰尘的空间来定标了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-11 09:06:42 | 显示全部楼层
本帖最后由 hi55234 于 2014-2-11 09:15 编辑
zoologist 发表于 2014-2-11 08:42
有个想法供楼主参考:如果制造一个真空是不是就可以很容易作为0灰尘的空间来定标了?


至少家用吸尘器的真空环境,经试验不靠谱~~~~

用吸尘器+塑料袋=真空环境,这个是我首先尝试的校0,不过,几乎没啥效果~~因为在压力平衡后,推测灰尘因布尔运动会而回流(实际灰尘测量值反而会变大,空气体积减小,灰尘数量不变,相当于浓缩了,当然,作为模拟高尘环境目测也还是可以的)~~另外实在不易操作,吸尘器的吸杆过长,而塑料袋过小,吸尘器噪音不小~~~

效果远不如异物屏蔽红外线,在检测原理上实现“无尘”校对
回复 支持 反对

使用道具 举报

发表于 2014-2-14 22:35:01 | 显示全部楼层
楼主是知其然,也知其所以然啊,太佩服这种钻研精神啦!代码能不能公开一下啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 13:15:19 | 显示全部楼层
philhoo 发表于 2014-2-14 22:35
楼主是知其然,也知其所以然啊,太佩服这种钻研精神啦!代码能不能公开一下啊?

目前用软SPI的代码是不能用SD库的,改用U8glib库,需要重新写代码~~~

PS:同时玩玩1602,这个库也在摸索·····
回复 支持 反对

使用道具 举报

发表于 2014-2-17 17:26:54 | 显示全部楼层
楼主,不给红外线的LED-GND接通就能达到遮挡红外线的目的,是不是可以模拟无尘状态了吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-17 19:42:36 | 显示全部楼层
zlmneve 发表于 2014-2-17 17:26
楼主,不给红外线的LED-GND接通就能达到遮挡红外线的目的,是不是可以模拟无尘状态了吧?

这个方法甚好,实测的话,最低电压为v-led、led-gnd都不接的情况············
回复 支持 反对

使用道具 举报

发表于 2014-3-28 21:14:47 | 显示全部楼层
很奇怪我手里的这个传感器的数值下不去,即使把它放在blueair的出风口,数值也下不去,读到的模拟量最低也有230多(1023最大吧,不过实际好像最大只见过700多),不知道什么原因,平时家里测试240-280直接,但同时期室外的pm值可是150-200左右的。

今天试着调了一下传感器上那个旋钮,发现可以吧数值降下去,能降到200左右,但再低似乎就归零了,然后继续调又从700多开始向下走估计那个旋钮自循环了。

问题是,不知道是把这个值调低了能增加从0到现在室内值这个区间的分辨率,还是应该把值调高呢?
回复 支持 反对

使用道具 举报

发表于 2014-3-31 11:02:18 | 显示全部楼层
万丈 发表于 2014-3-28 21:14
很奇怪我手里的这个传感器的数值下不去,即使把它放在blueair的出风口,数值也下不去,读到的模拟量最低也有 ...

240~280你用的可能是rawdata,也就是直接从5#pin读出的V output。
根据传感器的官方曲线,dustdensity=(0.172*5*voutput/1024-0.0999)*1000, 得到的是mg/m3。
一开始我直接用输出值也非常大,用公式转化后,变化曲线就和Dylos DC1100 Pro出的曲线变化比较接近了(当然,绝对值还是有很大差距)
回复 支持 反对

使用道具 举报

发表于 2014-3-31 11:08:28 | 显示全部楼层
万丈 发表于 2014-3-28 21:14
很奇怪我手里的这个传感器的数值下不去,即使把它放在blueair的出风口,数值也下不去,读到的模拟量最低也有 ...

另外,忠告尽量别调节官方传感器上那个旋钮,说明文档上说出场的时候已经使用“香烟测试”做过矫正了。我就自己调过,结果再转回去也不是很准。
调节的方法有以下几种:
1. 增加led点亮时间:官方说是启动280微秒后开始读取voutput,但是也允许上下浮动,这个值增大的时候PM值会读取偏低,减小的时候会增大。
2. 更换5# voutput与单片机连接的AD接口:如果是arduino的话,A0~A7都试试,即便是关闭LED供电,再链接读取的时候,voutput也是有细微的差别的,挑一个比较准确的接口。
回复 支持 反对

使用道具 举报

发表于 2014-5-21 23:49:24 | 显示全部楼层
pm2.5颗粒数换算浓度每立方?PM2.5我们国家使用μg/m³的单位,怎么转化~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-9-23 10:27 , Processed in 0.058476 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表