36-8-Cuarto-codigo-Fede

Cuarto código Fede

Novena entrega de Fede, te invitamos a leer el resto de entradas (que ya están subidas) para que sigas el proyecto desde el inicio:

  1. La presentación de Fede en este enlace
  2. El primer diseño de Fede,
  3. Tercera entrega, componentes parte uno,
  4. Cuarta entrega, componentes parte dos,
  5. Quinta entrega, conexionado
  6. Sexta entrega, primer código,
  7. Séptima entrega, segundo código,
  8. Octava entrega, tercer código,

También dejamos cerca el enlace al foro de Cambatronics, aquí estamos llevando a cabo consultas y consejos a tener en cuenta para el diseño del prototipo de Fede.

Seguimos escribiendo esta serie de artículos, gracias a los cuales podremos transformar este pequeño proyecto en un prototipo óptimo.

En esta novena entrada, vamos a ir realizando el cuarto programas para Fede: un sistema de monitorización basado en arduino.

Cuarto programa. Medición Caudal

Con la programación de la siguiente fase del proyecto, vamos a dar otro paso gigante para Fede: medir el caudal del componente ARCELI YF-S201 1-30L / min, Contador de Sala de Flujo de Agua/Sensor, control de Agua Interruptor de caudal de Agua, medidor de flujo y medidor de caudalímetro; el cuál nos permite medir el caudal y el volumen del fluido que pasa a través de una tubería.

Para este ejercicio vamos a prestar atención a los diferentes proyectos que han realizado las siguientes personas:

Cuarto Código Arduino

//-- 4 ============  Sensor Caudal  ========
//--- v1. -- k = + - 5.5

#include<EEPROM.h>      //Libreria para la memoria EEPROM
#include <Wire.h>
#include <LiquidCrystal_I2C.h> 

volatile int NumPulsos;   //variable para la cantidad de pulsos recibidos
int PinSensor = 2;      //Sensor conectado en el pin 2
int PulsadorAgua = 6;   //Pulsador Reset de agua (pin6)
int ResetAgua = LOW;    //Varialbe que guarda el estado del pulsador
float factor_conversion = 5.94; //para convertir de frecuencia a caudal - k (5.5)
float volumen=0;  
long dt=0;          //variacion de tiempo por cada bucle
long t0=0;          //millis() del bucle anterior
const int baudRate = 9600;
LiquidCrystal_I2C lcd(0x27,16,2); // si no te sale con esta direccion  puedes usar (0x3f,16,2) || (0x27,16,2)  ||(0x20,16,2) 

//-- Funcion que se ejecuta en interrupcion  -----

void ContarPulsos()
{
  NumPulsos++;      //incrementamos la variable de pulsos
}

//-- Funcion para obtener frecuencia de los pulsos -----
int ObtenerFrecuencia()
{
  int frecuencia;
  NumPulsos = 0;      //ponemos a 0 el numero de pulsos
  interrupts();     //habilitamos las interrupciones
  delay(1000);      //muestra de 1 segundo
  //noInterrups();      //Deshabilitamos las interrupciones
  frecuencia = NumPulsos;   //Hz (pulsos por segundo)
  return frecuencia;
}


//-- VOID SETUP() ------
void setup()
{
  Serial.begin(baudRate);
    lcd.init();
    lcd.backlight();
    lcd.clear();
    
  pinMode(PinSensor, INPUT);
  attachInterrupt(0, ContarPulsos, RISING);   //(Interrupcion 0(pin2), funcion, Flanco de subida) -----
  pinMode(PulsadorAgua,INPUT);      //PULSADOR RESET DE AGUA (PIN6)

  EEPROM.get(10,volumen);         //Guarda desde el byte 10 de la EEPROM el volumen del agua
  t0=millis();
}

void loop ()
{

  ResetAgua = digitalRead(PulsadorAgua);      //leemos el pulsador para reset de agua
  if(ResetAgua == HIGH){
    volumen = 0;                //si el pulsadr azul es HIGH, volumen=0 
  }

  float frecuencia=ObtenerFrecuencia();     //obtenemos la frecuencia de los pulsos en Hz
  float caudal_L_m=frecuencia/factor_conversion;  //calculamos el caudal en L/m
  dt = millis() - t0; 
  t0 = millis();
  volumen = volumen + (caudal_L_m/60)*(dt/1000);  //volumen (L) = caudal (L/s) * tiempo (s)
  EEPROM.put(10,volumen);             //Guarda en la EEPROM el valor de volumen

  //-----  Enviamos por el puerto serie -----
  Serial.print("Caudal: ");
  Serial.print (caudal_L_m,1);
  Serial.print ("L/min ");
  Serial.println ("");
  

  //----- Muesrta en pantalla ---
  
  lcd.setCursor(0,0);
  lcd.print("Caudal: "); 
  lcd.print(caudal_L_m, 1); 
  lcd.print(" L");

    lcd.display();
}

arduino-caudal-1

Vamos por buen camino, hemos conseguido hacer funcionar y leer los valores de los sensores de presión y de caudal; ya tenemos buen trabajo de cara final a Fede. Seguimos explicando otros programas en la siguiente entrada, en este caso, juntaremos los tres programas anteriores y haciendo funcionar ambos sensores y la lectura se verá en la pantalla LCD.

Sigue atento a los siguientes enlaces y/o navega por nuestra web para conocer otros proyectos realizados.



Otros recursos o enlaces de interés
Foro Cambatronics
Presentando a Fede
Primer diseño de Fede

¿Te fue útil este post / artículo?

¡Haz Click en una estrella para calificar y puntuar esta entrada!

Puntuación media 0 / 5. Votos contados: 0

No hay ninguna puntuación. Se el primero en puntuar esta entrada.

Publicado en Arduino, Hardware, Proyectos y etiquetado , , , , , , , , , , , , , , , , , , , .