Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino-luchtkwaliteitsmonitor met DSM501A-sensor

Componenten en benodigdheden

Arduino Nano R3
× 1
DSM501A Stofsensormodule
× 1
Alfanumeriek LCD-scherm, 16 x 2
× 1
Ventilatorkit 40 mm
× 1
LED (generiek)
× 5
Weerstand 221 ohm
× 1
Single Turn Potentiometer - 10k ohm
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Monitoring van de luchtkwaliteit is een bekende en gevestigde wetenschap die begon in de jaren '80. In die tijd was de technologie vrij beperkt en de oplossing die werd gebruikt om het luchtvervuilingscomplex te kwantificeren, omslachtig en erg duur.

Gelukkig worden de oplossingen die worden gebruikt voor het monitoren van de luchtkwaliteit tegenwoordig, met de meest recente en moderne technologieën, niet alleen nauwkeuriger, maar ook sneller in het meten. Apparaten worden kleiner en kosten veel betaalbaarder dan ooit tevoren. Het gepresenteerde apparaat maakt gebruik van de Samyoung "DSM501A" stofsensor die een van de goedkoopste op de markt is en voor een paar dollar bij AliExpress kan worden gekocht. Deze sensor kan zowel PM2.5- als PM10-deeltjes detecteren.

In de onderstaande afbeelding kunt u de lay-out van de pinnen zien, maar let niet op de kleur van de draden, omdat deze anders kunnen zijn.

De schakeling is heel eenvoudig:

Vout1 (PM2.5) van sensor is aangesloten op D2 van Arduino, Vout2 (PM10) op D3, Vcc op Arduino +5V en GND op Arduino Gnd-pin. De LED-diodes zijn verbonden met de analoge pinnen A1 tot A5 van Arduino die in de code als uitgangen worden gedefinieerd. LCD-scherm met 61x2 tekens is compatibel met de Hitachi HD44780. Het toont de concentratie van PM10-deeltjes in pcs/0.01cf, en 5 toestanden van luchtkwaliteit:

- Schoon

- Goed

- Aanvaardbaar

- Zwaar

- Gevaar

De concentratie van zowel PM10 als PM2.5 kan worden gecontroleerd op de arduino seriële monitor. Afhankelijk van de mate van vervuiling (PM10) zal een geschikte LED van een bepaalde kleur gaan branden om een ​​snelle en gemakkelijke aflezing van het resultaat mogelijk te maken. Ik heb niet veel ervaring met het schrijven van codes, dus misschien kan de code verbeterd worden. Het is erg belangrijk om te benadrukken dat door het installeren van een ventilator die lucht uit de sensoruitgang zuigt, de eigenschappen op het gebied van ongewenste piekwaarden aanzienlijk worden verbeterd. Het hele apparaat is gemonteerd in een plastic doos voor elektrische installatie.

In de toekomst ben ik van plan nog een paar goedkope stofsensoren te testen, zodat je de resultaten in een van mijn volgende projecten kunt vinden.

Code

  • code
codeArduino
 #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;float concentratie1 =0;float concentratie2 =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,INVOER); pinMode (wLed, UITGANG); pinMode (gLed, UITGANG); pinMode (yLed, UITGANG); pinMode (rLed, UITGANG); pinMode (bLed, UITGANG); starttime =millis();//haal de huidige tijd; lcd.begin (16, 2);}void loop () { duration1 =pulseIn (pin1, LOW); duur2 =pulseIn(pin2, LAAG); lage pulsbezetting1 =lage pulsbezetting1+duur1; lagepulsbezetting2 =lagepulsbezetting2+duur2; if ((millis()-starttime)> sampletime_ms)//if de sampletime ==30s { ratio1 =lowpulseoccupancy1/(sampletime_ms*10.0); // Integer percentage 0=>100 concentratie1 =1,1*pow(ratio1,3)-3,8*pow(ratio1,2)+520*ratio1+0,62; // met behulp van specificatieblad curve ratio2 =lowpulseoccupancy2/(sampletime_ms*10.0); // Integer percentage 0=>100 concentratie2 =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(concentratie1,3); Serial.print("concentratie1 ="); Seriële.afdruk (concentratie1); Serial.print(" stuks/0.01cf - "); Serial.print("concentratie2 ="); Serial.print (concentratie2); Serial.print(" stuks/0.01cf - "); if (concentratie1 <1000) { lcd.setCursor (0, 1); for (int i =0; i <16; ++i) { lcd.write(' '); } lcd.setCursor(4, 1); lcd.print("SCHOON"); digitalWrite(wLed, HOOG); digitalWrite(gLed, LAAG); digitalWrite(yLed, LAAG); digitalWrite(rLed, LAAG); digitalWrite(bLed, LAAG); } if (concentratie1> 1000 &&concentratie1 <10000) { lcd.setCursor (0, 1); for (int i =0; i <16; ++i) { lcd.write(' '); } lcd.setCursor(4, 1); lcd.print("GOED"); digitalWrite(wLed, LAAG); digitalWrite(gLed, HOOG); digitalWrite(yLed, LAAG); digitalWrite(rLed, LAAG); digitalWrite(bLed, LAAG); } if (concentratie1> 10000 &&concentratie1 <20000) { lcd.setCursor (0, 1); for (int i =0; i <16; ++i) { lcd.write(' '); } lcd.setCursor(4, 1); lcd.print("AANVAARDBAAR"); digitalWrite(wLed, LAAG); digitalWrite(gLed, LAAG); digitalWrite(yLed, HOOG); digitalWrite(rLed, LAAG); digitalWrite(bLed, LAAG); } if (concentratie1> 20000 &&concentratie1 <50000) { lcd.setCursor (0, 1); for (int i =0; i <16; ++i) { lcd.write(' '); } lcd.setCursor(4, 1); lcd.print("ZWAAR"); digitalWrite(wLed, LAAG); digitalWrite(gLed, LAAG); digitalWrite(yLed, LAAG); digitalWrite(rLed, HOOG); digitalWrite(bLed, LAAG); } if (concentratie1> 50000 ) {lcd.setCursor (0, 1);for (int i =0; i <16; ++i){ lcd.write(' ');} lcd.setCursor(4, 1); lcd.print("GEVAAR"); digitalWrite(wLed, LAAG); digitalWrite(gLed, LAAG); digitalWrite(yLed, LAAG); digitalWrite(rLed, LAAG); digitalWrite(bLed, HOOG); } lage pulsbezetting1 =0; lage pulsbezetting2 =0; starttijd =millis(); }}

Schema's


Productieproces

  1. Hoe de luchtkwaliteit op OpenSensors te meten
  2. Helium luchtkwaliteitssensor
  3. Arduino-gyroscoopspel met MPU-6050
  4. Multitemperatuursensor
  5. CO2-monitoring met K30-sensor
  6. Eenvoudige obstakelsensor met Arduino
  7. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  8. IoT-meter met Arduino, Yaler en IFTTT
  9. Arduino afstotende elektromagnetische levitatie
  10. Arduino aangedreven weerballon datalogger
  11. Op koolstof gebaseerde luchtkwaliteitssensor