基于stm32的PM2.5传感器程序 GP2Y粉尘传感器

下面是我在网上翻阅资料拷贝的

淘宝上好像有

夏普光学灰尘传感器(GP2Y1010AU0F)在检测非常细的颗粒,如香烟烟雾,是特别有效的,

并且是常用的空气净化器系统。

 该装置中,一个红外发光二极管和光电晶体管,对角布置成允许其检测到在空气中的灰尘反射光。

该传感器具有极低的电流消耗(最大20mA,11毫安典型的),可以搭载高达7VDC的传感器。输出的是一个模拟电压正比于所测得的粉尘浓度,敏感性为0.5V/0.1mg/m3。

电源电压:5-7V

工作温度:-10-65摄氏度

消耗电流:20mA最大

最小粒子检出值:0.8微米

灵敏度:0.5V/(0.1mg/m3)

清洁空气中电压:0.9V  典型值

工作温度:-10~65℃

存储温度:-20~80℃

使用寿命:5年

尺寸大小:46mm×30mm×17.6mm

重量大小:15g

 

检测原理

其原理如下图,传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。

使用测试代码: 

int dustPin=0;

float dustVal=0;

 

int ledPower=2;

int delayTime=280;

int delayTime2=40;

float offTime=9680;

void setup(){

Serial.begin(9600);

pinMode(ledPower,OUTPUT);

pinMode(dustPin, INPUT);

}

 

void loop(){

// ledPower is any digital pin on the arduino connected to Pin 3 on the sensor

digitalWrite(ledPower,LOW); 

delayMicroseconds(delayTime);

dustVal=analogRead(dustPin); 

delayMicroseconds(delayTime2);

digitalWrite(ledPower,HIGH); 

delayMicroseconds(offTime);

 

delay(1000);

if (dustVal>36.455)

Serial.println((float(dustVal/1024)-0.0356)*120000*0.035);

}

测试得到的数据和空气质量对照:

3000 + = 很差

1050-3000 = 差

300-1050 = 一般

150-300 = 好

75-150 = 很好

0-75 = 非常好

 

 

通过看手册

有一个重要的关系就是输出电压和浓度的关系

QQ截图20150520185449.jpg

在电压小于3.5v大于0.5的情况下  ,电压和浓度成一个线型比例的。

浓度N= K* V;

K=N/V.约等于0.13;

当我们用stm32的12位的ADC采集数值后先变成电压,让value*3300/4096便是电压值,然后乘以0.13便得到mg/m3了

sitemap