Omet navegació

16.2 Sensor 0220. (Mesura espectrofotomètrica de CO2).

Aquest sensor 0220 és dispositiu espectroscòpic NDIR. Un sensor d'infraroig no dispersiu (o sensor NDIR, per les seues sigles en anglès, No Dispersive Infrared Detector) és un simple dispositiu espectroscòpic d'ús freqüent com a detector de gas CO2. Els components principals d'un sensor NDIR són una font d'infrarojos (llum), una càmera per a la mostra o tub de llum, un filtre de longitud d'ona, i el detector d'infrarojos. El gas es bomba (o difon) a la càmera de la mostra, i la concentració de gas es mesura electroòpticament per l'absorció d'una determinada longitud d'ona en l'infraroig (IR). La llum infraroja es dirigeix creuant la càmera de la mostra cap al detector. El detector té un filtre òptic enfront d'ell, que elimina tota la llum, excepte la longitud d'ona que poden absorbeixen les molècules del CO2 gas.

El de detecció espectroscòpica d'aquest sensor és 0~50000ppm de CO2. A continuació tens el esquema per connectar-lo a Arduino uno.

 

Arduino UNO + Sensor0220

El programa que anem a utilitzar és el del fabricant amb els ports canviats per poder utilitzar més tard un shield per guardar les dades a una targeta MicroSDHC, per aixó canviem els ports 10 , i 11 pel 5 i 6.

/***************************************************
* Infrared CO2 Sensor 0-50000ppm(Wide Range)
* ****************************************************
* The follow example is used to detect CO2 concentration.
  
* @author lg.gang(lg.gang@qq.com)
* @version  V1.0
* @date  2016-6-6
  
* GNU Lesser General Public License.
* See <http://www.gnu.org/licenses/> for details.
* All above must be included in any redistribution
* ****************************************************/ 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(5, 6); // RX, TX
unsigned char hexdata[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Read the gas density command /Don't change the order
void setup() {
  
  Serial.begin(9600);
  while (!Serial) {

  }
  mySerial.begin(9600);

}

void loop() {
   mySerial.write(hexdata,9);
   delay(500);

 for(int i=0,j=0;i<9;i++)
 {
  if (mySerial.available()>0)
  {
     long hi,lo,CO2;
     int ch=mySerial.read();

    if(i==2){     hi=ch;   }   //High concentration
    if(i==3){     lo=ch;   }   //Low concentration
    if(i==8) {
               CO2=hi*256+lo;  //CO2 concentration
      Serial.print("CO2 concentration: ");
      Serial.print(CO2);
      Serial.println("ppm");      
               }

  }   
  
 } 

 }

El resultat és el que pots veure en aquesta pantalla.

CO2 SEN0220

La concentració de CO2 varia lleugerament. Si el sensor està a l'interior d'un recipient tancat sense variació de CO2 les concentracions mesurades podran variar lleugerament tot depenent del moviment brownià dels gasos. Cal prendre varies mesures i la mitjana serà el valor exacte.