空气质量检测仪样机
本帖最后由 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点得污染度比较低,果然,电视上说,晨练过早不好是有一定科学根据的,总结来说,城市里,污染什么的。一直都那么高。。。。
首先顶一个
然后发现一个小bug:
24 for (int i =0; i<=10; i++) //循环检测10次结果 并且累加
循环了11次
{:soso_e114:} 才看到迷你强的处女贴。。。。 好贴,支持一下! 能否出一个装配、安装及使用手册?
有兴趣动手做几个……
我想问一下,你用的arduino板,正式使用的时候要不要加个看门狗的? b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂 wunanyx 发表于 2013-7-30 16:37 static/image/common/back.gif
b = a/zjdz*brdz里的zjdz和brdz是什么?没看懂
那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。 迷你强 发表于 2013-7-30 21:47 static/image/common/back.gif
那个就自然略过吧。。坑爹的算法,我这两天重新做一个。。。。。
我买了个mq138,测甲醛的,不过不知道输出的值到底跟浓度的换算公式是什么 {:soso_e179:} 见识一下,没有见过 取得结果的单位是什么? pm2.5么? 我也想做。。。。。求教,,求资料的网址 如何矫正是一个很大的问题 davidce 发表于 2012-1-21 11:40 static/image/common/back.gif
首先顶一个
然后发现一个小bug:
24 for (int i =0; i
运行11次才是正常
不是BUG
页:
[1]
2