ICM 380 Pressure transducer connected to Arduino Uno

Hello all, I was needing some help with interfacing ICM 380 pressure transducer with my arduino Uno. I am trying to get temperature and pressure values from a certain pipe. I have the temperature part figured out. I am unable to get this transducer to display output values. I checked it with my multimeter and I am receieving 0.408 V when I measured without applying any pressure to it. It did go up slightly when I tried pressurizing it with my mouth. Any suggestioins? Thanks in advance!

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

// Data wire is plugged into digital pin 4 on the Arduino
#define ONE_WIRE_BUS 4

// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);  

// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);

const int pressureInput = A0; //select the analog input pin for the pressure transducer
const int pressureZero = 102.4; //analog reading of pressure transducer at 0psi
const int pressureMax = 921.6; //analog reading of pressure transducer at 500psi
const int pressuretransducermaxPSI = 100; //psi value of transducer being used

float temperature;
float pressureValue = 0; //variable to store the value coming from the pressure transducer

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
  lcd.init();
  lcd.begin(16,2);
  lcd.backlight();
}

void loop(void)
{ 
  // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
  sensors.requestTemperatures(); 
  temperature = sensors.getTempFByIndex(0); 
  // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire 
  Serial.print(" - F temp: ");
  Serial.println(sensors.getTempFByIndex(0));
  
  pressureValue = analogRead(pressureInput); //reads value from input pin and assigns to variable
  pressureValue = ((pressureValue-pressureZero)*pressuretransducermaxPSI)/(pressureMax-pressureZero); //conversion equation to convert analog reading to psi
  Serial.print(pressureValue, 1); //prints value from previous line to serial
  Serial.println("psi"); //prints label to serial
  delay(500);
  
  sensors.requestTemperatures(); 
  lcd.setCursor(0,1);
  lcd.print("H2O Temp: ");
  lcd.print(sensors.getTempFByIndex(0));
  lcd.print((char)223);
  lcd.print("F");
  
  lcd.setCursor(0,2);
  lcd.print("Pressure: ");
  lcd.print(pressureValue, 1); //prints pressure value to lcd screen, 1 digit on float
  lcd.print("psi");
  delay(500);

}

Please post a link to the sensor data sheet or product page, and a wiring diagram (hand drawn is preferred).

I checked it with my multimeter and I am receieving 0.408 V

That is typical of analog pressure sensors when the input pressure is zero, so it is probably working.

https://www.supplyhouse.com/ICM-Controls-ICM380-ICM380-Pressure-Transducer

image

This is how I did it when I removed everything from the circuit and tried to read just the output of the pressure transducer, tried with a resistor in series with the data line as well. I am getting random values as output from 0, 62, 57, 100 psi, etc.

From the diagram, it looks like you forgot to connect the Arduino ground and the power supply ground, which explains the random readings.

It is safe to use the Uno 5V output to power that sensor, so you don't need a separate power supply.

Oh! That's probably it, thanks for pointing that out!