T09117

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 127

DESARROLLO DEL SISTEMA DE CONTROL PARA EL COMPRESOR

CAMPBELL HAUSFELD DE 40 HP DEL SENA- ASTIN

JEAN BREITNER MORA GALVIS


CÓDIGO: 2150913

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE


FACULTAD DE INGENIERÍA
DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA
PROGRAMA INGENIERÍA MECATRÓNICA
SANTIAGO DE CALI
2020
DESARROLLO DEL SISTEMA DE CONTROL PARA EL COMPRESOR
CAMPBELL HAUSFELD DE 40 HP DEL SENA- ASTIN

JEAN BREITNER MORA GALVIS

Pasantía institucional para optar al título de


Ingeniero Mecatrónico

Director
WILLIAM GUTIERREZ MARROQUIN
Magister en Ingeniería

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE


FACULTAD DE INGENIERÍA
DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA
PROGRAMA INGENIERÍA MECATRÓNICA
SANTIAGO DE CALI
2020
Nota de aceptación:

Aprobado por el Comité de Grado en


cumplimiento de los requisitos exigidos
por la Universidad Autónoma de
Occidente para optar al título de
Ingeniero Mecatrónico

William Gutiérrez Marroquín

Jimmy Tombe

Santiago de Cali, 24 de febrero de 2020


AGRADECIMIENTOS

Quiero agradecer a mi madre Francia Elena Galvis Ramírez, por el apoyo


económico y emocional para culminar mi carrera, de no ser por ella no lograría llegar
a ser un profesional, a Paula Andrea Ospina Erazo por llegar a mi vida en el
momento indicado, a Ronny Alexis Londoño mi compañero y amigo, gracias por tu
ayuda durante todos estos semestres.

Profundamente agradecido con la Universidad Autónoma de Occidente, a sus


directivos y docentes por los conocimientos trasmitidos a lo largo de la carrera.

Agradezco a Jhonny Alexander Garcés por permitirme desarrollar mi pasantía con


el Sena Astin, por su compresión y apoyo durante todo el proyecto.

4
CONTENIDO
pág.

RESUMEN 12

INTRODUCCIÓN 14

1. PLANTEAMIENTO DEL PROBLEMA 16

2. JUSTIFICACIÓN 17

3. OBJETIVOS 19

3.1 OBJETIVO GENERAL 19

3.2 OBJETIVOS ESPECÍFICOS 19

4. ANTECEDENTES 20

4.1 CONTEXTO HISTÓRICO 20

4.2 CONTEXTO TECNOLÓGICO 21

4.3 APLICACIONES DE SISTEMAS DE CONTROL A COMPRESORES 23

4.3.1 Aplicaciones de refrigeración industrial con amoníaco y CO2 23

5. MARCO DE REFERENCIA 27

5.1 MARCO TEORICO 27

5.2 MARCO CONTEXTUAL 29

5.2.1 Misión y visión del Sena 29

5.3 MARCO CONCEPTUAL 30

5.3.1 Compresores de tornillo 30

5.3.2 VNC 30

5
5.3.3 Python 31

5.3.4 Instrumentación industrial 31

5.3.5 Arduino 31

5.3.6 PLC 32

5.3.7 Raspberry pi 33

6. METODOLOGÍA 35

6.1 ETAPAS DEL PROYECTO 35

6.1.1 Planeación 35

6.1.2 Diseño 35

6.1.3 Verificación 35

6.1.4 Puesta en marcha 36

7. PLANTEAMIENTO DE LA MISIÓN, IDENTIFICACIÓN DE


NECESIDADES Y ESPECIFICACIONES TECNICAS 37

7.1 PLANTEAMIENTO DE LA MISIÓN 37

7.2 IDENTIFICACIÓN DE NECESIDADES 39

7.3 ESTABLECIMIENTO DE MEDIDAS Y UNIDADES 40

7.4 DESPLIEGUE DE LA FUNCIÓN DE CALIDAD (QFD) 41

7.5 MATRIZ PARA EVALUAR CONCEPTOS 42

8. DESARROLLO DEL SISTEMA DEL CONTROL 43

8.1 ESPECIFICACIÓNES SENSORES Y CONTROLADOR 45

8.1.1 Sensor de presión y temperatura 45

8.1.2 Microcontrolador Arduino mega 2560 46

8.1.3 Características del Arduino mega 2560 47

6
8.1.4 Especificaciones Arduino mega 2560 47

8.1.5 Ventajas Arduino mega 2560 48

8.2 CRITERIOS DE SELECCIÓN ACCIONAMIENTO DE EQUIPOS 48

8.2.1 Características relé de 8 canales 49

9. SISTEMA DE SUPERVISION 53

9.1 PROCEDIMIENTO PARA EL ACCESO A LA RASPBERRY PI VIA


REMOTA 58

10. SISTEMA DE CONTROL Y POTENCIA 62

11. PLANOS FINALES Y PUESTA EN MARCHA DEL COMPRESOR 68

12. RELACIÓN COSTO BENEFICIO SENA-ASTIN 78

13. CONCLUSIONES 80

14. RECOMENDACIONES 81

BIBLIOGRAFÍA 82

ANEXOS 85

7
LISTA DE FIGURAS

Figura 1. Proyecto compresor, empresa Burckhardt Compression 22

Figura 2. Sistema de refrigeración con bomba de circulación 24

Figura 3. Arduino Mega 2560 32

Figura 4. PLC Festo FC660, Siemens Logo y Simatic S7-200 33

Figura 5. Raspberry pi 3 34

Figura 6. Compresor Campbell Hausfeld Sena-Astin 43

Figura 7. Tarjeta de control antigua 43

Figura 8. Adecuación de señal de 4 -20ma a 1-5v 46

Figura 9. Interfaz de supervisión 53

Figura 10. Configuración Raspberry Pi 57

Figura 11. Habilitación VCN 58

Figura 12. Tablero de control 62

Figura 13. Cableado tablero de control 63

Figura 14. Descripción general tablero de control 64

Figura 15. Descripción externa del tablero de control 64

Figura 16. Componentes de seguridad tablero de control 65

Figura 17. Borneras para cambio de 4-20ma a 1-5v 65

Figura 18. Descripción general tablero de potencia 66

Figura 19. Pruebas de conexión tablero de control 66

Figura 20. Pruebas de conexión tablero de potencia 66

Figura 21. Conexión sensores compresor 67

Figura 22. Conexión sensores tablero de control 67

8
Figura 23. Plano de alimentación 69

Figura 24. Plano de entradas del Arduino 70

Figura 25. Plano salidas de control 71

Figura 26. Plano relevos y potencia 72

Figura 27. Plano conexiones Raspberry 73

Figura 28. Plano borneras del tablero de control 74

Figura 29. Plano borneras del tablero de potencia 75

9
LISTA DE TABLAS

pág.
Tabla 1. Misión del Proyecto 37

Tabla 2. Importancia de las necesidades 39

Tabla 3. Tabla de necesidades del proyecto 39

Tabla 4. Métricas del sistema 40

Tabla 5. Estados de verificación 45

Tabla 6. Elementos empleados para el sistema de control 50

Tabla 7. Pasos para acceso remoto Raspberry pi 59

Tabla 8. Instructivo puesta en marcha compresor 75

Tabla 9. Ingresos del Sena-Astin 78

Tabla 10. Costos del proyecto 78

10
LISTA DE ANEXOS

pág.
Anexo A. Métricas vs. Necesidades 85

Anexo B. QFD 86

Anexo C. Matriz para el tamizaje de conceptos 86

Anexo D. Matriz para evaluar conceptos 86

Anexo E. Grafcet proceso principal del compresor 87

Anexo F. Grafcet de fallos del sistema 88

Anexo G. Entradas y Salidas del compresor 88

Anexo H. Código de control Arduino 89

Anexo I. Caracterazión sensor de temperatura 117

Anexo J. Caracterización sensor de presión 117

Anexo K. Código sistema de supervisión 118

Anexo L. Diseño 3d tablero de control 126

Anexo M. Cotización empresa DISH Ingeniería 127

11
RESUMEN

La pasantía institucional realizada en el Sena Astin se dio con el fin de resolver una
problemática encontrada en el Compresor CAMPBELL HAUSFELD. Su tarjeta de
control, al estar dañada y no poderla conseguir en el país, requería el desarrollo de
un nuevo sistema de control con el fin de lograr la puesta en marcha del compresor.

El sistema de control y la implementación para la puesta en marcha del compresor,


se realizaron a parir de unas etapas que se podrán observar a lo largo del
documento, estas etapas se componen por una planeación, diseño, verificación y
finalmente una puesta en marcha, esto con el fin de tener una correcta metodología
durante la elaboración del proyecto.

Para poder determinar el desarrollo óptimo del sistema, se estudiaron


microcontroladores con los que se lograra el correcto funcionamiento del compresor,
además de cumplir con los requerimientos establecidos por el Sena, entre los cuales
se encontraba la economía del mismo. Los microcontroladores estudiados fueron:
PLC, Arduino, Raspberry y Pic.

A partir de una matriz de selección (QFD) se definió la métrica de mayor peso para
el proyecto y con la matriz para evaluar conceptos se optó por el Arduino en conjunto
con la raspberry. El Arduino como maestro, el cual obtendrá los datos de las
variables sensadas (presión y temperatura), además de controlar las salidas y
entradas del compresor; la raspberry trabajará como esclavo, esta tomará los datos
de las variables y por medio de una interfaz brindará una visualización en tiempo
real de los datos, además de avisar cuando se encuentre una falla en el compresor.

Finalmente, se implementa el cableado en el tablero de control y de potencia, para


así realizar pruebas con el compresor, esto con el fin de identificar posibles fallas,
una vez se identifiquen las fallas y se realicen pruebas de verificación, se deja en
línea el compresor con las plantas que requieran aire comprimo.

Palabras clave: PLC, Arduino, Raspberry, Pic, compresor.

12
ABSTRACT

The institutional internship conducted at Sena Astin was given in order to solve a
problem found in the CAMPBELL HAUSFELD Compressor. Your control card, being
damaged and unable to obtain in the country, request the development of a new
control system in order to achieve the start-up of the compressor.

The control system and the implementation for the start-up of the compressor, select
a couple of stages that can be observed throughout the document, these stages are
made up of a planning, design, verification and finally a start-up, this with the in order
to have a correct methodology for the development of the project.

In order to determine the most optimal development of the system, they studied
microcontrollers with which they achieve the correct functioning of the compressor,
in addition to complying with the requirements established by the Seine, among
which is the economy of the same. The microcontrollers studied were: PLC, Arduino,
Raspberry and Pic.

Based on a selection matrix (QFD), the most important metric for the project is
defined and with the matrix to evaluate concepts, the Arduino was chosen in
conjunction with the raspberry. The Arduino as master, which controls the data of
the sensed variables (pressure and temperature), in addition to controlling the
outputs and inputs of the compressor; The raspberry will work as a slave, will take
the data of the variables and through an interface will provide a real-time display of
the data, in addition to warning when it finds a fault in the compressor.

Finally, the wiring is implemented in the control and power board, in order to perform
tests with the compressor, this in order to identify possible failures, once the failures
are identified and verification tests are carried out, the compressor is left in line with
plants that require compressed air.

Keywords: PLC, Arduino, Raspberry, Pic, compressor.

13
INTRODUCCIÓN

Los compresores son máquinas cuya finalidad es aportar una energía a los fluidos
compresibles (gases y vapores) sobre los que operan, para hacerlos fluir
aumentando al mismo tiempo su presión.1

En los últimos años estos compresores han tenido impactos muy positivos en la
industria, teniendo como fin brindar aire comprimido a los diferentes procesos que
lo requieran, “los compresores se emplean para aumentar la presión de una gran
variedad de gases y vapores para un gran número de aplicaciones, un caso común
es el compresor de aire, que suministra aire a elevada presión para transporte,
pintura a pistola, inflamiento de neumáticos, limpieza, herramientas neumáticas y
perforadoras, otras aplicaciones abarcan procesos químicos, conducción de gases,
turbinas de gas y construcción”2

Dependiendo del proceso a realizar se dimensiona el compresor. Para su


dimensionamiento es necesario conocer el trabajo que va a realizar y conforme a
esto se calcula el consumo requerido, en PSI o BAR.

Teniendo claro el consumo de aire comprimido por parte de la maquinaria, la


potencia o el caballaje del compresor tendrá que ser mayor, para procesos
industriales normalmente se trabaja entre 40 y 100 caballos de fuerza.

Los compresores han tenido grandes avances tecnológicos en los últimos años, uno
de ellos es el control neumático mediante lógica digital, la tecnología los ha
posibilitado a que tengan aplicaciones en el maquinado y la construcción,

1 GIMENO, Alberto Alfaro. "Modelado y simulación de compresores", [En linea]. Ingeniería técnica
industrial: mecánica. Madrid España. Universidad Carlos III de Madrid. Facultad de Ingenieria.
Departamento de mecanica, 2009. [Consultado: 11, julio, 2019 ]. Disponible en internet: https://e-
archivo.uc3m.es/bitstream/handle/10016/7714/PFC_Alberto_Alfaro_Gimeno.pdf?sequence=1&isAll
owed=y

2 Cardona, A; Nigro, N; Sonzogni, V. y Storti, M. “Modelización numérica de un compresor


monocilindrico de desplazamiento positivo”. [En linea]. En: Mecánica Comput. 25, 1313–1334, 2006
[Consultado: 11, julio, 2019 ]. Disponible en internet:
https://www.researchgate.net/profile/Gaston_Bourges/publication/228624800_MODELIZACION_N
UMERICA_DE_UN_COMPRESOR_MONOCILINDRICO_DE_DESPLAZAMIENTO_POSITIVO/link
s/0deec524385fb892f4000000.pdf

14
actualmente las industrias requieren compresores programables y automáticos que
brinden un total control del proceso, obligando a que estos sean más eficientes.

El centro de formación Astin del SENA requiere disponer de aire comprimido para
el funcionamiento de las máquinas y equipos utilizados en la formación de técnicos
y tecnólogos, por lo cual se hace indispensable colocar en funcionamiento el
compresor CAMPELL HAUSFELD.

Este proyecto de grado tiene como fin rediseñar sistema de control del compresor
con precios económicos en el mercado, este es uno de los mayores requerimientos,
además de añadirle parámetros que mejoren el rendimiento del mismo y con ayuda
de un microprocesador realizar una interfaz amigable con el usuario.

15
1. PLANTEAMIENTO DEL PROBLEMA

El compresor Campbell Hausfeld, del Sena ASTIN, se encuentra fuera de servicio,


debido a que tiene dañada la tarjeta principal de control, y dada su antigüedad, no
se consigue fácilmente; adicional, dado que este equipo, ya no cuenta con
representación de marca en el País, dicha tarjeta debe ser importada, lo que
encarece los costos y dificulta aún más el mantenimiento del mismo.

El compresor de aire CAMPBELL HAUSFELD, es un equipo transversal que se


utiliza para alimentar equipos y maquinarias que intervienen en los procesos
modulares del centro como son; Transformación de plásticos, matricera,
laboratorios de ensayos y calibraciones.

El centro ASTIN cuenta con una capacidad instalada de alrededor de 50 unidades


en maquinaria y equipos distribuidos en los procesos mencionados anteriormente,
de la maquinaria y equipos actuales aproximadamente el 60% requieren aire
comprimido para su funcionamiento.

¿Qué sistema de control sería el más eficiente para el rendimiento óptimo del
compresor de aire CAMPBELL HAUSFELD?

16
2. JUSTIFICACIÓN

El SENA a pesar de ser una empresa dedicada a la formación, y no en su totalidad


a la producción, puede presentar pérdidas de forma directa en los diferentes
procesos internos que se llevan a cabo dentro del centro ASTIN, los cuales son los
siguientes:

 Servicios Tecnológicos

Parte de la maquinaria del centro ASTIN es utilizada para generar productos y


realizar servicios para demandas particulares que requiere la industria regional y
algunas veces de carácter Nacional, en promedio estos servicios en los dos últimos
años han generado ingresos facturados por $107'500.000 COP.

 Autoconsumo

El autoconsumo hace referencia a los servicios o productos que se generan y se


utilizan dentro del mismo centro de formación, en promedio los gastos registrados
en los últimos dos años fueron alrededor de $105'000.000 COP.

 Formación

El costo anual de formar un aprendiz en este tipo de tecnologías es de 2'000.000,


asociados a fichas que se conforman aproximadamente de 15 aprendices.

Para el año 2019 el centro cuenta con una población de 534 aprendices activos
distribuidos en 39 fichas que se encuentran asociadas a la formación en tecnologías
duras del centro.

De la maquinaria del centro que se utiliza para prestar servicios tecnológicos y de


autoconsumo, el 40% requieren aire comprimido para su funcionamiento, este
porcentaje es considerable teniendo en cuenta los ingresos facturados en los
últimos dos años, para la parte de formación el 60% lo requieren3.

3 SENA, Astin. “Portafolio laboratorios Sena Astin” [En línea], Sena 2016. [Consultado: 29, julio, 2019
]. Disponible en internet: https://drive.google.com/file/d/0BwyuZeRCqmtiRmcwWlZNX0Rtelk/view

17
Según el documento “Control de sistema de posicionamiento neumático” de Arias
Osorio los sistemas de adquisición de datos basados en computadora aprovechan
la potencia del procesamiento, la productividad, la visualización y las habilidades de
conectividad de las computadoras estándares en la industria, esto proporciona una
solución de medidas más potente, flexible y rentable”4.

El desarrollo del sistema de control permitirá el funcionamiento óptimo del


compresor, beneficiando los procesos del Sena ASTIN.

4ARIAS OSORIO, Oscar Eduardo. “Control de sistema de posicionamiento neumático”. [En línea].
Tecnología eléctrica. Pereira Colombia. Universidad Tecnológica de Pereira. Facultad de
Tecnología. Departamento de eléctrica, 2016. [Consultado: 29, julio, 2019 ]. Disponible en internet:
https://core.ac.uk/download/pdf/84108387.pdf

18
3. OBJETIVOS

3.1 OBJETIVO GENERAL

Desarrollar el sistema de control para el compresor CAMPBELL HAUSFELD del


SENA- ASTIN, con el fin de mejorar la disponibilidad de aire comprimido y su puesta
en funcionamiento.

3.2 OBJETIVOS ESPECÍFICOS

 Definir las estrategias adecuadas.

 Diseñar el sistema de supervisión.

 Ensamblar los componentes en el tablero de control y de potencia.

 Poner en operación el compresor con el nuevo sistema de control.

19
4. ANTECEDENTES

4.1 CONTEXTO HISTÓRICO

Se dice que el primer “compresor de aire” en realidad es el pulmón del ser humano.
Como el cuerpo humano puede exhalar, nuestros antepasados utilizaron su aliento
para avivar fogatas desde los tiempos más remotos.

La tendencia a utilizar nuestro propio aire a presión, a pesar de que es relativamente


poco, nos ayudó a sobrevivir en situaciones para aquel entonces inhumanas, esta
práctica ocurrió cerca del 3000 A.C, se descubrieron metales como el oro y el cobre
y a partir de ahí comenzó la época de la metalurgia. En busca de nuevas
herramientas se dieron cuenta que estos metales requerían temperaturas más
elevadas para llegar al punto líquido y poderlos moldear.

Unos pulmones saludables pueden producir solamente de 0.02 a 0.08 bar (1 bar
equivale a 14.5 psi) de presión, por lo que no era suficiente para ayudar a
incrementar la temperatura, además de que el dióxido de carbono que contiene el
aliento humano no ayudaba. La demanda por generar aire a mayor presión comenzó
a incrementar conforme el tiempo pasaba.

En el año 1500 D.C. se inventó el primer compresor de aire que consistía en una
bolsa flexible que al aplastarse producía aire a presión y ayudaba a mantener las
altas temperaturas que necesitaban.

Años después de la construcción del compresor se idearon nuevas alternativas para


mejorar el construido con anterioridad, no fue sino hasta 1762, cuando un ingeniero
llamado John Smeaton diseñó un cilindro soplador manejado por energía hidráulica
y poco a poco fue sustituyendo a su antecesor.

A pesar de que el invento de Smeaton era eficiente para aquel entonces, fue
reemplazado por una maquina inventada por Johm Wilkinson en 1776. Esa máquina
se convertiría en el llamado “borrador” para los compresores mecánicos posteriores,
utilizando una máquina de vapor en una bomba de aire.

20
Los compresores de aire tenían muchas funcionalidades para aquella época, se
empezaron a utilizarse para distintas actividades, como la minería y ventilación de
áreas subterráneas.

Cuando se construyó el sistema de trenes de Italia-Francia, en 1857,


los compresores se utilizaban para poder mover grandes volúmenes de aire en
la construcción del túnel que tenía una distancia aproximada de 13 kilómetros.

Durante el año 1800, la población empezó a utilizar los compresores de aire para
transmitir energía, el aire al estar comprimido genera de cierta manera energía
cinética por el calor de las moléculas al ser espuertas a estar en un menor espacio
o volumen.

El ingeniero austriaco Víctor Popp creo entonces la primera planta de compresores


en 1888. En tan solo 3 años, la planta de 1,500kW de Popp creció de manera
significativa a 18,000kW. A medida que pasaba el tiempo surgieron más
innovaciones en el área del aire comprimido y pronto se incorporó la energía
eléctrica y neumática a la ecuación5.

En la actualidad los compresores tienen distintas aplicaciones, por tal motivo se


vienen desarrollando nuevas tecnologías que permiten su funcionamiento óptimo,
estas tecnologías van ligadas directamente al control propio del compresor, por tal
motivo se identifican cada vez nuevos procesadores, como el PLC, Arduino,
Raspberry y PIC, estos dispositivos tienen como finalidad aparte de garantizar el
control de variables como temperatura y presión del compresor, poder identificar
fallas dentro de él, para su fácil mantenimiento.

4.2 CONTEXTO TECNOLÓGICO

Analizando la problemática planteada en la empresa se realizó un estudio de


investigación para conocer las diferentes propuestas referentes a las temáticas
tratadas, que brinden similares características al proyecto a implementar, se
propone con la ayuda de los microprocesadores poder controlar, gestionar y
supervisar todo el abastecimiento de aire comprimido de manera óptima.

5 BURCKHARDT COMPRESSION. "Proyectos de ingeniería y modernización de compresores". [En


línea]. Planes de acción bien definidos para unas soluciones óptimas. Diciembre 2016. [Consultado:
20, julio, 2019]. Disponible en internet: https://www.burckhardtcompression.com/wp-
content/uploads/2016/12/23_BC_Brochure_Revamp_Uppgrade_ES_Web.pdf

21
La figura 1 nos muestra los planes de acción para soluciones óptimas en los
compresores por la empresa Burckhardt Compression, se enfocan en diferentes
alternativas, una es la renovación, se realizan cambios tecnológicos en el compresor
modificando sus capacidades, implementan ingeniería inversa para crear nuevas
soluciones de mejora, también se enfocan en la sustitución del compresor,
reemplazando en su totalidad sus partes, finalmente proceden a realizar una
modernización, optimización, legalización y modificación según lo presente.

Figura 1. Proyecto compresor, empresa Burckhardt Compression

Fuente: BURCKHARDT COMPRESSION. "Proyectos de ingeniería y


modernización de compresores". [En línea]. Planes de acción bien definidos para
unas soluciones óptimas. Diciembre 2016. [Consultado: 20, julio, 2019]. Disponible
en internet: https://www.burckhardtcompression.com/wp-
content/uploads/2016/12/23_BC_Brochure_Revamp_Uppgrade_ES_Web.pdf

22
En la etapa de revisión del estado del arte se encontró un proyecto el cual con la
“implementación del controlador prototipo basado en un microcontrolador, con la
tarjeta se realiza la adquisición de variables para hacer la lectura de datos de los
transductores del sistema del compresor, con la tarjeta de interfaz de potencia se
envía señales de control a los preactuadores para controlar el funcionamiento del
compresor y se programaron los modos de compresión de encendido “dentro y fuera
de línea” y de “modulación” en la compresión”6

Teniendo un buen control en el compresor se realizaron procesos de


mantenimiento, “el principal objetivo del mantenimiento es obtener el máximo
producto por el mínimo de costo (utilidad), y es la práctica de monitorear
periódicamente la máquina y establecer tendencias de la condición mecánica y
rendimiento de la misma, mediante la predicción de si un elemento va a fallar o
posiblemente cuando va a fallar”7.

Dado que el objetivo central de este análisis es la implementación de un sistema de


control con microcontroladores (Raspberry y Arduino) a un compresor de tornillo
como proyecto de abordaje, será necesario plantear algunos parámetros como ejes
conceptuales para la interpretación de la problemática planteada en el proyecto.

4.3 APLICACIONES DE SISTEMAS DE CONTROL A COMPRESORES

4.3.1 Aplicaciones de refrigeración industrial con amoníaco y CO2

En los sistemas de refrigeración como se observa en la figura 2, el compresor


normalmente se selecciona de forma que pueda producir la carga de enfriamiento
más alta posible. Sin embargo, la carga de enfriamiento durante el funcionamiento
normal es generalmente más baja que la carga de diseño, esto con el fin de

6 VARGAS JIMÉNEZ, Mario Alberto. “Diseño e implementación del prototipo de un sistema de control
que simule las funciones de la tarjeta Intellisys en un compresor estacionario Ingersoll Rand”. [En
linea]. Ingenieria Electronica. Costa Rica. Instituto Tegnologica de Costa Rica. Facultad de
Ingenieria. Departamento de electronica, 2007. [Consultado: 20 ,julio, 2019]. Disponible en internet:
https://repositoriotec.tec.ac.cr/bitstream/handle/2238/534/Vargas%20Jimenez%20Mario%20Alberto
.pdf?sequence=1&isAllowed=y

7TOAPANTA CUNALATA, Oscar Gabriel. “Implementación de un an}alisis de mantenimiento basado


en condición de los compresores reciprocantes y de tornillo”. [En linea]. Ingenieria Mecanica.
Riobamba Ecuador. Escuela Superior Pilitécnica de Chimborazo. Facultad de mecanica.
Departamento de mecanica, 2009. [Consultado: 29, julio, 2019]. Disponible en internet:
http://dspace.espoch.edu.ec/bitstream/123456789/260/3/15T00437.pdf

23
disminuir el esfuerzo del compresor, al no estar funcionando en la carga máxima
que puede producir.

Figura 2. Sistema de refrigeración con bomba de circulación

Fuente: DANFOSS. “Aplicaciones de refrigeración industrial con amoníaco y CO2 ”.


[En línea]. Manual de aplicaciones. 3 de mayo del 2016. [Consultado 03, enero,
2020]. Disponible en internet:
https://assets.danfoss.com/documents/DOC263641649990/DOC263641649990.pd
f

Por tal motivo se debe controlar la capacidad del compresor, de manera que
coincida con la carga térmica real que estos producen. Existen varias maneras
comunes de controlar la capacidad (bar o psi) generada del compresor:

4.3.1.1 Control por etapas

Para realizar el control por etapas es necesaria la descarga de los cilindros de un


compresor el cual posee varios cilindros, mediante la apertura y el cierre de las
conexiones de aspiración de un compresor de tornillo el cual es el más usado en la

24
actualidad o el arranque o la parada de algunos compresores en un sistema de
varios compresores los cuales tienen diferentes formas de procesar.

Este sistema es simple y cómodo de realizar, además conlleva a que la eficiencia


disminuya en muy poco, con condiciones de carga parcial. Es especialmente
recomendable para sistemas con varios compresores alternativos de varios
cilindros.

4.3.1.2 Control mediante válvula corrediza

Uno de los dispositivos más usados para controlar la capacidad de un compresor


de tornillo es la válvula corrediza. La válvula corrediza accionada por aceite permite
separar una parte del gas de aspiración para evitar su compresión, el tener
controlada esta válvula permite una modulación uniforme y continua de la capacidad
del compresor que va desde el 100 hasta el 10 %, aunque la eficiencia disminuye
en condiciones de carga parcial generando así un óptimo control para los
compresores de tornillo.

4.3.1.3 Control de velocidad variable

Tener un buen control de la velocidad que genera el motor del compresor es


fundamental para la correcta compresión del aire, al controlar su velocidad variable
es una solución eficiente que puede aplicarse a todo tipo de compresores.

Puede utilizarse un motor eléctrico de dos velocidades o un convertidor de


frecuencia para variar la velocidad del compresor. El motor eléctrico de dos
velocidades controla la capacidad del compresor (bar o psi), funcionando a alta
velocidad cuando la carga térmica es alta (por ejemplo, en un período de
enfriamiento) y a baja velocidad cuando la carga térmica es baja (por ejemplo,
durante un período de carga).

El convertidor de frecuencia puede variar la velocidad de giro continuamente para


satisfacer la demanda real que se requiere por un determinado proceso que se esté
llevando acabo. El tener un convertidor de frecuencia asegura los límites de
velocidad máxima y mínima, como también un buen control de la presión que
requiere, la temperatura del compresor y la protección del motor del compresor,
además de límites de corriente, par y potencia generada.

25
4.3.1.4 Bypass de gas caliente

Este sistema se aplica a compresores con capacidades fijas y es más típica en la


refrigeración comercial dependiendo el tipo de consumo requerido. Para tener un
buen control en la capacidad de refrigeración, es fundamental que parte del flujo de
gas caliente de la línea de descarga se derive hacia el circuito de baja presión. Esto
ayuda a disminuir efectivamente la capacidad de refrigeración de dos formas: la
primera es disminuyendo el suministro de refrigerante líquido y la segunda es
liberando una cierta cantidad de calor en el circuito de baja presión.8

8 DANFOSS. “Aplicaciones de refrigeración industrial con amoníaco y CO2 ”. [En línea]. Manual de
aplicaciones. 3 de mayo del 2016. [Consultado 03, enero, 2020]. Disponible en internet:
https://assets.danfoss.com/documents/DOC263641649990/DOC263641649990.pdf

26
5. MARCO DE REFERENCIA

5.1 MARCO TEORICO

Para empezar, se presenta el concepto de compresor de la misma forma en que lo


define ‘Richard Widman y Omar Linares’ en ‘Compresores – su funcionamiento y
metodología’. Un compresor es una máquina capaz de elevar la presión del gas que maneja.
En la industria la misión de los compresores es:

 Alimentar la red de aire comprimido para instrumentos.

 Proveer de aire para combustión.

 Recircular gas a un proceso o sistema.

 Producir condiciones idóneas para que se produzca una reacción química.

 Producir y mantener niveles de presión adecuados por razones de proceso de


torres.

 Alimentar aire a presión para mantener algún elemento en circulación.

Teniendo claro los temas a abordar para entender cada uno de los conceptos
utilizados en el proyecto se toma el concepto de compresor como punto de partida
y a partir de ahí se desglosarán cada uno de los conceptos necesarios para
comprender el desarrollo del proyecto9.

Ahora se entenderá Compresor de tornillo de la misma manera como lo define


‘Widman y Linares’. Los compresores a tornillo tienen dos tornillos engranados o

9 WIDMAN, Richard y LINARES, Omar. “Compresores – su funcionamiento y metodología”. [En


línea]. docplayer.es Junio, 2013, p.3. [Consultado 30, julio, 2019 ]. Disponible en internet:
https://docplayer.es/18396428-Compresores-su-funcionamiento-y-mantenimiento-pagina-1-de-
8.html

27
entrelazados que rotan paralelamente con un juego o luz mínima, sellado por la
mezcla de aire y aceite.

El aire entra por la válvula de admisión con el aceite y el espacio entre los labios es
progresivamente reducido al correr por el compresor, comprimiendo el aire atrapado
hasta salir por la válvula de salida.

En los compresores a tornillo húmedos los engranajes y tornillos son lubricados por
el aceite que actúa también como sello. Típicamente tienen filtros coalescentes
para eliminar el aceite del aire o gas comprimido.

Los compresores a tornillo secos (“oil-free”) requieren lubricación de sus


engranajes, cojinetes y/o rodamientos, pero los tornillos operan en seco.
Los tornillos normalmente operan en el régimen de lubricación límite y mixta
mientras los engranajes trabajan con lubricación hidrodinámica.

Los compresores lubricados con inyección de aceite utilizan aceites R&O (resistente
a oxidación por lo que trabaja entre 80° C y 120°C y con aditivos contra la corrosión)
y aceites hidráulicos AW (anti-desgaste). Los engranajes son lubricados por
salpicadura con aceite R&O. Típicamente utilizan viscosidades entre ISO 32 e ISO
68 de acuerdo a la temperatura del ambiente, la velocidad de giro y el tamaño de
sus tornillos y luz10.

El compresor con el que se trabajara es un compresor CAMPBELL HAUSFELD de


aire a tornillo, en el que se implementará un sistema de control. Un sistema de
control según ‘Patricio Abarca’ en ‘El ABC de la automatización’ con el articulo
‘Sistemas de control automático’ es una de las disciplinas que se ha desarrollado a
una velocidad vertiginosa, dando las bases a lo que hoy algunos autores llaman la
segunda revolución industrial.

El principio de todo sistema de control automático es la aplicación del concepto de


realimentación o feedback (medición tomada desde el proceso que entrega
información del estado actual de la variable que se desea controlar) cuya

10Ibid Disponible en internet: https://docplayer.es/18396428-Compresores-su-funcionamiento-y-


mantenimiento-pagina-1-de-8.html

28
característica especial es la de mantener al controlador central informado del estado
de las variables para generar acciones correctivas cuando así sea necesario11.

Estos conceptos ya definidos nos permitirán comprender con mayor facilidad el


proyecto planteado y así lograr desarrollarlo de manera óptimo.

5.2 MARCO CONTEXTUAL

Este proyecto se desarrollará en la industria Sena ASTIN, ubicada en la sede de


Salomia Cali-Valle del Cauca, se inicia el proceso el 02 de julio de 2019 con una
proyección de terminar a finales del año 2019; Se espera que la máquina quede
funcionando, permitiendo la ejecución de los diferentes procesos que requieran aire
comprimido.

5.2.1 Misión y visión del Sena

 Misión

El Servicio Nacional de Aprendizaje, SENA, está encargado de cumplir la función


que corresponde al Estado de invertir en el desarrollo social y técnico de los
trabajadores colombianos; ofreciendo y ejecutando la formación profesional integral,
para la incorporación y el desarrollo de las personas en actividades productivas que
contribuyan al desarrollo social, económico y tecnológico del país.

 Visión: MEGA 2020 “SENA de clase mundial”

En el 2020, el SENA será una Entidad de clase mundial en formación profesional


integral y en el uso y apropiación de tecnología e innovación al servicio de personas
y empresas; habrá contribuido decisivamente a incrementar la competitividad de
Colombia a través de:

 Los relevantes aportes a la productividad de las empresas.

11 ABARCA, Patricio. “El ABC de la automatización | Sistemas de control automático”. [En línea]. aie
Abril, 2019, p.1. [Consultado 30, julio, 2019 ]. Disponible en internet:
http://www.aie.cl/files/file/comites/ca/abc/sistemas-de-control-automatico.pdf

29
 La contribución a la efectiva generación de empleo y la superación de la pobreza.

 El aporte de fuerza laboral innovadora a las empresas y regiones.

 La integralidad de sus egresados y su vocación de servicio.

 La calidad y los estándares internacionales de su formación profesional integral.

 La incorporación de las últimas tecnologías en las empresas y en la formación


profesional integral.

 Su estrecha relación con el sector educativo (media y superior)

 La excelencia en la gestión de sus recursos (humanos, físicos, tecnológicos,


financieros)12.

5.3 MARCO CONCEPTUAL

5.3.1 Compresores de tornillo

Los compresores de tornillo son de lóbulos helicoidales, estos compresores son de


desplazamiento positivo que operan sin la necesidad de válvulas de succión y
descarga. Este tiene la capacidad de variar el volumen de succión
intermitentemente mientras reduce parte del poder de carga consumido 13.

5.3.2 VNC

12 SENA, Astin, Sub título "Misión y Visión”. [En línea]. Nosotros. 2002. [Consultado 29, julio, 2019].

Disponible en internet: http://centroastinsena.blogspot.com/p/quienes-somos.html


13 TOAPANTA CUNALATA, Oscar Gabriel. “Implementación de un an}alisis de mantenimiento

basado en condición de los compresores reciprocantes y de tornillo”. [En linea]. Ingenieria Mecanica.
Riobamba Ecuador. Escuela Superior Pilitécnica de Chimborazo. Facultad de mecanica.
Departamento de mecanica, 2009. [Consultado: 29, julio, 2019]. Disponible en internet:
http://dspace.espoch.edu.ec/bitstream/123456789/260/3/15T00437.pdf

30
Virtual Network Computing (VNC) es un programa de escritorio remoto de software
libre basado en una estructura cliente-servidor que permite tomar el control del
ordenador servidor remotamente a través de un ordenador cliente.

5.3.3 Python

Python es un lenguaje de programación interpretado dinámico cuya filosofía hace


hincapié en una sintaxis que favorezca un código legible. Se trata de un lenguaje de
programación multiparadigma y disponible en varias plataformas.

5.3.4 Instrumentación industrial

La instrumentación industrial, es el grupo de elementos que sirven para medir,


convertir, transmitir, controlar o registrar variables de un proceso con el fin de
optimizar los recursos utilizados en éste. Es el conocimiento de la correcta
aplicación de los equipos encaminados para apoyar al usuario en la medición,
regulación, observación, transformación, ofrecer seguridad, etc., de una variable
dada en un proceso productivo.

5.3.5 Arduino

Arduino es una plataforma open source, software y hardware de libre configuración,


el hardware figura 3 está basado en una placa con un microcontrolador y un entorno
de desarrollo de programación única, el dispositivo tiene la capacidad de leer datos
de diferentes sensores análogos y digitales, transmitir y recibir señales análogas
como también digitales, activar actuadores mediante sistemas de potencia, además
de tener muchas librerías de fácil manejo, incluyendo el PID que se utiliza a nivel
industrial14.

14 VELOSO, Cristian. “Arduino mega 2560 características”. [En línea]. Arduino Mega 2560. 19 de
junio del 2018. [Consultado 03, enero, 2020]. Disponible en internet:
https://www.electrontools.com/Home/WP/2018/06/19/arduino-mega-2560-caracteristicas/

31
Figura 3. Arduino Mega 2560

Fuente: VELOSO, Cristian. “Arduino mega 2560 características”. [En línea]. Arduino
Mega 2560. 19 de junio del 2018. [Consultado 03, enero, 2020]. Disponible en
internet: https://www.electrontools.com/Home/WP/2018/06/19/arduino-mega-2560-
caracteristicas/

5.3.6 PLC

Controlador lógico programable (figura 4), más conocido por sus siglas en inglés
PLC (Programmable Logic Controller), el cual es un instrumento electrónico, que
utiliza memoria programable para guardar instrucciones sobre la implementación de
determinadas funciones, como operaciones lógicas, secuencias de acciones,
especificaciones temporales, contadores y cálculos para el control mediante
módulos de E/S analógicos o digitales sobre diferentes tipos de máquinas y de
procesos15.

15 LIFELONG LEARNING. “Controladores lógicos programables (PLCs)”. [En línea]. Controladores


industriales inteligentes. 2011. [Consultado 03, enero, 2020]. Disponible en internet:
http://www.ieec.uned.es/investigacion/Dipseil/PAC/archivos/Informacion_de_referencia_ISE6_1_1.
pdf

32
Figura 4. PLC Festo FC660, Siemens Logo y Simatic S7-200

Fuente: LIFELONG LEARNING. “Controladores lógicos programables (PLCs)”. [En


línea]. Controladores industriales inteligentes. 2011. [Consultado 03, enero, 2020].
Disponible en internet:
http://www.ieec.uned.es/investigacion/Dipseil/PAC/archivos/Informacion_de_refere
ncia_ISE6_1_1.pdf

5.3.7 Raspberry pi

La raspberry que se define según la ‘Revista Ethos Venezolana’ Vol. 7 Nº 1 Enero-


Junio 2015 de la Universidad Alonso de Ojeda como un single board computer, se
distribuye comercialmente en cuatro versiones, conocidas por medio de sus
referencias culturales (Modelo A, Modelo B rev 1, Modelo B rev 2 y Modelo B+ y el
Compute Module) (Products | Raspberry Pi, (2015), aunque todos están basados
en SoC4 de la misma familia, tienen características ligeramente distintas como se
verá más adelante. El minicomputador Raspberry Pi ha sido diseñado con un
objetivo específico: Servir de plataforma para aquellos interesados en la
programación o el control de periféricos de bajo nivel16.

16 TOVAR SALCEDO, Marco Luis, “Minicomputador educacional de bajo costo


Raspberry Pi: Primera parte”. [En línea]. Descripción funcional del minicomputador. Enero-junio
2015, vol. 7, n.1, p.32. ISSN 1856-9862. [Consultado 04, enero, 2020]. Disponible en internet:
http://uniojeda.edu.ve/files/upload/ethos/volumen-7-n1/Revista-Ethos-Venezolana_Vol.-7-No.-1.pdf

33
Figura 5. Raspberry pi 3

Fuente: MOCQ, François. “La raspberry pi 3”. [En línea]. Raspberry Pi 3 o Pi Zero.
Junio de 2017. [Consultado 04, enero, 2020]. Disponible en internet:
https://www.ediciones-
eni.com/open/mediabook.aspx?idR=9727568be97f6cfbb8f45569b5f90c56

34
6. METODOLOGÍA

Con el fin de desarrollar el objetivo principal, el cual busca rediseñar el sistema de


control para el compresor CAMPBELL HAUSFELD, permitiendo su óptimo
funcionamiento, se establecieron con la ayuda del ingeniero encargado del Sena
ASTIN unas etapas que permitan la puesta en marcha del compresor siguiendo las
diferentes normativas y regulaciones que se tendrán en cuenta durante la ejecución,
este proceso se llevara a cabo bajo la metodología denominada ciclo Deming PHVA
(planear, hacer, verificar, actuar).

6.1 ETAPAS DEL PROYECTO

6.1.1 Planeación

En esta fase inicial se realiza una revisión de los sistemas de control actualmente
utilizados en los compresores, con las características del compresor Campbell.
Además, la instrumentación utilizada para la medición de las variables físicas
comprometidas en el funcionamiento del compresor. Posteriormente en esta fase
se seleccionan los equipos de medición y control más adecuados y se determinan
los proveedores nacionales de estos equipos.

6.1.2 Diseño

Durante esta etapa una vez adquiridos los elementos y seleccionada la alternativa
de solución, se realizan las simulaciones del control. Se crea la interfaz de usuario
programada, se procede con el diseño, construcción y cableado del tablero de
potencia, tablero de interfaz de usuario y del tablero de control.

6.1.3 Verificación

Con esta etapa se prueba el compresor, con el fin de detectar posibles fallas que
pueda presentar y se comprueba el correcto funcionamiento de los sensores. Una
vez verificado se procede a la elaboración de planos finales y la construcción de
manuales e instructivos.

35
6.1.4 Puesta en marcha

En esta última etapa se pone en funcionamiento el compresor, se procede a realizar


la divulgación del proceso y se entregan planos finales, manuales e instructivos.

36
7. PLANTEAMIENTO DE LA MISIÓN, IDENTIFICACIÓN DE NECESIDADES Y
ESPECIFICACIONES TECNICAS

La implementación del sistema de control del compresor CAMPBELL HAUSFELD,


se desarrolló mediante un diseño concurrente que se realiza en Ingeniería
Mecatrónica, esto permite desarrollar e implementar productos de alta calidad; para
el caso del proyecto se busca una optimización en cuanto a los recursos y gastos
económicos en las partes que conformen el sistema de control.

7.1 PLANTEAMIENTO DE LA MISIÓN

Es de gran importancia establecer el planteamiento de la misión puesto que abarca


de forma general la planeación para el desarrollo del proyecto, esto se realiza a
partir de los requerimientos del cliente (Sena-Astin), En la tabla 1, se planteará la
misión del proyecto; donde se describen los criterios de diseño, mercado al cual va
dirigido, premisas y restricciones del proyecto.

Tabla 1. Misión del Proyecto

DESCRIPCIÓN DEL PRODUCTO

 Desarrollo del sistema de control para el compresor CAMPBELL


HAUSFELD del SENA- ASTIN, con el fin de mejorar la disponibilidad de
aire comprimido y su puesta en funcionamiento.

37
CRITERIOS DE DISEÑO

 Integrar el sistema de control desarrollado con el de potencia, de tal


manera que los dos funcionen correctamente.

 Ofrecer una interfaz amigable con el usuario, que permita su fácil


visualización.

 Garantizar que el ensamble de componentes permita posteriormente un


fácil mantenimiento.

MERCADO PRIMARIO

 Servicio nacional de aprendizaje (Sena) sede Salomia Astin.

 Instructores del Sena-Astin que hagan uso de la maquinaria, para


productos de autoconsumo y formación a estudiantes.

 Aprendices activos del Sena-Astin que se encuentren asociados a la


formación en tecnologías del centro.

MERCADO SECUNDARIO

 Industria regional y Nacional que requieran productos para demandas


particulares.

PREMISAS Y RESTRICCIONES

 Bajos costos de implementación.

 Componentes asequibles en el mercado Colombiano.

 Open source.

38
7.2 IDENTIFICACIÓN DE NECESIDADES

Para la identificación de necesidades del diseño que tendrá el dispositivo que


permitirá desarrollar el sistema de control se tuvieron en cuenta los planteamientos
sugeridos por el personal de mantenimiento del Sena-Astin, una vez identificadas
las necesidades se asigna la importancia relativa de cada una de estas, mostradas
en la tabla 3.

Las calificaciones de importancia para las necesidades se indican en la tabla 2


donde se empleó una escala de 1 a 9, siendo 1 la de menor importancia y 9 la más
importante permitiendo resaltar y diferenciar todos los aspectos.

Tabla 2. Importancia de las necesidades

Importancia Peso

Alta (muy importante) 9

Media (importante) 3

Baja (ligeramente importante) 1

Tabla 3. Tabla de necesidades del proyecto

N° Necesidad Importancia

1 Es de fácil 1
mantenimiento
2 Seguro para el usuario 3

3 Open source 9

4 Bajo costo de 3
mantenimiento

5 Fácil instalación 1

6 Es de bajo costo 9

39
7 Fácil configuración 1

8 Interfaz de usuario de 9
fácil visualización
9 Robusto para procesos 3
industriales
10 Dispositivo con entradas 9
análogas y digitales en
un mismo equipo

A partir de la tabla se puede observar que las necesidades más importantes para el
Sena-Astin son que la programación sea Open source (código abierto), que sea un
dispositivo de bajo costo, que pueda tener una interfaz de usuario y que contenga
tanto entradas digitales como análogas en un mismo equipo.

7.3 ESTABLECIMIENTO DE MEDIDAS Y UNIDADES

A continuación, en la tabla 4 se establecieron las métricas y unidades, con el


objetivo que se realice la respectiva evaluación de la importancia de cada necesidad
asociada a una métrica.

La métrica “es la correspondencia de un dominio empírico (mundo real) a un mundo


formal, matemático, la medida incluye al valor numérico o nominal asignado al
atributo de un ente por medio de dicha correspondencia”17.

Tabla 4. Métricas del sistema

N° Métrica Métrica Unidad Necesidad

1 Costo $ 4,6

2 Tiempo instalación Min 5

17 OLSINA, Luis. “Métricas e Indicadores: Dos Conceptos Claves para Dos Conceptos Claves para
Medición y Evaluación”. [En línea]. Grupo de Investigación y Desarrollo en Ingeniería de Software.
Argentina. Universidad Nacional de La Pampa Universidad Nacional de La Pampa. Facultad de
ingeniería. Departamento de informática, 2003. [Consultado 05, enero, 2020]. Disponible en internet:
http://www.ciw.cl/recursos/Charla_Metricas_Indicadores.pdf

40
3 Nivel de seguridad Norma IEC 2
61508, EN
671518
4 Pasos para # 1
mantenimiento
5 Durabilidad de los Años 4,9
componentes
6 Peso Kg 5

7 Tiempo de Min 7
configuración
8 Cantidad de entradas # 10
análogas y digitales
9 Capacidad de trabajo Min 9,4
continuo
10 Cantidad de pasos # 8
para visualización

7.4 DESPLIEGUE DE LA FUNCIÓN DE CALIDAD (QFD)

El despliegue de la función de calidad nos permite conocer qué es lo que quieren


nuestros clientes y saber cuáles son los aspectos esenciales que necesita nuestro
producto y cuáles son los aspectos innecesarios donde no vale la pena invertir
tiempo y dinero, nos ayuda a fijar unos objetivos de las características técnicas que
debe incluir nuestro futuro producto para satisfacer al cliente.

El anexo A nos muestra una matriz de necesidades vs métricas donde se observar


la métrica con mayor importancia, se puede deducir que es el costo, para el Sena-
Astin la optimización de los recursos era lo primordial, se debe de seleccionar un
producto que sea de bajo costo pero que cumpla los requerimientos propuestos, por
eso la métrica de la cantidad de entradas análogas y digitales fue la segunda más
importante, se debe tener las entradas suficientes para cumplir óptimamente con el
proyecto a realizar.

El anexo B se observa la matriz de correlación de métricas, se identificaron algunas


relaciones negativas, en cuanto al tiempo de instalación con el número de posibles
entradas y salidas del dispositivo, este puede variar dependiendo de la cantidad que
se presente, también el costo con la capacidad de trabajo continuo, si se selecciona
18RUIZ, Juan Carlos. “SISTEMAS DE SEGURIDAD IEC61508”. [En línea]. SIEMSA CONTROL Y
SISTEMAS, S.A. 2011 [Consultado 07, enero, 2020]. Disponible en internet:http://www.isa-
spain.org/images/biblioteca_virtual/redundancia%20sist..pdf

41
un producto muy económico se puede presentar un problema con la capacidad de
trabajo para largas jornadas, así mismo el tiempo de configuración depende de la
cantidad de entradas y salida del dispositivo la selección tiene que tener los
requisitos de activación necesarios para el control sin necesidad de adicionar más
módulos.

7.5 MATRIZ PARA EVALUAR CONCEPTOS

El anexo C se observa la matriz para el tamizaje de conceptos con el fin de


seleccionar el dispositivo correcto para el desarrollo del sistema de control, en la
matriz se realiza una comparativa con un PLC Siemens Simatic S7 1200 el cual
servirá como referencia para compararlo respecto a otros dispositivos que se
acercan las necesidades del Sena-Astin, los dispositivos que se consideraron
oportunos para el proceso de selección son, un PLC siemens logo, un PLC Siemens
Simatic s7 300, un Arduino Mega 2560, una Raspberry pi 3 y unPIC18.

Una vez realizada la matriz para el tamizaje de conceptos, se determinó que la


PIC18 no correspondía con todos los requerimientos, así mismo la Raspberry pi 3 y
Arduino, luego de la evaluación se les realiza una combinación, para así tener uno
nuevo, el anexo D nos muestra la matriz para evaluar conceptos, al final de la
evaluación se selecciona el concepto “C+D”, se trata de la combinación entre el
Arduino y la Raspberry, estos dispositivos cumplen con los requerimientos del Sena-
Astin.

Su bajo costo y fácil manejo para proyectos, además de sus múltiples entradas y
salidas análogas y digitales, permitieron seguir con la implementación del sistema
de control, el Arduino será el maestro, al tener todo el código de control del
compresor, será el que lea las entradas del compresor, entre las cuales están
presión y temperatura, estas lecturas de los sensores se enviaran vía serial a la
Raspberry la cual procesara los datos por medio de Python, en ella se realizara la
interfaz de supervisión.

42
8. DESARROLLO DEL SISTEMA DEL CONTROL

Para el desarrollo del sistema de control del compresor de la figura 6, fue de total
importancia realizar ingeniería inversa de la tarjeta de control figura 7, en la que se
leyeron los manuales e instructivos, para así identificar cada parte que la componía,
tanto de software como de hardware.

Figura 6. Compresor Campbell Hausfeld Sena-Astin

Figura 7. Tarjeta de control antigua

43
Inicialmente se realiza el Grafcet para el proceso principal, anexo E, el cual es un
diagrama de control por etapas y transiciones, en él se identifica el proceso que se
tiene que llevar acabo para realizar el control del compresor, inicialmente se realiza
una verificación de los sensores de temperatura y presión, en donde se identifica 7
posibles estados, tabla 5.

Los estados de temperatura indican en que condición se encuentra el calentamiento


del compresor siempre y cuando no se detecte una temperatura superior a 105 ºC
el compresor seguirá trabajando, para iniciar el proceso se lee en que estado de
presión se encuentra el compresor, si se presiona START y la presión esta baja, se
enciende el secador por un tiempo programado, una vez llegado al tiempo se
enciende el motor, se inicia con el contactor de línea y estrella, pasado 5s se
procede a cambiar a delta y se enciende la válvula de admisión del compresor.

Llegado a una presión de 10 bar, se apaga la válvula de admisión, se espera por 60


seg que entre en descarga el compresor, si durante ese tiempo la presión
permanece en la nominal, entra en estado de pre arranque en el cual se esperan
otros 180 seg para así apagar el contactor de línea y delta del motor, ya apagados
los contactores se inicia de nuevo en ciclo pero esta vez como se encuentra en pre-
arranque no se da la necesidad de volver a presionar START, el compresor apenas
detecte una falta de presión enciende nuevamente lo anteriormente mencionado.

Si la presión llega a baja, se activa un estado de carga continua, se vuelve a


encender la válvula de admisión, hasta llegar a la presión de 10 bar nuevamente.

En el Grafcet del anexo F se pueden observar las fallas del sistema. El interruptor
de PARO DE EMERGENCIA, al activarse apaga de inmediato la válvula de
admisión y el motor en el estado que se encuentre, para iniciar de nuevo el proceso
se tiene que presionar el pulsador de RESET.

Se tiene también el pulsador de PARO, al activarse apaga la válvula de admisión y


después de 60s apaga el motor, finalmente se cuenta con el contactor NA del relé
térmico del motor, cuando se active funciona igual que el de PARO DE
EMERGENCIA, se apaga todo y queda a la espera del pulsador de RESET, el anexo
G muestra las salidas y entradas del compresor.

44
Tabla 5. Estados de verificación

Estado Lectura sensores


Temperatura OK Temperatura < 85 ºC
Temperatura Pre Alarma 85 ºC >Temperatura < 105 ºC
Temperatura Alarma Temperatura > 105 ºC
Presión Baja Presión < 7 bar
Presión Nominal 7 bar > Presión < 10 bar
Presión Limite 10 bar > Presión < 10.5 bar
Sobre Presión Presión > 10.5 bar

El anexo H, muestra el código implementado en Arduino que realiza este control de


manera óptima, en el código a mostrar se incluye los datos que serán enviados vía
serial a la raspberry, en los que encontramos la presión, temperatura, corriente,
tiempo de carga del compresor, tiempo total de funcionamiento, el estado en el que
se encuentra (inicio, carga, descarga) y la posible falla que se detecte (sobre
presión, sobre temperatura, paro, stop y térmico).

8.1 ESPECIFICACIÓNES SENSORES Y CONTROLADOR

8.1.1 Sensor de presión y temperatura

La especificación de los sensores se realizó a partir de un estudio del sistema de


control anterior, se inició con el sensor de temperatura, este debía de soportar una
temperatura de hasta 150ºC y a partir de este dato se comenzó a indagar sobre los
posibles sensores que soportaran estas condiciones, se optó por una termocupla
tipo K.

No es recomendable usar termocuplas cuando el sitio de medición y el instrumento


están lejos (más de 10 a 20 metros de distancia). Debido a que suministran un
voltaje muy bajo y susceptible al recibir interferencias eléctricas, se debe usar un
cable compensado para el tipo específico de termocupla, se decidió adecuarle un
transmisor de corriente de 4 a 20 ma alimentado a 12v con el fin de mejorar la
transmisión de los datos.

Para poder manejar estos datos de corriente dentro del Arduino se realizó un
circuito, figura 8, una vez adecuada la entrada de datos al Arduino, se realizó una

45
adquisición de datos entrada vs salida de temperatura, esto con el fin de realizar
una ecuación característica. El anexo I nos muestra las tablas que se realizaron
para obtener la ecuación lineal y la gráfica correspondiente a dicha caracterización.

El transmisor de presión seleccionado abarca una señal de salida de 4 a 20 mA,


con rangos de medición de 0-600 bares, tiene un ajuste de puesta a cero y de
alcance, es alimentado a 12, su excelente estabilidad ante las vibraciones,
estructura robusta y altas temperaturas de funcionamiento hacen que este
transmisor de presión cumpla los requisitos de selección, se maneja la misma
conversión de corriente a voltaje tal como lo muestra la figura 8, en el anexo J se
observan las tablas correspondientes para su caracterización y su grafica que
relaciona el voltaje de entrada y la salida de presión correspondiente.

Figura 8. Adecuación de señal de 4 -20ma a 1-5v

8.1.2 Microcontrolador Arduino mega 2560

El Arduino Mega 2560 es una tarjeta de desarrollo de Hardware libre construida con
el microcontrolador Atmega 2560, el cual le da sentido a su nombre. Este
microcontrolador forma parte del proyecto Arduino que involucra una comunidad
internacional dedicada al diseño y manufactura de placas de desarrollo de Hardware
Open source.

46
El Arduino es un de los primeros que logro su objetivo de facilitar y relacionar de
manera simple y didáctica la programación de microcontroladores y electrónica, dos
áreas que en la ingeniería son muy complejas.
Existen varios diseños de tarjetas diferentes dependiendo su uso, entre ellas se
encuentra el Arduino Mega 2560 que cuenta con una serie de características que
en función del proyecto que necesitemos realizar pueden ser una ventaja.

8.1.3 Características del Arduino mega 2560

El Arduino Mega 2560 tiene 54 pines de entrada/salida, de los cuales exactamente


14 de ellos pueden ser utilizados como salidas de PWM (Modulación por ancho de
pulsos), cuenta con otras 16 entradas analógicas y 4 UARTs (puertos serial).
En cuanto a la velocidad del microcontrolador, este cuenta con un Cristal de 16MHz
y una memoria Flash de 256KB. Maneja un rango de voltaje de entrada de entre 7
y 12 volt, por recomendaciones del fabricante se debe de usar una tensión de
entrada de 9 Volt para no afectar a manera prolongada el dispositivo.

La comunicación entre la tarjeta Arduino y la computadora se establece a través del


puerto serie, se cuenta con un conversor interno USB – SERIE de manera que no
es necesario agregar ningún dispositivo externo para programar el
microcontrolador, esto con el fin de transferirle el código implementado en el
software que brinda Arduino.

Una vez se tenga el código guardado en el microcontrolador, se conecta de manera


independiente a una fuente de hasta 9v DC por recomendaciones del fabricante. El
microcontrolador al tener una memoria Flash permite que sea no volátil, por lo tanto,
el código guardado no será borrado así se apague el Arduino.

8.1.4 Especificaciones Arduino mega 2560

 Microcontrolador: ATmega2560.

 Voltaje Operativo: 5V.

 Tensión de Entrada: 7-12V.

 Voltaje de Entrada(límites): 6-20V.

 Pines digitales de Entrada/Salida: 54 (de los cuales 14 proveen salida PWM.

47
 Pines análogos de entrada: 16.

 Corriente DC por cada Pin Entrada/Salida: 40 mA


 Corriente DC entregada en el Pin 3.3V: 50 mA.

 Memoria Flash: 256 KB (8KB usados por el bootloader).

 SRAM: 8KB.

 EEPROM: 4KB.

 Clock Speed: 16 MHz.

8.1.5 Ventajas Arduino mega 2560

 Es una placa de desarrollo robusta de la familia Arduino, cuenta con un


microcontrolador muy potente de 8 bits y es el que más pines tiene de todas las
opciones posibles.

 Tiene una memoria destinada a la programación elevada.

 Es Open source.

 Buena resolución del conversor Análogo-Digital.

8.2 CRITERIOS DE SELECCIÓN ACCIONAMIENTO DE EQUIPOS

Para selección de los accionamientos del sistema de control se tuvieron en cuenta


las características de los dispositivos a utilizar, al tener un microcontrolador con tan
baja salida de corriente, ere necesaria adecuarle una etapa de potencia pertinente
para el correcto accionamiento, se optó por una tarjeta de relés opto acoplada, que
incluye 8 canales para ser controlados en forma remota. Esta es ideal para controlar
dispositivos en el hogar o en la industria.

Cada canal es controlado por una entrada TTL, la cual puede ser fácilmente
controlada por un microcontrolador o Arduino. Esta placa requiere de una
alimentación de 5V, para ello se adecuo una fuente externa que generaba a partir
de una entrada de 220v Ac una salida de 12v DC y 5v DC.

48
8.2.1 Características relé de 8 canales

 8 canales independientes protegidos con optoacopladores.

 8 relés (Relays) de 1 polo 2 tiros.

 El voltaje de la bobina del relé es de 5 VDC.

 Led indicador para cada canal (enciende cuando la bobina del relé esta activa).

 Activado mediante corriente: el circuito de control debe proveer una corriente de


15 a 20 mA.

 Puede ser controlado directamente por circuito lógicos.

 Terminales de conexión de tornillo (clemas).

 Terminales de entrada de señal lógica con headers macho.

Para el accionamiento del motor se hizo uso contactores de relé a 24v 3 polos 150A,
que permitieron el arranque del motor trifásico de manera óptima, se hizo uso en
total de 3 contactores, uno para el arranque de línea, otra para el cambio a estrella
y finalmente para el cambio a delta, esto con el fin de disminuir su corriente nominal
en el arranque del motor.

La tabla 6 se puede observar los elementos que se emplearon y una corta


descripción sobre ellos.

49
Tabla 6. Elementos empleados para el sistema de control

Elementos de control
Descripción Fotografía
CONTROLADOR ARDUINO
MEGA 2560: es una tarjeta
electrónica programable que
permite la creación rápida de
prototipos. Su diseño es de código
abierto. Es el controlador del
proceso, el cual recibe las señales
de los sensores, las procesa a
través de un programa realizado
previamente, y posteriormente
envía la señal a los actuadores,
quienes realizan los movimientos
respectivos.
TARJETA DE RELEVOS–8
CANALES: recibe las señales de
baja potencia de salida del arduino,
y a través del relé, permite manejar
cargas de mayor corriente, como la
electroválvula y los contactores.

SENSORES DE TEMPERATURA
– TERMOCUPLA TIPO K: Detecta
la temperatura del aceite, el
transmisor, convierte la señal de la
termocupla en una señal
proporcional de 4 a 20 mA.

50
Tabla 6. (continuación)

SENSOR DE PRESION
ANALOGO (4 – 20mA): Es el
encargado de detectar la presión
de carga del compresor, lee una
señal entre 0 y 16 bar, escalada
entre 4 a 20 mA, la cual es
convertida a través de una
resistencia de 250 Ohm, en una
señal de 0 -5v, leida por el arduino.

ELECTROVALVULA DE
ADMISION MONOESTABLE:
Permite a través de una señal
eléctrica, dar apertura a la entrada
de aire para la carga del
compresor.

CONTACTORES: Son
accionamientos eléctricos,
empleados para energizar el motor
principal, realizando el arranque
estrella – delta.

51
Tabla 6. (continuación)

INTERRUCTOR DE PARA DE
EMERGENCIA: Se maneja con
dos interruptores, uno normamente
cerrado y otro normalmente
abierto.

PILOTO LED : Indicador led


maneja tension de 110V y 220V.

52
9. SISTEMA DE SUPERVISION

El sistema de supervisión figura 9 se realizó en código Python mediante el uso de


la raspberry pi 3, la cual recibe los datos del proceso mediante comunicación serial
desde el Arduino. La finalidad del sistema de supervisión es poder monitorear las
variables de temperatura, presión y corriente.

Figura 9. Interfaz de supervisión

Para el operario es fundamental poder observar estas variables, además de poder


conocer el tiempo de carga total del compresor durante el día, se diseñó la interfaz
para visualizar también el estado en que se encuentra el compresor, este puede
estar en un estado inicial, pre-arranque, carga y descarga.

Finalmente se visualiza el último estado de emergencia del compresor, en caso de


que falle, los estados son paro de emergencia, stop, térmico, sobre presión y sobre
temperatura.

53
El anexo K, muestra el código implementado en código Python, la interfaz gráfica
se realizó por medio de la librería Tkinter que cuenta con una serie de componentes
gráficos llamados Widgets, con los cuales podemos diseñar nuestras interfaces.

Los widgets deben seguir una jerarquía a la hora de añadirse a la interfaz. Por
ejemplo, un Marco (frame) forma parte del objeto raíz Tk. Y a su vez, un botón
(button) puede formar parte de un contenedor como la raíz o un marco.

Entre los cuales encontramos:

 Tk: Contenedor base o raíz de todos los widgets que forman la interfaz. No tiene
tamaño propio, sino que se adapta a los widgets que contiene.
 Frame: Marco contenedor de otros widgets. Puede tener tamaño propio y
posicionarse en distintos lugares de otro contenedor (ya sea la raíz u otro marco).
 Label: Etiqueta dónde podemos mostrar algún texto estático.
 Entry:
Campo de texto sencillo para escribir texto corto. Nombres, apellidos,
números.
 Text: Campo de texto multilínea para escribir texto largo. Descripciones,
comentarios.
 Button: Botón con un texto sobre el cual el usuario puede hacer clic.
 Radiobutton: Botón radial que se usa en conjunto donde es posible marcar una
opción.
 Checkbutton: Botón cuadrado que se puede marcar con un tic.
 Menu: Estructura de botones centrados en la composición de menús superiores.
 Dialogs: Ventanas emergentes que permiten desde mostrar información al usuario
(típico mensaje de alerta o de confirmación) hasta ofrecer una forma gráfica de
interactuar con el sistema operativo (seleccionar un fichero de un directorio para
abrirlo).

54
Hay otros widgets, pero estos son los más importantes19.

Antes de realizar el código anteriormente mencionado fue necesaria la


configuracion de la raspberry, en esta se instala un sistema operativo Raspbian, una
vez instalado el sistema se configura el tamaño de la pantalla con los siguientes
pasos:

Paso 1:

Buscar el modo deseado en la siguiente lista según las características de nuestra


pantalla, se conoce que la pantalla es de 1080p a una frecuencia de 60Hz.

• hdmi_mode=1 VGA

• hdmi_mode=2 480p 60Hz.

• hdmi_mode=3 480p 60Hz.

• hdmi_mode=4 720p 60Hz.

• hdmi_mode=5 1080i 60Hz.

• hdmi_mode=6 480i 60Hz.

• hdmi_mode=7 480i 60Hz.

• hdmi_mode=8 240p 60Hz.

• hdmi_mode=9 240p 60Hz.

• hdmi_mode=10 480i 60Hz.

• hdmi_mode=11 480i 60Hz.

• hdmi_mode=12 240p 60Hz.

• hdmi_mode=13 240p 60Hz.

19 HEKTOR, PROFE, “Interfaz gráfica con Tkinter”. [En línea]. Interfaz con tkinter. 4 de octubre del
2018. [Consultado 12, enero, 2020]. Disponible en internet:
https://docs.hektorprofe.net/python/interfaces-graficas-con-tkinter/

55
• hdmi_mode=14 480p 60Hz.

• hdmi_mode=15 480p 60Hz.

• hdmi_mode=16 1080p 60Hz.

Paso 2: Por medio del terminal de nuestra raspberry se accede al archivo de


configuración mediante el siguiente comando sudo nano /boot/config.txt y buscamos
la línea (párrafo) con el siguiente código:

#uncomment to force a specific HDMI mode (this will force VGA)


#hdmi_group=1
#hdmi_mode=1

Paso 3: Descomentar (quitar el # de delante de las mismas) las líneas


“hdmi_group=1” y “hdmi_mode=1”, en el caso de la última poner el número de modo
de la resolución deseada.

Para nuestro caso 1080p 60Hz nos quedaría de la siguiente manera:

# uncomment to force a specific HDMI mode (this will force VGA)


hdmi_group=1
hdmi_mode=46

Paso 4: Reiniciar la Raspberry con el siguiente comando.

$sudo reboot

El sistema de supervisión se configuró para su vía remota mediante el uso de VCN


server y VCN viewer, se debe realizar los siguientes pasos para su correcto
funcionamiento:

Paso 1:

Se deben de escribir los siguientes comandos de código en el terminal de la consola


esto con el fin de instalar VCN (tener internet).

56
sudo apt-get update
sudo apt-get install realvnc-vnc-server
sudo apt-get install realvnc-vnc-viewer

 Paso 2:

Una vez instalado en la Raspberry el VNC se incluye automáticamente en el sistema


operativo Raspbian, pero sin estar habilitado para realizar la conexión. Para habilitar
el VNC accedemos a la configuración de Raspberry Pi y se habilita en opciones
avanzadas, para acceder a la configuración se de Raspberry Pi se escribe el
siguiente comando.

 Sudo raspi-config

Una vez escrito el comando se muestra una pantalla figura 10, se presiona opciones
de interfaz y nos sale lo siguiente figura 11, se debe habilitar VCN y presionar
finalizar, una vez finalizado se conecta se puede acceder a la raspberry vía remota
con los pasos a continuación.

Figura 10. Configuración Raspberry Pi

57
Figura 11. Habilitación VCN

9.1 PROCEDIMIENTO PARA EL ACCESO A LA RASPBERRY PI VIA REMOTA


La Raspberry tiene conectada un Router inalámbrico, que está ubicado en la parte
inferior del tablero de control, a esta se accede mediante el siguiente proceso:

Conectar el computador con el que se desea acceder remotamente, a la red de la


Raspberry.

 Nombre: compresor
 Clave: compresor

Por defecto la Raspberry ya estará conectada a dicha red, de no ser así, se debe
encender el modo Wifi, dando click en el icono de red, ubicado en la esquina
superior derecha de la pantalla. TURN ON WIFI.

58
Tabla 7. Pasos para acceso remoto Raspberry pi

Abrir vcn viewer en la pantalla touch, del tablero de control y anotar la dirección de
red que aparece en pantalla.

59
Tabla 7. (continuación)

Cuando la Raspberry está conectada a la red compresor aparecen las siguientes


direcciones normalmente, 192.168.0.100 192.168.0.101

Esa misma dirección, se debe anotar en la vcn viewer del computador.

Al ingresar la
Raspberry te pide
una clave de
acceso, la cual
es:
Usuario: pi

Clave:
compresor

60
Tabla 7. (continuación)

Deberías tener
acceso a la
raspberry,
observaras que
desde el
computador
podras acceder a
todos los
comandos de
esta.

Una vez
ingresado se
puede cerrar el
vnc viewer.

61
10. SISTEMA DE CONTROL Y POTENCIA

El tablero de control fue diseñado en Solidworks para luego ser cotizado y


finalmente implementado, el anexo L, muestra el diseño explosionado con sus
respectivas partes y el anexo M muestra la cotización por parte de la empresa DISH
Ingeniería.

Una vez fabricado y realizado las perforaciones respectivas para el alojamiento de


la pantalla, extractor, pulsadores y pilotos. Los elementos de control se ensamblaron
en el tablero figura 12, la instalación se realizó fuera del compresor, con el fin de
evitar los ruidos eléctricos figura 13.

Figura 12. Tablero de control

62
Figura 13. Cableado tablero de control

En las figuras 14,15,16 y 17 se identifican los componentes instalados en el tablero


de control, una vez instalados se realizaron pruebas pre-liminares para la lógica de
control.

Ya probada la lógica se pasa a realizar otras pruebas pero ya conectando el tablero


de potencia, en el cual se describen sus partes en la figura 18, en las figuras 19 y
20 observamos como se hacen las pruebas de conexión tanto del tablero de
potencia como el de control, en la figura 21 y 22 se observa la conexión de los
sensores de presión y temperatura en el compresor, para así una vez realizadas las
pruebas se dejan conectados los tableros para su puesta en marcha.

63
Figura 14. Descripción general tablero de control

Figura 15. Descripción externa del tablero de control

64
Figura 16. Componentes de seguridad tablero de control

Figura 17. Borneras para cambio de 4-20ma a 1-5v

65
Figura 18. Descripción general tablero de potencia

Figura 19. Pruebas de conexión tablero de control

Figura 20. Pruebas de conexión tablero de potencia

66
Figura 21. Conexión sensores compresor

Figura 22. Conexión sensores tablero de control

67
11. PLANOS FINALES Y PUESTA EN MARCHA DEL COMPRESOR

Finalmente se realizan los planos eléctricos finales del compresor y su respectivo


manual de uso, para empezar, se identificó detalladamente los componentes dentro
del tablero, los planos eléctricos permitieron tener una mejor referencia del
cableado.

La figura 23 muestra el plano de alimentación, en él se observa la alimentación de


dos fases de 220vac que se conectan a un relé térmico y un breaker, seguido se
conecta la secadora del compresor, un toma eléctrico y una fuente que transforma
de 220vac a 5v y 12v dc, el voltaje de 5v se usa para cablear los pulsadores,
interruptores y relé de alimentación, el voltaje de 12v se usa para el transmisor de
presión, temperatura y corriente, para manejar una corriente de 4 a 20ma, con
ayuda de los transmisores facilita la distancia en que van a estar los sensores sin
que se pierda su señal.

68
Figura 23. Plano de alimentación

En la figura 24 se observa las entradas que serán dirigidas al Arduino entras las
cuales encontramos el pulsador de Start, Stop, Reset, el interruptor de emergencia
y el contactor NA del relé térmico, también se tiene los transmisores de corriente,
temperatura y presión.

69
Figura 24. Plano de entradas del Arduino

La figura 25 nos muestra el plano de salidas del Arduino, las salidas son 8 y van
conectadas al relé de 8 canales para así poder manejar potencia, las salidas se
dividen en 3 indicadores led (Estado OK, Estado pre alarma y Estado de
emergencia), contactor de línea, contactor de estrella, contactor de delta, secadora
y válvula de admisión.

70
Figura 25. Plano salidas de control

El plano de relevos y potencia de la figura 26 nos muestra las activaciones de


potencia que se realizan una vez activados los relés del Arduino, se observa cómo
se protege el motor y la secadora del compresor mediante un relé térmico y sobre
carga.

71
Figura 26. Plano relevos y potencia

La figura 27 muestra el plano de conexiones de la raspberry, en cuanto su fuente


de alimentación, entrada de la Micro SD y el bus de comunicación de los datos que
se envían mediante protocolo serial.

72
Figura 27. Plano conexiones Raspberry

La figura 28 muestra las borneras de conexión del tablero de control, se puede


observar las borneras de entrada que corresponden a los pulsadores y los sensores
de presión, corriente y temperatura, también se identifican las borneras de salida
las cuales son de ayuda para transmitir la potencia que viene de los relevos.

73
Figura 28. Plano borneras del tablero de control

En la figura 29 podemos identificar el plano de las borneras instaladas en el tablero


de potencia, en ellas se conectan los contactores de activación del motor, secadora
y válvula de admisión, así mismo los sensores que estarán instalados en el
compresor.

74
Figura 29. Plano borneras del tablero de potencia

Para finalizar el proyecto se realizó el instructivo para la puesta en marcha del


compresor de la manera correcta, tal como se observa en la tabla 8.

Tabla 8. Instructivo puesta en marcha compresor

Instructivo de operación compresor

Pasos Fotografía

1. Energizar interruptor principal

75
Tabla 8. (continuación)

2. Verificar modo RUN en


selector lateral

3. Desactivar el paro de
emergencia, si esta
pulsado.
4. Pulsar RESET
5. Pulsar START

6. El script de Python
ejecutado quedó
guardado en el escritorio
con el nombre de:
Interfazsenavdefinitiva.p
y, al darle doble clic al
archivo se ejecutar el
scrip.

76
Tabla 8. (continuación)

7. Posteriormente se le
debe dar en play para
ejecutarlo.

8. Se observará en la
pantalla los estados
iniciales de los sensores,
que estarán entre los
siguientes rangos:
 Presión: -2 a 0.5 bar
 Temperatura: 25 a 35
ºC.

 Tiempos de carga: 0
 Tiempo total: 0

 Estado alarma:
ESTADO OK

 Estado compresor:
PULSE START

9. Tras un ciclo de carga, se


debería observar los
siguientes datos en la
pantalla:

 Presión: 8.0 a 9.5 bar


 Temperatura: 85 a 95 ºC
 Tiempos de carga: 5 min
 Tiempo total: 10 min
 Estado alarma: ESTADO
OK
 Estado compresor:
PREARRANQUE.

77
12. RELACIÓN COSTO BENEFICIO SENA-ASTIN

La tabla 9 muestra los ingresos que registra el Sena-Astin en un periodo de 2 años,


se logra evidenciar que los ingresos son notablemente altos. Teniendo en cuenta
que es una entidad del estado, el personal del centro no se incluye en los gastos
del proyecto, teniendo así, como único gasto variable, el presupuesto de cinco
millones de pesos.

Del total de la maquinaria del Sena-Astin, el 60% requiere aire comprimido para sus
procesos, por lo tanto, del total de ingresos que se generan se le debita el 40%.

Tabla 9. Ingresos del Sena-Astin

Descripción ingresos Valor

Servicios tecnológicos $ 107.500.000


Autoconsumo $ 105.000.000
Formación $ 2.000.000
Ganancia total 2 años $ 214.500.000
60% del consumo $ 128.700.000
Ingresos divididos por mes $ 5.362.500

En la tabla 10 se puede observar el gasto que tuvo el proyecto, detallando cada uno
de los materiales comprados.

Tabla 10. Costos del proyecto

Costo total
Nº Material cantidad costo unidad
materiales

1 Relé 8 canales 1 $ 24.000 $ 24.000


2 Arduino Mega 1 $ 180.000 $ 180.000
3 Indicador led 3 $ 20.000 $ 60.000
Transmisor de
4 temperatura 1 $ 30.000 $ 30.000
Transmisor de
5 presión 1 $ 30.000 $ 30.000

78
Tabla 10. (continuación)

Termocupla
6 tipo K 2 $ 35.000 $ 70.000
7 Raspberry pi 3 1 $ 170.000 $ 170.000
9 Pantalla LCD 1 $ 100.000 $ 100.000
10 Fuente dual 1 $ 150.000 $ 150.000
Tablero De
11 control 1 $ 950.000 $ 950.000
12 Breaker 10A 2 $ 40.000 $ 80.000
13 Borneras 100 $ 300 $ 30.000
Cable
14 instrumentación 50 $ 2.000 $ 100.000
15 Pulsadores NA 3 $ 25.000 $ 75.000
Interruptor de
16 emergencia 1 $ 50.000 $ 50.000

TOTAL
COSTOS $ 2.099.000

Teniendo en cuenta los ingresos mensuales detallados anteriormente, la inversión


se recupera en un mes, debido a que los ingresos mensuales superan el valor del
gasto presupuestado para el mantenimiento del compresor, cabe resaltar que el
Sena al ser una entidad del estado y de uso formativo, no requiere de los ingresos
generados por la maquinaria para poder cubrir sus gastos.

79
13. CONCLUSIONES

 Al finalizar el desarrollo del sistema de control del compresor Campbell


Hausfeld se logró generar el 60% de aire comprimido que es dirigido a la maquinaria
del Sena-Astin, se mejoró significativamente el sistema de control al tener un código
abierto, al tener un dispositivo open source se mejoró el rendimiento del equipo
modificando simplemente los parámetros en el código.

 Se logró mediante el nuevo sistema de supervisión mejorar la interacción


hombre-máquina del compresor, la interfaz realizada permite una mayor
compresión de los datos, identificando cualquier emergencia que presente el
compresor, además de posibilitar mediante la raspberry pi la comunicación vía
remota, esto con ayuda del VCN instalado en la raspberry pi y en el monitor usado
en esta comunicación.

 Se mejoró el rendimiento de los sensores de presión y temperatura, al


separar el tablero de control del área de trabajo del compresor, permitiendo que no
se generen ruidos eléctricos que puedan afectar la lógica de control, como también
la señal enviada por los transmisores de 4-20mA.

 Finalmente se logró el objetivo principal del proyecto, el cual era dejar en


funcionamiento el compresor Campbell Hausfeld desarrollando un nuevo sistema
de control, cumpliendo de manera satisfactoria los requerimientos establecidos por
la entidad.

80
14. RECOMENDACIONES

Al implementarse el sistema de control en Arduino se debe de tener cuidado con


respecto a un bloqueo de la tarjeta, paro ello se debe hacer uso del Reset que viene
configurado internamente en el Arduino para así reiniciar el programa.
Se tienen en consideración las siguientes posibles fallas por las que el sistema no
pueda arrancar:

 Pulsador de emergencia enclavado.


 Selector lateral en modo PROGRAM.
 Fusibles quemados.
 Interruptor (Breaker) 1 o 2 disparado.
 Verificar que la presión este por debajo de 6 bar.
 Verificar que la temperatura no esté por encima de los 105ºC.

81
BIBLIOGRAFÍA

ARIAS OSORIO, Oscar Eduardo. “Control de sistema de posicionamiento


neumático”. [En línea]. Tecnología eléctrica. Pereira Colombia. Universidad
Tecnológica de Pereira. Facultad de Tecnología. Departamento de eléctrica, 2016.
[Consultado: 29, julio, 2019 ]. Disponible en internet:
https://core.ac.uk/download/pdf/84108387.pdf

ABARCA, Patricio. “El ABC de la automatización | Sistemas de control automático”.


[En línea]. Abril, 2019, p.1. [Consultado 30, julio, 2019 ]. Disponible en internet:
http://www.aie.cl/files/file/comites/ca/abc/sistemas-de-control-automatico.pdf

BURCKHARDT COMPRESSION. "Proyectos de ingeniería y modernización de


compresores". [En línea]. Planes de acción bien definidos para unas soluciones
óptimas. Diciembre 2016. [Consultado: 20, julio, 2019]. Disponible en internet:
https://www.burckhardtcompression.com/wp-
content/uploads/2016/12/23_BC_Brochure_Revamp_Uppgrade_ES_Web.pdf

Cardona, A; Nigro, N; Sonzogni, V. y Storti, M. “Modelización numérica de un


compresor monocilindrico de desplazamiento positivo”. [En linea]. En: Mecánica
Comput. 25, 1313–1334, 2006. [Consultado: 11, julio, 2019 ]. Disponible en internet:
https://www.researchgate.net/profile/Gaston_Bourges/publication/228624800_MO
DELIZACION_NUMERICA_DE_UN_COMPRESOR_MONOCILINDRICO_DE_DE
SPLAZAMIENTO_POSITIVO/links/0deec524385fb892f4000000.pdf

CABRERA, Alejandra. “Historia de los compresores de aire”. [En línea]. KAESER


COMPRESORES. 5 de febrero 2016. [Consultado: 26, diciembre, 2019 ]. Disponible
en internet: http://airecomprimidokaeser.com/index.php/2016/02/05/historia-de-los-
compresores-de-aire/

DANFOSS. “Aplicaciones de refrigeración industrial con amoníaco y CO2 ”. [En línea].


Manual de aplicaciones. 3 de mayo del 2016. [Consultado 03, enero, 2020].
Disponible en internet:
https://assets.danfoss.com/documents/DOC263641649990/DOC263641649990.pd
f

GIMENO, Alberto Alfaro. "Modelado y simulación de compresores", [En linea].


Ingeniería técnica industrial: mecánica. Madrid España. Universidad Carlos III de

82
Madrid. Facultad de Ingenieria. Departamento de mecanica, 2009. [Consultado: 11,
julio, 2019 ]. Disponible en internet: https://e-
archivo.uc3m.es/bitstream/handle/10016/7714/PFC_Alberto_Alfaro_Gimeno.pdf?s
equence=1&isAllowed=y

HEKTOR, PROFE, “Interfaz gráfica con Tkinter”. [En línea]. Interfaz con tkinter. 4 de
octubre del 2018. [Consultado 12, enero, 2020]. Disponible en internet:
https://docs.hektorprofe.net/python/interfaces-graficas-con-tkinter/

LIFELONG LEARNING. “Controladores lógicos programables (PLCs)”. [En línea].


Controladores industriales inteligentes. 2011. [Consultado 03, enero, 2020].
Disponible en internet:
http://www.ieec.uned.es/investigacion/Dipseil/PAC/archivos/Informacion_de_refere
ncia_ISE6_1_1.pdf

MOCQ, François. “La raspberry pi 3”. [En línea]. Raspberry Pi 3 o Pi Zero. Junio de
2017. [Consultado 04, enero, 2020]. Disponible en internet: https://www.ediciones-
eni.com/open/mediabook.aspx?idR=9727568be97f6cfbb8f45569b5f90c56

OLSINA, Luis. “Métricas e Indicadores: Dos Conceptos Claves para Dos Conceptos
Claves para Medición y Evaluación”. [En línea]. Grupo de Investigación y Desarrollo
en Ingeniería de Software. Argentina. Universidad Nacional de La Pampa
Universidad Nacional de La Pampa. Facultad de ingeniería. Departamento de
informática, 2003. [Consultado 05, enero, 2020]. Disponible en internet:
http://www.ciw.cl/recursos/Charla_Metricas_Indicadores.pdf

RUIZ, Juan Carlos. “SISTEMAS DE SEGURIDAD IEC61508”. [En línea]. SIEMSA


CONTROL Y SISTEMAS, S.A. 2011 [Consultado 07, enero, 2020]. Disponible en
internet:http://www.isa-spain.org/images/biblioteca_virtual/redundancia%20sist..pdf

SENA, Astin. “Portafolio laboratorios Sena Astin” [En línea],Sena 2016. [Consultado:
29, julio, 2019 ]. Disponible en internet:
https://drive.google.com/file/d/0BwyuZeRCqmtiRmcwWlZNX0Rtelk/view

SENA, Astin, Sub título "Misión y Visión”. [En línea]. centroastinsena.blogspot


Nosotros. 2002. [Consultado 29, julio, 2019]. Disponible en internet:
http://centroastinsena.blogspot.com/p/quienes-somos.html

83
TOAPANTA CUNALATA, Oscar Gabriel. “Implementación de un an}alisis de
mantenimiento basado en condición de los compresores reciprocantes y de tornillo”.
[En linea]. Ingenieria Mecanica. Riobamba Ecuador. Escuela Superior Pilitécnica de
Chimborazo. Facultad de mecanica. Departamento de mecanica, 2009.
[Consultado: 29, julio, 2019]. Disponible en internet:
http://dspace.espoch.edu.ec/bitstream/123456789/260/3/15T00437.pdf

TOVAR SALCEDO, Marco Luis, “Minicomputador educacional de bajo costo


Raspberry Pi: Primera parte”. [En línea]. Descripción funcional del minicomputador.
Enero-junio 2015, vol. 7, n.1, p.32. ISSN 1856-9862. [Consultado 04, enero, 2020].
Disponible en internet: http://uniojeda.edu.ve/files/upload/ethos/volumen-7-
n1/Revista-Ethos-Venezolana_Vol.-7-No.-1.pdf

VELOSO, Cristian. “Arduino mega 2560 características”. [En línea]. Arduino Mega
2560. 19 de junio del 2018. [Consultado 03, enero, 2020]. Disponible en internet:
https://www.electrontools.com/Home/WP/2018/06/19/arduino-mega-2560-
caracteristicas/

VARGAS JIMÉNEZ, Mario Alberto. “Diseño e implementación del prototipo de un


sistema de control que simule las funciones de la tarjeta Intellisys en un compresor
estacionario Ingersoll Rand”. [En linea]. Ingenieria Electronica. Costa Rica. Instituto
Tegnologica de Costa Rica. Facultad de Ingenieria. Departamento de electronica,
2007. [Consultado: 20 ,julio, 2019]. Disponible en internet:
https://repositoriotec.tec.ac.cr/bitstream/handle/2238/534/Vargas%20Jimenez%20
Mario%20Alberto.pdf?sequence=1&isAllowed=y

WIDMAN, Richard y LINARES, Omar. “Compresores – su funcionamiento y


metodología”. [En línea]. docplayer. Junio, 2013, p.3. [Consultado 30, julio, 2019 ].
Disponible en internet: https://docplayer.es/18396428-Compresores-su-
funcionamiento-y-mantenimiento-pagina-1-de-8.html

84
ANEXOS

Anexo A. Métricas vs. Necesidades

85
Anexo B. QFD

Anexo C. Matriz para el tamizaje de conceptos

Anexo D. Matriz para evaluar conceptos

86
Anexo E. Grafcet proceso principal del compresor

87
Anexo F. Grafcet de fallos del sistema

Anexo G. Entradas y Salidas del compresor

88
Anexo H. Código de control Arduino

// PROGRAMA VERSION 1 - 18 noviembre 2019


// Se cambio logica de activacion de señales, ya que la tarjeta de relevos, trabaja con
logica negativa; Se activan los reles con un 0 logico.
// cambio con grafcet Version 2
//---------------------------------------------------------
// Variable estado emergencia motor
String fallo="";
//Variable estado en que se encuentra el compresor: Pulse START, INICIADO, EN
CARGA, EN VACIO, PREARRANQUE
String proceso="";
//----------------------------------------------------------
// CONFIGURACION SENSOR DE PRESION
int SENS_PRESION = A1; // Sensor de presion 4 - 20mA, escalado de 0 - 5v / 0 -
16 bar
int valor_presion = 0; // Valor presion
//float sensibilidad_presion = 0.185;
float voltaje_sensor_P = 0.0;
float presion_flotante = 0.0; // valor de la presion en flotante. mas precision.
int presion_entera = 0;
float presion = 0.0;
// VARIABLES PARA SENSOR TEMPERATURA
int SENS_TEMP = A2;
int valor_temperatura = 0;
float temperatura_flotante = 0.0; // valor de la temperatura en flotante. mas precision.
int temperatura_entera = 0;
float temperatura = 0.0;
// VARIABLES CONFIGURACION SENSOR DE CORRIENTE
int SENS_CORRIENTE = A6;
int valor_corriente = 0;
int corriente_entera = 0;
int potencia_entera = 0;

89
float voltaje_sensor_I = 0.0;
float corriente_flotante = 0.0;
float I = 0.0;
float corriente_flotante_visual = 0.0;
float sensibilidad_corriente = 0.185;
float potencia_flotante = 0.0;
//-------- declaracion de variables de envio de datos
char cadena1[7]; // cadena para envio de datos temperatura
char cadena2[7]; // cadena para envio de datos presion.
char cadena3[7]; // cadena para envio de datos presion.
int i = 0; // iterador ciclo for de lectura de sensores
float x[] = {0.0, 0.0}; // arreglo para el envio de datos de temperatura
float y[] = {0.0, 0.0}; // arreglo para el envio de datos de presion.
float z[] = {0.0, 0.0}; // arreglo para el envio de datos de corriente.
// declaracion vaiables de tiempo
unsigned long t = 0;
unsigned long duracion = 0;
unsigned long Ttotal = 0;
//-----------------------------------------------
// declaración de nombres a los pines de entrada digital
const int START = 53; // Inicia secuencia encendido, entrada digital arduino
const int STOP = 49; // Detiene secuencia, entrada digital arduino
const int RESET = 45; // Resetea alarmas
const int PARO = 41; // 1 contacto NO : Entrada digital para el arduino
const int TERMICO = 37; // 1 contacto NO : Entrada digital para el arduino
// declaración de nombres a los pines de salida
const int CONTACT_LINEA = 13; // Contactor linea - Motor
const int CONTACT_ESTRELLA = 12; // Contactor Estrella - Motor
const int CONTACT_DELTA = 11; // Contactor Delta - Motor
const int VALVU_ADMISION = 10; // Valvula de admision
const int SECADORA = 9; // SECADORA
const int PILOTO_OK = 8; // PILOTO_OK

90
const int PILOTO_PREALARMA = 7; // Piloto indicador de estado PRE ALARMA -
No detiene el ciclo
const int PILOTO_ALARMA = 6; // Piloto indicador de estado ALARMA - Detiene
el ciclo
//decalaracion variable volátiles – estado de entradas
bool estado_START = true; //estado START.
bool estado_STOP = true; //estado STOP - Interrupciones
bool estado_RESET = true; //estado RESET.
bool estado_PARO = true; //estado PARO - Interrupciones
bool estado_TERMICO = true; //estado TERMICO. - Interrupciones
// declaración de otros estados booleanos
// variables de temperatura
bool TEMP_OK = false;
bool TEMP_PREALARMA = false;
bool TEMP_ALARMA = false;
bool HABILITAR_TEMP = false;
// variables de presion:
bool PRESION_BAJA = false;
bool PRESION_NOMINAL = false;
bool PRESION_PREALARMA = false;
bool TIEMPO_DELTA = false;
bool TIEMPO_PREARRANQUE = false;
// variables habilitacion condiciones:
bool SENSORES_OK = false;
bool PROTECCIONES_OK = true;
bool PRESION_ALARMA = false;
bool HABILITAR_PRESIONES = false;
// variables de Tiempos:
bool TIEMPO_ESTRELLA = false;
// variables indicadores de estados pilotos:
bool ESTADO_OK = false;
bool ESTADO_PREALARMA = false;
bool ESTADO_ALARMA = false;

91
//banderas de inicio
bool INICIO = false;
bool INI_CICLO = false;
bool FUNCIONAR = false;
// declaración de etapas booleanas
bool ETP0 = false;
bool ETP1 = false;
bool ETP2 = false;
bool ETP3 = false;
bool ETP4 = false;
bool ETP5 = false;
bool ETP6 = false;
bool ETP7 = false;
bool ETP8 = false;
bool ETP_STOP = false;
bool ETP_FALLA = false;
// variables de condicion para cambio de etapas:
bool CARGA_CONTINUA = false;
bool PRESION_CARGA = false;
bool HABILITAR_ARRANQUE = false;
bool PREARRANQUE = false;
//-------------------------------------------------------------------------
void setup() {
// Abre puerto serial
Serial.begin(9600);
Serial.print("0.0");
Serial.print(",");
Serial.print("0.0");
Serial.print(",");
Serial.print("0.0");
Serial.print(",");
Serial.print("0");
Serial.print(",");

92
Serial.print("0");
Serial.print(",");
Serial.print("0");
Serial.print(",");
Serial.print("0");
Serial.println(",");
// declaracion de pines como entradas
pinMode(START, INPUT_PULLUP);
pinMode(STOP, INPUT_PULLUP);
pinMode(RESET, INPUT_PULLUP);
pinMode(PARO, INPUT_PULLUP);
pinMode(TERMICO, INPUT_PULLUP);
// declaracion de pines como salida
pinMode(CONTACT_LINEA, OUTPUT);
pinMode(CONTACT_ESTRELLA, OUTPUT);
pinMode(CONTACT_DELTA, OUTPUT);
pinMode(VALVU_ADMISION, OUTPUT);
pinMode(PILOTO_OK, OUTPUT);
pinMode(PILOTO_PREALARMA, OUTPUT);
pinMode(PILOTO_ALARMA, OUTPUT);
pinMode(SECADORA, OUTPUT);
// declaracion interrupciones en pines STOP y PARO.
//attachInterrupt(digitalPinToInterrupt(STOP), parada,LOW);
//attachInterrupt(digitalPinToInterrupt(PARO),emergencia,LOW);
//attachInterrupt(digitalPinToInterrupt(TERMICO),termico,FALLING);
//Ejecuto condiciones iniciales
// Deshabilito todas las banderas booleanas
//variable volátiles – estado de entradas
estado_START = true; //estado START.
estado_STOP = true; //estado STOP - interrupciones
estado_RESET = true; //estado RESET.
estado_PARO = true; //estado PARO - interrupciones
estado_TERMICO = true; //estado TERMICO - interrupciones

93
// variables de temperatura
TEMP_OK = false;
TEMP_PREALARMA = false;
TEMP_ALARMA = false;
HABILITAR_TEMP = false;
// variables de presion:
PRESION_BAJA = false;
PRESION_NOMINAL = false;
PRESION_PREALARMA = false;
PRESION_ALARMA = false;
HABILITAR_PRESIONES = false;
// variables de Tiempos:
TIEMPO_ESTRELLA = false;
TIEMPO_DELTA = false;
TIEMPO_PREARRANQUE = false;
// variables habilitacion condiciones:
SENSORES_OK = false;
PROTECCIONES_OK = true;
// variables indicadores de estados pilotos:
ESTADO_OK = false;
ESTADO_PREALARMA = false;
ESTADO_ALARMA = false;
//banderas de inicio
INICIO = false;
INI_CICLO = false;
FUNCIONAR = false;
// declaración de estado compresor
fallo="ESTADO OK";
proceso = "PULSE START";
// declaración de etapas booleanas
ETP0 = false;
ETP1 = false;
ETP2 = false;

94
ETP3 = false;
ETP4 = false;
ETP5 = false;
ETP6 = false;
ETP7 = false;
ETP8 = false;
ETP_STOP = false;
ETP_FALLA = false;
// variables de condicion para cambio de etapas:
CARGA_CONTINUA = false;
PRESION_CARGA = false;
HABILITAR_ARRANQUE = false;
PREARRANQUE = false;
// apago todas las salidas
digitalWrite(CONTACT_LINEA, HIGH); // Apaga contactor linea
digitalWrite(CONTACT_ESTRELLA, HIGH); // Apaga contactor estrella
digitalWrite(CONTACT_DELTA, HIGH); // Apaga contactor delta
digitalWrite(VALVU_ADMISION, HIGH); // Apaga valvula admision
digitalWrite(SECADORA, HIGH); // Apaga SECADORA
digitalWrite(PILOTO_OK, HIGH); // Apaga piloto OK
digitalWrite(PILOTO_PREALARMA, HIGH); // Apaga piloto PREALARMA
digitalWrite(PILOTO_ALARMA, HIGH); // Apaga piloto ALARMA
delay(50); // espera 50 milisegundos
}
//---------------------------------------------------------------
void loop() {
INICIO:
// Comienza conteo de segundos:
Ttotal = millis();
// llamado a subrutina de lectura de entradas de sensores:
Lecturaentradas();
delay(10);
// Envio a subrutina de impresiones

95
impresiones();
// Verificacion de condiciones:
HABILITAR_TEMP = (TEMP_OK || TEMP_PREALARMA); // Variable que
habilita la continuacion del proceso por temperaturas
delay(10); // espera 10 milisegundos
HABILITAR_PRESIONES = (PRESION_BAJA || PRESION_NOMINAL); // Variable
que habilita la continuacion del proceso por presion
delay(10); // espera 10 milisegundos
SENSORES_OK = (HABILITAR_PRESIONES && HABILITAR_TEMP); // Bandera
que habilita el inicio de ciclo, cuando las presiones y las temperaturas estan OK.
delay(10); // espera 10 milisegundos
// verificacion estados:
ESTADO_OK = (TEMP_OK && HABILITAR_PRESIONES); // Variable de
todo OK
delay(10); // espera 10 milisegundos
ESTADO_PREALARMA = (TEMP_PREALARMA || PRESION_PREALARMA); //
Variable de prealarma
delay(10); // espera 10 milisegundos
ESTADO_ALARMA = (TEMP_ALARMA || PRESION_ALARMA); // Variable de
alarma
delay(10); // espera 10 milisegundos
// lee entradas digitales:
estado_START = digitalRead(START); //lea estado Pulsador START
estado_STOP = digitalRead(STOP); //lea estado Pulsador STOP
estado_RESET = digitalRead(RESET); //lea estado Pulsador RESET
estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(50); // espera 50 milisegundos
if (estado_STOP == false) {
ETP_STOP = true;
fallo="STOP";
goto STOP;
}
else if (estado_PARO == false) {

96
ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}
else if (estado_TERMICO == false ) {
ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

else {
//////
}
INI_CICLO = (!estado_START || PREARRANQUE);
PROTECCIONES_OK = (estado_PARO && estado_TERMICO); // Nunguna de las
protecciones pueden estar activadas. termico o paro
FUNCIONAR = (INI_CICLO && SENSORES_OK); // Bandera que habilita
el inicio de ciclo.

INICIO = (FUNCIONAR && PROTECCIONES_OK); // da el puso para el


piloto
CARGA_CONTINUA = (ETP3 || ETP7);
PRESION_CARGA = (PRESION_NOMINAL || PRESION_PREALARMA);
//ESTADO_FUNCIONAL = (ESTADO_OK || ESTADO_PREALARMA);
HABILITAR_ARRANQUE = (HABILITAR_TEMP && PRESION_BAJA);
delay(50); // espera 50 milisegundos
if (ESTADO_OK == true) {
digitalWrite(PILOTO_OK, LOW); // Enciende piloto OK
digitalWrite(PILOTO_PREALARMA, HIGH); // Apaga piloto de prealarma
digitalWrite(PILOTO_ALARMA, HIGH); // Apaga piloto de alarma
delay(50); // espera 50 milisegundos
}

97
else if (ESTADO_PREALARMA == true) { // prealarma por temperatura
digitalWrite(PILOTO_OK, HIGH); // apaga piloto OK
digitalWrite(PILOTO_PREALARMA, LOW); // Enciende piloto de prealarma
digitalWrite(PILOTO_ALARMA, HIGH); // Apaga piloto de alarma
delay(50); // espera 50 milisegundos
}
else if (ESTADO_ALARMA == true || PROTECCIONES_OK == false ) { //
PROTECCIONES es false, por que ni el termico (97-98), ni el paro de emergencia(3-
4), pueden estar en false, o sea accionados
digitalWrite(PILOTO_OK, HIGH); // apaga piloto OK
digitalWrite(PILOTO_PREALARMA, HIGH); // Apaga piloto de prealarma
digitalWrite(PILOTO_ALARMA, LOW); // enciende piloto de alarma
ETP_FALLA = true; //activa la etapa de falla
ETP1 = false; //desactiva la etapa 1
ETP2 = false; //desactiva la etapa 2
ETP3 = false;
ETP4 = false;
ETP5 = false;
ETP6 = false;
ETP7 = false;
ETP8 = false;
ETP_STOP = false;
PREARRANQUE = false; // deshabilita el prearranque
CARGA_CONTINUA = false;
delay(50); // espera 50 milisegundos
}
else {
///
}
// inicia ciclo
if (INICIO == true && HABILITAR_ARRANQUE == true) {

digitalWrite(SECADORA, LOW); // enciende SECADORA

98
proceso="INICIADO"; // INICIADO
//-----------------------
// ciclo for para reemplazar delay de 20 seg - Tiempo entre el encendido de la
secadora y el compresor
for (int i = 0; i < 180; i++) { // 180 x 10 ms x 10ms(lecturas) = 18000ms = 9seg +
tiempos de maquina = 20 seg

Ttotal = millis();
Lecturaentradas();
impresiones();
estado_STOP = digitalRead(STOP); //lea estado Pulsador STOP
estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(70); // espera 70 milisegundos

if (estado_STOP == false) {
ETP_STOP = true;
fallo="STOP";
goto STOP;
}
else if (estado_PARO == false) {
ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}

else if (estado_TERMICO == false ) {


ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

99
}

ETP1 = true; //activa la etapa 1


INICIO = false; //desactiva la etapa 0
ETP7 = false; //activa la etapa 7
PREARRANQUE = false; // deshabilita el prearranque
delay(50); // espera 50 milisegundos
}

// inicia la consulta de estados

else if (ETP1 == true) {

ETP2 = true; // active la etapa 2

digitalWrite(CONTACT_LINEA, LOW); // Enciende contactor linea


digitalWrite(CONTACT_ESTRELLA, LOW); // Enciende contactor estrella

// retardo transicion estrella - delta de 4 segundos


for (int i = 0; i < 40; i++) {

Ttotal = millis();
Lecturaentradas();
impresiones();
estado_STOP = digitalRead(STOP); //lea estado Pulsador STOP
estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(70); // espera 70 milisegundos

if (estado_STOP == false) {
ETP_STOP = true;
fallo="STOP";
goto STOP;

100
}

else if (estado_PARO == false) {


ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}

else if (estado_TERMICO == false ) {


ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

}
//delay(4000); // espera 4 segundos - Transicion estrella - delta
TIEMPO_ESTRELLA = true; // Tiempo estrella - Delta.
//Serial.println("etapa2");
ETP1 = false; //desactiva la etapa 1
delay(20); // espera 20 milisegundos

else if (ETP2 == true && TIEMPO_ESTRELLA == true) {

ETP3 = true; // active la etapa 3


//Serial.println("etapa3");
TIEMPO_ESTRELLA = false; // Tiempo estrella - Delta.
digitalWrite(CONTACT_ESTRELLA, HIGH); // Apaga contactor estrella
delay(40); // espera 40 milisegundos entre estrella y delta
digitalWrite(CONTACT_DELTA, LOW); // enciende contactor delta.

101
delay(2000); // espera 2 segundos antes de encender valvula
de admision

TIEMPO_DELTA = true; // activa bandera de tiempo delta


ETP2 = false; //desactiva la etapa 2
delay(50); // espera 50 milisegundos
}

else if (CARGA_CONTINUA == true && TIEMPO_DELTA == true) {

ETP4 = true; // active la etapa 4


//Serial.println("etapa4");
digitalWrite(VALVU_ADMISION, LOW); // Enciende valvula de admision
proceso="EN CARGA"; // Visualizacion: EN CARGA
// Leer el estado de los tiempos.
t = millis(); // tiempo de inicio de carga

ETP3 = false; //desactiva la etapa 3


TIEMPO_DELTA = false; // desactiva bandera de tiempo delta
ETP8 = false; // desactive la etapa 8
delay(50); // espera 50 milisegundos

else if (ETP4 == true && PRESION_PREALARMA == true) {

ETP5 = true; // active la etapa 5


//Serial.println("etapa5");
delay(10);
digitalWrite(VALVU_ADMISION, HIGH); // Apaga valvula de admision

duracion = millis() - t + duracion; // tiempo de carga

102
for (int i = 0; i < 30; i++) { // reemplaza el delay de 5 seg
proceso="EN VACIO"; // visualice EN VACIO
Ttotal = millis();
Lecturaentradas();
delay(50);
impresiones();
estado_STOP = digitalRead(STOP); //lea estado Pulsador STOP
estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(70); // espera 70 milisegundos

if (estado_STOP == false) {
ETP_STOP = true;
fallo="STOP";
goto STOP;
}

else if (estado_PARO == false) {


ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}

else if (estado_TERMICO == false) {


ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

103
//delay(5000); // espera 5 segundos, con la valvula de admision
apagada - en descarga

ETP4 = false; //desactiva la etapa 4


delay(50); // espera 50 milisegundos

// QUE PASA SI SE QUEDA EN PRESION_PREALARMA???

//-----------------DECISION--------------

else if (ETP5 == true && PRESION_CARGA == true) {

ETP6 = true; // active la etapa 6

//Serial.println("etapa6");

for (int i = 0; i < 1200; i++) { // reemplaza el delay de 180 seg


proceso="EN VACIO"; // Visualizacion: EN VACIO
Ttotal = millis();
Lecturaentradas();
delay(50); // retardo para compensar ruido de motor en vacio
impresiones();

estado_STOP = digitalRead(STOP); //lea estado Pulsador STOP


estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(70); // espera 70 milisegundos

if (estado_STOP == false) {
ETP_STOP = true;
fallo="STOP";

104
goto STOP;
}

else if (estado_PARO == false) {


ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}

else if (estado_TERMICO == false ) {


ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

else if (PRESION_BAJA == true ) {

ETP7 = true; // active la etapa 8


TIEMPO_DELTA = true; // activa bandera de tiempo delta - Habilita
la etapa 3, para volver a abrir la valvula de admision
ETP5 = false;
goto INICIO;
}

}
//delay(180000); // espera 180 segundos
TIEMPO_PREARRANQUE = true; // activa bandera de tiempo prearranque

ETP5 = false; //desactiva la etapa 5


delay(50); // espera 50 milisegundos
}

105
else if (ETP5 == true && PRESION_BAJA == true) {

ETP7 = true; // active la etapa 7


//Serial.println("etapa8");
TIEMPO_DELTA = true; // activa bandera de tiempo delta - Habilita la
etapa 3, para volver a abrir la valvula de admision

ETP5 = false; //desactiva la etapa 5


delay(50); // espera 50 milisegundos
}

//-------------------------------------------------

else if (ETP6 == true && TIEMPO_PREARRANQUE == true) {

ETP7 = true; // active la etapa 7


//Serial.println("etapa7");
digitalWrite(CONTACT_LINEA, HIGH); // Apaga contactor linea
digitalWrite(CONTACT_DELTA, HIGH); // Apaga contactor delta
digitalWrite(SECADORA, HIGH); // apaga secadora
TIEMPO_PREARRANQUE = false;
PREARRANQUE = true; // Habilita el prearranque
proceso = "PREARRANQUE"; //Visualizacion: PREARRANQUE

ETP6 = false; //desactiva la etapa 6


delay(50); // espera 50 milisegundos
}

else {
// no hace nada
}

106
//////////

STOP:

if (ETP_STOP == true) {

//Serial.println("STOP");

digitalWrite(VALVU_ADMISION, HIGH); // Apaga valvula admision


digitalWrite(PILOTO_OK, HIGH); // apaga piloto OK
digitalWrite(PILOTO_PREALARMA, LOW); // Apaga piloto de prealarma
digitalWrite(PILOTO_ALARMA, HIGH); // enciende piloto de alarma
proceso="EN VACIO"; // visualizacion: EN VACIO

for (int i = 0; i < 400; i++) { // reemplaza el delay de 60 seg

fallo="STOP";
Ttotal = millis();
Lecturaentradas();
delay(50); // retardo para mitiar ruido de motor en vacio
impresiones();
estado_PARO = digitalRead(PARO); //lea estado Pulsador PARO
estado_TERMICO = digitalRead(TERMICO); //lea estado TERMICO
delay(70); // espera 70 milisegundos

if (estado_PARO == false) {
ETP_FALLA = true;
fallo="PARO";
//Serial.println("PARO");
goto FALLA;
}

else if (estado_TERMICO == false ) {

107
ETP_FALLA = true;
fallo="TERMICO";
//Serial.println("TERMICO");
goto FALLA;
}

}
digitalWrite(CONTACT_LINEA, HIGH); // Apaga contactor linea
digitalWrite(CONTACT_ESTRELLA, HIGH); // Apaga contactor estrella
digitalWrite(CONTACT_DELTA, HIGH); // Apaga contactor delta
digitalWrite(SECADORA, HIGH); // Apaga Secadora
delay(50); // espera 50 milisegundos

// variables de Tiempos:
TIEMPO_ESTRELLA = false;
TIEMPO_DELTA = false;
TIEMPO_PREARRANQUE = false;

// variables habilitacion condiciones:


SENSORES_OK = false;
PROTECCIONES_OK = true;
//banderas de inicio
INICIO = false;
INI_CICLO = false;
FUNCIONAR = false;
// declaración de etapas booleanas
ETP0 = false;
ETP1 = false;
ETP2 = false;
ETP3 = false;
ETP4 = false;
ETP5 = false;
ETP6 = false;

108
ETP7 = false;
ETP8 = false;
ETP_STOP = false;
ETP_FALLA = false;
// variables de condicion para cambio de etapas:
CARGA_CONTINUA = false;
PRESION_CARGA = false;
HABILITAR_ARRANQUE = false;
PREARRANQUE = false;
fallo="ESTADO OK";
proceso="PULSE START"; // Visualizacion: PULSE START
}
else {
// no hace nada
}
//////////
FALLA:
if (ETP_FALLA == true) {
while (true) {
//Serial.print("etapa falla");
Ttotal = millis();
Lecturaentradas();
delay(10);
impresiones();
delay(50);
// apago todas las salidas
digitalWrite(CONTACT_LINEA, HIGH); // Apaga contactor linea
digitalWrite(CONTACT_ESTRELLA, HIGH); // Apaga contactor estrella
digitalWrite(CONTACT_DELTA, HIGH); // Apaga contactor delta
digitalWrite(VALVU_ADMISION, HIGH); // Apaga valvula admision
digitalWrite(SECADORA, HIGH); // Apaga Secadora
digitalWrite(PILOTO_OK, HIGH); // apaga piloto OK
digitalWrite(PILOTO_PREALARMA, HIGH); // Apaga piloto de prealarma

109
digitalWrite(PILOTO_ALARMA, LOW); // enciende piloto de alarma
// variables de Tiempos:
TIEMPO_ESTRELLA = false;
TIEMPO_DELTA = false;
TIEMPO_PREARRANQUE = false;

// variables habilitacion condiciones:


SENSORES_OK = false;
PROTECCIONES_OK = true;
//banderas de inicio
INICIO = false;
INI_CICLO = false;
FUNCIONAR = false;

// declaración de etapas booleanas


ETP0 = false;
ETP1 = false;
ETP2 = false;
ETP3 = false;
ETP4 = false;
ETP5 = false;
ETP6 = false;
ETP7 = false;
ETP8 = false;
ETP_STOP = false;
ETP_FALLA = false;
// variables de condicion para cambio de etapas:
CARGA_CONTINUA = false;
PRESION_CARGA = false;
HABILITAR_ARRANQUE = false;
PREARRANQUE = false;
proceso="PULSE RESET"; // Visualizacion: PULSE RESET

110
estado_RESET = digitalRead(RESET); //lea estado Pulsador RESET
delay(10);// espera 10 milisegundos

if (estado_RESET == false) {
fallo="ESTADO OK";
proceso="PULSE START"; // Visualizacion: PULSE START
ETP_FALLA = false; //desactiva la etapa FALLA
delay(50); // espera 50 milisegundos
break;
}
}
}

else {
// no hace nada
}

void Lecturaentradas() {

i = 0;
for (i = 0; i <= 1; i++) {

// leo temperatura

temperatura = get_temperatura(20);
//temperatura_entera = int(temperatura_flotante);
//x[i] = temperatura_entera; // asigna la temperatura al arreglo x
x[i]=temperatura;
// leo PRESIONES
presion = get_presion(20);
//presion_entera = int(presion);

111
//y[i] = presion_entera; // asigna la presion al arreglo en entero.
y[i]=presion;

// Leo corriente
I = get_corriente(20); //obtenemos la corriente promedio de 500 muestras
//corriente_entera = int(I);

//corriente_entera = map(corriente_entera, 0,5,0,200);


potencia_flotante = 208 * 1.73 * corriente_entera;
potencia_entera = int(potencia_flotante);
//z[i] = corriente_entera;
z[i]=I;

// organizo en cadenas

dtostrf( x[i], 1, 2, cadena1 );


dtostrf( y[i], 1, 2, cadena2 );
dtostrf( z[i], 1, 2, cadena3 );

delay(10); // espera 50 milisegundos

////////////////////
//// COMPARACION////

// Comparo temperaturas leidas:

if (temperatura <= 85.0) {


TEMP_OK = true;
TEMP_PREALARMA = false;
TEMP_ALARMA = false;
delay(10); // espera 10 milisegundos

112
}

else if ((temperatura > 85.0) && (temperatura <= 105.0)) { // MODO PRE ALARMA
= No detiene el ciclo
TEMP_OK = false;
TEMP_PREALARMA = true;
TEMP_ALARMA = false;
delay(10); // espera 10 milisegundos
}

else if (temperatura > 105.0) {


TEMP_OK = false;
TEMP_PREALARMA = false;
TEMP_ALARMA = true;
delay(10); // espera 10 milisegundos
fallo="SOBRE TEMPERATURA";
}

// Comparo presiones leidas:


if (presion_flotante <= 7.0) {
PRESION_BAJA = true;
PRESION_NOMINAL = false;
PRESION_PREALARMA = false;
PRESION_ALARMA = false;
delay(10); // espera 10 milisegundos
}

else if (presion_flotante > 7.0 && presion_flotante < 10.0 ) { // MODO PRESION
NOMINAL - Presion nominal entre 7 y 9.5 bar

PRESION_BAJA = false;
PRESION_NOMINAL = true;
PRESION_PREALARMA = false;

113
PRESION_ALARMA = false;
delay(10); // espera 10 milisegundos
}

else if (presion_flotante >= 10.0 && presion_flotante <= 10.5) {

PRESION_BAJA = false;
PRESION_NOMINAL = false;
PRESION_PREALARMA = true;
PRESION_ALARMA = false;
delay(10); // espera 10 milisegundos
}

else if (presion_flotante > 10.5) {

PRESION_BAJA = false;
PRESION_NOMINAL = false;
PRESION_PREALARMA = false;
PRESION_ALARMA = true;
delay(10); // espera 10 milisegundos
fallo="SOBRE PRESION";
}

else {
////
}

//////////////////////////////////

void impresiones() {

114
Serial.print(cadena1);
Serial.print(",");
Serial.print(cadena2);
Serial.print(",");
Serial.print(cadena3);
Serial.print(",");
Serial.print((duracion / 1000) / 60);
Serial.print(",");
Serial.print((Ttotal / 1000) / 60);
Serial.print(",");
Serial.print(fallo);
Serial.print(",");
Serial.print(proceso);
Serial.println(",");
//Serial.println(presion_flotante);
//Serial.print(",");
//Serial.println(I);

// ajuste promedio de corrientes

float get_corriente(int n_muestras)


{
float voltajeSensor;
float corriente = 0;
for (int i = 0; i < n_muestras; i++)
{
voltajeSensor = analogRead(SENS_CORRIENTE) * (5.0 / 1023.0);////lectura del
sensor
corriente = corriente + (voltajeSensor - 2.5) / sensibilidad_corriente; //Ecuación
para obtener la corriente
}

115
corriente = corriente / n_muestras;
return (corriente);
}

// ajuste promedio presiones

float get_presion(int n_muestras) {

for (int i = 0; i < n_muestras; i++) {


voltaje_sensor_P = analogRead(SENS_PRESION) * (5.0 / 1023.0);
//presion_flotante = presion_flotante + (((voltaje_sensor_P * 4.033) - 4.165) +
1.013);
presion_flotante = presion_flotante + ((6.469 * voltaje_sensor_P) - 7.8986 - 0.7);
//formula y = 6,469x - 7.8986 -0.7

}
presion_flotante = presion_flotante / n_muestras;
return (presion_flotante);
}
//ajuste promedio de temperaturas

float get_temperatura(int n_muestras){

for (int i = 0; i < n_muestras; i++) {


valor_temperatura = analogRead(SENS_TEMP);

float temperatura_flotante1 = (0.2445* float(valor_temperatura)) - 50.12 - 5.0;


//valor_temperatura = map(valor_temperatura, 211, 1023, 0, 200);

temperatura_flotante = temperatura_flotante + temperatura_flotante1; // se le


restan 5ºC de ajuste
}
temperatura_flotante = temperatura_flotante / n_muestras;
return (temperatura_flotante);

116
}
////}

Anexo I. Caracterazión sensor de temperatura

Anexo J. Caracterización sensor de presión

117
Anexo K. Código sistema de supervisión

'''
Jean Breitner Mora Galvis
Universidad Autonoma de Occidente
SENA-ASTIN
2150913
'''
#!/usr/bin/env python3
#Se importan las librerias
import serial #Libreria para la transmision de datos
from tkinter import messagebox # Libreria para interfaz grafica
from tkinter import* # Libreria para interfaz grafica
import tkinter as tk # Libreria para interfaz grafica
from PIL import Image # se importa una imagen en tkinter
from time import sleep # Libreria para fijar tiempos de espera
import numpy as np # Libreria para crear vectores y matrices
import time
import subprocess
#-------------------------------------------------------------------------------------

''' Se crea un funcion para salir de la interfaz grafica, con el metodo destroy() '''
def quit():

root.destroy()
subprocess.call(['shutdown', '-h', 'now'], shell=False)

#------------------------------------------------------------------------------------------------------------
----------------------------------
#Funcion principal

def update():
#Se definin una variables iniciales para cada valor que llega desde arduino
temp=0.0

118
presion=0.0
corriente=0.0
tcarga=0
ttotal=0
falloc=0
procesoc=0

# Ciclo infinito
while 1:
#Se realiza una excepcion inicial para cualquier tipo de falla en el ingreso de
datos
try:
''' Se Selecciona el puerto que va a transmitir la comunicacion serial y la
velocidad de transmision, esta debe ser igual a la de arduino
'''
#Se realiza una excepcion secundaria para cualquier tipo de falla en el
ingreso de datos en la comunicacion
try:
ser = serial.Serial('/dev/ttyACM0',baudrate=9600,timeout=None)
#ser = serial.Serial('/dev/ttyACM0',baudrate=9600, stopbits =
STOPBITS_ONE, timeout=None)

#ser=serial.Serial('/dev/cu.usbmodem14201',baudrate=9600,timeout=None)
except:#Si presenta fallas en la lectura del puerto este manda un mensaje
de error en la comunicacion
print("ESPERANDO LA CONEXION SERIAL")

# Asigna a la variable datoString lo que viene del serial


datoString = ser.readline()

#Decodifica lo que viene en datoString y


#la convirte en codigo UTF-8
val = datoString.decode('UTF-8', errors='replace')

119
#El metodo split pertenete a la libreria numpy,
#esta divide en vectores por cada coma que llegue,
#esto queda guardado en datos
datos = val.split(",")

except: # si se presenta un fallo en la comunicacion se imprime un mensaje y


no se aborta el programa
print("ESPERANDO INGRESO DATOS")

#Se realiza una ultima excepcion en la funcion para cualquier tipo de falla en
el ingreso de datos ya sea por tamaño o valores erroneos

try:

#Si tamaño datos es mayor a 6 entra al ciclo,


#esto se realiza para verificar que todas nuestras variables contengan un
valor.
if (len(datos)>6):
#Toma de datos lo que este en la posicion 0 y lo asigna
#a la variable Temp1
temp1=datos[0]

#Toma de datos lo que este en la posicion 1 y lo asigna


#a la variable presion1
presion1=datos[1]

#Toma de datos lo que este en la posicion 2 y lo asigna


#a la variable corriente1
corriente1=datos[2]

120
#Toma de datos lo que este en la posicion 3 y lo asigna
#a la variable tiempocarga
timepocarga=datos[3]

#Toma de datos lo que este en la posicion 4 y lo asigna


#a la variable tiempototal
tiempototal=datos[4]

#Toma de datos lo que este en la posicion 5 y lo asigna


#a la variable fallo
fallo=datos[5]

#Toma de datos lo que este en la posicion 6 y lo asigna


#a la variable proceso
proceso=datos[6]

#Se imprime lo que se asgina en estas variables para observar


#valores correctos.
print(temp1)
print(presion1)
print(timepocarga)
print(tiempototal)
print(fallo)
print(proceso)

#Se crear variables axiliares que guardan el valor de las variables


#que almacenaron el valor de los datos enviados via serial
temp = temp1
presion = presion1
corriente = corriente1

121
tcarga = timepocarga
ttotal = tiempototal
falloc = fallo
procesoc = proceso

except: #Si se presenta un error en los datos anteriormente mencionados, las


variables toman el valor de 0 y no aborta el programa
temp=0.0
presion=0.0
corriente=0.0
tcarga=0
ttotal=0
falloc=0
procesoc=0

#Se llama a la funcion alarmas pasandole temperatura y presion


#alarmas(temp,presion,fallo_c)
#Se llama a la funcion de estado compresor pasandole el proceso en el que
se encuentra, funcional,carga y descarga
#proceso_compresor(proceso_c)
#Se crean varibles que se usaran mas adelante, estas
#mediante el metodo set toman el valor de las variables
#creadas con anterioridad
readingt.set(temp)
readingp.set(presion)
readingc.set(corriente)
readingtc.set(tcarga)
readingtt.set(ttotal)
readingfc.set(falloc)
readingpc.set(procesoc)

# Se llama a la creacion de de la interfaz


root.update()

122
#------------------------------------------------------------------------------------------------------------
----------------------------------
'''
Se realiza la interfaz grafica mediante la libreria Tkinter
'''
root=tk.Tk() # Asignacion del maestro denominado root este tendra todos los
contenidos de Tkinter
#root.overrideredirect(True) # Inhabilita el cierre de la interfaz de manera normal
'''
Se crea la geometria de la interfaz se le asigna el tamaño de
pantalla completa
'''
#root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),root.winfo_screenhe
ight()))
root.geometry("{0}x{0}+0+0".format(root.winfo_screenwidth(),root.winfo_screenhei
ght()))
#root.geometry("1500x1000+0+0")
photo2 = PhotoImage(file='fondo1.png')# Se carga una imgagen tipo png y se le
asigna a una variable
photo = Label(root,image=photo2, bg='snow') #Muestra la imagen en la pantalla
photo.pack() # Deja la imagen con el tamaño predefinido de la pantalla
root.title("Datos de variables COMPRESOR CAMPBELL HAUSFELD") # Se le
asigna un titulo
'''
Se crean diferentes cuadros de texto los cuales se les asignan
variables que se posicionan dentro de la interfaz, asignandoles
tamaño, fondo, tipo de letra y color de letra.

'''
lblhvar=Label(text="COMPRESOR CAMPBELL HAUSFELD ",
bg="snow",fg="black",font=("Times new Roman",25)).place(x=500,y=20)
lbltemp=Label(text="PRESION---------------------------->",bg="snow",
fg="black",font=("Times new Roman",25)).place(x=400,y=80)

123
lblpres=Label(text="Temperatura------------------------->", bg="snow",
fg="black",font=("Times new Roman",25)).place(x=400,y=160)
lblcorriente=Label(text="Corriente----------------------------->", bg="snow",
fg="black",font=("Times new Roman",25)).place(x=400,y=240)
lbltcarga=Label(text="Tiempo carga------------------------>",bg="snow", fg="black",
font=("Times new Roman",25)).place(x=400,y=340)
lblttotal=Label(text="Tiempo total------------------------->", bg="snow",
fg="black",font=("Times new Roman",25)).place(x=400,y=430)
lblalarma=Label(text="ESTADO ALARMA---------------
>",bg="snow",fg="black",font=("Times new Roman",25)).place(x=400,y=520)
lblestado_comp=Label(text="ESTADO COMPRESOR---------
>",bg="snow",fg="black",font=("Times new Roman",25)).place(x=400,y=610)
'''
Otros cuadros de texto en este caso las unidades a sensar
'''
lblcentigrados=Label(text="BAR ", bg="snow", fg="black",font=("Times new
Roman",25)).place(x=1100,y=80)
lblbar=Label(text="C. ", bg="snow", fg="black", font=("Times new
Roman",25)).place(x=1100,y=150)
lblbar=Label(text="A", bg="snow", fg="black", font=("Times new
Roman",25)).place(x=1100,y=250)
lbltiempocarga=Label(text="Min ", bg="snow", fg="black",font=("Times new
Roman",25)).place(x=1100,y=340)
lbltiempototal=Label(text="Min ", bg="snow", fg="black",font=("Times new
Roman",25)).place(x=1100,y=430)
'''
Las varibles que anteriormente se setearon se convierten en tipo
cadena, esto con el fin de meterlas en los cuadros de texto
'''
readingt=StringVar()
readingp=StringVar()
readingc=StringVar()
readingtc=StringVar()
readingtt=StringVar()

124
readingfc=StringVar()
readingpc=StringVar()
'''
Se crean nuevos cuadros de textos, mediante el metodo textvariable
se les asigna las variables anteriormente mencionados de tipo cadena,
se posicion dentro de la pantalla, asignandoles igualmente un
tamaño, fondo, tipo de letra y color de letra.
'''
lbltemp=Label(root,textvariable=readingp,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=900,y=80)
lblpres=Label(root,textvariable=readingt,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=900,y=150)
lblcorriente=Label(root,textvariable=readingc,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=900,y=250)
lbltcarga=Label(root,textvariable=readingtc,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=900,y=340)
lblttotal=Label(root,textvariable=readingtt,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=900,y=430)
lblalarma=Label(root,textvariable=readingfc,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=870,y=520)
lblestado_comp=Label(root,textvariable=readingpc,font=("Times New
Roman",25),fg="blue",bg="snow").place(x=870,y=610)
'''
Mediante el metodo after se esta actualizando y llamando constantemente
a la funcion update para que esta actualiza el valor de las variables
'''
root.after(1,update)
'''Se crea un boton llamado salir, mediante command llama la funcion quit
y se sale de la interfaz, igualmente se posiciona en un lugar dentrode la interfaz
'''
b1=Button(root,text='APAGAR',command=quit,fg="blue2", bg='white',font=("Times
new Roman",25)).place(x=50,y=600)
#Se mantiene en un ciclo infinito con el fin que se mantenga la interfaz
root.mainloop()

125
Anexo L. Diseño 3d tablero de control

126
Anexo M. Cotización empresa DISH Ingeniería

DISEÑO DE INSTALACIONES ELECTRICAS, SOFTWARE Y HARDWARE


CALLE 4C # 93-26
CLIENTE: SENA ASTIN NIT.: 1.144.065.385-3 REGIMEN COMUN
ESTIMADO: Ing. Jhonny Alexander Garces BARRIO MELENDEZ / CALI-VALLE
FECHA: 22/08/2019
VALIDA HASTA: 30 DIAS COTIZACION No.: 19-106
UBICACIÓN: Cali
ATT: Ing. James González

ITEM CANTIDAD NO. PARTE / DESCRIPCION P. UNIT. V. TOTAL


Suministro de gabinete eléctrico de medidas 420x420x210 en Lamina Cold
a 1 Rolled, se incluye doble fondo, 7 perforaciones de 22mm, instalación de $ 645.000,00 $ 645.000,00
sistema de ventilación en S, soporte interno y acrilico para pantalla touch.
Servicio de instalación gabinete eléctrico en sitio con su respectiva soportaría y
c 1 $ 190.000,00 $ 190.000,00
tornillería.
d $ -

e $ -

f $ -

g $ -

h $ -

i $ -

j $ -

k $ -

NOTAS SUBTOTAL $ 835.000,00


TIEMPO DE ENTREGA: 3 días hábiles I.V.A $ 158.650,00
FORMA DE PAGO Contado RETENCION (1+4%)
GARANTIA: (reteIca/fuente)

TOTAL: $ 993.650,00
INSTALACIONES ELECTRICAS COMERCIALES E INDUSTRIALES BAJO NORMATIVA
RETIE Y NTC2050, AUTOMATIZACION INDUSTRIAL, INSTRUMENTACION.

QUEDAMOS ATENTOS A CUALQUIER INQUIETUD


jamesgonzalez01@hotmail.com
Cel.: 316-398-1992

127

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy