wiki:projets:rfid:capteur_particules_fines:reverseeng
                
                                                            
                    
SHARP GP2Y1010
*reverse engineering
Afin de mettre au point notre propre détecteur de particules fines, nous avons commencé par une phase de reverse engineering sur 2 capteurs low-cost du marché : le SHARP GP2Y1010 et le SHINYEI PPD42NS.
Ci-dessous les photos du Sharp désossé avec légendes.
Le faisceau collimaté de l'émetteur est diffusé par les particules fines. Le flux diffusé par les particules situées dans la champ optique collimaté du récepteur à un certain angle constitue la mesure. 
En pratique, ce flux est très faible. Il est le paramètre contraignant le dispositif.
  Code
<code=cpp>
/*
 Interface to Sharp GP2Y1010AU0F Particle Sensor
 Program by Christopher Nafis 
 Written April 2012
 
 http://www.sparkfun.com/datasheets/Sensors/gp2y1010au_e.pdf
 http://sensorapp.net/?p=479
 
 Sharp pin 1 (V-LED)   ⇒ 5V (connected to 150ohm resister)
 Sharp pin 2 (LED-GND) ⇒ Arduino GND pin
 Sharp pin 3 (LED)     ⇒ Arduino pin 2
 Sharp pin 4 (S-GND)   ⇒ Arduino GND pin
 Sharp pin 5 (Vo)      ⇒ Arduino A0 pin
 Sharp pin 6 (Vcc)     ⇒ 5V
  */
#include <SPI.h>
#include <Ethernet.h>
#include <stdlib.h>
int dustPin=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
int dustVal=0;
int i=0;
float ppm=0;
void setup(){
  Serial.begin(9600);
  pinMode(ledPower,OUTPUT);
  i=0;
  ppm =0;
}
void loop(){
  i=i+1;
  digitalWrite(ledPower,LOW);  power on the LED
  delayMicroseconds(delayTime);
  dustVal=analogRead(dustPin);  read the dust value
  ppm = ppm+dustVal;
  delayMicroseconds(delayTime2);
  digitalWrite(ledPower,HIGH);  turn the LED off
  delayMicroseconds(offTime);
}
</code>
====== SHINYEI PPD42NS ======
  reverse engineering
  Code
<code=cpp>
/*
 Interface to Shinyei Model PPD42NS Particle Sensor
 Program by Christopher Nafis 
 Written April 2012
 
 http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html
 http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
 JST Pin 1 (Black Wire)  ⇒ Arduino GND
 JST Pin 3 (Red wire)    ⇒ Arduino 5VDC
 JST Pin 4 (Yellow wire) ⇒ Arduino Digital Pin 8
  */
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup() {
  Serial.begin(9600);
  pinMode(8,INPUT);
  starttime = millis();
}
void loop() {
  duration = pulseIn(pin, LOW);
  lowpulseoccupancy = lowpulseoccupancy+duration;
  if ((millis()-starttime) > sampletime_ms)
  {
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);   Integer percentage 0⇒100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;  using spec sheet curve
    Serial.print(lowpulseoccupancy);
    Serial.print(“,”);
    Serial.print(ratio);
    Serial.print(“,”);
    Serial.println(concentration);
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}
</code>
 
 
 
                    
                                     
                wiki/projets/rfid/capteur_particules_fines/reverseeng.txt · Dernière modification: 2020/10/05 14:39 (modification externe)