Connecting an opamp to arduino to measure differential pressure


I am using an OPAMP INA145 ( INA145 data sheet, product information and support | to increase the output of a differential pressure sensor, which is between 0 and 35mV. When I try measuring the amplified output, it is just zero all the time. I have no idea what's the problem so I am grateful for any suggestions!! The only thing I could think of might be the wiring of the OPAMP, especially of the Ref-pin as I just connected it to ground...
The picture shows the wiring, V0 (Pin 6) is going to the Arduino Board.

Thank you!!

The output could be between -10V and +10V, and a Arduino Uno can only have 0...5V at a pin.

A Wheatstone bridge is used together with a instrumentation amplifier.
I assume that the sensor has piezo/silicon elements arranged in a Wheatstone bridge.

I think that others sometimes use a HX711 in this situation.

Do you have a multimeter ? Then you can measure the difference between the sensor outputs and see if it changes with pressure.

Yes, the sensor is based on a Wheatstone bridge.
Would I need to change the supply of the OPAMP to single a supply of 5V then?
The sensor outputs change with pressure, I used it before with some data logger and it worked just fine but I did not use the OPAMP back then. I am just using the OPAMP now because the reference voltage of an arduino is 5V so that the change of 0-35mV will probably not be noticeable.

A OpAmp is not a instrumentation amplifier and your OpAmp is not a common OpAmp.

So your saying there is no way to use this OPAMP?

What are looking to do is to convert a signal from one device to send to a second device.

With the vast array of tools designed to read the value from the first device on the input and to match the output to the second device on the output, you will find chips and designs that are better suited.

An industrial op-amp takes a bit more effort but will yield far superior results.

That said, what were the specs of the data logger that worked fine?

A 16 bit I2C ADC might be your earliest solution.
Programmable ranges so you can get a higher sensitivity.

The data logger that worked fine was a QuantumX. So not a microcontroller.. I will have a look at the I2C ADC you mentioned.

ADS1117 , 16 bit, and, programmable gain. so you can have more sensitivity.
and it offers double ended inputs. connect both ground and signal to an input and it will log the separation of voltage more accurately than a simple ADC.

The INA145 difference amplifier that you have is perfectly suitable for the task. It can be used on a single-sided 5V supply, which makes it perfectly suitable for use with a 5V Arduino ADC input.

See Figure 3 in the data sheet (Measuring Current with Shunt Resistor) for an example 5V single supply application. Choose suitable gain resistors for your application.

@jono44 thanks for providing a link to the amplifier; could you also provide a link to the d.p. sensor as that may well be significant.
The INA145 has a relatively low input resistance (40K) that could affect readings from the sensor.
AS @jremington says, it SHOULD be suitable - but you will need to power it from a 5V rail.
Without knowing what the sensor is we are just guessing.

Thank you for the answers! I will try the 5V supply then! I just still don't get why it's not working with +-10V because the output will be still between 0 and 3.5V and therewith <5V...
diffdruck.pdf (2,9 MB)
That's the data sheet of the differential pressure sensor.

I connected it with 5V single supply. But now I have an output of 4,3V without having a difference between the voltages at the input so that the output should be 0V as well...
Without the input voltages connected I get 3,5V.

If you want to read differential pressures (assuming the sensor is factory- ballanced for zero differential pressure), and you want to read that with a 5volt Arduino, then you must have the reference pin of the instrumentation amp mid-voltage of the Arduino supply (about 2.5volt).
You can make a mid-point with two (1k) resistors in series between VCC and ground of the Arduino, with mid-point connected to ref.
Supply for the instrumentation amp could be 5volt, but then you don't have much signal headroom.
+/- 10volt should be ok, as long as you use a (10k) pin protection resistor between instrumentation amp output and Arduino pin.

Bit silly to use an un-amplified and un-compensated raw sensor, while similar sensors are available with built-in instrumentation amp and high-resolution A/D, with I2C interface.

Okay, thank you! Do I need to connect the pin protection resistor parallel to the connection to the arduino or in series?
Yes, I know, I did not choose the sensor myself...

since the sensor is a piezo in an wheatstone bridge with the outputs being both connected to the bridge, the op-amp should be set to give you the differential readings.

you should be able to monitor the output with something a lot more sensitive than the Arduino ADC to make sure you are getting what is expected.

since the last place everything worked perfectly was when inputting to the datalogger, I would start there and try to replicate that.

The op-amp should only amplify that signal, so the main output, or raw output should be measurable and exactly where you expect it. the op-amp should not have any measurable effect when connected or removed from the device.

Was not clear enough?
One end of the resistor to the output of the instrumentation amp,
and the other end of the resistor to the Arduino input.

It prevents excessive fault current into the Arduino pin in case the amp outputs more than 5volt or less than 0volt. It has no influence on normal operation.

Zero pressure should now give an A/D value of about 512.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.