I'm working on a project that needs to read a four-wire pressure sensor. The sensor takes 10 V DC in on two wires, and outputs 0-100 mV DC, 1 mV/psi. I need to read that voltage on an Arduino (actually a Teensy), convert it to a PSI measurement, light an LED if it's too low, and output the information over a serial line. I'm OK on the software side of it, at least conceptually, but questioning how to read the voltage.

My best guess here is that, to get decent resolution, I need to convert 0-100 mV to 0-5 V. My next guess is that I'd use an op-amp to do this. From there, my guesses are running out--I've not had occasion to play with op-amps before, and I'm not even sure that they'd be appropriate here. What would be the best (simplest, lowest parts count) way to accomplish this?

You can set the voltage reference to external and put a lower voltage on the aref pin, I'm not exactly how low it can go but you can probably get the range alot closer without any hardware

You need an op amp. There are lots of circuits around for single supply op amps. If you use the 1.1V internal analog reference for the ADC, the op amp will only need a gain of about 10.

You seem to be on the right track. Lookup the data sheet for a LM358 Dual OP-AMP (it's a little bit of overkill for what you want, but seems to be a popular IC on this site, and it will do what you need). Using the 8-pin DIP package, you want to create a Non-inverting amp with a gain of 50 and run it through a voltage follower (non-inverting amp with a gain of 1): pin 1 - output amp a, signal out and tied to pin 5 pin 2 - inverting input (-) amp a, tie to 10K ohm R, which is tied to ground; pin 2 also tied to a 50k ohm R which is tied to pin 1 (amp a output). This sets/creates your non-inverting amp with a gain of about 50. pin 3 - non-inverting (+) input amp a, 0-100mV signal in. pin 4 - ground pin 5 - non-inverting input amp b, tied to pin 1 pin 6 - inverting input (-) amp b, tied to pin 7 output amp b. This sets/creates your voltage follower and uses up the other op-amp in the package (optional if you have another use for it in this application) pin 7 - output amp b, to an analog input of the arduino.

This should work. your volues will not be exact, so you will not actually get a gain of 50, but it will get you close enough to map a full scale output. I'm sure somebody else will eventually come along and rip this apart with a better solution, but this will get you started. Good luck! Have fun.

OK, op amp it is, and I’ll look up the LM358. Thanks for the input!

(later) I’ve looked at the data sheet for the LM358, and it looks like the gain is set by the ratio of R2 to R1. If I’m reading and understanding it correctly, this means that the 50k/10k combination would result in a gain of 6 (1 + R2/R1), amplifying 0-100 mV to 0-600 mV. Is this correct?

I am assuming that the sensor will be DC coupled to the opamp and like wise the opamp's output will be DC coupled to the Arduinos ADC. If this is the case, then you have to take drift into consideration and I don't know if the LM358 is good enough, admittedly I have never checked as always just used it in AC coupled applications.

A quick Google for "low drift opamp" or "zero drift opamp" will turn up some results which can than be compared to the LM358.

The other thing to take into consideration, are any DC offsets on the opamps output which may be created by the gain setting resistors.

Yes, as a noninverting amplifier, the gain for that combo would be 6.

If you use 10k and 100k, a gain of 11 will take it from 100mV full scale to 1.1V full scale. With the internal reference of about 1.1V, that will get you the most resolution. My understanding of the internal reference voltage is that it is stable over time, but varies from one AVR to the next, so you may want to include a 10t pot in there to adjust the gain. Or use 10k and 91k resistors.

You will want to add a 100nF bypass capacitor on the ARef pin.

There are better Op Amps than the LM358.

Are you sure you don't require a differential input amplifier? If you just measure one side of the Wheatstone bridge I think you find the the measurement range would be 1/2 X 10vdc + or- 50mv, not a useful signal for a single opamp stage to work with. Search for classic instrumentation op-amps to see how to properly interface with a resistive bridge sensor of any type.

Yeah, I screwed up the gain calc. I meant 1K instead of 10K. since you would most likely end up with a 47K instead of a 50K, that would calc out to 48 (close enough to 50 for this app.). Since the OP is looking for a limit, not measuring steps, this should do.

Not sure where the idea of bridge in the sensor came from, but i would conceed that a differential or instrumentation amp would better serve in such case, but again, I do not think step accuracy was a criteria in the OP.

As far as drift and offset, you are correct, but we going for the quick and dirty here, not great step accurach. it will all settle out within the specified needs of the OP.

No, the 386 is NOT an ideal op-amp for this issue/application, but it will serve (as a starting point).

123Splat: Yeah, I screwed up the gain calc. I meant 1K instead of 10K. since you would most likely end up with a 47K instead of a 50K, that would calc out to 48 (close enough to 50 for this app.). Since the OP is looking for a limit, not measuring steps, this should do.

Not sure where the idea of bridge in the sensor came from, but i would conceed that a differential or instrumentation amp would better serve in such case, but again, I do not think step accuracy was a criteria in the OP.

As far as drift and offset, you are correct, but we going for the quick and dirty here, not great step accurach. it will all settle out within the specified needs of the OP.

No, the 386 is NOT an ideal op-amp for this issue/application, but it will serve (as a starting point).

It's not just about accuracy, it's about properly measuring the proper terminals of the sensors internal bridge circuitry. Almost all what you call "4 wire" respond by changing the internal resistance (be it a pressure sensor, load cell, etc) of two of the four resistance elements that make up the electrical side of the sensor. You measure the voltage across the bridge while exciting the bridge with a fixed voltage or constant current across the other two terminals. It's the difference in DC voltage between the two equivalent voltage dividers that represents the measurement value not the absolute voltage. There are sensors that have built in amps and circuitry to directly output a fixed DC voltage zero to whatever, but they cost more as they just include the instrumentation op-amp front end required to increase the voltage measurement range.

OK, so use the bridge current amplifier configuration in the Typical applications......

Sounds like you might have a 10V bridge sensor, this would mean you require an instrumentation amp (running from 10V), and a way to protect the microcontroller from over-voltage from the output of the opamp. Perhaps a INA126.

Is there a datasheet for this sensor, we should get to double check what it is actually is rather than having to guess...

Can you give us a part number for the sensor? If it is putting out 0-100mV, it has an internal differential amplifier.

I would strongly recommend -against- amplifying it to 5V. For one, the LM358 (not LM386, I suspect that was a typo) can only bring its output to Vcc-1.5V. In addition, when you use the default reference voltage, it is really using the Arduino 5V power supply. So any noise or variation will affect the readings. The internal reference voltage is much more stable. And it only requires the output of the LM358 to go up to 1.1V max.

The issues of drift and offset voltage and current remain. But with a gain of only 10, I don't know if that is an issue for you.

Oops, my bad again.. yes, typo.

I am trying to keep it simple for the OP, who said he was not experienced with op-amps. A good instrumentation amp probably be a better solution for accuracy, but I still believe he can get it functional and learn some things in the process with a 358. From his description of the issue, he really does not have to go full scale, just find his trip point. With a 5V single ended supply, the op-amp will provide any needed input protection.

Brute force may not be very elegant, but it can be used to get the job done.

Unfortunately, I do not have a data sheet for the sensor; what I know of its characteristics has been determined by trial and error. It came with an electronic module that was designed to be used with an aircraft engine instrumentation system. When I applied power to the module, it was feeding 10 volts to the "in" terminals on the sensor. Given that, I wired the "in" terminals on the sensor to a bench power supply set for 10 volts, applied air pressure in 20 psi increments, and measured the output. In doing so, I was looking for stable readings in voltage, resistance, or current; what I got was a stable and repeatable 1 mV/psi result.

My goals are to light an LED when the pressure falls below a certain level, and also output the pressure over a serial line (a fallback would be to just manage the LED, but that should be achieveable without involving a microcontroller, I'd think). I don't need lab-grade accuracy, but +/- 5% would be good. The application I'll be using it in will be powered by a 14V DC bus, which I'm planning to regulate down to 5V for the Teensy, and to 10V for the sensor, using a 7805 and 7810 respectively.

Dan,
Bear in mind that NOTHING discussed here will meet air worthiness certification ( even if assembled by an air mech).
Now given that and what I have read so far, I still feel that you can get a ‘mostly’ functional system working using just about any single supply op-amp in the non-inverting configuration. I suggest that you put it together, apply the input to a meter and see what your results are. If you, indeed, get readings between 0 and something less than 5V (repeatable), then apply the output to an analog input pin and start fiddling with some of the analog sketches (like the tutorial for pots, only replace the pot to supply with thw sensor/amp output) and see what you can do with it.

OK, it's been a while since I last posted--between getting parts and traveling, I haven't had much chance to work on this in the last month. I got a 358, an assortment of resistors and capacitors, a 7810, and a 7805, and assembled it all on a breadboard this afternoon. I used a 56K resistor rather than a 50K, but otherwise as directed here. I powered the 358 from the 7805, and the sensor from the 7810. I tied the sensor input and output grounds together.

Likely as a result of tying the input and output grounds together, I got some unexpected results. Where previously the output of the sensor was 0 V with 0 psi applied, it became 946 mV. Instead of increasing 1 mV/psi, it increased about 0.5 mV/psi.

The output of the 358 was steady at 3.57V. I suspected this was as close to Vcc as its output would go, so I tried powering it from the 7810 instead. The results from that confused me. With 0 psi and an input voltage of 946 mV, the output was 1.834V. With 20 psi and an input voltage of 959 mV, the output was 1.826V. At that point I stopped the test.

I understand that this wouldn't meet any kind of certification--this is for an experimental application, so that isn't a problem.

Schematic?

the LM358 is wired per 123Splat's reply #3 on the first page--I'll see if I can draw it up tomorrow.

I'm not going to try and parse all that; besides, what we need to know is how -you- parsed what he said.