36-9-Quinto-codigo-Fede

Quinto código Fede

Décima 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,
  9. Novena entrega, cuarto 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 décima entrada, vamos a seguir realizando código para que Fede: un sistema de monitorización basado en arduino empiece a tener forma.

Quinto programa. Medición Caudal + Medición Presión + LCD

Con este quinto programa pretendemos finalizar la versión 1 de la programación de Fede: hacer funcionar los sensores de presión y de caudal y ver la lectura en la pantalla LCD.

En este programa utilizaremos los componentes:

  • Sensor caudal: 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 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.
  • DC 5V G1/4 Pressure Sensor Transmitter Pressure Transducer 1.2 MPa 174 PSI, el cuál nos permite medir los bares que pasan a través de una tubería.
  • LCD1602 LCD monitor: una pantalla LCD de 16 columnas*2 líneas
  • IIC/I2C Módulo para LCD1602: módulo para realizar la conexión entre la pantalla LCD y el arduino; con este módulo minimizamos a 4 hilos de conexión.
sensor-presion
sensor-caudal
lcd1602 lcd monitor

Para este ejercicio vamos a prestar atención a los programas anteriores ya que los hemos enfocado a este último programa.

=-=-=-=-=-=- QUINTO CÓDIGO ARDUINO – =-=-=-=-=-=

//-- ============  sensor agua + sensor presión  ========
//--- v1.
//--- k = + - 5.5#include <Wire.h>

#include<EEPROM.h>      //Librería para la memoria EEPROM
#include <Wire.h>
#include <LiquidCrystal_I2C.h> 

const int presionInput0 = A0;

const int pressureZero = 98.8; // lectura analógica del transductor de presión a 0psi
const int pressureMax = 921.6; // lectura analógica del transductor de presión a 100 psi
const int pressuretransducermaxPSI = 100; // valor psi del transductor que se está utilizando
volatile int NumPulsos;   //variable para la cantidad de pulsos recibidos
int PinSensor = 2;      //Sensor conectado en el pin 2

float factor_conversion = 5.94; //para convertir de frecuencia a caudal - k (5.5)
long dt=0;          //variación de tiempo por cada bucle
long t0=0;          //millis() del bucle anterior

const int baudRate = 9600; // entero constante para establecer la velocidad en baudios para el monitor en serie
const int sensorreadDelay = 250; // entero constante para establecer el retardo de lectura del sensor en milisegundos

float pressureValue0 =0;
float volumen=0;

LiquidCrystal_I2C lcd(0x27,16,2); // si no te sale con esta dirección  puedes usar (0x3f,16,2) || (0x27,16,2)  ||(0x20,16,2) 

//-- Función que se ejecuta en interrupción  -----

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

//-- Función 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);   //(Interrupción 0(pin2), función, Flanco de subida) -----
 
  EEPROM.get(10,volumen);         //Guarda desde el byte 10 de la EEPROM el volumen del agua
  t0=millis();
}

void loop() { 


  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();

  //-----  controlamos la presión  -----
  pressureValue0 = analogRead(presionInput0);
  pressureValue0 = ((pressureValue0-pressureZero)*pressuretransducermaxPSI)/(pressureMax-pressureZero);

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

  Serial.print("Presion: ");
  Serial.print(pressureValue0, 1);
  Serial.print("psi");
  Serial.print("//-----");
  Serial.println();
  

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

  //----- Muestra en pantalla la presion ---
  lcd.setCursor(0,1);
  lcd.print("Presion: "); 
  lcd.print(pressureValue0, 1); 
  lcd.print("psi");

  lcd.display();
  delay(sensorreadDelay);
  
}

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

arduino-fede-v1-1
arduino-fede-v1-2

Imagen conexiones

fede-proto-5

Con este último programa hemos conseguido sentar las bases de que Fede. En la siguiente entrada pensaremos en cómo mejorar este prototipo v1 de Fede para dejarlo en algo funcional y fácil de transportar.

También nos falta conectar el sensor de intensidad que actualmente está en camino y tardará unos días en llegar, mientras, vamos preparando el código para leer los valores.

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 , , , , , , , , , , , , , , , , , , .