赞
踩
一、传感器的概述
GP2Y1010AUOF是日本夏普公司开发的一款光学灰尘浓度检测传感器。此传感器内部成对角分布的红外发光二极管和光电晶体管,利用光敏原理来工作。用于检测特别细微的颗粒,如香烟颗粒、细微灰尘。依靠输出脉冲的高度来判断颗粒浓度。
供电电压;5-7V
工作温度;-10-65℃
监测最小直径;0.8μm
夏普GP2Y1010AU0F灰尘传感器价格较便宜,只能检测出室内空气中的灰尘和烟尘含量.并不能测出所谓的PM2.5浓度,然而现在市面上有好多红外发光二极管的传感器都称自己是PM2.5传感器,能测PM2.5的值,其实并不是,真正能测PM2.5浓度的是那种上百的激光传感器,这种红外的连PM10都测不了,只能用来玩玩,或者大概描述空气质量的等级而已,经我多次实验,发现这传感器显示的灰尘浓度与网上公布的AQI空气质量指数比较接近,跟真实的PM2.5浓度有很大的区别,这测出的灰尘浓度其实就是所有不同直径的颗粒物总和,里面包含了PM1.0,PM2.5,PM10。
二、硬件连接
传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。
三、检测原理
GP2Y1010AU 插上电源后 1 秒内会稳定、正常地运作,可以进行检出。
对 GP2Y1010AU 输出电压的绝对值,并不是判定检出的有无,使用方法是:无尘时,从输出电压的变化量来做判定。
另外,可以根据输出电平时间上的变化来对检出对象物的种别进行判别。
关于一般被采用的灰尘和烟的判别方法,一般,香烟的烟是细微粒子,密度高,会扩散式的大范围漂移。与此相比,灰尘是一个一个大颗粒,密度低,断断续续式的进入灰尘传感器的检出领域。 就如下图所述,烟是连续的表现出较高的输出电压,灰尘是间隔的表现出较高的输出电压。因此,根据传感器的输出电压(发光素子和已同期的脉冲输出电压值)在时间上的推移向微机软件的读取,是否尘/是否有烟/是否有灰尘,不管是哪种状态,及空气污染的程度是多少,都可以进行检出。
灰尘的检出是在规定时间内,在某一输出电压变化的标准以上,判定在某一时间
的输出被记入什么,从而检出灰尘的有无
四、特性
根据技术手册可知,当空气洁净的时候,Vo的范围是0~1.5V,典型值是0.9V。
当空气灰尘浓度很高的时候,Vo的数值大于3.6V。但是该传感器输出的最大电压为3.6V,所以当灰尘浓度再增加时,我们这款传感器已经测不出了。
五、程序代码
#include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char //宏定义 //下载资源可见端口定义 /*****************************???????? *********************************************/ void lcd_init()//?????????// { delay1ms(15); wr_com(0x38); delay1ms(5); wr_com(0x01); delay1ms(5); wr_com(0x06); delay1ms(5); wr_com(0x0c); delay1ms(5); wr_com(0x80); wr_dat('P');// wr_com(0x81); wr_dat('M');//: wr_com(0x82); wr_dat('2');// wr_com(0x83); wr_dat('.');//: wr_com(0x84); wr_dat('5');//: wr_com(0x85); wr_dat(':'); wr_com(0x8b); wr_dat('m'); wr_com(0x8c); wr_dat('g'); wr_com(0x8d); wr_dat('/'); wr_com(0x8e); wr_dat('m'); wr_com(0x8f); wr_dat('3'); wr_com(0xc0); wr_dat('A'); wr_com(0xc1); wr_dat('l'); wr_com(0xc2); wr_dat('a'); wr_com(0xc3); wr_dat('r'); wr_com(0xc4); wr_dat('m'); wr_com(0xc5); wr_dat(':'); wr_com(0xcb); wr_dat('m'); wr_com(0xcc); wr_dat('g'); wr_com(0xcd); wr_dat('/'); wr_com(0xce); wr_dat('m'); wr_com(0xcf); wr_dat('3'); } uchar Error_Correct(uchar *str,uchar num) { unsigned char i=0; unsigned char j=0; unsigned char Temp=0; //???? for(i=0;i<num-1;i++) { for(j=i+1;j<num;j++) { if(str[i]<str[j]) { Temp=str[i]; str[i]=str[j]; str[j]=Temp; } } } //去除误差取中间值 return str[num/2]; } //主函数 void main(void) { InitTimer(); /初始化定时器 BEEP=1; lcd_init();//初始化lcd delay1ms(500); while(1) { checkkey();//按键检测 if(set_st==0) { if(FlagStart==1) //1次数据采集完成 { num++; ADC_Get[num]=abc; if(num>9) { num=0; DUST=Error_Correct(ADC_Get,10); DUST_Value=(DUST/256.0)*5;//转化成电压值 DUST_Value=(DUST_Value*0.17-0.1)*1000;//固体悬浮颗粒 if(DUST_Value<0) DUST_Value=0; if(DUST_Value>760) DUST_Value=760; //限位 DUST=(uint)DUST_Value; } TL0 = (65536-10000)/256; TH0 = (65536-10000)%256; TR0 = 1; //开始定时器 EA = 1; FlagStart=0; } Alarm(); //报警 } disp(DUST);//显示粉尘浓度 baojing();//显示报警值 if(set_st==1) { wr_com(0xca); wr_com(0x0d); delay1ms(150); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。