\chapter{Conclusiones} % Chapter title
\label{ch:conclusiones} 


%\section{Objetivos cumplidos}
%implementación del sistema de adquisición de datos con la singleboard computer BBB usando linux embebido
Con la realización de este proyecto se logra el desarrollo de un sistema para la adquisición de concentraciones de gases y condiciones atmosféricas (presión, temperatura, humedad relativa), con el cuál se pretende asistir en la obtención de estas variables para el estudio de las reacciones sólido-gas en los tratamientos térmicos del acero.
de forma que se cumple el objetivo principal de esta tesis y también se comprueba la hipótesis que plantea
el aporte de las herramientas “\textit{open source}” ya desarrolladas para aumentar las funciones y capacidades del sistema.

%PyR/funciones
Dentro del desarrollo de este sistema también se implementó de un circuito de protección para señales digitales,
el desarrollo de una librería para configuración y utilización de los puertos UART de la \textit{Beaglebone} y
un programa con funciones de 
configuración de sensores, 
obtención y registro de mediciones y
gestión del tiempo para la adquisición,
así como el diseño de una atmósfera parcialmente aislada.
Trabajo y conocimiento que podrá ser utilizado en el futuro
dentro de algún proyecto que requiera de estas herramientas.

%tarjetas controladoras
La utilización de tarjetas controladoras facilitó la interfaz con los sensores,
utilizando los puertos UART de la \textit{Beaglebone} para comunicarse con éstos, disminuyendo así el posible ruido al transmitir señales analógicas.
Estas tarjetas controladoras realizaron también el acondicionamiento y la compensación de las mediciones, disminuyendo así la afectación por el ruido y las condiciones atmosféricas.
Para ello, las tarjetas controladoras utilizan sensores de temperatura, presión y humedad, que también pueden realizar mediciones para ser registradas por el sistema de adquisición.

%PyR/rangos de sensores
Este sistema desarrollado puede medir concentraciones de hasta
250,000 ppm (25\%) de $O_2$,
5,000 ppm (0.5\%) de $CO$,
y 200,000 ppm (20\%) de $CO_2$,
en atmósferas con hasta 
90\% de humedad relativa (sin condensación),
con temperaturas desde 0 a \SI{50}{\degreeCelsius}
y una presión dentro del rango de 800 hasta 1,200 mbar. 
Estos rangos mencionados son para garantizar el uso de los tres sensores dentro de sus parámetros de operación.

%PyR/resultados de las pruebas
Los resultados de las pruebas demuestran que tanto el algoritmo, los sensores y la interfaz de \textit{hardware} (utilizando aisladores digitales ISOW7248) funcionan de manera adecuada individualmente, logrando así un correcto funcionamiento del sistema en conjunto.
Estos resultados también demuestran la confiabilidad del sistema desarrollado, obteniendo un comportamiento consistente de las variables medidas en los dos tipos de pruebas realizadas.
También se observan pocas variaciones en las mediciones obtenidas en cada prueba,
siendo del 8.42\% (con respecto a la media de los valores máximos de $CO_2$ obtenidos en las cinco diferentes pruebas) la mayor variación, en la prueba no. 2 de exhalación,
y del 20.56\% en el nivel máximo de $CO$ en la prueba no. 1 de combustión, posiblemente debido a las bajas concentraciones medidas.

%\section{Trabajo a futuro}
%\subsection{Corto, mediano plazo}%corto, mediano plazo
El trabajo a futuro que se puede realizar en este sistema a corto y mediano plazo para lograr mejorarlo podría ser implementar funciones que alerten al usuario cuando los parámetros atmosféricas salgan del rango de operación de los sensores, así como mejorar la implementación de la duración de la adquisición de datos para introducir el tiempo exacto como texto (\eg 1:30:07, hh:mm:ss) y no sólo la cantidad de horas.
También, opcionalmente para aumentar la modularidad del \textit{software}, se podría separar la función \texttt{sensConf} en dos funciones, una para inicializar el sensor y otra para elegir modos de operación y otras opciones del sensor.
En cuanto a los componentes de \textit{hardware}, se podría diseñar una \textit{daughterboard} con los aisladores digitales que se coloque encima de la \textit{Beaglebone}, así como un módulo en el cuál se conecten todos los sensores de concentración de gases y también se conecten todos los cables de UART y alimentación en un sólo conector.
La atmósfera controlada también podría mejorarse utilizando una tarjeta de control, en lugar de una fuente de alimentación para alimentar el mezclador de gases. 

%\subsection{Largo plazo}%largo plazo
	%web app
A largo plazo, el trabajo a futuro que se puede realizar en este sistema podría ser el desarrollo de aplicación web corriendo desde la \textit{Beaglebone},
		%acceso remoto desde un navegador web
para un acceso remoto desde un navegador web,
		%interfaz de usuario gráfica 
con una interfaz gráfica que facilite la utilización del sistema al usuario para la realización de
		%realizar adquisición de datos
adquisición de datos en pruebas y experimentos,
		%visualizar gráficas de pruebas y experimentos / %descargar gráficas y datos
la visualización y la obtención de gráficas y datos,
		%monitoreo remoto en tiempo real
y el monitoreo en tiempo real de las pruebas y experimentos.

%monitoreo de comunicación / no se conocían los comandos
Antes de obtener el manual del sensor EC200, no se conocían los comandos utilizados para su operación, por lo que
el sensor tuvo que utilizarse con el programa \textit{GasLab}, proporcionado por el provedor co2meter.
Al comunicarse por medio de este programa, se monitorearon los comandos utilizados por éste y las respuestas del sensor, utilizando dos terminales RX de los puertos UART de la \textit{Beaglebone} y el programa \textit{minicom}, para conocer la forma de operación del sensor.



También se puede desarrollar una función para la gestión del tiempo de adquisición, utilizando los PRU de la \textit{Beaglebone}, para así mejorar el control de la obtención de las mediciones y transladar esa carga de trabajo a un microcontrolador con capacidades en tiempo real.

%mala configuración UART
%El programa de adquisición de datos tenía problemas para configurar
Los puertos UART de la \textit{Beaglebone} 
no se configuraban correctamente
utilizando la estructura de \texttt{termios} en el programa de adquisición de datos.
Esto era debido a que al modificar los atributos de los puertos
no se limpiaban los valores previos, por lo que se mantenían algunas configuraciones no deseadas.
Para corregir este problema sólo se limpiaron las configuraciones existentes en los puertos antes de asignar los nuevos parámetros.

%Reintento de configuración de sensores
La configuración de los sensores en algunas ocasiones no era exitosa, por lo que era necesario realizar más intentos.
Este error se manejó recibiendo el mensaje de confirmación del sensor y utilizando un ciclo \texttt{while} para realizar un determinado número de intentos hasta que el sensor confirmara su correcta configuración.

%mensajes de confirmación diferentes a los del manual
También fue necesario examinar los mensajes de respuesta del sensor \textit{SprintIR},
ya que este no respondía con el mensaje de confirmación de configuración especificado en el manual del fabricante.
Para esto se creó una sección de código imprimía en la terminal los caractéres del mensaje recibido y su valor en código ASCII. Este código fue retirado de la versión actual del programa.

%manejo del tiempo
El sistema operativo utilizado en este trabajo no ejecuta las tareas en tiempo real,
por lo que se quiso anticipar al problema de 
acumular un retardo en las mediciones
durante pruebas muy prolongadas
al utilizar la función \texttt{sleep}.
Al principio se utilizó un ciclo \texttt{while}, donde el programa se detenía hasta que la hora/fecha del sistema (representada en segundos) llegaba al momento en el que se realizaba el muestreo,
pero al implementar este algoritmo se percató de que el CPU se sobrecargaba al estar constantemente verificando la hora/fecha del sistema.
Debido a esto se decidió 
poner al programa en reposo el tiempo restante para el siguiente muestreo después de haber realizado y almacenado las mediciones (menos un margen de tiempo considerable para darle oportunidad al administrador de tareas regresar al programa antes de este muestreo),
utilizando la función \texttt{sleep} en el algoritmo,
esto ayudó a reducir el uso de CPU a un valor al rededor del 20\%.