57068| 55
|
[项目] 空气质量检测器 |
各位生活在帝都、魔都的朋友们是否会有这样的感慨:早晨一推开窗,浓重的雾霾天气,让你鼓不起勇气迈步杀进那个仿佛时刻在摧毁你五脏六腑的外面的世界。 看看下面的照片,制作一个PM2.5刻不容缓啊!! 硬件材料: 1. 粉尘传感器 3. IO传感器扩展板 V7 4. 转接模块 5. USB下载线 硬件连接: 1、I/O扩展板插在UNO上 2、粉尘传感器与转接板通过杜邦线连接 3、转接板上标有分别标有D和A的两个接口 D --> 数字口 2 A --> 模拟口 0 下图所示: 只要轻松的插上几根线就完成连接,是不是很方便呀? 下载代码,见附件。 我们先简单了解下粉尘传感器,可以对应代码一道看! (如果觉得不需要了解的话,往下都不需要看了,只需直接下载代码即可使用,打开串口就可以查看检测到的数据了,单位是毫克/立方米) 下面这张图是个粉尘传感器的内部结构图以及硬件说明: 粉尘传感器内部结构图 可以从图看出,在发射端,我们需要驱动一个红外发射管,也就是上图引脚3。对应程序中定义的ledPower。同样,我们也可以看出输出是上图对应的引脚5,输出的是模拟量,对应到程序中的measurePin。 那我们如何得到我们想要的值呢? 下图截自datasheet,你可以看出粉尘传感器的输出电压是几乎呈线性的。dustDensity = 0.17 * calcVoltage -0.1; 这个公式曲线近似转换过来的(来自ChrisNafis)。这里dustDensity是粉尘密度值,单位mg/m3。calcVoltage是输出电压值。 我们都知道输出0~5V电压对应UNO模拟口读出的是0~1023。calcVoltage= voMeasured * (5.0 / 1024.0); 这个公式就是模拟值转为电压值。voMeasured 模拟口输出量。 采用时间计算 根据datasheet,也就是下面的第二张图可看出,我们需要开启内部的LED并等待280us(微秒),之后再读取输出值。第一张图则表示,整个脉冲持续时间为320us。因此,我们还需再等待40us,才能将LED关闭。 以上就是对程序以及粉尘传感器工作原理的简单说明。 如果没有转接板的,那就接着看下面这张图。 我们需要在引脚1外接一个150欧的电阻,并且并联一个220uF的电容。这也就是我们使用转接板的原因,把这个部分在转接板上完成了,大大方便了连线,也增加了稳定性。 粉尘传感器对应的Arduino引脚:
照着连就可以了,连接完成之后,同样下载上面的样例代码。 |
816 Bytes, 下载次数: 36172
今天加了块LCD keypad shield和电池,update一下代码。
|
Jane 发表于 2015-3-17 09:55 楼主,我最近也在用这个这个粉尘传感器,但是有个问题就是:我在房间里边读出来的模拟值是0,这样密度按照公式算下来也就是-0.1了。我试着搞了一些烟雾,数据如图 直接就是最大值了。在窗外也测试一下,也是0,这样的数据感觉不正常啊。按照手册里输出电压和密度的图表,就算密度为0,输出电压算下来也是0.58左右。 还有我用的arduino uno它的微秒延时是不是很不准啊,采样的280us+40us=320us我用示波器看,都快接近500us了。如图: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed