Go Down

Topic: Differential Air Pressure sensing (Guidance needed) (Read 3387 times)previous topic - next topic

hemilshah

May 04, 2014, 05:04 pm
Hi,
I'm starting out on making a differential air pressure measuring circuit which can measure differentials from ideally 0-100 mm H2) which is equivalent to 0-1 kPa.
I have a MPX4115A Pressure Sensor (*http://www.farnell.com/datasheets/8723.pdf).
I know that my board can measure 1024 samples between 0-5V which is roughly 14.75 mm H20.
I was wondering if this sensitivity can be reduced as much as possible.
I don't think it is possible with the same arduino UNO board which I have,I might be wrong,I'm very new to the Arduino.
If not,is there some other sensor or some other way I can measure such difference?

Thanks.

Hackscribble

#1
May 04, 2014, 05:26 pm
Hi Hemil

Quote
I'm starting out on making a differential air pressure measuring circuit

I'm assuming that you plan to use two of the MPX4115A sensors, take a reading from each and then calculate the pressure difference between them?

Looking at Figure 4 in the datasheet, the straight line portion of the output of the sensor seems to be between 15 kPa and 115 kPa.  I'm assuming that this range is OK for you - but you want to measure the difference between two sensors where the difference is in the 0 to 1 kPa range?

Page 2 of the datasheet gives the sensor sensitivity as roughly 45mV change in output per 1 kPa change in pressure.  With the standard (nominal) 5V reference to the Arduino ADC, I think that works out at (0.045 / 5) * 1024 = about 9 increase in output value per 1 kPa.

Quote
I was wondering if this sensitivity can be reduced as much as possible.

Do you mean increase the sensitivity, i.e. make the Arduino able to read smaller changes in differential pressure with more precision?

Two ideas come to mind.  If you look in the reference section of this website about the analogue pins and "analogRead()" function, there is information about setting different reference voltages for the ADC.  If you can apply a clean and stable reference voltage lower than the default 5V supply, you will get a bigger value output per mV of input.

Another approach would be to add an external differential amplifier between the sensors and the Arduino, so it compares the sensor outputs and generates a difference voltage, with the gain of the amplifier set to make best use of the Arduino input range.

Regards

Ray

arduino@hackscribble.com | www.hackscribble.com

retrolefty

#2
May 04, 2014, 07:12 pm
Why not just select the proper sensor for your application, a true differential pressure sensor with the pressure range you require. Such a sensor will have two pressure measurement ports, a high side and a low side that you route (perhaps using plastic tubing) to the two points you wish to measure across. This will give you both the range you need with the best resolution possible. The attached product sheet shows that they are available and I'm sure there are other manufactures. Be sure you check that they can handle to medium and temperature you will be using, many of the lower cost sensors will only work in dry air medium.

http://cache.freescale.com/files/sensors/doc/data_sheet/MPX5100.pdf?pspll=1&Parent_nodeId=Q966661595292&Parent_pageType=product

dave-in-nj

#3
May 04, 2014, 08:35 pm
the air pressure sensing is pretty easy.  the sensor itself needs to be in the same chamber as one of the two pressures.
if that means in an enclosure that has a tubing connection, then that should work.  if it means installing it inside of the device that has a pressure, that should work too.     all pressure sensors reference two pressures.

the teesny has a 13bit ADC (useable) device.   that will give you a much higher reading.

you did not state the actual process you want to measure.    check out the device specs for error.
accuracy is 1-1/2% for your device.  most digital will then stipulate device error plus/minus 1 digital step.

the 10 bit will already be more accurate than the device.  if you are looking for high sensitivity, then get a device with the range you want and that as an accuracy in the range you want.

Billysugger

#4
May 04, 2014, 08:39 pm
Your sensor is an absolute pressure sensor, it is not suitable for differential pressure measurement.  You need a differential pressure sensor.

Take a look at the MPXV7002DP, Farnell part 2080499.  Not only is it differential, but it has a full-scale range of ±2kPa, which is near perfect.

Hint: DO NOT bend the surface mount pins to fit through a prototype board, these sensors have the chip mounted to the lead frame and any deformation of the leads will put strain on the sensor bridge, leading to horrible and unpredictable offsets.  Instead, mount it to a PCB with the correct footprint, or loop tinned copper wire through the prototype board at positions corresponding to the sensor lead ends, then carefully solder the sensor down without deforming the leads.
Electronics components work on the principle of smoke; I know this because when I let the smoke out, they stop working.

Billysugger

#5
May 04, 2014, 08:41 pmLast Edit: May 04, 2014, 08:43 pm by Billysugger Reason: 1
Quote
the sensor itself needs to be in the same chamber as one of the two pressures.

I claim the prize for spotting the deliberate mistake - that works for gauge sensors Dave, not absolute.
Electronics components work on the principle of smoke; I know this because when I let the smoke out, they stop working.

dave-in-nj

#6
May 05, 2014, 02:17 am
absolute pressure ?  as referenced to  ?

the so-called one sided measurement is referenced ambient pressure.

put it on a plane or in a barometric chamber and in both cases it will read zero.

put it on a plane and connect it to the outside of the plane and the pressurized cabin will only effect one side of the sensor.  odd'ly, the side  NOT connected to the tubing.

all a differential pressure device has is a second connection port.

you put that sensor in a waterproof box, add a house for the box area and a second one to the connection and you have created a differential pressure sensor.

a Bordon tube is a perfect example.  the atmosphere in which the device is placed is the reference pressure.  the tubing is connected to a separate environment.

retrolefty

#7
May 05, 2014, 02:23 am

absolute pressure ?  as referenced to  ?
The internal sealed 2nd pressure port is evacuated to as perfect a vacuum as possible, so it's port is measuring applied pressure to the exposed port relative to absolute zero pressure.
the so-called one sided measurement is referenced ambient pressure.
Yes, the internal 2nd pressure port is exposed to ambient pressure but not available to the user, often called a gauge pressure measurement.
put it on a plane or in a barometric chamber and in both cases it will read zero.

put it on a plane and connect it to the outside of the plane and the pressurized cabin will only effect one side of the sensor.  odd'ly, the side  NOT connected to the tubing.

all a differential pressure device has is a second connection port.

you put that sensor in a waterproof box, add a house for the box area and a second one to the connection and you have created a differential pressure sensor.

a Bordon tube is a perfect example.  the atmosphere in which the device is placed is the reference pressure.  the tubing is connected to a separate environment.

dave-in-nj

#8
May 05, 2014, 02:50 am

Your sensor is an absolute pressure sensor, it is not suitable for differential pressure measurement.  You need a differential pressure sensor.

alas, I was wrong.  the absolute pressure sensor in the OP link has the differential sensing element sealed chamber that was not open to the atmosphere.

although the fundamental principal is that all sensors are differential, this device has one side sealed to create a reference chamber.

since a new sensor is needed, the choices of buying one that has two ports for tubing or buying one that has one port for tubing and the other side open to atmospheric pressure, the dual port would be the same cost and unless the measurement WAS for pressure comparison between atmospheric and some device, the dual port would be the better choice.

hemilshah

#9
May 05, 2014, 09:38 am
I was going to work on taking two of them and connecting them to the two pressure zones using the rubber tubes. Since there are other sensors with specially made for differential measuring,I'll try using them.
I am going to measure the difference between two pressure zones,and not between one and the atmosphere.
I was going to try the differential amplifier which would've helped to measure the smaller pressure differences.
But as Billysugger mentioned, there are MPXV7002DP, Farnell part 2080499,they seem good enough and my pressure difference will not be greater than .2 kPa.
If anyone has used this/know about this sensor,if I have a pressure difference of say 0.1 or 0.001 kPa,will it be able to detect it?
Because I'll be using this to detect small pressure variations.

Thanks again for all the help.

Paul__B

#10
May 05, 2014, 12:48 pm
You definitely need a differential sensor.

Using two absolute sensors is a nightmare.

Let me give an example.  How do you weight a baby?  Well, if you only have bathroom scales, you pick up the baby and stand on the scales, then hand the baby off and weigh yourself alone.  Subtract the two readings.

Not a very good way of doing it because the error in the scales is a substantial proportion of the weight of  the baby.  You need to have proper baby scales if you want to detect differences of fifty grams or better.

(Actually, this points out another way of doing it - instead of using two sensors, using one sensor and a valve to switch frequently between the two areas to be measured will be more accurate than using two sensors.)

Billysugger

#11
May 05, 2014, 02:40 pm
Quote
If anyone has used this/know about this sensor,if I have a pressure difference of say 0.1 or 0.001 kPa,will it be able to detect it?

I have used many pressure sensors, in many different ways

This sensor is a purely analogue device, so it will sense as low a pressure differential as you like - the practical limit is determined by your measurement circuitry.

The Arduino ADC has a resolution of 10-bits, which is 1024 steps over a 5V range.  So one step is 5V/1024=4.88mV.  The MPXV7002DP sensor has a sensitivity of 1V/kPa with a supply of 5V.  So one 4.88mV step is 4.88Pa, or 0.0048kPa.  So the Arduino will not be able to detect 0.001kPa change with this sensor.

To detect a change of 0.001kPa (1.0Pa), you'll need to be able to detect  a change of 1mV.  That will need at least 13-bit resolution over 5V ( 5V/(2^13) = 0.6mV).  If you can live with 0.0012kPa resolution, then you can use a 12-bit ADC.  Either use a different processor, such as my beloved XMEGA series, or a standard Arduino Uno with an external 12-bit ADC.  The ADS7822P would fit the bill.

The sensor is ratiometric, which means it gives an output which is proportional to the supply voltage, not an absolute voltage. So be sure to use Vcc as your ADC reference, and not a precision voltage reference. That way, as your supply voltage varies, both the ADC reference and the analogue signal will vary together and the variation will cancel out in the ADC conversion. It appears to be a paradox, but in this case a 'precision' reference gives you a less precise result, because the reference will stay constant as the signal varies with supply voltage.
Electronics components work on the principle of smoke; I know this because when I let the smoke out, they stop working.

Hackscribble

#12
May 05, 2014, 02:52 pm
Quote
So be sure to use Vcc as your ADC reference, and not a precision voltage reference.

And power the sensor from same Vcc?
arduino@hackscribble.com | www.hackscribble.com

Billysugger

#13
May 05, 2014, 03:52 pmLast Edit: May 10, 2014, 02:41 am by Billysugger Reason: 1
Quote
And power the sensor from same Vcc?

Yes.  The very best solution it to create an analogue supple, AVcc.  Supply this from Vcc through a resistor (33ohm will probably do), and put a 10uF capacitor from AVcc to Gnd, and a 100nF capacitor across the sensor supply.  Power the sensor from AVcc.  Power your external ADC from the Arduino Vcc (also with a 100nF capacitor across its supply), but connect its Vref pin to AVcc.  This will give you a good, stable analogue supply with noise from the digital circuitry largely filtered out.

For anyone wanting to create a separate AVcc supply for their ATmega MCU, do not connect the Aref pin directly to any supply, including AVcc.  Instead, leave it floating, or decouple it to 0V with a capacitor, and select internal AVcc as your ADC reference

When you fire it up and read the ADC value, you should get half-range with no pressure differential (a value of about 2048).  Whatever this value is, store it as an offseet then subtract it from future readings, with the result stored as a signed integer.  Now you should get zero with equal pressure, positive increasing values as the pressure at port P1 exceeds P2, and negative values as P1 pressure falls below P2.  The scale should be 1.2Pa per increment, but you can calibrate it with a water column.  Be careful to make sure water never enters the sensor, only air at the pressure you want to measure.

Let us know how you get on.
Electronics components work on the principle of smoke; I know this because when I let the smoke out, they stop working.

hemilshah

#14
May 09, 2014, 08:25 pm
Hi,
I'm going to use my Arduino UNO with an external atleast 13-bit adc,Can you suggest some?
It needs to measure in the voltage range of 0-5 V and it should be compatible with the MPXV7002DP, Farnell part 2080499 which I'm going to use.

Sorry if this is getting repetetive,but I am new to this.

Go Up

Please enter a valid email to subscribe