Este proyecto se basa en el diseño, análisis y fabricación de un depósito de agua, con una salida y una entrada de agua, cuyo nivel del líquido es controlado para mantenerlo estable en el valor que el usuario desee. Empleando un sensor ultrasónico se mide el nivel del agua en tiempo real y un controlador PI implementado en el microcontrolador ESP8266, de acuerdo a la medición del nivel, ajusta la potencia administrada a la bomba controlando así el flujo de entrada para mantener estable el nivel del líquido. Se realizaron pruebas para calibrar los sensores de caudal empleados, para verificar como afecta la temperatura al sensor ultrasónico, para verificar la linealidad del control de potencia de la bomba y para determinar el rango de linealidad del sistema. Los resultados obtenidos demuestran que es correcto asumir un rango lineal de funcionamiento y que dentro del mismo el controlador PI funciona correctamente manteniendo el nivel estable con un error del 5%.
Este programa permite emplear el sistema de control de nivel por medio de la comunicación por puerte serie entre la computadora y el microcontrolador. El usuario debe cargar el programa al microcontrolador ESP8266, conectarlo a la computadora y ejecutar el script de python matFileGenerator.py, una vez se ejecuta debe ingresar un valor número para el setpoint del sistema (en centimetros) y así luego el sistema comenzará a funcionar para mantener el nivel a la altura indicada mientras se envían los datos del nivel, caudal de entrada, caudal de salida y PWM por puerto serie a la aplicación en python la cual al cerrarla generará un archivo .mat con todos los datos recopilados desde el momento que el sistema comenzó a funcionar. De esta forma se pueden analizar los datos con herramientas como GNU Octave o MatLab.
- Visual Studio Code
- PlatformIO
- Librería Wire
- Librería SPI
- Librería Adafruit_BMP085
- Librería SimpleKalmanFilter
- Python 3
- Paquete serial
- Paquete scipy
Para poder usar el sistema y almacenar todos los datos en un archivo .mat para su posterior análisis
se debe descargar este repositorio para así compilar y subir el código main.cpp
al micrcontrolador ESP826,
y usar el script de Python matFileGenerator.py
.
- Abrir una Terminal de Comandos: Ubiquese en la carpeta donde quiera descargar el repositorio y
abra allí una terminal de comandos. También puede usar el acceso rápido
Ctrl+Alt+T
para abrir un terminal de comandos y moverse a la ubicación deseada con el comandocd
. - Clonar el Repositorio: En la terminal de comandos ahora escriba:
git clone https://github.com/ezequiel1611/water_level_data_analysis
y presione Enter
para crear una copia local de este repositorio en su computadora.
- Abrir el Símbolo del Sistema: Presione
Win+R
, escribacmd
y presioneEnter
para abrir el símbolo del sistema. Muevase hacia la carpeta donde quiere descargar el repositorio usando el comandocd
. Por ejemplo, si quiere tener el repositorio en una carpeta llamadaScripts
en el Escritorio, puede escribir:
cd %USERPROFILE%\Desktop\Scripts
- Clonar el Repositorio: En el símbolo del sistema ahora escriba:
git clone https://github.com/ezequiel1611/water_level_data_analysis
y presione Enter
para crear una copia local de este repositorio en su computadora.
Antes de ejecutar el script deberá abrirlo con un editor de texto o su IDE de python de preferencia, allí deberá corroborar que el puerto usado en el script es el mismo que usted tiene asignado para el microcontrolador ESP8266. Esto se ve en la línea:
ser = serial.Serial('/dev/ttyUSB0', 115200)
En el caso de Linux coloque el puerto ttyUSB correspondiente y en el caso de Windows coloque el puerto COM correspondiente para su microcontrolador.
- Abrir una Terminal de Comandos: Ubiquese en la carpeta se encuentra el archivo
matFileGenerator.py
, haga click derecho y seleccione la opciónAbrir en una terminal
. - Ejecute el Script: Una vez abierta la terminal de comandos debe escribir:
python3 matFileGenerator.py
- Use el Script: Ahora el programa se estará ejecutando en la terminal de comandos, verá que le pide
ingresar un setpoint en centímetros para comenzar a usar el sistema, escriba el setpoint como números enteros
y presione
Enter
. El sistema comenzará a funcionar y usted podrá ver la información que esta mandando en tiempo real el microcontrolador. Cuando desee detener el sistema y obtener su archivo .mat presione las teclasCtrl+C
. El programa se detendrá y usted verá que se creó un archivodata.mat
en la carpeta.
- Configure el Script: Haga click derecho en el script
matFileGenerator.py
y seleccionePropiedades
, allí deberá seleccionar que el archivo se abra con Python. - Ejecute el Script: Ahora que se estableció que el archivo se abra con Python, solo deberá hacer doble click en
el archivo
matFileGenerator.py
. -
- Use el Script: Ahora el programa se estará ejecutando en el símbolo del sistema, verá que le pide
ingresar un setpoint en centímetros para comenzar a usar el sistema, escriba el setpoint como números enteros
y presione
Enter
. El sistema comenzará a funcionar y usted podrá ver la información que esta mandando en tiempo real el microcontrolador. Cuando desee detener el sistema y obtener su archivo .mat presione las teclasCtrl+C
. El programa se detendrá y usted verá que se creó un archivodata.mat
en la carpeta.
- Use el Script: Ahora el programa se estará ejecutando en el símbolo del sistema, verá que le pide
ingresar un setpoint en centímetros para comenzar a usar el sistema, escriba el setpoint como números enteros
y presione
El archivo data.mat
puede ser cargado al entorno de GNU Octave o MatLab usando el comando
load("data.mat")
Una vez cargado el archivo usted verá en su espacio de trabajo cuatro vectores: Level, PWMset, QIn y QOut.
Estos vectores representan las lecturas en tiempo real del nivel del líquido, el PWM de la bomba, el caudal
de entrada en ml/s y el caudal de salida en ml/s respectivamente. Usted ahora puede trabajar sobre cada
dato de forma independiente, como por ejemplo visualizarla de forma gráfica con el comando plot(Level)
.