Differential Pressure Sensor and Op Amp

Hi There

I'm fairly new to Arduino and my general knowledge of electronics is pretty low.

However I have a differential pressure sensor (MPX10DP) that has an output range of around 50mV. To get a good reading I think I need some kind of op amp. This is where I've got a little stuck. There seems to be so many different op amps available that I'm a bit lost with it. I figured a gain of 100 would be a good start.

I would appreciate if anyone could recommend me an op amp...

Datasheet for the sensor - http://www.mouser.com/ds/2/161/MPX10-256327.pdf

Many thanks!

this might help - http://ruggedcircuits.com/html/circuit_-2.html -

That sensor is of the differential output type and has a substantial output voltage offset that needs to be subtracted off while amplifying. Given the low output voltage the only reasonable solution is to use a differential amplifier. You can build one yourself (many circuits available on line) but I would strongly recommend buying a single chip version of the most generally useful variety, called an "instrumentation amplifier".

Texas Instruments makes a bunch of these in 8-pin DIPS and the only thing you need to do to set the gain is choose a gain resistor. You can buy them in single-power-supply or dual-supply variations. Most distributors stock them. You can expect to spend around US$ 10 for your application.

Here is TI's introduction: http://e2e.ti.com/support/amplifiers/precision_amplifiers/w/design_notes/1777.aspx

jremington,

Thank you for your reply - I was actually in the middle of looking these up myself as I got this. Good to know I was looking at the right thing! I'll get one of these ordered over the next few days and see if I can get it working.

I agree with jremington, you need an instrumentation amplifier. INA122 is inexpensive, widely available, and suitable for operation from a single +5V supply.

Thanks, I'm going to order one of those amps but in the mean time I've been using a (standard?) op amp and having a few issues.

I bought this one: http://www.maplin.co.uk/media/pdfs/Module%2046375.pdf. I have wired it up as a difference op amp with a gain of 10 but I am not getting the correct results.

To start from the beginning, when I wire the differential pressure sensor I can measure a difference of about 30mV (2.53V and 2.50V) on the Arduino and I can see the difference increase as I apply a pressure. Seems to be ok. Now if I plug the outputs from the sensor to the OpAmp I get a constant output of 0.66V - this is indeed a gain of 10 from the input but now when I look at the output directly from the sensor there is a difference of 0V and both are at 2.5V. Applying a pressure across the sensor now has no effect! If anyone knows of a potential issue that could cause this please let me know.

EDIT: I use the Arduino 5V as a single supply for the OpAmp

Thanks

mattdlr

You need to tell us exactly how you have wired the op amp, and what component values you have used. Post a schematic.

There are a number of issues with trying to use a single op-amp for this application. The input resistance of the differential amplifier needs to be high enough not to distort the sensor output. The resistor values in the amplifier need to be precisely matched, otherwise you will be to some extent amplifying the 2.5V as well as the 30mV. You may need to trim out the input offset voltage of the op amp.

DC42,

I've attached a schematic. I'm guessing I need to use higher resistors perhaps. I understand that there are still issues with offset etc but for now I'll be happy to have an amplified signal that responds to the pressure change.

Thanks

pressure sensor schematic.png

Yes, you need to increase the resistor values by a factor of at least 10. Also, consider making one of the resistors slightly variable, so that you can balance the circuit. For example, if you make the input resistors 10K each, then the feedback resistor could be 100K in series with 2.2K, and the resistor between the non-inverting input and ground could be 100K in series with a 4.7K pot.

In addition to DC42's comments, please make sure that the Vin- input of the op amp is the upper input shown in your circuit diagram. In other words, the feedback resistor from the op amp output has to be connected back to the Vin- input, or the circuit won't work as expected.

The output impedance of this sensor is about 1000 ohms, and that figures into the amplifier gain equation. So, as DC42 said, your input resistors have to be at least 10x larger, so that the sensor is not "loaded down" and has less effect on the gain. Use of an instrumentation amplifier completely eliminates these considerations.

I now have an instrumentation op amp. I have wired it up as the data sheet says. However the pressure sensor has a 30mV offset that is giving me a 1.46V output from the amplifier. What would be the best way to get rid of this offset. Use resistors at the output of pressure sensor to balance them?

Thanks

The simplest way is to just subtract the appropriate amount from the result of calling analogRead. This is what would typically be done in commercial equipment (the amount to subtract would be stored in EEPROM, so that the program stayed the same for all units).

The problem with using resistors at the sensor output to balance out the offset is that the sensor resistance has a temperature coefficient of about 0.24% per degC. So if you balance out the offset using standard resistors having a much lower temperature coefficient, then you will generate about 72uV of drift per degC. The sensor itself has an offset drift of only +/-15uV per degC typical.

Ok thanks, I'll just add it to my program as you suggest. With the final version I'm hoping to use a more accurate pressure sensor so hopefully I will have less of an offset then.

On a side note if I wanted to reproduce these and say make 10+ of them. I would go down the route of getting a printed circuit board right though then with sensor variations would you need to manually set each of the offsets.

mattdlr:
On a side note if I wanted to reproduce these and say make 10+ of them. I would go down the route of getting a printed circuit board right though then with sensor variations would you need to manually set each of the offsets.

Yes. You would calibrate the units during testing. Before the days of microcontrollers, there would probably be a trimpot on the board, and someone would adjust it to remove the offset. Today, there would probably be some way of telling the unit to calibrate itself. This could be via a hidden menu option if it has a user interface, or a hidden push button, or similar. When activated, it would read from the sensor, and store the reading in EEPROM for subsequent use in correcting future readings.

One complication is that the offset could be positive or negative. A negative offset would require holding the REF pin of the INA122 at above ground potential, preferably used in conjunction with an ADC with differential input.

Thanks for all your help. Hopefully I should be able to make some good progress now! :slight_smile: