Herramientas de usuario

Herramientas del sitio


starter_para_grupo_de_presion

Starter para grupo de presión

Objetivo

Montar un dispositivo capaz de detectar el flujo de agua por una tubería y arrancar un grupo de presión sólo cuando éste sea necesario.

Componentes necesarios

  1. Arduino UNO
  2. Caudalímetro o sensor de flujo DN50 G2
  3. Relé con optoacoplador de 5V
  4. Alimentador de 9V

Arduino UNO

Caudalímetro DN50

Relé con octoacoplador

Alimentador de 9V

La bomba de presión es un modelo «Alpha1» de Novelec, sin presostato ni depósito, por lo que, o bien funcionará permanentemente, con el consiguiente gasto, o bien habría que encenderla y apagarla manualmente cuando fuera necesario. Este proyecto pretende evitar estas dos inconveniencias.

Descripción del funcionamiento

El grupo de presión deberá encenderse a los tres segundos de haber detectado un flujo ininterrumpido de agua, y apagarse tres segundos después de que este flujo haya quedado interrumpido, para evitar encendidos demasiado breves que no servirán para aumentar la presión y podrían ser perjudiciales para el motor.

Esquema


Programa (Provisional)

Atención: No usar este sketch mientras se encuentre en estado “Provisional”.

int sensor = 2;                // Pin del caudalímetro
bool previo = false;           // Estado previo del sistema
bool activo = false;           // Estado del sensor
unsigned long con_inicio = 0;  // Marca temporal de inicio del cambio de secuencia
unsigned long contador = 0;    // Marca temporal actual del cambio de secuencia
 
void activar() {
  activo = true;
  con_inicio = millis(); // Capturamos el momento del cambio de secuencia
}
 
void desactivar() {
  activo = false;
  con_inicio = millis(); // Capturamos el momento del cambio de secuencia
}
 
void setup() {
// Interrupción que activa la secuencia de encendido cuando se detecta subida de nivel en el pin del caudalímetro
attachInterrupt(digitalPinToInterrupt(sensor), activar, HIGH);
 
// Interrupción que activa la secuencia de apagado cuando se detecta bajada de nivel en el pin del caudalímetro
attachInterrupt(digitalPinToInterrupt(sensor), desactivar, LOW);
}
 
void loop() {
}

Test de prueba del caudalímetro

int sensor = 2;                // Pin del caudalímetro
bool previo = false;           // Estado previo del sistema
bool activo = false;           // Estado del sensor
unsigned long con_final = 0;  // Marca temporal de inicio del cambio de secuencia
unsigned long con_inicio = 0;
 
// Función llamada por la interrupción del pin del caudalímetro que pone el estado en true y reinicia el contador de inactividad 
void activar() {
  // Reseteamos el contador de apagado
  con_final = millis();
  activo = true;
  // Si el estado anterior era false, reiniciamos el contador de encendido y ponemos el estado anterior en true
  if (!previo) {
    con_inicio = millis();
  }
}
 
void setup() {
  con_inicio = millis();
  Serial.begin(9600);
  Serial.println("Iniciando...");
  attachInterrupt(digitalPinToInterrupt(sensor), activar, HIGH);
}
 
void loop() {
  // A los cinco segundos el estado pasa a false, a menos que la interrupción lo ponga en true y reinicie el contador
  if (previo && millis()-con_final > 3000) {
    Serial.println("Inactivo");
    Serial.println(millis());
    activo = false;
    previo = false;
  }
 
  // Si el estado es activo y pasan cinco segundos sin que se reinicie el contador, activamos el motor
  if (activo && !previo && millis()-con_inicio > 3000) {
    Serial.println("Activo");
    Serial.println(millis());
    previo = true;
  }
}
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
starter_para_grupo_de_presion.txt · Última modificación: 2025/01/17 12:26 por hispa

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki