534659123 发表于 2012-1-17 11:42:15

空气质量检测仪样机

本帖最后由 534659123 于 2012-1-17 11:58 编辑

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

看图说话:


这个呢就是mq135啦,当然还有其他的封装方式
他有六个脚,左边三个右边三个

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

使用板载5V供电接口提供的5V电源接到H脚,另外的H脚接地(有条件的加热电路独立供电,注意传感器预热最好不低于半个小时,说明书上说预热要48个小时。。。。),然后将上下脚两两并联。。。左边的给5V检测电压(检测用,从数字口或则供电口取电,我的程序没有写从数字口供电,有需要的自己加上),右边的接口接模拟检测A0口,在检测端并联一个3K欧姆的电阻到地线作为分压电阻,提高检测精度,然后将板子接上外接电源(USB接口可能会供电不足,影响检测),将程序下载到arduino里。
程序如下:
/*串口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);                                       //等待一分钟
}
本程序带有SD卡的存储功能,不想用就直接无视,如果同时想使用SD卡的话,照下图进行连接
http://www.geek-workshop.com/data/attachment/forum/201109/10/13380694ylllll9vsjjoom.jpg
或者参考此帖:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=104&extra=page%3D4
只能看接线哟

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


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


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

davidce 发表于 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

好贴,支持一下!

Tyro 发表于 2012-9-4 17:58:01

能否出一个装配、安装及使用手册?

有兴趣动手做几个……

gujialin 发表于 2013-6-29 09:00:03

我想问一下,你用的arduino板,正式使用的时候要不要加个看门狗的?

wunanyx 发表于 2013-7-30 16:37:36

b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂

迷你强 发表于 2013-7-30 21:47:10

wunanyx 发表于 2013-7-30 16:37 static/image/common/back.gif
b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂

那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。

wunanyx 发表于 2013-7-30 23:43:08

迷你强 发表于 2013-7-30 21:47 static/image/common/back.gif
那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。

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

daxia108000 发表于 2013-8-10 21:41:23

{:soso_e179:}

wfbaaa 发表于 2013-10-14 10:39:53

见识一下,没有见过

zoologist 发表于 2013-10-14 13:21:50

取得结果的单位是什么? pm2.5么?

伟大的天才 发表于 2013-11-13 23:03:30

我也想做。。。。。求教,,求资料的网址

zoologist 发表于 2013-12-10 15:58:55

如何矫正是一个很大的问题

i7456 发表于 2013-12-10 16:23:22

davidce 发表于 2012-1-21 11:40 static/image/common/back.gif
首先顶一个
然后发现一个小bug:
24 for (int i =0; i

运行11次才是正常
不是BUG
页: [1] 2
查看完整版本: 空气质量检测仪样机