این ماژول یک ماژول اندازه گیری ذرات معلق در هوا می باشد . از این ماژول جهت اندازه گیری آلودگی ها و غبار موجود در هوا استفاده می گردد .این ماژول از مکانیزمی اپتیکال جهت اندازه گیری غبار استفاده می کند به طوریکه در آن از یک جفت فرستنده وگیرنده IR استفاده شده است . بر خلاف دیگر ماژول های اندازه گیری غبار که دارای سوراخی جهت جریان هوا هستند ، در این ماژول از یک هیتر جهت به جریان در آوردن هوا استفاده شده است . با روشن شدن ماژول ، هیتر شروع به داغ شدن خواهد کرد و بر اثر پدیده همرفت ، هوا در مقابل سنسور های ماژول جریان پیدا خواهد کرد . این ماژول داری دو مقاومت پتانسیومتر برای تنظیم حساسیت است . همچنین قابلیت اندازه گیر ذرات با حداقل ابعاد 1um را اندازه گیری را دارد . به راحتی توسط این ماژول می توان میزان گرد و خاک هوا ، دود سیگار ، باکتری های موجود در هوا و… را تشخیص داد .
مشخصات:
- ولتاژ تغذیه +5 تا +7 ولت
- خروجی به صورت PWM
- قابلیت تشخیص ذرات با حداقل اندازه 1um
- دارای مقاومت پتانسیومتر جهت تنظیم خروجی
- دارای خروجی قابل تنظیم و خروجی کالیبر شده
- دارای هیتر داخلی جهت به جریان در آوردن هوا
پین های ماژول DSM501A :
این ماژول دارای 5 پین به صورت زیر می باشد :
- پین کنترل ماژول
- پین خروجی ماژول به صورت کالیبره شده
- پین تغذیه ماژول
- پین خروجی ماژول با قابلیت تنظیم
- پین زمین ماژول
راه اندازی ماژول DSM501A توسط آردوینو :
// Connect the Pin_3 of DSM501A to Arduino 5V // Connect the Pin_5 of DSM501A to Arduino GND // Connect the Pin_2 of DSM501A to Arduino D8 // www.elecrow.com #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(" ratio:"); Serial.print(ratio); Serial.print(" DSM501A:"); Serial.println(concentration); lowpulseoccupancy = 0; starttime = millis(); } }