Where are Vout+ and Vout- of the analog pressure sensor attached on Arduino?

Hey,
I am working on a project involves an analog pressure sensor connected to an Arduino through Breadboard. There is a LCD connected with the Breadboard and Arduino as well. The pressure sensor takes the pressure from the surroundings and the results are displayed on the screen.

These are the details of the pressure sensor:
Company Name: Mouser Electronics
Mouser P/N: 785-NSCDRRN005PDUNV
Description: DIP, Dual Rad Barbed Honeywell Board Mount Pressure Sensor

The Arduino Board I am using is Arduino UNO R3 Compatible Atmega328P Board.

The LCD model is 1602 16x2 Character LCD Display Module HD44780 Controller Blue/Green screen blacklight LCD1602 LCD monitor 1602 5V.

Which pins on the Arduino Board are the Vout+ and Vout- ports of the pressure sensor attached to?

U'll need an opamp (differential amplifier / instrument amplifier / or even av HX711) to connect to.

Both Vo+ and and Vo- will be close to 2.5V when no pressure difference.
Try connecting outputs to analog inputs.. read inputs and verify that they practically reads the same value..
It will change (a tiny bit) if you apply pressure/suction to one of the inputs


If it is your local airpressure u want to read ? The best solution is a chip like the BMP085(180/280av similar)
search ebay for GY68

Hey,
Thank you for your prompt response. There is going to be a pressure pump connected with the sensor that is going to be applying the pressure. This electronic sub-system is going to be a part of a larger system.

Where should I attach my Vo+ and Vo-? Should I attach both of them to the analog inputs A0 and A1 on the Arduino Board or should I attach them somewhere else?

Otherwise, the pressure is going to be applied by a pressure pump while the pressure sensor is going to give the readings.

P.S. I was thinking about attaching Vo+ to A0 and Vo- to ground but not sure about the right way to do the electrical connections. I searched it up online as well but no resources available on this topic.

Thank you!

Two outputs => Two analog inputs. (eg A0,A1)

with NO pressure differance, A0 and A1 will both read 511 (more or less)

As you apply pressure, one voltage will rise.. the other drop.
Use the difference as your reading. Calibrate.

..
I still believe you need an amplifier

this is a wheatstone bridge, its output requires a differential amplifier

Basically you have a silicon strain-gauge as part of a pressure transducer.

Strain guages always need a good instrumentation amp circuit to be usable as the output signal
is measured in millivolts or microvolts. The HX711 is popular strain-gauge / instrumentation amp typically
used for load cell strain gauges, but a strain-gauge is a strain gauge whatever sensor is mounted
in.

Here's the datasheet (please post links to datasheets it at all possible). https://www.mouser.co.uk/datasheet/2/187/honeywell-sensing-trustability-board-mount-pressur-1228675.pdf

Seems to be lacking the data for that specific model alas, although it is mentioned in the guide to
part numbering... So its not clear how much gain is needed. Somewhere from 50 to 100 perhaps given
the full scale specs for many of the variants.

I thought it will be beneficial to post an answer to this as there was no solution and this post gets quite few hits when searching for an issue:

So I was using exactly the same sensor and was struggling to get the reading correct, so after a lot of research I have came with a combination of all findings and got almost what i need:

If you don't want to use differential amplifier such as LM358 you can use Arduino Mega!

Connect PIN A0 to the Vout- and A1 to Vout+

and use the following code to make the reads:

//Variables to change
float inputVolt = 0; // Voltage read from pressure sensor (in bits, 0 to 1023)
float volt = 0; // Voltage (converted from 0-255 to 0-5)
float pressure_psi = 0; // Pressure value calculated from voltage, in psi
float pressure_pa = 0; // Pressure converted to Pa
float massFlow = 0; // Mass flow rate calculated from pressure
float volFlow = 0; // Calculated from mass flow rate
float volume = 0; // Integral of flow rate over time 

//Constants
float vs = 5.0; // Voltage powering pressure sensor
float rho = 1.225; // Density of air in kg/m3
float area_1 = 0.000415; // Surface area in m2
float area_2 = 0.0000283; // Surface area in m2
float dt = 0;

int ledPin = LED_BUILTIN; // choose the pin for the LED
int inPin = 7;   // choose the input pin (for a pushbutton)
int val = 0;     // variable for reading the pin status

unsigned long startTime;
unsigned long endTime;
unsigned long duration;

uint8_t low, high;

enum E_STATE
{
 TESTING,
 READY,
 RESULT
};

E_STATE stan;

void setup()
{
 Serial.begin(115200);

 int ledPin = 13; // choose the pin for the LED
 pinMode(ledPin, OUTPUT);  // declare LED as output

 digitalWrite(ledPin, LOW);  // turn LED ON}

 pinMode(inPin, INPUT);    // declare pushbutton as input
 Serial.println("Ready to test... Set D7 HIGH");
 ADMUX = 1 << REFS0;                //choose AVCC for reference ADC voltage
 ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);    //enable ADC, ADC frequency=16MB/128=125kHz (set of prescaler)
 ADCSRB = 0x00;

 stan = READY;
}


void loop() {// put your main code here, to run repeatedly:
// Check if button is pressed, if so enter program condition

 val = digitalRead(inPin);

 switch (stan)
 {
 case READY: {
 if (val == HIGH) {
 startTime = millis();

 stan = TESTING;
 Serial.println("Test In progress.");
 digitalWrite(ledPin, HIGH);  // turn LED OFF

 }
 }break;
 case TESTING: {

 //inputVolt =   analogRead(analogInPin); // Voltage read in (0 to 1023) 
 inputVolt = read_differential() ;
 Serial.println(inputVolt);

 volt = inputVolt * (vs / 1023.0);
 pressure_psi = (15 / 2) * (volt - 2.5); // Pressure in psi 
 pressure_pa = pressure_psi * 6894.75729; // Pressure in Pa
 //Serial.println(pressure_pa, 5);
 massFlow = 1000 * sqrt((abs(pressure_pa) * 2 * rho) / ((1 / (pow(area_2, 2))) - (1 / (pow(area_1, 2))))); // Mass flow of air
 volFlow = massFlow / rho; // Volumetric flow of air
 //Serial.println(volFlow);
 volume = volFlow * dt + volume; // Total volume (essentially integrated over time)
 // Serial.println(volume);
 dt = 0.001;
 delay(1);

 if (val == LOW) stan = RESULT;

 }break;
 case RESULT: {
 endTime = millis();

 duration = endTime - startTime;

 Serial.print("Measurment ");
 Serial.print(duration / 1000);
 Serial.print("s result: ");
 Serial.println(volume);
 digitalWrite(ledPin, LOW);  // turn LED ON}
 duration = 0;
 volume = 0;

 stan = READY;
 }break;
 }
}

int read_differential() {
 ADMUX |= (1 << MUX4);             //set MUX5:0 to 010000. Positive Differential Input => ADC0 and Negative Differential Input => ADC1 with Gain 1x.

 ADCSRA |= (1 << ADSC);            //start conversion
 while (ADCSRA & (1 << ADSC));     //wait untill coversion be completed(ADSC=0);

 low = ADCL;
 high = ADCH;
 if (high & (1 << 1)) {              //in differential mode our value is between -512 to 511 (not 0 to 1023). it means we have 9 bits and 10th bit is the sign bit. but because
 high |= 0b11111110;           //the number of ADCH and ADCL bits are 10, for signed number we dont have repeatition of 1 in "ADCH" byte.
 }                               //so we repeat 1 Ourselves.:)
 return (high << 8) | low;       //arrange (ADCH ADCL) to a 16 bit and return it's value.
}

the pressure calculation is something that needs to be adjusted as the value of reading is not correctly tranformed, but overall readings looks ok as in the attachment