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

Precieze Luchtkwaliteit Monitor met Sharp GP2Y1010AU0F Sensor

Onderdelen en benodigdheden

Arduino Nano R31
Condensator, 220 µF1
Doorsteekweerstand, 150 ohm1

Benodigde tools en machines

  • Solderbout

Apps en online diensten

  • Arduino IDE
  • Processing (The Processing Foundation)

Over dit project

De Sharp Optical Dust Sensor (GP2Y1010AU0F) is bijzonder effectief in het detecteren van zeer fijn stof zoals sigarettenrook, en wordt veel gebruikt in luchtzuiveringssystemen. Een infrarood LED en een fototransistor zijn diagonaal gerangschikt om gereflecteerd licht van stofdeeltjes in de lucht te detecteren.

In eerdere projecten toonde ik luchtkwaliteitmonitors gebaseerd op DSM501A en PPD42NS sensoren. Deze Sharp sensor is even goedkoop (±$5) en heeft een heel eenvoudig elektrisch schema. De sensor verbruikt weinig stroom (max 20mA, typisch 11mA) en kan direct van de Arduino gevoed worden. De output is een analoge spanning evenredig aan de stofdichtheid, met een gevoeligheid van 0.5V per 0.1mg/m³.

Ik heb de Arduino-voorbeeldcode van Dfrobot aangepast zodat de waarden in µg/m³ worden weergegeven. Daarnaast schreef ik een Processing-sketch (gebaseerd op de 'meter' bibliotheek) die de waarden op de pc-monitor weergeeft als een groot analoog instrument - een duidelijk visueel effect.

Vergelijking van sensoren

Alle drie sensoren (DSM501A, PPD42NS, Sharp GP2Y1010AU0F) zijn goedkoop ( paar dollar). Na testen onder dezelfde omstandigheden is de Sharp GP2Y1010AU0F de winnaar:

  • Gevoeliger voor zeer lage waarden
  • Zeer laag stroomverbruik, direct van Arduino te voeden
  • Eenvoudige, aanpasbare Arduino-code
  • Analoge output, direct aan meetinstrument te koppelen zonder extra elektronica

De sensor is verkrijgbaar via AliExpress.

Code

Arduino Code

/* Standalone Sketch voor Arduino UNO en Sharp Optical Dust Sensor GP2Y1010AU0F */
int measurePin = 0; // A0
int ledPower = 2;   // D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;

void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
}

void loop(){
  digitalWrite(ledPower,LOW); // LED aan
  delayMicroseconds(samplingTime);
  voMeasured = analogRead(measurePin);
  delayMicroseconds(deltaTime);
  digitalWrite(ledPower,HIGH); // LED uit
  delayMicroseconds(sleepTime);
  
  calcVoltage = voMeasured * (5.0 / 1024.0);
  // Lineaire vergelijking van Chris Nafis (c) 2012
  dustDensity = 170 * calcVoltage - 0.1;
  Serial.println(dustDensity); // µg/m³
  delay(1000);
}

Processing Code

/* Meter als gedeeltelijke cirkel. Kleuren aangepast.
   Cirkel start op 90 graden (6 uur) en beweegt met de klok mee.
   Schaal labels in deze volgorde. Non-hardware voorbeeld.
   Gemaakt 19 april 2017 door Bill (Papa) Kujawa. Publiek domein. */
import processing.serial.*;
import meter.*;

Serial port;
String[] list;
Meter m;

void setup() {
  size(1150, 910);
  background(255, 255, 200);
  port = new Serial(this, "COM4", 9600);
  m = new Meter(this, 125, 25, true);
  m.setMeterWidth(850);
  m.setFrameColor(color(100, 0, 0));
  m.setTitleFontColor(color(0, 200, 0));
  m.setPivotPointColor(color(255, 0, 0));
  m.setArcColor(color(0, 0, 200));
  m.setScaleFontColor(color(200, 100, 0));
  m.setTicMarkColor(color(217, 22, 247));
  m.setArcMinDegrees(90.0);
  m.setArcMaxDegrees(360.0);
  m.setArcThickness(5);
  m.setNeedleThickness(4);
  m.setMinScaleValue(0.0);
  m.setMaxScaleValue(800.0);
  m.setInputSignalOutOfRangeFontColor(color(0, 255, 0));
  m.setMinInputSignal(0);
  m.setMaxInputSignal(800);
  m.setHighSensorWarningActive(true);
  m.setHighSensorWarningValue((float)200.0);
  String[] scaleLabelsA = {"0", "100", "200", "300", "400", "500", "600", "700", "800"};
  m.setScaleLabels(scaleLabelsA);
  m.setTitle("Luchtkwaliteit (µg/m³)");
  m.setDisplayDigitalMeterValue(true);
}

void draw() {
  if (port.available() > 0) {
    String val = port.readString();
    list = split(val, ',');
    float air = float(list[0]);
    println("Luchtkwaliteit: " + air + " µg/m³");
    m.updateMeter(int(air));
  }
}

Schema's

Zie het bijgevoegde schakelschema voor de aansluiting van de sensor op de Arduino.

Productieproces

  1. Bouw Een Raspberry Pi Luchtkwaliteit & Weerstation Met InfluxDB & Grafana
  2. Luchtkwaliteit meten met OpenSensors: Een Arduino & Python Handleiding
  3. Helium-gebaseerde Zon-Powered Luchtsensor: Ontwerp & Implementatiegids
  4. Slimme stadsmonitoring van luchtkwaliteit met LoRa
  5. Bouw een retro Numitron-klok met Arduino: Eenvoudig, betrouwbaar en energiezuinig
  6. DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
  7. Slim Binnenklimaat- & Afvalmonitoringssysteem met Raspberry Pi en Arduino
  8. K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
  9. Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
  10. Bosch Sensortec onthult AI-ingeschakelde BME688 luchtkwaliteitssensor om virusoverdrachtsrisico te verminderen
  11. Geavanceerde Koolstofgebaseerde NO₂-sensor Verbetert Binnenluchtkwaliteitsmonitoring