volatile int pulsos; // Cantidad de pulsos del sensor. Como se usa dentro de una interrupcion debe ser volatile
unsigned int litrosPorHora; // Calculated litres/hour
unsigned char sensorDeFlujo = 2; // Pin al que esta conectado el sensor
unsigned long tiempoAnterior; // Para calcular el tiempo
unsigned long pulsosAcumulados; // Pulsos acumulados
float litros; // Litros acumulados
void flujo () // Funcion de interrupcion
{
pulsos++; // Simplemente sumar el numero de pulsos
}
void setup()
{
pinMode(sensorDeFlujo, INPUT);
Serial.begin(9600);
attachInterrupt(0, flujo, RISING); // Setup Interrupt
interrupts(); // Habilitar interrupciones
tiempoAnterior = millis();
}
void loop ()
{
// Cada segundo calcular e imprimir Litros/seg
if( millis() - tiempoAnterior > 1000)
{
tiempoAnterior = millis(); // Updates cloopTime
pulsosAcumulados += pulsos;
litrosPorHora = (pulsos * 60 / 6.925); // (Pulse frequency x 60 min) / 7.5Q = flow rate in L/hour
pulsos = 0; // Reset Counter
Serial.print(litrosPorHora); // Print litres/hour
Serial.print(" L/hour");
Serial.print(" Pulsos totales: ");
Serial.print(pulsosAcumulados);
litros = pulsosAcumulados*1.0/386; //Cada 400 pulsos = 1 litro
Serial.print(" Litros: ");
Serial.println(litros);
}
}pero cómo sería para hacer la relación pulsos vs. PWM?
map() entre valores 0 a 255 del PWM del arduino y con un caudal de 0 l/h a 450 l/h para que así me arroje esa señal analógica proporcional, ¿estaré equivocado?. Una vez comprobado lo anterior, necesito amplificarla porque esa señal analógica irá a un DAQ de adquisición de señales.