Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Hardware
  3. Air Quality Sensor

Air Quality Sensor

Scheduled Pinned Locked Moved Hardware
calibrationaqigas sensorhchoair quality
270 Posts 46 Posters 308.9k Views 35 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    Elfnoir
    wrote on last edited by
    #179

    Hi,
    Can you check the reception level?
    I had same behaviour with an old temperature/humidity module; need to move it to another place in the room, and works perfectly now :-)

    epierreE 1 Reply Last reply
    0
    • E Elfnoir

      Hi,
      Can you check the reception level?
      I had same behaviour with an old temperature/humidity module; need to move it to another place in the room, and works perfectly now :-)

      epierreE Offline
      epierreE Offline
      epierre
      Hero Member
      wrote on last edited by
      #180

      @Elfnoir said:

      ; need to move it to another place in the room, and works perfectly now

      temp/hum are "less" sensitive on environment, here the sensors heats up to 40-60° (or more) so temp/hum is not the most impacting (I can be wrong anyway ;-)

      z-wave - Vera -> Domoticz
      rfx - Domoticz <- MyDomoAtHome <- Imperihome
      mysensors -> mysensors-gw -> Domoticz

      1 Reply Last reply
      0
      • alexsh1A Offline
        alexsh1A Offline
        alexsh1
        wrote on last edited by
        #181

        @epierre I wonder if you looked at this sensor Figaro TGS8100:

        http://www.figarosensor.com/products/entry/tgs8100.html

        Looks like it is perfect for a low-powered platform.

        epierreE R 2 Replies Last reply
        0
        • alexsh1A alexsh1

          @epierre I wonder if you looked at this sensor Figaro TGS8100:

          http://www.figarosensor.com/products/entry/tgs8100.html

          Looks like it is perfect for a low-powered platform.

          epierreE Offline
          epierreE Offline
          epierre
          Hero Member
          wrote on last edited by epierre
          #182

          @alexsh1 said:

          @epierre I wonder if you looked at this sensor Figaro TGS8100:

          http://www.figarosensor.com/products/entry/tgs8100.html

          Looks like it is perfect for a low-powered platform.

          as a replacement for MQ in low power yes could be... the bad part is how to get one ?

          z-wave - Vera -> Domoticz
          rfx - Domoticz <- MyDomoAtHome <- Imperihome
          mysensors -> mysensors-gw -> Domoticz

          alexsh1A 1 Reply Last reply
          0
          • epierreE epierre

            @alexsh1 said:

            @epierre I wonder if you looked at this sensor Figaro TGS8100:

            http://www.figarosensor.com/products/entry/tgs8100.html

            Looks like it is perfect for a low-powered platform.

            as a replacement for MQ in low power yes could be... the bad part is how to get one ?

            alexsh1A Offline
            alexsh1A Offline
            alexsh1
            wrote on last edited by
            #183

            @epierre said:
            the bad part is how to get one ?

            How about http://www.soselectronic.com/?str=371&artnum=170939&name=figaro-tgs8100 ?

            1 Reply Last reply
            0
            • epierreE epierre

              I'm now testing the MICS-6814 (3 sensors in one) given for :
              Carbon monoxide CO 1 -1000ppm
              **Nitrogen dioxide NO2 0.05 –10ppm **
              Ethanol C2H5OH 10 –500ppm
              Hydrogen H2 1 –1000ppm
              Ammonia NH3 1 –500ppm
              Methane CH4 >1000ppm
              Propane C3H8 >1000ppm
              Iso-butane C4H10 >1000ppm

              Datasheet maionly speaks on CO, NO2 and NH3:
              http://www.seeedstudio.com/wiki/images/1/10/MiCS-6814_Datasheet.pdf

              Here is are scripts:
              http://www.seeedstudio.com/wiki/Grove_-_Multichannel_Gas_Sensor

              http://www.seeedstudio.com/wiki/images/1/10/MiCS-6814_Datasheet.pdf

              Some readings:

              The concentration of NH3 is 0.99 ppm
              The concentration of CO is 1.20 ppm
              The concentration of NO2 is 0.15 ppm
              The concentration of C3H8 is 1000.04 ppm
              The concentration of C4H10 is 999.98 ppm
              The concentration of CH4 is 2991.14 ppm
              The concentration of H2 is 1.09 ppm
              The concentration of C2H5OH is 1.40 ppm
              

              I guess I'll make a script soon...

              VirV Offline
              VirV Offline
              Vir
              wrote on last edited by
              #184

              Hi, It all make sense, I am just confused that in your code once your multiply and once you divide...

              case CO:
              {
              if(ratio1 < 0.01) ratio1 = 0.01;
              if(ratio1 > 3) ratio1 = 3;
              //c = pow(10, 0.6) / pow(ratio1, 1.2);
              ** c = pow(ratio1, -1.179)4.385; //mod by jack*
              break;
              }
              case NO2:
              {
              if(ratio2 < 0.07) ratio2 = 0.07;
              if(ratio2 > 40) ratio2 = 40;
              //c = ratio2 / pow(10, 0.8);
              ** c = pow(ratio2, 1.007)/6.855; //mod by jack**
              break;
              }
              SO, what is the actual formula?

              Vir

              @epierre said:

              I'm now testing the MICS-6814 (3 sensors in one) given for :
              Carbon monoxide CO 1 -1000ppm
              **Nitrogen dioxide NO2 0.05 –10ppm **
              Ethanol C2H5OH 10 –500ppm
              Hydrogen H2 1 –1000ppm
              Ammonia NH3 1 –500ppm
              Methane CH4 >1000ppm
              Propane C3H8 >1000ppm
              Iso-butane C4H10 >1000ppm

              Datasheet maionly speaks on CO, NO2 and NH3:
              http://www.seeedstudio.com/wiki/images/1/10/MiCS-6814_Datasheet.pdf

              Here is are scripts:
              http://www.seeedstudio.com/wiki/Grove_-_Multichannel_Gas_Sensor

              http://www.seeedstudio.com/wiki/images/1/10/MiCS-6814_Datasheet.pdf

              Some readings:

              The concentration of NH3 is 0.99 ppm
              The concentration of CO is 1.20 ppm
              The concentration of NO2 is 0.15 ppm
              The concentration of C3H8 is 1000.04 ppm
              The concentration of C4H10 is 999.98 ppm
              The concentration of CH4 is 2991.14 ppm
              The concentration of H2 is 1.09 ppm
              The concentration of C2H5OH is 1.40 ppm
              

              I guess I'll make a script soon...

              1 Reply Last reply
              0
              • epierreE epierre

                @tantt2810 said:

                Hello,
                I'm don't understand the recipe below. Why RL_Value(Load Resistance)(1023-raw_adc)/raw_adc)? Can you explain for me?
                Thank you so much !!!
                Input: raw_adc - raw value read from adc, which represents the voltage
                Output: the calculated sensor resistance
                Remarks: The sensor and the load resistor forms a voltage divider. Given the voltage
                across the load resistor and its resistance, the resistance of the sensor
                could be derived.
                float MQ2::MQResistanceCalculation(int raw_adc)
                RL_VALUE
                (1023-raw_adc)/raw_adc));

                in fact it is above described, you have a voltage, you want a resistance.
                https://learn.sparkfun.com/tutorials/voltage-dividers

                datasheet needs a value which is the Rs/Ro (called here RL) where
                Ro: sensor resistance at 100ppm of NH3 in the clean air.
                Rs:sensor resistance at various concentrations of gases

                here the formula is a simplification of this:

                float Vrl = val * ( 5.00 / 1024.0 ); // V
                float Rs = 20000 * ( 5.00 - Vrl) / Vrl ; // Ohm
                int ratio = Rs/Ro;
                ppm = 37143 * pow (ratio, -3.178);

                VirV Offline
                VirV Offline
                Vir
                wrote on last edited by
                #185

                What does 37143 represents, Rs? and -3.178 is a second value from your regression method, but what about the first value?
                Can you elaborate on ppm line, please
                Vir

                here the formula is a simplification of this:

                float Vrl = val * ( 5.00 / 1024.0 ); // V
                float Rs = 20000 * ( 5.00 - Vrl) / Vrl ; // Ohm
                int ratio = Rs/Ro;
                ppm = 37143 * pow (ratio, -3.178);

                VirV 1 Reply Last reply
                0
                • B bhavika

                  I am confused with MiCS 4514 sensor. What I had done is :

                  using MiCS quick start evaluation board, measured ADC value
                  calculated Vout and from that calculated R0.
                  Rs/R0 concentration gives me high value, which is not possible, My data is as follows
                  clean air file is used for the purpose of R0 value
                  https://drive.google.com/file/d/0B8sF8a6FHoseWjhWOHRoYzIxakk/view?usp=sharing
                  and Polluted file is used to calculate the actual pollution
                  https://drive.google.com/file/d/0B8sF8a6FHoseR1BnclhCUHdibEU/view?usp=sharing

                  I am confused. Please help me

                  VirV Offline
                  VirV Offline
                  Vir
                  wrote on last edited by
                  #186

                  @bhavika said:

                  I am confused with MiCS 4514 sensor. What I had done is :

                  using MiCS quick start evaluation board, measured ADC value
                  calculated Vout and from that calculated R0.
                  Rs/R0 concentration gives me high value, which is not possible, My data is as follows
                  clean air file is used for the purpose of R0 value
                  https://drive.google.com/file/d/0B8sF8a6FHoseWjhWOHRoYzIxakk/view?usp=sharing
                  and Polluted file is used to calculate the actual pollution
                  https://drive.google.com/file/d/0B8sF8a6FHoseR1BnclhCUHdibEU/view?usp=sharing

                  I am confused. Please help me

                  I am confused by the formula you are using, could you please explain?
                  Pollution NO2 = (POWER((RS/R0)*(1/POWER(10,0.8068)),(1/1.01)))

                  Pollution CO = POWER((RS/R0)*(1/POWER(10 , 0.5476)),(1/-0.8497)))

                  is the actual formula like this?:

                  pollution = POWER((ratio *(1/POWER(10, curve[0])),(1/[curve[1])))

                  This is different than any other formulas discussed in this thread...
                  Vir

                  1 Reply Last reply
                  0
                  • VirV Vir

                    What does 37143 represents, Rs? and -3.178 is a second value from your regression method, but what about the first value?
                    Can you elaborate on ppm line, please
                    Vir

                    here the formula is a simplification of this:

                    float Vrl = val * ( 5.00 / 1024.0 ); // V
                    float Rs = 20000 * ( 5.00 - Vrl) / Vrl ; // Ohm
                    int ratio = Rs/Ro;
                    ppm = 37143 * pow (ratio, -3.178);

                    VirV Offline
                    VirV Offline
                    Vir
                    wrote on last edited by
                    #187

                    so does 37164 represents the scaling factor and -3.178 the exponent?
                    Vir
                    @Vir said:

                    What does 37143 represents, Rs? and -3.178 is a second value from your regression method, but what about the first value?
                    Can you elaborate on ppm line, please
                    Vir

                    here the formula is a simplification of this:

                    float Vrl = val * ( 5.00 / 1024.0 ); // V
                    float Rs = 20000 * ( 5.00 - Vrl) / Vrl ; // Ohm
                    int ratio = Rs/Ro;
                    ppm = 37143 * pow (ratio, -3.178);

                    1 Reply Last reply
                    0
                    • alexsh1A Offline
                      alexsh1A Offline
                      alexsh1
                      wrote on last edited by alexsh1
                      #188

                      @epierre I have the problem with the dust sketch (shinyei ppd42ns). The following code does not work in MySensors 1.5

                      ...
                      gw.send(msgPM10.set("ppm"));
                        ...
                      gw.send(msgPM25.set("ppm")); 
                      ...
                      
                      2016-04-24 14:44:19.438 Error: MySensors: Unknown/Invalid sensor type (43)
                      2016-04-24 14:44:19.438 Error: MySensors: Unknown/Invalid sensor type (43)
                      

                      So far both PM10 and PM25 are showing zero. However, if I upload the following code, it works fine (one channel though):

                      // Watch video here: https://www.youtube.com/watch?v=a8r4CeQopfY
                      
                      /* 
                       Connection:
                       
                       JST Pin 1 (Black Wire)  => Arduino GND
                       JST Pin 3 (Red wire)    => Arduino 5VDC
                       JST Pin 4 (Yellow wire) => Arduino Digital Pin 8
                      
                       Green Led connected to Arduino D7
                       Yellow Led connected to Arduino D6
                       Red Led connected to Arduino D5
                       
                       
                      Dust Sensor possible application:
                      - Applications of customer
                      - Air quality sensor
                      - Dustlessness workshop
                      - Cigarette detector
                      */
                      
                      /*
                      Sensor is to create Digital (Lo Pulse) output to Particulate Matters (PM). Lo Pulse Occupancy time (LPO time) is in proportion
                      to PM concentration. The output is for PM whose size is around 1 micro meter or larger. We can use the sensor to detect the dust in clean room.
                      Minimum detect particle: 1um
                      http://www.seeedstudio.com/wiki/Grove_-_Dust_Sensor
                       Grove - Dust Sensor Demo v1.0
                       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
                       */
                      
                      int pin = 8;
                      unsigned long duration;
                      unsigned long starttime;
                      unsigned long sampletime_ms = 1000;//sampe 1s ;
                      unsigned long lowpulseoccupancy = 0;
                      float ratio = 0;
                      float concentration = 0;
                      int gLed = 7;
                      int yLed = 6;
                      int rLed = 5;
                      
                      void setup() {
                        Serial.begin(9600);
                        pinMode(8,INPUT);
                        pinMode(gLed,OUTPUT);
                        pinMode(yLed,OUTPUT);
                        pinMode(rLed,OUTPUT);
                        starttime = millis();//get the current time;
                      }
                      
                      void loop() {
                        duration = pulseIn(pin, LOW);
                        lowpulseoccupancy = lowpulseoccupancy+duration;
                      
                        if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
                        {
                          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("concentration = ");
                          Serial.print(concentration);
                          Serial.print(" pcs/0.01cf  -  ");
                          if (concentration < 1.0) {
                           Serial.println("It's a smokeless and dustless environment"); 
                           digitalWrite(gLed, HIGH);
                           digitalWrite(yLed, LOW);
                           digitalWrite(rLed, LOW);
                        }
                          if (concentration > 1.0 && concentration < 20000) {
                           Serial.println("It's probably only you blowing air to the sensor :)"); 
                           digitalWrite(gLed, HIGH);
                           digitalWrite(yLed, LOW);
                           digitalWrite(rLed, LOW);
                          }
                          
                          if (concentration > 20000 && concentration < 315000) {
                           Serial.println("Smokes from matches detected!"); 
                           digitalWrite(gLed, LOW);
                           digitalWrite(yLed, HIGH);
                           digitalWrite(rLed, LOW);
                          }
                            if (concentration > 315000) {
                           Serial.println("Smokes from cigarettes detected! Or It might be a huge fire! Beware!"); 
                           digitalWrite(gLed, LOW);
                           digitalWrite(yLed, LOW);
                           digitalWrite(rLed, HIGH);
                        }
                          
                          lowpulseoccupancy = 0;
                          starttime = millis();
                        }
                      }
                      
                      
                      1 Reply Last reply
                      0
                      • epierreE epierre

                        Hello,

                        sadly the discussions were lost...

                        So let's start again on the subject:

                        https://github.com/empierre/arduino

                        Here is the list of my current experimentations:

                        • MQ135.ino : for CO2/COV ... validated
                          
                        • MQ2.ino : for ethanol... needs pre-heat : ongoing
                        • MQ6 sensor : just received
                        • MQ131 sensor : just received
                        • TGS2600 sensor : just received

                        I'm getting serious a with a mega and a sensor board, 4 of them are connected together !

                        The MQ135 is not on the list, I use it to measure CO2 in children's room...
                        Values:

                        • MQ2: 85 - Combustible gas and smoke
                        • MQ6: 25 - Isobutane, Butane, LPG
                        • MQ131: 57 - O3, CL2
                        • TGS2600: 943 - ethanol, hydrogen, iso-butane, CO, Methane

                        As discussed before, I would appreciate someone helping me reading the logarithmic curves in the datasheet (link on each sensor name above) to get the linear value based on analog reading. I need to learn reading it... thanks!

                        as an example here in sandboxelectronics we saw that several values could be read from the datasheet:

                        float           LPGCurve[3]  =  {2.3,0.21,-0.47};   //two points are taken from the curve.
                                                                            //with these two points, a line is formed which is "approximately equivalent"
                                                                         //to the original curve.
                                                                        //data format:{ x, y, slope}; point1: (lg200, 0.21), point2: (lg10000, -0.59)
                        float           COCurve[3]  =  {2.3,0.72,-0.34};    //two points are taken from the curve.
                                                                        //with these two points, a line is formed which is "approximately equivalent"
                                                                        //to the original curve.
                                                                        //data format:{ x, y, slope}; point1: (lg200, 0.72), point2: (lg10000,  0.15)
                        float           SmokeCurve[3] ={2.3,0.53,-0.44};    //two points are taken from the curve.
                                                                        //with these two points, a line is formed which is "approximately equivalent"
                                                                        //to the original curve.
                                                                        //data format:{ x, y, slope}; point1: (lg200, 0.53), point2: (lg10000,  -0.22)                                                    
                        float           Ro           =  10;                 //Ro is initialized to 10 kilo ohms
                        
                        AnneFRA Offline
                        AnneFRA Offline
                        AnneFR
                        wrote on last edited by
                        #189

                        @epierre hi, could remove some doubts regarding the mq131 sensor?
                        thanks,
                        Anne

                        1 Reply Last reply
                        0
                        • epierreE Offline
                          epierreE Offline
                          epierre
                          Hero Member
                          wrote on last edited by
                          #190

                          @alexsh1 said:

                          (shinyei ppd42ns)

                          I corrected the following sketch which had bad yg/m3 to ppm conversion thanks to LouiS22 from Domoticz forum remark (type conversion errors leading to 0 values).

                          https://github.com/empierre/arduino/blob/master/DustSensor_SamYoung_DSM501.ino

                          I guess I'll have to do the same here (but I lack time...):
                          DustSensor_Shinyei_PPD42NS.ino

                          z-wave - Vera -&gt; Domoticz
                          rfx - Domoticz &lt;- MyDomoAtHome &lt;- Imperihome
                          mysensors -&gt; mysensors-gw -&gt; Domoticz

                          alexsh1A 1 Reply Last reply
                          0
                          • epierreE epierre

                            @alexsh1 said:

                            (shinyei ppd42ns)

                            I corrected the following sketch which had bad yg/m3 to ppm conversion thanks to LouiS22 from Domoticz forum remark (type conversion errors leading to 0 values).

                            https://github.com/empierre/arduino/blob/master/DustSensor_SamYoung_DSM501.ino

                            I guess I'll have to do the same here (but I lack time...):
                            DustSensor_Shinyei_PPD42NS.ino

                            alexsh1A Offline
                            alexsh1A Offline
                            alexsh1
                            wrote on last edited by
                            #191

                            @epierre Thanks - I'll have another go at Shinyei PPD42NS sketch once I have time. Ideally, I'd like to combine it with MH-Z14A sketch.

                            epierreE 1 Reply Last reply
                            0
                            • alexsh1A alexsh1

                              @epierre Thanks - I'll have another go at Shinyei PPD42NS sketch once I have time. Ideally, I'd like to combine it with MH-Z14A sketch.

                              epierreE Offline
                              epierreE Offline
                              epierre
                              Hero Member
                              wrote on last edited by
                              #192

                              @alexsh1 which is a good idea, also a temp/him is quite usefull though I didn't added the impact in the formulas so far.

                              z-wave - Vera -&gt; Domoticz
                              rfx - Domoticz &lt;- MyDomoAtHome &lt;- Imperihome
                              mysensors -&gt; mysensors-gw -&gt; Domoticz

                              alexsh1A 2 Replies Last reply
                              0
                              • epierreE epierre

                                @alexsh1 which is a good idea, also a temp/him is quite usefull though I didn't added the impact in the formulas so far.

                                alexsh1A Offline
                                alexsh1A Offline
                                alexsh1
                                wrote on last edited by alexsh1
                                #193

                                @epierre I have combined the two sketches - works just fine, but need to find a spare temp sensor.The hardware setup looks messy so adding an extra i2c sensor will complicate it even more. I'll come back with the combined three-in-one sketch shortly.

                                BTW, this

                                gw.send(msgPM25.set("ppm"));
                                

                                still throws the following error. What version MySensors are you using?

                                 MySensors: Unknown/Invalid sensor type (43)
                                
                                1 Reply Last reply
                                0
                                • epierreE epierre

                                  @alexsh1 which is a good idea, also a temp/him is quite usefull though I didn't added the impact in the formulas so far.

                                  alexsh1A Offline
                                  alexsh1A Offline
                                  alexsh1
                                  wrote on last edited by alexsh1
                                  #194

                                  @epierre I started looking at the formula you have used in ppmv calculation. Why do you need ppmv? All values in EPA or Europe are in μg/m3.

                                  The ppmv equation is:

                                  ppmv = mg/m^3 * (0.08205*T)/M 
                                  

                                  T = atmospheric temperature in kelvins = 273.15 + °C
                                  M = molecular weight of the air pollutant = 28.97
                                  (http://www.engineeringtoolbox.com/molecular-mass-air-d_679.html - this is a good link)
                                  0.08205 = Universal Gas Law constant in atm·l/(mol·K)

                                  Your code for this equation is:

                                  ppmv=(float)(((concentrationPM25*0.0283168)/100) * ((0.08205*temp)/0.01))/1000;
                                  

                                  Now, I think it should be as follows:

                                  1. temp = °C + 273.15
                                  int temp=273.15 + 22;
                                  
                                  

                                  22C - is a typical temp inside though the intention is to use a sensor

                                  1. The amended ppmv equation is going to be:
                                  ppmv=(((concentrationPM25*0.0283168)/100) * ((0.08205*temp)/28.97))/1000;
                                  

                                  I have not changed 0.0283168 /100 - not sure that this is. And the whole thing is divided by 1000? why?

                                  IMPORTANT UPDATE:

                                  I have just received the following result:

                                  
                                  PM10: 7373
                                  
                                  send: 11-11-0-0 s=0,c=1,t=37,pt=7,l=5,sg=0,st=ok:1.744
                                  
                                  

                                  If I use the following web-site http://www.herramientasingenieria.com/onlinecalc/ppm-mg_m3.php and the result is
                                  mg/m3 = 7373 * 0.283168/100 = 2.08 mg/m3
                                  The molecular weight is 28.97 for dry air

                                  2.08 mg/m3 is equivalent to 1.74ppm for a gas with molecular weight=28.97 Pressure=1013.25, Temperature=22C 
                                  

                                  Success!
                                  Now I have found a spare BMP280 (temp and pressure sensor) which I can use here.
                                  Additionally, I need to use 24-h and 1 year averages - https://www3.epa.gov/airquality/particlepollution/2012/decfsstandards.pdf

                                  Stay tuned!

                                  epierreE 1 Reply Last reply
                                  0
                                  • alexsh1A alexsh1

                                    @epierre I started looking at the formula you have used in ppmv calculation. Why do you need ppmv? All values in EPA or Europe are in μg/m3.

                                    The ppmv equation is:

                                    ppmv = mg/m^3 * (0.08205*T)/M 
                                    

                                    T = atmospheric temperature in kelvins = 273.15 + °C
                                    M = molecular weight of the air pollutant = 28.97
                                    (http://www.engineeringtoolbox.com/molecular-mass-air-d_679.html - this is a good link)
                                    0.08205 = Universal Gas Law constant in atm·l/(mol·K)

                                    Your code for this equation is:

                                    ppmv=(float)(((concentrationPM25*0.0283168)/100) * ((0.08205*temp)/0.01))/1000;
                                    

                                    Now, I think it should be as follows:

                                    1. temp = °C + 273.15
                                    int temp=273.15 + 22;
                                    
                                    

                                    22C - is a typical temp inside though the intention is to use a sensor

                                    1. The amended ppmv equation is going to be:
                                    ppmv=(((concentrationPM25*0.0283168)/100) * ((0.08205*temp)/28.97))/1000;
                                    

                                    I have not changed 0.0283168 /100 - not sure that this is. And the whole thing is divided by 1000? why?

                                    IMPORTANT UPDATE:

                                    I have just received the following result:

                                    
                                    PM10: 7373
                                    
                                    send: 11-11-0-0 s=0,c=1,t=37,pt=7,l=5,sg=0,st=ok:1.744
                                    
                                    

                                    If I use the following web-site http://www.herramientasingenieria.com/onlinecalc/ppm-mg_m3.php and the result is
                                    mg/m3 = 7373 * 0.283168/100 = 2.08 mg/m3
                                    The molecular weight is 28.97 for dry air

                                    2.08 mg/m3 is equivalent to 1.74ppm for a gas with molecular weight=28.97 Pressure=1013.25, Temperature=22C 
                                    

                                    Success!
                                    Now I have found a spare BMP280 (temp and pressure sensor) which I can use here.
                                    Additionally, I need to use 24-h and 1 year averages - https://www3.epa.gov/airquality/particlepollution/2012/decfsstandards.pdf

                                    Stay tuned!

                                    epierreE Offline
                                    epierreE Offline
                                    epierre
                                    Hero Member
                                    wrote on last edited by
                                    #195

                                    @alexsh1 said:

                                    @epierre I started looking at the formula you have used in ppmv calculation. Why do you need ppmv? All values in EPA or Europe are in μg/m3.

                                    because domoticz only knows ppm... and many AIQ like use only that except for particles.

                                    1. temp = °C + 273.15
                                      int temp=273.15 + 22;
                                      22C - is a typical temp inside though the intention is to use a sensor

                                    not for me ;-)

                                    1. The amended ppmv equation is going to be:
                                      ppmv=(((concentrationPM250.0283168)/100) * ((0.08205temp)/28.97))/1000;
                                    I have not changed 0.0283168 /100 - not sure that this is. And the whole thing is divided by 1000? why?
                                    

                                    was a volume conversion

                                    The molecular weight is 28.97 for dry air

                                    2.08 mg/m3 is equivalent to 1.74ppm for a gas with molecular weight=28.97 Pressure=1013.25, Temperature=22C 
                                    

                                    Success!

                                    success for the mysensors value ?

                                    MySensors: Unknown/Invalid sensor type (43)
                                    

                                    Domoticz doesn't recognize this command... I use 1.5.x but I have my own gateway to domoticz

                                    z-wave - Vera -&gt; Domoticz
                                    rfx - Domoticz &lt;- MyDomoAtHome &lt;- Imperihome
                                    mysensors -&gt; mysensors-gw -&gt; Domoticz

                                    alexsh1A bezeeflyB 2 Replies Last reply
                                    0
                                    • epierreE epierre

                                      @alexsh1 said:

                                      @epierre I started looking at the formula you have used in ppmv calculation. Why do you need ppmv? All values in EPA or Europe are in μg/m3.

                                      because domoticz only knows ppm... and many AIQ like use only that except for particles.

                                      1. temp = °C + 273.15
                                        int temp=273.15 + 22;
                                        22C - is a typical temp inside though the intention is to use a sensor

                                      not for me ;-)

                                      1. The amended ppmv equation is going to be:
                                        ppmv=(((concentrationPM250.0283168)/100) * ((0.08205temp)/28.97))/1000;
                                      I have not changed 0.0283168 /100 - not sure that this is. And the whole thing is divided by 1000? why?
                                      

                                      was a volume conversion

                                      The molecular weight is 28.97 for dry air

                                      2.08 mg/m3 is equivalent to 1.74ppm for a gas with molecular weight=28.97 Pressure=1013.25, Temperature=22C 
                                      

                                      Success!

                                      success for the mysensors value ?

                                      MySensors: Unknown/Invalid sensor type (43)
                                      

                                      Domoticz doesn't recognize this command... I use 1.5.x but I have my own gateway to domoticz

                                      alexsh1A Offline
                                      alexsh1A Offline
                                      alexsh1
                                      wrote on last edited by
                                      #196

                                      @epierre Yes, all works fine now. I modified the combined sketch and here is the final result.

                                      0_1463152922051_Screenshot (21).jpg

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        moskovskiy82
                                        wrote on last edited by
                                        #197

                                        Which one to use for detection of fire smoke? Currently have got several MQ-7 but they don't seem so good at it

                                        epierreE 1 Reply Last reply
                                        0
                                        • M moskovskiy82

                                          Which one to use for detection of fire smoke? Currently have got several MQ-7 but they don't seem so good at it

                                          epierreE Offline
                                          epierreE Offline
                                          epierre
                                          Hero Member
                                          wrote on last edited by
                                          #198

                                          @moskovskiy82 said:

                                          Which one to use for detection of fire smoke? Currently have got several MQ-7 but they don't seem so good at it

                                          as discussed just above, a particle sensor could be good for smoke is a particle concentration, coupled with heat this would be a good indicator

                                          if (concentration > 315000) {
                                               Serial.println("Smokes from cigarettes detected! Or It might be a huge fire! Beware!"); 
                                          

                                          z-wave - Vera -&gt; Domoticz
                                          rfx - Domoticz &lt;- MyDomoAtHome &lt;- Imperihome
                                          mysensors -&gt; mysensors-gw -&gt; Domoticz

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          25

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular