void setup() {
//Inicializamos la comunicación serial
Serial.begin(9600);
}
void loop() {
int valor;
float evalor;
float fvalor;
int psi;
float bar;
valor = analogRead(A0);
evalor = map(valor, 0, 1023, 0, 50); //mapeamos a voltios *10 para mayor resolucion
fvalor = constrain (evalor, 5, 45); //acotamos las medidas a 0,5 7 4,5 voltios del transductor
psi = map (fvalor, 5, 45, 0, 150); //mapeamos el voltaje a psi
bar = (psi/14.504); //convertimos los psi en bares
//Imprimimos por el monitor serie
Serial.print("bares = ");
Serial.println(bar, 1);
delay(1000);
}
COMO PODRIA LEER ME ESTE CODIGO BIEN, Y COMO SERIA SI COLOCO EL TRANSDUCER DE 0-24 VOLTIOS DC
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>
También edita el título.
Cosas como "Ayuda en programación...· son títulos no permitidos asi que debes editarlo y dejar algo como "Programación Traducer de 0-150 psi"
Y como no hay dos sin tres, no se permite que se escriba en mayúsculas. Seguramente no te has dado cuenta pero edita y usa minúsculas.
Gracias.
A veces cuando leo esto me pregunto que ha pasado con la matemática?
Ecuación de la recta. Es algo que todos hemos visto en la secundaria.
Algo importante, map funciona con enteros asi que OJO!!.
Por lo visto constrain tmb. No tiene sentido usar funciones enteras cuando lees un sensor de presión.
Tienes un sensor que entrega 0 PSI a 0.5V y 150 PSI a 4.5V
La ecuación de la recta es y = m * x + b
Donde m es la pendiente = (y2 - y1)/ (x2-x1)
Tomemos y2 = 150 psi y1 = 0 PSI x2 = 4.5V x1 = 0.5V
m = (150 - 0) psi / (4.5 - 0.5)V = 150 PSI / 4 V
b es ordenada al origen y como para x = 0.5V tenemos y = 0 PSI entonces vale 0
y = 150.0 / 4.0 * (x -0.5) con lo cual salvamos el desplazamiento de x
cuando x = 0.5V tenemos 0 PIS
cuando x = 4.5V tenemos 150 PSI
traduzco en código sin map ni constrain que ademas no sirven para floats.
float valor = analogRead(A0)*5.0/1023.0; // lo único que sirve
float psi = 150.0/4.0*(valor - 0.5);
Listo.
Ahora cuando pongas el divisor de tensión no tendras 5V asi que debes corregir valor
En lo personal me gusta poner un preset de 5 o 10k y ajustar de modo que cuando tenga 24V reciba 5V exactos y no 4.9 que esta perfecto con valores de R fijas. Son opciones que cada uno puede o no optar por usar.
NECESITO SIMULAR ESTE CODIGO YA QUE EN MI PC NO FUNCIONA PARA MI SON MIS DRAIVER O VERIFICAR ESTE CODIGO YA QUE USTED TEIENE MAS EXPERIENCIA AVER SI ESTA MALO O TIEN ERROES GRACIAS AIGO.
¿Y vos podés hacer lo que te pidió el moderador?
El título sigue sin editar, tus códigos siguen mal presentados y has vuelto a escribir en mayúsculas luego que se te aclaró que no está permitido.
Edita todo lo que has hecho mal y luego seguimos.
Espero que estén bien soy un nuevo en programación.
Esplico : tengo un transmisor de presión estática marca rosemunt modelo 3051 la cual tiene un rando de 0-500psi y quiero conectarlos en el pin análogo que sea.
considerando que el Rosemount entrega salida 4-20mA y para ello requieres un resistor de 250 ohms para cerrar el circuito y medir entre GND y el otro extremo de la R de 250 ohms.
Debe ser una R al 1% preferentemente.
En tu caso, con 4mA entrega 1V y con 20mA entrega los 5V de modo que debes hacer una recta diferente al caso que te he indicado.