Forum Navigation
You need to log in to create posts and topics.

Sistema para fuga de agua

Hola a todos.

Os paso por si ha alguien le interesa. no he sabido asociarlo a excontrol, pero funciona bien.

Lleva montado casi un año y funciona bien.

En la foto hay dos Nanos( Tengo dos tomas de agua, una para la casa y otra para el riego)

Saludos a todas y enhorabuena por el gran proyecto que estáis haciendo

// arduino Nano

float volumenMaximo            =500; //caudal maximo 500 litros

unsigned long start            = 0;//Variable para el tiempo del rele

int rele1                      =5;// Asignamos el pin digital al rele 1  para la válvula

const int sensorPin            = 2;    // Pin digital para el sensor de flujo

const int medirIntervalos      = 500; // Tiempo entre muestreo

volatile int contadorPulsos;

 

// YF-S201

const float factorK = 5.5;

float volumen = 0.0;

unsigned long t0 = 0;

byte estado = 0;

 

void ISRcontadorPulsos() {

contadorPulsos++;

}

float obtenerFrecuencia() {

contadorPulsos = 0;// Ponemos el contador de pulsos a cero

interrupts(); // Habilitamos las interupciones

delay(medirIntervalos);//tiempo entre muestreos

noInterrupts();// Deshabilitamos las interupciones

return (float)contadorPulsos * 1000 / medirIntervalos;

}

void SumaVolumen(float dV)

{

volumen += dV / 60 * (millis() - t0) / 1000.0;

t0 = millis();

}

void setup() {

Serial.begin(9600);

pinMode(sensorPin,INPUT);//Asignamos al pin que es entrada

pinMode(rele1,OUTPUT);// Asignamos al pin que es salida para la valvula

digitalWrite(rele1, HIGH);  //Desactivamos la bobina del relé 1

attachInterrupt(digitalPinToInterrupt(sensorPin), ISRcontadorPulsos, RISING);

t0 = millis();

}

void loop()

{

// obtener frecuencia en Hz

float Frecuencia = obtenerFrecuencia();

 

// calcular caudal L/min

float caudal_Lmin = Frecuencia / factorK;

SumaVolumen(caudal_Lmin);

Serial.print(" Caudal: ");

Serial.print(caudal_Lmin, 3);

Serial.print(" (L/min)\tConsumo:");

Serial.print(volumen, 1);

Serial.println(" (L)");

 

if (volumen >volumenMaximo){

digitalWrite(rele1,LOW);  //Activamos la bobina del relé

Serial.println("Cerrar valvula.");

Serial.print("Se ha alcanzado el caudal maximo: ");

volumen = 0.0; // Se resetea el volumen

}

if (caudal_Lmin == 0.0){

volumen = 0.0;// Se resetea el volumen

}

}

 

 

Uploaded files:
  • Sistema-de-fuga.jpg

Hola Chorro, bienvenido y gracias por la aportación.