Hola gente de Arduino. Ando con una pequeña duda, todos los códigos que veo para caudalimetros te indican los litros por hora y los litros que han pasado, yo queria saber si alguien me podria decir como hacer para saber los mililitros, porque no entiendo la operación que se realiza. no sabría porque se multiplica o divide... No me interesan los litros por hora, solo necesito saber la cantidad en ML. Tengo este codigo.
#include <Wire.h> // Librería comunicación I2C
#include <LiquidCrystal_I2C.h> // Librería LCD I2C
// Declaración del objeto para el LCD
// Poner la dirección del LCD a 0x20 para display 20x4 (A0=0, A1=0, A2=0)
// Terminales de conexión del LCD
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int sensor = 2; // Pin digital para el sensor de flujo YF-S201
int litros_Hora; // Variable que almacena el caudal (L/hora)
volatile int pulsos = 0; // Variable que almacena el número de pulsos
unsigned long tiempoAnterior = 0; // Variable para calcular el tiempo transcurrido
unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados
float litros; // // Variable que almacena el número de litros acumulados
// Rutina de servicio de la interrupción (ISR)
void flujo()
{
pulsos++; // Incrementa en una unidad el número de pulsos
}
void setup()
{
pinMode(sensor, INPUT_PULLUP); // Pin digital como entrada con conexión PULL-UP interna
lcd.begin(20,4); // Inicializo el LCD 2004
interrupts(); // Habilito las interrupciones
// Interrupción INT0, llama a la ISR llamada "flujo" en cada flanco de subida en el pin digital 2
attachInterrupt(digitalPinToInterrupt(sensor), flujo, RISING);
tiempoAnterior = millis(); // Guardo el tiempo que tarda el ejecutarse el setup
}
void loop ()
{
// Cada segundo calculamos e imprimimos el caudal y el número de litros consumidos
if(millis() - tiempoAnterior > 1000)
{
// Realizo los cálculos
tiempoAnterior = millis(); // Actualizo el nuevo tiempo
pulsos_Acumulados += pulsos; // Número de pulsos acumulados
litros_Hora = (pulsos * 60 / 7.5); // Q = frecuencia * 60/ 7.5 (L/Hora)
litros = pulsos_Acumulados*1.0/450; // Cada 450 pulsos son un litro
pulsos = 0; // Pongo nuevamente el número de pulsos a cero
// Llamada a la función que muestra los resultados en el LCD 2004
LCD_2004();
}
}
// Función que muestra los resultados en el LCD 2004
void LCD_2004()
{
// Imprimo la cabecera del sistema
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">CAUDALIMETRO YF-S201");
lcd.setCursor(0,1);
lcd.print("********************");
// Presento los valores a través del LCD 2004
lcd.setCursor(0,2);
// Imprimo el caudal en L/hora
lcd.print("-> ");
lcd.print(litros_Hora, DEC);
lcd.print(" L/Hora");
lcd.setCursor(0,3);
// Imprimo el número de litros acumulados
lcd.print("-> ");
lcd.print(litros);
lcd.print(" Litros");
}