สร้างเว็บEngine by iGetWeb.com
Cart รายการสินค้า (0)

arduino กับ Dust sensor วัดฝุ่นละออง2

arduino กับ Dust sensor วัดฝุ่นละออง2



arduino กับ Dust sensor วัดฝุ่นละออง2



สวัสดีครับ วันนี้เรามาทดลองการเขียนโปรแกรม arduino กับ Dust sensor หรือ sensor วัดฝุ่นละอองกันครับ

ก่อนอื่นเรามาดูก่อนนะครับว่า โครงสร้างภายในของตัว sensor เป็นยังไงกันบ้าง




เท่าที่เราได้ดูกันนะครับก็จะเห็นว่าโครงสร้างภายในก็ไม่มีอะไรมากมาย มีตัวรับและตัวส่ง infraed และ lens ขยายกับวงจรขยาย gain

พร้อมกับ VR2 ตัวเอาไว้ปรับความละเอียด


ต่อมา มาดู Pin Out put ครับ

สายไฟสีส้ม นับเป็น ขา1 นะครับ

***ย้ำ นะครับ สายสีแดงของ Dust sensor ไม่ใช่สายต่อ 5V นะครับ  ห้ามต่อ 5V นะครับ ไม่นั้นอาจจะพังได้ครับ***





เมื่อทราบแล้วว่า ขาอะไรเป็นขาอะไร ต่อมามาดูว่าจะต่อ

ขาเข้าตัว Arduino กับตัว Dust Sensor


    Pin 1 of dust sensor -> Ground of Arduino Uno
    Pin 2 of dust sensor -> Digital 6 of Arduino Uno
    Pin 3 of dust sensor -> +5V of Arduino Uno
    Pin 5 of dust sensor -> Ground of Arduino Uno




เมื่อต่อสายเสร็จ ต่อมาก็มาดู code กันครับ




#include<string.h>
byte buff[2];
int pin = 6;//DSM501A input D6
unsigned long duration;
unsigned long starttime;
unsigned long endtime;
unsigned long sampletime_ms = 10000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
 
int i=0;
void setup()
{
  Serial.begin(9600);
  pinMode(6,INPUT);
  starttime = millis();
  Serial.println("Dust Start");
}
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(" ");
    Serial.print(ratio);
    Serial.print("DSM501A:");
    Serial.println(concentration);
    Serial.print("\n\n");
 
    lowpulseoccupancy = 0;
    starttime = millis();
  }
 
   // Serial.println(duration);
 delay(200) ;
}



//*************************************




unsigned long sampletime_ms = 10000;    คือ คำส่งที่ต้องการตรวจวัดทุกกี่วินาที

duration = pulseIn(pin, LOW);    ตรวงสอบค่า PWM ที่เข้ามา


     สูตรการคำนวณ

    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.println(concentration);     concentration  คือค่าปริมาณ output หรือ ค่าปริมาณฝุ่นนั้นเอง


ให้ดู OUTPUT ทาง Seriar monitor ครับจะเห็นค่า Output sensor



 


เพียงเท่านี้ เราก้สามารถตรวจสอบปริมาณฝุ่นละอองได้แล้วครับ   แนะให้นะผงแป้งหรือ ใช้ไม้ปัดฝุ่น

ปัดบริเวณ sensor ครับแล้วจะเห็นการเปลี่ยนแปลงครับ


ขอบคุณครับ   ขอให้สนุกกับการเขียนโปรแกรม บน Arduino ครับ






view