准备制作PM2.5检测仪 资料

Posted by 老沙
3月 27 2014

雾霾很严重

想买个PM2.5检测仪,网上一看都太贵,从400~8000。。。。。

然后查了查原理,很简单呀,就想做个PM2.5检测仪

晚上在网上逛了逛,发现了一个性价比很高的粉尘传感器,夏普的GP2Y1010AU0F

淘宝上卖27元,一下买了三个,做好了卖个试试,呵呵,加个有AD的单片机,一个锁存器,一个数显,成本应该50元之内

传感器PDF

gp2y1010au_e

下边的一些网上的资料

=====================================

使用夏普GP2Y1010AU0F灰尘传感器检测空气质量

夏普GP2Y1010AU0F灰尘传感器价格较便宜,能检测出室内空气中的灰尘和烟尘含量.

检测原理

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

pm1

pm2

pm3

pm4

 

 

 

根据电路图, 把Arduino和传感器连接起来:

  1. Sharp pin 1 (V-LED) => 5V 串联1个150欧姆的电阻(最好在电阻一侧和GND之间再串联一个220uf的电容)
  2. Sharp pin 2 (LED-GND) => GND
  3. Sharp pin 3 (LED) => Arduino PIN 2 (开关LED)
  4. Sharp pin 4 (S-GND) => GND
  5. Sharp pin 5 (Vo) => Arduino A0 pin (空气质量数据通过电压模拟信号输出)
  6. Sharp pin 6 (Vcc) => 5V

 

  1. /*
  2. Interface to Sharp GP2Y1010AU0F Particle Sensor
  3. Program by Christopher Nafis
  4. Written April 2012
  5. http://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf
  6. http://sensorapp.net/?p=479
  7. Sharp pin 1 (V-LED)   => 5V (connected to 150ohm resister)
  8. Sharp pin 2 (LED-GND) => Arduino GND pin
  9. Sharp pin 3 (LED)     => Arduino pin 2
  10. Sharp pin 4 (S-GND)   => Arduino GND pin
  11. Sharp pin 5 (Vo)      => Arduino A0 pin
  12. Sharp pin 6 (Vcc)     => 5V
  13. */
  14. #include<SPI.h>
  15. #include<stdlib.h>
  16. intdustPin=0;
  17. intledPower=2;
  18. intdelayTime=280;
  19. intdelayTime2=40;
  20. floatoffTime=9680;
  21. intdustVal=0;
  22. inti=0;
  23. floatppm=0;
  24. char s[32];
  25. floatvoltage=0;
  26. floatdustdensity=0;
  27. floatppmpercf=0;
  28. voidsetup(){
  29.  Serial.begin(9600);
  30.   pinMode(ledPower,OUTPUT);
  31.  // give the ethernet module time to boot up:
  32.   delay(1000);
  33.   i=0;
  34.   ppm=0;
  35. }
  36. voidloop(){
  37.   i=i+1;
  38.   digitalWrite(ledPower,LOW);// power on the LED
  39.   delayMicroseconds(delayTime);
  40.   dustVal=analogRead(dustPin);// read the dust value
  41.   ppm=ppm+dustVal;
  42.   delayMicroseconds(delayTime2);
  43.   digitalWrite(ledPower,HIGH);// turn the LED off
  44.   delayMicroseconds(offTime);
  45.   voltage=ppm/i*0.0049;
  46.   dustdensity=0.17*voltage-0.1;
  47.   ppmpercf=(voltage-0.0256)*120000;
  48.  if(ppmpercf<0)
  49.     ppmpercf=0;
  50.  if(dustdensity<0)
  51.     dustdensity=0;
  52.  if(dustdensity>0.5)
  53.     dustdensity=0.5;
  54.  StringdataString=””;
  55.   dataString+=dtostrf(voltage,9,4,s);
  56.   dataString+=”,”;
  57.   dataString+=dtostrf(dustdensity,5,2,s);
  58.   dataString+=”,”;
  59.   dataString+=dtostrf(ppmpercf,8,0,s);
  60.   i=0;
  61.   ppm=0;
  62.  Serial.println(dataString);
  63.   delay(1000);
  64. }

把传感器和Ardiuno连接好后,可以连续打印出传感器的输出电压值。输出电压大小和灰尘含量的曲线入下图:

pm5

pm6

pmp1

pmp2

pmp3

pmp4

pmp5

9 Responses

  1. dzg说道:

    这个夏普的PM2.5检测精度如何呢?也想自己弄一个玩玩。

  2. xustrive说道:

    套件还有没有,想整一个玩~

  3. 杨健说道:

    试过了,楼主的源代码”编译有误“!!!

  4. 杨健说道:

    提示是:41,42句错误!

Trackback URL for this entry