Child pages
  • SPEC Sensor Analog Sensor Development Kit
Skip to end of metadata
Go to start of metadata



Carbon Monoxide evaluation board

SPEC Sensors, LLC

968-020 / 1684-1003-ND



            Recently I made a video for the 968-020 Carbon Monoxide sensor evaluation board.  This board is used to measure the amount of CO in the air and can be programmed to show how many parts per million of CO there is.  It uses an electrochemical sensor that converts the CO into a proportional current that is then converted into a voltage that was output into an Arduino Uno. 


            The board has 3 outputs, Vgas, Vref, and Vtemp.  Vref is about half of the supply voltage while temperature voltage can vary and Vgas is the output for the target gas. There was a data and clock output as well; however, these were not connected.  In addition, on the bottom left of the image below you can see the power options.  There is a V+, 3V reg V+, and a battery option (the battery clip is underneath the board).  These will ultimately all supply 3v to the board and is jumper selectable, but it is recommended to keep the unit powered up as much as possible because it draws such little current and this helps to level out the output of the sensor as when power is first applied there is a charge current that affects the output.




This sensor has a measurement range from 0 – 1,000 ppm with a sensitivity of 4.75 +/- 2.75nA/ppm.

For the video I only showed the output voltages from Vgas, Vref, and Vtemp, but there is an equation that can be used to derive the concentration of the target gas. 

Cx = gas concentration in ppm

Vgas = output voltage from Vgas

Vgas˳= output voltage from Vgas in clean-air environment

M = sensor calibration factor – to calculate M use the following:



Sensitivity Code = provided on sensor label (see below)

TIA Gain = gain of the trans-impedance amplifier stage of ULPSM circuit


Sensitivity code shown in upper right of sensor label (6.2)


In addition to the equations provided for target gas concentration, there is also a way to calculate temperature:




The purpose of this board is to monitor CO in the air.  

  1. Uses electrochemical sensor
    1. Gas is measured at the working (or sensing) electrode
    2. Current flow from the electrochemical reaction is proportional to the amount of gas
    3. The current is the output signal from the sensor


      2) Circuit that converts the current to a voltage is called a potentiostat

  1. The voltage measured across the working electrode is compared to a reference voltage


This sensor works best when it has been on for a while

  1. There is a charging current that affects the sensors measurements when it is first powered
  2. Since it draws so little power it is recommended to leave it in an always ready state



The range of this sensor is 0-1000ppm of CO

  1. Sensitivity is 4.75 +/-2.75 nA/ppm
  2. Sensor output will change with temperature


Sensitivity Code

  1. Each sensor has its own sensitivity code
  2. This code will be important when calculating temperature compensation
  3. Sensors tested and marked at the SPEC Sensor factory


Calculating gas concentration

  1. This is explained in the user’s manual on page 3
  2. We did not code the formulas out for this only set up reference voltage and gas voltage
  3. Sensitivity code is taken into consideration in these calculations


Hooking up the board

  1. Hooked the board up to an Arduino Uno
  2. Set Vgas / Vref / Vtemp as inputs to the Arduino
  3. Used battery to power the sensor
  4. Since this is an analog board we left pins 4 and 5 disconnected


We wrote a code to show the gas voltage, reference voltage, and temperature voltage

  1. The values were from 0 - 1023 on our Arduino
  2. Link to sample code below

Items in this kit include

  1. Sensor module configured to work with sensor
  2. Evaluation board
  3. 3 sensors with headers that fit right onto sensor module (site says 2 but there are 3)
  4. 2 sensors with surface mount capability for a design board
  5. USB with datasheet / schematics / parts list / gerber files



Evaluation board (1684-1003-ND)


What we used to run this

  1. Arduino Uno (1050-1024-ND)
  2. Jumper wire  (1568-1438-ND)
  3. USB A to USB B (Q361-ND)


Sample Arduino code for IDE


  Reads an analog input on pin 0, prints the result to the serial monitor.
  Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
  This example code is in the public domain.

float TotVgas = 0;
float TotVref = 0;
float TotVtemp = 0;
int NumOfSamples = 0;

// the setup routine runs once when you press reset:
void setup() {
	// initialize serial communication at 9600 bits per second:

// the loop routine runs over and over again forever:
void loop() {
	// read the input on analog pin 0:
	float Vgas = analogRead(A0);
	float Vref = analogRead(A1);
	float Vtemp = analogRead(A2);
	TotVgas += Vgas;
	TotVref += Vref;
	TotVtemp += Vtemp;
	NumOfSamples ++;
	// print out the value you read:
	Serial.println("Average Vgas: " + String(TotVgas / NumOfSamples));
	Serial.println("Average Vref: " + String(TotVref / NumOfSamples));
	Serial.println("Average Vtemp: " + String(TotVtemp / NumOfSamples));
	Serial.println("Number of Samples: " + String(NumOfSamples));
	delay(100);        // delay in between reads for stability

Additional Resources

Video - 

Forum discussion -



  • No labels