Difference between revisions of "Dust Sensor"
(Created page with " 400px") |
|||
Line 1: | Line 1: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == Introduction == | ||
+ | |||
+ | This Dust Sensor measures the Particulate Matter level in air by counting the Lo Pulse Occupancy time(LPO time) in given time unit. LPO time is in proportion to PM concentration. This sensor can provide you pretty reliable data for your PM2.5 project or air purifier system because it's still responsive to particulates whose diameter is 1um. | ||
[[File:Dustsensor.JPG|400px]] | [[File:Dustsensor.JPG|400px]] | ||
+ | |||
+ | |||
+ | == Features == | ||
+ | |||
+ | * Highly responsive | ||
+ | * Reliable | ||
+ | * ROHS/PEACH compliant | ||
+ | '''Note:''' | ||
+ | New version updates output Hi Voltage from Approx. over 4.0V change to Approx over 4.5V. | ||
+ | |||
+ | == Application Ideas == | ||
+ | |||
+ | *Dust emission monitor | ||
+ | *[http://www.howmuchsnow.com/arduino/airquality/grovedust/ Air Quality Monitoring] | ||
+ | |||
+ | == Cautions == | ||
+ | |||
+ | * Please keep it upright. | ||
+ | * 3 min preheat time is required when used at the first time. | ||
+ | * Arbitrary operation may cause unexpected damage. | ||
+ | * Pins VR1 and VR2 come preset. Please DON'T change the default configuration. | ||
+ | |||
+ | ==Specification== | ||
+ | |||
+ | {| border="1" cellspacing="0" width="80%"|- | ||
+ | !Items | ||
+ | !Min | ||
+ | !Norm | ||
+ | !Max | ||
+ | !Unit | ||
+ | |- | ||
+ | | align="center" | VCC | ||
+ | | align="center" | 4.75 | ||
+ | | align="center" | - | ||
+ | | align="center" | 5.25 | ||
+ | | align="center" | V | ||
+ | |- | ||
+ | | align="center" | Standby Current Supply | ||
+ | | align="center" | - | ||
+ | | align="center" | 90 | ||
+ | | align="center" | - | ||
+ | | align="center" | mA | ||
+ | |- | ||
+ | | align="center" | Detectable range of concentration | ||
+ | | align="center" | - | ||
+ | | align="center" | 0~28,000 | ||
+ | | align="center" | - | ||
+ | | align="center" | pcs/liter | ||
+ | |- | ||
+ | | align="center" | Operating Temperature Range | ||
+ | | align="center" | 0 | ||
+ | | align="center" | - | ||
+ | | align="center" | 45 | ||
+ | | align="center" | °C | ||
+ | |- | ||
+ | | align="center" | Output Method | ||
+ | | align="center" colspan="5" | Negative Logic, Digital output,Hi over 4.0V(Rev.2) Lo: under 0.7V | ||
+ | |- | ||
+ | | align="center" | Detecting the particle diameter | ||
+ | | align="center" colspan="5" | >1 um | ||
+ | |- | ||
+ | | align="center" | Dimensions | ||
+ | | align="center" colspan="5" |59(W) × 45(H) × 22(D) [mm] | ||
+ | |- | ||
+ | | align="center" | Humidity Range | ||
+ | | align="center" colspan="5" |95%rh or less | ||
+ | |} | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Usage == | ||
+ | |||
+ | Here is a demo to show you how to obtain PM concentration data from this Grove - Dust Sensor. | ||
+ | |||
+ | 1. Plug the dust sensor into digital port D8 on the [[Grove - Base Shield]]. It can only be D8, because the operation of this sensor involves sampling, a function only can be achieved by D8, the capture input pin of Atmage328P, on Arduino/Seeeduino. <br> | ||
+ | [[File:Dust Sensor Connector.jpg|700px]]<br> | ||
+ | 2. Copy and paste the demo code below to a new Arduino sketch. | ||
+ | <pre>/* Grove - Dust Sensor Demo v1.0 | ||
+ | Interface to Shinyei Model PPD42NS Particle Sensor | ||
+ | Program by Christopher Nafis | ||
+ | Written April 2012 | ||
+ | |||
+ | 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); | ||
+ | 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(","); | ||
+ | Serial.print(ratio); | ||
+ | Serial.print(","); | ||
+ | Serial.println(concentration); | ||
+ | lowpulseoccupancy = 0; | ||
+ | starttime = millis(); | ||
+ | } | ||
+ | }</pre> | ||
+ | In this program, the seeeduino samples the total duration of "logic low" in 30s, and this duration illustrates the dust density of environment. Open serial monitor, we can read air quality's value detected by sensor from pc serial port.<br> [[Image:Dust Sensor Output Score.jpg]] | ||
+ | |||
+ | The result above consists of three parts: lowpulseoccupancy, ratio and concentration. | ||
+ | |||
+ | "lowpulseoccupancy" represents the Lo Pulse Occupancy Time(LPO Time) detected in given 30s. Its unit is microsecond. | ||
+ | |||
+ | "ratio" reflects on which level LPO Time takes up the whole sample time. | ||
+ | |||
+ | "concentration" is a figure that has physical meaning. It's calculated from the characteristic graph below by using the LPO time.<br> [[Image:Characteristics.jpg|550px|Characteristics.jpg]]<br> | ||
+ | |||
+ | == Resources == | ||
+ | |||
+ | [http://www.seeedstudio.com/wiki/images/4/4c/Grove_-_Dust_sensor.pdf Grove_-_Dust_sensor datasheet] <br> [[Image:Grove dust sensor demo code.zip]]<br> [http://www.howmuchsnow.com/arduino/airquality/grovedust/ Example of uploading data from dust sensor to Cosm.] |
Revision as of 00:11, 25 December 2013
Contents
Introduction
This Dust Sensor measures the Particulate Matter level in air by counting the Lo Pulse Occupancy time(LPO time) in given time unit. LPO time is in proportion to PM concentration. This sensor can provide you pretty reliable data for your PM2.5 project or air purifier system because it's still responsive to particulates whose diameter is 1um.
Features
- Highly responsive
- Reliable
- ROHS/PEACH compliant
Note: New version updates output Hi Voltage from Approx. over 4.0V change to Approx over 4.5V.
Application Ideas
- Dust emission monitor
- Air Quality Monitoring
Cautions
- Please keep it upright.
- 3 min preheat time is required when used at the first time.
- Arbitrary operation may cause unexpected damage.
- Pins VR1 and VR2 come preset. Please DON'T change the default configuration.
Specification
Items | Min | Norm | Max | Unit | |
---|---|---|---|---|---|
VCC | 4.75 | - | 5.25 | V | |
Standby Current Supply | - | 90 | - | mA | |
Detectable range of concentration | - | 0~28,000 | - | pcs/liter | |
Operating Temperature Range | 0 | - | 45 | °C | |
Output Method | Negative Logic, Digital output,Hi over 4.0V(Rev.2) Lo: under 0.7V | ||||
Detecting the particle diameter | >1 um | ||||
Dimensions | 59(W) × 45(H) × 22(D) [mm] | ||||
Humidity Range | 95%rh or less |
Usage
Here is a demo to show you how to obtain PM concentration data from this Grove - Dust Sensor.
1. Plug the dust sensor into digital port D8 on the Grove - Base Shield. It can only be D8, because the operation of this sensor involves sampling, a function only can be achieved by D8, the capture input pin of Atmage328P, on Arduino/Seeeduino.
700px
2. Copy and paste the demo code below to a new Arduino sketch.
/* Grove - Dust Sensor Demo v1.0 Interface to Shinyei Model PPD42NS Particle Sensor Program by Christopher Nafis Written April 2012 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); 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(","); Serial.print(ratio); Serial.print(","); Serial.println(concentration); lowpulseoccupancy = 0; starttime = millis(); } }
In this program, the seeeduino samples the total duration of "logic low" in 30s, and this duration illustrates the dust density of environment. Open serial monitor, we can read air quality's value detected by sensor from pc serial port.
File:Dust Sensor Output Score.jpg
The result above consists of three parts: lowpulseoccupancy, ratio and concentration.
"lowpulseoccupancy" represents the Lo Pulse Occupancy Time(LPO Time) detected in given 30s. Its unit is microsecond.
"ratio" reflects on which level LPO Time takes up the whole sample time.
"concentration" is a figure that has physical meaning. It's calculated from the characteristic graph below by using the LPO time.
Characteristics.jpg
Resources
Grove_-_Dust_sensor datasheet
File:Grove dust sensor demo code.zip
Example of uploading data from dust sensor to Cosm.