使用夏普GP2Y1010AU0F灰尘传感器检测空气质量 - 推酷
使用夏普GP2Y1010AU0F灰尘传感器检测空气质量
灰尘传感器价格较便宜,能检测出室内空气中的灰尘和烟尘含量。另外还有韩国SYHITECH生产的
粉尘传感器也有类似功能。
其原理如下图,传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。
因为数据是通过pin 5的电压模拟信号输出的,而树莓派的引脚不支持模拟信号直接读取(需要增加数模转换芯片),所以先用Arduino来实验。
Arduino 代码
根据电路图, 把Arduino和传感器连接起来:
Sharp pin 1 (V-LED) =& 5V 串联1个
(最好在电阻一侧和GND之间再串联一个
Sharp pin 2 (LED-GND) =& GND
Sharp pin 3 (LED) =& Arduino PIN 2 (开关LED)
Sharp pin 4 (S-GND) =& GND
Sharp pin 5 (Vo) =& Arduino A0 pin (空气质量数据通过电压模拟信号输出)
Sharp pin 6 (Vcc) =& 5V
Interface to Sharp GP2Y1010AU0F Particle Sensor
Program by Christopher Nafis
Written April 2012
/datasheets/Sensors/gp2y1010au_e.pdf
http://sensorapp.net/?p=479
Sharp pin 1 (V-LED)
=& 5V (connected to 150ohm resister)
Sharp pin 2 (LED-GND) =& Arduino GND pin
Sharp pin 3 (LED)
=& Arduino pin 2
Sharp pin 4 (S-GND)
=& Arduino GND pin
Sharp pin 5 (Vo)
=& Arduino A0 pin
Sharp pin 6 (Vcc)
#include &SPI.h&
#include &stdlib.h&
int dustPin=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
int dustVal=0;
float ppm=0;
char s[32];
float voltage = 0;
float dustdensity = 0;
float ppmpercf = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
// give the ethernet module time to boot up:
delay(1000);
void loop(){
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin); // read the dust value
ppm = ppm+dustV
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(offTime);
voltage = ppm/i*0.0049;
dustdensity = 0.17*voltage-0.1;
ppmpercf = (voltage-0.;
if (ppmpercf & 0)
ppmpercf = 0;
if (dustdensity & 0 )
dustdensity = 0;
if (dustdensity & 0.5)
dustdensity = 0.5;
String dataString = &&;
dataString += dtostrf(voltage, 9, 4, s);
dataString += &,&;
dataString += dtostrf(dustdensity, 5, 2, s);
dataString += &,&;
dataString += dtostrf(ppmpercf, 8, 0, s);
Serial.println(dataString);
delay(1000);
把传感器和Ardiuno连接好后,可以连续打印出传感器的输出电压值。输出电压大小和灰尘含量的曲线入下图:
通过电压的波形还可以判断是烟还是尘呢。。。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致查看: 4051|回复: 7
有人用过夏普GP2Y1010AU0F粉尘传感器吗,有的话帮忙解答一下问题吧。(已解决)
主题帖子精华
中级会员, 积分 222, 距离下一级还需 278 积分
在线时间0 小时
我用stm32按照传感器手册上的要求用pwm驱动它,但是读出的数值总是4V多,而且不变,这是怎么回事啊?
主题帖子精华
金钱106173
在线时间675 小时
帮顶,没用过这个料,看看数据手册吧。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 222, 距离下一级还需 278 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
先谢谢原子哥,我再找找原因看看。
主题帖子精华
中级会员, 积分 222, 距离下一级还需 278 积分
在线时间0 小时
第一次用这东西,弄了些奇怪的问题。
&&是这么回事:我在传感器的进气孔里穿过几条线固定,就是这几条线会影响传感器的工作,因为传感器是靠led发光,内部有能测量空气折射相关的东西,检测空气里灰尘多少折射会不同。我穿过的几条线会遮挡到led的光,所以内部接收处以为粉尘浓度很大,光透不过来,读数很大。所以出现刚开始的问题。
主题帖子精华
新手上路, 积分 21, 距离下一级还需 29 积分
在线时间0 小时
回复【楼主位】jikaishihuaidan:
---------------------------------
能贴一下接口电路么?我怎么测试只有0.2v左右,把孔里面插个东西就变成0V了,求帮助。。。
qq&,非常感谢。。
主题帖子精华
中级会员, 积分 222, 距离下一级还需 278 积分
在线时间0 小时
回复【5楼】amoryou:
---------------------------------
你去看看这个帖子,电路连接是网上找的。注意千万不不能再通风孔里放东西!不然就会有问题。
/posts/list/14534.htm
主题帖子精华
中级会员, 积分 222, 距离下一级还需 278 积分
在线时间0 小时
我按照这个图连的,把msp340换成stm32就行了。
06d81cc4b94e52afd8b65d6445ccad3c_614.jpg (0 Bytes, 下载次数: 24)
22:54 上传
主题帖子精华
新手上路, 积分 7, 距离下一级还需 43 积分
在线时间0 小时
你好,我也要做这个毕业设计,你能把你用STM32读取夏普GPY1010和用PWM驱动的程序代码给我吗?求,我的邮箱谢谢大神
Powered by