Maker Pro
Maker Pro

"Ratiometric analog output" interface with Arduino

I'm trying to interface a pressure sensor (specifically, a Honeywell NSCSANN015PAUNV piezoresistive pressure sensor) with an Arduino Uno analog input, but I'm not having much luck. The output from the pressure sensor is a "ratiometric analog output" with a pin corresponding to V+out and a pin for V-out. My problem is that I haven't found an effective way of rectifying the output signal for interfacing with an Arduino input pin.

I have created a standard curve for the pressures of this sensor and have found that the voltage across the pins at atmospheric pressure and 5V input is approximately 75mV. This makes sense, as according to the datasheet (http://sensing.honeywell.com/index.php?ci_id=142173) the nominal mV/V/Full Scale Span = 15 for a supply voltage of 5V. Anyways, this standard curve is approximately linear, with 15mV intervals.

In order to integrate the sensor with the Arduino, my first thought was that I could use a simple, zero-gain differential amplifier circuit (with an LM741 Op Amp and 10kOhm resistors). Unfortunately, the output from this circuit is only 65mV at 5V, which contradicts what I found when testing the pressure sensor on its own. I don't know how to get an accurate reading of the output from this sensor with my Arduino, and I've tried several LM741 arrangements to no avail. I would appreciate any advice on this matter, and whether or not I'm going about this measurement all wrong. I'm still a bit fuzzy about what "ratiometric analog output" means in this context... :confused:

Thanks for any help or advice
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
The 741's output won't swing from rail to rail (and the inputs don't like it either).

Choose a device with rail-to-rail specs for both input and output (or use a wider supply voltage for the 741 (say +/- 9V)
 
That's my problem; I don't entirely understand what the output voltages are. When I read that it was a 'ratiometric analog output' I thought that meant that one voltage was negative. Yet if I was able to use a differential amplifier to get a value for the difference between the two pins, shouldn't that mean they are both positive? I further tried to do a summing amp with neither output pin inverted and the sum was not near 0 (although that may have been a mistake on my part). If they are both positive, I could probably plug them into two pins on the Arduino and do the subtraction there, limited only by the resolution. But I don't want to risk damaging my Arduino if there's a chance the negative output can/will go negative...

From my understanding, the pressure sensor is essentially a wheatstone bridge circuit, with the output voltages coming from the nodes on either side of the bridge. If this is the case, there's no way that the voltage could go negative, right? I just get nervous when things are analog and I'm not certain of their current characteristics. Anyways, if this is the case, it still doesn't explain why my LM741 couldn't handle the voltage subtraction without significant error. Any thoughts besides rapid rail switching (since I'm now thinking it might be two positive voltages)?
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
OK, the output is differential, so whilst both will be positive (probably around Vcc/2) you can't say that one will always be higher than the other.

You need a differential amplifier with an appropriate gain. you should use a split power supply so that the output ranges from -??V to +??V. then you need to (maybe) shift the voltage so that the range you want lies within 0 to 5V for the arduino.

See the bottom of page 6 of this which will allow you to do both in one stage.

With a 5V single ended power supply, the 741 is unlikely to b a suitable candidate.
 
I didn't understand what you meant by your last post. If the voltages are guaranteed to be positive, could I possibly plug both voltages into two analog inputs of the Arduino and then add some simple code saying:

If (analogRead(0)>analogRead(1))
{int PValue = analogRead(0) - analogRead(1)
}

else
int PValue = analogRead(1) - analogRead(0)

Or is there some problem with that measurement method?
 
Top