空气质量检测器

2013-12-067.9万
精华项目
AI 快速预览详细 收起
本项目介绍如何使用粉尘传感器和DFRduino UNO R3控制器搭建简易空气质量监测装置。硬件清单包括粉尘传感器、DFRduino UNO R3控制器、IO传感器扩展板V7等。通过简单的硬件连接和代码下载,用户可以实时监测空气质量。该项目适用于STEM教育和儿童科学实验,帮助孩子动手实践并了解空气质量。
各位生活在帝都、魔都的朋友们是否会有这样的感慨:早晨一推开窗,浓重的雾霾天气,让你鼓不起勇气迈步杀进那个仿佛时刻在摧毁你五脏六腑的外面的世界。

各位心灵手巧的Maker小伙伴们,是时候动手做一个空气污染监测装置了。利用一个空气监测传感器搭配Arduino控制器和扩展板,马上就可以搭建出一个简易空气监测装置。即使没有那些专业的监测设备和砖家的报告,你也能科学客观的了解你时刻呼吸的空气质量!

看看下面的照片,制作一个PM2.5刻不容缓啊!!

空气质量检测器图10

空气质量检测器图11


空气质量检测器图12



硬件材料:


硬件连接:
1、I/O扩展板插在UNO上
2、粉尘传感器与转接板通过杜邦线连接
3、转接板上标有分别标有D和A的两个接口
        D --> 数字口 2
        A --> 模拟口 0

下图所示:
                                                                    空气质量检测器图1























只要轻松的插上几根线就完成连接,是不是很方便呀?

下载代码,见附件。

我们先简单了解下粉尘传感器,可以对应代码一道看!

(如果觉得不需要了解的话,往下都不需要看了,只需直接下载代码即可使用,打开串口就可以查看检测到的数据了,单位是毫克/立方米)


下面这张图是个粉尘传感器的内部结构图以及硬件说明:


                                                                                            空气质量检测器图2
  粉尘传感器内部结构图


可以从图看出,在发射端,我们需要驱动一个红外发射管,也就是上图引脚3。对应程序中定义的ledPower。同样,我们也可以看出输出是上图对应的引脚5,输出的是模拟量,对应到程序中的measurePin


那我们如何得到我们想要的值呢?
下图截自datasheet,你可以看出粉尘传感器的输出电压是几乎呈线性的。dustDensity = 0.17 * calcVoltage -0.1; 这个公式曲线近似转换过来的(来自ChrisNafis)。这里dustDensity是粉尘密度值,单位mg/m3。calcVoltage是输出电压值。


                                                                                  空气质量检测器图3

我们都知道输出0~5V电压对应UNO模拟口读出的是0~1023。calcVoltage= voMeasured * (5.0 / 1024.0); 这个公式就是模拟值转为电压值。voMeasured 模拟口输出量。


采用时间计算
根据datasheet,也就是下面的第二张图可看出,我们需要开启内部的LED并等待280us(微秒),之后再读取输出值。第一张图则表示,整个脉冲持续时间为320us。因此,我们还需再等待40us,才能将LED关闭。

   空气质量检测器图4            
  空气质量检测器图5

以上就是对程序以及粉尘传感器工作原理的简单说明。


如果没有转接板的,那就接着看下面这张图。


                                                                            空气质量检测器图6


     
我们需要在引脚1外接一个150欧的电阻,并且并联一个220uF的电容。这也就是我们使用转接板的原因,把这个部分在转接板上完成了,大大方便了连线,也增加了稳定性。
   
下面来看下实物图上的引脚位置,如果是需要自己外接电阻、电容的朋友们请继续往下看。


                                                         空气质量检测器图7


粉尘传感器对应的Arduino引脚:
引脚号
传感器引脚
Arduino 引脚
  
1
  
  
V-LED
  
  
5V(串联一个150欧的电阻)
  
  
2
  
  
LED-GND
  
  
GND
  
  
3
  
  
LED
  
  
数字口2
  
  
4
  
  
S-GND
  
  
GND
  
  
5
  
  
Vo
  
  
模拟口0
  
6
Vcc
5V


空气质量检测器图9


空气质量检测器图8


照着连就可以了,连接完成之后,同样下载上面的样例代码。






dust_sensor_code.rar

816 Bytes, 下载次数: 43824

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(25)
三春牛-创客
三春牛-创客
6666666666
三春牛-创客
三春牛-创客
赞赞赞赞!
三春牛-创客
三春牛-创客
厉害厉害
三春牛-创客
三春牛-创客
哇!!!!
KkQ1VrB7W776
KkQ1VrB7W776
这个只是灰尘传感器,连pm10都测不了
zerotwox
zerotwox
装个1602显示屏不是更好
appzpp12
appzpp12
这代码是初始给的,楼主也不分析一下,就直接用了,没有实际的价值,按照官方给出的产品说明书。香烟是颗粒状的比较大,而雾是密集状的,该如何判断这两者的区别?
rearm
rearm
LCD keypad shield难道不能直接插在uno上吗?
Jane
Jane
作者
回复liposlt
你电路接线是怎么接的?
liposlt
liposlt回复Jane
楼主,我最近也在用这个这个粉尘传感器,但是有个问题就是:我在房间里边读出来的模拟值是0,这样密度按照公式算下来也就是-0.1了。我试着搞了一些烟雾,数据如图

直接就是最大值了。在窗外也测试一下,也是0,这样的数据感觉不正常啊。按照手册里输出电压和密度的图表,就算密度为0,输出电压算下来也是0.58左右。
还有我用的arduino uno它的微秒延时是不是很不准啊,采样的280us+40us=320us我用示波器看,都快接近500us了。如图:

共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
rearm
rearm
朋友说夏普这一款不太好,貌似日本SHINYEI的好点,谁用过没?
Jane
Jane
作者
回复rearm
这个确实精度不是很好
rearm
rearm
上个数据。下面是采集的电压,每一行10ms连续采集10次,然后等待1秒钟。可以看到行内数据一直在降。新一行重新开始。
另外我是在稳定的环境中测的。电压波动挺大的。
0.97 0.74 0.59 0.59 0.53 0.49 0.59 0.51 0.57 0.47
0.90 0.74 0.59 0.55 0.58 0.55 0.46 0.55 0.49 0.52
0.94 0.63 0.59 0.55 0.58 0.59 0.49 0.50 0.50 0.50
0.90 0.67 0.58 0.56 0.60 0.51 0.42 0.50 0.52 0.57
0.91 0.66 0.63 0.53 0.55 0.47 0.55 0.44 0.48 0.48
0.79 0.70 0.63 0.56 0.53 0.46 0.49 0.54 0.54 0.51
0.81 0.70 0.60 0.55 0.50 0.54 0.44 0.54 0.53 0.51
0.91 0.70 0.56 0.54 0.48 0.51 0.47 0.57 0.52 0.45
0.83 0.68 0.68 0.55 0.63 0.54 0.60 0.53 0.45 0.57
rearm
rearm
我也做了一个,发现数据不太稳定。如果按10ms周期连续监测,数据会持续下降。如果等1秒钟,重新10ms连续监测,数据会开始一个轮回,第一个数据回到高位,然后像之前一样持续下降。
太不靠谱了,甚至没法连续采集做平均。
李毓轲
李毓轲
楼主 第一次玩这个 器件买好了 装上了 程序下载完成后 然后怎么办?要在哪里看pm数据
Jane
Jane
作者
回复李毓轲
下载完以后,点开串口监视器就可以看到数据了

czp19940223
czp19940223
楼主 我的连线和你一样 没有错误 但是测出来的数据没有变化怎么回事?
czp19940223
czp19940223
楼主 我的连线和你一样 没有错误 但是测出来的数据没有变化怎么回事?
Jane
Jane
作者
回复czp19940223
能放个照片看下吗?
benny
benny
楼主,我配的是IIC LCD1602 display module 兼容Gadgeteer显示屏,可以帮忙修改下代码吗?谢谢了。
Jane
Jane
作者
回复benny
能用起来了吗?
benny
benny回复Jane
非常感谢啦
共7条回复,已加载2条,点击查看更多共7条回复,已加载全部
何处不江南
何处不江南
顶楼主啊
Jane
Jane
作者
回复何处不江南
哈哈 稀客呀~
丁佳莉
丁佳莉
最后得到的数据dustdensity的值应该是多少?我一般都在0.65到0.75之间。。。不太能确定这个数据对不对。。。。。
Jane
Jane
作者
回复丁佳莉
不客气啦~
丁佳莉
丁佳莉回复Jane
正常啦,谢啦~~:P
共10条回复,已加载2条,点击查看更多共10条回复,已加载全部
zeropoint0110
zeropoint0110
感谢,开始做了!
Jane
Jane
作者
回复zeropoint0110
欢迎随时更贴~
lauren
lauren
我擦,我要基于这个结合yeelink做一个云数据采集监控
Berlina_Li
Berlina_Li
成功了,但是在想办法把pm10的数据转化成AQI空气污染指数。