WaspSensorGas Class Reference

WaspSensorGas Class. More...

#include <WaspSensorGas.h>


Public Member Functions

 WaspSensorGas ()
 class constructor
void setBoardMode (uint8_t mode)
 It sets board power mode, setting ON/OFF 3v3 and 5V switches.
void configureSensor (uint16_t sensor, uint8_t gain)
 It configures the amplifier gain in the different sensors.
void configureSensor (uint16_t sensor, uint8_t gain, float resistor)
 It configures the amplifier gain and load resistor in the different sensors.
void setSensorMode (uint8_t mode, uint16_t sensor)
 It sets ON/OFF the different sensor switches.
float readValue (uint16_t sensor)
 It reads the value measured by the sensor.

Private Member Functions

void configureResistor (uint8_t ampli, float resistor)
 It configures the sensor resistors.
void setResistor (uint8_t address, float value)
 It sets the resistor value.
void configureAmplifier (uint8_t ampli, uint8_t gain)
 It configures the corresponding amplifier.
void setAmplifier (uint8_t address, uint8_t value)
 It sets the value of the gain.
uint16_t pulse (uint16_t sensor)
 It sends a pulse to read the sensor value.


Detailed Description

WaspSensorGas Class.

WaspSensorGas Class defines all the variables and functions used for managing the Gas Sensor Board

Definition at line 182 of file WaspSensorGas.h.


Constructor & Destructor Documentation

WaspSensorGas::WaspSensorGas (  ) 

class constructor

It initializes the different digital pins

Parameters:
void 
Returns:
void

Definition at line 31 of file WaspSensorGas.cpp.

References DIGITAL1, DIGITAL2, DIGITAL3, DIGITAL4, DIGITAL5, DIGITAL6, DIGITAL7, digitalWrite(), LOW, OUTPUT, pinMode(), SENS_PW_3V3, and SENS_PW_5V.

Here is the call graph for this function:


Member Function Documentation

void WaspSensorGas::configureResistor ( uint8_t  ampli,
float  resistor 
) [private]

It configures the sensor resistors.

Parameters:
uint8_t ampli : the amplifier to configure
float resistor : the value to set the resistor to
Returns:
void

Definition at line 205 of file WaspSensorGas.cpp.

References B0101010, B0101100, B0101110, SENS_R1, SENS_R2, SENS_R3, and setResistor().

Referenced by configureSensor().

00206 {
00207         switch( ampli )
00208         {
00209                 case    SENS_R1 :       setResistor(B0101100,resistor);
00210                                         break;
00211                 case    SENS_R2 :       setResistor(B0101110,resistor);
00212                                         break;
00213                 case    SENS_R3 :       setResistor(B0101010,resistor);
00214                                         break;
00215         }
00216 }

Here is the call graph for this function:

Here is the caller graph for this function:

void WaspSensorGas::setResistor ( uint8_t  address,
float  value 
) [private]

It sets the resistor value.

Parameters:
uint8_t address : the resistor address
float value : the value to set the resistor to
Returns:
void

Definition at line 218 of file WaspSensorGas.cpp.

References B00000000, TwoWire::begin(), TwoWire::beginTransmission(), WaspPWR::closeI2C(), delay(), DELAY_TIME, TwoWire::endTransmission(), PWR, TwoWire::send(), and Wire.

Referenced by configureResistor().

00219 {
00220         float auxiliar = 0;
00221         uint8_t resist=0;
00222         
00223         auxiliar = 128*value;
00224         auxiliar = auxiliar/100;
00225         resist = (uint8_t) 128-auxiliar;
00226 
00227         Wire.begin();
00228         delay(100);
00229         Wire.beginTransmission(address);
00230         Wire.send(B00000000);
00231         Wire.send(resist);
00232         Wire.endTransmission();
00233         delay(DELAY_TIME);
00234         PWR.closeI2C(); 
00235 }

Here is the call graph for this function:

Here is the caller graph for this function:

void WaspSensorGas::configureAmplifier ( uint8_t  ampli,
uint8_t  gain 
) [private]

It configures the corresponding amplifier.

Parameters:
uint8_t ampli : the amplifier to set
uint8_t gain : the gain to set
Returns:
void

Definition at line 237 of file WaspSensorGas.cpp.

References B0101000, B0101010, B0101100, B0101110, SENS_AMPLI1, SENS_AMPLI2, SENS_AMPLI3, SENS_AMPLI4, and setAmplifier().

Referenced by configureSensor().

00238 {
00239         switch( ampli )
00240         {
00241                 case    SENS_AMPLI1     :       setAmplifier(B0101000,gain);
00242                                                 break;
00243                 case    SENS_AMPLI2     :       setAmplifier(B0101100,gain);
00244                                                 break;
00245                 case    SENS_AMPLI3     :       setAmplifier(B0101110,gain);
00246                                                 break;
00247                 case    SENS_AMPLI4     :       setAmplifier(B0101010,gain);
00248                                                 break;
00249         }
00250 }

Here is the call graph for this function:

Here is the caller graph for this function:

void WaspSensorGas::setAmplifier ( uint8_t  address,
uint8_t  value 
) [private]

It sets the value of the gain.

Parameters:
uint8_t address : the amplifier address
uint8_t value : the value to set the amplifier to
Returns:
void

Definition at line 252 of file WaspSensorGas.cpp.

References B00010000, TwoWire::begin(), TwoWire::beginTransmission(), WaspPWR::closeI2C(), delay(), DELAY_TIME, TwoWire::endTransmission(), PWR, TwoWire::send(), and Wire.

Referenced by configureAmplifier().

00253 {
00254         uint8_t ampli=0;
00255         value--;
00256 
00257         ampli=(uint8_t) 128-(128/100)*value;
00258         Wire.begin();
00259         delay(100);
00260         Wire.beginTransmission(address);
00261         Wire.send(B00010000);
00262         Wire.send(ampli);
00263         Wire.endTransmission();
00264         delay(DELAY_TIME);
00265         PWR.closeI2C(); 
00266 }

Here is the call graph for this function:

Here is the caller graph for this function:

uint16_t WaspSensorGas::pulse ( uint16_t  sensor  )  [private]

It sends a pulse to read the sensor value.

Parameters:
uint16_t sensor : the sensor to read the value from
Returns:
the value returned by the sensor

Definition at line 268 of file WaspSensorGas.cpp.

References ANALOG6, ANALOG7, analogRead(), delay(), DIGITAL1, DIGITAL3, DIGITAL5, DIGITAL7, digitalWrite(), HIGH, LOW, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4B, and SENS_SOCKET4C.

Referenced by readValue().

00269 {
00270         uint16_t aux=0;
00271         
00272         switch( sensor )
00273         {
00274                 case    SENS_SOCKET3B   :       digitalWrite(DIGITAL7, HIGH); 
00275                                                 delay(14);
00276                                                 digitalWrite(DIGITAL7, LOW);
00277                                                 delay(980);
00278                                                 digitalWrite(DIGITAL1, HIGH);
00279                                                 delay(3); 
00280                                                 aux = analogRead(ANALOG7);
00281                                                 delay(2);
00282                                                 digitalWrite(DIGITAL1, LOW);
00283                                                 break;
00284                 case    SENS_SOCKET3C   :       digitalWrite(DIGITAL7, HIGH); 
00285                                                 delay(2);
00286                                                 digitalWrite(DIGITAL1, HIGH);
00287                                                 delay(4);
00288                                                 aux = analogRead(ANALOG7);
00289                                                 delay(1);
00290                                                 digitalWrite(DIGITAL1, LOW);
00291                                                 delay(7); 
00292                                                 digitalWrite(DIGITAL7, LOW);
00293                                                 delay(236);
00294                                                 break;
00295                 case    SENS_SOCKET4B   :       digitalWrite(DIGITAL5, HIGH); 
00296                                                 delay(14);
00297                                                 digitalWrite(DIGITAL5, LOW);
00298                                                 delay(980);
00299                                                 digitalWrite(DIGITAL3, HIGH);
00300                                                 delay(3); 
00301                                                 aux = analogRead(ANALOG6);
00302                                                 delay(2);
00303                                                 digitalWrite(DIGITAL3, LOW);
00304                                                 break;
00305                 case    SENS_SOCKET4C   :       digitalWrite(DIGITAL5, HIGH); 
00306                                                 delay(2);
00307                                                 digitalWrite(DIGITAL3, HIGH);
00308                                                 delay(4);
00309                                                 aux = analogRead(ANALOG6);
00310                                                 delay(1);
00311                                                 digitalWrite(DIGITAL3, LOW);
00312                                                 delay(7); 
00313                                                 digitalWrite(DIGITAL5, LOW);
00314                                                 delay(236);
00315                                                 break;
00316         }
00317         return aux;
00318 }

Here is the call graph for this function:

Here is the caller graph for this function:

void WaspSensorGas::setBoardMode ( uint8_t  mode  ) 

It sets board power mode, setting ON/OFF 3v3 and 5V switches.

Parameters:
uint8_t mode : SENS_ON or SENS_OFF
Returns:
void

Definition at line 56 of file WaspSensorGas.cpp.

References digitalWrite(), HIGH, LOW, RTC, RTC_ON, SENS_OFF, SENS_ON, SENS_PW_3V3, SENS_PW_5V, and WaspRTC::setMode().

00057 {
00058         switch( mode )
00059         {
00060                 case    SENS_ON :       digitalWrite(SENS_PW_3V3,HIGH);
00061                                         digitalWrite(SENS_PW_5V,HIGH);
00062                                         // Sets RTC on to enable I2C
00063                                         RTC.setMode(RTC_ON);
00064                                         break;
00065                 case    SENS_OFF:       digitalWrite(SENS_PW_3V3,LOW);
00066                                         digitalWrite(SENS_PW_5V,LOW);
00067                                         break;
00068         }
00069 }

Here is the call graph for this function:

void WaspSensorGas::configureSensor ( uint16_t  sensor,
uint8_t  gain 
)

It configures the amplifier gain in the different sensors.

Parameters:
uint16_t sensor : the sensor to configure
uint8_t gain : the gain to set (range [1-101])
Returns:
void

Definition at line 71 of file WaspSensorGas.cpp.

00072 {
00073         configureSensor(sensor,gain,0);
00074 }

void WaspSensorGas::configureSensor ( uint16_t  sensor,
uint8_t  gain,
float  resistor 
)

It configures the amplifier gain and load resistor in the different sensors.

Parameters:
uint16_t sensor : the sensor to configure
uint8_t gain : the gain to set (range [1-101])
float resistor : the load resistor to set (range [0-100] in KOhms)
Returns:
void

Definition at line 76 of file WaspSensorGas.cpp.

References configureAmplifier(), configureResistor(), delay(), DELAY_TIME, SENS_AMPLI1, SENS_AMPLI2, SENS_AMPLI3, SENS_AMPLI4, SENS_CO2, SENS_NO2, SENS_O2, SENS_R1, SENS_R2, SENS_R3, SENS_SOCKET2A, SENS_SOCKET3A, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4A, SENS_SOCKET4B, and SENS_SOCKET4C.

00077 {
00078         switch( sensor )
00079         {
00080                 case    SENS_CO2        :       configureAmplifier(SENS_AMPLI1,gain);
00081                                                 break;
00082                 case    SENS_O2         :       configureAmplifier(SENS_AMPLI1,gain);
00083                                                 break;
00084                 case    SENS_SOCKET2A   :       configureResistor(SENS_R1,resistor);
00085                                                 delay(DELAY_TIME);
00086                                                 configureAmplifier(SENS_AMPLI2,gain);
00087                                                 break;
00088                 case    SENS_NO2        :       configureResistor(SENS_R1,resistor);
00089                                                 delay(DELAY_TIME);
00090                                                 configureAmplifier(SENS_AMPLI2,gain);
00091                                                 break;
00092                 case    SENS_SOCKET3A   :       configureResistor(SENS_R2,resistor);
00093                                                 delay(DELAY_TIME);
00094                                                 configureAmplifier(SENS_AMPLI3,gain);
00095                                                 break;
00096                 case    SENS_SOCKET3B   :       configureResistor(SENS_R2,resistor);
00097                                                 delay(DELAY_TIME);
00098                                                 configureAmplifier(SENS_AMPLI3,gain);
00099                                                 break;
00100                 case    SENS_SOCKET3C   :       configureResistor(SENS_R2,resistor);
00101                                                 delay(DELAY_TIME);
00102                                                 configureAmplifier(SENS_AMPLI3,gain);
00103                                                 break;
00104                 case    SENS_SOCKET4A   :       configureResistor(SENS_R3,resistor);
00105                                                 delay(DELAY_TIME);
00106                                                 configureAmplifier(SENS_AMPLI4,gain);
00107                                                 break;
00108                 case    SENS_SOCKET4B   :       configureResistor(SENS_R3,resistor);
00109                                                 delay(DELAY_TIME);
00110                                                 configureAmplifier(SENS_AMPLI4,gain);
00111                                                 break;
00112                 case    SENS_SOCKET4C   :       configureResistor(SENS_R3,resistor);
00113                                                 delay(DELAY_TIME);
00114                                                 configureAmplifier(SENS_AMPLI4,gain);
00115                                                 break;
00116         }
00117 }

Here is the call graph for this function:

void WaspSensorGas::setSensorMode ( uint8_t  mode,
uint16_t  sensor 
)

It sets ON/OFF the different sensor switches.

Parameters:
uint8_t mode : SENS_ON or SENS_OFF
uint16_t sensor : the sensor to set ON/OFF
Returns:
void

Definition at line 119 of file WaspSensorGas.cpp.

References DIGITAL1, DIGITAL2, DIGITAL3, DIGITAL4, DIGITAL5, DIGITAL6, DIGITAL7, DIGITAL8, digitalWrite(), HIGH, LOW, SENS_CO2, SENS_NO2, SENS_O2, SENS_OFF, SENS_ON, SENS_PRESSURE, SENS_SOCKET2A, SENS_SOCKET3A, and SENS_SOCKET4A.

00120 {
00121         if( mode==SENS_ON )
00122         {
00123                 switch( sensor )
00124                 {
00125                         case    SENS_PRESSURE   :       digitalWrite(DIGITAL8,HIGH);
00126                                                         break;
00127                         case    SENS_CO2        :       digitalWrite(DIGITAL2,HIGH);
00128                                                         break;
00129                         case    SENS_O2         :       digitalWrite(DIGITAL2,LOW);
00130                                                         break;
00131                         case    SENS_SOCKET2A   :       digitalWrite(DIGITAL6,LOW);
00132                                                         digitalWrite(DIGITAL4,HIGH);
00133                                                         break;
00134                         case    SENS_NO2:               digitalWrite(DIGITAL4,LOW);
00135                                                         digitalWrite(DIGITAL6,HIGH);
00136                                                         break;
00137                         case    SENS_SOCKET3A   :       digitalWrite(DIGITAL1,HIGH);
00138                                                         digitalWrite(DIGITAL7,HIGH);
00139                                                         break;
00140                         case    SENS_SOCKET4A   :       digitalWrite(DIGITAL3,HIGH);
00141                                                         digitalWrite(DIGITAL5,HIGH);
00142                                                         break;
00143                 }
00144         }
00145         
00146         if( mode==SENS_OFF )
00147         {
00148                 switch( sensor )
00149                 {
00150                         case    SENS_PRESSURE   :       digitalWrite(DIGITAL8,LOW);
00151                                                         break;
00152                         case    SENS_CO2        :       digitalWrite(DIGITAL2,LOW);
00153                                                         break;
00154                         case    SENS_SOCKET2A   :       digitalWrite(DIGITAL4,LOW);
00155                                                         break;
00156                         case    SENS_NO2:               digitalWrite(DIGITAL6,LOW);
00157                                                         break;
00158                         case    SENS_SOCKET3A   :       digitalWrite(DIGITAL1,LOW);
00159                                                         digitalWrite(DIGITAL7,LOW);
00160                                                         break;
00161                         case    SENS_SOCKET4A   :       digitalWrite(DIGITAL3,LOW);
00162                                                         digitalWrite(DIGITAL5,LOW);
00163                                                         break;
00164                 }
00165         }
00166 }

Here is the call graph for this function:

float WaspSensorGas::readValue ( uint16_t  sensor  ) 

It reads the value measured by the sensor.

Parameters:
uint16_t sensor : the sensor to read the value from
Returns:
the value measured by the sensor (range [0-3.3] Volts)

Definition at line 168 of file WaspSensorGas.cpp.

References ANALOG1, ANALOG2, ANALOG3, ANALOG4, ANALOG5, ANALOG6, ANALOG7, analogRead(), pulse(), SENS_CO2, SENS_HUMIDITY, SENS_NO2, SENS_O2, SENS_PRESSURE, SENS_SOCKET2A, SENS_SOCKET3A, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4A, SENS_SOCKET4B, SENS_SOCKET4C, and SENS_TEMPERATURE.

00169 {
00170         uint16_t aux=0;
00171         switch( sensor )
00172         {
00173                 case    SENS_TEMPERATURE        :       aux=analogRead(ANALOG1);
00174                                                         break;
00175                 case    SENS_HUMIDITY           :       aux=analogRead(ANALOG4);
00176                                                         break;
00177                 case    SENS_PRESSURE           :       aux=analogRead(ANALOG5);
00178                                                         break;
00179                 case    SENS_CO2                :       aux=analogRead(ANALOG3);
00180                                                         break;
00181                 case    SENS_O2                 :       aux=analogRead(ANALOG3);
00182                                                         break;
00183                 case    SENS_SOCKET2A           :       aux=analogRead(ANALOG2);
00184                                                         break;
00185                 case    SENS_NO2                :       aux=analogRead(ANALOG2);
00186                                                         break;
00187                 case    SENS_SOCKET3A           :       aux=analogRead(ANALOG7);
00188                                                         break;
00189                 case    SENS_SOCKET3B           :       aux=pulse(SENS_SOCKET3B);
00190                                                         break;
00191                 case    SENS_SOCKET3C           :       aux=pulse(SENS_SOCKET3C);
00192                                                         break;
00193                 case    SENS_SOCKET4A           :       aux=analogRead(ANALOG6);
00194                                                         break;
00195                 case    SENS_SOCKET4B           :       aux=pulse(SENS_SOCKET4B);
00196                                                         break;
00197                 case    SENS_SOCKET4C           :       aux=pulse(SENS_SOCKET4C);
00198                                                         break;
00199         }
00200         return  (aux*3.3)/1023;
00201 }

Here is the call graph for this function:


The documentation for this class was generated from the following files:

Generated on Tue Jul 20 09:31:03 2010 for WaspmoteAPI by  doxygen 1.5.6