• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomeArduinoShieldsUse Dust Sensor DSM501 with Arduino
Previous Next

Use Dust Sensor DSM501 with Arduino

Posted by: admin , May 1, 2014

[vc_row][vc_column][vc_column_text]In this tutorial we are going to use Dust sensor on pcDuino to measure air pollution pm2.5.

DSM501 fine dust sensor_big[/vc_column_text][vc_tour][vc_tab title=”Dust Sensor ” tab_id=”1398961315-1-47″][vc_column_text]Main feature:

  1. Output signal is PWM;
  2. Easy installation;
  3. Single-supply;

[/vc_column_text][/vc_tab][vc_tab title=”Parts List” tab_id=”1398961315-2-80″][vc_column_text]

  • 1 x Arduino Uno
  • 1 x Dust Sensor
  • 1 x Mini Breadboard
  • Several Jumper wires

[/vc_column_text][/vc_tab][vc_tab title=”Wiring Diagram” tab_id=”1398961922223-2-6″][vc_column_text]We wire the parts in the following way:

  • Pin 2 of dust sensor -> Digital 8 of Arduino Uno
  • Pin 3 of dust sensor -> +5V of Arduino Uno
  • Pin 5 of dust sensor -> Ground of Arduino Uno

The following is the picture of the setup:

dustsensor_project[/vc_column_text][/vc_tab][vc_tab title=”Sample Code” tab_id=”1398962253899-3-0″][vc_column_text]

#include<string.h>
byte buff[2];
int pin = 8;//DSM501A input D8
unsigned long duration;
unsigned long starttime;
unsigned long endtime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;

int i=0;
void setup()
{
  Serial.begin(9600);
  pinMode(8,INPUT);
  starttime = millis(); 
}
void loop()
{

  duration = pulseIn(pin, LOW);
  lowpulseoccupancy += duration;
  endtime = millis();
  if ((endtime-starttime) > sampletime_ms)
  {
    ratio = (lowpulseoccupancy-endtime+starttime + sampletime_ms)/(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(lowpulseoccupancy);
    Serial.print("\n");
    Serial.print("ratio:");
    Serial.print("\n");
    Serial.print(ratio);
    Serial.print("DSM501A:");
    Serial.println(concentration);
    Serial.print(";\n\n");

    lowpulseoccupancy = 0;
    starttime = millis();
  }

}


[/vc_column_text][/vc_tab][vc_tab title=”Results” tab_id=”1398962527946-4-2″][vc_column_text]After power it on, there is no LED indicator on the dust sensor to indicate if the module is running.

sensor_dust_results[/vc_column_text][/vc_tab][/vc_tour][/vc_column][/vc_row]

Tags: Shields

Share!
Tweet

admin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors