工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DSM501Aセンサーを備えたArduino空気品質モニター

コンポーネントと消耗品

>
Arduino Nano R3
× 1
DSM501Aダストセンサーモジュール
× 1
英数字LCD、16 x 2
× 1
ファンキット40mm
× 1
LED(汎用)
× 5
抵抗221オーム
× 1
シングルターンポテンショメータ-10kオーム
× 1

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

大気質の監視はよく知られており、80年代に始まった確立された科学です。当時、技術は非常に限られており、大気汚染の複雑さを定量化するために使用されたソリューションは、面倒で非常に高価でした。

幸いなことに、今日では、最新の最新技術により、空気品質の監視に使用されるソリューションは、より正確になるだけでなく、測定もより高速になっています。デバイスはますます小さくなり、かつてないほど手頃な価格になっています。提示されたデバイスは、市場で最も安価なものの1つであり、AliExpressで数ドルで購入できるSamyoung「DSM501A」ダストセンサーを使用しています。このセンサーは、PM2.5およびPM10粒子を検出できます。

下の写真では、ピンのレイアウトを確認できますが、ワイヤーの色は異なる場合があるため、注意しないでください。

<図>

回路は非常に単純です:

センサーからのVout1(PM2.5)はArduinoのD2に接続され、Vout2(PM10)はD3に接続され、VccはArduino + 5Vに接続され、GNDはArduinoGndピンに接続されます。 LEDダイオードは、コードの出力として定義されているArduinoのアナログピンA1〜A5に接続されています.61x2文字のLCDディスプレイは、HitachiHD44780と互換性があります。これは、PM10粒子の濃度をpcs / 0.01cfで示し、空気の質の5つの状態を示しています。

-きれいにする

-良い

-許容できる

-重い

-ハザード

PM10とPM2.5の両方の濃度は、arduinoシリアルモニターで監視できます。汚染度(PM10)に応じて、特定の色の適切なLEDが点灯し、結果をすばやく簡単に読み取ることができます。私はコードを書いた経験があまりないので、コードを改善できるかもしれません。センサーの出口から空気を引き出すファンを設置することにより、不要なピーク値の領域の特性を大幅に改善することを強調することが非常に重要です。デバイス全体は、電気設備用のプラスチックの箱に組み立てられています。

<図>

将来的には、次のプロジェクトの1つで結果を見つけることができるように、さらにいくつかの安価なダストセンサーをテストする予定です。

コード

  • コード
コード Arduino
 #include  LiquidCrystal lcd(8、9、4、5、6、7); int pin2 =3; int pin1 =2; unsigned long duration1; unsigned long duration2; unsigned long starttime; unsigned long sampletime_ms =3000; // sampe 1s; unsigned long lowpulseoccupancy1 =0; unsigned long lowpulseoccupancy2 =0; float ratio1 =0; float ratio2 =0; floatdensity1 =0; floatdensity2 =0; int wLed =A1; int gLed =A2; int yLed =A3; int rLed =A4; int bLed =A5; void setup(){Serial.begin(9600); pinMode(2、INPUT); pinMode(3、INPUT); pinMode(wLed、OUTPUT); pinMode(gLed、OUTPUT); pinMode(yLed、OUTPUT); pinMode(rLed、OUTPUT); pinMode(bLed、OUTPUT); starttime =millis(); //現在の時刻を取得します; lcd.begin(16、2);} void loop(){duration1 =pulseIn(pin1、LOW); duration2 =pulseIn(pin2、LOW); lowpulseoccupancy1 =lowpulseoccupancy1 + duration1; lowpulseoccupancy2 =lowpulseoccupancy2 + duration2; if((millis()-starttime)> sampletime_ms)// if sampel time ==30s {ratio1 =lowpulseoccupancy1 /(sampletime_ms * 10.0); //整数パーセント0 => 100濃度1 =1.1 * pow(ratio1,3)-3.8 * pow(ratio1,2)+ 520 * ratio1 + 0.62; //スペックシート曲線を使用ratio2 =lowpulseoccupancy2 /(sampletime_ms * 10.0); //整数パーセント0 => 100濃度2 =1.1 * pow(ratio2,3)-3.8 * pow(ratio2,2)+ 520 * ratio2 + 0.62; // lcd.setCursor(0、0); lcd.print( "PM10"); lcd.setCursor(6、0); lcd.print(concentration1,3); Serial.print( "concentration1 ="); Serial.print(concentration1); Serial.print( "pcs / 0.01cf-"); Serial.print( "concentration2 ="); Serial.print(concentration2); Serial.print( "pcs / 0.01cf-"); if(concentration1 <1000){lcd.setCursor(0、1); for(int i =0; i <16; ++ i){lcd.write( ''); } lcd.setCursor(4、1); lcd.print( "CLEAN"); digitalWrite(wLed、HIGH); digitalWrite(gLed、LOW); digitalWrite(yLed、LOW); digitalWrite(rLed、LOW); digitalWrite(bLed、LOW); } if(concentration1> 1000 &&density1 <10000){lcd.setCursor(0、1); for(int i =0; i <16; ++ i){lcd.write( ''); } lcd.setCursor(4、1); lcd.print( "GOOD"); digitalWrite(wLed、LOW); digitalWrite(gLed、HIGH); digitalWrite(yLed、LOW); digitalWrite(rLed、LOW); digitalWrite(bLed、LOW); } if(concentration1> 10000 &&density1 <20000){lcd.setCursor(0、1); for(int i =0; i <16; ++ i){lcd.write( ''); } lcd.setCursor(4、1); lcd.print( "ACCEPTABLE"); digitalWrite(wLed、LOW); digitalWrite(gLed、LOW); digitalWrite(yLed、HIGH); digitalWrite(rLed、LOW); digitalWrite(bLed、LOW); } if(concentration1> 20000 &&density1 <50000){lcd.setCursor(0、1); for(int i =0; i <16; ++ i){lcd.write( ''); } lcd.setCursor(4、1); lcd.print( "HEAVY"); digitalWrite(wLed、LOW); digitalWrite(gLed、LOW); digitalWrite(yLed、LOW); digitalWrite(rLed、HIGH); digitalWrite(bLed、LOW); } if(concentration1> 50000){lcd.setCursor(0、1); for(int i =0; i <16; ++ i){lcd.write( '');} lcd.setCursor(4、1); lcd.print( "HAZARD"); digitalWrite(wLed、LOW); digitalWrite(gLed、LOW); digitalWrite(yLed、LOW); digitalWrite(rLed、LOW); digitalWrite(bLed、HIGH); } lowpulseoccupancy1 =0; lowpulseoccupancy2 =0; starttime =millis(); }} 

回路図


製造プロセス

  1. OpenSensorsで空気の質を測定する方法
  2. ヘリウム空気質センサー
  3. MPU-6050を搭載したArduinoジャイロスコープゲーム
  4. マルチ温度センサー
  5. K30センサーによるCO2モニタリング
  6. Arduinoを搭載したシンプルな障害物センサー
  7. ArduinoまたはESP8266を搭載した静電容量式指紋センサー
  8. Arduino、Yaler、IFTTTを使用したIoTゲージ
  9. Arduinoの反発電磁浮上
  10. Arduino Powered Weather Balloon Datalogger
  11. カーボンベースの空気品質センサー