Вы находитесь на странице: 1из 104

Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg.

Resumen
Durante las ltimas dcadas, el auge en los campos de la tecnologa y la computacin, ha
permitido al ser humano simplificar y acelerar muchas de las tareas llevadas a cabo,
automatizando los procesos que las componen. Hoy en da, y cada vez ms, el mundo de las
aplicaciones est a la orden del da, y la informtica es un campo con el que nos relacionamos
constantemente y a diario, de manera consciente o inconsciente.

En la actualidad, existen aplicaciones para prcticamente cualquier cosa,


independientemente de la plataforma en dnde las usemos (ordenadores, smartphones,
tabletas, televisores...). Es por este motivo, que en un afn de comprender el funcionamiento
y el lenguaje de las computadoras mediante la programacin, en este proyecto se emprende
largo camino con el fin de poder aplicar los conocimientos de informtica aprendidos durante
su elaboracin, para crear los cimientos de un programa que facilite el anlisis en estudios
relacionados con el fenmeno fsicoqumico de la adsorcin.

En este proyecto se ha desarrollado una aplicacin compatible con Windows utilizando el


lenguaje de programacin Python, a fin de analizar los resultados de ensayos experimentales
de adsorcin.

En la primera parte del trabajo, se exponen las bases tericas en que se fundamenta el
fenmeno de la adsorcin, as como los modelos ms representativos que describen la
naturaleza de estas reacciones.

En segundo lugar, se introduce tambin a la programacin mediante Python, describiendo los


mtodos y ventajas que ofrece este lenguaje de programacin.

Tras presentar la parte terica del trabajo y aplicando los conceptos adquiridos, se procede
con una exposicin detallada del proceso de elaboracin del programa. Tambin se presentan
los manuales y tutoriales correspondientes para su uso e instalacin, adems de proponer las
principales vas de mejora para continuar con su desarrollo. El programa creado se aplicar,
finalmente, a resultados de ensayos de adsorcin en sistemas qumicos reales.
Pg. 2 Memoria
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 3

Sumario
RESUMEN ___________________________________________________ 1
SUMARIO ____________________________________________________ 3
1. GLOSARIO _______________________________________________ 7
2. PREFACIO ______________________________________________ 11
2.2. Origen del proyecto ...................................................................................... 11
2.3. Motivacin del proyecto ................................................................................ 11

3. INTRODUCCIN _________________________________________ 13
3.1. Objetivos del proyecto .................................................................................. 13
3.2. Alcance del proyecto .................................................................................... 14
3.3. Requisitos previos ........................................................................................ 15

4. ADSORCIN ____________________________________________ 16
4.1. Definicin ...................................................................................................... 16
4.2. Tipos de Adsorcin....................................................................................... 17
4.3. Estudio de la adsorcin ................................................................................ 18
4.4. Cinticas de adsorcin ................................................................................. 19
4.4.1. Modelo cintico de pseudo primer orden ........................................................ 19
4.4.2. Modelo cintico de pseudo segundo orden..................................................... 20
4.4.3. Modelo cintico de Elovich .............................................................................. 21
4.4.4. Modelo de difusin intraparticular ................................................................... 22
4.5. Isotermas de adsorcin ................................................................................ 22
4.5.1. Isoterma de Langmuir ..................................................................................... 22
4.5.2. Isoterma de Freundlich ................................................................................... 23
4.5.3. Isoterma de Temkin ........................................................................................ 24

5. INTRODUCCIN A LA PROGRAMACIN CON PYTHON_________ 25


5.1. Qu es Python? ......................................................................................... 25
5.2. Programacin Orientada a Objetos (POO) .................................................. 25
5.3. Clases y objetos ........................................................................................... 26
5.4. Por qu usar Python? ................................................................................ 27
5.5. Aplicaciones de Python en la actualidad ...................................................... 28

6. DESARROLLO DEL PROGRAMA____________________________ 29


6.1. Necesidad de creacin del programa........................................................... 29
6.2. Estructura del programa ............................................................................... 29
Pg. 4 Memoria

6.3. Herramientas y paquetes usados ................................................................ 31


6.3.1. Numpy y Scipy .................................................................................................32
6.3.2. Matplotlib..........................................................................................................32
6.3.3. PyQt5 ...............................................................................................................32
6.3.4. cx_Freeze ........................................................................................................33
6.3.5. Distribucin de herramientas ...........................................................................33
6.4. Procesamiento de los datos......................................................................... 34
6.4.1. Datos de entrada .............................................................................................34
6.4.2. Transformacin de los datos ............................................................................36
6.4.3. Linealizacin de las ecuaciones y obtencin de los parmetros ......................37
6.4.4. Obtencin del modelo terico ..........................................................................38
6.5. Representacin grfica de los resultados .................................................... 39
6.6. Creacin de la Interfaz grfica (GUI) ........................................................... 40
6.6.1. Diseo de la Interfaz grfica de usuario ...........................................................41
6.6.2. Conexin de la interfaz con el algoritmo del programa ....................................46
6.7. Empaquetamiento del programa y creacin de un instalador ..................... 50
6.7.1. Archivo ejecutable *.exe...................................................................................50
6.7.2. Creacin del instalador para Windows *.msi. ...................................................51

7. OTRAS IMPLEMENTACIONES ______________________________ 52


7.1. Icono de la aplicacin .................................................................................. 52
7.2. Mensajes de aviso al usuario....................................................................... 52
7.3. Incrustacin de los grficos en una nueva ventana de la interfaz ............... 53
7.4. Botn Reiniciar............................................................................................. 53
7.5. Barra de herramientas: Instrucciones. ......................................................... 54

8. VAS DE MEJORA Y AMPLIACIN___________________________ 56


8.1. Ampliacin del anlisis estadstico descriptivo ............................................ 56
8.2. Implementacin de otros modelos y tipos de estudio .................................. 57
8.3. Exportacin de los resultados a Excel ......................................................... 57
8.4. Mejora de las opciones de edicin de los grficos ...................................... 58

9. COMPROBACIN DE FUNCIONAMIENTO DEL PROGRAMA _____59


9.1. Estudio de la cintica de adsorcin ............................................................. 59
9.1.1. Caso de estudio con Excel...............................................................................59
9.1.2. Caso de estudio mediante la aplicacin creada ...............................................61
9.1.3. Comparacin de mtodos de clculo ...............................................................64
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 5

9.2. Estudio de isotermas de adsorcin .............................................................. 65


9.2.1. Caso de estudio con Excel.............................................................................. 65
9.2.2. Caso de estudio mediante la aplicacin creada .............................................. 67
9.2.3. Comparacin de los mtodos de clculo ........................................................ 70

10. COSTES ________________________________________________ 72


11. IMPACTO AMBIENTAL ____________________________________ 74
12. PLANIFICACIN _________________________________________ 75
CONCLUSIONES _____________________________________________ 76
AGRADECIMIENTOS __________________________________________ 77
BIBLIOGRAFA ______________________________________________ 78
ANEXO A ___________________________________________________ 80
A.1. Diagrama de funcionamiento del programa ................................................... 80
A.2. Manual de usuario ......................................................................................... 81

ANEXO B ___________________________________________________ 93
B.1. Estructura del algoritmo.................................................................................. 93
B.2. Scripts de Python .......................................................................................... 94
Pg. 6 Memoria
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 7

1. Glosario
Resumen de los principales smbolos, signos, abreviaturas, acrnimos y trminos del
proyecto:

: velocidad inicial de adsorcin.

Adsorbato: sustancia que se adhiere sobre la superficie de un adsorbente.

Adsorbente: Es un slido que tiene la capacidad de retener sobre su superficie un


componente presente en corrientes lquidas o gaseosas.

Algoritmo de programacin: Es una serie de pasos organizados que describe el proceso


que se debe seguir, para dar solucin a un problema especfico.

Array: es un tipo de dato estructurado que permite almacenar un conjunto de datos en la


memoria del dispositivo, todos ellos del mismo tipo y relacionados.

: constante relacionada con la superficie cubierta y la energa de activacin por


quimiadsorcin

Biblioteca (Library): En informtica, es una coleccin o conjunto de subprogramas usados


para desarrollar software que ofrecen funcionalidades muy especficas al usuario, a modo de
subrutinas que funcionan de manera autnoma.

Binding: En el campo de la programacin, un binding es una adaptacin de una biblioteca


para ser usada en un lenguaje de programacin distinto de aquel en el que ha sido escrita.

c1 : constante de unin de equilibrio correspondiente a la mxima energa de enlace.

c2 : constante relacionada con el calor de adsorcin.

Ce : concentracin de adsorbato en el equilibrio

Clase: En programacin, una clase es una plantilla para la creacin de objetos de datos segn
un modelo predefinido.

Float: los tipos de datos float o de punto flotante son los que representan a los nmeros reales

Framework: En el desarrollo de software, un framework o infraestructura digital, es una


estructura conceptual y tecnolgica de soporte definido, normalmente con artefactos o
mdulos concretos de software, que puede servir de base para la organizacin y desarrollo
de software.
Pg. 8 Memoria

GUI (Interfaz grfica de usuario): En informtica, es un conjunto de formas y mtodos que


posibilitan a los usuarios la interaccin con un sistema empleando para esto elementos
grficos e imgenes. Estas formas grficas tales como botones, ventanas, iconos y mens
permiten realizar distintas funciones y acciones de manera intuitiva y dinmica, reemplazando
la introduccin de lneas de comandos en el sistema operativo.

Integer: es un tipo de datos que representa los nmeros enteros; puede tomar valores
positivos y negativos, sin parte decimal.

k1 : constante de velocidad de adsorcin de Lagergen [ h-1 ].

k2 : constante de velocidad de pseudo segundo orden

kF : constante de Freundlich, relacionada con la capacidad de adsorcin

kL : constante de Langmuir, que relaciona la afinidad del soluto con el adsorbente.

Layout: En programacin, es un elemento que representa el diseo de la interfaz de usuario


y la organizacin de elementos grficos como una actividad, un espacio o un widget. Se
encarga de actuar como una plantilla para establecer un orden visual que facilite la
comunicacin del usuario con la interfaz de la aplicacin.

n : parmetro para caracterizar la intensidad de adsorcin.

Paradigma de programacin: Un paradigma de programacin provee y determina la visin


y los mtodos de un programador en la construccin de un programa o subprogramas.
Representa un enfoque particular o filosofa para tratar de resolver uno o varios problemas
claramente delimitados.

Python: es un lenguaje de programacin interpretado cuya filosofa hace hincapi en una


sintaxis que favorezca un cdigo legible.

Script: es un archivo que contiene un guin con el conjunto de rdenes y de pasos para el
procesamiento de datos, escritos en lenguaje de cdigo de programacin y almacenado en
un archivo de texto plano.

String: un string o cadena de caracteres es un tipo de dato que contiene una secuencia
ordenada de caracteres utilizado habitualmente para el almacenamiento y procesado de
palabras, frases o cualquier otra sucesin de caracteres.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 9

qe : cantidad de soluto adsorbida por unidad de superficie de adsorbente en el equilibrio

qt : cantidad de soluto adsorbido por unidad de superficie de adsorbente a un tiempo t

t : tiempo de contacto [ h ]

Qmax : constante relacionada con la capacidad mxima de adsorcin.

Widget: En informtica, un widget o artilugio es una pequea aplicacin o programa, pensado


para mostrar informacin y dar fcil acceso a funciones que se utilicen frecuentemente. Suelen
presentarse de manera muy visual y ofrecen una gran variedad de funcionalidades.
Pg. 10 Memoria
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 11

2. Prefacio

2.2. Origen del proyecto

El planteamiento inicial de este trabajo surgi de la idea propuesta por el profesor (y director
del proyecto) Francisco Javier Gimnez, junto con el apoyo del profesor Llus Solano, tambin
codirector del trabajo.

El principal objetivo de ste era poder realizar el anlisis de resultados obtenidos en ensayos
experimentales de adsorcin, de manera que una vez obtenidos stos, l fuese capaz de
interpretarlos desde el punto de vista fisicoqumico.

En sus inicios, la idea principal del trabajo consista en la implementacin de herramientas


informticas con el fin de automatizar los clculos respectivos al anlisis de los datos
recogidos durante estos ensayos, permitiendo as deducir el comportamiento de las especies
de estudio en sistemas qumicos reales.

No obstante, debido a la gran variedad de estudios posibles, y de las distintas formas de


presentar los resultados, fue necesario acotar algunos aspectos previos con tal de que el
proyecto fuese viable. En primer lugar, el trabajo se enfocara nicamente a estudios
relacionados con la cintica y las isotermas de adsorcin de sustancias qumicas en
disolucin, incluyendo los modelos ms representativos utilizados en cada uno de ellos.
Adems, se defini que estos resultados seran presentados grficamente, para una mejor
interpretacin y visualizacin. De este modo, los grficos obtenidos podran ser incluidos en
artculos que el profesor, junto con otros compaeros y alumnos, estuvieran desarrollando.

Finalmente, se supo que el director del proyecto contemplaba tambin la posibilidad de, en
un futuro, ampliar el alcance de este proyecto a otros tipos de estudios de adsorcin similares.
Considerando esto, se lleg a la conclusin de que la opcin ms efectiva sera desarrollar
ntegramente un programa informtico, que permitiese llevar a cabo estos estudios de la
manera ms simplificada posible, sentando las bases y estructurndolo de forma que pudiera
ser mejorado ms adelante por otros alumnos en futuros proyectos.

2.3. Motivacin del proyecto

El factor principal que motiv la realizacin de este proyecto fue el gran reto que supona
sumergirse en el mundo de la programacin. Si bien es cierto que durante el transcurso de la
carrera universitaria se imparti una asignatura referente a la informtica, los conocimientos
Pg. 12 Memoria

adquiridos en ella eran totalmente insuficientes para llevar a cabo un proyecto de estas
dimensiones. La pasin por parte del autor por la tecnologa, y el auge de la informtica en
muchos mbitos de la ingeniera en la actualidad, fueron determinantes en la decisin de tirar
hacia adelante este proyecto. Este trabajo ofreca la oportunidad de poder aprender realmente
a conocer e interpretar el lenguaje de programacin, y adems, poder aplicar la formacin
adquirida a un caso real, con el desarrollo de una aplicacin informtica.

Otro de los grandes motivos que impuls a llevar a cabo este proyecto, fue la posibilidad de
ampliar los conocimientos fisicoqumicos adquiridos durante la titulacin referente al
fenmeno de la adsorcin. En ella, se haban visto los conceptos bsicos que describen ste
fenmeno en la asignatura de Qumica-Fsica, adems de realizar algunos ensayos
relacionados en las diversas asignaturas de Experimentacin en Ingeniera Qumica. La
realizacin de este proyecto, supona poder profundizar acerca del comportamiento de ste
fenmeno en sistemas qumicos reales, y conocer los modelos tericos y mecanismos que
describen estas reacciones.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 13

3. Introduccin

3.1. Objetivos del proyecto

Como se ha mencionado anteriormente, el principal objetivo que pretende cumplir este


proyecto es el desarrollo de una aplicacin que facilite y permita realizar anlisis de los
resultados obtenidos en ensayos experimentales de adsorcin. Esta herramienta debe buscar
satisfacer los siguientes requisitos:

1. Caracterizacin e interpretacin qumica de los datos de procedencia.

2. Recopilacin y categorizacin de los modelos de adsorcin ms representativos


para cada tipo de estudio.

3. Aplicacin de tcnicas informticas y estadsticas para el procesamiento de datos.

4. Automatizacin del clculo numrico de las ecuaciones matemticas para cada


modelo.

5. Representacin grfica de los resultados obtenidos.

6. Simplicidad y facilidad de uso del programa.

7. Fiabilidad de resultados, y comprobacin de los mismos.

El primer objetivo es definir cules son los parmetros de control ms relevantes a tener en
cuenta en los ensayos de adsorcin para su anlisis, con el fin de poder determinar bajo qu
tipo de mecanismos se rigen estas reacciones.

El segundo objetivo se trata de recolectar los modelos ms representativos y contrastados


para describir el fenmeno de adsorcin en los ensayos experimentales, adems de sus
respectivas ecuaciones matemticas y parmetros caractersticos.

El tercer objetivo marcado consiste en desarrollar una herramienta mediante la aplicacin de


tcnicas informticas que, dados los valores recopilados en los ensayos, permita realizar y
automatizar los procesos necesarios para el clculo de resultados de cada modelo. Adems,
debe permitir tambin representar grficamente estos resultados de manera automtica,
ofreciendo as una mejor visualizacin de los mismos.
Pg. 14 Memoria

El siguiente objetivo que se pretende cumplir es facilitar la utilizacin de la herramienta creada,


ofreciendo a los usuarios un entorno amigable y un manejo simple de las distintas
funcionalidades integradas con tal de obtener los resultados deseados.

Por ltimo, deber comprobarse la fiabilidad de los resultados obtenidos a travs de la


herramienta desarrollada. Para ello, al final del trabajo se realizar un estudio con datos
provenientes de un caso ensayo concreto facilitado por el director, dnde se compararn los
resultados obtenidos en sta frente a otros mtodos de clculo utilizados habitualmente
(Excel).

3.2. Alcance del proyecto

El planteamiento de este proyecto por parte del director Javier Gimnez pretende crear la
base para que pueda ser llevado a cabo por varias personas en serie, aumentando
progresivamente el contenido del mismo hasta cumplir todos los objetivos pretendidos. Por lo
tanto, puede considerarse que ste establece el inicio de un proyecto mayor, fragmentado en
varios trabajos y que busca desarrollar a largo plazo una herramienta de clculo y anlisis
completa para ensayos fisicoqumicos concretos. Adems, se cuenta con su aprobacin,
puesto que ser l quien permita la continuidad del proyecto, siendo conocedor de que con
los recursos requeridos en este trabajo (horas de dedicacin) no se pueden alcanzar la
totalidad de los objetivos.

En primera instancia, la definicin del alcance era algo dificil de definir, puesto que no se saba
hasta que punto de desarrollo podra llegarse en esta primera fase del proyecto. Sin embargo,
tras las primeras reuniones se acord por ambas partes que ste debera intentar satisfacer
lo siguiente:

- Documentacin terica del fenmeno de adsorcin y evaluacin de los datos.


- Desarrollo de algn mtodo que permita la automatizacin de clculos matemticos
y estadsticos para el anlisis de los datos de procedencia.
- Desarrollo de una herramienta que permita la representacin bidimensional de los
resultados, y la comparacin entre los distintos casos posibles.
- Creacin de una interfaz de usuario simple e intuitiva.
- Redactado de documentacin detallada referente a la elaboracin y el
funcionamiento del programa, para permitir continuar con su desarrollo.
- Realizacin de un estudio de comparacin de resultados a partir de datos facilitados
por el director.
- Propuesta de vas de mejora y ampliacin de la herramienta desarrollada.
- Redactado del manual de usuario.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 15

3.3. Requisitos previos

En una de las siguientes reuniones con los directores del proyecto, se debati acerca de qu
lenguaje de programacin sera el empleado en el desarrollo de la herramienta. sta debera
ser capaz de poder satisfacer todas las funciones expuestas previamente. Por experiencia
previa en otros trabajos, la cantidad de informacin disponible en internet y aconsejado por
ambos profesores, finalmente se acord que el lenguaje utilizado sera Python.

Debido a los limitados conocimientos previos en programacin y con tal de poder asimilar los
conceptos necesarios para desarrollar una aplicacin como la requerida, fueron necesarias
muchas horas de investigacin y de autoaprendizaje mediante cursos y tutoriales. stas no
se incluyen en la realizacin del proyecto, sino que forman parte del inters propio del autor
por este campo.

Durante este proceso, fue de gran ayuda la colaboracin de Llus Solano, dando soporte en
todos los temas referentes a la programacin, adems de guiar hacia buen puerto al autor
con tal de conseguir los objetivos propuestos, dada la dificultad que supona crear un
programa desde cero para un principiante en esta materia.
Pg. 16 Memoria

4. Adsorcin

4.1. Definicin

La adsorcin es definida como un proceso mediante el cual se extrae materia de una fase y
se concentra sobre la superficie de otra (generalmente slida). Este fenmeno puede
producirse en las siguientes: parejas de fases, lquido-slido, liquido-lquido, gas-slido y gas-
lquido.

En la prctica, se entiende por adsorcin la eliminacin de uno o ms componentes presentes


en una fase lquida o gas, mediante un slido. Cualquier especie que se concentre en la
superficie o que se adsorba se denomina adsorbato, y el material sobre el cual se adhiere, se
adsorbe, se llama adsorbente. El proceso inverso a la adsorcin se conoce como desorcin.

La atraccin que provoca que las molculas en disolucin queden retenidas sobre la superficie
de un slido puede ser de naturaleza muy diversa (qumica, fsica y/o elctrica) y tiene lugar
en la interfase slido-disolucin. Los principales factores que afectan a la adsorcin son el
tamao, la forma y la polaridad tanto de las molculas del fluido implicado como de las
partculas slidas.

La adsorcin no debe confundirse con la absorcin, ya que la caracterstica que las distingue
es que en un proceso de adsocin el fluido no se incorpora al volumen del material, sino que
es retenido en su superficie. En cambio, en la absorcin, las molculas o tomos de una fase
penetran casi uniformemente en los de otra fase constituyendo una solucin. Factores a tener
en cuenta en la absorcin son la densidad, viscosidad y tensin superficial por parte del
lquido, y la presencia de porosidad, espacios interlaminares y/o canales estructurales en el
slido.

Adems de estos fenmenos comnmente conocidos como procesos de sorcin (adsorcin,


absorcin y desorcin), cabe mencionar tambin el fenmeno de intercambio inico, que
supone un intercambio de una sustancia o ion por otra sobre la superficie del slido. A
diferencia de lo que sucede con los procesos de adsorcin, donde las ecuaciones que la
describen consideran solamente una especie qumica, de manera que la distribucin del
soluto entre la disolucin y el slido responde a una relacin simple, lineal o no; en las
ecuaciones para el intercambio inico, se tienen en cuenta todos los iones que compiten por
los lugares de intercambio [1].

En la Fig. 4.1 se puede observar un esquema grfico de stos fenmenos:


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 17

Fig. 4.1. Esquema grfico de los procesos de adsorcin, absorcin e intercambio inico

4.2. Tipos de Adsorcin

Una vez definido el concepto de adsorcin, cabe distinguir entre tres tipos existentes de
adsorcin segn la naturaleza de la atraccin que se produzca en la interaccin entre el
adsorbato y el adsorbente:

Adsorcin elctrica o por intercambio: es un proceso mediante el cual los iones de


una sustancia se concentran en una superficie como resultado de la atraccin
electrosttica en los lugares cargados de la dicha. Suponiendo dos adsorbatos inicos
posibles, a igualdad de otros factores, la carga del ion es el factor determinante en la
adsorcin por intercambio. Para iones de igual carga, el tamao molecular (o radio de
solvatacin) determina el orden de preferencia para la adsorcin.

Adsorcin fsica o fisisorcin: se trata del proceso de adsorcin que tiene lugar
debido a las fuerzas de Van der Waals. En este caso, la molcula adsorbida no est
fija en un lugar especfico de la superficie, sino ms bien est libre de trasladarse a
travs de la interfase. En general, este tipo de adsorcin predomina a temperaturas
bajas. La adsorcin de la mayora de las sustancias orgnicas en el agua con carbn
activado se consideran de naturaleza fsica.

Adsorcin qumica o quimisorcin: tambin conocida como adsorcin activa, sta


se da cuando el adsorbato sufre una interaccin qumica con el adsorbente. Las
energas de adsorcin en este caso son elevadas, del orden de las de un enlace
qumico, debido a que el adsorbato forma unos enlaces fuertes localizados en los
centros activos del adsorbente. Esta adsorcin suele estar favorecida a elevadas
temperaturas.
Pg. 18 Memoria

Aunque se presenten de forma separada, la mayor parte de los fenmenos de adsorcin que
tienen lugar son combinaciones de las tres formas presentadas; por lo que a menudo, es difcil
distinguir entre la adsorcin qumica y fsica [2].

4.3. Estudio de la adsorcin

Cuando se hacen estudios acerca de los fenmenos de adsorcin, es necesario prestar


especial atencin a las propiedades del adsorbente, debido a que su funcin principal es la
de atrapar los tomos, iones o molculas de soluto presentes en una disolucin. Por ello, es
de gran inters conocer los aspectos ms importantes que debe cumplir un buen adsorbente
para su uso en los ensayos de adsorcin:

- El adsorbente deber tener una gran capacidad de retencin.

- Adems de poseer una velocidad rpida de adsorcin.

- Tener una gran superficie especfica (porosidad) o volumen de microporos.

- Estructura porosa para que las molculas del adsorbato se transporten fcilmente
hacia los sitios activos de la superficie.

- Poseer una buena capacidad de regeneracin, para permitir su reutilizacin y hacer


los ensayos de adsorcin ms efectivos y econmicos.

Los estudios de adsorcin se llevan a cabo, generalmente, mediante dos tipos de


experimentos distintos: los ensayos en batch (en discontinuo) y en columna (continuo).

En los experimentos denominados en batch, los estudios se centran en la medida


de la eficacia de adsorcin para la eliminacin de sustancias especficas, as como de
la capacidad mxima de adsorcin por parte del adsorbente.

Para ello, se coloca una cantidad conocida del mismo en contacto con una disolucin
con una concentracin determinada de soluto, y se pone en agitacin para mantener
el adsorbato en suspensin. Pasado un tiempo, durante el cual se supone que se
alcanza el equilibrio, se determina la concentracin de iones de inters contenido en
el lquido sobrenadante, considerando que la diferencia entre sta y la concentracin
inicial es la cantidad de soluto adsorbida sobre el suelo.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 19

En los ensayos en columna de lecho fijo, se hace pasar la disolucin con los iones
o tomos de inters (fase mvil), por un conducto que contiene el adsorbente (fase
slida). La principal diferencia con los experimentos en batch, es debida a que en los
estudios de lecho fijo no se alcanzan condiciones de equilibrio, ya que continuamente
ingresa a la columna una disolucin de alimentacin.

En el mbito industrial generalmente se trabaja bajo condiciones continuas, por lo que los
estudios en columna suelen proporcionar una aplicacin ms prctica, en procesos como el
tratamiento de aguas residuales o la adsorcin de gases.

4.4. Cinticas de adsorcin

Predecir la velocidad a la que la adsorcin se lleva a cabo para un sistema dado, es


probablemente el factor ms importante para el diseo del mismo, junto con el tiempo de
residencia del adsorbato y las dimensiones del reactor. Adems, el estudio de la cintica de
adsorcin aporta ideas acerca de los mecanismos por los que se rigen las reacciones.

Con el fin de estudiar los mecanismos de adsorcin, se han presentado numerosos modelos
cinticos: algunos de ellos describen el orden de reaccin de los sistemas de adsorcin
basndose en la concentracin de la disolucin; otros, en cambio, se basan en la capacidad
del adsorbente.

En este proyecto, se centra la atencin en las ecuaciones cinticas de adsorcin basadas en


la capacidad del slido (adsorbente) para un sistema de lquidos y slidos. A continuacin, se
describen los modelos existentes ms representativos que describen este fenmeno. Estos
son el modelo de pseudo-primer orden, de pseudo-segundo orden, el modelo de Elovich, y el
de difusin intraparticular [3].

Todos los modelos presentados a continuacin pretenden ser incorporados al programa


desarrollado en este trabajo, pero tratndose de una primera versin tan slo se
implementaran algunos de ellos.

4.4.1. Modelo cintico de pseudo primer orden

El modelo cintico de pseudo primer orden, propuesto por Lagergren, ha sido ampliamente
utilizado para describir la cintica de adsorcin [4]. ste viene dado por la ecuacin:


= 1 ( ) (Ec. 4.1)

Pg. 20 Memoria

Donde:

k1 : constante de velocidad de adsorcin de Lagergen [ h-1 ].

qt : cantidad de soluto adsorbida a un tiempo t [ mol/m2 ]

qe : cantidad de soluto adsorbida en el equilibrio [ mol/m2 ]

Integrando la ecuacin anterior con respecto a las condiciones de contorno:

=0 =0
= =

Resulta:

1
log( ) = log( ) (Ec. 4.2)
2,303

4.4.2. Modelo cintico de pseudo segundo orden

El modelo de pseudo segundo orden fue desarrollado por Ho y McKay, y publicado en 1999.
En este caso, la ecuacin basada en el equilibrio de adsorcin se expresa como:

Las variables de la ecuacin hacen referencia a:


= 2 ( )2 (Ec. 4.3)

k2 : constante de velocidad de pseudo segundo orden [ m2mol-1h-1].

qt : cantidad de soluto adsorbido por unidad de superficie de adsorbente a un tiempo


t [ mol adsorbato / m2 adsorbente ]

qe : cantidad de soluto adsorbida por unidad de superficie de adsorbente en el


equilibrio [ mol adsorbato / m2 adsorbente ]

t : tiempo de contacto [ h ]
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 21

Donde, integrando la ecuacin anterior y manteniendo las mismas condiciones de contorno


que las descritas para el modelo de pseudo primer orden, se obtiene:

1 1
= 2 + (Ec. 4.4)
2

La constante de velocidad de este modelo (k2) es determinada experimentalmente de la


pendiente y de la ordenada en el origen de la grfica t/qt versus t, donde tambin es posible
obtener el valor de concentracin en el equilibrio (qe) [5].

4.4.3. Modelo cintico de Elovich

El modelo de Elovich es aplicado principalmente en procesos de quimisorcin, para


determinar la cintica de adsorcin de fases lquidas o gas sobre superficies slidas [6]. La
ecuacin que lo describe viene definida por:

Donde:


= (Ec. 4.5)

: velocidad inicial de adsorcin [ mol g-1 h-1 ].

: esta constante est relacionada con la superficie cubierta y la energa de activacin


por quimisorcin [ m2 / mol ].

Integrando la ecuacin, y aplicando las mismas condiciones de contorno descritas para los
dems modelos, se obtiene una ecuacin linealizada que debe ajustarse a los datos
experimentales:

1 1
= ln( ) + ln() (Ec. 4.6)
Pg. 22 Memoria

4.4.4. Modelo de difusin intraparticular

En este modelo desarrollado por Weber y Morris, est basada en el transporte del
adsorbato a travs de la estructura interna de los poros del adsorbente y de la propia
difusin en el slido, y ha sido utilizada para determinar si la difusin intraparticular es
la etapa controlante en la dinmica de los procesos de adsorcin [7].

La ecuacin que describe este mecanismo viene dada por:

= + (Ec. 4.7)

Donde k hace referencia a la velocidad de difusin intraparticular [ mol g-1 h-1/2 ].

4.5. Isotermas de adsorcin

Las isotermas de adsorcin describen el mecanismo de la interaccin entre el adsorbato y el


adsorbente, y proveen informacin acerca del equilibrio del proceso de adsorcin, as como
de la capacidad de retencin del adsorbente de estudio.

El objeto de estudio de las isotermas se centra en analizar la relacin entre la cantidad de


adsorbato adsorbida por un adsorbente (q) y la concentracin en el equilibrio (C) o presin a
una temperatura constante de ese adsorbato [8].

Entre los modelos desarrollados para describir la relacin entre la cantidad adsorbida y la
concentracin o presin en el equilibrio destacan las isotermas de Langmuir, Freundlich y
Temkin [9].

4.5.1. Isoterma de Langmuir

La isoterma de adsorcin de Langmuir es un modelo terico utilizado ampliamente en los


estudios de adsorcin en batch, puesto que permite obtener informacin sobre el mecanismo
de adsorcin. En este modelo, se asume que la adsorcin se produce en monocapa, y tiene
lugar en sitios especficos de la superficie del adsorbente de manera homognea. Por tanto,
considera que todos los sitios son idnticos y tan slo puede ser adsorbida una molcula por
sitio [10].
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 23

El modelo de isoterma de Langmuir viene representado por la siguiente ecuacin:


= (Ec. 4.8)
1 +

Donde:

qe : concentracin de soluto adsorbido por unidad de superficie de adsorbente en el


equilibrio.

Ce : concentracin de adsorbato en el equilibrio

kL : constante de Langmuir, que relaciona la afinidad del soluto con el adsorbente.

Qmax : constante relacionada con la capacidad mxima de adsorcin.

Y su forma lineal se expresa de la siguiente manera:

1
= + (Ec. 4.9)

4.5.2. Isoterma de Freundlich

La isoterma de Freundlich es un modelo emprico, el cual supone que la superficie del


adsorbente es heterognea y que se produce un crecimiento en multicapas. Tambin se
considera que los sitios de adsorcin tienen distintas afinidades; en primer lugar, se ocupan
los sitios de adsorcin por enlaces ms fuertes, y a medida que los sitios activos incrementan
su ocupacin, las fuerzas de enlace decrecen [11].

La ecuacin del modelo de Freundlich se expresa de la siguiente manera:

1/
= (Ec. 4.10)

Dnde:

kF : constante de Freundlich, relacionada con la capacidad de adsorcin

n : parmetro para caracterizar la intensidad de adsorcin.


Pg. 24 Memoria

Su forma linealizada corresponde a la equacin:

1
log( ) = log( ) + log( ) (Ec. 4.11)

4.5.3. Isoterma de Temkin

La isoterma de Temkin considera que la entalpa molar de adsorcin disminuye linealmente a


medida que aumenta el grado de recubrimiento debido a las interacciones adsorbato-
adsorbente. Adems supone que la adsorcin posee una distribucin uniforme de las
energas de unin, hasta un cierto valor de energa de enlace mximo [12]. La isoterma de
Temkin representa viene expresada por la siguiente ecuacin:

= 1 ln(2 ) (Ec. 4.12)

Donde:

c1 : constante de unin de equilibrio correspondiente a la mxima energa de enlace [Lmg-


1
].c2 : constante relacionada con el calor de adsorcin.

Representando grficamente qe versus ln(Ce), es posible obtener las constantes c1 de la


pendiente, y c2 de la ordenada en el origen.

La linealizacin de la ecuacin de la isoterma de Temkin da lugar a la siguiente expresin:

= 1 ln(2 ) + 1 ln( ) (Ec. 4.13)


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 25

5. Introduccin a la programacin con Python

5.1. Qu es Python?

Python es un lenguaje de programacin que fue creado por un cientfico holands llamado
Guido van Rossum a principios de los aos 90.

Se trata de un lenguaje interpretado, interactivo y orientado a objetos que ofrece una gran
cantidad de estructuras de datos de alto nivel por medio de un tipado dinmico y fuerte,
adems de ser multiparadigma y multiplataforma [13].

Python es un lenguaje dinmicamente tipado. Es decir, en l no es necesario declarar el tipo


de dato que va a contener una determinada variable, sino que dicho tipo de dato ser
determinado en el momento (o tiempo) de ejecucin segn el valor que se le asigne a la
variable. Ademas, el tipo de la variable puede cambiar si se le asigna un valor de otro tipo.

Por otro lado, Python es un lenguaje fuertemente tipado. Por lo tanto, si se posee una
variable de tipo entero, no podr tratarla como una cadena de texto a menos que se realice
una conversin previamente de manera explcita.

Adems, Python se trata de un lenguaje de programacin multiparadigma, ya que soporta


la orientacin a objetos, la programacin imperativa, y, en menor medida, la programacin
funcional.

Tambin se trata de un lenguaje de programacin multiplataforma, el cul puede usarse en


distintas plataformas como son Microsoft Windows, GNU/Linux, Unix, MacOs, Solaris

5.2. Programacin Orientada a Objetos (POO)

Como se ha mencionado en apartados anteriores, Python es un lenguaje de programacin


orientado a objetos (POO). sta tiene sus orgenes en la dcada de 1960, pero es a partir de
los 80 cuando se convierte en el principal paradigma de la programacin de un nuevo
software, hasta da de hoy. En el mbito de la programacin, un paradigma es conocido como
una forma especfica de hacer las cosas que facilita la solucin a unos problemas
determinados [14].

No obstante, anteriormente ya existan otros paradigmas de la programacin como la


programacin imperativa y la programacin funcional.

La POO surgi para que fuera posible representar elementos de la vida real en un programa
de una forma entendible, y para facilitar el mantenimiento y reutilizacin de los programas.
Pg. 26 Memoria

5.3. Clases y objetos

Un programa Orientado a Objetos se basa en una agrupacin de objetos de distintas clases


que interactan entre si y que, en conjunto, consiguen que un programa cumpla con su
propsito.

Para comenzar, es necesario comprender que todo lo que nos rodea se puede considerar un
objeto, incluso nosotros mismos nos podemos considerar objetos, cada uno distinto a los
dems. Por lo tanto, un objeto es algo que se visualiza, es utilizado y que juega un papel o un
rol. Un objeto no tiene que ser necesariamente algo concreto o tangible, sino que puede ser
totalmente abstracto, y tambin describir un proceso.

En programacin, un objeto es un elemento de programa como pueden serlo


variables o funciones. Las variables almacenan datos, y las funciones ejecutan
tareas. En cambio, un objeto puede almacenar datos y ejecutar tareas.
De ahora en adelante, a las variables se les llamar atributos del objeto; y a las
funciones, mtodos.

Dependiendo del problema a tratar, diferentes aspectos de un objeto son


significativos. As, los atributos describen propiedades y caractersticas de un
objeto. Pero ste tambin posee mtodos que actuarn sobre estos atributos o
datos.

El concepto de clase, define como representar de forma abstracta a un objeto, es


decir, es la plantilla sobre la cual se crea ese objeto.

Para entender la filosofa en la que se basa la POO, es mejor hacerlo a travs de un simple
ejemplo, con tal de afianzar los conceptos anteriormente expuestos y que ms adelante
aparecern durante el desarrollo del programa creado en este proyecto:

Una clase llamada coche podra definir que un coche es todo aquel objeto que tiene las
siguientes caractersticas: marca, modelo, ao, color, nmero de puertas, etc. stos podran
ser algunos de los atributos que podra contener la clase coche.

De la misma manera, la clase coche podra definir tambin que todo coche tiene
comportamientos en comn como son arrancar, acelerar o frenar. Estas acciones que puede
realizar cualquier coche, conformaran los mtodos del coche.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 27

Una vez definidos todos los atributos y mtodos de la clase coche, y asignndoles un valor
especfico a cada uno de ellos, el resultado sera un objeto coche en concreto, con todas sus
caractersticas definidas [15].

5.4. Por qu usar Python?

En este apartado, se tratarn de exponer algunas de las principales ventajas que ofrece la
programacin en Python frente a otros lenguajes de programacin:

En la creacin de un nuevo programa, si ste no utiliza bibliotecas especficas para


una determinada plataforma (Windows, Linux, MacOs, etc), el programa en cuestin
podr funcionar en todos los dems sistemas sin la necesidad de realizar grandes
cambios.

Algunos de los lenguajes de programacin fueron creados para trabajar en un


mbito especfico, como por ejemplo el lenguaje PHP, que fue ideado para
desarrollar aplicaciones Web. Sin embargo, ste no es el caso de Python, ya que
fue diseado sin ningn propsito en concreto, y este hecho hace de l un lenguaje
verstil y multipropsito.

Adems, una de las principales caractersticas de Python es que es un lenguaje de


programacin que se ejecuta utilizando un programa intermedio llamado intrprete,
en lugar de compilar el cdigo a lenguaje de mquina. Esto provee a Python de una
sintaxis que favorece un cdigo legible, y que es mucho ms fcil de comprender
para el usuario.

Python es open source, es decir que cualquiera puede contribuir a su desarrollo y


divulgacin. Adems, no es necesario pagar ninguna licencia para distribuir el
software desarrollado con ste lenguaje. Hasta su intrprete es distribuido de forma
gratuita para las diferentes plataformas existentes.

En resumen, Python es considerado por muchos usuarios un lenguaje muy productivo,


adems de ser potente y flexible. Por otro lado, su sintaxis clara y concisa hace que no sea
necesario dedicar tiempo a su compilacin, puesto que es interpretado.
Pg. 28 Memoria

5.5. Aplicaciones de Python en la actualidad

Actualmente, el lenguaje de programacin Python es uno de los ms empleados para el


desarrollo de software. En los ltimos aos su utilizacin ha ido creciendo constantemente
entre los usuarios por el hecho de ser un lenguaje de programacin de alto nivel, interpretado,
y con una gran variedad de fines y propsitos.

Este lenguaje abre un amplio abanico de posibilidades, permitiendo desarrollar software para
comunicaciones de red, aplicaciones de escritorio con interfaz grfica de usuario (GUI), crear
juegos, y por supuesto, para aplicaciones web y para smartphones. Pero no slo se utiliza en
sectores tecnolgicos, sino que tambin es empleado en otros mbitos como el financiero, el
cientfico, o en la educacin.

Numerosas empresas mundialmente conocidas hacen un uso intensivo de Python para


desarrollar sus productos y servicios. Entre ellas destacan empresas y organizaciones del
calibre de Google, la NASA, Walt Disney, IBM, Red Hat, Industrial Light&Magic y Nokia, ste
ltimo lo emplea en su conocido sistema operativo Symbian.

Esto demuestra que este lenguaje puede ser utilizado en distintos tipos de sectores con
independencia de su actividad empresarial [16].
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 29

6. Desarrollo del programa

6.1. Necesidad de creacin del programa

La motivacin que surgi para enfocar el desarrollo de este trabajo en torno al mundo de la
programacin, fue la necesidad de crear un programa que procesara y graficara los resultados
experimentales obtenidos en ensayos de adsorcin.

Para ello, los datos recogidos experimentalmente deberan ser procesados mediante clculos,
siguiendo los distintos modelos expuestos anteriormente que describen los fenmenos de
adsorcin, y poder as obtener grficos de los resultados de manera inmediata, ahorrando
tiempo en el anlisis de los mismos.

Adems, el hecho de que ste fuera un programa creado desde cero, supona que debera
poseer una estructura lgica y comprensible, para que en un futuro pudiera ser ampliado y
actualizado.

6.2. Estructura del programa

En primer lugar, fue necesario definir una primera estructura mediante diagramas, con tal de
definir las principales funcionalidades contenidas en la aplicacin. En ella, el usuario debera
introducir datos experimentales concretos recogidos en ensayos de adsorcin, y el programa
debera procesarlos, realizar clculos sobre los mismos y ofrecer unos resultados, en este
caso se determin que deberan presentarse de forma grfica:

Datos Clculos Resultados

Introducidos por el usuario Modelos cinticos Representados grficamente


Isotermas de adsorcin

Fig. 6.1. Diagrama de estructura bsica del programa.

Una vez planteadas las funcionalidades del programa, se procedi a continuar con el diseo
de la aplicacin. Para que el usuario pudiera interactuar con l sin necesidad de poseer ningn
tipo de experiencia previa en programacin, se decidi que habra que crear una interfaz
grfica de usuario (GUI, por sus siglas en ingls: Graphical User Interface). As, mediante un
simple formulario, el usuario podr introducir fcilmente los datos a analizar, y seleccionar el
tipo de modelo deseado a calcular.
Pg. 30 Memoria

Fig. 6.2. Ilustracin de la interaccin usuario-GUI en el programa.

Al tratarse de una primera versin del programa, y debido a la gran cantidad de modelos
existentes para estudiar los fenmenos de adsorcin, se decidi acotar el nmero de modelos
disponibles, seleccionando entre ellos los ms representativos segn el tipo de estudio. Los
modelos elegidos se dividieron en dos grandes bloques:

Modelos cinticos: el modelo cintico de pseudo-segundo orden y el modelo de


Elovich fueron los seleccionados.
Isotermas de adsorcin: En este caso, se escogi la isoterma de Langmuir y la
isoterma de Freundlich.

Debido a que los dos grupos de estudio pertenecen a distintos tipos de ensayos y requieren
distintos datos de entrada, se decidi que el cdigo del programa tambin tratara a los dos
bloques de estudio por separado. Es decir, que habra un cdigo independiente para los
modelos cinticos, y otro para las isotermas de adsorcin. De esta manera, se evitaran
posibles conflictos en la futura compilacin del programa, y ste estara dotado de una
estructura interna ms fcilmente comprensible y ampliable.

Modelo de Pseudo
segundo orden

Cinticas de
Algoritmo

Modelo de Elovich
adsorcin

Comparacin Cinticas

Isoterma de Langmuir

Isotermas de Isoterma de
adsorcin Freundlich

Comparacin
Isotermas

Fig. 6.3. Estructura interna del algoritmo referente a los modelos implementados.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 31

Los datos recogidos durante los ensayos de adsorcin deberan ser procesados de la
siguiente manera: los datos de entrada seran linealizados siguiendo las ecuaciones del
modelo en cuestin, obteniendo las constantes respectivas a cada modelo, as como su
coeficiente de correlacin (R2). Posteriormente, las constantes obtenidas por ajuste lineal,
seran empleadas para el clculo de los distintos modelos, y se compararan con datos
tericos.

Obtencin de Clculo del Clculo del


Datos de Linealizacin
las constantes modelo modelo
entrada de los datos
del modelo experimental terico

Fig. 6.4. Diagrama de procesos de clculo del programa.

Finalmente, los resultados obtenidos seran presentados al usuario mediante grficos. Para
cada modelo seleccionado, se representaran los datos linealizados en un grfico, y el modelo
experimental y terico en otro. Adems, tambin cabra la posibilidad de representar los
diferentes modelos disponibles en un mismo grfico comparativo, para cada grupo de estudio
mencionado anteriormente.

En resumen, una vez concretadas y delimitadas las funcionalidades de esta primera versin
de un programa para el anlisis de estudios experimentales de adsorcin, la estructura inicial
fue ampliada y definida, tal como se muestra a continuacin:

Fig. 6.5. Diagrama de estructura definida del programa.

6.3. Herramientas y paquetes usados

Para llevar a cabo las acciones que la aplicacin deber realizar, fueron necesarias un
conjunto de herramientas o bibliotecas especficas para Python, puesto que stas no vienen
incluidas en su versin estndar, y su ausencia dificultara en gran medida la elaboracin de
la aplicacin objeto de este proyecto.
Pg. 32 Memoria

Por este motivo, se exponen a continuacin los paquetes utilizados durante el desarrollo de
la aplicacin, con la descripcin de los mismos y su funcin dentro del programa. Es necesario
mencionar que todos ellos pueden ser obtenidos de manera gratuita.

6.3.1. Numpy y Scipy

Scipy es una librera de herramientas numricas, cientficas y de ingeniera para Python que
es distribuida de forma libre. Este mdulo confiere al lenguaje general de Python capacidades
de clculo numrico de gran capacidad, permitiendo as la optimizacin de funciones,
integracin, resolucin de ecuaciones diferenciales ordinarias, estadstica descriptiva y otros
muchos aspectos. Scipy adems incluye en su ncleo a Numpy, un mdulo utilizado para el
manejo de matrices y grandes conjuntos de valores numricos.

Si desea ampliar la informacin, podr encontrar la documentacin completa de Scipy y


Numpy en http://docs.scipy.org/ .

6.3.2. Matplotlib

Matplotlib es probablemente el mdulo ms usado para la representacin de grficos y figuras


bidimensionales a partir de datos contenidos en matrices y arrays. A travs de esta biblioteca,
es posible generar grficos, histogramas, grficos de barras, diagramas de dispersin, etc,
con tan slo unas pocas lneas de cdigo. Adems, contiene una gran variedad de
posibilidades de edicin y personalizacin de grficos, como son la inclusin de ttulos,
frmulas, anotaciones y leyendas, entre otros.

Dirigindose a su pgina web http://matplotlib.org/ encontrar toda la informacin relativa a


esta biblioteca, y donde dispondr de numerosos tutoriales, ejemplos de grficos y plantillas
con su cdigo de programacin correspondiente.

6.3.3. PyQt5

PyQt es una adaptacin de la biblioteca grfica Qt para el lenguaje de programacin Python.


Qt utiliza de forma nativa el lenguaje de programacin C++ pero puede ser empleado en otros
lenguajes de programacin a travs de adaptaciones o bindings. Esta biblioteca
multiplataforma es ampliamente usada para el desarrollo de aplicaciones con interfaz grfica
de usuario, pero tambin en el manejo de XML, las comunicaciones de red, bases de datos
SQL, navegacin web y otras tecnologas informticas.

Actualmente existen dos versiones de PyQt que son: PyQt4 y PyQt5. Sus desarrolladores
recomiendan el uso de PyQt5 puesto que se trata de la versin ms reciente, y adems, se
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 33

ha dejado de dar soporte al desarrollo de PyQt4. Por este motivo, en el desarrollo del
programa se utilizar la ltima versin de PyQt5 para Windows.

Si lo desea, puede descargar la versin ms reciente en la pgina web de sus desarrolladores


https://www.riverbankcomputing.com/software/pyqt/download5 , donde tambin encontrar la
documentacin de referencia de esta biblioteca.

6.3.4. cx_Freeze

Cx_Freeze es un conjunto de scripts y mdulos para la congelacin de los cdigos de


programacin de Python en ejecutables. Esta herramienta se utiliza para recopilar todos los
archivos de cdigo que forman el programa y crea un archivo ejecutable. Su funcionamiento
es muy parecido a otras bibliotecas como py2exe y pyInstaller, pero a diferencia de estas dos
herramientas, cx_Freeze es multiplataforma. Adems tambin es compatible con las
versiones de Python 2.6 o superior, incluyendo Python 3.

Para ms informacin acerca de la herramienta cx_Freeze consulte su pgina web http://cx-


freeze.sourceforge.net/ .

6.3.5. Distribucin de herramientas

Una vez definidas las bibliotecas de soporte que se utilizarn, en la siguiente figura se muestra
un esquema con su papel dentro del programa:

Fig. 6.6. Diagrama de bibliotecas utilizadas en el programa.

Teniendo clara la idea de funcionamiento del programa, se prosigui con el desarrollo de


cada uno de los bloques que componen el algoritmo de la aplicacin.
Pg. 34 Memoria

6.4. Procesamiento de los datos

En este bloque se determinaron los clculos que deberan ser realizados por parte del
programa, una vez introducidos los valores experimentales de estudio, con el fin de obtener
los resultados propuestos.

6.4.1. Datos de entrada

Primeramente, fue necesario concretar qu datos seran requeridos por el programa para que
ste pudiera cumplir con su funcin. Se estableci que los datos de entrada se introduciran
separadamente, en funcin de si los ensayos realizados hacan referencia a estudios de la
cintica de adsorcin, o bien, a las isotermas de adsorcin. Los datos de entrada requeridos
al usuario en el programa son los que siguen a continuacin, distinguindolos en funcin del
objeto de estudio:

Cinticas de adsorcin Isotermas de adsorcin

Ttulo del grfico Ttulo del grfico

Volumen de disolucin en [ L ] Volumen de disolucin en [ L ]

Peso del slido adsorbente en [ g ] Peso del slido adsorbente en [ g ]

rea superficial del adsorbente en [ m2/g ] rea superficial del adsorbente en [ m2/g ]

Tabla de valores experimentales: Tabla de valores experimentales:

Concentracin de Concentracin inicial Concentracin en el


Tiempo en [ h ]
slido [ mol/dm3 ] [ mol/dm3 ] equilibrio [ mol/dm3 ]

0*

*Es importante que el primer valor de concentracin de


slido introducido en la tabla sea a tiempo 0h, es decir,
la concentracin inicial.

Seleccin del modelo a analizar: Seleccin del modelo a analizar:


Modelo de pseudo segundo orden Isoterma de Langmuir
Modelo de Elovich Isoterma de Freundlich
Comparacin de modelos Comparacin de isotermas

Tabla. 6.1. Tabla de datos de entrada definidos para cada tipo de estudio.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 35

Con el fin de que el programa pueda interpretar dichos datos, stos debern ser introducidos
por el usuario de una manera determinada, teniendo en cuenta para cada uno de ellos el
formato adecuado para poder ser procesados. El tipo de datos y su mtodo de introduccin
se determinan a continuacin:

Nombre de la variable Tipo de dato

Ttulo del estudio String Cadena de caracteres


( Ejemplo: Goetita/ Hematita )

Float Nmero decimal


Volumen de disolucin en [ L ]
( Ejemplo: 1.00 / 1.00E+00 )

Peso del slido adsorbente en [ g ] Float Nmero decimal

rea superficial del adsorbente en [ m2/g ] Float Nmero decimal

Matriz ( i x j ) de valores Float , donde:


Tabla de valores experimentales:
i = nmero de filas
j = nmero de columnas (=2)
X Y

Los valores se introducen conjuntamente para


cada fila i, usando como separador entre los
valores de cada columna, el espacio .

Ejemplo: i = 1 ( 1.00 2.00 )



i = 2 ( 1.00E+0 2.00E-00 )

Seleccin del modelo a analizar: Integer o int Nmero entero

A cada modelo se le asignar una


A = 1 valor de la variable correspondiente a
correspondencia con un nmero entero, a fin
los modelos de cintica de adsorcin.
de poder identificarlo.
A = 2 variable correspondiente a los modelos
Ejemplo:
de isotermas de adsorcin
Modelo de Elovich A=1
numero_modelo variable numrica que hace numero_modelo = 2
referencia a un modelo en concreto, en funcin Isoterma de Langmuir A = 2
del valor de A. numero_modelo = 1

Tabla 6.2. Tabla detallada del tipo de datos definidos para cada variable de entrada.
Pg. 36 Memoria

Cabe remarcar una vez ms que, aunque gran parte de las variables del programa sean las
mismas para cada uno de los dos tipos de estudio presentados (cinticos y de isotermas),
stas se tratarn por separado, tal y como se estableci desde el principio, y se considerarn
como variables independientes.

6.4.2. Transformacin de los datos

Una vez recopilados los datos, el programa realizar un conjunto de transformaciones y


adaptaciones de los mismos en funcin de las ecuaciones de cada modelo (cintico o de
isotermas). El proceso para todos ellos es muy parecido, y sigue este orden:

Para cuantificar el proceso de adsorcin, inicialmente se halla el parmetro q, que relaciona


la cantidad de soluto adsorbido por unidad de adsorbente, teniendo en cuenta el rea
superficial del adsorbente:

( , ) 1
, = [ ] (Ec. 6.1)
2

Este parmetro es calculado para cada valor de concentracin introducido en la tabla de


entrada. En caso de que el usuario desconozca el valor del rea superficial (Asup), ste tomar

por valor 1 y el parmetro q ser presentado en las unidades [
]. A continuacin, se
presentan las transformaciones realizadas para cada tipo de estudio:

Parmetro qt [mol/m2]
Tiempo [ h ] Concentracin [mol/dm3] Tiempo [ h ]
[mol/g]

Tabla. 6.3. Transformacin de tabla de entrada para las cinticas de adsorcin.

Concentracin Concentracin Concentracin Parmetro qe


inicial [mol/dm3] equilibrio [mol/dm3] equilibrio [mol/dm3] [mol/m2] [mol/g]

Tabla. 6.4. Transformacin de tabla de entrada para las isotermas de adsorcin.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 37

6.4.3. Linealizacin de las ecuaciones y obtencin de los parmetros

Una vez transformados los valores de la tabla introducida por el usuario, se emplearn los
valores de q obtenidos para realizar una linealizacin de los datos siguiendo las ecuaciones
del modelo en cuestin. Con los resultados obtenidos, ser posible obtener la pendiente de la
recta resultante, su coordenada en el origen y el factor de correlacin entre los datos
introducidos. Estos parmetros permitirn calcular las constantes respectivas de cada
modelo, as como evaluar la validez del modelo seleccionado con los datos de estudio.

Vase a continuacin, un esquema del proceso, poniendo como ejemplo el utilizado para el
modelo cintico de pseudo segundo orden:

Procedimiento: Modelo cintico de Pseudo segundo orden

Tabla de datos transformados


(con los valores de q correspondientes,
previamente calculados)

Creacin de una nueva tabla


( con las unidades adecuadas para la
linealizacin de los datos)

Clculo de la ecuacion del modelo lineal

Obtencin de los parmetros del modelo y


anlisis estadstico

Fig. 6.7. Diagrama del procedimiento interno de clculo del programa. Ejemplo de
clculo para el caso del modelo cintico de pseudo segundo orden.
Pg. 38 Memoria

6.4.4. Obtencin del modelo terico

Finalmente, y una vez obtenidas las constantes relativas a cada modelo, stas se utilizan en
el clculo de la ecuacin terica que describe dicho modelo. En este caso, los datos de salida
del programa se presentan en forma de tabla con los siguientes valores prefijados en funcin
del tipo de estudio de adsorcin:

En los estudios de la cintica de adsorcin, la tabla resultante tiene las siguientes


unidades:


[] [ 2
][
]

Tabla. 6.5. Tabla de resultados obtenidos para el caso de cinticas de adsorcin.

En cuanto a las isotermas de adsorcin, la tabla de salida contiene las variables que
siguen a continuacin:


[ 3 ] [ 2
][
]

Tabla. 6.6 .Tabla de resultados obtenidos para el caso de isotermas de adsorcin.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 39

6.5. Representacin grfica de los resultados

Una vez obtenidos los resultados en formato numrico, adems de calcular las distintas
constantes de cada modelo, y los valores en forma de tablas, se procedera con la graficacin
de los mismos. En este caso se usara la biblioteca de Python Matplotlib, ya que ofrece la
posibilidad de representar grficos en 2D, y cuenta con numerosas posibilidades de edicin
de los mismos.

Para cada modelo seleccionado, con independencia del tipo de estudio realizado (cintico o
de isotermas), se representaran dos grficos diferentes en la misma pantalla:

El primero, situado a la izquierda, contendra la representacin lineal del modelo, y


sera obtenido a partir del ajuste de los datos experimentales con la ecuacin del
modelo linealizada. En l, deberan aparecer conjuntamente la ecuacin de la recta
y el coeficiente de correlacin R2 obtenidos. Adems, tambin seran visibles las
constantes obtenidas para el modelo en cuestin, as como su ecuacin en forma
linealizada.

A la derecha, se observara otro grfico en el que se compararan las curvas


obtenidas con datos experimentales frente al modelo terico, dadas las constantes
obtenidas en el caso concreto de estudio.

La apariencia del grfico final, incluyendo ambas representaciones en la misma ventana, es


la que se muestra en la imagen siguiente (Fig 6.8.), poniendo por ejemplo un caso de estudio
de la cintica de adsorcin:

Fig. 6.8. Formato y apariencia de los grficos obtenidos a travs del programa,
poniendo como ejemplo el modelo cintico de pseudo segundo orden.
Pg. 40 Memoria

Adems, tanto en los estudios de cintica como en los referentes a las isotermas de adsorcin,
ser posible visualizar a parte otro grfico, en el que se representarn todos los modelos
disponibles comparndolos con los datos experimentales. Este ltimo grfico pretende ayudar
al usuario a determinar a qu modelo se ajustan mejor los datos recopilados durante los
ensayos.

Fig. 6.9. Aspecto del grfico comparativo entre modelos obtenido con el programa.

6.6. Creacin de la Interfaz grfica (GUI)

Llegados a este punto, en el que el programa ya cumpla con el propsito de realizar los
clculos que se plantearon desde un inicio, hubo la necesidad de crear una interfaz grfica de
usuario, con tal de facilitar la interaccin entre el usuario y el programa.

Este apartado del proyecto se dividi en dos partes: la primera hace referencia al diseo de
la interfaz grfica creada mediante la aplicacin Qt Creator (incluida en la librera PyQt) y la
segunda, trata sobre la implementacin de la interfaz de usuario con el algoritmo del
programa.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 41

6.6.1. Diseo de la Interfaz grfica de usuario

6.6.1.1. Qt Creator y primera interfaz

La creacin de la interfaz grfica, como se ha mencionado en el apartado anterior, se elabor


mediante el programa Qt Creator. Esta herramienta permite disear la pantalla de la
aplicacin, a travs de la cual el usuario podr comunicarse con el programa. La principal
ventaja que ofrece es que el diseo de la interfaz se realiza de manera grfica, y
paralelamente Qt Creator elabora el cdigo correspondiente en lenguaje de programacin. De
este modo, se ahorra mucho tiempo en la confeccin de la interfaz, puesto que de lo contrario,
sera necesario escribir el cdigo de programacin manualmente.

Tras practicar y entender mejor el funcionamiento de esta herramienta, se cre una primera
interfaz inicial formada por una ventana, y posteriormente se fueron aadiendo distintos
elementos que podran ser de utilidad en este proyecto [17]. Entre ellos, destacan: las
etiquetas, botones, editores y campos de texto. En el siguiente apartado se explicar que son
cada uno de estos elementos, y sus principales funciones.

A continuacin, se muestra una imagen (Fig 6.10) en la cual se puede observar el aspecto de
la aplicacin Qt Creator, as como la interfaz inicial creada:

Fig. 6.10. Aspecto de la interfaz de diseo del programa Qt Creator.


Pg. 42 Memoria

Para aadir cada elemento, tan slo es necesario arrastrar los widgets de la barra de
herramientas que aparece a la izquierda y situarlos en la ventana de diseo. Posteriormente,
es posible editar su forma, tamao y color al deseo del diseador.

Cabe mencionar que el cdigo de la interfaz creada travs de la aplicacin Qt Creator es


extrado con la extensin de interfaz grfica (*.ui). No obstante, este archivo se puede convertir
fcilmente a cdigo de Python (*.py) mediante una simple lnea de comando en la terminal del
sistema (cmd).

6.6.1.2. Widgets implementados

A continuacin, se describen las principales clases de widgets que han sido utilizadas para la
elaboracin de la interfaz de usuario:

QLabel: Tambin conocido como Etiqueta, esta clase de widget permite la


escritura de texto o imgenes. Se utiliza principalmente para la inclusin de
ttulos, descripciones, y otros elementos de texto de carcter informativo
para el usuario.

Fig. 6.11. Aspecto widget QLabel.

QPushButton: Este widget proporciona un botn de comando. Es


probablemente el elemento ms comnmente utilizado en cualquier interfaz
grfica de usuario. Pulsando en el botn se pueden realizar diversas
acciones. Entre los casos ms tpicos de botones destacan el Aceptar,
Salir, Ayuda, etc.

Fig. 6.12. Aspecto widget botn (QPushButton).

QRadioButton: Se trata de un botn de opcin que se puede activar


(marcado) o desactivar (sin marcar). Los botones de radio normalmente se
presentan al usuario en grupo, y acompaados de una etiqueta de texto.
Estos representan una seleccin entre diversas opciones. Si el usuario
selecciona otro botn, el botn marcado previamente se desconecta.

Fig. 6.13. Aspecto widget QRadioButton.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 43

QPlainTextEdit: Esta clase provee un widget que es utilizado para editar y


mostrar texto sin formato. Este editor de texto est optimizado para manejar
documentos de gran tamao y para responder con rapidez a la entrada del
usuario. Adems incluye una coleccin de funciones tiles como Cortar y
Pegar, Deshacer y Rehacer, etc.

Fig. 6.14. Aspecto widget de editor de texto plano (QPlainTextEdit).

QLineEdit: Similar al QPlainTextEdit, este widget es un editor de texto pero


de una sola lnea, que permite al usuario introducir y editar texto sin formato.

Fig. 6.15. Aspecto widget editor de lnea de texto (QLineEdit).

QTabWidget: La clase QtabWidget proporciona una barra de pestaas con


su respectiva rea de pgina que se utiliza para mostrar los elementos
relacionados de cada pestaa. Adems, sta ltima est asociada con un
widget o conjunto de widgets diferentes. Al seleccionar una de las pestaas,
se muestra el rea de la pgina correspondiente, quedando ocultas el resto.

Fig. 6.16. Aspecto widget barra de pestaas (QTabWidget).


Pg. 44 Memoria

6.6.1.3. Aspecto final de la interfaz

Una vez definidos los widgets que integrara la interfaz, se procedi con la organizacin de
estos en la ventana de la aplicacin, a fin de disponerlos de manera ordenada y visual para
facilitar la tarea de introduccin al usuario.

Siguiendo las pautas establecidas desde el inicio de la creacin del programa, se defini que
la ventana de la interfaz englobara dos pestaas independientes: una para los estudios de
cintica, y otro para los relacionados con las isotermas. Dentro de cada pestaa, se dispondra
de un formulario que incluira los distintos campos que el usuario debera rellenar para cada
tipo de ensayo.

En cada formulario, se establecera un orden de introduccin de los datos y de interaccin con


los diferentes widgets, con descripciones para facilitar el correcto uso del programa:

1. En primer lugar el usuario deber rellenar los campos correspondientes a los


siguientes parmetros: Nombre elemento (ttulo de los grficos), Volumen de
disolucin, Peso del slido y rea superficial, ste ltimo en funcin de si se conoce
su valor.

2. El segundo paso ser rellenar la tabla con los datos obtenidos en los ensayos.

3. Seleccionar una de las opciones entre los diferentes modelos disponibles.

4. Interactuar con los botones que ejecutan las diferentes funcionalidades del
programa: Validar Datos, Calcular, Mostrar Grfico y Guardar grfico.

A continuacin, se muestran imgenes del diseo de la ventana principal de la aplicacin, en


la que se puede observar el contenido de cada una de las pestaas, y la disposicin de los
diferentes widgets en ella:
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 45

Fig. 6.17. Aspecto de la interfaz grfica: Formulario cintica de adsorcin.


Pg. 46 Memoria

Fig. 6.7. Aspecto de la interfaz grfica: Formulario isotermas de adsorcin.

6.6.2. Conexin de la interfaz con el algoritmo del programa

Tras haber definido el diseo de la interfaz, surgi una nueva problemtica: cmo conectar
los distintos elementos de la interfaz con el algoritmo principal del programa. Hasta este
momento, se haba creado una interfaz con varios widgets, pero estos no tenan ninguna
funcin asignada.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 47

El siguiente paso en la construccin del programa consista entonces en conseguir que los
datos que el usuario haba rellenado en los campos de texto fueran almacenados en el
programa, y que al pulsar cada botn se ejecutaran las acciones pertinentes. Para que esto
fuera posible fue necesario recurrir a una caracterstica de PyQt, concretamente al mecanismo
de seales y slots, explicado en el apartado 7.6.2.2.

6.6.2.1. Almacenamiento de los datos contenidos en campos de texto

El almacenamiento de cada uno de los datos introducidos en los campos y en el editor de


textos, se llevara a cabo al hacer clic al botn Validar datos. Una vez pulsado este botn, el
programa se encargara de leer uno a uno el valor de todas las casillas, y le asignara el valor
introducido a cada una de sus variables correspondientes en el programa.

Para tratar los datos en forma de tabla del editor de texto, la situacin fue algo compleja, dado
que no se permita leer directamente su contenido y almacenarlo en forma de matriz.
Por este motivo, se opt por crear una funcin especfica llamada LeerMatriz(), a travs de
la cual se copiara el contenido ntegro del editor de texto automticamente en un bloc de
notas (.txt). A continuacin, tras guardar el archivo con nombre datosTabla.txt, el programa
lo abrira internamente de nuevo y leera cada una de las filas de texto contenidas, atribuyendo
los valores a su posicin relativa dentro de una matriz. Para distinguir entre los valores de
cada columna pertenecientes a una misma fila, se asign como separador la barra
espaciadora y la tecla tabulador.

6.6.2.2. Signals y Slots

El mecanismo de seales y slots es una de las caractersticas ms importantes de la librera


de PyQt. stas se usan para las comunicaciones entre los distintos objetos de una interfaz
grfica. Generalmente, la seal (signal) parte de un objeto "emisor" y llega a un objeto
"receptor". ste ltimo decide si ejecuta un slot (o accin) y finaliza el proceso, o emite una
nueva seal que propaga el evento hacia otro objeto receptor. El proceso se puede repetir.

Como ejemplo sencillo, imagine un botn de "Salir". Cuando el usuario lo pulsa, el botn
genera la seal clicked(), y en respuesta a esa seal el sistema ejecuta un slot close() que
cierra la ventana de la aplicacin [18] .

Procediendo de esta misma manera para cada uno de los botones creados, y siguiendo el
mecanismo de seales y slots, se definieron sus funciones correspondientes descritas a
continuacin:
Pg. 48 Memoria

Radio botones S y No: Ambos botones estn conectados el uno con


el otro, y hacen referencia a si se conoce o no, el valor del rea superficial
del adsorbente. En caso afirmativo (seleccionando el botn S), se habilita
la edicin del campo de texto correspondiente al valor de rea superficial.
En caso de seleccionar la opcin No, este campo de texto queda
desactivado y al rea superficial se le asigna automticamente el valor 1. Su
funcin principal es la de concretar en qu unidades se presentarn los
resultados de los grficos, condicionados por la participacin de la variable
rea superficial en los clculos.

Fig. 6.19. Funcionalidad botones de seleccin Si/No

Radio botones de eleccin del modelo: Segn el botn del modelo que
se seleccione, se asigna un valor numrico correspondiente a dicho modelo,
para que cuando se ejecute el algoritmo principal, tenga en cuenta cul es
el modelo que debe ser calculado.

Fig. 6.80. Botones de eleccin: modelos cinticos.

Fig. 6.21. Botones de eleccin: modelos cinticos.

Botn Validar datos: Este botn posee mltiples funciones. En primer


lugar, tal y como se ha comentado anteriormente, cuando se hace clic sobre
l todos los valores introducidos en los campos de texto de la interfaz son
almacenados y asignados a su variable correspondiente. Posteriormente, si
dichos valores han sido introducidos en el formato correcto, se activa el
botn Calcular.
Adems, si los botones Mostrar grfico y Guardar Grfico se encuentran
activos, los desactiva para que no puedan ser pulsados.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 49

Fig. 6.22. Botn Validar Datos.

Botn Calcular: Inicialmente este botn se encuentra desactivado, y tan


slo se activa si se renen las condiciones necesarias descritas para el
botn Validar datos. Una vez pulsado, comienza la ejecucin del algoritmo
encargado de procesar los datos y realizar los clculos para el modelo
seleccionado. Si la ejecucin del algoritmo se completa sin incidencias,
entonces se activan tambin los botones Mostrar Grfico y Guardar
Grfico.

Fig. 6.23. Botn Calcular.

Botn Mostrar Grfico: Una vez activado, pulsando este botn se abre
una nueva ventana con el grfico representado, a partir de los datos
introducidos y del modelo seleccionado.

Fig. 6.24. Botn Mostrar Grfico y funciones.


Pg. 50 Memoria

Botn Guardar Grfico: Una vez activado, pulsando este botn se abre
un cuadro de dialogo que permite guardar una imagen (en formato .jpg o
.png) del grfico obtenido, en el directorio del ordenador que se desee.
Tambin es posible editar el nombre con el que ser guardado dicha
imagen.

Fig. 6.25. Botn Guardar grfico y funciones.

Botn Salir: Tal y como se ha comentado anteriormente, al pulsar este


botn se cierra la ventana del programa, y se detiene la ejecucin del
algoritmo.

Fig. 6.26. Botn Salir.

6.7. Empaquetamiento del programa y creacin de un instalador

Finalmente, tras conseguir enlazar la interfaz de usuario con el algoritmo principal, se obtuvo
una primera versin completa de la aplicacin que funcionara correctamente. Pero haba un
problema: el programa tan slo poda ejecutarse desde el ordenador en el que se haba
programado.

6.7.1. Archivo ejecutable *.exe

Para poder ejecutar el programa en otros ordenadores con sistema operativo Windows, haca
falta convertirlo a un archivo ejecutable *.exe. Para ello, se eligi el programa Cx_Freeze, el
cual a partir de los archivos que contienen el cdigo del programa y de las bibliotecas
necesarias, genera un archivo con todo lo necesario para poder ejecutar el programa en
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 51

cualquier ordenador con Windows, aunque ste no disponga de Python o de las bibliotecas
instaladas.

Para generar este archivo ejecutable, primero hubo que descargar para Windows el Python
3.5 y despus las bibliotecas necesarias que se haban usado durante el desarrollo del
programa. stas eran numpy, scipyi, matplotlib y Pyqt4. Con todas ellas descargadas y
siguiendo un video-tutorial, fue posible generar el archivo que permita su ejecucin total en
Windows.

El nico inconveniente era el peso del archivo *.exe, puesto que superaba los 200Mb y
tardaba mucho en iniciarse ejecutndolo desde otro ordenador.

6.7.2. Creacin del instalador para Windows *.msi.

Tras investigar acerca de cmo reducir el tamao del archivo resultante, se encontr otra va
de empaquetamiento de la aplicacin a travs de Cx_Freeze. En esta ocasin, el programa
generaba una carpeta conteniendo todos los archivos necesarios para poder ejecutar el
programa en otro ordenador, incluyendo el ejecutable. De este modo, la carpeta creada
continuaba ocupando unos 170Mb, pero esta vez el archivo *.exe que inclua no superaba los
2Mb.

sta fue una gran mejora debido a que agilizaba la ejecucin y funcionamiento del programa.
Por el contrario, se haca menos cmodo para el usuario ya que aumentaba la complejidad
para copiar el programa creado en su ordenador.

Por ltimo, tras insistir y profundizar en este tema, se encontr una solucin ptima mediante
Cx_Freeze, que consista en generar un archivo en formato de instalador para Windows
(*.msi). ste se encargara de crear automticamente la carpeta anteriormente mencionada,
en el directorio del ordenador de destino deseado. Adems una vez instalado el programa, a
travs de este mismo instalador era posible reparar o desinstalar el programa. As, se
consigui tambin reducir el tamao del archivo final comprimido hasta los 60Mb,
manteniendo el peso del ejecutable en 2Mb, facilitando as su distribucin.

Fig. 6.27. Archivo y men del instalador.


Pg. 52 Memoria

7. Otras implementaciones

7.1. Icono de la aplicacin

Una de las primeras mejoras implementadas fue aadir un icono a la aplicacin. La imagen
elegida consista en un Erlenmeyer haciendo referencia a la temtica del programa: los
ensayos experimentales en qumica. Adems, la tonalidad verde del icono iba a juego con la
paleta de colores seleccionada para el men del programa. Su implementacin fue posible
una vez ms gracias a Qt Creator, donde existe la opcin de incluir una imagen como icono
del programa.

Fig. 7.1. Apariencia del icono de la aplicacin.

7.2. Mensajes de aviso al usuario

Esta implementacin surgi con el fin de ayudar al usuario a hacer un correcto uso del
programa. De este modo, cuando el usuario no rellena correctamente los campos necesarios,
o se olvida de completar alguno de ellos, el sistema responde con un mensaje alertando de
lo sucedido. Si existen campos incompletos, al pulsar el botn Validar Datos, se indica lo
siguiente: Revise los datos introducidos. Adems tambin aparece un mensaje de error en
cada campo incompleto, para informar al usuario de cul es el dato que falta por completar o
corregir.

Fig. 7.2. Mensajes de error de la aplicacin.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 53

A medida que el usuario va aadiendo los datos que faltan, estos mensajes desaparecen al
pulsar nuevamente en Validar Datos. Una vez todos los datos estn correctamente
introducidos, tras volver a pulsar el botn para validar los datos, el mensaje que aparece es
el siguiente: Los datos introducidos son vlidos.

Fig. 7.3. Mensaje que aparece cuando los datos introducidos son vlidos.

7.3. Incrustacin de los grficos en una nueva ventana de la


interfaz

La aplicacin creada en el proyecto tiene como objetivo presentar los resultados de los
estudios realizados en forma de grficos. Inicialmente, los grficos que se obtenan no podan
modificarse, tan slo visualizarse en una ventana a parte, y ser exportados en formato de
imagen.

Por consiguiente, este apartado surgi con la finalidad de que los grficos obtenidos fueran
editables por parte del usuario, por lo menos a un nivel bsico. De este modo, se incluy una
barra de herramientas en la parte inferior del grfico (Fig. 7.4.) que permita realizar cambios
sobre el mismo, entre los que destacan: redimensionar, ampliar/reducir, mover, guardar, etc.,
con tal que el usuario pudiera personalizarlos.

Fig. 7.4. Barra de herramientas para la edicin de los grficos.

7.4. Botn Reiniciar

La implementacin del botn Reiniciar surgi para facilitar y agilizar el trabajo al usuario. Al
pulsar dicho botn, todos los campos introducidos quedaban vacos y los mensajes de aviso
desaparecan, dejando as el programa en su estado inicial. De este modo, se podra empezar
un nuevo caso de estudio sin tener que perder tiempo eliminando uno a uno todos los campos.
Pg. 54 Memoria

Fig. 7.5. Botn Reiniciar incrustado en la interfaz grfica.

7.5. Barra de herramientas: Instrucciones.

Este apartado se cre con tal de solventar cualquier duda al usuario acerca del funcionamiento
del programa. Por ello, se aadi una barra de herramientas en la parte superior de la ventana
que contena un apartado con el nombre Ayuda. Pulsando dicho apartado, aparece una
opcin llamada Instrucciones, en la cual haciendo clic se abre un dilogo en una nueva
ventana, conteniendo todas las instrucciones necesarias para poder hacer un correcto uso del
programa.

Fig. 7.6. Men de instrucciones en la ventana principal del programa.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 55

Este mismo tipo de opcin se implement tambin en la ventana correspondiente a los


grficos representados. De esta manera, las instrucciones permitan informar sobre la edicin
y la navegacin a travs de los grficos.

Fig. 7.7. Men de instrucciones en la ventana de grficos.


Pg. 56 Memoria

8. Vas de mejora y ampliacin


Una vez terminada la versin bsica del programa creado en este proyecto, donde los datos
se tratan de manera eficaz y se obtienen los resultados esperados, interesaba plantear
algunas vas de mejora, con el fin de abrir nuevos caminos para poder continuar en el
desarrollo de la aplicacin, y disponer en un futuro de una mayor cantidad de herramientas
que lo hicieran extensible a ms tipos de estudios.

A pesar de que se ha conseguido implementar una gran variedad de herramientas para el uso
del programa, existen muchas otras que podran resultar muy tiles con tal de ampliar las
funcionalidades ya desarrolladas. Debido a que ste fue creado con la intencin de poder ser
ampliado en un futuro, en los siguientes apartados se proponen algunas de las opciones de
mejora ms interesantes que surgieron durante su creacin. Tras estudiar la viabilidad para
ser aadidas al programa actual, fueron descartadas por el trabajo extra que supona su
inclusin.

8.1. Ampliacin del anlisis estadstico descriptivo

El anlisis estadstico que se realiza en el programa sirve para determinar la correlacin


existente entre los datos introducidos y la ecuacin de la recta relativa a los distintos modelos
presentados. En ste solamente se contemplan los siguientes parmetros, indispensables
para discernir entre la existencia o no de un ajuste lineal de los datos: la pendiente de la recta,
sus coordenadas en el origen y el factor de correlacin de Pearson (R2).

No obstante, existen otros parmetros estadsticos que podran resultar de gran inters de
cara a una futura ampliacin del programa, con tal de ofrecer al usuario un anlisis descriptivo
ms completo. Entre ellos, sera til incluir los que se mencionan a continuacin:

- Nmero de datos ()
- Media ( )
- Desviacin estndar ()

- Desviacin de la media ( )

- Mximos y mnimos

La mayora de estos elementos pueden ser calculados fcilmente gracias a la biblioteca de


SciPy (https://www.scipy.org), aunque tambin es posible obtenerlos a travs de otras
bibliotecas como matplotlib (http://matplotlib.org).
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 57

8.2. Implementacin de otros modelos y tipos de estudio

Una gran mejora que ampliara en gran medida el uso y la utilidad del programa sera la
inclusin de ms modelos para los estudios de cintica de adsorcin y las isotermas. As,
sera posible comparar los datos con un mayor nmero de modelos, y en consecuencia, los
resultados ofreceran soluciones ms contrastadas. Algunos de los ms representativos ya
han sido expuestos anteriormente en el trabajo, y gracias a la estructuracin del programa
resultara una tarea relativamente fcil aadirlos.

A continuacin, se detallan en la siguiente tabla (Tabla 8.1.) algunos de los modelos tericos
que podran ser de utilidad para ampliar en nmero a los que ya se han implementado:

Cinticas de adsorcin Isotermas de adsorcin

Modelo de difusin intraparticular Isoterma de Temkin

Modelo de pseudo primer orden Isotermas B.E.T.

Tabla. 8.1. Modelos cinticos y de isotermas a implementar en futuras actualizaciones.

Por otro lado, sera necesario aadir una opcin que permita aadir otras series de valores
con tal de realizar un estudio comparativo entre ensayos, pudiendo visualizar los distintos
casos simultneamente y en el mismo grfico.

Adems, tambin cabra la posibilidad de incluir nuevas pestaas en el programa con distintos
tipos de estudios de la adsorcin, como los referentes a los diagramas de pH, utilizados para
estudiar el efecto del pH sobre la cantidad adsorbida de iones. En este caso, se mide la
concentracin de soluto en el adsorbato para diferentes valores de pH, estableciendo un
mismo tiempo de contacto para cada uno de los ensayos.

8.3. Exportacin de los resultados a Excel

Otra herramienta que podra considerarse muy productiva, por no decir necesaria, y que no
se ha podido incluir en esta versin del programa debido al tiempo y la complejidad que
conlleva, sera la posibilidad de exportar los resultados numricos obtenidos a una hoja (o
plantilla) de Excel.
Pg. 58 Memoria

Teniendo en cuenta que en esta primera versin los resultados tan slo pueden ser
visualizados de manera grfica, sera muy til ofrecer al usuario la opcin de almacenarlos y
poder disponer de ellos para un anlisis ms profundo.

Mediante un simple botn llamado por ejemplo Exportar resultados, podra crearse una
funcin que al pulsar sobre l, se encargara de recopilar todos los valores obtenidos a travs
de los clculos realizados, y los guardara en un documento de Excel, rellenando las celdas
correspondientes en una plantilla previamente diseada.

8.4. Mejora de las opciones de edicin de los grficos

La edicin de los grficos representados mediante la aplicacin es bastante til pero a su vez
limitada en la versin desarrollada. En ella, se permite navegar a travs de los grficos
pudiendo realizar varias acciones sobre los mismos. Entre ellos destacan: moverse a travs
del grfico, redimensionar su tamao, ampliar o reducir una zona determinada y conocer las
coordenadas de un punto en concreto del mismo. Adems, tambin es posible modificar el
color y el estilo de los marcadores, as como los ttulos del grfico y los de los ejes.

Pero es cierto que se encuentran a faltar varias herramientas de edicin con tal de poder sacar
un mayor provecho de los grficos que se obtienen. Algunas de ellas, son las que se plantean
a continuacin:

- Seleccionar si se quieren incluir o no en el grfico, de forma independiente, los


siguientes elementos: ecuaciones del modelo, constantes obtenidas y sus factores de
correlacin, y la leyenda.

- Variar la posicin relativa de la leyenda, las ecuaciones y los parmetros obtenidos


respecto al grfico.

- Posibilidad de mostrar/ocultar otras series de datos representadas en el mismo


grfico, a modo de comparacin.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 59

9. Comprobacin de funcionamiento del programa


Con el programa ya terminado y listo para ser distribuido, lo ltimo que quedaba por hacer era
una comprobacin final para corroborar la fiabilidad de resultados ofrecidos en la aplicacin,
realizando un estudio con datos provenientes de artculos facilitados por el director.

Dicha comprobacin consistira en utilizar esos mismos datos de estudio en el programa, y


comparar los resultados obtenidos en varios casos con los publicados en el artculo en
cuestin. Para ello, se dispuso del documento de Excel original en el que fueron calculados.

Antes de empezar, cabe comentar que en el artculo de referencia se realiz un estudio de


adsorcin sobre el arsnico As(III). El estudio se centra principalmente en la determinacin de
los mecanismos cinticos y las isotermas de adsorcin del arsnico sobre cada uno de los
siguientes minerales: goetita, hematita y magnetita. Los datos del ensayo son los contenidos
en el fichero arsenico3.xls.

9.1. Estudio de la cintica de adsorcin

9.1.1. Caso de estudio con Excel

En este documento, el principal modelo cintico empleado es el de pseudo-segundo orden,


por lo que se usar como ejemplo para la comprobacin. Adems, se tomar como referencia
el caso estudiado para la goetita con tal de presentar imgenes y capturas de pantalla que
justifiquen la comparacin.

Los datos de partida para realizar los clculos, son los que se muestran dentro del documento,
sealados en la Fig 9.1.

En el documento de Excel, primeramente se realiza la transformacin de datos para obtener


el parmetro qt, necesario para el clculo del modelo. A continuacin, en la Fig. 9.2., se
muestra la recta obtenida a travs del ajuste lineal del modelo, junto con los correspondientes
valores de las constantes qe y k del modelo cintico de pseudo segundo orden.
Pg. 60 Memoria

Fig. 9.1. Datos de partida para los clculos cinticos en el fichero de Excel.

Fig. 9.2. Parmetros del modelo cintico de pseudo segundo orden obtenidos tras la
representacin lineal de los datos para el caso de la goetita, en Excel.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 61

Se observa que la recta resultante posee un factor de correlacin muy cercano a 1 (R2=
0,9998), por lo que se puede deducir que los datos de estudio se ajustan en gran medida a
la ecuacin del modelo cintico de pseudo segundo orden.

A partir de las constantes del modelo obtenidas se procede con el clculo del modelo terico,
comparando la curva obtenida con los datos experimentales, tal y como se observa en la Fig
9.3.:

2,0E-06

1,5E-06
[As(III)]s mol/m2

Goethite
1,0E-06
goethite,
model
5,0E-07

0,0E+00
0 50 100 150 200
t (h)

Fig. 9.3. Grfico comparativo entre datos experimentales y el modelo cintico de pseudo
segundo orden obtenido en Excel.

De este grfico se puede deducir que los valores obtenidos en el ensayo de adsorcin del
arsnico (III) sobre la goetita se comportan siguiento la ecuacin cintica terica del modelo
pseudo-segundo orden. Tambin es posible determinar el valor de concentracin de As(III)
en el equilibrio, el cual es de aproximadamente 1,210-6 mol/m2.

9.1.2. Caso de estudio mediante la aplicacin creada

Una vez expuestos los resultados obtenidos mediante el uso de Excel, se procedi a la
obtencin de los resultados mediante el uso del programa creado durante el transcurso de
este proyecto.

En primer lugar, se introdujeron en el programa los mismos datos provenientes del documento
de referencia para cada mineral, de forma separada. Se seleccion el modelo cintico de
pseudo-segundo orden y se procedi a generar los grficos con los resultados.
Pg. 62 Memoria

Fig. 9.4. Datos introducidos en la aplicacin para el caso de estudio de la goetita.

A continuacin, se muestra el grfico obtenido en la aplicacin en la Fig. 9.5., dnde pueden


observarse de manera conjunta los diagramas referentes a la linealizacin y al clculo del
modelo terico para el caso de la goetita:

Fig. 9.5. Grficos cinticos obtenidos a travs de la aplicacin para el modelo de pseudo
segundo orden.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 63

Del mismo modo, se seleccion tambin el clculo del modelo cintico de Elovich, a fin de
comparar los resultados anteriores. En la Fig 9.6. se observa el grfico obtenido segn el
modelo de Elovich:

Fig. 9.6. Grficos cinticos obtenidos a travs de la aplicacin para el modelo de Elovich.

Finalmente, se compararon los resultados obtenidos en ambos modelos. Para ello, se


seleccion la opcin de Comparacin cinticas de la aplicacin, con tal de decidir a qu
modelo se ajustan ms los datos experimentales. En la siguiente imagen obtenida mediante
el programa (Fig. 9.7.) se comparan las curvas tericas de cada modelo:

Fig. 9.7. Grfico comparativo de modelos cinticos obtenidos a travs de la aplicacin.


Pg. 64 Memoria

Modelo Pseudo
Goetita Modelo Elovich
segundo orden

Ecuacin de la recta y = 837912x + 833708 y = 1,11710-6 x + 7,26610-7

Factor de correlacin R2= 0,9998 R2= 0,7038

Tabla. 9.1. Tabla comparativa de los modelos cinticos para el caso de la goetita.

A travs del grfico comparativo de modelos, y de los factores de correlacin de Pearson (R2)
de cada modelo, puede afirmarse que los datos experimentales de ensayo describen un
sistema qumico que se ajusta mejor a los mecanismos cinticos descritos por el modelo de
pseudo-segundo orden, en detrimento a los descritos por el modelo de Elovich.

9.1.3. Comparacin de mtodos de clculo

En este apartado se pretende comprobar la fiabilidad de clculo del programa comparndolo


con los resultados obtenidos y corroborados mediante el documento de Excel. Esta
comparacin se realiza procediendo del mismo modo para los tres minerales de estudio, de
manera que as se dispone de ms muestras para comprobar la validez del sistema de clculo
de la aplicacin. En las siguientes tablas para cada mineral, se observan los valores
significativos obtenidos en cada caso:

Goetita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 837724x + 833760 y = 837912x + 833708

Factor de correlacin R2= 0,9998 R2= 0,99979

qe 1,19410-6 1,19310-6

k 837688,00 842137,12

Tabla. 9.2. Tabla comparativa entre mtodos de clculo para el caso de la goetita.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 65

Hematita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 260059x + 945543 y = 259830x + 920333

Factor de correlacin R2= 0,99963 R2= 0,99938

qe 3,84510-6 3,84810-6

k 71525,76 73355,69

Tabla. 9.3. Tabla comparativa entre mtodos de clculo para el caso de la hematita.

Magnetita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 720902x + 1072075 y = 716502x + 1056020

Factor de correlacin R2= 0,99987 R2= 0,99977

qe 1,38710-6 1,39610-6

k 484761,65 486141,63

Tabla. 9.4. Tabla comparativa entre mtodos de clculo para el caso de la magnetita.

Los valores obtenidos en ambos mtodos de clculo son prcticamente iguales, como se
puede observar en las tablas adjuntas, por lo que se concluye que los resultados que ofrece
el programa en el clculo de las cinticas de adsorcin son realmente fiables. Las pequeas
diferencias que se observan entre ellos pueden ser debidas al empleo de distintos
herramientas de clculo estadstico, pero se considera que no alteran el resultado final.

9.2. Estudio de isotermas de adsorcin

9.2.1. Caso de estudio con Excel

Para el caso de estudio de las isotermas de adsorcin, se escogi como referencia el modelo
de Langmuir en la comparacin.

La distribucin del documento de Excel es el que se observa en la Fig 9.8., dnde se sealan
los datos de entrada de concentracin de cada mineral utilizados para los clculos:
Pg. 66 Memoria

Fig. 9.8. Datos de partida para el clculo de las isotermas de adsorcin, en Excel.

Una vez calculada a ecuacin lineal del modelo de Langmuir, se obtienen las rectas
resultantes junto con su ecuacin para cada mineral. A travs del factor de correlacin R2, se
puede deducir que existe un buen ajuste entre los distintos datos con este modelo:

Linealizacin Modelo Langmuir


2,50E+02
Goetita
2,00E+02
y = 405250x + 1,247
R = 0,9975 Hematita
1,50E+02
y = 321601x + 12,866 Magnetita
1,00E+02 R = 0,9962
Lineal
5,00E+01 (Goetita)
y = 107424x + 1,9565
R = 0,999
0,00E+00
0,00E+00 2,00E-04 4,00E-04 6,00E-04 8,00E-04

Fig. 9.9. Grfico del ajuste lineal de los datos para el caso de la isoterma de Langmuir,
en Excel.

Finalmente, se elabora el grfico representado en la Fig. 9.10., correspondiente a la


comparacin del modelo terico de Langmuir frente a los datos experimentales:
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 67

Langmuir Isotherm
5,0E-06

[As(III)]s mol/m2 4,0E-06 Goethite


Hematite
3,0E-06 Magnetite
hematite, model
2,0E-06 goethite, model
magnetite, model
1,0E-06

0,0E+00
0 50 100 150 200
t (h)

Fig. 9.10. Grfico comparativo entre datos experimentales y el modelo cintico de


pseudo segundo orden obtenido en Excel.

9.2.2. Caso de estudio mediante la aplicacin creada

Procediendo de igual manera que para las cinticas de adsorcin, se utilizar el programa
para el clculo y comparacin de las isotermas de Langmuir y Freundlich.

Fig. 9.11. Datos introducidos en la aplicacin para el caso de estudio de la goetita.


Pg. 68 Memoria

Tras introducir los datos correspondientes para cada mineral en la aplicacin, y seleccionando
los diferentes modelos, se generaron los grficos correspondientes a cada modelo de
isoterma. En las figuras 9.12. y 9.13 se muestran los grficos obtenidos para la goetita:

Fig. 9.12. Grficos obtenidos a travs de la aplicacin para la isoterma de Langmuir.

Fig. 9.12. Grficos obtenidos a travs de la aplicacin para la isoterma de Freundlich.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 69

A partir de los coeficientes de correlacin obtenidos para cada modelo, y tras generar el grfico
comparativo seleccionando la opcin de Comparacin Modelos en el programa, es posible
determinar a qu modelo se asemejan ms los datos experimentales:

Fig. 9.14. Grfico comparativo de modelos de isotermas obtenidos a travs de la


aplicacin.

Goetita Modelo Langmuir Modelo Freundlich

Ecuacin de la recta y = 405249,7x +1,247 y = 0,177 x 4,940

Factor de correlacin R2= 0,9988 R2= 0,9513

Tabla. 9.5. Tabla comparativa de los modelos de isoterma para el caso de la goetita.

Los resultados indican un mejor ajuste de los datos de estudio para la isoterma de Langmuir,
puesto que sta posee un valor de R2 superior al obtenido para el modelo de Freundlich.
Tambin es posible llegar a esta conclusin observando el grfico comparativo (Fig. 9.14.).
Pg. 70 Memoria

9.2.3. Comparacin de los mtodos de clculo

Por ltimo, se realiz una comparacin de los resultados obtenidos con las dos herramientas
de clculo utilizadas. Para ello, se emple como ejemplo el modelo de isoterma de Langmuir,
puesto que es el nico modelo comn calculado en ambos casos.

Las siguientes tablas corroboran la gran fiabilidad de clculo que posee el programa, debido
a que como se puede observar en ellas, los resultados obtenidos tanto en Excel como en la
aplicacin son idnticos:

Goetita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 405250x + 1,247 y = 405249,7x +1,247

Factor de correlacin R2= 0,9975 R2= 0,9988

qmax 2,46810-6 2,46810-6

kL 3,250105 3,250105

Tabla. 9.6. Tabla comparativa entre mtodos de clculo para el caso de la goetita.

Hematita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 107424x + 1,956 y = 107424,03x + 1,957

Factor de correlacin R2= 0,9990 R2= 0,9995

qmax 9,30910-6 9,30910-6

kL 54906 54910

Tabla. 9.7. Tabla comparativa entre mtodos de clculo para el caso de la hematita.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 71

Magnetita Documento Excel Programa AdsorptionGraph

Ecuacin de la recta y = 321601x + 12,866 y = 321601,339x + 12,866

Factor de correlacin R2= 0,9962 R2= 0,9981

qmax 3,10910-6 3,10910-6

kL 2,4996104 2,5104

Tabla. 9.8. Tabla comparativa entre mtodos de clculo para el caso de la magnetita.
Pg. 72 Memoria

10. Costes
Los costes asociados a la elaboracin de este proyecto se descomponen principalmente en
dos partes: los costes de la mano de obra, y los costes asociados a su realizacin. Debido a
que el trabajo se ha realizado ntegramente con ordenador, tan slo se contemplarn como
costes materiales los derivados de la impresin del mismo, y de los CDs grabados necesarios
para su presentacin.

En primer lugar, en referencia a los costes de la mano de obra, estos vienen dados por las
horas trabajadas por la persona que ha realizado el proyecto. Teniendo en cuenta que para
su elaboracin se realizaron una media de unas 8 horas semanales durante
aproximadamente un periodo de 16 meses hasta el momento de la entrega de la memoria
escrita. Todo ello suma un total de 512 horas dedicadas al proyecto, sin tener en cuenta
muchas otras enfocadas al aprendizaje necesario en programacin con Python por deseo
propio del autor. Considerando que un ingeniero cobrase alrededor de 30/h por la realizacin
de un proyecto, el coste de la mano de obra por todo el trabajo ascendera a 15.360.

En segundo lugar, los costes asociados a la realizacin del trabajo engloban los gastos
directos derivados de su confeccin. Al tratarse de un programa informtico, su valor es
mucho menos significativo que los asociados a la mano de obra. Adems estos costes son
bastante ms reducidos que en otros tipos de proyectos, puesto que no se han utilizado otros
medios a parte de un ordenador porttil. Estos costes engloban lo siguiente:

- Costes elctricos: Los costes elctricos han sido calculados a partir del consumo
del ordenador porttil (120W) y del coste del kWh, teniendo en cuenta el total de
horas trabajadas (512h). En consecuencia, el consumo elctrico total del proyecto
se obtiene de la siguiente manera:

0,12 512 = 61,44

Suponiendo que el precio aproximado del kWh es de 0,15/kWh, el coste total


elctrico por la elaboracin del proyecto es de unos 9,22.

- Costes de amortizacin del ordenador: Partiendo de que el tiempo de vida medio


de un ordenador porttil es de 6 aos, y que el precio de adquisicin del equipo en
cuestin utilizado ronda los 800, es posible calcular los gastos de amortizacin
derivados por el uso del mismo durante la realizacin del trabajo:
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 73

512
800 = ,

6 8760

- Costes materiales de impresin y encuadernacin: Finalmente, hay que aadir el


coste de impresin de la memoria escrita, el papel usado, la encuadernacin del
mismo y los CDs utilizados. Teniendo en cuenta que para la presentacin se
requiere un total de 3 copias completas del trabajo, se estima que su coste sera de
unos 70.

Por lo tanto, se estima que los costes totales del proyecto ascienden a 15.447,02.
Pg. 74 Memoria

11. Impacto ambiental


En este apartado se analizan las consecuencias ambientales que conlleva la realizacin de
este proyecto. Cabe mencionar que el impacto ambiental generado durante su desarrollo es
prcticamente menospreciable comparado con trabajos de mbito ms industrial. No
obstante, es necesario hacer hincapi en las principales fuentes que causan el impacto.

En primer lugar, referentes al proceso de desarrollo del programa y la redaccin de la


memoria, se tienen que considerar las emisiones de CO2 derivadas del consumo elctrico, ya
que contribuyen al efecto invernadero. Segn los datos de la Unin Europea, que cifran en
0,39kg de emisiones de CO2 para la produccin de 1kWh, y teniendo en cuenta el consumo
elctrico calculado anteriormente en el apartado de costes, se estima que las emisiones
derivadas de este proyecto representan 23,65kg de CO2.

Por otro lado, para la impresin y presentacin de la memoria podra considerarse la cantidad
de papel utilizada, que representa una de las principales causas de desforestacin.

Finalmente, es necesario mencionar que la aplicacin desarrollada pretende contribuir a la


mejora de los estudios de investigacin sobre la remediacin de especies contaminantes,
como el arsnico. Como consecuencia de estos estudios, y aunque quede fuera del alcance
de este proyecto, hay que tener en cuenta el impacto ambiental derivado del uso futuro del
programa. Puesto que el programa se basa en el anlisis de datos procedentes de estudios
experimentales, se tendrn que considerar los componentes utilizados y los residuos
generados durante la realizacin de los ensayos.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 75

12. Planificacin
La planificacin llevada a cabo para la realizacin del trabajo es la que se observa en el
diagrama de Gantt, mostrado a continuacin (Figura X.X):

Fig. 12.1. Diagrama de Gantt referente a la planificacin del proyecto.


Pg. 76 Memoria

Conclusiones
Este trabajo, considerado como la primera fase de un proyecto mayor, satisface la gran
mayora de los objetivos propuestos.

El primero a destacar, y quizs el ms importante, es que se ha conseguido crear una


herramienta informtica compacta y funcional que resuelve el problema planteado. La
aplicacin en cuestin, permite la caracterizacin de los mecanismos de adsorcin presentes
entre sustancias durante este tipo de ensayos experimentales.

Mediante el programa, es posible calcular algunos de los modelos existentes que describen
este fenmeno de manera muy rpida. Los datos son procesados de manera automtica y
los resultados que se obtienen son presentados de forma grfica para ofrecer una mejor
interpretacin. Todo ello, con el nico propsito de ayudar a determinar los parmetros y
factores clave en estudios de adsorcin, como son el orden cintico de reaccin y las
condiciones de equilibrio.

En segundo lugar, cabe mencionar que la aplicacin final est pensada para fomentar su uso
entre la gente que entienda sobre estudios de adsorcin, por lo que posee una interfaz visual
ordenada y muy intuitiva, que facilita la interaccin con el programa para todo aqul que no
posea conocimientos avanzados en informtica. Adems, en el caso de que ste presente
dificultades durante su utilizacin, el programa incorpora numerosas ayudas, y tambin se
dispone de manuales con las instrucciones de uso.

Si bien es cierto que las funcionalidades implementadas estn focalizadas a analizar unos
tipos de ensayo de adsorcin muy concretos, y que los datos requeridos para ser procesados
deben ser introducidos de una manera especfica, las opciones que brinda el programa
responden de manera eficaz y ofrecen resultados precisos de forma gil, tal y como se ha
demostrado durante el trabajo. No obstante, la fiabilidad de stos est evidentemente
condicionada por los datos de los que se parte.

Por ltimo, observando el proyecto en perspectiva y con los conocimientos actuales


adquiridos a medida que se avanzaba en su desarrollo, seguramente se habra diseado el
programa de manera algo diferente, dotndolo de una estructura de cdigo ms robusta,
pulida y verstil. Pero aun as, considerando la elevada dificultad que supona este reto desde
su inicio, se puede concluir que el programa cumple con creces las expectativas establecidas
inicialmente: establece una base slida de partida, posee una gran capacidad de mejora y
ofrece bastantes facilidades para que otros puedan continuar con su desarrollo.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 77

Agradecimientos
Me gustara que estas lneas sirvieran para expresar mi ms sincero agradecimiento a todas
esas personas que con su ayuda han colaborado en la realizacin del presente trabajo, en
especial a los directores de este proyecto, Francisco Javier Gimnez y Llus Solano, por el
inters mostrado y por la orientacin, el seguimiento y la supervisin continua del trabajo.

Este proyecto supone un punto y final a un largo camino recorrido tanto personalmente como
profesionalmente. Sin lugar a dudas, el papel de mis compaeros de universidad y de mis
amigos de toda la vida ha sido fundamental para llegar hasta aqu.

Tampoco puedo olvidarme de mi familia. Es difcil describir con palabras el agradecimiento


que siento hacia ellos por su apoyo y motivacin constantes. Gracias a todos.
Pg. 78 Memoria

Bibliografa

[1] Alonso Quintans D., Reutilizacin de raspo procedente de la industria vinicola para la
extraccin de metales en efluentes lquidos, Universidad Politcnica de Catalunya, 20-
34, 2004

[2] Ayora Salvo V., Estudio experimental del sistema Hematita/Fosfato para su aplicacin
a la fertilizacin de suelos agrcolas, Universitat Politcnica de Catalunya, 36-45, 2013

[3] Y.-S. Ho, Review of second-order models for adsorption systems, Journal of Hazardous
Materials, vol. 136, pp. 681-689, 2006.

[4] Y.-S. Ho, Citation review of Lagergren kinetic rate equation on adsorption reactions,
Scientometrics, vol.59, n1, pp. 171-177, 2004.

[5] I. Matus, L. Paniagua y M. Benavente, Estudio de la cintica de adsorcin de Cu y Hg


a partir de soluciones binarias usando quitosano, Nexo: Revista cientfica, vol. 24, No.
1, pp. 20-32, 2011

[6] I. W. Tan, a L. Ahmad, and B. H. Hameed, Adsorption isotherms, kinetics,


thermodynamics and desorption studies of 2, 4, 6-trichlorophenol on oil palm empty fruit
bunch-based activated carbon, Journal of Hazardous Materials, vol. 164, n. 2-3, pp.
473-82, 2009.

[7] M. Arami, N. Y. Limaee, N. M. Mahmoodi, y N. S. Tabrizi, Equilibrium and kinetics


studies for the adsorption of direct and acid dyes from aqueous solution by soy meal hull,
Journal of Hazardous Materials, vol. 135, n. 1-3, pp. 171-9, 2006.

[8] Sureda R., Martinez-Llad X., Rovira M., de Pablo J., Casas I., Gimnez J., Sorption of
stronium on uranyl peroxide: Implications for a high-level nuclear waste repository,
Journal of Hazardous Materials, vol. 181, pp. 881-885, 2010.

[9] Y.-S. Ho, W.-T. Chiu, and C.-C. Wang, Regression analysis for the sorption isotherms
of basic dyes on sugarcane dust, Bioresource technology, vol. 96, n. 11, pp. 1285-91,
2005.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 79

[10] Rovira, M., Gimnez J., Martinez-Llad X., de Pablo J., Mart V., Duro L., Sorption of
selenium(IV) and selenium(VI) onto natural iron oxides: goethite and hematite. Journal
of Hazardous Materials, vol. 150, pp. 279-284, 2008.

[11] Martinez M., Gimnez J., de Pablo J., Rovira M., Duro L., Sorption of selenium(IV) and
selenium(VI) onto magnetite, Applied Surface Science, vol. 252, pp 3767-3773, 2006

[12] G. Limousin, J.-P. Gaudet, L. Charlet, S. Szenknect, V. Barths, and M. Krimissa,


Sorption isotherms: A review on physical bases, modeling and measurement, Applied
Geochemistry, vol. 22, n. 2, pp. 249-275, 2007.

[13] Gonzalez Duque R., Python para todos (Libro online)

[ https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf ]

[14] Tutorial de Python: Programacin orientada a objetos

[ https://frontendlabs.io/1305--tutorial-basico-de-python-parte-iv-programacion-
orientada-a-objetos ]

[15] Codejobs: Comunidad tecnolgica relacionada con el aprendizaje en Python

[ https://www.codejobs.biz/es/blog/2013/03/02/que-es-python ]

[16] Curso online: Introduccin a Python para cientficos e ingenieros

[ http://cacheme.org/curso-online-python-cientifico-ingenieros/ ]

[17] Jess Conde, Curso Aplicaciones GUI Python con PyQT

[ https://www.youtube.com/playlist?list=PLEtcGQaT56cj81xiNCrJnoAjc66uZVXDa ]

[18] Mecanismo de conexiones de seales y slots

[ http://aicastell.blogspot.com.es/2012/01/el-mecanismo-de-conexiones-senales-y.html ]
Pg. 80 Memoria

Anexo A

A.1. Diagrama de funcionamiento del programa

El diagrama de funcionamiento bsico del programa es el que se observa en la Figura A.1.


En el manual de usuario que encontrar ms adelante, se explica detalladamente cada
bloque.

Figura. A.1. Diagrama de funcionamiento del programa.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 81

A.2. Manual de usuario

A continuacin se presenta el manual enfocado al usuario, que ha sido diseado con el fin de
facilitar el uso del programa, y conocer las distintas funcionalidades y opciones que ofrece. En
este, se incluyen adems el manual de instalacin del programa, un tutorial paso a paso de
su utilizacin, y un diagrama de funcionamiento del mismo. En el caso de que se desee una
explicacin ms profunda acerca de su funcionamiento, se puede consultar el apartado de
desarrollo del programa, o bien el anexo siguiente referente al algoritmo de programacin que
contiene la aplicacin.

Instalacin del programa

Requisitos:

- Poseer el archivo del instalador previamente copiado en el ordenador en el cul se


quiera instalar el programa.

Procedimiento:

El programa viene incluido por defecto en un instalador (archivo en formato *.msi) que se
encarga de crear automticamente una carpeta con todos los archivos necesarios para poder
funcionar en cualquier ordenador Windows.

Figura. A.2. Archivo instalador del programa.

Haciendo doble clic sobre l, se abre la ventana de dilogo del instalador. Siguiendo los pasos
que se detallan a continuacin, resulta muy sencillo instalar el programa en su propio
ordenador personal:

1. Seleccionar el directorio en el que se desea crear la carpeta con el contenido del


programa. La ruta sugerida por defecto se encuentra en el directorio de Windows
(C:\) y la carpeta creada se llamar Adsorcin. No obstante, es posible renombrar
la carpeta del programa y modificar el directorio en el que ser instalado el
programa.
Pg. 82 Memoria

Figura. A.3. Seleccin del directorio del programa en el instalador.

2. Tras haber definido el directorio y la carpeta de destino del programa, pulse sobre
el botn Next. A continuacin, aparecer una pantalla con la barra de progreso
para la instalacin de los archivos del programa.

Figura. A.4. Inicio de la instalacin del programa.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 83

3. Antes de que el instalador empiece a copiar los archivos a nuestro ordenador, ser
requerido un permiso de usuario. Para iniciar la instalacin, tan slo es necesario
confirmar la instalacin haciendo clic en el botn S.

Nota: Este paso de confirmacin puede tardar unos segundos en aparecer


dependiendo del ordenador.

Figura. A.5. Permiso de usuario para la instalacin de la aplicacin.

4. A continuacin, se iniciar la instalacin del programa. Una vez finalizada, pulse


sobre el botn Finish y la ventana del instalador se cerrar.

Figura. A.6. Finalizacin de la instalacin del programa.

5. Una vez completada la instalacin, dirjase a la carpeta dnde se ha instalado el


programa (Por defecto se encuentra en C:\Adsorcin). En ella aparecern todos
los archivos que se han copiado para que pueda funcionar en su ordenador. Entre
ellos, se encuentra el archivo AdsorptionGraph, que es el ejectuable (*.exe) de la
aplicacin. Haciendo doble clic sobre l, se ejecutar la aplicacin.
Pg. 84 Memoria

Figura. A.7. Localizacin del archivo ejecutable de la aplicacin.

6. Con el fin de hacer la aplicacin ms accesible y sin necesidad de tener que dirigirse
a la carpeta creada cada vez que se quiera usar el programa, se recomienda crear
un acceso directo a este archivo ejecutable, y copiarlo en el Escritorio del
ordenador. Para ello, basta con pulsar el botn derecho del ratn sobre el archivo
AdsorptionGraph y seleccionar la opcin del desplegable Crear acceso directo.
Finalmente, copie el acceso directo de la aplicacin en el Escritorio del ordenador.

Figura. A.8. Creacin de un acceso directo a la aplicacin.


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 85

Figura. A.9. Acceso directo de la aplicacin

7. Al hacer doble clic sobre el icono del acceso directo se ejecutar el programa,
aparecer la ventana del men principal, y podr empezar a usarlo!

Reparacin y desinstalacin del programa

Requisitos:

- Tener la aplicacin instalada previamente en el ordenador.


- Poseer el archivo del instalador en el ordenador en el cul se disponga a reparar o
desinstalar el programa.

Procedimiento:

El asistente instalador, tambin ofrece la posibilidad de reparar o desinstalar


correctamente el programa procediendo del mismo modo que para la instalacin del
mismo.

- Si experimenta errores o malfuncionamiento con el uso del programa, es posible que


deba a que alguno de los archivos que lo compone haya sido modificado y/o eliminado
por error. En este caso, seleccionando la opcin de Repair, el instalador reparar
los archivos del programa daados, para que pueda volver a funcionar correctamente.

- Sin embargo, si desea sencillamente eliminar la aplicacin de su ordenador, junto con


todos los archivos asociados a sta, seleccione en este caso la casilla Remove.
Pg. 86 Memoria

Figura. A.10. Seleccin para reparar o eliminar el programa.

Tras seleccionar la opcin deseada, haga clic sobre el botn Finish. Seguidamente, se
iniciar el proceso de reparacin o desinstalacin del programa. Una vez completada pulse
de nuevo en Finish para salir del instalador.

Figura. A.11. Finalizar la reparacin/elmimiacin del programa.

Instrucciones de uso del programa

En este apartado se facilitarn las instrucciones de uso del programa y algunos consejos con
el fin de poder hacer un correcto uso del mismo. Si lo desea, puede consultar tambin las
instrucciones en el apartado Ayuda/Instrucciones que encontrar en la barra del men
principal del programa. Los pasos a seguir son los siguientes:
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 87

1- En primer lugar, seleccione la pestaa Cintica o bien Isotermas, segn el


tipo de estudio que desee realizar.
2- A continuacin, deber rellenar las casillas indicadas del formulario. Los datos que
requiere el programa para funcionar hacen referencia a lo siguiente:

- Nombre Elemento: Es el nombre que aparecer en el ttulo de los grficos.


Se admiten tanto nmeros como letras. Si no desea introducir ningn ttulo,
rellene esta casilla con un espacio .

- Volumen disolucin [L] , Peso del slido [g] , rea superficial [m2/g]:
Deber introducir un valor numrico en estas casillas.
Los nmeros decimales deben llevar . como separador en lugar de
,.
Se admiten nmeros en formato cientfico.
Ejemplo: 1.00E-3 0.001

- Tabla de valores:
Deber introducir los valores que desee representar en los grficos,
utilizando las unidades especificadas en cada tabla (segn si elige
un estudio de cintica o isotermas).
Evite dejar lneas en blanco en el campo de texto para evitar errores
en la ejecucin.
Deje un espacio entre los valores de cada columna. Tambin puede
usar la tecla de Tabulador.
En este caso, los valores con decimales pueden ser introducidos
usando los separadores . y ,. Tambin se aceptan nmeros en
formato cientfico.
Si posee los valores de la tabla en un archivo de Bloc de notas (*.txt)
o en un Excel, puede introducirlos fcilmente copindolos y
pegndolos directamente en el campo de texto de la tabla.

3- Seleccione un modelo de la lista entre los disponibles.


4- Pulse el botn Validar datos.
Si le aparece el mensaje Revise los datos introducidos, revselos. El
programa le indicar la casilla o casillas que no han sido introducidas
correctamente.
En caso contrario, aparecer el mensaje Los datos introducidos son
correctos. En este caso, contine al siguiente paso.

5- Haga clic sobre el botn Calcular. Si los datos han sido calculados de manera
correcta, se activarn los botones Mostrar grfico y Guardar grfico. En caso de
no activarse dichos botones, es posible que con los datos introducidos no sea
posible representar el modelo seleccionado, o bien haya ocurrido algn error de
clculo.
6- Mediante el botn Mostrar grfico, puede visualizar el grfico obtenido para el
modelo seleccionado y los datos introducidos en una nueva ventana.
Pg. 88 Memoria

7- Si desea guardar el grfico directamente, pulse sobre el botn Guardar grfico.


A continuacin, podr guardar el grfico en formato de imagen (*.jpg o *.png) en el
directorio que desee, y renombrar la imagen guardada.

Otros consejos tiles:


- Si desea calcular y representar un modelo distinto con los mismos datos
introducidos, seleccione otro de los modelos, y repita la secuencia Validar
datos-Calcular- Mostrar grfico/Guardar grfico.
- Pulsando el botn Reiniciar se borrarn todos los valores de las casillas,
y el estado del programa volver a su situacin inicial.

Herramientas de edicin de los grficos

En la ventana correspondiente a los resultados representados, adems de visualizar los


grficos usted tiene la posibilidad de poder editar y retocar algunos aspectos concretos.
Aunque se trate de un editor de grficos muy bsico, ste puede resultar de gran utilidad,
puesto que le permitir ajustar el aspecto final de los grficos una vez obtenidos, y tambin
guardar la imagen correspondiente con los cambios realizados.

Figura. A.12. Herramientas de edicin del grfico y visualizacin de las coordenadas del
puntero.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 89

Situando el cursor sobre el rea del grfico, podr consultar en todo momento las
coordenadas de posicin del ratn sobre el mismo, en la esquina inferior derecha de la
ventana.

Los botones que encontrar en la esquina inferior izquierda le servirn para interactuar con
los grficos.

Si lo desea, podr consultar tambin las instrucciones en el apartado Ayuda/Instrucciones


que encontrar en la barra del men principal del programa.

A continuacin, se explica el significado de cada uno de ellos junto con su funcionalidad de


edicin:

Botn Home (Casa): con este botn podr deshacer todos los cambios
realizados, restableciendo as el grfico a su aspecto representado por
defecto.

Botones Deshacer y Rehacer: como su nombre indica, estos


botones le permitirn volver hacia atrs y hacia adelante en los distintos
cambios realizados.

Botn Mover: esta herramienta le permitir desplazarse a travs del


grfico. Mantenga pulsados los siguientes botones del ratn mientras se
desplaza por el grfico para realizar las acciones pertinentes:

Botn izquierdo sirve para mover los ejes del grfico, ajustando as el
rea representada en ellos, pero sin variar su escala.

Botn derecho se utiliza para extender o acortar la escala de los ejes,


representando as un mayor o menor rango de valores de los ejes,
empleando en el mismo tamao de grfico.

Botn Zoom: con este botn se podr ampliar o reducir el rea


representada en los grficos. Seleccione un recuadro del rea
representada, manteniendo pulsados los siguientes botones del ratn
mientras se desplaza por el grfico:

Botn izquierdo Ampliar el recuadro seleccionado.


Botn derecho Reducir el rea de seleccin.
Pg. 90 Memoria

Botn Configurar mrgenes: pulsando este botn se abrir una


ventana con las distintas opciones de configuracin. Est en ingls, pero a
continuacin se describen los parmetros para modificar los mrgenes de
los grficos:

Figura. A.13. Parmetros de edicin de los mrgenes.

Los parmetros que modifique sern aplicados en tiempo real en los


grficos, para su visualizacin. Una vez terminada la edicin, cierre la
ventana o haga clic en Close.

Borders: podr ensanchar o estrechar todo el contenido de los grficos,


ajustando los bordes por arriba (top), abajo (bottom), izquierda (left) y
derecha (right).

Spacings: sirve para aumentar o reducir el espaciado entre grficos, en el


caso de que sea representado ms de uno a la vez en la misma ventana.
El espaciado entre grficos puede ser horizontal (wspace) o vertical
(hspace).

Botn Guardar: Haciendo clic sobre este botn podr guardar la


ventana del grfico formato de imagen, manteniendo los cambios
realizados. Tambin puede realizar esta accin desde la ventana principal
del programa.

Botn Personalizar o Customize: Pulsando el icono de este botn


acceder a una ventana en la que tendr que seleccionar el grfico que
desee personalizar:
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 91

Figura. A.14. Seleccin del grfico a personalizar.

A continuacin se abrir un nuevo men con dos opciones distintas de


edicin, separadas por pestaas:

Axes: Permite la edicin del ttulo del grfico, as como el rango de valores
de los ejes, su escala, y el nombre de cada eje.

Curves: Seleccionando la serie de valores deseada, podr editar el estilo


de los valores representados, permitiendo modificar la geometra, el
tamao y el color tanto de las lneas como de los marcadores.

Figura. A.15. Men pestaas de personalizacin: Axes y Curves.

Para aplicar los cambios pulse en OK o bien en Apply. Si desea


restablecer los cambios realizados, siga los siguientes pasos:
1. Cierre el grfico actual.
2. En el men principal, pulse Calcular.
3. Vuelva a generar el grfico por defecto pulsando el botn
Mostrar grficos.
Pg. 92 Memoria
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 93

Anexo B

B.1. Estructura del algoritmo

El esquema siguiente muestra la organizacin de los ficheros que contienen el algoritmo del
programa. Como puede observarse, los diferentes scripts estn relacionados siguiendo una
estructura jerrquica, donde Interfaz_grafica.py es el documento principal. Cada uno de
estos archivos posee una funcionalidad bien definida, que se detallar en el apartado
siguiente.

Interfaz_grafica.py

Menu.py Comprobar_datos.py matplotlibtest.py

Algoritmo_Isotermas.py Algoritmo_Cinetica.py

Definiciones_Isoterma.py Deficiniones_Cinetica.py

Figura. B.1. Estructura y organizacin de los archivos de Python que componen el


algoritmo del programa.
Pg. 94 Memoria

B.2. Scripts de Python

Definiciones_Cinetica.py

Archivo: Definiciones_Cinetica.py

Bibliotecas necesarias: numpy, pylab, matplotlib

Funciones:
1. Unidades_Elovich (AreaSuperficial)

Funcin: Asigna los valores de las etiquetas de los grficos adecundolos al modelo
cintico de Elovich: el ttulo del grfico, el nombre de los ejes y las unidades de los
valores representados. En funcin de si se conoce o no el valor del rea superficial,
las unidades que presenta el grfico sern diferentes.
Tambin contiene la ecuacin del modelo de Elovich a partir de la cual se calculan
los valores de concentracin para cada valor de tiempo introducido (variable
y_modelo).

Entrada: AreaSuperficial

Salida: Area_superficial, xlabel_lineal, xlabel_modelo, ylabel_lineal, ylabel_modelo,


nombre_modelo, label_modelo, y_modelo

2. Unidades_PseudoSegundo_Orden (AreaSuperficial)

Funcin: Procediendo del mismo modo que para la funcin Unidades_Elovich,


sta asigna los valores correspondientes a las etiquetas de los grficos
adaptndolos al modelo cintico de pseudo segundo orden: el nombre del grfico,
la etiqueta de los ejes y las unidades en que se presentan. En funcin de si se
conoce o no el valor del rea superficial, stos tomarn unos valores u otros.
Adems, tambin ofrece la ecuacin del modelo de pseudo segundo orden para el
clculo de concentraciones (variable y_modelo).

Entrada: AreaSuperficial

Salida: Area_superficial, xlabel_lineal, xlabel_modelo, ylabel_lineal, ylabel_modelo,


nombre_modelo, label_modelo, y_modelo

3. Linealizacion_Cinetica (numero_modelo, matriz, Vol_disolucion,


Area_superficial, Peso_solido)

Funcin: Calcula una matriz con los valores linealizados siguiendo la ecuacin del
modelo seleccionado. Posteriormente, con la matriz obtenida realiza un ajuste
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 95

lineal y obtiene los valores de la pendiente (m) y la ordenada en el origen (n) de la


recta resultante.

Entrada: AreaSuperficial

Salida: m, n, t_Qe (matriz de tiempo frente a concentracin en el equilibrio),


matrizresultado (matriz t_Qe traspuesta), Qe (matriz de concentraciones en el
equilibrio)

4. Parametros_Modelo_Cinetica (numero_modelo, mineral)

Funcin: Calcula los valores de las constantes correspondientes al modelo cintico


seleccionado.

Entrada: numero_modelo, mineral (ttulo del caso de estudio)

Salida: Modelo de Elovich Conc_eq, K


Modelo pseudo segundo orden a, b

5. Grafico_Linealizacion_Cinetica (fig, mineral, xdatos_lineal, ydatos_lineal,


numero_modelo)

Funcin: Representa el grfico de linealizacin del modelo seleccionado.

Entrada: fig, mineral, xdatos_lineal, ydatos_lineal, numero_modelo

Salida: ax1 (Grfico de linealizacin)

6. Modelizacion_Cinetica (matriz, matrix, numero_modelo)

Funcin: Realiza los clculos de la ecuacin del modelo para obtener los valores
de concentracin del modelo terico seleccionado.

Entrada: matriz, matrix, numero_modelo

Salida: cinetica_modelo, cinetica_modelizada, x_cinetica, y_cinetica, Qe

7. Grafico_Modelizacion_Cinetica (fig, mineral, xdatos_modelo,


numero_modelo)

Funcin: Representa un grfico dnde se visualiza el modelo terico y los valores


del modelo experimental introducidos.

Entrada: fig, mineral, xdatos_modelo, numero_modelo

Salida: ax2 (Grfico de modelizacin)


Pg. 96 Memoria

8. Comparacion_Cinetica (fig, xdatos_modelo, numero_modelo)

Funcin: Representa un nuevo grfico donde se visualizan todos los modelos


cinticos tericos.

Entrada: fig, xdatos_modelo, numero_modelo

Salida: ax3 (Grfico de comparacin)

9. Grafico_Comparacion_Cinetica (fig, mineral)

Funcin: Aade la serie de valores experimentales al grfico de comparacin y


establece los ttulos del grfico y de sus ejes.

Entrada: fig, mineral

Salida: ax3 (Grfico de comparacin)

Algoritmo_Cinetica.py

Archivo: Algoritmo_Cinetica.py

Bibliotecas necesarias: numpy, pylab, Definiciones_Cinetica, Interfaz_grafica

Funciones:
1. EjecutarC (numero_modelo, Area_superficial, Peso_solido, Vol_disolucion,
mineral, matriz, AreaSuperficial)

Funcin: Recopila los datos introducidos pertenecientes a los estudios de cintica


de adsorcin y ejecuta los algoritmos correspondientes al modelo seleccionado,
realizando los clculos pertinentes.

Entrada: numero_modelo, Area_superficial, Peso_solido, Vol_disolucion, mineral,


matriz, AreaSuperficial

Salida: Segn el modelo cintico de adsorcin seleccionado, representa el grfico


cintico resultante.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 97

Definiciones_Isoterma.py

Archivo: Definiciones_Isoterma.py

Bibliotecas necesarias: numpy, pylab, matplotlib

Funciones:
1. Unidades_Langmuir (AreaSuperficial)

Funcin: Asigna los valores siguientes de las etiquetas de los grficos


correspondientes a la isoterma de Langmuir: el ttulo del grfico, el nombre de los
ejes y las unidades de los valores representados. En funcin de si se conoce o no
el valor del rea superficial, las unidades que presente el grfico sern diferentes.
Tambin contiene la ecuacin de Langmuir a partir de la cual se calculan los valores
de concentraciones en el equilibrio (variable y_modelo).

Entrada: AreaSuperficial

Salida: Area_superficial, xlabel_lineal, xlabel_modelo, ylabel_lineal, ylabel_modelo,


nombre_modelo, label_modelo, y_modelo

2. Unidades_Freundlich (AreaSuperficial)

Funcin: Procediendo del mismo modo que para la funcin Unidades_Langmuir,


sta asigna los valores correspondientes a las etiquetas de los grficos
adaptndolos al modelo de la isoterma de Freundlich: el nombre del grfico, la
etiqueta de los ejes y las unidades en que se presentan. En funcin de si se conoce
o no el valor del rea superficial, stos tomarn unos valores u otros.
Adems, tambin ofrece la ecuacin de Freundlich para el clculo de
concentraciones (variable y_modelo).

Entrada: AreaSuperficial

Salida: Area_superficial, xlabel_lineal, xlabel_modelo, ylabel_lineal, ylabel_modelo,


nombre_modelo, label_modelo, y_modelo

3. Linealizacion_Isoterma (numero_modelo, matriz, Vol_disolucion,


Area_superficial, Peso_solido)

Funcin: Calcula una matriz con los valores linealizados siguiendo la ecuacin del
modelo seleccionado. Posteriormente, con la matriz obtenida realiza un ajuste lineal
y obtiene los valores de la pendiente (m) y la ordenada en el origen (n) de la recta
resultante.

Entrada: AreaSuperficial
Pg. 98 Memoria

Salida: m, n, Ce_Qe (matriz de tiempo frente a concentracin en el equilibrio),


matrizresultado (matriz Ce_Qe traspuesta), Qe (matriz de concentraciones en el
equilibrio)

4. Parametros_Modelo_Isoterma (numero_modelo, mineral)

Funcin: Calcula los valores de las constantes correspondientes al modelo de


isoterma seleccionado.

Entrada: numero_modelo, mineral (ttulo del caso de estudio)

Salida: Isoterma de Langmuir Conc_max, KL


Isoterma de Freundlich K, N

5. Grafico_Linealizacion_Isoterma (fig, mineral, xdatos_lineal, ydatos_lineal,


numero_modelo)

Funcin: Representa el grfico de linealizacin del modelo seleccionado.

Entrada: fig, mineral, xdatos_lineal, ydatos_lineal, numero_modelo

Salida: ax1 (Grfico de linealizacin)

6. Modelizacion_Isoterma (matriz, matrix, numero_modelo)

Funcin: Realiza los clculos de la ecuacin del modelo para obtener los valores
de concentracin del modelo terico seleccionado.

Entrada: matriz, matrix, numero_modelo

Salida: isoterma_modelo, isoterma_modelizada, x_isoterma, y_isoterma, Qe

7. Grafico_Modelizacion_Isoterma (fig, mineral, xdatos_modelo,


numero_modelo)

Funcin: Representa un grfico dnde se visualiza el modelo terico y los valores


del modelo experimental introducidos.

Entrada: fig, mineral, xdatos_modelo, numero_modelo

Salida: ax2 (Grfico de modelizacin)


Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 99

8. Comparacion_Isotermas (fig, xdatos_modelo, numero_modelo)

Funcin: Representa un nuevo grfico donde se visualizan todas las isotermas de


adsorcin.

Entrada: fig, xdatos_modelo, numero_modelo


Salida: ax3 (Grfico de comparacin)

9. Grafico_Comparacion_Isoterma (fig, mineral)

Funcin: Aade la serie de valores experimentales al grfico de comparacin y


establece los ttulos del grfico y de sus ejes.

Entrada: fig, mineral

Salida: ax3 (Grfico de comparacin), nombre modelo

Algoritmo_Isotermas.py

Archivo: Algoritmo_Isotermas.py

Bibliotecas necesarias: numpy, pylab, Definiciones_Isoterma, Interfaz_grafica

Funciones:
1. EjecutarI (numero_modelo, Area_superficial, Peso_solido, Vol_disolucion,
mineral, matriz, AreaSuperficial)

Funcin: Recopila los datos introducidos pertenecientes a los estudios de isotermas


de adsorcin y ejecuta los algoritmos correspondientes al modelo seleccionado,
realizando los clculos pertinentes.

Entrada: numero_modelo, Area_superficial, Peso_solido, Vol_disolucion, mineral,


matriz, AreaSuperficial

Salida: Segn el modelo de isoterma de adsorcin seleccionado, representa el


grfico de la isoterma resultante.
Pg. 100 Memoria

Comprobar_Datos.py

Archivo: Comprobar_datos.py

Bibliotecas necesarias: numpy, PyQt4, Menu, Algoritmo_Cinetica, Algoritmo_Isotermas

Funciones:
Clase ManejoDatos (QtGui.QMainWindow)

1. ComprobarDatos (self, A)

Funcin: En esta funcin se declara una variable para cada widget contenido en la
interfaz grfica. Tambin asigna un valor a la variable numero_modelo en funcin
del modelo seleccionado, tanto para las cinticas (A=1) como para las isotermas de
adsorcin (A=2).
Finalmente, activa un mensaje en funcin de si los datos introducidos son vlidos o
no.

Entrada: A

Salida: Activa/Desactiva los siguientes mensajes de error (etiquetas de la interfaz


grfica): ErrorModeloI, ErrorModeloC, DatosIncorrectos

2. LeerDatos (self, ValorElemento, ErrorElemento, ValorVolumen,


ErrorVolumen, ValorPeso, ErrorPeso, ValorAreaSup, ErrorAreaSup, A,
DatosCorrectos, DatosIncorrectos, Tabla, ErrorTabla)

Funcin: Almacena los valores introducidos en los diferentes campos del formulario
por parte del usuario, y en funcin de si pueden ser almacenados o no en el formato
de dato especificado, muestran su respectivo mensaje de error en la interfaz grfica.

Entrada: self, ValorElemento, ErrorElemento, ValorVolumen, ErrorVolumen,


ValorPeso, ErrorPeso, ValorAreaSup, ErrorAreaSup, A, DatosCorrectos,
DatosIncorrectos, Tabla, ErrorTabla

Salida: LeerTabla, Activa/Desactiva los siguientes mensajes de error (etiquetas de


la interfaz grfica): ErrorElemento, ErrorPeso, ErrorVolumen, ErrorAreaSup

3. Leer_matriz (self, A, DatosIncorrectos, Tabla, ErrorTabla)

Funcin: Abre el archivo de texto previamente creado y lee una a una todas las
lneas de texto a medida que va almacenando los valores introducidos en una
matriz. En caso de producirse algn error durante este proceso, muestra su
particular mensaje de error en la interfaz grfica.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 101

Entrada: A, DatosIncorrectos, Tabla, ErrorTabla

Salida: matriz, Activa/Desactiva mensaje de error ErrorTabla

Interfaz_grafica.py

Archivo: Interfaz_grafica.py

Bibliotecas necesarias: numpy, PyQt4, Menu, Comprobar_datos

Funciones:

Clase MiFormulario(QtGui.QMainWindow)

1. __init__ (self)

Funcin: Contiene las seales y acciones a realizar de todos los elementos de la


interfaz grfica, asignndoles a cada una su funcin correspondiente.

2. Instrucciones (self)

Funcin: Esta funcin contiene el texto con las instrucciones que se muestran en la
ventana principal de la interfaz grfica.

3. RadioAreaSuperficialC (self)

Funcin: Se encarga de reestablecer el valor inicial del rea superficial que se


muestra en la pestaa de Cinticas de la interfaz grfica, adoptando 1 por valor.

4. RadioAreaSuperficialC (self)

Funcin: Se encarga de reestablecer el valor inicial del rea superficial que se


muestra en la pestaa de Isotermas de la interfaz grfica, adoptando 1 por valor.

5. ValidarCinetica (self)

Biblioteca: Comprobar_datos

Funcin: En funcin del mensaje obtenido sobre el almacenamiento de los datos de


la interfaz grfica (Datos Correctos/Incorrectos) pertenecientes a la pestaa de
Cinticas, activa/desactiva los botones que permiten continuar con la resolucin del
caso y realizar los clculos respectivos.
Pg. 102 Memoria

6. ValidarIsoterma (self)

Biblioteca: Comprobar_datos

Funcin: En funcin del mensaje obtenido sobre el almacenamiento de los datos de


la interfaz grfica (Datos Correctos/Incorrectos) pertenecientes a la pestaa de
Isotermas, activa/desactiva los botones que permiten continuar con la resolucin
del caso y realizar los clculos respectivos.

7. CalcularCinetica (self)

Biblioteca: Comprobar_datos

Funcin: Una vez pulsado el botn de Calcular de la pestaa Cinticas, ejecuta el


algoritmo contenido en la biblioteca Algoritmo_Cinetica y si no se produce ningn
error, activa los botones de Mostrar Grafico y Guardar Grfico de la pestaa
mencionada.

8. CalcularCinetica (self)

Biblioteca: Comprobar_datos

Funcin: Una vez pulsado el botn de Calcular de la pestaa Isotermas, ejecuta


el algoritmo contenido en la biblioteca Algoritmo_Isoterma y si no se produce
ningn error, activa los botones de Mostrar Grafico y Guardar Grfico
pertenecientes a dicha pestaa.

9. GraficoCinetica (self)

Biblioteca: matplotlibtest, Definiciones_Cinetica, Algoritmo_Cinetica

Funcin: Abre/Actualiza la ventana de la interfaz grfica que contiene los grficos


con los resultados obtenidos para el caso cintico de estudio.

10. GraficoIsoterma (self)

Biblioteca: matplotlibtest, Definiciones_Isoterma, Algoritmo_Isotermas

Funcin: Abre/Actualiza la ventana de la interfaz grfica que contiene los grficos


con los resultados obtenidos para el caso de isoterma estudiado.
Creacin de una aplicacin con Python para el anlisis de ensayos experimentales de adsorcin Pg. 103

11. GuardarImagenCinetica (self)

Biblioteca: Algoritmo_Cinetica

Funcin: Abre un cuadro de dilogo para guardar el grfico cintico obtenido y se


encarga de almacenarlo en formato de imagen con el nombre especificado.

12. GuardarImagenIsoterma (self)

Biblioteca: Algoritmo_Isotermas

Funcin: Abre un cuadro de dilogo para guardar el grfico de isoterma obtenido y


se encarga de almacenarlo en formato de imagen con el nombre especificado.

13. Reiniciar (self)

Funcin: Reestablece todos los elementos de la interfaz grfica a su estado inicial


en el que se encuentran al ejecutar el programa.

matplotlibtest.py

Archivo: matplotlibtest.py

Bibliotecas necesarias: PyQt4, numpy, matplotlib, Algoritmo_Isotermas, Algoritmo_Cinetica,


Comprobar_datos

Funciones:

Clase Qt4MplCanvas(FigureCanvas)

1. __init__ (self)

Funcin: Segn si se trata de un caso de estudio cintico (C=1) o de isoterma (C=2)


imprime el grfico respectivo obtenido en la ventana creada.

Clase ApplicationWindow(QtGui.QMainWindow)

1. __init__ (self)

Funcin: crea la ventana donde se presentan los grficos, e inicializa todos los
elementos de sta.
Pg. 104 Memoria

2. fileQuit(self):

Funcin: Contiene la accin de cerrar la ventana creada.

3. closeEvent(self, ce):

Funcin: Realiza la accin de cerrar la ventana creada

4. about(self):

Funcin: Muestra y contiene las instrucciones de uso que aparecen en el apartado


de Ayuda de la ventana del grfico.

Menu.py

Archivo: Menu.py

Bibliotecas necesarias: PyQt4

Funcin: Este archivo contiene toda la informacin sobre el diseo y la apariencia de la interfaz
grfica de usuario: el tipo de objeto, tamao, estilo, color, fuente de todos los elementos que
la conforman.

Este archivo se obtuvo a partir de QtCreator, el cual permite crear el diseo de la interfaz de
forma grfica, y posteriormente generar un archivo traducido a cdigo de programacin.

setup.py

Archivo: setup.py

Bibliotecas necesarias: cx_Freeze

Funcin: Este documento hace referencia al constructor del ejecutable. En l se definen todas
las instrucciones y mtodos para la creacin del archivo ejecutable. Tambin se encarga de
recopilar todos los archivos y bibliotecas para que el programa pueda funcionar, y contiene
informacin acerca de la aplicacin: el nombre, el autor, la versin, las imgenes de los iconos,
etc.

Вам также может понравиться