Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Luftqualitätsmonitor mit DSM501A-Sensor

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
DSM501A Staubsensormodul
× 1
Alphanumerisches LCD, 16 x 2
× 1
Lüfterkit 40 mm
× 1
LED (generisch)
× 5
Widerstand 221 Ohm
× 1
Single Turn Potentiometer - 10k Ohm
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Die Überwachung der Luftqualität ist eine bekannte und etablierte Wissenschaft, die bereits in den 80er Jahren begann. Damals war die Technologie noch recht begrenzt und die Lösung zur Quantifizierung der Luftverschmutzung aufwendig und sehr teuer.

Glücklicherweise werden heutzutage mit den neuesten und modernsten Technologien die Lösungen zur Überwachung der Luftqualität nicht nur präziser, sondern auch schneller in der Messung. Die Geräte werden immer kleiner und kosten viel günstiger als je zuvor. Das vorgestellte Gerät verwendet den Samyoung "DSM501A" Staubsensor, der zu den günstigsten auf dem Markt gehört und bei AliExpress für wenige Dollar erworben werden kann. Dieser Sensor ist in der Lage sowohl PM2.5 als auch PM10 Partikel zu erkennen.

Im Bild unten sehen Sie das Layout der Pins, achten Sie jedoch nicht auf die Farbe der Drähte, da diese unterschiedlich sein können.

Die Schaltung ist sehr einfach:

Vout1 (PM2.5) vom Sensor ist an D2 von Arduino angeschlossen, Vout2 (PM10) an D3, Vcc an Arduino +5V und GND an Arduino Gnd-Pin. Die LED-Dioden sind mit den analogen Pins A1 bis A5 von Arduino verbunden, die im Code als Ausgänge definiert sind. LCD-Display mit 61x2 Zeichen ist kompatibel mit dem Hitachi HD44780. Es zeigt die Konzentration von PM10-Partikeln in Stück/0,01 cf und 5 Luftqualitätszustände an:

- Reinigen

- Gut

- Akzeptabel

- Schwer

- Gefahr

Die Konzentration von PM10 und PM2,5 kann auf dem seriellen Arduino-Monitor überwacht werden. Je nach Verschmutzungsgrad (PM10) leuchtet eine entsprechende LED einer bestimmten Farbe, um das Ergebnis schnell und einfach ablesen zu können. Ich habe nicht viel Erfahrung im Schreiben von Codes, daher kann der Code vielleicht verbessert werden. Es ist sehr wichtig zu betonen, dass durch den Einbau eines Lüfters, der Luft aus dem Sensorauslass ansaugt, die Eigenschaften im Bereich unerwünschter Spitzenwerte deutlich verbessert werden. Das ganze Gerät ist in einer Kunststoffbox für die Elektroinstallation montiert.

In Zukunft plane ich noch ein paar weitere günstige Staubsensoren zu testen, damit ihr die Ergebnisse in einem meiner nächsten Projekte finden könnt.

Code

  • Code
codeArduino
 #include LiquidCrystal lcd(8, 9, 4, 5, 6, 7);int pin2 =3;int pin1 =2;vorzeichenlose lange Dauer1;vorzeichenlose lange Dauer2;vorzeichenlose lange Startzeit;vorzeichenlose lange sampletime_ms =3000; //sampe 1s;ohne Vorzeichen lange niedrige Pulsbelegung1 =0;ohne Vorzeichen lange niedrige Pulsbelegung2 =0;float ratio1 =0;float ratio2 =0;float Konzentration1 =0;float Konzentration2 =0;int wLed =A1;int gLed =A2;int yLed =A3;int rLed =A4;int bLed =A5;void setup () { Serial.begin (9600); pinMode (2, EINGANG); PinMode (3, EINGANG); pinMode (wLed, AUSGANG); pinMode (gled, OUTPUT); pinMode(yLed,OUTPUT); pinMode (rLed, AUSGANG); pinMode (bLed, AUSGANG); starttime =millis (); // die aktuelle Zeit abrufen; lcd.begin (16, 2);}void loop () {Dauer1 =pulseIn (pin1, LOW); Dauer2 =pulseIn (Pin2, LOW); niedrige Pulsbelegung1 =niedrige Pulsbelegung1+Dauer1; niedrige Pulsbelegung2 =niedrige Pulsbelegung2+Dauer2; if ((millis()-starttime)> sampletime_ms) // if the sample time ==30s { ratio1 =lowpulseoccupancy1/(sampletime_ms*10.0); // Ganzzahliger Prozentsatz 0=>100 Konzentration1 =1.1*pow(ratio1,3)-3.8*pow(ratio1,2)+520*ratio1+0.62; // Verwendung des Spec Sheet Curve ratio2 =lowpulseoccupancy2/(sampletime_ms*10.0); // Ganzzahliger Prozentsatz 0=>100 Konzentration2 =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 (Konzentration1,3); Serial.print ( "Konzentration1 ="); Serial.print (Konzentration1); Serial.print(" Stück/0,01cf - "); Serial.print ( "concentration2 ="); Serial.print (Konzentration2); Serial.print(" Stück/0,01cf - "); Wenn (Konzentration1 <1000) {lcd.setCursor (0, 1); für (int i =0; i <16; ++i) { lcd.write (' '); } lcd.setCursor(4, 1); lcd.print("REINIGEN"); digitalWrite (wLed, HIGH); digitalWrite (gled, LOW); digitalWrite(yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); aufrechtzuerhalten. Wenn (Konzentration1> 1000 &&Konzentration1 <10000) {lcd.setCursor (0, 1); für (int i =0; i <16; ++i) { lcd.write (' '); } lcd.setCursor(4, 1); lcd.print("GUT"); digitalWrite (wLed, LOW); digitalWrite (gled, HIGH); digitalWrite(yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); aufrechtzuerhalten. Wenn (Konzentration1> 10000 &&Konzentration1 <20000) {lcd.setCursor (0, 1); für (int i =0; i <16; ++i) { lcd.write (' '); } lcd.setCursor(4, 1); lcd.print("AKZEPTABLE"); digitalWrite (wLed, LOW); digitalWrite (gled, LOW); digitalWrite(yLed, HIGH); digitalWrite (rLed, LOW); digitalWrite (bLed, LOW); aufrechtzuerhalten. Wenn (Konzentration1> 20000 &&Konzentration1 <50000) {lcd.setCursor (0, 1); für (int i =0; i <16; ++i) { lcd.write (' '); } lcd.setCursor(4, 1); lcd.print("SCHWER"); 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("GEFAHR"); digitalWrite (wLed, LOW); digitalWrite (gled, LOW); digitalWrite(yLed, LOW); digitalWrite (rLed, LOW); digitalWrite (bLed, HIGH); } niedrige Pulsbelegung1 =0; niedrige Pulsbelegung2 =0; Startzeit =Millis(); }}

Schaltpläne


Herstellungsprozess

  1. Messen der Luftqualität auf OpenSensors
  2. Helium-Luftqualitätssensor
  3. Arduino-Gyroskop-Spiel mit MPU-6050
  4. Multi-Temperatursensor
  5. CO2-Überwachung mit K30-Sensor
  6. Einfacher Hindernissensor mit Arduino
  7. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  8. IoT-Messgerät mit Arduino, Yaler und IFTTT
  9. Arduino Repulsive Electromagnetic Levitation
  10. Kohlenstoffbasierter Luftqualitätssensor