Lectura de sensor de presión

Buenas a todos!!

Qué tal?

Estoy intentando realizar un estudio de caudal a través del caudalímetro SD5100 (Caudalímetro para Gases) pero realmente en esto ando un poco pez y no se si se puede adaptar algún tipo de programación echa para caudalímetros básicos como el YF-S401 o alguno parecido y si no puede ser, cómo podría hacerlo?
La idea es leer los datos durante 10 minutos en intervalos de 5 segundos y volcarlos en la SD.

Espero sus ayudas!

Normalmente una busqueda en google como: "arduino YF-S401" da muchos resultados como este

What!!!!

Un caudalímetro de gases con un sketch de un caudalimetro optico, ni por asomo se comparan!!!

Del manual del Caudalímetro de gases dice

Salida analógica de corriente [mA] 4...20; (escalable)

O sea.. resistencia de 250 ohms a GND y mides con A0...A5 usando analogRead(A0) por ejemplo y luego la conversión de unidades que corresponda.

En este caso 1Volt sera => 0,08 m3/h para Ar, 0,04 para CO2, etc
Y los 5V serán => 14,36 m3/h para Ar, 17,24 m3/h para CO2, etc

Tambien tiene una salida de pulsos pero mejor ve por este lado.

Gracias!!!

pero el cuerpo del programa cómo sería? por eso pido saber si hay algún ejemplo tipo para este tipo ya que necesito apoyarme en un ejemplo para poder realizar algo...

saludos.!

El cuerpo del programa es la simple lectura del AD en el canal A0. Luego lo escalas como ya te indiqué.

El IDE tiene un ejemplo y ahi tienes como se hace y si no te alcanza con eso, busca en Google : Arduino ADC

Te recomiendo que leas las normas del foro porque esto que te indico esta explicado ahi.

Vale!!
entonces lo trato como si fuera un sensor analógico común (con sus diferencias y conversiones propias).

El tema es que este sensor de caudal tiene 4 hilos. 2 de ellos van a 24V y a 0V respectivamente y luego me quedan otros dos que realmente no se donde tengo que conectarlos para que me den datos en arduino... porque me has hablado de colocar 250ohms pero no se en cuál de los dos..

Gracias nuevamente!

Os cuento por dónde voy...

El código con el que trabajo es este:

int AnalogPin = 0;  
int ResRead; 

void setup(){
Serial.begin(9600); 
}
void loop(){
ResRead = analogRead(AnalogPin);
Serial.print("Presión = ");
Serial.println(ResRead);

delay(5000); //5s
}

Pero el sensor tiene un display que marca 0.00 y si no se le inyecta aire se mantiene en 0.00 pero en Arduino veo como ese valor no para de cambiar. Entonces pienso que no puede ser por tema de conversión (por eso aún no lo he incorporado) porque el valor fuera el que fuera debería de ser constante si no hay flujo de aire al igual que aparece en el propio sensor no???

He colocado una resistencia de 220ohm entre A0 y GND pero siempre está a 0V, inyecte aire para ver si varía o no inyecte aire...

Alguna ayuda..??

Si lo escalo para realizar la conversión quedaría así:

#define pin_sensor A0
float adc; 
float voltaje; 
float variable; 
float rel_voltaje_variable = 0.04;
 
void setup(){
  Serial.begin(9600);
}
 
void loop(){
  adc = analogRead(pin_sensor);
  voltaje = adc * 5 / 1023;
  variable = voltaje * rel_voltaje_variable;
  Serial.println(variable);
  delay(1000);
}

Si lees las normas del foro y editas tus ultimos dos códigos como piden las normas te responderé

He mirado las normas y lo único que he visto que puedo haberme equivocado es la manera con la que mostrar el código. ¿Es así?

Saludos.

1 Like

Normas: Respecto a los códigos ahora si estan correctamente posteados.

Respecto de tu código y la resistencia usada, 220 no es 250 ohms.

4x220 ohms = 0.88V asi que ese será tu 0.
20 x 220 = 4.4V asi que ese será tu fondo de escala.

Esta bien ese valor, si claro. son números y funciona lo mismo con 220 que con 250 ohms.

Ahora veamos lo que dices como

Pero el sensor tiene un display que marca 0.00 y si no se le inyecta aire se mantiene en 0.00 pero en Arduino veo como ese valor no para de cambiar

Si las lecturas fluctuan debes buscar formas de promediar las señal, la forma mas simple es tomar muchas muestras durante esos 5 segundos y presentar el promedio en ese tiempo
Pero si usas delay no podrás hacerlo asi que usa millis(). Toma muestras o sea valores a intervalos regulares, los promedias y tendras valores mas estables.

Te aconsejo usar la librería de Luis Llamas para el promedio móvil. El promedio móvil sigue la variación que tenga tu presión, y continúas recibiendo valores promediados.

Busca eso en Google: Arduino Luis Llamas promedio movil

Hola!

El problema es que me fluctúa recorriendo desde 0 hasta 5V pasando por todos los valores entonces la media que me va a solucionar mucho porque si cuando está a 0,00 el display los valores que me aparecen son 0V hasta 5V...

Este sensor según indica el datasheet tiene una salida para medir los pulsos y otra para señal analógica, cable negro y cable blanco respectivamente. En el momento en el que conecto el sensor a 24Vdc en su propio display aparece el valor 0,00 constante (siempre y cuando no pase nada por la entrada de aire). Si a la vez conecto la salida analógica que aporta a A0 (conectando de A0 a GND la resistencia) yo creo que el valor que me debe de mostrar arduino es también constante no? Aunque no sea 0,00 porque no está escalado pero el valor sería constante. Y si le introduzco aire al sensor, en su display se ve como varía pero en arduino no hace nada distinto...

2Estoy viendo por internet que hay esquemas realizados y no coincide con el mio. Quízas puede ser por eso por lo que no me funciona?

Adjunto una imagen en la que el circuito "1" es el que he visto en internet y el circuito "2" es el que tengo yo montado.

Vale, ya creo que lo tengo.

Me fallaba la referencia de la señal..