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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

检测原理

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

电路图

因为数据是通过pin 5的电压模拟信号输出的,而树莓派的引脚不支持模拟信号直接读取(需要增加数模转换芯片),所以先用Arduino来实验。

Arduino 代码

根据电路图,把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.

6./pic//datasheets/Sensors/gp2y1010au_e.pdf

7./pic//?p=479

8.

9.Sharp pin 1 (V-LED) => 5V (connected to 150ohm resister)

10.Sharp pin 2 (LED-GND) => Arduino GND pin

11.Sharp pin 3 (LED) => Arduino pin 2

12.Sharp pin 4 (S-GND) => Arduino GND pin

13.Sharp pin 5 (Vo) => Arduino A0 pin

14.Sharp pin 6 (Vcc) => 5V

15.*/

16.#include

17.#include

18.

19.int dustPin=0;

20.int ledPower=2;

21.int delayTime=280;

22.int delayTime2=40;

23.float offTime=9680;

24.

25.int dustVal=0;

26.int i=0;

27.float ppm=0;

28.char s[32];

29.float voltage=0;

30.float dustdensity=0;

31.float ppmpercf=0;

32.

33.void setup(){

34.Serial.begin(9600);

35. pinMode(ledPower,OUTPUT);

36.

37.// give the ethernet module time to boot up:

38. delay(1000);

39.

40. i=0;

41. ppm=0;

42.}

43.

44.void loop(){

45. i=i+1;

46. digitalWrite(ledPower,LOW);// power on the LED

47. delayMicroseconds(delayTime);

48. dustVal=analogRead(dustPin);// read the dust value

49. ppm=ppm+dustVal;

50. delayMicroseconds(delayTime2);

51. digitalWrite(ledPower,HIGH);// turn the LED off

52. delayMicroseconds(offTime);

53.

54. voltage=ppm/i*0.0049;

55. dustdensity=0.17*voltage-0.1;

56. ppmpercf=(voltage-0.0256)*120000;

57.if(ppmpercf<0)

58. ppmpercf=0;

59.if(dustdensity<0)

60. dustdensity=0;

61.if(dustdensity>0.5)

62. dustdensity=0.5;

63.String dataString="";

64. dataString+=dtostrf(voltage,9,4,s);

65. dataString+=",";

66. dataString+=dtostrf(dustdensity,5,2,s);

67. dataString+=",";

68. dataString+=dtostrf(ppmpercf,8,0,s);

69. i=0;

70. ppm=0;

71.Serial.println(dataString);

72. delay(1000);

73.}

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

通过电压的波形还可以判断是烟还是尘呢…

相关文档
最新文档