4 Wire Pressure Transducer with max output voltage 45mV

Hello, I am trying to interface a pressure transducer with 4 wires. two inputs (10V DC) and two outputs (45mV max). I connected -ve output to ground of arduino and +ve output to A0 (analog pin). When I am trying to read the analog input directly, it shows 1023 all the time. I am not using external referencing, so I assume 5V internal referencing, so I expecting to read maximum of 0.045/5 x 1024 = 9 or 10, but why is it giving me 1023 all the time?

I measured the outputs using multimeter, it does give the correct voltage DC output, from 0 to 0.045V. What is wrong?

Appreciate if you could point out what is wrong. Or should I use a Op-amp?

TIA!

Post a link to the data sheet for the transducer, a schematic showing how you have connected everything, and your test code. It should be obvious to you that you need to post these things. Without them, how can anyone help you?

My apologies, data sheet of the pressure transducer and connection schematic as below:

MPM280 Datasheet.pdf (1.0 MB)

Test code as below:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // ARDUINO UNO

int anal0;

void setup() {

  lcd.begin(16,2); 
  lcd.clear();

  lcd.setCursor(0,0); lcd.print("Test");
  lcd.setCursor(0,1); lcd.print("Digital Pressure Gauge");
  delay(3000);      

}

void loop() {

   lcd.clear();

  anal0 = analogRead(0) * 3.30 / 1024;     //Sensor output voltage

  lcd.setCursor(0,0); lcd.print(anal0);
  
  delay(3000);

}
``````````````````````````````````````````````````````````````````````````````````````````````````````````

change: anal0 = analogRead(0) * 3.30 / 1024;

to: anal0 = analogRead(A0);

hello I made a circuit similar to this that tries to read mv. it works perfectly.
You can use the pot for feedback. Even lm741c has been upgraded, you can try it on lm358.
AD820 rail-to-rail difference from input to output.
i will do it with encoder
Definitely use ads1115, I've seen the difference. I am trying to prepare a project.
I'm good at electronics.
I'm late to the software, but I need to move on.
When I learn how to use my wings as a rookie, I can fly forever.
I need a lot of help with software, I'm new, we're trying to do something. We understand the plight of those in distress.
I wanted to make a contribution. my project link can be your contribution

20230226_161250

Impossible, your wiring is defective.

I cannot find any details about the power supply voltage in that document, or any description of the output voltage.

3 different pinout descriptions are shown in the datasheet, with no description of which one to use.

I cannot understand how this formula can give a result of 1023.

The pressure sensor is a Wheatstone bridge type, and is intended to be used with an instrumentation amplifier, like the INA121, not with a single ended ADC like on the Arduino.

1 Like

The MPM280 is a piezo-resistive sensor, which is far more similar to a strain gauge than anything else. The "input" voltage is not critical, hence not specified, as the sensor itself is four resistors in a bridge configuration. You CANNOT read this sensor with a single-ended A/D like that in an Arduino. It can only be read using an A/D with a differential input, just like a strain gauge. And, to get decent resolution, it will need a high-gain, low-noise aimplifier stage to increase the signal level, followed by a highly linear, high-resolution A/D converter. It likely would work with a strain gauge amplifier like the HX711, though that might not provide an optimal result. Once the amplifier and A/D are connected and working, it will require calibration to determine the correct scaling of the output data, as the output range and resolution will depend almost entirely on the characteristics of the amplifier and A/D.

In short, the current approach WILL NOT WORK, and a complete re-think of the approach is in order. I don't know what the final application is here, but I suspect this is a rather poor choice of sensor. For most applications, there are much simpler sensors available that provide precisely calibrated direct voltage output that CAN be directly read by a simple single-ended A/D, or even a single digital signal using a One-Wire interface.

Do you read post #4

The two calls to analogRead() are equivalent. "0" and "A0" are both acceptable pin designations.

Sure but 3.30/1024 isn't equal to 1

I would not have suspected that 3.30/1024 is equal to 1, but thanks for that information!

I bet the OP has had multiple test codes, and the 1023 was from one that used just analogRead.

That is the expected result, since with 10v excite, the common mode voltage is 5v.

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