Medición de caudal y temperatura
INTRODUCCIÓN
Este proyecto pretende ser útil para medir el caudal que pasa por un tubo y llevar un registro tanto del volumen de líquido que ha pasado por él, como de la temperatura del recipiente en el que se encuentra.
A continuación, explicaremos los materiales utilizados, el circuito montado de la protoboard, los pasos que hemos seguido para llevar a cabo el proyecto y los problemas a los que nos hemos enfrentado con sus respectivas soluciones.
MATERIALES UTILIZADOS
MATERIALES PROPORCIONADOS POR URJC:
Componente | Imagen |
Placa Arduino UNO | |
Placa protoboard | |
Cables para la placa protoboard | |
Resistencias de 10k y 5k Ohmios | |
Botón |
MATERIALES EXTRA
Componente | Precio | Imagen |
Caudalímetro YF-S201 | 8,99€ | |
Micro bomba sumergible de agua RUNCCI-YUN | 8,99€ (Pack de tres, aunque solo se ha utilizado una) | |
Sensor de temperatura sumergible DS18B20 | 7,49€ (Pack de dos, aunque solo se ha utilizado una) | |
Tubos de plástico | Incluido en el precio de la bomba | |
Placas de madera | 8,99€ (Dos unidades) | |
Escuadras de metal | 4,48€ (Dos unidades) | |
Sujeciones de plástico para el tubo | 0,80€ | |
Bote de plástico | 0,95€ | |
Cinta aislante | – | |
Clavos | – (9 uds) | |
Tornillos | – (8 uds) | |
Rosca de tubería de metal | – (2 uds) |
IMAGEN DEL CIRCUITO MONTADO
PROBLEMAS ENCONTRADOS Y SOLUCIONES
Problemas | Soluciones |
La salida de agua de la bomba y la entrada al caudalímetro eran de distinto diámetro, por lo que no podíamos hacer que el agua fluyera de un componente a otro | Pusimos un tubo que cuadrara con el diámetro de la bomba, y cogimos una rosca de una tubería que cuadrara con la entrada del caudalímetro y tuviera una entrada más pequeña. Como la rosca seguía siendo un poco grande, cortamos un cacho de tubo más grueso y lo usamos para hacer un empalme entre la rosca y el tubo de la bomba. |
En algún punto del circuito debido a que las conexiones entre tubos no eran suficientemente buenas, perdía agua. | Pusimos cinta aislante en la conexión que perdía agua para sellarla |
Cuando empezamos a montar el circuito, la bomba no funcionaba debido a que se pasaba de altura a la que tenía que bombear | Reducimos la diferencia de altura subiendo un poco la bomba para hacer que funcionara. |
PASOS SEGUIDOS
Para hacer el proyecto hemos ido implementando poco a poco las distintas partes del circuito, empezando por lo más sencillo como base y construyendo a partir de ahí, acoplando el resto de los componentes.
Primero nos centramos en hacer que funcionara la bomba. Para ello conectamos los componentes mínimos necesarios: la bomba, un botón, un transistor NPN y una resistencia de 10k ohmios. Cuando tuvimos montada esta parte hicimos el código y probamos que funcionara tal y como queríamos. En este primer circuito metimos la bomba en un tupper con agua e hicimos un circuito cerrado, haciendo que el agua se bombeara al mismo sitio de donde salía para que nos fuera más cómodo probarlo.
Luego hicimos lo propio con el sensor térmico. Añadimos los componentes necesarios al circuito: una resistencia de 5k ohmios, y las conexiones del sensor al positivo y negativo. Una vez conectado, planteamos el código y probamos el sensor a temperatura ambiente para ver cómo se iban registrando los cambios por pantalla. Por último, lo probamos en el tupper introduciendo agua fría y viendo cómo bajaba la temperatura.
Lo último que implementamos fue el caudalímetro ya que era lo que más trabajo nos iba a llevar, y necesitábamos tener la bomba en funcionamiento para probarlo correctamente. Conectamos a través de un tubo el caudalímetro y la bomba, y llevamos la salida del caudalímetro al tupper de nuevo a través de un tubo. Añadimos una resistencia y conectamos los cables de positivo, negativo y señal, e hicimos el código. Una vez ya teníamos este componente pudimos probar la funcionalidad
Cuando tuvimos montado el circuito y probamos que funcionaba correctamente, hicimos una reestructuración de componentes y cables para que quedara más limpio.
Por último, procedimos al montaje final del proyecto.
Utilizamos como base del proyecto dos tablones de madera unidos en forma de L por dos escuadras de metal y tornillos. Luego fijamos la placa a la tabla horizontal con celo, ajustamos los tubos con ayuda de clavos a las tablas, pusimos el caudalímetro y cambiamos el recipiente en el que iba la bomba a una botella con 2L de capacidad.
CÓDIGO COMPLETO
El código está estructurado en 3 partes diferenciadas claramente, una por cada componente del circuito, y la parte de setup.
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BOMB_PIN, OUTPUT);
pinMode(PinSensor, INPUT_PULLUP);
attachInterrupt(0,ContarPulsos,RISING);
}
En el setup, además de establecer los pines de entrada y salida de los componentes, lo más destacable es la función “attachInterrupt”. Esta función consigue que cuando estén activadas las interrupciones y le llegue una señal de subida en el pin 2, se active la función “ContarPulsos”. Esto nos sirve para más adelante cuando mostremos el código del caudalímetro.
Ahora nos centraremos en el loop en las 3 partes del código
// PARA QUE FUNCIONA LA BOMBA
button_state = digitalRead(BUTTON_PIN);
if (button_state == LOW && prev_button_state == HIGH){
if (bomb_state==0){
bomb_state=1;
digitalWrite(BOMB_PIN, HIGH);
}
else{
bomb_state=0;
digitalWrite(BOMB_PIN, LOW);
}
}
En la parte de la bomba simplemente recibimos la información del botón, y cuando se pulsa cambia de estado, es decir, pasa de activo a inactivo y viceversa.
/PARA OBTENER LA TEMPERATURA
sensors.requestTemperatures();
float temperatura = sensors.getTempCByIndex(0);
Esta parte es para el sensor térmico. Son dos funciones que consiguen acceder al valor del sensor y lo asignan a una variable «temperatura”.
/—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 número de pulsos
interrupts(); //Habilitamos las interrupciones
delay(1000); //muestra de 1 segundo
noInterrupts(); //Desabilitamos las interrupciones
frecuencia=NumPulsos; //Hz(pulsos por segundo)
return frecuencia;
}
Estas dos funciones van de la mano y sirven para calcular el caudal que pasa por el caudalímetro. Cuando se llama a la funcion ObtenerFrecuencia, se calculan con la funcion contarpulsos los pulsos que pasan en un segundo, dependiendo de los flancos de subida que se detecten en el caudalimetro.
//PARA OBTENER EL CAUDAL
float frecuencia=ObtenerFrecuencia(); //obtenemos la Frecuencia de los pulsos en Hz
float caudal_L_m=frecuencia*2.25*60/factor_conversion; //calculamos el caudal en L/m
float caudal_L_h=caudal_L_m*60; //calculamos el caudal en L/h
volumen = volumen + caudal_L_m/60;
Para calcular el caudal conseguimos los pulsos por segundo que recoge el caudalímetro y luego mediante un factor de conversión transformamos el valor el caudal por minuto, hora, y volumen total.
FUNCIONAMIENTO Y CASOS DE USO
FUNCIONAMIENTO DEL PROYECTO
El proyecto tiene como objetivo medir el caudal y el volumen total que pasa a través del tubo con un caudalímetro y la temperatura del agua mediante un sensor de temperatura. Hemos construido un circuito cerrado de agua con una bomba, un recipiente y tubos de plástico. Usamos una placa de Arduino para recopilar datos del caudalímetro y del sensor de temperatura. Aquí está el desglose de cómo funciona:
- Botón de encendido y apagado de la bomba:
Nos permite interactuar con el circuito, al presionarlo comienza el funcionamiento de la bomba de agua y al volver a presionarlo esta de apaga deteniendo así el flujo de agua.
- Caudalímetro:
Recoge la información del flujo de agua que pasa por él mediante pulsaciones. Este está conectado al positivo y negativo de la protoboard, además de al pin 2 de Arduino regulado por una resistencia de 5kΩ.
- Sensor de temperatura:
Mide la temperatura del agua que está contenida en el recipiente. El sensor está conectado al positivo y negativo de la protoboard, y al pin 4 del arduino también regulado por una resistencia, de 10kΩ.
- Bomba de agua:
Nos permite controlar el flujo del agua. Está conectada al positivo de la protoboard y al emisor del transistor. Este transistor además conecta el ground a su colector y el pin 9 de arduino a la base, permitiéndonos tener un interruptor controlado por Arduino para regular la corriente hacia la bomba.
CASOS DE USO
Este proyecto está basado fundamentalmente en sistemas de control de agua para las viviendas. La finalidad es saber lo que hay que pagar de agua al tener registrado el valor total de agua consumida. También almacenamos información extra como la temperatura del agua para saber si debemos regularla según los objetivos que se planteen.
Pero, además se podrían hacer circuitos parecidos en cuanto a componentes para conseguir otras aplicaciones. Varios ejemplos de ello pueden ser:
- Un sistema de control de riego automático: se podría activar la bomba de agua para propulsar el agua a cierta temperatura (controlada por el sensor), y medir con el caudalímetro el total de agua utilizada.
- Seguridad en procesos industriales: en ciertos procesos industriales se necesitan controles muy exhaustivos, con requisitos como podrían ser la temperatura o la cantidad de ciertos líquidos. Ahí entraría un proyecto parecido al nuestro, que bombeara ciertos líquidos solo cuando estén a una temperatura adecuada a las especificaciones de los controles de calidad.
- Sistemas de control de temperatura: en sistemas más grandes se podría conseguir que cuando se detecte cierta temperatura que el sistema bombee liquido refrigerante a través de los tubos, en cierta cantidad controlada por el caudalímetro.
REPARTO DE TAREAS
Todos los miembros del equipo hemos estado presentes en todo momento al realizar el proyecto, aun así, podríamos dividir las tereas que hemos realizado en conjunto en:
- Compra de materiales y componentes extra.
- Diseño de un código base.
- Montaje del circuito.
- Pruebas para comprobar el funcionamiento de cada componente.
- Modificación y refactorización del código inicial.
- Construcción de la maqueta.
- Documentación del proyecto.
VIDEO