1 简介 PM2.5粉尘传感器(PPD42)由日本顶级传感器厂商SHINYEI生产。通过给定的单位时间内,计算低脉冲时间,来测量空气中的颗粒物水平,为您提供可靠的粉尘数据。该传感器能够检测>1um的颗粒直径,MP2.5的颗粒直径是<=2.5um,所以可以作为PM2.5的参考,但不能用于直接测量,真正测量PM2.5的设备也不止这个钱了。 2 产品特点1、PWM方式输出,易于捕获; 2、兼容3.3V和5V逻辑输入; 3、结构紧凑,重量轻; 4、容易安装; 5、低功耗; 6、性价比高。 3 工作原理
图3.1 粉尘传感器原理图 微粒和分子在光的照射下会产生光的散射现象,如上图所示,当有粉尘时,LED的光会因为散射现象,光会被接收传感器所接收,在通过电路解析输出PWM,可以简单理解成:无反射光时输出1,有反射光时0,内部有个气流发生器,就是一个加热装置,用于产生热,使气流在传感器内部流动。 4 端口定义有5个端口,但实际中只使用1、3、4这3个端口,详细端口请看《PM2.5粉尘传感器PPD42数据手册_EN》 1:GND; 3:VCC(3.3V~5V); 4:OUTPUT。 图4.1 端口序号 上图表明了输出端口号,从右往左,端口号为1、2、3、4、5。 5 使用注意事项1、使用前需要预热3分钟,使气体均匀流动; 2、垂直于水平面安装,使得进气孔在下,出气孔在上,保证空气流动性; 3、需要用黑色纸片或其他物体,将红色长方形部位覆盖,防止环境光影响传感器检测; 4、在出厂前已经预设,无需调节滑动变阻器; 5、安装在室内时,请勿将传感器安装在窗口、风扇出风方向等空气流动不稳定区域。 6 模块与Arduino连接模块电源接与Arduino的5V引脚,引脚4(OUTPUT)接pin 8。 7 实验代码[C] 纯文本查看 复制代码 int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup() {
Serial.begin(9600);
pinMode(8,INPUT);
starttime = millis();//get the current time;
}
void loop() {
duration = pulseIn(pin, LOW);
lowpulseoccupancy = lowpulseoccupancy+duration;
if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
{
ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
Serial.print(lowpulseoccupancy);
Serial.print("concentration = ");
Serial.print(concentration);
Serial.println(" pcs/0.01cf");
Serial.println("\n");
lowpulseoccupancy = 0;
starttime = millis();
}
}
程序实现功能:检测30ms内,低电平的时间,ratio的值是去掉%的百分数所以ratio的值介于(0,100)。concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62这个公式是根据下图曲线而来。 8 下载与测试 图8.1 测试结果对比 可以明显看出测得的数据有一个跃变的过程,而且上侧的结果都已经“爆表”了,这是因为在实验时,在进气孔处点了一个蚊香,将蚊香移走稳定后得到1000以内的数据。 值与环境状况对照表: 到此,您就可以测量一下您现在所处空间的环境状况了。
此文件主要包含:1:PM2.5粉尘传感器PPD42使用手册
2:PM2.5粉尘传感器PPD42数据手册_EN
3:Arduino例程
4:stm32例程
|