PM2.5检测

2 篇文章 0 订阅
1 篇文章 0 订阅

PM2.5检测

一、传感器的概述

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);
  }
 }
}
 
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值