Reading an oxygen sensor

I have an oxygen sensor that I need to read to two decimal places and need the range from 0% to 100%.

Please correct me if I am wrong, but I therefore need 0-100 in .01 steps = 0=9,999 so 10000 expressed in decimal: 512 128 64 32 16 8 4 2 1 = 9 bit with base 0 so 9 bit probably exist, so 10 bit add required? I will then need a programmable gain amplifier.

I practiced with the ADS1115 and found that this 16bit add with pga did a good basic job but the readings fluctuated too much and were not repeatable.

The O2 sensor I am using has a 0-100 linearity and give 9-13mv in air.

What would be my best option for this application. Would it be necessary for an instrumental amplifier?

What precautions should I take with respect to getting accurate repeatable results in terms of shielding etc.

Sheilded cable from O2 sensor?

I would like the final data in i2c format.

Many many thanks in advance.

Please correct me if I am wrong, but I therefore need 0-100 in .01 steps = 0=9,999 so 10000 expressed in decimal: 512 128 64 32 16 8 4 2 1 = 9 bit with base 0 so 9 bit probably exist, so 10 bit add required?

No, 2^13 = 8192 and 2^14 = 16384 You need at least 14 bit ADC. If readings fluctuate, try LPF or smoothing example in arduino IDE

Many thanks.OK, Many thanks so far, could you suggest what components I should use in the circuit? obviously to start with a 10k ohm resistor in parallel to give the sensor a load and at the other end of the circuit a suitable i2c adc?

could you suggest what components I should use in the circuit? obviously to start with a 10k ohm resistor in parallel to give the sensor a load and

What circuit? Post a link to data sheet of the sensor.

http://hammerheadccr.com/product/hh22-oxygen-sensor/

Well, that page doesn't tell much about output impedance, there is also no info where 9-13 mV coming from - where it is getting power and what is the voltage? How do you connect it's when you did initial test? I think, if device has high output resistance, than the best option would be to place amplifier as close as possible, shielding everything (IC and board) .

It produces its own voltage, doesn't have an external power source. I connected it up with a 10k load resistor in parallel to a ads1115 pga adc and got reasonable results but know this isn't ideal.

What components should I use to bring a stable result.

Many thanks

O'k, my crash course on sensor technology ended up with this : http://www.teknosofen.com/O2_fuel_cell_files/o2_cell_dissection.htm that I think is correct, as product page mention NTC compensation and 3-lead connector 8) You may put electrolitic cap 10 uF in parallel to 10 k resistor, response time is quite big anyway. It's strange you have a lot of noise, it may be indication of instability amplifier itself, than EMI from connecting wires

So a 10uF capacitor would smooth the signal eating up spikes and troughs?

What form of amplification and adc would you recommend?

Specifically what components do you recommend?

Thanks

So a 10uF capacitor would smooth the signal eating up spikes and troughs?

Depends, where this spikes come from. there is a chance that interfering part is SPI bus. I don't think ADS1115 is good choice, it has only gain x16? There is only 13 - 9 mv = 4 mV span, you need 14-bits ADC with x1000 amplification OR 24-bit ADC. If you can get ADC they used in electronic scale, you may solved a problem w/o designing amplifier x1000, which may be not easy part for beginner. What kind of arduino do you have?

I have many but would like to use the Arduino Uno for this. I am not too sure about only 4mv span, I actually measured 0-61mv using nitrogen to get down to 0v and 61mv for pure O2 so I have a good 60mv span.

What components would you suggest then.

Regards

http://www.digikey.com/product-search/en?pv153=19&FV=fff40027%2Cfff80183&k=adc&mnonly=0&newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=25

Thanks but specifically which components would you use for this. That takes me to a page with thousands. I guess I want to bring it to a say 0-5v range from 0-60mv or 0-0.060v so amplifiaction factor of 5000 / 60 = 83.

Many thanks

Throw the hole mounting package reduces a number to 29. Than, you may search on the google "ADS1211 arduino tutorial", substituting different name of the ADC, you may even get "ADC-NNNN arduino library, project, connection diagram and ready to eat use module- shield- device" Nice book, btw: http://www.amazon.com/Arduino-For-Dummies-John-Nussey/dp/1118446372

OK, I have got an ADS1210, I see from the datasheet http://www.ti.com/lit/ds/symlink/ads1210.pdf that the pga only has a factor of up to 16, I estimate I need around 100. Do I need to amplify this using an op-amp first?

What I mean in my reply

you need 14-bits ADC with x1000 amplification OR 24-bit ADC

that you need amplification factor x1000 with 14-bits ADC. Other option, 24-bits ADC doesn't require amplifier. I would try to set PGA to x1, first, see how much noise it's picking up from power line and environment. Using higher value of amplification may complicate circuitry and demand good decoupling on the power supply lines.

Would I be right in thinking that as it has such a high resolution, the reason I do not need amplication is that I will just be looking at the first (offset +) thousand ‘steps’ and the adc will only be used for the first 10 percent or whatever of its capability?

I guess 24 bit = 0 to 1,6777,215 (2^24-1) so this 1.6million range is spread between 0-5v?

So my 0-0.060 volts sensor will be 16777215 / 5v in millivolts (5000) = 3,355 and then chop up 0-100% in 3,355 steps (100 / 3355) = 0.029 so 0.03 so I have ‘jumps’ of 0.03% when measuring gas?

ALL this at zero amplification and probably wrongly assuming that it really works at 24bit.

I can go to 16x amplification on the pga (1,2,4,8 or 16) so assume that forgetting theory and just trying different amplification factors and applying the correct compensating code, I will be good?

Many thanks for all your help with this.

I'm not following your math, have you graduated school in Canada? 5 / 2^23 = 0.000000298, so your ADC resolution 0.3 uV . 60 mV / 0.3 uV = 60 000 uV / 0.3 uV = 200 000 100 % / 200 000 = 0.0005 % resolution.

Having 4 mV sensors output range, as it says in data sheet, still: 4 mV / 0.3 uV = 4 000 uV / 0.3 uV = 13 333 100 % / 13 333 = 0.0075 % resolution, pretty close to your 0.01 % objective

Sorry for the ignorance, but we all have to start somewhere, looking at pages 36 onwards of this http://www.ti.com/lit/ds/symlink/ads1210.pdf what circuit example would best suit my application? To recap, I am measuring a 0-60mv O2 sensor.

Many many thanks especially to Magician

I'd vote for diagram 40, w/o rcv420, direct drive AinP with AinN grounded.