SPEC Sensor Analog Sensor Development Kit


This is the place to ask any questions related to the SPEC Sensor Analog Sensor Development kit. The article goes into detail on how to get started with the SPEC Sensor Carbon Monoxide Evaluation Board from SPEC Sensors. This will show some sample code and how to hook the sensor up to get it running on an Arduino IDE platform.

The kit comes with 5 sensors, three of which have headers on the bottom that can be put into the evaluation board. The board has a terminal block for the three outputs from the sensor, Vgas / Vref / Vtemp. All of the outputs are analog so it is imperative to make sure you have some analog I/O ports for reading the values.

Video -

EEWiki - https://eewiki.net/display/DKSB/SPEC+Sensor+Analog+Sensor+Development+Kit

Evaluation board - 1684-1003-ND



I would like to know if i would get some issues (regarding precision) by connecting VREF to A1 (atmega328p) directly like in the video? :

I was thinking on using the analog voltage version :

Specifications say it needs to be High impedance "High impedance output requires a buffer to connect to any
measurement device."


Hello Joao, this is a good point that you bring up. You would probably want to use a buffer there, for the purpose of the video I was basically just showing how this could be hooked up and what the physical board would be like. I read through the Atmega328 datasheet specifically looking at the analog inputs and they are optimized for analog signals with an output impedance of approximately 10k or less so you are correct in what you are saying. If it is helpful, I have a list of different buffer options that are currently stocking if you wanted to take a look.



Hi Pat,

That list is very helpful, thank you very much.
I will get a closer look as soon as i can in order to choose the right one, do you have any favorites for this application?
Ideally one that is not too small so that i can hand solder (for now), atmega input voltage will be a regulated 3.3v.


If you are going to do hand soldering I would suggest this list to start with: https://www.digikey.com/short/qt9zn9

Something else that may be helpful for the dip packages if you choose to go that route would be some sockets as well: https://www.digikey.com/short/qt9z0t


Quick question. If I want to develop with SPEC sensors do I need to use the development boards? Or can i just connect the sensor, run the output through a resistor and calculate the concentration. I was trying to do this but i am struggling to find the pinout to properly connect the sensor to my system.



Hello Mat, you will not need to use the development boards; however, to calculate the concentration I know that they had used a potentiostat in their circuit (link here page 3).


I’m using the spec sensor (Voltage version) for ozone.
The voltage output shows, on a oscilloscope, a perfect alternative tension with a 50Hz frequency with an offset of around 1.2V
The sensor is alimented through an arduino (uno) board on the 3.3V power output. Whatever the power source (USB, 9 battery, laboratory alimentation), the behavior is the same.
Do you know what can I do ?


Hello Emlaurent. I reached out to the manufacturer regarding this and they had this to say:

The Analog Gas Sensor Module (“SENSOR OZONE ANALOG VOLTAGE MOD” on Digikey) has a few outputs. Temp, Vref, and Vgas. It is not necessary to read Vref, users can find a stable base line in clean air, and use that value to convert voltage to concentration. If users want to read Vref, they must use a voltage follower, (Figure 3 here: https://en.wikipedia.org/wiki/Buffer_amplifier). If they read the voltage directly, the line can act like an antenna, and introduce 60 Hz (or 50 Hz if they are international).
There are 3 ways to overcome this without a voltage follower:

  1. If users want to read Vref, they must use a voltage follower, (Figure 3 here: https://en.wikipedia.org/wiki/Buffer_amplifier). If they read the voltage directly, the line can act like an antenna, and introduce 60 Hz (or 50 Hz if they are international).
  2. There is a voltage follower as well as a battery holder in this development kit: SDK-O3 SENSOR DEVELOPER KIT PN# 1684-1051-ND
  3. For the easiest low cost solution, use 10k resistors to buffer Vref, then measure Vref with ADC, however, this adds some current draw to the project, and it is no longer low power.


SPEC sensors has also provided a couple of links to projects they had done:

I wanted to add that I have 2 projects I put together.
The first project is using a SPEC CO Sensor with no support electronics along with an Arduino. It is here: https://www.digikey.com/en/maker/projects/create-your-own-co-detector/874229f4378346a7a0d86c28c5ca2850

The second project is an Arduino library for the Analog Gas Sensor Module. It is here: https://github.com/SPEC-Sensors/ULPSM

Hopefully that helps!


Hi Pat,
Thanks for this helpfull Topic.

I´m absolutelly new here, and also developing projects with Arduino or any other platform, so please be patient with me.

I have been trying to build an SO2 Concentration logger. My question is regarding your project shown in your Arduino library.

Do i just need to fill in the sensor sensibility (in my case is 29.40 and change the sensor type to SO2?I changed also the final line to read temp in Celcius.

The thing is my numbers do not make too much sense, temperature doesn´t change at all, stays at -18 and concentratons are in the -3 to -1. Vgas is in the range of 200.

To avoid pasting the whole script here, will show the sections i have changed

const int C1 = A0;
const int T1 = A3;

const float Sf1 = 29.40; //nA/ppm replace this value with your own sensitivity

float temp1;
float TZero;
float Vzero1;

SO2 sensor1(C1, T1, Sf1); //Sensor Types are EtOH, H2S, CO, IAQ, SO2, NO2, RESP, O3, and SPEC (custom)
//O3 sensor2(C2, T2, Sf2); //Example O3
//H2S sensor3(C3, T3, Sf3); //Example H2S

And then the final lines…

//Use .getConc(1, temp1) where temp1 is in deg C for temperature corrected span
// Use .genConc(1,sensor1.getTemp(1)) for Farenheit
Serial.print(", ");


your help wll be much appreciated.

Best Regards Nic


Hello Nicovidal - SPEC Sensors wanted me to let you know they had updated some of their notes in their Github repository that you could take a look at.


Dear Pat_Sagsveen,
I have interfaced ULPSM H2S sensor model :110303 H2S (Sensitivity code:247.93) with controller and also i have driver board for this H2S GAS sensor ,Version is REV 1.2.
Supplied 3.3v at sensor board pin 7or 8 with Gnd(6) and Vgas of pin 1 is connected to Input of ADC pin.

When i interface and test this Sensor,observed that constantly getting 1.63V from Vgas.I have only one adc pin.so i don’t have a chance to use Vtemp.

Reference Document:

As you mentioned above , it is necessary to add Voltage follower for Vref in order to maintain the half of Vin voltage.

Even though i added voltage follower on Vref,observed constant data only and also it is not detecting any odour.

Can anyone please help me to figure out issue and share technical documents along with schematics of Rev 1.2

Thanks in advance,
Kaleeshwari P


Hello Kaleeshwari P,

Thank you for your inquiry.

The basic schematic of the potentiostat circuit on Spec Sensors Analog ULPSM boards:

The reference pin should be half the supply voltage, which would be approx 1.65Vdc. It’s strange that you haven’t been seeing a change on Vgas. Do you have a controlled gas you can expose the board to verify the signal? Is this sensor exposed to open air or in a ported enclosure of some sort?

Thanks again, let me know if I can be of further assistance.

Best Regards,
Digi-Key Technical Content Developer


I wanted to know if it’s possible to use the sensors without the ulpsm/evaluation boards and also, if there are special circuits required to this.

Thank you very much.


Hello - I will do some research into this. I know the potentiostat is going to be important but beyond that I get a little bit lost. Will see what I can find for you and then I will post on the thread to be helpful for others as well.


Thank you very much. I’m trying to design a circuit with 5 sensors working simultaneously so getting five separate ULPSMs is not possible. I’ve looked at the potentiostat circuit, I can’t figure out values for R1 to R4?

Thank You


He did not directly answer my question about doing this with out the ULPSM board, I think he inferred that it could be done if you follow the application schematic. Reason I say this is from the rest of the email that he gave me. Let me know if this is helpful or if you need more information:

Hi Pat,
Thanks for asking, here are the steps to determining all of resistor values.

  1. determine if your sensor has positive or negative response to gas; ie. H2S and CO respond with positive current and O3/NO2 respond with negative current.
  2. set the working voltage (noninverting pin5 on U2) to a low point (not zero) for the positive response sensors, and a high point (not V+) for the negative response. Your resistor ladder should be chosen for lowest current drain with highest sensor stability. This is around the voltage that your ADC will read with no target gas present (there is an offset to the baseline).
  3. determine the bias voltage that you need at the reference electrode, i.e. H2S and CO sensors require a positive bias 3-15 mV (10 mV), while O3 or NO2 requires -25 mV.
  4. determine your reference voltage. If you have an H2S or CO sensors and your working voltage from step 2 is 100 mV, then your reference voltage should 90 mV. If you are working with the O3/NO2 sensors your working might be 2.900 V (out of 3.3), and you need -25 mV bias. Therefore, your reference voltage needs to be 2.925 V. Bias voltage is working voltage minus reference voltage. Similar to step 2 determine the values for the resistor ladder that give you the highest stability, but the lowest current. We recommend no lower than 1.5 uA in each voltage ladder, but you will get better stability if you have 15 uA or more in each ladder.


Hi Pat,

It seems a great and helpful video.
I have a question. I am using spec NO2 sensor kit and I have downloaded the ULPSM library from Github. But that doesn’t even work. As soon as I compile the given example 1 in there (with little changes for NO2) the IDE says Error compiling for board UNO. I have even tried it with a mega and the same error comes, Error compiling for arduino / genuino Mega.

I will really appreciate your help.


Hi Syeda,

Thank you for your inquiry.

Did you install the ULP Library with the file named “ULP.h”? I got the same error when I just compiled the example code and didn’t install a zip folder library of the ULP folder. I had to create a zip file of just the ULP folder and then choose


*Include LIbrary

*Add .ZIP Library…

and select the compressed folder.

Thanks again, let me know if I can be of further assistance.

Best Regards,



Hi Kristof,

I have first placed the ULP.h file in the libraries directly with the examples but it was not working.
Now I made a ZIP folder as you have indicated and included in the libraries through arduino but the compiler gives the same error.

I hope you can give me some more ideas as I am unable to figure out what is wrong.
Installing a library through a ZIP folder and directly into the library folder in arduino is not a new task for me but with these ULP ones are not working for me.