Ajuste de un sensor de presion

Hola, me gustaría pedir su ayuda ya que llevo varios días atorado en el mismo problema, estoy realizando un proyecto el cual costa de un sensor de presión que mide de 0 - 174 psi, el error esta en que al ajustarlo en algún punto (por decir un ejemplo, 50 psi) se desajusta en otros (por mencionar algunos serian, 20 o 100 psi)

les muestro mi código para ver si encuentran el error.

float adc;
float voltaje;
float presion;
float mpa;
int pinentrada = 0;

void setup()
{
Serial.begin(9600);
}
void loop()
{
adc = analogRead(pinentrada);
volateje = adc * 5 / 1023;
mpa = ((voltaje/3.75)-0.1);    // esta es la formula empleada.
presion = (mpa * 145.0377);

Serial.print(presion);
Serial.println(" PSI ");
Serial.print(volaje);
Serial.println(" Vcd ");
delay(1000);
}

de antemano gracias (por cierto soy algo nuevo en esto)

Hola Jokii, bienvenido al foro Arduino.
Te agradezco que hayas leido las normas y postearas correctamente.

Por otro lado sería bueno que pongas información del sensor que usas porque no queda claro que pretendes hacer.
Los sensores son lineales de modo qué cómo es posible que se desajuste la lectura del sensor?

Si no es por inestabilidad en el voltaje que alimenta al Arduino, entonces ha de ser algo en ese sensor que desconozco...

El sensor lo pueden encontrar como "sensor de presión DN15" es de 1.2MPa

Lo que pretendo hacer es medir la presión, pero en PSI, al mismo tiempo tomar las lecturas del voltaje que por cierto esas ya las pude conseguir exactas, al tener las dos lecturas que se muestren en la pantalla de mi pc para poder observarlas a cada segundo para después poder capturarlas.

El problema está (creo yo) que en la formula ya que solo me da unos puntos exactos en cuanto a la medida de presión, ya que en su punto mínimo o máximo se sale del rango permitido.

Tu error es este o tal vez lo copiaste mal pq deberia darte error de lo contrario

 float voltaje;

 volateje = adc * 5.0 / 1023.0;

defines foltaje y usas volateje

De todos modos para mi haces mucho cálculo que no tiene sentido.

float voltaje;
float presion;
float mpa;
int pinentrada = 0;

void setup() {
   Serial.begin(9600);
}

void loop() {
   
    voltaje = analogRead(pinentrada) * 0.0048875855;
    mpa = (analogRead(pinentrada)*0.0013)-0.1;    // esta es la formula empleada.
    presion = mpa * 145.0377;

    Serial.print(presion);
    Serial.println(" PSI ");
    Serial.print(volaje);
    Serial.println(" Vcd ");
    delay(1000);
}

Hice algunas simplificaciones, a ver como funciona?

Pregunta: Porque no multiplicas mpa x 174 que es el valor de PSI máximo?

A una disculpa, lo transcribí mal...

y bueno lo tenia así para poder ver paso por paso de donde tomaba cada valor (aun no estoy muy familiarizado con todo lo que se puede hacer), y utilice el código que me escribiste y hace lo mismo que el mío, cuando tengo 0 PSI, en el programa me da que tengo 3.22 PSI y en voltaje 0.46 (que bueno el voltaje si esta mas o menos correcto, por ese no hay problema).

Es que yo corregi lo de las variables o no leiste mi comentario?