Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Monitor de calidad del aire Arduino con sensor DSM501A

Componentes y suministros

Arduino Nano R3
× 1
Módulo sensor de polvo DSM501A
× 1
LCD alfanumérico, 16 x 2
× 1
Kit de ventilador de 40 mm
× 1
LED (genérico)
× 5
Resistencia 221 ohm
× 1
Potenciómetro de una sola vuelta - 10k ohmios
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

El monitoreo de la calidad del aire es una ciencia bien conocida y establecida que comenzó en los años 80. En ese momento, la tecnología era bastante limitada y la solución utilizada para cuantificar el complejo de contaminación del aire, era engorrosa y realmente cara.

Afortunadamente, hoy en día, con las tecnologías más recientes y modernas, las soluciones utilizadas para el monitoreo de la calidad del aire se están volviendo no solo más precisas, sino también más rápidas en la medición. Los dispositivos son cada vez más pequeños y cuestan mucho más asequibles que nunca. El dispositivo presentado utiliza el sensor de polvo Samyoung "DSM501A" que es uno de los más baratos del mercado y se puede comprar en AliExpress por unos pocos dólares. Este sensor es capaz de detectar partículas tanto PM2.5 como PM10.

En la siguiente imagen, puede ver el diseño de los pines, pero no preste atención al color de los cables, ya que pueden ser diferentes.

El circuito es muy simple:

Vout1 (PM2.5) del sensor está conectado a D2 de Arduino, Vout2 (PM10) a D3, Vcc a Arduino + 5V y GND al pin Arduino Gnd. Los diodos LED están conectados a los pines analógicos A1 a A5 de Arduino que se definen como salidas en el código. La pantalla LCD con 61x2 caracteres es compatible con el Hitachi HD44780. Muestra la concentración de partículas PM10 en pcs / 0.01cf y 5 estados de calidad del aire:

- Limpio

- Bueno

- Aceptable

- Pesado

- Peligro

La concentración de PM10 y PM2.5 se puede monitorear en el monitor serial arduino. Dependiendo del grado de contaminación (PM10), se encenderá un LED apropiado de un determinado color para permitir una lectura rápida y sencilla del resultado. No tengo mucha experiencia en la escritura de códigos, así que tal vez se pueda mejorar el código. Es muy importante enfatizar que al instalar un ventilador que extrae aire de la salida del sensor, se mejoran significativamente las características en el área de valores pico no deseados. Todo el dispositivo está ensamblado en una caja de plástico para instalación eléctrica.

En el futuro, planeo probar algunos sensores de polvo más baratos para que pueda encontrar los resultados en uno de mis próximos proyectos.

Código

  • código
código 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; flotador ratio1 =0; flotador ratio2 =0; flotación concentración1 =0; flotación concentración2 =0; int wLed =A1; int gLed =A2; int yLed =A3; int rLed =A4; int bLed =A5; void setup () {Serial.begin (9600); pinMode (2, ENTRADA); pinMode (3, ENTRADA); pinMode (wLed, SALIDA); pinMode (gLed, SALIDA); pinMode (yLed, SALIDA); pinMode (rLed, SALIDA); pinMode (bLed, SALIDA); starttime =millis (); // obtener la hora actual; lcd.begin (16, 2);} bucle vacío () {duration1 =pulseIn (pin1, LOW); duration2 =pulseIn (pin2, LOW); lowpulseoccupancy1 =lowpulseoccupancy1 + duration1; lowpulseoccupancy2 =lowpulseoccupancy2 + duration2; if ((millis () - starttime)> sampletime_ms) // si el tiempo de muestreo ==30s {ratio1 =lowpulseoccupancy1 / (sampletime_ms * 10.0); // Porcentaje entero 0 => 100 concentración1 =1,1 * pow (ratio1,3) -3,8 * pow (ratio1,2) + 520 * ratio1 + 0,62; // usando la hoja de especificaciones ratio2 =lowpulseoccupancy2 / (sampletime_ms * 10.0); // Porcentaje entero 0 => 100 concentración2 =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 (concentración1,3); Serial.print ("concentración1 ="); Serial.print (concentración1); Serial.print ("piezas / 0.01cf -"); Serial.print ("concentración2 ="); Serial.print (concentración2); Serial.print ("piezas / 0.01cf -"); si (concentración1 <1000) {lcd.setCursor (0, 1); para (int i =0; i <16; ++ i) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print ("LIMPIAR"); escritura digital (wLed, ALTA); digitalWrite (gLed, BAJO); digitalWrite (yLed, BAJO); digitalWrite (rLed, BAJO); digitalWrite (bLed, BAJO); } si (concentración1> 1000 &&concentración1 <10000) {lcd.setCursor (0, 1); para (int i =0; i <16; ++ i) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print ("BUENO"); escritura digital (wLed, BAJA); escritura digital (gLed, ALTA); digitalWrite (yLed, BAJO); digitalWrite (rLed, BAJO); digitalWrite (bLed, BAJO); } si (concentración1> 10000 &&concentración1 <20000) {lcd.setCursor (0, 1); para (int i =0; i <16; ++ i) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print ("ACEPTABLE"); escritura digital (wLed, BAJA); digitalWrite (gLed, BAJO); escritura digital (yLed, ALTA); digitalWrite (rLed, BAJO); digitalWrite (bLed, BAJO); } si (concentración1> 20000 &&concentración1 <50000) {lcd.setCursor (0, 1); para (int i =0; i <16; ++ i) {lcd.write (''); } lcd.setCursor (4, 1); lcd.print ("PESADO"); escritura digital (wLed, BAJA); digitalWrite (gLed, BAJO); digitalWrite (yLed, BAJO); escritura digital (rLed, ALTA); digitalWrite (bLed, BAJO); } if (concentración1> 50000) {lcd.setCursor (0, 1); for (int i =0; i <16; ++ i) {lcd.write ('');} lcd.setCursor (4, 1); lcd.print ("PELIGRO"); escritura digital (wLed, BAJA); digitalWrite (gLed, BAJO); digitalWrite (yLed, BAJO); digitalWrite (rLed, BAJO); escritura digital (bLed, ALTA); } lowpulseoccupancy1 =0; lowpulseoccupancy2 =0; hora de inicio =milis (); }} 

Esquemas


Proceso de manufactura

  1. Cómo medir la calidad del aire en OpenSensors
  2. Sensor de calidad del aire con helio
  3. Juego de giroscopio Arduino con MPU-6050
  4. Sensor de temperatura múltiple
  5. Monitoreo de CO2 con sensor K30
  6. Sensor de obstáculos simple con Arduino
  7. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  8. Medidor de IoT con Arduino, Yaler e IFTTT
  9. Levitación electromagnética repulsiva Arduino
  10. Registrador de datos de globos meteorológicos con tecnología Arduino
  11. Sensor de calidad del aire a base de carbono