Grove Dust Sensor

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Reference)
(Example code)
 
(未显示1个用户的9个中间版本)
第27行: 第27行:
 
  http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
  http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
   
 
   
  JST Pin 1 (Black Wire)  => //Arduino GND
+
  JST Pin 1 (Black Wire)  => //Arduino GND
  JST Pin 3 (Red wire)    => //Arduino 5VDC
+
  JST Pin 3 (Red wire)    => //Arduino 5VDC
  JST Pin 4 (Yellow wire) => //Arduino Digital Pin 8
+
  JST Pin 4 (Yellow wire) => //Arduino Digital Pin 8
 
  */
 
  */
 
   
 
   
 
int pin = 8;
 
int pin = 8;
 +
 
unsigned long duration;
 
unsigned long duration;
 
unsigned long starttime;
 
unsigned long starttime;
unsigned long sampletime_ms = 2000;//sampe 30s ;
+
 
 +
unsigned long sampletime_ms = 30000;   //sampe 30s
 +
 
 
unsigned long lowpulseoccupancy = 0;
 
unsigned long lowpulseoccupancy = 0;
 
float ratio = 0;
 
float ratio = 0;
第43行: 第46行:
 
   Serial.begin(9600);
 
   Serial.begin(9600);
 
   pinMode(8,INPUT);
 
   pinMode(8,INPUT);
   starttime = millis();//get the current time;
+
   starttime = millis();   //get the current time;
 
}
 
}
 
   
 
   
 
void loop() {
 
void loop() {
   duration = pulseIn(pin, LOW);
+
   duration = pulseIn(pin, LOW);   // return us
   lowpulseoccupancy = lowpulseoccupancy+duration;
+
   lowpulseoccupancy = lowpulseoccupancy + duration;
 
   
 
   
   if ((millis()-starttime) >= sampletime_ms)//if the sampel time = = 30s
+
   if ((millis()-starttime) >= sampletime_ms)   // if the sampel time = = 30s
 
   {
 
   {
     ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
+
    // Integer percentage 0=>100
     concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
+
     ratio = lowpulseoccupancy / (sampletime_ms * 10.0);
 +
 
 +
    // using spec sheet curve
 +
     concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62;
 +
 
 
     Serial.print("concentration = ");
 
     Serial.print("concentration = ");
 
     Serial.print(concentration);
 
     Serial.print(concentration);
     Serial.println(" pcs/0.01cf");
+
     Serial.println(" pcs/0.01cf, LowPulsOccu = ");
     Serial.println("\n");
+
     Serial.print(lowpulseoccupancy);
 +
    Serial.print(", Ratio = ");
 +
    Serial.println(ratio);
 +
 
 
     lowpulseoccupancy = 0;
 
     lowpulseoccupancy = 0;
 
     starttime = millis();
 
     starttime = millis();
第65行: 第75行:
  
 
<br><br>
 
<br><br>
 +
 +
== Output ==
 +
 +
[[文件:PPD42NS-Characteristics.jpg]]
 +
 +
<br>
  
 
== Reference ==
 
== Reference ==
第70行: 第86行:
 
* http://wiki.seeedstudio.com/Grove-Dust_Sensor/
 
* http://wiki.seeedstudio.com/Grove-Dust_Sensor/
 
* https://seeeddoc.github.io/Grove-Dust_Sensor/
 
* https://seeeddoc.github.io/Grove-Dust_Sensor/
* http://www.sca-shinyei.com/pdf/PPD42NS.pdf
+
* [https://publiclab.org/system/images/photos/000/010/161/original/Spec_PPD42NJ_Eng_SPP13001V00_20130319.pdf PPD42NS Datasheet]
  
 +
<br><br>
 +
<br><br>
 +
<br><br>
 +
<br><br>
 +
<br><br>
 
<br><br>
 
<br><br>

2018年10月25日 (四) 22:11的最后版本

目录

[编辑] 1 Overview

PPD42NS.JPG


  • Detectable range of concentration 0~28,000 / 0 ~ 8000 pcs/liter / pcs/0.01cf
  • Detecting the particle diameter >1μm
  • Output: Negative Logic, Digital output, High: over 4.0V(Rev.2), Low: under 0.7V
  • Weight 28g
  • VCC 4.75~5.75V
  • Standby Current Supply 90mA
  • Dimensions 59(W) × 45(H) × 22(D) mm


[编辑] 2 Example code

/*
Grove - Dust Sensor Demo v1.0
 Interface to Shinyei Model PPD42NS Particle Sensor
 Program by Christopher Nafis 
 Written April 2012
 
 http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html
 http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
 JST Pin 1 (Black Wire)  => //Arduino GND
 JST Pin 3 (Red wire)    => //Arduino 5VDC
 JST Pin 4 (Yellow wire) => //Arduino Digital Pin 8
 */
 
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);    // return us
  lowpulseoccupancy = lowpulseoccupancy + duration;
 
  if ((millis()-starttime) >= sampletime_ms)    // if the sampel time = = 30s
  {
    // Integer percentage 0=>100
    ratio = lowpulseoccupancy / (sampletime_ms * 10.0);

    // using spec sheet curve
    concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62;

    Serial.print("concentration = ");
    Serial.print(concentration);
    Serial.println(" pcs/0.01cf, LowPulsOccu = ");
    Serial.print(lowpulseoccupancy);
    Serial.print(", Ratio = ");
    Serial.println(ratio);

    lowpulseoccupancy = 0;
    starttime = millis();
  }
}



[编辑] 3 Output

PPD42NS-Characteristics.jpg


[编辑] 4 Reference













个人工具
名字空间

变换
操作
导航
工具箱