极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17207|回复: 16

空气质量检测仪样机

[复制链接]
发表于 2012-1-17 11:42:15 | 显示全部楼层 |阅读模式
本帖最后由 534659123 于 2012-1-17 11:58 编辑

基于MQ135传感器的检测仪实验0号机

看图说话:
1101xxx.jpg

这个呢就是mq135啦,当然还有其他的封装方式
他有六个脚,左边三个右边三个
mq135.jpg
两边脚的中间那个脚,叫H端,是加热丝,这玩意需要提供5V电,不低于130mA的电流,用于传感器的加热
然后后上下的脚和对面的的脚AB对应、、、也就是说,上面的脚和对面上面的脚相通,下面的同对面下面的相通,所有脚不分正负极,上下的脚功能相同,就是测试其电阻值获得空气质量信息的(其实里面就是一个热电阻,具体请参考手册),可以并联使用也可以只用一个。。。手册上说要求并联使用。然后接线很简单了。。

使用板载5V供电接口提供的5V电源接到H脚,另外的H脚接地(有条件的加热电路独立供电,注意传感器预热最好不低于半个小时,说明书上说预热要48个小时。。。。),然后将上下脚两两并联。。。左边的给5V检测电压(检测用,从数字口或则供电口取电,我的程序没有写从数字口供电,有需要的自己加上),右边的接口接模拟检测A0口,在检测端并联一个3K欧姆的电阻到地线作为分压电阻,提高检测精度,然后将板子接上外接电源(USB接口可能会供电不足,影响检测),将程序下载到arduino里。
程序如下:
[code=cpp]/*串口SD卡双输出程序,既可以链接电脑实时监视数据,也可以离线供电自动存储数据以备分析*/

#include <SD.h>
int zjdz = 3000;                  //定义自己使用的并联电阻 (单位是欧姆)
int brdz = 3000;                 //其他人的使用的电阻值(用来计算让的的检测结果等效于别人的,自己玩的话就和上面一样写)
void setup()
{
Serial.begin(9600);              //设置串口传输速率
SD.begin(4);
for (int i=0; i<100; i++)          //预热15分钟(进度显示程序)
   {
Serial.print("Warming:");
Serial.print(i);
Serial.println("%");
  delay(9000);
    }
}

void loop()
{
        float a=0;                     
    float b=0;
        float c=0;                 //初始化
for (int i =0; i<=10; i++)     //循环检测10次结果 并且累加
{
      a =  analogRead(A0);                                                                                                                                                               ;
      b = a/zjdz*brdz;        //设个就是所谓的电阻值等效计算了。。。。
            c = c+b;
    delay(100);                //等待一会
}
Serial.println(c/10);       //求10次的平均数

File dataFile = SD.open("datalog.txt",FILE_WRITE);   
//在SD卡上打开(没有就自动创建)一个叫datalog.txr的文件,并且移动到文件末尾
dataFile.println(c/10);                               //写入检测数据
dataFile.close();                                     //关闭文件
delay(60000);                                         //等待一分钟
}[/code]
本程序带有SD卡的存储功能,不想用就直接无视,如果同时想使用SD卡的话,照下图进行连接

或者参考此帖:http://www.geek-workshop.com/for ... &extra=page%3D4
只能看接线哟

so 最终的连接好的图就是酱紫的:
111111.jpg

我用三个1k的电阻串联。然后检测电压加热电压并联到5V电源口,使用1A的12V的外部电源,由板子稳压到5V保证供电充足,采用SD卡存数数据,程序就是上面的程序最后成果如下:
1101.jpg

目前原型机的问题如下。无法校准传感器,因为每只传感器都有细微的区别,而且,电阻的精度也会影响数值的准确度,而且没有其他数据进行佐证。需要较多的设备在各地监测,然后才能确定。  mq135传感器空气湿度对其精度有一定的影响,以后需要做湿度补偿。目前就是大概从图形上看出,晚上越晚,空气质量越好,早上7-8点会有个小高峰,随后又继续降低。
凌晨1点-早晨6点得污染浓度没有明显降低,6-7点得污染度比较低,果然,电视上说,晨练过早不好是有一定科学根据的,总结来说,城市里,污染什么的。一直都那么高。。。。
回复

使用道具 举报

发表于 2012-1-21 11:40:20 | 显示全部楼层
首先顶一个
然后发现一个小bug:
24 for (int i =0; i<=10; i++)     //循环检测10次结果 并且累加
循环了11次
回复 支持 反对

使用道具 举报

发表于 2012-1-21 12:03:42 | 显示全部楼层
{:soso_e114:} 才看到迷你强的处女贴。。。。
回复 支持 反对

使用道具 举报

发表于 2012-2-21 00:08:17 | 显示全部楼层
好贴,支持一下!
回复 支持 反对

使用道具 举报

发表于 2012-9-4 17:58:01 | 显示全部楼层
能否出一个装配、安装及使用手册?

有兴趣动手做几个……

回复 支持 反对

使用道具 举报

发表于 2013-6-29 09:00:03 | 显示全部楼层
我想问一下,你用的arduino板,正式使用的时候要不要加个看门狗的?
回复 支持 反对

使用道具 举报

发表于 2013-7-30 16:37:36 | 显示全部楼层
b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂
回复 支持 反对

使用道具 举报

发表于 2013-7-30 21:47:10 | 显示全部楼层
wunanyx 发表于 2013-7-30 16:37
b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂

那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-7-30 23:43:08 | 显示全部楼层
迷你强 发表于 2013-7-30 21:47
那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。

我买了个mq138,测甲醛的,不过不知道输出的值到底跟浓度的换算公式是什么
回复 支持 反对

使用道具 举报

发表于 2013-8-10 21:41:23 | 显示全部楼层
{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2013-10-14 10:39:53 | 显示全部楼层
见识一下,没有见过
回复 支持 反对

使用道具 举报

发表于 2013-10-14 13:21:50 | 显示全部楼层
取得结果的单位是什么? pm2.5么?
回复 支持 反对

使用道具 举报

发表于 2013-11-13 23:03:30 | 显示全部楼层
我也想做。。。。。求教,,求资料的网址
回复 支持 反对

使用道具 举报

发表于 2013-12-10 15:58:55 | 显示全部楼层
如何矫正是一个很大的问题
回复 支持 反对

使用道具 举报

发表于 2013-12-10 16:23:22 | 显示全部楼层
davidce 发表于 2012-1-21 11:40
首先顶一个
然后发现一个小bug:
24 for (int i =0; i

运行11次才是正常
不是BUG
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2020-7-5 03:29 , Processed in 0.057880 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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