Modernizacion de Maquina Inyectora de Plastico

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

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD PROFESIONAL "ADOLFO LÓPEZ MATEOS"

"MODERNIZACIÓN DE MÁQUINA INYECTORA


DE PLASTICO"

TESIS

PARA OBTENER EL TÍTULO DE

INGENIERO EN CONTROL Y AUTOMATIZACIÓN

P R E S E N T AN

HAYASHI JIMÉNEZ MEDINA


ALBERTO LÓPEZ LÓPEZ
ALBERTO DE JESÚS PÉREZ REYES

ASESORES:
M. EN C. JOSÉ DARIO BETANZOS RAMÍREZ
ING. IVÁN HERNÁNDEZ VELÁZQUEZ

MÉXICO, D.F. SEPTIEMBRE 2013


Índice General

Índice de General V

Índice de Figuras IX

Índice de Tablas XIII

1. Antecedentes Generales 1
1.1. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. Delimitación de la investigación . . . . . . . . . . . . . . . . . . . . . . . . 4

2. Marco Teórico 5
2.1. Transformación de polı́meros . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Moldeo por inyección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. Máquina de moldeo por inyección (MMI) . . . . . . . . . . . . . . . . . . . 10
2.4. Constitución fı́sica de la máquina de moldeo por inyección . . . . . . . . . 11
2.4.1. Unidad de Inyección . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.2. Unidad de Cierre o Prensa . . . . . . . . . . . . . . . . . . . . . . . 15
2.5. Materia prima para el moldeo por inyección de plástico . . . . . . . . . . . 17
2.5.1. Termoplásticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2. Termoestables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6. Ciclo de Moldeo por Inyección . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7. Plataforma Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8. Protocolo Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

v
vi ÍNDICE GENERAL

2.8.2. Descripción general . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


2.9. NI LabVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.2. Sistema ”Run-Time” DSC . . . . . . . . . . . . . . . . . . . . . . . 25
2.10. Etapa de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.10.1. Tiristores de triodo bidireccional (TRIAC) . . . . . . . . . . . . . . 26
2.10.2. Optoacoplador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.10.3. Relevador de estado solido . . . . . . . . . . . . . . . . . . . . . . . 30
2.11. Etapa de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.11.1. Multiplexor analógico . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.11.2. Amplificador de instrumentación . . . . . . . . . . . . . . . . . . . 32
2.11.3. Schmitt trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3. Diseño e implementación de los circuitos de control 35


3.1. Selección del Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2. Elementos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1. Termopar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.2. Interruptor de final de carrera . . . . . . . . . . . . . . . . . . . . . 38
3.3. Diseño del circuito para las señales de entrada . . . . . . . . . . . . . . . . 39
3.3.1. Selección del optoacoplador . . . . . . . . . . . . . . . . . . . . . . 41
3.3.2. Selección del circuito para eliminar el anti-rebote . . . . . . . . . . 42
3.3.3. Puertos de entrada y salida de la tarjeta . . . . . . . . . . . . . . . 44
3.4. Diseño del circuito para las señales de entrada de tipo analógico . . . . . . 46
3.5. Elementos de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.1. Electroválvulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.2. Motores eléctricos de la MMI . . . . . . . . . . . . . . . . . . . . . 51
3.5.3. Diseño del circuito para las señales de salida . . . . . . . . . . . . . 51
3.6. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.6.1. Conexión de los elementos de entrada . . . . . . . . . . . . . . . . . 56
3.6.2. Conexión de los elementos de salida . . . . . . . . . . . . . . . . . . 57

4. Programación del Arduino Mega y HMI. 61


4.1. Programación del Arduino Mega 2560. . . . . . . . . . . . . . . . . . . . . 63
4.1.1. Estructura General del Programa . . . . . . . . . . . . . . . . . . . 65
4.1.2. La comunicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ÍNDICE GENERAL vii

4.1.3. La librerı́a ModbusSlave . . . . . . . . . . . . . . . . . . . . . . . . 68


4.1.4. Leer entradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.1.5. Procesamiento de entradas . . . . . . . . . . . . . . . . . . . . . . . 74
4.1.6. Modo Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.1.7. Modo semi-automático . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.1.8. Modo automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.1.9. Escribir salidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2. Programación de la HMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.2.1. Pestaña Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.2.2. Pestaña Control de Temperaturas . . . . . . . . . . . . . . . . . . . 95
4.2.3. Pestaña PID’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2.4. Pestaña Controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.2.5. Pestaña Tiempos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.2.6. Pestaña Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.2.7. Pestaña Tendencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5. Análisis de Resultados 107


5.1. Resultados alcanzados en el desarrollo de las tarjetas electrónicas . . . . . 107
5.2. Identificación de señales en tablero de la MMI . . . . . . . . . . . . . . . . 111
5.3. Resultados sobre la comunicación e interfaz grafica . . . . . . . . . . . . . 113
5.4. Resulatdos sobre el control de temperatura . . . . . . . . . . . . . . . . . . 114
5.5. Resultados obtenidos en la operación normal de la MMI . . . . . . . . . . 117

Conclusiones 121

Recomendaciones para Trabajos Futuros 123

Referencias 125

Anexo 125

A. Código Fuente 127


viii ÍNDICE GENERAL
Índice de Figuras

2.1. La unidad o grupo de inyección. . . . . . . . . . . . . . . . . . . . . . . . . 9


2.2. La unidad de cierre, o prensa, que aloja al molde. . . . . . . . . . . . . . . 10
2.3. Partes generales de una MMI. . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4. Unidad de inyección (Cañón y husillo). . . . . . . . . . . . . . . . . . . . . 11
2.5. Secciones de un husillo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6. Corte de un cañón donde se aprecia el liner. . . . . . . . . . . . . . . . . . 14
2.7. Prensa en posición abierta. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8. Prensa en posición cerrada. . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.9. Caracterı́sticas de los moldes. . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.10. Secuencia de eventos en un ciclo de inyección. . . . . . . . . . . . . . . . . 20
2.11. Ejemplo de un Diagrama de Bloques y Panel Frontal correspondiente. . . . 26
2.12. Caracterı́sticas de un TRIAC. . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.13. El optoacoplador combina un LED y un fotodiodo. . . . . . . . . . . . . . 28
2.14. optoacopladores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.15. Relevadores de estado sólido para cd. . . . . . . . . . . . . . . . . . . . . . 30
2.16. Relevadores de estado sólido para ca. . . . . . . . . . . . . . . . . . . . . . 31
2.17. Multiplexor analógico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.18. Amplificador de instrumentación estándar con tres amplificadores opera-
cionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.19. a)Disparador de Schmitt inversor; b)la función de transferencia tiene
histérisis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.1. Placa Arduino Mega 2560. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36


3.2. Interconexiones de manera general de las tarjetas electrónicas con el
microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3. Interruptor de final de carrera. . . . . . . . . . . . . . . . . . . . . . . . . . 39

ix
x ÍNDICE DE FIGURAS

3.4. Diagrama de bloques para la interconexión del aislamiento y protección de


las entradas de tipo digital. . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5. Configuración general del optoacoplador. . . . . . . . . . . . . . . . . . . . 41
3.6. Configuración del primer optoacoplador para la tarjeta de señales de entrada. 42
3.7. Diagrama general de conexión del circuito 74AC14N. . . . . . . . . . . . . 43
3.8. Conexiones de todos los canales del circuito 74AC14N. . . . . . . . . . . . 43
3.9. Puerto de salidas hacia microcontrolador. . . . . . . . . . . . . . . . . . . . 44
3.10. Puerto de salidas hacia microcontrolador. . . . . . . . . . . . . . . . . . . . 45
3.11. Diagrama a bloques para la interconexión del circuito de entradas de tipo
analógica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.12. Diagrama de conexión del circuito AD594AQ. . . . . . . . . . . . . . . . . 47
3.13. Diagrama esquemático de las conexiones para el circuito 75HC4052. . . . . 48
3.14. Circuito de entradas analógicas. . . . . . . . . . . . . . . . . . . . . . . . . 49
3.15. Válvula 4 vı́as 3 posiciones, salida y regreso accionados mediante selenoide. 50
3.16. Electroválvulas de 4 vı́as 3 posiciones instaladas en la MMI. . . . . . . . . 50
3.17. Motor de bomba hidráulica y motor de bomba lubricante. . . . . . . . . . . 51
3.18. Motor de carga de material. . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.19. Diagrama de bloques para la interconexión de un sistema de control a baja
tensión a un sistema de potencia de alta tensión. . . . . . . . . . . . . . . . 52
3.20. Conexión básica del MOC3031. . . . . . . . . . . . . . . . . . . . . . . . . 52
3.21. Circuito de potencia con aislamiento. . . . . . . . . . . . . . . . . . . . . . 53
3.22. Conexión especı́fica de las placas de control y potencia con el microcontro-
lador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.23. Conexiones existentes en la MMI. . . . . . . . . . . . . . . . . . . . . . . . 55
3.24. Conexión fı́sica de la placa de control. . . . . . . . . . . . . . . . . . . . . . 56
3.25. Conexión de conductores de la electroválvula. . . . . . . . . . . . . . . . . 57
3.26. Conductores de activación de electroválvulas y relevadores de control. . . . 58
3.27. Contactor de motor de la bomba hidráulica. . . . . . . . . . . . . . . . . . 58
3.28. Placa de potencia (salidas). . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.1. Esquema General entre Arduino y LabView. . . . . . . . . . . . . . . . . . 62


4.2. Entorno de Desarrollo Integrado Code::Blocks v12.11. . . . . . . . . . . . . 64
4.3. Diagrama de flujo General del programa en Arduino . . . . . . . . . . . . . 66
4.4. Diagrama de flujo de un ciclo de la MMI . . . . . . . . . . . . . . . . . . . 79
ÍNDICE DE FIGURAS xi

4.5. Diagrama de espacio fase del ciclo de la MMI . . . . . . . . . . . . . . . . 81


4.6. Vista general de la Interfaz gráfica . . . . . . . . . . . . . . . . . . . . . . . 85
4.7. Creación de nuevo proyecto en LabView . . . . . . . . . . . . . . . . . . . 86
4.8. Creación de un nuevo servidor . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.9. Múltiples servidores en LabView . . . . . . . . . . . . . . . . . . . . . . . . 87
4.10. Parámetros de comunicación Modbus . . . . . . . . . . . . . . . . . . . . . 88
4.11. Creación de variables Modbus . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.12. Variables correspondientes al mapa de memoria en Arduino . . . . . . . . . 90
4.13. Creación de un nuevo VI dentro del proyecto . . . . . . . . . . . . . . . . . 91
4.14. Insertar Variables compartidas en VI . . . . . . . . . . . . . . . . . . . . . 92
4.15. Pestaña Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.16. Manipulación de los bits del registro MB CONTROL . . . . . . . . . . . . 94
4.17. Control de visibilidad de las pestañas . . . . . . . . . . . . . . . . . . . . . 94
4.18. Pestaña Control de Temperaturas . . . . . . . . . . . . . . . . . . . . . . . 95
4.19. Diagrama de bloques para el monitoreo de las Temperaturas, Setpoint y
Salidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.20. Pestaña PID’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.21. Diagrama de bloques para la escritura de ganancias Kp, Ki y Kd . . . . . . 98
4.22. Pestaña Controles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.23. Manipulación de las propiedades de los botones en la pestaña Controles . . 100
4.24. Pestaña Tiempos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.25. Diagrama de bloques para lectura y escritura de Temporizadores . . . . . . 102
4.26. Pestaña Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.27. Diagrama de bloques para el monitoreo de señales digitales . . . . . . . . . 104
4.28. Pestaña Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.1. Tarjeta electrónica para entradas digitales . . . . . . . . . . . . . . . . . . 108


5.2. Tarjeta electrónica para salidas digitales . . . . . . . . . . . . . . . . . . . 109
5.3. Tarjeta electrónica adquisición de lectura de termopares . . . . . . . . . . . 110
5.4. Tendencias de la lectura de dos temperaturas . . . . . . . . . . . . . . . . . 111
5.5. Identificación de terminales . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.6. Conductores sobre terminales identificadas . . . . . . . . . . . . . . . . . . 112
5.7. Comunicación entre Arduino y PC con LabView . . . . . . . . . . . . . . . 113
5.8. Comportamiento de la temperatura del cañón a una entrada escalón . . . . 114
xii ÍNDICE DE FIGURAS

5.9. Obtención de las constantes To y Tp . . . . . . . . . . . . . . . . . . . . . 115


5.10. Ganancias Kp y Ki calculadas . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.11. Elevacion de las temperaturas del cañón . . . . . . . . . . . . . . . . . . . 116
5.12. Temperaturas estabilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.13. Caja estanca sobre tablero original . . . . . . . . . . . . . . . . . . . . . . 118
5.14. Monitoreo del transcurso de los temporizadores . . . . . . . . . . . . . . . 119
5.15. Monitoreo de los estados de entradas y salidas digitales . . . . . . . . . . . 119
Índice de Tablas

1.1. Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.1. Caracterı́sticas de las placas Arduino . . . . . . . . . . . . . . . . . . . . . 22


2.2. Comparador comunicaciones Modbus en modo ASCII/RTU . . . . . . . . . 24

3.1. Sensores de la MMI Flli Sandretto . . . . . . . . . . . . . . . . . . . . . . . 38


3.2. Señales de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3. Tabla de verdad del multiplexor. . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4. Señales de Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.1. Mapa de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70


4.2. Entradas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3. Entradas digitales 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4. Salidas digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.5. Banderas de Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.1. Tabla Ziegler-Nichols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

xiii
xiv ÍNDICE DE TABLAS
Introducción

El taller de máquinas de moldeo por inyección ”Boliplas” trabaja bajo pedido, esto es,
los clientes contratan los servicios del taller para la fabricación de determinada cantidad
de piezas. La satisfacción del cliente requiere de calidad en las piezas fabricadas y el
cumplimiento de tiempos establecidos para lograr cumplir con la producción requerida.
Debido a la forma de trabajo del taller ”Boliplas”, se hace necesario que las máquinas
trabajen durante tiempos prolongados, lo cual hace vital el buen funcionamiento de
las máquinas de moldeo por inyección y sobre todo la productividad que éstas puedan
alcanzar.
Los constantes avances de la tecnologı́a, hacen posible una modernización de los
sistemas de producción, con lo cual resulta mas accesible una modernización en la
tecnologı́a de sus máquinas de moldeo por inyección que permita un aumento en la
productividad controlando parámetros de inyección y reducción en tiempos de ejecución.
Debido a esto se ha desarrollado e implementado un sistema automático para una
máquina de moldeo por inyección Flli Sandretto, la cual funcionaba mediante un control
electromecánico, lo cual permite conocer el ciclo de inyección de manera clara, desde
la alimentación del material, los parámetros de inyección que se puedan controlar, los
sistemas de seguridad, los movimientos que realiza la máquina hasta terminar con el
producto final, teniendo en cuenta siempre la seguridad del operador.
El sistema desarrollado, se dotará de una interfaz gráfica, con lo cual se piensa facilitar
el uso de la máquina al operador además de resguardar su seguridad, lo que permitirá un
incremento en la productividad de la máquina y por tal un beneficio hacia el taller.

xv
xvi ÍNDICE DE TABLAS
Capı́tulo 1

Antecedentes Generales

1.1. Metodologı́a
Este proyecto está comprendido por V capı́tulos distribuidos de la siguiente manera:
Capı́tulo I: Planteamiento del problema, contiene el planteamiento y formulación del
problema, objetivo, justificación, delimitación ası́ como la solución al mismo.
Capı́tulo II: Marco teórico, antecedentes históricos, fundamentos de la investigación.
Capı́tulo III:Diseño e implementación, referido a el proceso de diseño e imple-
mentación de los elementos necesarios para llevar a cabo los objetivos.
Capı́tulo IV: Programación del microcontrolador y desarrollo de la interfaz gráfica.
Capı́tulo V: Análisis de los resultados, conclusiones y recomendaciones obtenidas a
partir del análisis de resultados.

1.2. Planteamiento del problema


Mantener en óptimas condiciones de operación las máquinas y equipos industriales,
es hoy en dı́a lo más lógico, rentable y productivo de toda empresa. Elevar los niveles de
producción y hacer más eficiente el proceso es normal en toda organización del área
industrial manteniendo ası́ la rentabilidad de la empresa, teniendo como objetivos el
mejoramiento continuo atreves de los avances tecnológicos.
Sin embargo la mala productividad de una empresa radica principalmente en la
deficiencia de sus equipos y sistemas, esto debido a un mal uso de la máquina, un mal
mantenimiento, o porque la tecnologı́a empleada para su funcionamiento es obsoleta.
Todos estos problemas, más el elevado costo de las piezas, dan como resultado que en las

1
2 CAPÍTULO 1. ANTECEDENTES GENERALES

Tabla 1.1. Formulación del problema

Problema Solución
Poca productividad Sustitución de componentes eléctricos
Implementación de ciclos de trabajos continuos
Desgate en elementos Electrónica de potencia
electromecánicos
Mantenimiento continuo Sustitución de lógica de relevador por Arduino Mega 2560
(preventivo)
Alto costo en mantenimiento Sustitución de elementos que se facilita su adquisición
(correctivo) por su basta presencia en el mercado
Baja eficiencia Mejora de eficiencia a partir de la implementación
de nueva tecnologı́a
Interface de operación Incorporación de software grafico
rudimentaria
Solo opera en un ciclo Implementación de una técnica
(Manual) de automatización (Arduino Mega 2560)
Presenta un riesgo para el La intervención del operador solo mediante la interfaz
operador gráfica

empresas se tengan máquinas detenidas, fuera de servicio, perdiendo parcial o totalmente


su productividad. Como consecuencia a lo mencionado se dan perdidas de oportunidad y
calidad de la producción.
Este es el caso especı́fico de la máquina de moldeo por inyección 2GV-50-B
Flli Sandretto, cuyos ciclos de trabajo automático y semiautomático se encontraban
deshabilitados en el momento de su adquisición por el taller ”Boliplas”presentando
únicamente un funcionamiento de forma manual. La solución propuesta por los técnicos
consultados por el taller ”Boliplas”para restablecer los ciclos de trabajo automático
y semiautomático consistı́a en el reemplazo de múltiples relevadores de control,
temporizadores y un cambio casi en su totalidad de los conductores del tablero.
Debido al costo que presentarı́a la solución propuesta por los técnicos para la
rehabilitación de los ciclos de operación nació el proyecto de modernizar la maquina
mediante un microcontrolador, con lo cual se lograrı́a rehabilitar los ciclos de trabajo
automático y semiautomático a un menor costo.
1.3. OBJETIVO 3

1.3. Objetivo
Objetivo general.
Modernización de una máquina de moldeo por inyección 2GV-50-B Flli Sandretto, por
medio de la implementación de una placa Arduino (microcontrolador) y un entorno gráfi-
co por medio de NI LabVIEW, para hacer más eficiente la operación de la máquina.

Derivados del objetivo general se plantean los siguientes objetivos especı́ficos:

1. Examinar y conocer las condiciones de funcionamiento de la máquinas de moldeo


por inyección 2GV-50-B Flli Sandretto.

2. Identificar la magnitud de las variables que intervienen en la operación de la


máquinas de moldeo por inyección 2GV-50-B Flli Sandretto.

3. Conocer la lógica de operación del control electromecánico de la máquinas de moldeo


por inyección 2GV-50-B Flli Sandretto.

4. Investigar e identificar las tecnologı́as más viables para la modernización del control
electromecánico.

5. Reemplazar el control electromecánico mediante el uso de una placa Arduino


(microcontrolador).

6. Diseñar e implementar los circuitos electrónicos correspondientes a la etapa de


potencia y control.

7. Desarrollar la interfaz gráfica mediante el uso del software NI LabVIEW y establecer


la comunicación ordenador-microcontrolador mediante protocolo Modbus.
4 CAPÍTULO 1. ANTECEDENTES GENERALES

1.4. Justificación
México cuenta con una gran cantidad de empresas, cuyo giro es la fabricación de
piezas plásticas, las cuales han adquirido una gran aceptación de sus productos en el
mercado, debido a su versatilidad y fácil adquisición. El éxito de estas empresas radica en
el funcionamiento eficiente de sus máquinas de moldeo por inyección al ser estos equipos
de producción en serie, que trabajan por largos periodos que van desde las 8 hasta las 24
horas diarias, interrumpiendo únicamente para mantenimiento.
En la actualidad los medios de producción de las pequeñas y medianas empresas
se encuentran rezagadas de las nuevas tecnologı́as de control, por mencionar algunas:
sistemas SCADA, PLC’s, interfaces graficas HMI. Al no contar con alguna de estas
tecnologı́as en las máquinas de moldeo por inyección y al ser sometidas a los ciclos de
operación continua, tienen un gasto constante en cuestión de mantenimiento y una menor
eficiencia productiva, es debido a esta razón que se pretende llevar a cabo la modernización
del sistema de control electromecánico de la máquinas de moldeo por inyección 2GV-
50-B Flli Sandretto. Esto con el fin de aumentar la productividad y reducir costos de
mantenimiento.

1.5. Delimitación de la investigación


Delimitación espacial.
El trabajo se desarrolló en el taller de máquinas de moldeo por inyección ”Boliplas” el
cual se encuentra ubicado en la calle Alcanfores, S/N., Tultepec Estado de México.
Delimitación temporal.
La modernización de la máquinas de moldeo por inyección 2GV-50-B Flli Sandretto se
desarrollara durante el periodo de Agosto hasta Noviembre del 2013.
Delimitación de recursos.
Para el desarrollo de la modernización de la maquina 2GV-50-B Flli Sandretto se hará uso
de recursos informáticos tales como: NI LabVIEW (entorno gráfico), Code::Blocks
(programación de la placa Arduino), TexMaker (editor de texto), LiveWire (PCB’s).
Además de los recursos materiales para la elaboración de placas electrónicas, conductores,
fuentes de alimentación, accesorios y alojamiento para los mismos.
Las pruebas en campo serán realizadas a disposición del taller ”Boliplas”durante los
lapsos donde el taller no cuente con carga excesiva de trabajo.
Capı́tulo 2

Marco Teórico

2.1. Transformación de polı́meros


Técnicas de Transformación de Polı́meros Las técnicas usadas en la transformación de
los plásticos o polı́meros consisten en dar las formas y medidas deseadas a un plástico por
medio de un molde. El molde es una pieza hueca en la que se vierte el plástico fundido
para que adquiera su forma.[? ]

Compresión

Proceso: Esta técnica consiste en que el plástico en polvo es calentado y


comprimido entre las dos partes de un molde mediante la acción de una prensa
hidráulica.
Materiales: A los materiales que se le puede aplicar esta técnica de
transformación de polı́meros son:
• Termoestables
• Plásticos termofijos
Aplicaciones: Se usa para obtener pequeñas piezas de baquelita, como los
mangos aislantes del calor de los recipientes y utensilios de cocina.

Inyección

Proceso: Consiste en introducir material plástico en condiciones adecuadas


y someterlos a presión en la cavidad de un molde donde se enfrı́a a una
temperatura apta para que las piezas puedan ser extraı́das sin deformarse.

5
6 CAPÍTULO 2. MARCO TEÓRICO

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Termoplásticos y para gran número de termoendurecibles.

Aplicaciones: Por este procedimiento se fabrican palanganas, cubos, carcasas,


componentes del automóvil, etc. Aparatos electrónicos, calzado, bolı́grafos,
cepillos, piezas de automóvil.

Extrusión

Proceso: Consiste en obligar a un material fundido a pasar a través de una


boquilla o matriz que tiene la forma adecuada, para obtener el diseño deseado.

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Termoplásticos
• Elastómeros
• Rara vez con termoendurecibles

Aplicaciones: tuberı́as, Filmes para embalaje, perfiles para rematar obras,


recubrimiento aislante para cables eléctricos, mangueras, perfiles estructurales
(como molduras de ventanas y puertas)

Soplado

Proceso: Consiste en insuflar aire en una preforma tubular fundida que se


encuentra en el interior del molde.

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Termoplásticos (PEBD, PEAD, PVC-U, PS, PP, PA y ABS)

Aplicaciones: Se emplea para la fabricación de cúpulas, botellas, y piezas huecas


en general.

Colado

Proceso: Consiste en el vertido del material plástico en estado lı́quido dentro


de un molde, donde fragua y se solidifica.
2.1. TRANSFORMACIÓN DE POLÍMEROS 7

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Algunos termoplásticos, como los nailon y los acrı́licos


• Algunos plásticos termoestables, como los epóxicos, fenólicos, poliuretanos
o poliéster

Aplicaciones: Bisuterı́a, bolas de billar, láminas coladas para ventanas, piezas


de muebles, cristales de relojes, gafas de sol, mangos para herramientas,
servicios de mesa, pomos, encimeras, lavabos y botones de fantası́a.

Espumado

Proceso: Consiste en introducir aire u otro gas en el interior de la masa de


plástico de manera que se formen burbujas permanentes.

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Poliestireno
• Poliuretano (PUR)

Aplicaciones: Se fabrican colchones, aislantes termo-acústicos, esponjas, em-


balajes, cascos de ciclismo y patinaje, plafones ligeros y otros.

Calandrado

Proceso: Consiste pasar el material plásticos a través de unos rodillos que


producen, mediante presión, láminas de plásticos flexibles de diferente espesor

Materiales: A los materiales que se le puede aplicar esta técnica de


transformación de polı́meros son:

• Termoplásticos
• Elastómeros
• El PVC flexible, semirrı́gido y rı́gido es, con gran diferencia y en ese orden,
el material que más se procesa mediante calandrado. También se calandran
otros termoplásticos, como el ABS, el PP, el CPE.

Aplicaciones: Estas láminas se utilizan para fabricar hules, impermeables o


planchas de plástico de poco grosor
8 CAPÍTULO 2. MARCO TEÓRICO

Rotomoldeo

Proceso: El plástico frı́o funde sobre las paredes de un molde metálico caliente
que gira en torno a dos ejes, donde se enfrı́a y adquiere la consistencia para ser
desmoldeado.
Materiales: A los materiales que se le puede aplicar esta técnica de
transformación de polı́meros son:
• Termoplásticos
• Termoestables
• Polietileno de alta densidad
• Polivinilo clorado
• Poliamida
Aplicaciones: Pelotas, juguetes, recipientes, brazos industriales, flotadores,
tanques de combustible, visores solares, artı́culos rellenos con espuma y
doble pared, piezas huecas simétricas o asimétricas, con geometrı́a de curvas
complejas, pared uniforme, y contrasalidas.

Vulcanización

Proceso: Es un proceso mediante el cual se calienta el caucho crudo en presencia


de azufre, con el fin de volverlo más duro y resistente al frı́o.
Materiales:
• Materiales termorı́gidos
• Neopreno
• Buna o caucho artificial
Aplicaciones:
• Se emplea en tuberı́as de conducción de petróleo y como aislante para
cables y maquinaria
• Tubos interiores de las llantas de automóviles
2.2. MOLDEO POR INYECCIÓN 9

2.2. Moldeo por inyección

Una de las técnicas de procesado de plásticos que más se utiliza es el moldeo por
inyección, siendo uno de los procesos más comunes para la obtención de productos
plásticos.

Hoy en dı́a cada casa, cada vehı́culo, cada oficina, cada fábrica, etc. contiene una
gran cantidad de diferentes artı́culos que han sido fabricados por moldeo por inyección.
Entre ellos se pueden citar: teléfonos, vasijas, etc. y formas muy complejas. El moldeo
por inyección requiere temperaturas y presiones más elevadas que cualquier otra técnica
de transformación, pero proporciona piezas y objetos de bastante precisión (siempre y
cuando la resina utilizada no tenga una retracción excesiva), con superficies limpias y
lisas, además de proporcionar un magnı́fico aprovechamiento del material, con un ritmo
de producción elevado. Sin embargo, a veces, las piezas deben ser refinadas o acabadas
posteriormente, para eliminar rebabas. El fundamento del moldeo por inyección es inyectar
un polı́mero fundido en un molde cerrado y frı́o, donde solidifica para dar el producto. La
pieza moldeada se recupera al abrir el molde para sacarla. Una máquina de moldeo por
inyección tiene dos secciones principales: la unidad de inyección(Figura 2.1) y la unidad
de cierre(Figura 2.2).[? ]

Figura 2.1. La unidad o grupo de inyección.


10 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.2. La unidad de cierre, o prensa, que aloja al molde.

2.3. Máquina de moldeo por inyección (MMI)

Este capı́tulo provee los conceptos básicos que rodean a una máquina de moldeo por
inyección (MMI), ası́ como la descripción de sus partes fundamentales (Figura 2.3) y cual
es la función de cada una de estas, además de la descripción del ciclo de operación de la
MMI.
También se pretende que el lector se familiarice con los términos empleados en el
contexto de la inyección de termoplásticos ası́ como con el ciclo de operación de la MMI,
para hacer mas fácil la comprensión de la propuesta de control.

Figura 2.3. Partes generales de una MMI.


2.4. CONSTITUCIÓN FÍSICA DE LA MÁQUINA DE MOLDEO POR INYECCIÓN11

2.4. Constitución fı́sica de la máquina de moldeo por


inyección
La finalidad de una máquina de moldeo por inyección (MMI) es inyectar un polı́mero
fundido en un molde cerrado y frió, donde solidifica para dar el producto. La pieza
moldeada se recupera al abrir el molde para sacarla. Una MMI tiene dos secciones
principales:

La unidad de inyección

La unidad de cierre o prensa

2.4.1. Unidad de Inyección


La unidad de inyección consta de un tornillo de Arquı́medes (Figura 2.4), técnicamente
llamado husillo, que gira dentro de una camisa o cañón, con una distancia mı́nima entre
la pared del canon y el hilo del husillo. El cañón tiene resistencias eléctricas que lo rodean.
La profundidad del canal del husillo disminuye desde el extremo de alimentación hacia el
extremo de salida para favorecer la compresión del contenido. Los gránulos de polı́mero
frı́o se cargan mediante la tolva en el extremo de alimentación y el polı́mero fundido sale
por el extremo de salida.
El calentamiento se debe en parte a las resistencias eléctricas y en parte a la disipación
viscosa que ocurre conforme el polı́mero fundido se bombea a lo largo del husillo. El husillo
tiene un movimiento de vaivén, como si fuera un pistón dentro del cañón, durante la parte
de inyección del ciclo de producción que se describirá mas adelante.

Figura 2.4. Unidad de inyección (Cañón y husillo).

Durante la fase de plastificación, el extremo de salida esta sellado por una válvula tipo
check, y el tornillo acumula una reserva o carga de material fundido frente a él, ya que al
12 CAPÍTULO 2. MARCO TEÓRICO

rotar el husillo va trasladando material fundido únicamente hacia el extremo de salida, la


misma carga acumulada en la punta del husillo hace que este se desplace hacia tras hasta
llegar al limite definido por un microswitch. Este microswitch es la pauta para indicarle
a la MMI la cantidad de material que debe ser inyectado. Posteriormente mediante un
pistón el husillo es desplazado hacia delante haciendo llegar el material fundido acumulado
en la punta hacia la cavidad del molde, esto se logra gracias a la válvula check que impide
que el material fundido en la punta del canon sera retornado.
El medio por el cual pasa el material fundido del cañón hacia la cavidad del molde
es la boquilla, que es la conectora entre el canon y el canal de alimentación del molde.
Por lo común, las boquillas se calientan por medio de una resistencia eléctrica para evitar
que el polı́mero solidifique en la boquilla después de la inyección y retención, que seria la
situación que se darı́a por el contacto con el molde frı́o.[8]

El Husillo
El propósito de usar un husillo para llevar a cabo la plastificación en el interior del
cañón es que se aprovecha la ventaja de su acción de mezclado. El movimiento del husillo
es controlado mediante interruptores de limite, a su vez con el control de su carrera se
controla la cantidad de material (polı́mero plastificado), que será inyectado al interior de
la cavidad.[9]
Como ya se mencionó anteriormente el husillo tiene un movimiento de vaivén.
Un cilindro hidráulico es el causante de su desplazamiento axial hacia el molde, este
movimiento tiene un efecto similar al de una jeringa, el material plastificado es inyectado
hacia el interior del molde gracias a una válvula tipo check localizada casi en la punta
del husillo que impide el regreso del material pero que permite el paso hacia la punta del
cañón cuando el material se está plastificando.
El movimiento contrario (retroceso del husillo), lo ocasiona un motor eléctrico acoplado
mecánicamente en la parte posterior del husillo, ya que este lo hace rotar y crea el efecto
del tornillo de Arquı́medes, transportando y a su vez plastificando el material que es
alimentado en forma de gránulos a través de una tolva que sirve como contenedor del
polı́mero a inyectar. La acumulación del material en la punta del cañón hace que el
husillo retroceda hasta hacer contacto con el interruptor de limite.
La mayorı́a de las MMI utilizan una sola constante de paso de cuerda y un tipo de
husillo para el manejo de un polı́mero en especifico. El husillo tiene tres secciones (Figura
2.5) para llevar a cabo esta tarea:
2.4. CONSTITUCIÓN FÍSICA DE LA MÁQUINA DE MOLDEO POR INYECCIÓN13

1. La sección para la alimentación del polı́mero, que está en el extremo posterior del
husillo y es donde empieza la plastificación, su longitud va del 50 % al 75 % de
la longitud total del husillo y depende de la cantidad de calor que se necesite
suministrar al polı́mero.

2. La sección de fusión (transición), es la parte del husillo donde se produce el


ablandamiento del plástico, este se convierte en una masa fundida, la longitud de
esta seccion puede ir del 5 % al 50 % del husillo. A esta seccion también se le llama
zona de compresión y debe ser lo suficientemente largo para asegurarse de que el
polı́mero se funda.

3. La sección de dosificación, es en la cual el plástico se unta y se recorta para dar a la


masa fundida su composición uniforme y temperatura final para la entrega al molde.
Como la acción de alto cizallamiento tenderá a aumentar la temperatura de la masa
fundida, la longitud de la sección de dosificación depende de la sensibilidad al calor
del plástico. Para algunos tipos de plástico termo-sensibles se debe considerar muy
poca o ninguna acción de dosificación. Para otros plásticos se considera un promedio
de alrededor del 20 % a 25 % de la longitud del tornillo.[9]

Figura 2.5. Secciones de un husillo.

El Cañón
El cañón se define aquı́ como un cilindro de extremo abierto que controla la dirección
del plástico a ser inyectado desde la tolva al molde. Además el cañón también proporciona
14 CAPÍTULO 2. MARCO TEÓRICO

una superficie de fricción que beneficia al derretimiento del plástico.


Una de las propiedades mas importantes del cañón es la del material con el que esta
hecho. Comúnmente el cañón esta fabricado de acero con un recubrimiento interno de
otro metal, a este recubrimiento se le llama liner (Figura 2.6) y tı́picamente se fabrica de
una aleación 4140.
Hay cañones con liner especiales dependiendo de los daños que pudiera ocasionar el
material a inyectar. Por ejemplo cañones con liner resistente a la abrasión, que se utilizan
cuando el material pudiera contener fragmentos de materiales abrasivos como partı́culas
de vidrio, minerales, o fibras favorables al desgaste. También hay cañones resistentes a
la corrosión este tipo de cañones pudieran aplicarse en materiales plásticos que expiden
gases que ayudan a la oxidación de los metales, un ejemplo de este tipo de materiales es
el PVC.
Los elementos que proporcionan el calor para derretir al polı́mero son resistencias
eléctricas y estas están abrazadas al cañón, además de que el cañón también cuenta con
pequeños orificios que sirven para alojar a los termopares que son los elementos primarios
de medición de la temperatura en el cañón.[6]

Figura 2.6. Corte de un cañón donde se aprecia el liner.

Las Bandas Calefactoras


Existen varios tipos de calentadores que le suministran el calor al cañón. Estos
tipos incluyen calentadores de tipo tabular, calentadores de cartucho, calentadores tipo
banda, todos estos son calentadores a base de resistencias eléctricas y existe otro tipo de
calentadores que funcionan a base de gas natural.
2.4. CONSTITUCIÓN FÍSICA DE LA MÁQUINA DE MOLDEO POR INYECCIÓN15

2.4.2. Unidad de Cierre o Prensa


Es básicamente una prensa que se abre (Figura 2.7) y cierra (Figura 2.8) con un sis-
tema de presión hidráulico y mecánico. La fuerza de cierre disponible debe ser bastante
grande para contrarrestar la resistencia que genera el material fundido cuando se inyecta.

Figura 2.7. Prensa en posición abierta.

Figura 2.8. Prensa en posición cerrada.


16 CAPÍTULO 2. MARCO TEÓRICO

En esta prensa es donde se sujeta el molde mecánicamente (por ejemplo, con tornillos),
pero es intercambiable para permitir el molde de diferentes productos. Las caracterı́sticas
fundamentales de los moldes son (Figura 2.9):

1. La cavidad o impresión, en la cual se moldea el producto. Un molde puede contener


una única cavidad o varias.

2. Los canales, también llamados colada, son por los cuales fluye el material fundido
al inyectarse, estos son el canal de alimentación, que es el conducto que sale de la
boquilla, y los bebederos que van del canal de alimentación a las cavidades indivi-
duales. El bebedero se hace mas estrecho a la entrada de cada cavidad, a esta entrada
le llaman punto de Inyección.

3. Los canales de enfriamiento, a través de los cuales se bombea el agua de enfriamiento


para eliminar el calor del material fundido. El tamaño y localización de estos es muy
especial para que haya enfriamiento uniforme en las piezas moldeadas.

4. Los pernos expulsores, los cuales sacan la pieza moldeada de la cavidad. Funcionan
automáticamente al abrir el molde.[8]

Figura 2.9. Caracterı́sticas de los moldes.


2.5. MATERIA PRIMA PARA EL MOLDEO POR INYECCIÓN DE PLÁSTICO 17

2.5. Materia prima para el moldeo por inyección de


plástico
Los plásticos se pueden clasificar respecto a:

1. El proceso de polimerización: Existen dos procesos para hacer polı́meros, la


condensación y las reacciones de adición. La condensación produce varias longitudes
de polı́meros, mientras que las reacciones de adición producen longitudes especı́ficas.

2. La forma en que pueden procesarse: ya que de ello depende si se hará un plástico


termoplástico o si es termodurecibles.

3. La naturaleza quı́mica de un plástico depende de la unidad repetitiva que compone


la cadena del polı́mero. Por ejemplo, las poliolefinas están compuestas de monómeros
de olefinas, que son hidrocarburos de cadena abierta con al menos un doble enlace.[?
]

El fundamento del moldeo por inyección es inyectar un polı́mero (plástico) fundido en


un molde cerrado y frió, donde se solidifica para dar el producto. Por su comportamiento
frente al calor, los plásticos se clasifican en dos categorı́as: termoplásticos y termoestables.

2.5.1. Termoplásticos
Los materiales termoplásticos son aquellos materiales que están formados por
polı́meros que se encuentran unidos mediante fuerzas intermoleculares o fuerzas de Van
der waals, formando estructuras lineales o ramificadas.[? ]

Propiedades de los materiales termoplásticos:

Pueden derretirse antes de pasar a un estado gaseoso.

Permiten una deformación plástica cuando son calentados.

Son solubles en ciertos solventes.

Se hinchan ante la presencia de ciertos solventes.

Buena resistencia al fenómeno de fluencia.


18 CAPÍTULO 2. MARCO TEÓRICO

Ejemplos y aplicaciones de materiales termoplásticos:

Polietileno de alta presión como material rı́gido aplicado para cubiertas de máquinas
eléctricas, tubos, etc.

Polietileno de baja presión como material elástico usado para el aislamiento de cables
eléctricos, etc.

Poliestireno aplicado para aislamiento eléctrico, empuñaduras de herramientas, etc.

Poliamida usada para la fabricación de cuerdas, correas de transmisión, etc.

PVC o cloruro de polivinilo para la fabricación de materiales aislantes, tubos,


envases, etc.

2.5.2. Termoestables
Los materiales termoestables son aquellos materiales que están formados por polı́meros
unidos mediante enlaces quı́micos, adquiriendo una estructura polimérica altamente
reticulada.
La estructura altamente reticulada o unida mediante enlaces quı́micos que poseen los
materiales termoestables, es la responsable directa de las altas resistencias mecánicas y
fı́sicas (esfuerzos o cargas, temperatura...) que presentan dichos materiales comparados
con los materiales termoplásticos o elastómeros.
Por contra es dicha estructura altamente reticulada la que aporta una pobre elastici-
dad a dichos materiales, proporcionando a dichos materiales su caracterı́stica fragilidad.[? ]

Propiedades de los materiales termoestables.

Antes de derretirse pasan a un estado gaseoso

Generalmente no se hinchan ante la presencia de ciertos solventes

Son insolubles.

Alta resistencia al fenómeno de fluencia

Ejemplos y aplicaciones de materiales termoestables:


2.6. CICLO DE MOLDEO POR INYECCIÓN 19

Resinas epoxi - usados como materiales de pintura y recubrimientos, masillas,


fabricación de materiales aislantes, etc.

Resinas fenólicas - empuñaduras de herramientas, bolas de billar, ruedas dentadas,


materiales aislantes, etc.

Resinas de poliéster insaturado - fabricación de plásticos reforzados de fibra de vidrio


conocidos comúnmente como poliester, masillas, etc.

2.6. Ciclo de Moldeo por Inyección

En la Figura 2.10, se muestra la secuencia de eventos que se da durante el proceso de


moldeo por inyección. A esta secuencia se le llama ciclo de inyección. El ciclo comienza
cuando el molde se cierra (Figura 2.10 A), a este paso le sigue la inyección del polı́mero
dentro de la cavidad del molde gracias al desplazamiento axial del husillo. Una vez que
la cavidad es llenada, una presión de sostenimiento es mantenida para compensar la
contracción del polı́mero que se genera al tener contacto con el molde frió (Figura 2.10
B). En el siguiente paso, la rotación del husillo se inicia, con esto se logra que se plastifique
el material para el siguiente ciclo de inyección y el retroceso del husillo (Figura 2.10 C),
una vez que la pieza moldeada está lo suficientemente frı́a, la prensa abre y la pieza es
expulsada (Figura 2.10 D).[9]
20 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.10. Secuencia de eventos en un ciclo de inyección.

El tiempo total del ciclo puede ser calculado mediante la siguiente formula:

tciclo = tcierre + tenf riamiento + texpulsión (2.1)


2.7. PLATAFORMA ARDUINO 21

2.7. Plataforma Arduino


Arduino es una plataforma de electrónica abierta para la creación de prototipos basada
en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores,
aficionados y cualquiera interesado en crear entornos u objetos interactivos.
Arduino puede tomar información del entorno a través de sus pines de entrada de toda
una gama de sensores y puede afectar aquello que le rodea controlando luces, motores
y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el
lenguaje de programación Arduino (basasdo en Wiring) y el entorno de desarrollo Arduino
(basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad
de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con
diferentes tipos de software.
Las placas pueden ser hechas a mano o compradas montadas de fábrica; el software
puede ser descargado de forma gratuita. Los ficheros de diseño de referencia (CAD) están
disponibles bajo una licencia abierta.[? ]
Placas de Arduino oficiales
Arduino cuenta con una gran variedad de placas, en la tabla 2.1 se muestra una compara-
ción entre las caracterı́sticas de todas las placas Arduino.[? ]

2.8. Protocolo Modbus

2.8.1. Introducción

El protocolo de comunicaciones industriales MODBU S fue desarrollado en 1979 por la


empresa norteamericana MODICON y debido a que es público, relativamente sencillo de
implementar y flexible se ha convertido en uno de los protocolos de comunicaciones más
populares en sistemas de automatización y control. A parte de que muchos fabricantes
utilizan este protocolo en sus dispositivos, existen también versiones con pequeñas
modificaciones o adaptadas para otros entornos ( como p.ej JBUS o Modbus II ).
Modbus especifica el procedimiento que el controlador y el esclavo utilizan para
intercambiar datos, el formato de estos datos, y como se tratan los errores. No especifica
estrictamente el tipo de red de comunicaciones a utilizar, por lo que se puede implementar
sobre redes basadas en Ethernet , RS-485, RS-232 etc.
22 CAPÍTULO 2. MARCO TEÓRICO

Tabla 2.1. Caracterı́sticas de las placas Arduino

Name/ CPU Analog Digital EEPROM SRAM Flash USB UART


Processor Speed in/out IO/ [KB] [KB] [KB]
PWM
UNO/ 16 6/0 14/6 1 2 32 Regular 1
ATmega328 Mhz
DUE/ 84 12/2 54/12 96 512 2 4
AT91SAM3X8E Mhz Micro
Leonardo/ 16 12/0 20/7 1 2.5 32 Micro 1
ATmega32u4 Mhz
Mega 2560/ 16 16/0 54/15 4 8 256 Regular 4
ATmega2560 Mhz
Mega ADK/ 16 16/0 54/15 4 8 256 Regular 4
ATmega2560 Mhz
Micro/ 16 12/0 20/7 1 2.5 32 Micro 1
ATmega32u4 Mhz
Mini/ 16 8/0 14/6 1 2 32
ATmega328 Mhz
Nano/ 16 8/0 14/6 0.512 1 16 Mini-B 1
ATmega168 Mhz
Ethernet/ 16 6/0 14/4 1 2 32 Regular
ATmega328 Mhz
Esplora/ 16 1 2.5 32 Regular
ATmega32u4 Mhz
ArduinoBT/ 16 6/0 14/6 1 2 32 1
ATmega328 Mhz
Fio/ 8 8/0 14/6 1 2 32 Mini 1
ATmega328P Mhz
Pro(168)/ 8 9/0 14/6 0.512 1 16 1
ATmega168 Mhz
Pro(328)/ 16 6/0 14/6 1 2 32 1
ATmega328 Mhz
Pro Mini/ 8 6/0 14/6 0.512 1 16 1
ATmega168 Mhz
2.8. PROTOCOLO MODBUS 23

Este documento explica la especificación Modbus de forma general, sin entrar en mucho
detalle en algunas de sus particularidades, no obstante su contenido ha de ser más que
suficiente para aquellos que deseen comprender el funcionamiento general de este estándar.
Por otro lado, quien desee realizar una implementación precisa de Modbus deberá recurrir
a la documentación oficial de MODICON o a la documentación especifica del fabricante
de los equipos con los que va a comunicar.

2.8.2. Descripción general


Modbus funciona siempre en modo maestro-esclavo (cliente - servidor), siendo el
maestro (cliente) quien controla en todo momento las comunicaciones con los esclavos
que pueden ser hasta 247 (@1d a @247d ). Los esclavos (servidores) se limitan a retornar
los datos solicitados o a ejecutar la acción indicada por el maestro. La comunicación del
maestro hacia los esclavos puede ser de dos tipos:

”peer to peer”: en que se establece comunicación ”maestro - esclavo” , el maestro


solicita información y el esclavo responde (se envı́a el comando a un dispositivo
comprendido entre las direcciones 1d y 247d).

”broadcast”: en que se establece comunicación ”maestro - todos los esclavos” , el


maestro envı́a un comando a todos los esclavos de la red sin esperar respuesta (se
envı́a a la dirección @0d).

Como se puede ver, la secuencia básica en las comunicaciones Modbus consiste siempre
en una trama de pregunta, seguida de su correspondiente trama de respuesta:

Pregunta: con el código de función que indica al esclavo que operación ha de realizar,
y los bytes necesarios ( datos, comprobación) para su ejecución.

Respuesta: con la confirmación o datos resultantes de la ejecución de la función.

Existe algún caso concreto, en que hay más de una trama de respuesta para una trama de
pregunta, como por ejemplo cuando el maestro envı́a una operación cuya respuesta puede
llevar al esclavo un tiempo elaborar. En estas situaciones el esclavo envı́a una primera
respuesta indicando que aún no tiene los datos y tardará un tiempo en disponer de ellos,
y otra segunda con los datos o confirmación de la operación.
Además las comunicaciones Modbus se pueden realizar en modo ASCII o en modo
RTU. En modo ASCII los bytes se envı́an codificados en ASCII, es decir, que por cada byte
24 CAPÍTULO 2. MARCO TEÓRICO

a transmitir se envı́an dos caracteres ASCII (2 bytes) con su representación hexadecimal


(esto permite leer las tramas con un simple editor de texto). En modo RTU se envı́an
en binario, tal cual. En el modo ASCII las tramas comienzan por 3AH (carácter ’:’), y
terminan en 0DH-0AH (CR LF Carrier Return Line Feed) y cada byte se envı́a como dos
caracteres ASCII. En modo RTU no se utiliza indicador de inicio y final de trama.[? ]

Tabla 2.2. Comparador comunicaciones Modbus en modo ASCII/RTU

Modo ASCII Modo RTU


Carácteres ASCII ’0’...’9’ Binario 0...255
’A’...’F’
Comprob. Error LRC Longitudinal CRC Cyclic
Redundancy check Redundancy Check
Inicio de trama Carácter ’:’ 3.5 veces t de carácter
Final de trama Carácter CR/CL 3.5 veces t de carácter
Distancia max. 1 seg 1.5 veces t de carácter
entre caracteres
Bit de inicio 1 1
Bits de datos 7 8
Paridad Par/Impar/Ninguna Par/Impar/Ninguna
Bits de parada 1 si hay paridad 1 si hay paridad
2 si ninguna 2 si ninguna

2.9. NI LabVIEW

2.9.1. Introducción
LabVIEWes el acrónimo de Laboratory Virtual Instrument Engineering Workbech. Es
un lenguaje y a la vez un entorno de programación gráfica en el que se pueden crear
aplicaciones de una forma rápida y sencilla.

Entorno
LabVIEW es una herramienta de programación gráfica. Originalmente este programa
estaba orientado a aplicaciones de control de instrumentos electrónicos usadas en el
desarrollo de sistemas de instrumentación, lo que se conoce como instrumentación virtual.
2.9. NI LABVIEW 25

Por ese motivo los programas creados en LabVIEW se guardarán en ficheros llamados VI y
con la misma extensión, que significa instrumento virtual (Virtual Instruments). También
relacionado con este concepto se da nombre a sus dos ventanas principales: un instrumento
real tendrá un Panel Frontal donde estarán sus botones, pantallas, etc. y una circuiterı́a
interna. En LabVIEW estas partes reciben el nombre de Panel Frontal y Diagrama de
Bloques respectivamente.

Panel Frontal, es la parte que verá el usuario, suele tener fondo gris.

Diagrama de Bloques, es donde se realizará la programación y suele tener fondo


blanco.

El panel Frontal y el Diagrama de Bloques están conectados a través de los terminales


(elementos que sirven como entradas o salidas de datos). De la misma forma que un
indicador luminoso de la carátula de un instrumento está representado como un diodo
en la circuiterı́a interna, en un programa en LabVIEW ese mismo indicador luminoso
estará representado en el Diagrama de Bloques como una salida de tipo booleano sobre
el que escribir un valor.[? ]

2.9.2. Sistema ”Run-Time” DSC


Un sistema DSC Run-Time (RTS) permite la ejecución de una aplicación embebida
que utiliza uno o más componentes DSC. Estos componentes incluyen:

Registro de datos (Citadel).

Registro de alarmas y eventos (SQL Server Express).

Servicio de alarmas.

Servidores de entradas y salidas (I/O).

EPICS.

OPC.

Data Set.

Modbus.
26 CAPÍTULO 2. MARCO TEÓRICO

VIs personalizados.

Servidores NI OPC

¿Cuándo necesito instalar un sistema DSC Run-Time?


Si se está desplegando un ejecutable de LabVIEW que usa alguno de los componentes y
caracterı́sticas (listados arriba) en un sistema que no tiene LabVIEW instalado, entonces
es necesario instalar DSC RTS. [? ]

Figura 2.11. Ejemplo de un Diagrama de Bloques y Panel Frontal correspondiente.

2.10. Etapa de potencia

2.10.1. Tiristores de triodo bidireccional (TRIAC)


Un TRIAC puede conducir en ambas direcciones, y normalmente se utiliza en el control
de fase de corriente alterna. Se puede considerar como si fueran dos SCR conectados en
antiparalelo, con una conexión de puerta común, como se muestra en la figura 2.12a .Las
caracterı́sticas v-i aparecen en la figura 2.12c . Dado que el TRIAC es un dispositivo
bidireccional, no es posible identificar sus terminales como ánodo y cátodo. Si la terminal
M T2 es positiva con respecto a la terminal M T1 , el TRIAC se puede activar aplicando una
señal de compuerta positiva entre la compuerta G y la terminal M T1 . Si la terminal M T2
2.10. ETAPA DE POTENCIA 27

es negativa con respecto a la terminal M T1 , se activará al aplicar una señal negativa a la


compuerta, entre la compuerta G y la terminal M T1 . No es necesario que estén presentes
ambas polaridades en las señales de la compuerta y un TRIAC puede ser activado con una
sola señal positiva o negativa de compuerta. En la práctica, la sensibilidad varia de un
cuadrante a otro, el TRIAC normalmente se opera en el cuadrante I(voltaje y corriente de
compuerta positivos) o en el cuadrante III (voltaje y corriente de compuerta negativos).[?
]

Figura 2.12. Caracterı́sticas de un TRIAC.

2.10.2. Optoacoplador
Un optoacoplador (llamado también optoaislador o aislador acoplado ópticamente)
combina un LED y un fotodiodo en un solo encapsulado. La Figura 2.13 muestra un
optoacoplador. Tiene un LED en el lado de entrada y un fotodiodo en el lado de salida.
La tensión de la fuente de la izquierda y la resistencia en serie establecen una corriente
en el LED. Entonces, la luz proveniente del LED incide sobre el fotodiodo, lo que genera
una corriente inversa en el circuito de salida, que produce una tensión en la resistencia
de salida. La tensión de salida es igual a la tensión de la fuente menos la tensión en la
resistencia.[? ]
28 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.13. El optoacoplador combina un LED y un fotodiodo.

Si la tensión de entrada varı́a, la cantidad de luz también lo hará, lo que significa que la
tensión de salida cambia de acuerdo con la tensión de entrada. Por ello, la combinación de
un LED y un fotodiodo recibe el nombre de optoacoplador. El dispositivo puede acoplar
una señal de entrada con el circuito de salida.
La ventaja fundamental de un optoacoplador es el aislamiento eléctrico entre los
circuitos de entrada y de salida. Mediante el optoacoplador, el único contacto que hay
entre la entrada y la salida es un haz de luz. Por tal causa, es posible tener una resistencia
de aislamiento entre los dos circuitos del orden de miles de MΩ. Los aislamientos como
éste son útiles en aplicaciones de alta tensión en las que los potenciales de los dos circuitos
pueden diferir en varios miles de voltios.
Existen varios tipos de optoacopladores, cabe destacar:

Fototransistor: Se compone de un optoacoplador con una etapa de salida formada


por un transistor BJT (transistor de unión bipolar).

Fototriac: Se compone de un optoacoplador con una etapa de salida formada por


un triac (triodo para Corriente Alterna).

Fototriac de paso por cero: optoacoplador en cuya etapa de salida se encuentra un


triac de cruce por cero. El circuito interno de cruce por cero conmuta al triac sólo
en los cruce por cero de la corriente alterna.

En la figura 2.14 se muestran algunos dispositivos optoaisladores, en donde se pueden


apreciar varias tipos de elementos de opto-acoplamiento por fototransistor.
2.10. ETAPA DE POTENCIA 29

Figura 2.14. optoacopladores.


30 CAPÍTULO 2. MARCO TEÓRICO

2.10.3. Relevador de estado solido

Los interruptores estáticos de pueden usar como relevadores de estado sólido


(SSR, de solid-state relay), para controlar potencia de ca o de cd. Los SSR se
usan en muchas aplicaciones, en control industrial (por ejemplo, control de cargas de
motor, transformadores, calefacción con resistencias) para reemplazar los relevadores
electromecánicos. Para las aplicaciones con ca se pueden usar tiristores o TRIAC, y para
aplicaciones con cd se usan transistores. En el caso normal, los SSR se aı́slan eléctricamente
entre el circuito de control y el circuito de carga mediante un relevador tipo reed(o de
lengüeta o de láminas), un transformador o un optoacoplador.

La figura 2.15 muestra dos circuitos básicos de SSR para cd, uno con aislamiento de
relevador tipo reed y el otro con un optoacoplador. La figura 2.16 muestra SSR, uno con
relevador tipo reed, otro con aislamiento de transformador y uno con optoacoplador.

Los relevadores de estado sólido (SSR) se usan en muchas aplicaciones, en control


industrial, para sustituir a los relevadores electromecánicos. En el caso normal se aı́slan
eléctricamente entre el circuito de control y la carga.[? ]

Figura 2.15. Relevadores de estado sólido para cd.


2.11. ETAPA DE CONTROL 31

Figura 2.16. Relevadores de estado sólido para ca.

2.11. Etapa de control

2.11.1. Multiplexor analógico

El multiplexor analógico está constituido por una serie de entradas/salidas conectadas


a una lı́nea común de entrada/salida. Unas entradas de selección determinan cuál es
la entrada que se conectará a la salida. Desde el punto de vista interno el multiplexor
está formado por un conjunto de interruptores analógicos, de tal manera que en cada
instante sólo uno de ellos puede estar cerrado (figura 2.17).
Las entradas de selección actúan sobre un decodificador digital, cuyas salidas rigen los
diferentes interruptores analógicos, de tal forma que en cada momento eligen el interruptor
que debe ser cerrado. La principal ventaja que presentan los multiplexores analógicos,
32 CAPÍTULO 2. MARCO TEÓRICO

frente a los digitales, es su carácter bidireccional, lo que le permite que cada terminal
del multiplexor sea posible usarlo como entrada o como salida y el manejo de señales
analógicas en vez de digitales. [? ]

Figura 2.17. Multiplexor analógico.

2.11.2. Amplificador de instrumentación


El amplificador de instrumentación es un amplificador diferencial, cuya ganancia puede
establecerse de forma muy precisa y que ha sido optimizado para que opere de acuerdo
a sus propias especificaciones aún en un entorno hostil. Es un elemento esencial de
los sistemas de medida, en los que se ensambla como un bloque funcional que ofrece
caracterı́sticas funcionales propias e independientes de los restantes elementos con los que
interacciona.
Un amplificador de instrumentación tiene una gran ganancia de tensión, una alta
CMRR, offsets de entrada pequeños, poca deriva y alta impedancia de entrada.
La figura 2.18 representa el diseño clásico utilizado por la mayorı́a de los amplificadores
de instrumentación. Las salida del amplificador operacional es un amplificador diferencial
con ganancia de tensión unidad. Las resistencias utilizadas en esta etapa de salida se
adaptan para tener, normalmente, menos de un ±0,1 por 100 de diferencia entre ellas.
Esto significa que la CMRR de la etapa de salida es por lo menos 54 dB.
La primera etapa consiste en dos amplificadores operacionales que actúan como un
preamplificador. El diseño de la primera etapa es muy inteligente. Lo que lo hace tan
2.11. ETAPA DE CONTROL 33

ingenioso es el papel del punto A, la unión entre las dos resistenciasR1 . El punto A actúa
como una masa virtual para una señal de entrada diferencial y como un punto flotante
para la señal en modo común. Debido a esta función, la señal diferencial se amplifica, pero
la señal en modo común no.[? ]

Figura 2.18. Amplificador de instrumentación estándar con tres amplificadores opera-


cionales.

2.11.3. Schmitt trigger


La solución habitual para una señal de entrada con ruido es el uso de comparadores
como el que se muestra en la Figura 2.19a. La tensión de entrada se aplica a la entrada
inversora. Dado que la realimentación está ayudando a la tensión de entrada, ésta es
positiva. Al comparador que utiliza la realimentación positiva se le conoce comúnmente
como disparador de Schmitt o circuito biestable.
Cuando el comparador está saturado positivamente, una tensión positiva realimenta
la entrada no inversora. Esta entrada positiva mantiene la salida en el estado alto. De
manera similar, cuando la tensión de salida está saturada a nivel negativo, una tensión
negativa realimenta la entrada no inversora, manteniendo la salida en el estado bajo. En
cualquier caso, la realimentación positiva refuerza el estado de la salida existente.[? ]
34 CAPÍTULO 2. MARCO TEÓRICO

Figura 2.19. a)Disparador de Schmitt inversor; b)la función de transferencia tiene


histérisis.

La cantidad de realimentación es:


R1
B= (2.2)
R1 + R2
Cuando la salida está saturada positivamente, la tensión de referencia aplicada a la entrada
no inversora tiene la ecuación:

Vref = +BVsat (2.3)

Cuando la salida está saturada a nivel negativo, la tensión de referencia es:

Vref = −BVsat (2.4)

La tensión de salida permanecerá en un estado dado hasta que la entrada exceda la


tensión de referencia de ese estado. Por ejemplo, si la salida está saturada positivamente,
la tensión de referencia es +BVsat . La tensión de entrada Vin debe de incrementarse a
un valor ligeramente mayor que +BVsat para conmutar la tensión de salida de positivo
a negativo, como se muestra en la figura 2.19b. Una vez que la salida está en el estado
negativo, permanecerá ahı́ indefinidamente hasta que la tensión de entrada sea negativa
menor que −BVsat . Entonces la salida conmuta de negativo a positivo (Figura 2.19b).
Capı́tulo 3

Diseño e implementación de los


circuitos de control

Los circuitos se desarrollarán con el fin de reemplazar la mayor parte de los dispositivos
electromecánicos con los que cuenta la MMI, también para aislar las entradas y salidas
del microcontrolador.
Los circuitos se realizarán partiendo de dos conceptos que son la etapa de control y
etapa de potencia. La etapa de control es en la que el operario puede realizar cambios en
los parámetros de operación si es requerido por el proceso, por lo que es indispensable
trabajar a baja tensión para mantener el resguardo de los operadores además en esta
etapa es donde se realiza el control por medio del microcontrolador por lo que de igual
forma se debe trabajar con niveles bajos de tensión. Mientras que la etapa de potencia son
los elementos finales de control que pueden ser válvulas, motores eléctricos, relevadores,
estos dispositivos trabajan con tensiones y corriente elevadas por lo que se deben realizar
circuitos para aislar los puertos del microcontrolador.

3.1. Selección del Microcontrolador


Para la selección del microcontrolador se debe tener en cuenta la cantidad de entradas
y salidas, tanto analógicas como digitales, necesarias para el control de los ciclos de trabajo
de MMI. Ası́ como otra serie de caracterı́sticas con las que debe contar como son: lenguajes
de programación con los cuales desarrollar el codigo fuente (software), accesorios para su
programación (hardware), precio y su facilidad de acceso comercial. Considerando estos
factores, la plataforma Arduino ofrece la programación en lenguaje C/C + +, lenguaje

35
36CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

común entre programadores y del cual existen variados entornos de desarrollo de licencia
libre. Otra caracteristica de la placa Arduino es que no requiere de accesorios (hardware)
para su programación y su hardware y software libre han hecho de esta plataforma un
dispositivo de fácil acceso en el mercado además de su bajo costo aunado a que ya cuenta
con los dispositivos auxiliares para el inmediato desarrollo de aplicaciones.

El soporte para la plataforma Arduino, la extensa documentacion existente en linea y


la variedad de código desarrollado bajo licencia libre hacen de esta plataforma un buen
dispositivo para para el desarrollo de aplicaciones en diferentes ámbitos. Con lo cual se
ha optado por utilizar una placa de la plataforma Arduino.

La selección de la placa Arduino se realizo mediante la comparación de entradas


y salidas tanto analógicas como digitales, entre las diferentes placas de la plataforma
Arduino, además de la disponibilidad para su adquisición. Como resultado de esta
comparacion se ha seleccionado la placa Arduino Mega 2560.

Figura 3.1. Placa Arduino Mega 2560.

En figura 3.2 se muestra de forma general las interconexiones de las tarjetas


electrónicas con el microcontrolador.
3.2. ELEMENTOS DE ENTRADA 37

Figura 3.2. Interconexiones de manera general de las tarjetas electrónicas con el


microcontrolador.

3.2. Elementos de entrada

Al operar de manera manual la máquina se determino que todos los componentes


de la máquina funcionaban de forma correcta (válvulas, motores, contactores, botones,
sensores, actuadores, resistencias, etc.), por lo cual no fue necesario el reemplazo de alguno
de estos elementos. Se realizo una inspección mas detallada de los interruptores de final
de carrera, ya que gran parte de las operaciones efectuadas por la máquina, tal como la
apertura o cierre de prensa, el desplazamiento de la unidad de inyección, son sensadas por
medio de interruptores de final de carrera. En la tabla 3.1 se muestran los sensores de la
MMI.
38CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

Tabla 3.1. Sensores de la MMI Flli Sandretto

Elemento Ubicación Marca


Termopar Zonas de calentamiento del cilindro Pendiente
Unidad de inyección
Interruptor de final de carrera Guarda de la prensa Telemecanique
Prensa (Molde)

3.2.1. Termopar
Un termopar es un sensor de temperatura que consiste en dos conductores metálicos
diferentes, unidos en un extremo, denominado junta caliente suministrando una señal de
tensión eléctrica que depende directamente de la temperatura. La MMI cuenta con tres
termopares tipo J, los cuales junto a las resistencias, se encuentran distribuidos equili-
bradamente por la camisa del cilindro. El termopar tipo J no puede usarse a temperaturas
superiores a 760o C ya que una abrupta transformación magnética causa una descalibración
permanente. Tienen un rango de -40o C a +750o C. da buenos resultados hasta los 500◦ C a
cuya temperatura comienza la oxidación del alambre de hierro, mientras que es solamente
a los 600◦ C, cuando comienza la oxidación del alambre de constantano, la fem que da a
600◦ C es de 33.66 mV referido a 0◦ C.

3.2.2. Interruptor de final de carrera


El final de carrera o sensor de contacto(también conocido como ”interruptor de lı́mite”)
o limit swicht, son dispositivos eléctricos, neumáticos o mecánicos situados al final del
recorrido de un elemento móvil, con el objetivo de enviar señales que puedan modificar el
estado de un circuito. Internamente pueden contener interruptores normalmente abiertos
(NA), cerrados (NC) o conmutadores dependiendo de la operación que cumplan al ser
accionados.
En la MMI se hace uso de los interruptores de final de carrera para indicar los diferentes
estados de la máquina, tales como:

Posición de la prensa. Con un interruptor de final de carrera se determina se la


prensa esta abierta y por tal la posición del molde es abierta. Con otro interruptor
3.3. DISEÑO DEL CIRCUITO PARA LAS SEÑALES DE ENTRADA 39

de final de carrera se identifica si la posición del molde ha cambiado a cerrado y por


tal la prensa también estará cerrada.

Guarda de seguridad. Se tiene un interruptor de carrera que identifica cuando la


guarda ha sido abierta.

Avance y retroceso de la unidad de inyección. Mediante un par de interruptores de


carrera se determina la carrera que tendrá el carro de la unidad de inyección.

Carga de material. Mediante un par de interruptores de carrera se conoce la posición


del cañón ya sea posición inicial o posición de carga.

Los interruptores de final de carrera usados en la MMI Flli Sandretto, son de la marca
Telemecanique OSIsense, modelo XCK-M1D15.

Figura 3.3. Interruptor de final de carrera.

3.3. Diseño del circuito para las señales de entrada


De acuerdo a las caracterı́sticas de operación de la MMI, se diseñara un arreglo de
optoacopladores con el fin de aislar las entradas del microcontrolador y en un caso de
una falla eléctrica no se vea afectado el funcionamiento del microcontrolador y en un caso
extremo la averı́a del mismo.
Otra caracterı́stica que presenta el diseño del circuito es la implementación de un cir-
cuito para evitar el anti-rebote de los interruptores de lı́mite y botones pulsadores, esto
con el fin de evitar perturbaciones y falsos accionamientos del microcontrolador puede
40CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

traducir como señales de activación ocasionando mal funcionamiento en el equipo.

A continuación se muestra de una forma general (Figura 3.4)la estructura que tendrá la
placa de entradas digitales para aislar, evitar perturbaciones y daños al microcontrolador.

Figura 3.4. Diagrama de bloques para la interconexión del aislamiento y protección de las
entradas de tipo digital.

En la tabla 3.2 se muestran las señales de entrada.

Tabla 3.2. Señales de entrada

Señales de entrada
Nombre Tipo Función Nomenclatura No. de Clema
SW1 Interruptor de limite Apertura de prensa 22 1
Interruptor de limite Apertura de prensa 23 2
SW2 Interruptor de limite Cierre de prensa 24 3
Interruptor de limite Cierre de prensa 25 4
SW3 Interruptor de limite Unidad de inyección 26 5
Interruptor de limite Unidad de inyección 27 6
SW4 Interruptor de limite Para husillo 28 7
Interruptor de limite Para husillo 29 8
3.3. DISEÑO DEL CIRCUITO PARA LAS SEÑALES DE ENTRADA 41

3.3.1. Selección del optoacoplador


De acuerdo a la tabla 3.2 se utilizará el optoacoplador PS2501-4, deforma general se
muestra en la figura 3.5 la configuración de conexión de un solo canal del optoacoplador.
Este optoacoplador cuenta con cuatro canales, lo cual permite una mayor capacidad de
dispositivos de entrada además que facilitara el diseño final del PCB.

Figura 3.5. Configuración general del optoacoplador.

Calculo para la selección de la resistencia


Para la selección del valor del resistor se usará la siguiente formula:
Vf − Vd
RD = (3.1)
I
Donde:
R =Resistencia (Ω)
Vf =Tensión de la fuente de alimentación (V)
Vd =Tensión del led (V)
I =Corriente (A)
De acuerdo a las caracterı́sticas del optoacoplador PS2501-4 la corriente adecuada para
el funcionamiento del circuito es de 5mA. La alimentación con la que se cuenta es una
fuente de alimentación de 5VC-D. Sustituyendo los valores en la ecuación 3.1 se tiene:
5V − 3,1
RD = = 380Ω (3.2)
5x10−3 A
Claculo de la potencia de la resistencia:

PR = IVf (3.3)

Donde: PR =Potencia de la resistencia (W ) I =Corriente(A) Vf =Tensión de la fuente


de alimentación(V)
42CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

Sustituyendo valores en la ecuación 3.3 se tiene:

PR = 5x10−3 A5V = 0,025W (3.4)

El cálculo arroja el valor de 380?, sin embargo el valor comercial más cercano es de
390? será el valor de resistencia que se utilizara en el circuito de entradas a un cuarto de
watt.
A continuación se muestra la configuración de un solo circuito opto acoplador PS2501-
4. Figura 3.6.

Figura 3.6. Configuración del primer optoacoplador para la tarjeta de señales de entrada.

3.3.2. Selección del circuito para eliminar el anti-rebote


Se agregará este circuito para evitar perturbaciones a la entrada del microcontrolador,
evitar valores flotantes que generan accionamientos no deseados y pueden ocasionar
accidentes y finalmente mantener un cero lógico que es como está configurado en la
programación del microcontrolador.
3.3. DISEÑO DEL CIRCUITO PARA LAS SEÑALES DE ENTRADA 43

De acuerdo a las caracterı́sticas y necesidades solicitadas el circuito que se empleara


es el 74AC14N, es un schmitt trigger que permite evitar ruidos que podrı́a confundirse
con la señal original y que causarı́a falsos cambios de estado si los niveles de referencia y
entrada son parecidos y además presenta la caracterı́stica inversora, circuito brinda una
señal de salida en nivel bajo un cero lógico. En la figura 3.7 se muestra la configuración
de conexión del schmitt trigger.

Figura 3.7. Diagrama general de conexión del circuito 74AC14N.

En la figura 3.8 se muestra la configuración de las conexiones para un circuito 74AC14N


utilizando todos los canales con los que cuenta.

Figura 3.8. Conexiones de todos los canales del circuito 74AC14N.


44CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

3.3.3. Puertos de entrada y salida de la tarjeta

La tarjeta de entradas debe contar con doce bornes con tornillo para la conexión de
los dispositivos de entradas como pueden ser interruptores de lı́mite, perillas selectora y
botones pulsadores. Y además de 12 salidas de control en la placa se utilizaran Header
hembra para facilitar la interconexión del módulo de entradas hacia el microcontrolador
o tarjeta de control.

Los bornes con tornillos estarán dispuestos en un costado de la placa esto facilitara al
usuario la conexión y desconexión de los dispositivos de entrada, mientras que el puerto
de salidas Header hembra estará ubicado en la parte superior con el fin de estar más cerca
de la tarjeta de control y no halla perdidas interferencia o ruido por distancia.

Figura 3.9. Puerto de salidas hacia microcontrolador.

Finalmente el diseño del diagrama esquemático para el circuito de entradas se muestra


en la figura 3.10.
3.3. DISEÑO DEL CIRCUITO PARA LAS SEÑALES DE ENTRADA 45

Figura 3.10. Puerto de salidas hacia microcontrolador.


46CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

3.4. Diseño del circuito para las señales de entrada


de tipo analógico
Un problema que se presenta para el diseño de la placa, es que el instrumento primario
de medición es un termopar para sensar el valor de la temperatura, el problema radica
en que no se puede conectar un termopar directamente al microcontrolador. La solución
a este problema es utilizar un arreglo de amplificadores operacionales lo cual conlleva
a tener que realizar más placas, invertir más dinero y utilizar más tiempo en rediseños
de circuitos. Sin embargo en el mercado existen amplificadores de instrumentación que
facilitan el registro y lecturas de temperaturas que provienen de termopares, entonces
se hará uso de esta tecnologı́a al emplear en la tarjeta electrónica un amplificador de
instrumentación el circuito AD594AQ.
Otro problema, es el costo del material para los circuitos electrónicos. Este es el
caso del circuito o amplificador de instrumentación AD594AQ, es un circuito que su
principales caracterı́sticas son, la poder conectar directamente termopares, el circuito hace
la compensación por unión frı́a y la salida que brinda el circuito es de 10 mili-volt por grado
centı́grado, por lo que se puede conectar directamente al microcontrolador y empezar a
registrar valores de temperatura. Sin embargo un nuevo problema que se presenta, es que
solo se puede conectar un solo termopar por circuito y retomando el problema anterior de
los costos el diseñar un circuito para tres termopares es relativamente alto ya que el circuito
tiene un precio en el mercado de $225.00 pesos. Una solución es utilizar un multiplexor
de señales analógicas el cual es bastante dinámico por que permite tener hasta cuatro
canales de tipo analógico en una sola entrada analógica del micro controlador, y hacer el
control del multiplexado solo con dos bits.
Entonces ya se tiene la solución a los problemas anteriormente descritos, utilizar
un amplificador de instrumentación AD594AQ e implementar un multiplexor de señales
analógicas para reducir los costos y poder conectar tres termopares en un solo circuito
AD594AQ.
En el diagrama a bloques de la figura 3.11 se muestra de forma general del
funcionamiento de la tarjeta de entradas analógicas.
En la figura 3.12 se muestra la configuración general del circuito AD594AQ, se observa
que este solo se puede conectar un termopar por circuito lo cual es una desventaja.
El multiplexor de señales analógicas permite utilizar el mismo circuito AD594AQ pero
conectar cuatro termopares y estar registrando valores de temperatura en tiempo real. Se
3.4. DISEÑO DEL CIRCUITO PARA LAS SEÑALES DE ENTRADA DE TIPO ANALÓGICO47

Figura 3.11. Diagrama a bloques para la interconexión del circuito de entradas de tipo
analógica.

Figura 3.12. Diagrama de conexión del circuito AD594AQ.

debe configurar en el programa, cuánto tiempo se va a estar haciendo el corrimiento de


bit para hacer el multiplexado y estar registrando el valor de la lectura de cada canal.

Se preguntaran si este tiempo de cambio entre cada canal afecta la lectura de la


temperatura, la respuesta es no porque la variable es temperatura entonces no es una
variable critica ya que el cambio del valor de la temperatura es relativamente lento por lo
que no hay perdida de información entre cada cambio de canal al hacer el multiplexado.
En la figura 3.13 se muestra las conexiones y configuración del circuito 75HC4052.

El circuito 75HC4052 permite controlar cuatro canales para señales del tipo analógico
mediante el corrimiento de dos bits. En la tabla 3.3 se muestra la tabla de verdad del
multiplexor.
48CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

Figura 3.13. Diagrama esquemático de las conexiones para el circuito 75HC4052.

Tabla 3.3. Tabla de verdad del multiplexor.

A B Canal Fı́sico
0 0 X0 − Y0
0 1 X1 − Y1
1 0 X2 − Y2
1 1 X3 − Y3

Se puede observar las combinaciones de bit para hacer el multiplexado selección del
canal.
Finalmente el diseño del circuito se muestra en la figura 3.14.
3.5. ELEMENTOS DE SALIDA 49

Figura 3.14. Circuito de entradas analógicas.

3.5. Elementos de salida

A esta etapa se le llamará de potencia (elementos de salida) por que se manejan altas
corrientes, de alguna forma se necesita aislar a la etapa de control o digital, entonces se
emplearan circuitos optoacopladores para aislar al circuito de control de esta forma se
garantiza la protección de toda la circuiterı́a digital de control.

Los elementos que forman la etapa de potencia en la MMI y que serán consideradas
como salidas son: las electroválvulas direccionales, las cuales se encargan de accionar los
cilindros hidráulicos, además de los motores eléctricos (ver tabla 3.4).
50CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

3.5.1. Electroválvulas

Las electroválvulas de las que hace se vale la MMI para el accionamiento de los cilindros
hidráulicos son electroválvulas de 4 vı́as 3 posiciones de centro cerrado. Este es el tipo
más popular y más conocido de válvulas de cuatro vı́as . Aquı́, la corredera , aparte de
tener dos posiciones extremas, también puede permanecer detenida en el centro mismo
del cuerpo de la válvula, mediante un sistema de centrado por resorte o retención de
bolilla u otro medio de retención mecánica. En la figura 3.15 se muestra el sı́mbolo gráfico
completo de una válvula de cuatro vı́as tres posiciones , accionada a doble solenoide y
centrada por medio de resortes.

Figura 3.15. Válvula 4 vı́as 3 posiciones, salida y regreso accionados mediante selenoide.

En este tipo de válvula, cuando la misma NO ESTA ACTUADA, la corredera


se encuentra situada en su posición central. Al actuarse sobre la válvula el mando
correspondiente a un extremo y al otro, la corredera se deslizará en un sentido o en
el otro. La figura 3.16 muestra las electroválvulas que se encuentran en la MMI.

Figura 3.16. Electroválvulas de 4 vı́as 3 posiciones instaladas en la MMI.


3.5. ELEMENTOS DE SALIDA 51

3.5.2. Motores eléctricos de la MMI


El motor de mayor potencia instalado en la MMI es el encargado de accionar la bomba
hidráulica que distribuirá el aceite hidráulico a través del circuito cerrado de la MMI.
Además se cuenta con una bomba la cual se encarga de la lubricación y el elemento
encargado de la carga de material en el husillo para la inyección del plástico, se trata de
un tercer motor eléctrico. En la figura 3.17 se muestra el motor de la bomba hidráulica
ası́ como el motor de la bomba lubricante, el motor de carga se muestra en la figura 3.18.

Figura 3.17. Motor de bomba hidráulica y motor de bomba lubricante.

Figura 3.18. Motor de carga de material.

3.5.3. Diseño del circuito para las señales de salida


Para el diseño de este circuito se utiliza un optoacoplador con salida de tipo triac
transportador modelo MOC3031 el cual permite conectarlo hasta 120V CA suficiente
para alimentar los solenoides de las electroválvulas.
52CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

Tabla 3.4. Señales de Salida

Señales de salida
Nombre Tipo Función No. Bit No. de Clema
Cilindro A Solenoide biestable Apertura de prensa 42 1
127VC-A Cierre de prensa 43 2
Cilindro B Solenoide biestable Unidad de inyección atrás 24 3
127VC-A Unidad de inyección adelante 45 4
Cilindro C Solenoide biestable Avance de husillo 46 5
127VC-A Regreso de husillo 47 6
Contactor 1 Bobina 127VC-A Arranque del motor de carga 48 7
Contactor 2 Bobina 127VC-A Arranque del motor principal 49 8
Contactor 3 Bobina 127VC-A Motor de lubricación 50 9

El diagrama de bloques (figura 3.19) muestra de forma general la conexión que se


planea realizar para pasar de un sistema digital a una etapa de potencia mediante el uso
de un optoacoplador.

Figura 3.19. Diagrama de bloques para la interconexión de un sistema de control a baja


tensión a un sistema de potencia de alta tensión.

Para el caso en particular de la MMI se conectara con la lógica digital positiva como
se muestra en la figura 3.20.

Figura 3.20. Conexión básica del MOC3031.


3.5. ELEMENTOS DE SALIDA 53

El triac seleccionado para energizar las electroválvulas y los arrancadores de los


motores es el triac 2N6071 que puede manejar hasta 200VC-A y 4 A.

Figura 3.21. Circuito de potencia con aislamiento.


54CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

La figura 3.22 muestra la conexión de las placas de las etapas de potencia y control
con la tarjeta Arduino Mega 2560 de una manera más especı́fica.

Figura 3.22. Conexión especı́fica de las placas de control y potencia con el microcontro-
lador.
3.6. IMPLEMENTACIÓN 55

3.6. Implementación
Para la conexión de las placas de control (señales de entrada digital y analógica), se
planteó hacer uso de las conexiones ya existentes en la MMI (figura 3.23), para ello la
identificación de los conductores de cada elemento era necesaria. Los elementos cuya señal
se tendrá que identificar, son:

Interruptores de final de carrera.

Termopares.

Resistencias (Colocadas en la camisa cilindro).

Electroválvulas.

Motor bomba lubricante.

Motor bomba hidráulica.

Motor de carga.

Figura 3.23. Conexiones existentes en la MMI.


56CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

3.6.1. Conexión de los elementos de entrada


Identificación de conductores de los elementos de entrada
Interruptores de final de carrera
Para poder determinar que conductores transmiten la señal de los interruptores de final
de carrera y a donde es que estos conductores llegan, el procedimiento a seguir será el
siguiente:

1. Seleccionar el interruptor de final de carrera cuya señal se requiera buscar.

2. Ya que los interruptores de final de carrera instalados en la MMI cuentan


con interruptores normalmente abiertos (NA) y normalmente cerrados (NC), se
selecciona la señal de cual de estos interruptores es la que se requerirá.

3. Mediante el uso del multimetro y haciendo uso de la función de medición de


continuidad constatar la correcta verificación de los conductores.

4. Colocar una etiqueta a los conductores.

Conexión con la placa de salidas hacia el microcontrolador


La conexión de manera fı́sica de los elementos de entradas digitales (interruptores de
final de carrera), se realiza mediante cable, el cual va de el conductor identificado hacia la
placa de control de entradas digitales(ver figura 3.22), la figura 3.24 muestra las conexiones
fı́sicas elaboradas.

Figura 3.24. Conexión fı́sica de la placa de control.


3.6. IMPLEMENTACIÓN 57

3.6.2. Conexión de los elementos de salida


Identificación de los conductores de las válvulas solenoides
Electroválvulas
El procedimiento para la identificar que conductores accionaban las electroválvulas es
muy similar al seguido para identificar los interruptores de carrera, de igual manera se
hará uso de un multimetro para verificar la continuidad de los conductores. De manera
fı́sica se observa en las electroválvulas la conexión existente, de tal forma se determina
que el conductor azul es el común y el conductor rojo es la señal de activación de la
electroválvula (figura 3.25).

Figura 3.25. Conexión de conductores de la electroválvula.

El procedimiento a seguir para la identificación de los conductores de activación de


cada una de las electroválvulas, se simplifico debido a que estos conductores tenı́an una
etiqueta, además de que se determina que este conductor debe de llegar a un relevador
de control, lo cual facilitará la identificación visual y posteriormente se constatará con
el uso del multimetro la continuidad del conductor. Una vez que se han identificado las
electroválvulas, para determinar que electroválvula es la que acciona el avance/retroceso
de la prensa, el movimiento del carro de la unidad de inyección y el cilindro de inyección,
respectivamente se activa cada electroválvula de manera individual y posteriormente se
coloca una etiqueta(figura 3.26).
58CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL

Figura 3.26. Conductores de activación de electroválvulas y relevadores de control.

Identificación de conductores de las bombas


La activación de los motores eléctricos se realiza mediante contactores, los cuales se
encuentran ubicados en la parte trasera de la MMI. La ubicación de estos contactores
no resulta compleja ya que en la parte trasera de la MMI solo se encuentran ubicados
contactores y fusibles, en la figura 3.27 se muestra el contactor del motor de la bomba
hidráulica.

Figura 3.27. Contactor de motor de la bomba hidráulica.


3.6. IMPLEMENTACIÓN 59

Conexión de la placa de etapa de potencia


Una vez que ya identificados los elementos que intervienen en la etapa de potencia
(resistencias, motor bomba lubricante, motor bomba hidráulica y motor de carga), se
procede a conectar mediante cable (ver figura 3.22) y la conexión fı́sica se observa en la
figura 3.28.

Figura 3.28. Placa de potencia (salidas).


60CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN DE LOS CIRCUITOS DE CONTROL
Capı́tulo 4

Programación del Arduino Mega y


HMI.

Se han usado dos software para la integración del control de la máquina inyectora.
Uno para la programación de la placa Arduino Mega 2560 llamado CodeBlocks y otro
para la creación de la interfaz gráfica llamado LabView. Estos software y el programa
desarrollado en ellos se describe en este capitulo.

En la figura 4.1 se puede observar de forma general la interacción entre la placa Arduino
y LabView.

61
62 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.1. Esquema General entre Arduino y LabView.

Por un lado la placa Arduino Mega 2560 será quien lleve el control de la secuencia
de operación de la máquina inyectora tomando las señales de entrada directamente de
los interruptores de limite con los que cuenta la máquina y a su vez escribiendo la salida
correspondiente de acuerdo a el algoritmo programado en ella. Además la placa Arduino
también lleva el control de la temperatura ası́ como el control de los temporizadores.
Por otro lado la interfaz gráfica tiene dos objetivos; uno es la de poder modificar
parámetros en la placa Arduino como son los Set Point de temperatura, los tiempos
preestablecidos de los temporizadores, además de que se integra en ella una botonera
virtual para el control manual de la máquina, con esta botonera también se tiene la
capacidad de ceder el control a la botonera fı́sica con la que cuenta la máquina; el
otro objetivo de la interfaz es la de monitorear el estado de sus parámetros y variables,
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 63

por mencionar algunas, las temperaturas, tiempos, indicadores de señales de entrada e


indicadores de señales de salida.

Cabe mencionar que la comunicación entre la placa Arduino y Labview se


realizó mediante protocolo Modbus y ésta comunicación es independiente hasta cierto
punto del algoritmo de control, es decir que si por alguna razón se pierde la comunicación
entre LabView y Arduino, la placa Arduino seguirá operando con los últimos parámetros
establecidos en ella.

4.1. Programación del Arduino Mega 2560.

Existen varias herramientas para la programación de cualquier placa Arduino ya sea


la uno, Mega, Nano, etc., la mas usual es el mismo IDE (Entorno de Desarrollo Integrado,
por sus siglas en ingles) desarrollado por la comunidad Arduino llamado Arduino IDE.
También existe un plugin de Arduino para el Atmel Studio, que es el software desarrollado
por el fabricante de los microcontroladores Atmel, los cuales se encuentran en todas
las placas Arduino, ası́ como este plugin existen muchos mas para otros IDE’s de gran
popularidad como lo son NetBeans, CodeBlocks, Geany, Eclipse, etc.

El software que se eligió para la programación del Arduino Mega 2560 fue CodeBlocks
por su sencilla interfaz y fácil integración del plugin para Arduino [5]. Este IDE cuenta
con mas caracterı́sticas tanto de entorno como de edición que el propio IDE de Arduino;
por mencionar algunas está el navegador de proyecto donde se pueden visualizar todos
los archivos de código *.cpp y cabeceras *.h utilizadas en el proyecto ası́ como interactuar
entre ellos; también cuenta con coloreo de sitanxis configurable, tabulación inteligente de
código, auto completado de código entre otras.[7]
64 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.2. Entorno de Desarrollo Integrado Code::Blocks v12.11.

Antes de comenzar con el desarrollo de la aplicación para el control de la máquina


Inyectora se hará una pequeña explicación sobre la forma de edición de programas de
Arduino. Cabe mencionar que en las secciones siguientes a menudo se usaran las palabras
código o programa haciendo referencia al código fuente escrito en C/C++ que sera el que
finalmente se compile y se guarde en la memoria del microcontrolador Arduino; ası́ también
la palabra subrutina que son secciones de código mandadas a llamar en determinada
situación o condición; instancia que es un objeto perteneciente a una clase y que de el
derivan métodos que son de cierta forma subrutinas pertenecientes a ese objeto.
Los programas hechos para Arduino se dividen en tres partes principales: estructura,
valores (variables y constantes), y funciones. El Lenguaje de programación Arduino se
basa en C/C++.

1. Estructura. La estructura general de un programa en Arduino inicia como en


cualquier programa en C/C++ con los #Include donde se incluyen todas las
librerı́as que se usaran en el código. Después de esta seccion se encuentran las
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 65

declaraciones de las subrutinas o funciones que se vallan a emplear seguido de


las variables globales que de igual modo se necesiten utilizarse. Posterior a estas
variables se encuentra la función setup() y la función loop() que forzosamente
cualquier programa para Arduino debe incluirlas; en la función setup() se inicializan
variables, se especifican los modos de los pines (salida o entrada), esta función se
ejecuta una sola vez al energizar la placa; la función loop() es la función que se
ejecutara de forma cı́clica, esta función es el corazón de la aplicación. Finalmente se
encuentran la definición de las funciones o subrutinas que fueron declaradas en las
seccion segunda después de los #Include.

2. Valores. Esta parte es comprendida por todas las variables y constantes que pueden
usarse en el programa. Los tipos de datos al que pueden pertenecer estas variables y
constantes son las mismas que en cualquier programa C/C++ (int, float, double,
char , entre otras). Las constantes mas comúnmente usadas son HIGH y LOW ,
para escribir un 1 o 0 lógico en los pines; INPUT y OUTPUT para definir el
modo de los pines; true y false para leer o escribir booleanos; y finalmente las
constantes que el programador pudiera definir.

3. Funciones. Esta parte comprende todas aquellas funciones que simplifican la


configuración y manipulación del microcontrolador. Las funciones mas usuales son
pinMode() para definir si un pin sera de salida o de entrada; digitalWrite()
para escribir o limpiar una salida digital; digitalRead() para leer un pin digital,
analogWrite() para escribir PWM a un pin con esta propiedad, analogRead()
para leer una señal analógica [1].

4.1.1. Estructura General del Programa


Para hacer mas comprensible el programa y poder facilitar la edición de éste se ha
realizado un diagrama de flujo de forma general para visualizar la forma en la que de-
berá funcionar el programa, este diagrama se muestra en la figura 4.3.
66 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.3. Diagrama de flujo General del programa en Arduino

En la figura 4.3 se pueden observar tres bloques dentro de la rutina principal de la


placa Arduino, leer entradas, procesamiento de entradas de acuerdo a los parámetros de
control y escritura de salidas, además de un ultimo bloque que representa la comunicación
entre Arduino y la interfaz en LabView. Aunque este bloque aparece en un diagrama de
flujo, no precisamente se ejecuta en una secuencia dada.
En las siguientes secciones se describe de forma mas detallada cada una de las partes
de este diagrama de flujo general 4.3.

4.1.2. La comunicación
Al principio de este capitulo se comentó que el algoritmo de control en la placa Arduino
era independiente hasta cierto punto de la comunicación, pues bien, este programa es
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 67

dependiente solo al arrancar la aplicación, es decir que si en un principio al energizar la


placa Arduino no existe comunicación con LabView la aplicación no podrá iniciar, ya que
para que esto suceda se necesitan parámetros de control que la placa Arduino toma desde
la interfaz gráfica.
Como ya se ha hecho referencia anteriormente la comunicación entre Arduino y
LabView se hará mediante protocolo Modbus. Una comunicación Modbus puede ser
multipunto mediante RS-485 o bien Ethernet o puede ser punto a punto mediante RS-232
que es la forma que se usara entre Arduino y LabView.
La comunicación Modbus obedece una arquitectura maestro-esclavo el maestro es
quien hace las solicitudes de información desde el esclavo o bien ordena escribir
información hacia el esclavo. Todo dispositivo que cuente con comunicación Modbus
cuenta también con un mapa de memoria documentado que no es mas que una serie
de registros comúnmente de 16 bits donde se almacena la información que sera manejada
mediante el protocolo.
Para tener el control sobre el tipo de acceso que se tendrá hacia los registros el protocolo
Modbus enumera una serie de funciones entre las mas usuales están:

1. Función 1(Read Coil Status). Permite leer el estado de las salidas digitales.

2. Función 2(Read Input Status). Permite leer el estado de las entradas digitales.

3. Función 3(Read Holding Registers). Permite leer el estado de las salidas analogicas.

4. Función 4(Read Input Registers). Permite leer el estado de las entradas analogicas.

5. Función 5(Force single Coil). Permite escribir el estado de una salida digital.

6. Función 6(Preset Single Register). Permite escribir sobre las salidas analógicas.

En este caso las funciones que estarán implementadas en la placa Arduino son la 4
y la 6, para poder leer y escribir registros dentro del Arduino, estos registros no son
precisamente entradas o salidas analógicas sino simplemente registros que almacenaran
información tanto de señales digitales como analógicas.
Toda la información necesaria para la escritura o lectura de registros hacia un
determinado esclavo se ordena de manera estratégica dentro de una trama, la estructura
de esta trama esta dividida en 4 campos. De forma general en un formato RTU se puede
decir que en la primera parte de la trama esta la dirección Modbus del esclavo hacia el cual
68 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

va dirigido el mensaje (una dirección comprendida entre 1 y 255), seguido del numero de
función o código de operación que se desea realizar, en el tercer campo se encuentran los
datos necesarios para realizar la operación (ubicación del registro y numero de registros
a operar)y finalmente una parte para el control de errores.

4.1.3. La librerı́a ModbusSlave


La librerı́a denominada ModbusSlave, es una herramienta desarrollada por Jason
Vreeland. para Arduino y se encuentra bajo licencia GNU lo cual quiere decir que además
de poder utilizarla de forma libre también se puede modificar sin que eso acarree conflictos
legales [2].
Esta librerı́a implementa en Arduino una comunicación de tipo Modbus, siendo
Arduino un esclavo, y mediante un maestro (Interfaz grafica en LabView) se escribiran
registros dentro de Arduino. Las funciones implementadas en esta librerı́a son la 3 y la 6,
para poder escribir y leer registros de 16 bits dentro del Arduino. Aunque esta librerı́a no
implementa mas funciones las ya mencionadas son mas que suficiente para poder tener
acceso tanto a la información digital que se maneja en el estado de los pines de Arduino
como valores de tipo entero y punto flotante que se pudieran requerir, obviamente para
adquirir el valor de un bit dentro de un registro se tendrá que descomponer el registro en
sus 16 bits correspondientes y obtener el de interés.
El mapa de memoria en Arduino se creará enumerando variables con nombres
referentes a la información que almacenaran, la palabra reservada enum puede hacer
ese trabajo. El siguiente código muestra el mapa de memoria que se usará para Arduino.
enum {
/∗ Los r e g i s t r o s i n i c i a n en l a d i r e c c i ó n 0 y c r e c e de
uno en uno conforme s e d e c l a r a n mas r e g i s t r o s , l o s r e g i s t r o s son
de t i p o e n t e r o de 16 b i t s ∗/

MB EDIGITALES , /∗ 1 e s t a d o de l o s p i n e s d i g i t a l e s 22 a l a 37 ∗/
MB EDIGITALES2 , /∗ 2 r e s t o de l a e n t r a d a s d i g i t a l e s 3 8 , 3 9 , 4 0 , 4 1 , 2 , 3 , 5 3 ∗/
MB SDIGITALES , /∗ 3 s a l i d a s d i g i t a l e s de l o s p i n e s 42 a l a 52 ∗/
MB TEMPZ1, /∗ 4 R e g i s t r o de l a t e m p e r a t u r a de l a Zona 1 ∗/
MB SETPOINT, /∗ 5 S e t p o i n t de l a zona 1 ∗/
MB PROPORCIONAL, /∗ 6 Ganancia de l a a c c i ó n p r o p o r c i o n a l de l a zona 1 ∗/
MB INTEGRAL, /∗ 7 Ganancia de l a a c c i ó n i n t e g r a l de l a zona 1 ∗/
MB DERIVATIVA, /∗ 8 Ganancia de l a a c c i ó n d e r i v a t i v a de l a zona 1 ∗/
MB OUTPUT, /∗ 9 Valor de l a S a l i d a de c o n t r o l zona1 ∗/
MB TEMPZ2, /∗ 10 R e g i s t r o de l a t e m p e r a t u r a de l a Zona 2 ∗/
MB SETPOINT2, /∗ 11 S e t p o i n t de l a zona 2 ∗/
MB PROPORCIONAL2, /∗ 12 Ganancia de l a a c c i ó n p r o p o r c i o n a l de l a zona 2 ∗/
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 69

MB INTEGRAL2, /∗ 13 Ganancia de l a a c c i ó n i n t e g r a l de l a zona 2 ∗/


MB DERIVATIVA2, /∗ 14 Ganancia de l a a c c i ó n d e r i v a t i v a de l a zona 2 ∗/
MB OUTPUT2, /∗ 15 Valor de l a S a l i d a de c o n t r o l zona2 ∗/
MB TEMPTANQUE, /∗ 16 R e g i s t r o de l a t e m p e r a t u r a d e l t a n q u e de a c e i t e ∗/
MB CONTROL, /∗ 17 r e g i s t r o para e l i n i c i o d e l programa ∗/
MB NIVEL, /∗ 18 r e g i s t r o que guarda e l v a l o r de n i v e l ∗/
MB TESPERA, /∗ 19 sp tiempo de e s p e r a para c i e r r e de p r e n s a ∗/
MB TESPERAI, /∗ 20 i n d i c a c i ó n tiempo de e s p e r a ∗/
MB TINYECCION, /∗ 21 SP tiempo de i n y e c c i ó n ∗/
MB TINYECCIONI , /∗ 22 I n d i c a c i ó n d e l tiempo de i n y e c c i ó n ∗/
MB TSOSTENIMIENTO, /∗ 23 SP tiempo de s o s t e n i m i e n t o ∗/
MB TSOSTENIMIENTOI, /∗ 24 I n d i c a c i ó n de tiempo de s o s t e n i m i e n t o ∗/
MB TCARGA, /∗ 25 SP tiempo de c a r g a ∗/
MB TCARGAI, /∗ 26 I n d i c a c i o n tiempo de c a r g a ∗/
MB TENFRIAMIENTO, /∗ 27 SP tiempo de e n f r i a m i e n t o ∗/
MB TENFRIAMIENTOI, /∗ 28 I n d i c a c i ó n de e n f r i a m i e n t o ∗/
MB REGS /∗ numero t o t a l de r e g i s t r o s en a r d u i n o ∗/
};
i n t r e g s [MB REGS ] ; // a r r e g l o que c o n t i e n e a t o d o s l o s r e g i s t r o s modbus

Hay que notar que las variables dentro de la seccion enum{}, solo representan un
numero dependiendo del lugar en la que se encuentre ésta. El último registro por ejemplo,
MB REGS representa un 28, la variable que realmente almacena la información es el
arreglo de enteros llamado regs y que tiene reservado 28 (MB REGS) posiciones para
cada uno de los registros que se enumeraron.
El mapa de memoria anterior muestra de forma general los registros con los que se
trabajara en el programa, sin embargo hay que describir la información y el formato que
contendrán los registros, esta descripción se puede visualizar en la tabla 4.1.
70 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Tabla 4.1. Mapa de Memoria

MAPA DE MEMORIA

REGISTRO DESCRIPCIÓN FORMATO


0 [MB EDIGITALES] ENTRADAS DIGITALES (PINES 22-37) VER TABLA 4.2
1 [MB EDIGITALES2] ENTRADAS DIGITALES (PINES 38,39,40,41,2,3) VER TABLA 4.3
2 [MB SDIGITALES] SALIDAS DIGITALES (42-51) VER TABLA 4.4
3 [MB TEMPZ1] TEMPERATURA ZONA 1 ◦C * 100
4 [MB SETPOINT] SETPOINT PARA PID DE ZONA 1 ◦C * 100
5 [MB PROPORCIONAL] GANANCIA PROPORCIONAL PID ZONA 1 KP * 100
6 [MB INTEGRAL] GANANCIA INTEGRAL PID ZONA 1 KI * 100
7 [MB DERIVATIVA] GANANCIA DERIVATIVA PID ZONA 1 KD * 100
8 [MB OUTPUT] SALIDA DE PID ZONA 1 % * 100
9 [MB TEMPZ2] TEMPERATURA ZONA 2 ◦C * 100
10 [ MB SETPOINT2] SETPOINT PARA PID DE ZONA 2 ◦C * 100
11 [ MB PROPORCIONAL2] GANANCIA PROPORCIONAL PID ZONA 2 KP * 100
12 [MB INTEGRAL2] GANANCIA INTEGRAL PID ZONA 2 KI * 100
13 [MB DERIVATIVA2] GANANCIA DERIVATIVA PID ZONA 2 KD * 100
14 [MB OUTPUT2] SALIDA DE PID ZONA 2 % * 100
15 [MB TEMPTANQUE] TEMPERATURA DE TANQUE DE ACEITE ◦C * 100
16 [MB CONTROL] BITS DE ESTADO DE APLICACIÓN VER TABLA 4.5
17 [MB NIVEL] NIVEL DE LA TOLVA % * 100
18 [MB TESPERA] PRESET DE TIEMPO DE ESPERA PARA CIERRE DE PRENSA SEGUNDOS * 100
19 [MB TESPERAI] INDICADOR DEL TIEMPO DE ESPERA PARA CIERRE DE PRENSA SEGUNDOS * 100
20 [MB TINYECCION] PRESET DE TIEMPO DE INYECCIÓN SEGUNDOS * 100
21 [MB TINYECCIONI] INDICADOR DEL TIEMPO DE INYECCIÓN SEGUNDOS * 100
22 [MB TSOSTENIMIENTO] PRESET DE TIEMPO DE SOSTENIMIENTO SEGUNDOS * 100
23 [MB TSOSTENIMIENTOI] INDICADOR DEL TIEMPO DE SOSTENIMIENTO SEGUNDOS * 100
24 [MB TCARGA] PRESET DE TIEMPO DE CARGA DE MATERIAL PLÁSTICO SEGUNDOS * 100
25 [MB TCARGAI] INDICADOR DEL TIEMPO DE CARGA DE MATERIAL PLÁSTICO SEGUNDOS * 100
26 [MB TENFRIAMIENTO] PRESET DE TIEMPO DE ENFRIAMIENTO SEGUNDOS * 100
27 [MB TENFRIAMIENTOI] INDICADOR DEL TIEMPO DE ENFRIAMIENTO SEGUNDOS * 100
28 [MB REGS] TOTAL DE REGISTROS ENTERO
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 71

Tabla 4.2. Entradas digitales

[MB EDIGITALES]

BIT DESCRIPCION PIN FORMATO


0 Interruptor de limite UNO para apertura de prensa 22 0=DESACTIVADO 1=ACTIVADO
1 Interruptor de limite DOS para apertura de prensa 23 0=DESACTIVADO 1=ACTIVADO
2 Interruptor de limite UNO para cierre de prensa 24 0=DESACTIVADO 1=ACTIVADO
3 Interruptor de limite DOS para cierre de prensa 25 0=DESACTIVADO 1=ACTIVADO
4 Interruptor de limite UNO para unidad de inyección 26 0=DESACTIVADO 1=ACTIVADO
5 Interruptor de limite DOS para unidad de inyección 27 0=DESACTIVADO 1=ACTIVADO
6 Interruptor de limite UNO para husillo 28 0=DESACTIVADO 1=ACTIVADO
7 Interruptor de limite DOS para husillo 29 0=DESACTIVADO 1=ACTIVADO
8 Selector en posición Manual 30 0=DESACTIVADO 1=ACTIVADO
9 Selector en posición Semiautomático 31 0=DESACTIVADO 1=ACTIVADO
10 Selector en posición Automático 32 0=DESACTIVADO 1=ACTIVADO
11 Botón para Arranque de Motor Principal 33 0=DESACTIVADO 1=ACTIVADO
12 Botón para Paro de Motor Principal 34 0=DESACTIVADO 1=ACTIVADO
13 Arranque momentáneo de motor de carga 35 0=DESACTIVADO 1=ACTIVADO
14 Botón momentáneo de inyección 36 0=DESACTIVADO 1=ACTIVADO
15 Selector en posición cierre de prensa 37 0=DESACTIVADO 1=ACTIVADO

Tabla 4.3. Entradas digitales 2

TABLA 2 [MB EDIGITALES2]

BIT DESCRIPCIÓN PIN FORMATO


0 Selector en posición apertura de prensa 38 0=DESACTIVADO 1=ACTIVADO
1 Selector de unidad de inyección atras 39 0=DESACTIVADO 1=ACTIVADO
2 Selector de unidad de inyección adelante 40 0=DESACTIVADO 1=ACTIVADO
3 Botón inicio de ciclo 41 0=DESACTIVADO 1=ACTIVADO
4 Interruptor de limite UNO de guarda 2 0=DESACTIVADO 1=ACTIVADO
5 Interruptor de limite DOS de guarda 3 0=DESACTIVADO 1=ACTIVADO
6–15 sin usar NA NA
72 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Tabla 4.4. Salidas digitales

TABLA 3 [MB SDIGITALES]

BIT DESCRIPCIÓN PIN FORMATO


0 Solenoide apertura prensa 42 0=DESACTIVADO 1=ACTIVADO
1 Solenoide cierre prensa 43 0=DESACTIVADO 1=ACTIVADO
2 Solenoide unidad de inyección atras 44 0=DESACTIVADO 1=ACTIVADO
3 Solenoide unidad de inyección adelante 45 0=DESACTIVADO 1=ACTIVADO
4 Solenoide avance husillo 46 0=DESACTIVADO 1=ACTIVADO
5 Solenoide regreso pistón husillo 47 0=DESACTIVADO 1=ACTIVADO
6 Bobina contactor motor de carga 48 0=DESACTIVADO 1=ACTIVADO
7 Bobina contactor motor de bomba hidráulica 49 0=DESACTIVADO 1=ACTIVADO
8 Bobina motor de lubricación 50 0=DESACTIVADO 1=ACTIVADO
9 Selector de canal de temperatura S1 51 0=DESACTIVADO 1=ACTIVADO
10–15 Selector de canal de temperatura S2 52 0=DESACTIVADO 1=ACTIVADO

Tabla 4.5. Banderas de Control

TABLA 4 [MB CONTROL]

BIT DESCRIPCIÓN PIN FORMATO


0 Arranque/Paro de aplicación NA 0=PAR0 1=ARRANQUE
1 Arranque/Paro de control de temperatura NA 0=PARO 1=ARRANQUE
2 Alarma guarda abierta NA 0=ALARMA OFF 1=ALARMA ON
3 Selector de control por interfaz o por botonera externa NA 0=BOTONERA 1=INTERFAZ
4–15 sin usar NA NA

Haciendo referencia a los registros que tienen como formato un int*100, por ejemplo
los temporizadores, SEGUNDOS*100, es para facilitar el envió y recepción de números
flotantes. Por poner un ejemplo, un tiempo de 12.35 segundos se almacenara en su
respectivo registro como 1235, y a la hora de operar o preguntar por el valor de dicho
registro se tendrá que hacer la operación inversa es decir 1235/100 para que obtengamos
el valor de 12.35 que fue el que originalmente se tenia, es esa la razón de poner ese tipo
de formato en los valores de tipo flotante.
Definido ya el mapa de memoria, se describirá de forma general como crear una
instancia Modbus utilizando la librerı́a ModbusSlave.
Para inicializar una comunicación Modbus en Arduino se tiene que crear un objeto
perteneciente a la clase ModbusSlave para posteriormente poder usar los métodos de
ese objeto. En el programa se usó como nombre de ese objeto mbs, este objeto representa
la instancia Modbus dentro de la placa Arduino, posteriormente se configuran los
parámetros de la comunicación los cuales son el numero de esclavo SLAVE, la velocidad
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 73

de transmisión BAUD, la paridad PARITY y el pin de Arduino que servirá para


transmitir la información TXENPIN, estos parámetros se configuran mediante el método
mbs.configure(SLAVE,BAUD,PARITY,TXENPIN).
Finalmente la actualización de los registros del mapa de memoria se realiza con la
siguiente linea de código
mbs . update ( r e g s , MB REGS ) ; // a c t u a l i z a c i ó n de l o s r e g i s t r o s Modbus

Llegado a este punto puede observarse que la linea de código anterior puede colocarse
al inicio de cada iteración de la función loop(), sin embargo de esta forma no se tendrı́a
control sobre el periodo de actualización ya que a lo largo del código puede que la secuencia
de instrucciones tome un rumbo distinto en cada iteración dependiendo de las condiciones
de la MMI, variando de forma arbitraria el periodo de actualización.
Para solucionar este problema se pensó en ejecutar esta linea de código mediante
una interrupción interna, es decir que cada vez que se cumpla cierto periodo de tiempo
el microcontrolador dejara de ejecutar la tarea actual para atender esta interrupción
interna, al termino de ésta, el microcontrolador regresara a la tarea en la que se encontraba
antes de que la interrupción se presentara. De esta forma se hace uniforme el periodo de
actualización de registros y se asegura la comunicación cada cierto periodo.
La función de interrupción que ejecutara la actualización de registros se ha denominado
en el código como timerIsr(), con un periodo de actualización de 10 milisegundos.
El periodo de 10 milisegundos sera ejecutado todo el tiempo por el timer 1 de
microcontrolador de la placa Arduino, para facilitar la tarea de configurar este periodo y
la interrupción en el timer 1, se ha hecho uso de la librerı́a TimeOne.h que, al igual que
todas las librerı́as usadas para el desarrollo de esta aplicación, es libre [4].
Los métodos usados de esta librerı́a son Timer1.initialize(periodo) donde periodo
es un entero que define el periodo en microsegundos. También se hace uso del método
Timer1.attachInterrupt( timerIsr ) donde timerIsr es la subrutina que ejecuta la
actualización de los registros Modbus.

4.1.4. Leer entradas


El primer bloque después del inicio, del diagrama de flujo general visto en la figura
4.3, es leer entradas, en esta seccion se hace una descripción de este bloque.
La parte del programa que se encargará de la lectura de las entradas, se le ha dejado
a la subrutina definida como lectura(), dentro de esta función existen 2 escaneos, uno
para obtener el estado de los interruptores de limite de la MMI, y otro para adquirir el
74 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

estado de los botones de control, esta ultima se ejecuta solo si el tipo de control se ha
cedido a la botonera externa, de lo contrario no se ejecuta y el control lo seguirá teniendo
la interfaz gráfica.
Para que Arduino decida en escanear los botones de control o no, primero se debe leer
el estado de bit 3 del registro regs[MB CONTROL] este bit esta definido en la tabla 4.5.
Los escaneos se han realizado mediante funciones iterativas como for(i=x;i<y;x++),
con la función digitalRead(pin) se obtiene el estado de la entrada pin y el
estado de los pines se han almacenado en el registro regs[MB EDIGITALES] y
regs[MB EDIGITALES2] mediante la función bitWrite(registro,bit,estado), donde
registro es el numero entero de 16 bits al cual se le modificara un bit, bit es el numero de
la posición del bit a editar y estado el valor que tendrá dicho bit ya sea 1 o 0.
Aunque en el momento que se ejecuta la función lectura() se escriben los registros
correspondientes, el valor de las entradas no sera visto por la interfaz gráfica sino hasta
que la función mbs.update(regs, MB REGS) se ejecute.

4.1.5. Procesamiento de entradas


El siguiente bloque en el diagrama de flujo de la figura 4.3, es el llamado procesamiento
de entradas en base a parámetros de control, esta parte del diagrama de flujo es quien
hace la secuencia de operación de la MMI, obviamente esta secuencia esta ligada a los
parámetros de control que se hallan definido en la interfaz gráfica. Uno de los principales
parámetros es la de el modo de operación.
Los modos en los cuales es posible operar la MMI son tres:

1. Manual

2. Semi-automático

3. Automático

4.1.6. Modo Manual


Para el modo manual solo se tendrá que leer las entradas y escribir las salidas
correspondientes a esas entradas ya que en el modo manual solo se manipulan las dos
solenoides de cada uno de los tres pistones de la MMI y los dos contactores de arranque
tanto del motor de la bomba hidráulica como del motor de carga.
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 75

La subrutina llamada manual() es quien se encarga de la escritura de los


registros regs[MB SDIGITALES] dependiendo de los registros regs[MB EDIGITALES]
y regs[MB EDIGITALES2], y al igual que en la función lectura(), para la lectura y
escritura de bits en los registros se hace uso de las funciones bitRead(registro,bit) y de
bitWrite(registro,bit,estado).
Esta función (manual()), solo hace la escritura del registro regs[MB SDIGITALES],
hay que notar que esta función no escribe directamente en los pines de la placa Arduino,
esa parte se describirá en la seccion Escribir Salidas.

4.1.7. Modo semi-automático


Para el modo semi-automático, si se ejecutara una sola secuencia en base a la
descripción del ciclo de operación de la MMI que se ha descrito anteriormente se puede
observar que el modo de operación serı́a semi-automático. Es decir que al final de
programar la secuencia de operación descrita, dentro de una subrutina y mandar llamar
esa subrutina una sola vez mediante una entrada (por ejemplo un botón), se estarı́a
cumpliendo un modo semi-automático, ya que al finalizar la subrutina el programa
principal estarı́a en espera de una nueva señal de entrada para repetir la subrutina.
Con lo anterior se quiere explicar que concluyendo la programación de un ciclo de
operación, se tendrı́a ya la subrutina para el modo semi-automático, y este seria el punto
de partida para el modo automático considerando que se podrı́a crear otra subrutina que
ejecutara condicionalmente la subrutina semi-automático n numero de veces.
Para poder programar la secuencia de operación se tiene que detallar aun mas el ciclo
de la MMI, en pocas palabras definir la filosofı́a de operación.

Filosofı́a de operación
Se definirán algunos conceptos y tiempos antes de explicar el ciclo de operación de la
MMI:

Tiempo de espera. Es el tiempo que debe esperar la prensa antes de poder cerrar.

Tiempo de Carga. Es el necesario para que se desplace el material plástico en la


punta del cañón o tambor y dejarlo listo para la inyección, este se genera al rotar el
husillo.

Tiempo de inyección. Perı́odo en el que comienza a ingresar el material a la cavidad


76 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

del molde y que es proporcional tanto a la velocidad de inyección como a la presión


de inyección hasta que se congela la colada en el molde, este se genera al desplazare
el husillo hacia adelante.

Tiempo de sostenimiento. El necesario para mantener presión en la cavidad y evitar


la deformación de la pieza del molde, esta se retiene hasta enfriar la colada.

Tiempo de enfriamiento. Es el necesario para que el material plástico en el molde se


enfrı́e y asiente suficientemente para extraerlo de la cavidad y evitar la deformación
de la parte.

Cierre y apertura de platina y expulsión de la parte. Se trata del cierre de las


platinas las cuales al contener al molde lo cierra, y ejerce la presión suficiente para
no dejar salir el plástico. La apertura se hace una vez que concluyo el tiempo de
enfriamiento y al momento de abrir un mecanismo propio del molde expulsa la pieza.

Antes de iniciar el ciclo de operación se ajusta la MMI a la altura del molde este
proceso se hace manualmente mediante una manivela que desplaza la platina móvil junto
con la prensa hasta lograr que las rodilleras o pasadores logren su apertura total. Una vez
ajustado la altura del molde se prosigue a fijar el molde mediante grapas y tornillos. Se
prosigue a encender las resistencias del cañón y ajustar la temperatura adecuada para el
material plástico a inyectar. Mientras se alcanza la temperatura especificada se prosigue a
ajustar tiempo de inyección, tiempo de sostenimiento, tiempo de enfriamiento y material
a inyectar. El material a inyectar va de acuerdo al peso y el número de piezas que inyecta
el molde, y se ajusta en la MMI mediante dos topes que accionan dos interruptores de
limite fijado en el husillo, uno para indicar que la inyección ha terminado y otro que indica
que la carga de material termino.
El ciclo de operación comienza con la platina abierta; las zonas de temperatura estables
en el Set Point fijado; los tiempos de espera, inyección, sostenimiento, carga y enfriamiento
ya preestablecidos; la unidad de inyección en posición atras; el husillo con material cargado
y el molde montado.

1. Al cerrar la guarda dos interruptores de limite se activan generando la señal para


que la prensa pueda cerrar. El estado de estos interruptores se almacena en el bit 4
y 5 del del registro regs[MB EDIGITALES2], ver tabla 4.3.
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 77

2. El tiempo de espera inicia, al concluir se sigue al siguiente paso.El conteo de este


timer se almacena en el registro regs[MB TESPERA], ver tabla 4.1.

3. La prensa cierra y al cerrar activan dos interruptores de limite generando la señal


para proceder a la inyección, al mismo tiempo se activa el timer de inyección. El
estado de estos interruptores de limite se almacena en los bits 2 y 3 del registro
regs[MB EDIGITALES], ver tabla 4.2. La señal que activa el cierre de la prensa se
almacena en el bit 1 del registro regs[MB SDIGITALES], ver tabla 4.4. El conteo
del temporizador de inyeccion se almacena en el registro regs[MB TINYECCION],
ver tabla 4.1.

4. Un pistón se desliza moviendo el husillo hacia delante e inyectando el material


acumulado en la punta del cañón hacia el molde, al terminar se activa un interruptor
de limite generando la señal para el siguiente proceso, o también puede ser que el
timer de inyección concluya antes de que el interruptor de limite se active en este
caso el timer generara la señal para el siguiente paso. El bit que activa la extracción
de este pistón es el 4 del registro regs[MB SDIGITALES], ver tabla 4.4. El estado del
interruptor de limite se almacena en el bit 6 del registro regs[MB EDIGITALES],
ver tabla 4.2.

5. Entra el tiempo de sostenimiento mediante un timer, al terminar este tiempo se


genera la señal para el siguiente proceso. El conteo de este timer se almacena en el
registro regs[MB TSOSTENIMIENTO], ver tabla 4.1.

6. Se activa un timer programado con el tiempo de enfriamiento al mismo tiempo


se activa un motor que ayuda al husillo a rotar para cargar el material en la
punta del cañón al terminar se activa un interruptor de limite que genera la señal
para el siguiente proceso (si es que el tiempo de enfriamiento ha concluido). El
conteo de este timer se almacena en el registro regs[MB TENFRIAMIENTO], ver
tabla 4.1. El estado del interruptor de limite se almacena en el bit 7 del registro
regs[MB EDIGITALES], ver tabla 4.2.

7. Se abre la prensa y se expulsa la pieza, al abrirse se activan dos interruptores de


limite generando la señal para el nuevo ciclo y dejando la MMI lista para el siguiente
ciclo. El bit que activa la retracción de este pistón se almacena en el bit 0 del registro
regs[MB SDIGITALES], ver tabla 4.4. El estado de los interruptores de limite se
almacenan en los bits 1 y 2 del registro regs[MB EDIGITALES], ver tabla 4.2.
78 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Con la descripción anterior de la filosofı́a de operación se genero el diagrama de flujo


que se puede ver en la figura 4.4, que representa un ciclo completo de la MMI, y que sera
de utilidad para la programación.
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 79

Figura 4.4. Diagrama de flujo de un ciclo de la MMI


80 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Aun para hacer mas claro el numero de pasos en la secuencia y que señal es quien los
genera, se ha desarrollado un diagrama de espacio fase donde se puede observar el estado
de los tres pistones, pistón de la prensa, pistón de la unidad de inyección y pistón del
husillo además del motor que realiza la carga de material.

También en este diagrama se puede observar que señal de entrada o temporizador acti-
va a el siguiente paso en términos de registros y/o bits. Dicho diagrama se puede observar
en la figura 4.5.
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 81

Figura 4.5. Diagrama de espacio fase del ciclo de la MMI


82 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

En base al diagrama de flujo de la figura 4.4 y al diagrama de espacio fase de la figura


4.5, se programo la subrutina semiautomatico(). Dentro de ella se desarrollaron todos
los pasos que en los diagramas se describe utilizando como variable auxiliar a aux , quien
va llevando un conteo para determinar en que parte de la secuencia se encuentra la MMI
y utilizándolo como permisivo para los pasos consecuentes, al final de cada ciclo esta
variable obtiene nuevamente un valor de 0.
Al igual que en el tipo de modo manual el resultado de esta subrutina es
escribir el correspondiente valor que obtendrán las salidas únicamente en el registro
regs[MB SDIGITLAES] y posteriormente se llevara estos valores a las salidas reales
mediante la subrutina escritura().
También se puede observar ya en el código final que el control de los temporizadores
lo ejecuta el timer3 del microcontrolador de Arduino. Para facilitar la configuración de
este timer, al igual que el timer1, se hizo uso de la libreria TimerThree. Este timer
lleva el conteo del tiempo desde que inicia el ciclo, y cada vez que se alcanza los
tiempos preestablecidos de cada paso se levanta una bandera, Tespera, Tinyeccion,
Tsostenimiento, Tcarga y Tenfiamiento, y con ellas se lleva el control de los timers.
La subrutina que realiza esta función se ha llamado en el código como timers().

4.1.8. Modo automático

La ejecución de este modo de operación lo lleva la subrutina automatico(), y


no es mas que una copia de la subrutina semiautomatico(), condicionando el inicio
de ciclo automático con el boton de inicio de ciclo que corresponde al bit 3 del
registro regs[MB EDIGITALES2], ver tabla 4.3 y además con el tipo de modo, en este
caso automático. Los tipos de modo se almacena en los bits 8, 9 y 10 del registro
regs[MB EDIGITALES], ver tabla 4.2.
Hasta este momento no se ha tocado el punto del control de temperatura, ya que
este es independiente del modo de operación. El control de temperatura se hace mediante
la subrutina controlTemp(). En esta subrutina se tiene el control de lectura de los
termopares mediante dos selectores para multiplexar 2 entradas de termopar a un canal
analógico, estos selectores se encuentran direccionados en los bits 9 y 10 del registro
regs[MB SDIGITALES], ver tabla 4.4.
El tipo de señal que llega al canal analógico es de voltaje y es de 10 mV por grado
centı́grado por lo cual se debe hacer una conversión para transformar de milivoltaje a
4.1. PROGRAMACIÓN DEL ARDUINO MEGA 2560. 83

temperatura considerando que el ADC de Arduino tiene una resolución de 10 bits. La


ecuación 4.1 hace la conversión de milivotaje a temperatura.

LecturaADC ∗ 5
T emperaturaC = 1023 (4.1)
0,01

El tipo de control que se tiene sobre las zonas 1 y 2 es del tipo PID. Para hacer el
control de la temperatura se hizo uso de la librerı́a PID v1 que puede ser descargada de
forma libre desde la comunidad Arduino [3].
Con esta librerı́a se crearon dos instancias PID zona1 y zona2 , indicando la variable
que almacenara la variable de proceso, la que almacenara la salida, la que almacenara el
setpoint, kp, ki, kd y dirección de control ya sea directo o inverso en este caso se trata
de un control inverso ya que la salida disminuye a medida que la variable de proceso
aumenta. En el código se puede observar la configuración de las dos zonas.
La función controlTemp() se manda a llamar cada vez que se ejecuta la función
loop(), dentro de esta función se hace el computo del control de cada zona con el método
zonax.Compute(), este método escribe el correspondiente valor de salida en la variable
asignada de acuerdo a los parámetros de setpoint y ganancias se hallan configurado al
crear las instancias PID.

4.1.9. Escribir salidas

La ultima parte del diagrama de flujo general visto en la figura 4.3, es decir el
bloque que se describe como escribir salidas, es ejecutada en el código por la subrutina
escritura(), y al igual que la subrutina lectura(), es mandada a llamar en cada iteración
de la función loop().
El contenido de esta subrutina no es mas que un ciclo for, que escanea el estado
de los bits del registro regs[MB SDIGITALES], y que escribe mediante la función
digitalWrite(pin,estado), el correspondiente valor a el pin de salida.
Finalmente en el Anexo A presenta de forma completa todo el código generado en el
IDE codeblocks para ser compilado y guardado dentro de la placa Arduino Mega 2560.
84 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

4.2. Programación de la HMI


El software de programación gráfica Labview incluye variadas herramientas para
el desarrollo de aplicaciones gráficas. Una de esas herramientas que sera útil para la
comunicación con Arduino, es la de un maestro Modbus.
Es decir que LabView sera quien le diga a la placa Arduino que registros escribir y
con que valores, también la placa Arduino deberá de responder cuando LabView solicite
información de alguno de sus registros. Estos registros de que se habla han sido definidos
en el mapa de memoria, ver la tabla 4.1.
La interfaz que se desarrollara en LabView sera solo de escritura y lectura de registros,
en ningún momento la interfaz realizara operaciones o rutinas de control, esta parte esta
totalmente integrada dentro de Arduino.
Se ha dividido esta interfaz en siete pestañas contenidas dentro de un tabulador, estas
pestañas llevan como nombre los siguientes:

1. Inicio

2. Control de temperaturas

3. PID’s

4. Controles

5. Tiempos

6. Indicadores

7. Tendencias

En la figura se puede apreciar un esquema de lo que se pretende que sea la interfaz


gráfica.
4.2. PROGRAMACIÓN DE LA HMI 85

Figura 4.6. Vista general de la Interfaz gráfica

Antes de describir cada uno de estas pestañas del tabulador se hará una descripción
sobre como crear un servidor Modbus en LabView para poder tener acceso a los registros
del mapa de memoria de Arduino.
Lo primero que se debe hacer con LabView es crear un nuevo proyecto como
normalmente se hace la ventana que se despliega se puede apreciar en la figura 4.7
86 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.7. Creación de nuevo proyecto en LabView

Una vez que se ha creado el proyecto nuevo, dando click derecho sobre el icono My
computer se despliega un menú secundario, dentro de este menú existe una opción que
dice New y dentro de este la opción I/O Server, ver la figura 4.8. Dando click en esta
ultima opción se abrirá un ventana donde se muestran los múltiples tipos de servidores
que se pueden crear incluyendo el Modbus, este ultimo sera el que se seleccione, ver figura
4.9.
4.2. PROGRAMACIÓN DE LA HMI 87

Figura 4.8. Creación de un nuevo servidor

Figura 4.9. Múltiples servidores en LabView

Cuando se crea un servidor Modbus se deben configurar los parámetros de


comunicación tal y como se establecieron en la placa Arduino, además del tiempo de
refresco para los datos y el puerto serial como ha sido detectado la placa Arduino. En este
caso los parámetros tanto de puerto serial como los especificados en la placa Arduino se
pueden apreciar en la figura 4.10.
88 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.10. Parámetros de comunicación Modbus

Al termino de la configuración de servidor Modbus, aparecerá en el árbol de proyecto


un nuevo articulo llamado Modbus dando click derecho sobre el tendremos la opcion de
crear variables. Estas variables corresponderán a los registros de la placa Arduino en la
figura 4.11.
4.2. PROGRAMACIÓN DE LA HMI 89

Figura 4.11. Creación de variables Modbus

Se deberán crear tantas variables como registros Modbus se desee acceder a Arduino,
en este caso se manipulara todo el mapa de memoria de Arduino visto en la tabla 4.1,
por esa razón se deben crear 28 variables para posteriormente nombrarlas de acuerdo al
numero de dirección Modbus definida en Arduino. La figura 4.12 muestra las variables
con las que se tendrá acceso a Arduino. El tipo de dato al que pertenecen estas variables
es del tipo entero de 16 bits, con cada registro de este tipo se pueden monitorear o escribir
16 señales digitales o una sola analógica usando el formato que se han definido en la tabla
4.1.
90 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.12. Variables correspondientes al mapa de memoria en Arduino

Cuando se han creado las variables, es necesario crear un VI en nuestro proyecto. Este
VI sera el que realice la función de la interfaz gráfica.

Para crear un nuevo VI en el proyecto basta con dar click derecho en la librerı́a donde
se han creado las variables y posteriormente dar click en New->VI tal y como se observa
en la figura 4.13.
4.2. PROGRAMACIÓN DE LA HMI 91

Figura 4.13. Creación de un nuevo VI dentro del proyecto

Las variables que se crearon pueden ser arrastradas hacia el nuevo VI dentro del
diagrama para procesarlas o crearle sus respectivos indicadores. Cuando es necesario
también es posible cambiar el modo de acceso a la variable ya sea de tipo escritura o
de tipo lectura, solo con dar click derecho sobre la variable compartida y seleccionar en
Acces Mode el tipo de acceso Read o Write. En la figura 4.14 se observa la forma de llevar
hacia el diagrama las variables compartidas como también se observa como cambiar el
tipo de acceso [? ].
92 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.14. Insertar Variables compartidas en VI

4.2.1. Pestaña Inicio

Esta pestaña es la primera imagen que se presentara cuando se ejecute la interfaz


gráfica, y solo es posible apreciar un botón general para iniciar la aplicación y dos
indicadores uno verde y otro rojo iluminándose el correspondiente al estado de la aplicación
ya sea detenida o en ejecución esta pestaña se puede ver en la figura 4.15. Cabe mencionar
que mientras la interfaz gráfica se encuentra detenida el programa en Arduino se encuentra
en un bucle sin fin.

Cuando se presiona el boton de inicio lo que se esta haciendo realmente es escribir


un 1 lógico en el bit 0 del registro regs[MB CONTROL], ver tabla 4.5. En la figura 4.16
se puede apreciar el diagrama de bloques correspondiente a la lectura y escritura de este
y otros bits, como por ejemplo el control de mando (por botonera externa o botonera
Virtual).
4.2. PROGRAMACIÓN DE LA HMI 93

Figura 4.15. Pestaña Inicio

Como se puede apreciar en el diagrama de bloques de la figura 4.16 el registro


MB CONTROL es leı́do primeramente para después convertirlo a un dato de tipo arreglo
para facilitar la manipulación de bits usando el bloque index array y finalmente es escrito
nuevamente con los valores seleccionados.
Cuando se ha presionado el botón de la pestaña inicio aparecerán las pestañas restantes
pudiendo acceder a los parámetros de cada una de ellas. Esto se logra condicionando la
propiedad de visibilidad de las pestañas con el botón de inicio. En la figura 4.17 se puede
observar el diagrama de bloques para manipular esta propiedad.
94 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.16. Manipulación de los bits del registro MB CONTROL

Figura 4.17. Control de visibilidad de las pestañas


4.2. PROGRAMACIÓN DE LA HMI 95

4.2.2. Pestaña Control de Temperaturas


En esta pestaña se localiza un interruptor para encender las zonas, tanto la zona 1
como la zona 2. Además se colocaron indicadores de tipo aguja y de tipo numérico tanto
para las variables de proceso como los setpoint y adicionalmente el estado de la salida,
ver la figura 4.18.

Figura 4.18. Pestaña Control de Temperaturas

Aun cuando el interruptor este en modo apagado los indicadores mostraran la


temperatura medida obviamente sin energizar las resistencias que son controladas
mediante un revelador de estado solido, la temperatura medida en este caso sera la
ambiente o la temperatura con la cual se halla trabajado antes de apagar el control
de temperatura.
El registro que se manipula para encender o apagar el control de temperatura es el
MB CONTROL y en especifico el bit 0, el diagrama de bloques de la figura 4.16 muestra
la manipulación de este bit.
Por otro lado, los registros donde se toma el valor de las temperaturas y los set-
points corresponden a MB TEMPZ1, MB TEMPZ2, MB SETPOINT, MB SETPOINT,
MB OUTPUT y MB OUTPUT2. El diagrama de bloque se observa en la figura 4.19.
96 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

También es posible desde esta pestaña cambiar el valor de los setpoint, en este caso
los registros MB SETPOINT y MB SETPOINT2 cambian de lectura a escritura y el
diagrama que muestra la forma de hacer esto se observa en la figura 4.21.

Figura 4.19. Diagrama de bloques para el monitoreo de las Temperaturas, Setpoint y


Salidas

4.2.3. Pestaña PID’s


En esta pestaña se pueden visualizar y modificar los valores de las ganancias Kp, Ki
y Kd de las dos zonas de temperatura mediante slider o introduciendo un valor numérico
en un campo en la figura 4.20 se muestra el aspecto de esta pestaña.
4.2. PROGRAMACIÓN DE LA HMI 97

Figura 4.20. Pestaña PID’s

Los registros que se escriben son MB PROPORCINAL, MB PROPORCINAL2,


MB INTEGRAL, MB INTEGRAL2, MB DERIVATIVA y MB DERIVATIVA2. La figura
4.21 muestra el diagrama de bloques para la escritura de estos registros.
98 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.21. Diagrama de bloques para la escritura de ganancias Kp, Ki y Kd

4.2.4. Pestaña Controles


Esta pestaña es con la que se interactúa frecuentemente ya que en ella se localiza los
botones que permite ceder el control a la botonera externa o bien utilizar la botonera de
la interfaz gráfica. Además se puede seleccionar desde esta pestaña el modo de operación
de la maquina, es decir Manual, Semiautomático o Automático.
En esta pestaña también se encuentran los controles necesarios para una manipulación
manual de la MMI ası́ como el arranque de la bomba hidráulica y del motor que ayuda
a lubricar haciendo circular aceite dentro de las venas de la MMI. En la figura 4.22 se
muestra el diseño de esta pestaña.
En esta pestaña se ha manipulado las propiedades de habilitación de los botones de
forma que cuando se elija modo automático o semiautomático solo este disponible el botón
4.2. PROGRAMACIÓN DE LA HMI 99

inicio de ciclo, o también si se ha elegido control por botonera externa se deshabilitan todos
los controles de la interfaz gráfica.

Figura 4.22. Pestaña Controles

Los registros que aquı́ se manipulan pueden ser de escritura o lectura dependiendo de
quien lleve el mando ya sea la botonera de la interfaz o la botonera externa. Si la botonera
de la interfaz lleva el control los registros serán de escritura, sin en cambio si el control
lo lleva la botonera externa los registros se vuelven de tipo lectura, para lograr esto en
el diagrama de bloques se ha hecho uso de una estructura case para evaluar el bit 3 del
registro MB CONTROL, ver figura 4.16.
También se manipulan las propiedades de los botones y controles dentro de esta
pestaña para, como ya se comento, desactivar ciertos controles dependiendo del modo
de operación. En el diagrama de bloques que se observa en la figura 4.23.
100 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.23. Manipulación de las propiedades de los botones en la pestaña Controles

4.2.5. Pestaña Tiempos

En esta pestaña de la interfaz gráfica, se tienen los temporizadores que intervienen en


el ciclo de operación y que definen el tiempo total del ciclo. Estos temporizadores son el
Tiempo de espera, Tiempo de Inyección, Tiempo de Sostenimiento, Tiempo de Carga y
Tiempo de Enfriamiento.
Los temporizadores son representados en esta seccion de la interfaz mediante
indicadores de aguja en cada uno de ellos se encuentran dos agujas, una de color negro
y otra azul. La aguja azul indica el tiempo preestablecido en el temporizador mientras
4.2. PROGRAMACIÓN DE LA HMI 101

que la aguja negra indica el tiempo transcurrido desde la activación del temporizador,
obviamente los temporizadores son activados conforme se desarrolle la secuencia de de la
MMI, también para hacer mas clara la lectura se ha agregado indicadores numéricos que
muestran tanto el tiempo preestablecido y el transcurrido.
Por la parte del diagrama de bloques solo se hace la escritura de los registros correspon-
dientes a MB TESPERA, MB TINYECCION, MB TSOSTENIMIENTO, MB TCARGA
y MB TENFRIAMIENTO, ver tabla 4.1. Los valores que almacenan estos registros son
los tiempos preestablecidos. Es decir que el operario al preestablecer un tiempo en alguno
de los temporizadores lo que se hace internamente es almacenar ese valor en el registro
correspondiente.
Por otro lado para indicar el tiempo que ha transcurrido desde que se activa algún tem-
porizador se leen de forma periódica los registros MB TESPERAI, MB TINYECCIONI,
MB TSOSTENIMIENTOI, MB TCARGAI y MB TENFRIAMIENTOI y mediante la
aguja negra y el indicador numérico se hace gráfico esta lectura. En la figura 4.24 se
puede observar la pestaña de Tiempos y en la figura 4.25 se puede observar su correspon-
diente diagrama de bloques.

Figura 4.24. Pestaña Tiempos


102 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.25. Diagrama de bloques para lectura y escritura de Temporizadores


4.2. PROGRAMACIÓN DE LA HMI 103

4.2.6. Pestaña Indicadores

En la figura 4.26 se observa la pestaña Indicadores y esta enfocada al monitoreo general


de las señales de salida como las de entrada. En mayor parte de esta pestaña esta formada
por led’s indicadores divididos en dos secciones, señales de entrada y señales de salida.
La finalidad de esta seccion de la interfaz gráfica es detectar de forma rápida el mal
funcionamiento de alguna señal.

Figura 4.26. Pestaña Indicadores

En la parte de diagrama de bloques solo se hace lectura de los registros


MB EDIGITALES, MB EDIGITALES2 y MB SDIGITALES, y extrayendo cada uno de
los estados de sus bits como se muestra en la figura.
También en esta pestaña se ha agregado de forma mas intuitiva el estado de las salidas
mediante un gráfico que representa una MMI y que tiene partes móviles como la prensa,
la unidad de inyección y el husillo. Para esta parte se logra una pequeña animación de la
MMI dependiendo del estado de sus señales de salida. La lógica para realizar esta pequeña
animación se observa en la figura ...
104 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.

Figura 4.27. Diagrama de bloques para el monitoreo de señales digitales


4.2. PROGRAMACIÓN DE LA HMI 105

Figura 4.28. Pestaña Indicadores

4.2.7. Pestaña Tendencias


Finalmente se tiene la pestaña Tendencias. En esta pestaña solo se tiene la indicación
de las dos zonas de temperatura pero en forma de tendencia con la finalidad de hacer
mas claro el comportamiento de la temperatura. Estas tendencias ayudan al operario
para determinar el momento en el que debe prepararse antes de empezar su jornada
laboral ya que inicialmente lo que se hace es encender la calefacción de las zonas y esperar
determinado tiempo en lo que se alcanza una cierta temperatura antes de la final para
adicionar el material a la tolva.
También son de utilidad para sintonizar a los PID de forma empı́rica observando el
comportamiento de la curva de temperatura. En la figura 4.27 se puede observar en la
parte inferior el diagrama de bloques para la lectura de las temperaturas y su registro en
la gráfica de tendencia.
Para finalizar hay que aclarar que en las figuras donde se muestra los diagramas
de bloques se puede observar un recuadro que encierra a dichos diagramas, no hay que
confundir este recuadro con la de lazo while. Este recuadro es solo un delimitador auxiliar
que no tiene ni ejecuta ninguna función.
Se hizo uso de este delimitador para hacer mas comprensible el diagrama de bloques ya
que al final todos los diagramas que se mostraron se incluyen dentro de un solo lazo while
con la finalidad de que por cada ciclo solo se lea o se escriba una sola vez los registros,
esto evita retardos necesarios de lectura y escritura y ayuda a mantener un refresco de
los valores en la interfaz mas constantes.
106 CAPÍTULO 4. PROGRAMACIÓN DEL ARDUINO MEGA Y HMI.
Capı́tulo 5

Análisis de Resultados

En este capitulo se describirán los resultados obtenidos al realizar las pruebas con lo
desarrollado en este trabajo. Se ara una pequeña descripción de las pruebas ası́ como su
objetivo.
Se trataran las principales complicaciones que se tuvieron al desarrollar las tarjetas
electrónicas a si como los problemas presentados en la programación de la plataforma
arduino y de la interfaz gráfica.
Se expondrán los datos recopilados en forma de gráfico de el comportamiento de
la temperatura en el cañón de la MMI ası́ como el procedimiento para determinar las
ganancias de controlador PI.

5.1. Resultados alcanzados en el desarrollo de las


tarjetas electrónicas
PCB de entradas digitales
Para la parte de recepción de señales digitales la tarjeta que se diseño y desarrollo trajo
algunas dificultades a la hora de su implementación por la parte de espacio disponible en la
caja estanca donde finalmente se colocarı́a, ya que en esta caja, al final, alojarı́a a la PCB
de entradas digitales y a la de salidas ası́ como al circuito multiplexor de termopares,
Arduino y fuente de alimentación. Este espacio era relativamente pequeño y la tarjeta
que se desarrolları́a incluı́a dos componentes para la anulación de efecto rebote y doce
opto-acopladores para las respectivas señales, además de resistencias y borneras, y por
la complejidad del circuito se requerı́a una PCB de doble cara o una considerablemente

107
108 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

grande para que el software generador del PCB pudiera resolver su trabajo al 100 %,
finalmente se pudo optimizar el espacio para generar el PCB de entradas digitales en un
espacio de 10x15 cm. Esta PCB se puede observar en la figura 5.1, quedando con un total
de doce entradas digitales de contacto seco.

Figura 5.1. Tarjeta electrónica para entradas digitales

A esta PCB se le realizaron pruebas para verificar su correcto funcionamiento. Para


estas pruebas se simulo a los interruptores de limite mediante un puente entre las dos
terminales de cada punto de entrada y visualizando en arduino mediante el led incluido
del pin 13 el accionamiento de cada punto, claro que previamente se tuvo que realizar
una pequeña rutina que pusiera el estado del pin 13 a on en cada activación de los puntos
digitales. Los resultados de estas pruebas fueron los esperados ya que no se tuvo problema
alguno con estas entradas.

PCB de salidas digitales


El desarrollo de la tarjeta para salidas digitales fue mas sencilla ya que por la ubicación
de los pines de los dispositivos electrónicos y la menor cantidad de estos se pudo optimizar
aun mas el espacio que la tarjeta de entradas, quedando finalmente una PCB de 5x10 cm
con un total de nueve salidas digitales a 120VCA y con capacidad de suministrar a la carga
2A. Cabe mencionar que cada salida es activada mediante un triac que no contempla en
5.1. RESULTADOS ALCANZADOS EN EL DESARROLLO DE LAS TARJETAS ELECTRÓNICAS10

la PCB protección mediante fusibles, esta protección mediante fusibles esta considerada
de forma externa a la PCB de salidas digitales. El resultado de esta tarjeta se puede
visualizar en la figura 5.2.

Figura 5.2. Tarjeta electrónica para salidas digitales

Al igual que la tarjeta de entradas digitales, a esta tarjeta también se le realizaron


pruebas para cerciorarse de que su funcionamiento fuera el adecuado. Estas pruebas
consistió en la realización de una rutina en la plataforma arduino para activar de forma
consecutiva y controlada mediante tiempo, cada uno de los led’s de los opto-triac para
que estos a su vez estos activaran a los correspondientes triac y poder realizar la lectura
de tension a la salida.
Esta prueba tampoco presento complicaciones ya que la tarjeta funciono adecuada-
mente para cada punto de salida.

PCB de entradas analógicas para multiplexar termopares


El numero de componentes electrónicos para el desarrollo de esta PCB solo son
principalmente dos CI, uno que es un multiplexor analógico y el otro que es el dispositivo
de instrumentación que cuenta con la compensación de punta frı́a para termopares del
tipo J y que nos convierte la señal de termopar a una señal de milivolts en especifico 10
mV/C. Se tuvo que tener cuidado con el numero de uniones (soldaduras y conexiones
110 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

en las borneras) ya que una nueva unión representa un nuevo par galvánico y que puede
perjudicar la lectura correcta del elemento sensor. Finalmente esta PCB quedo como se
puede ver en la figura 5.3 con un total de tres entradas de termopar tipo J, una salida
hacia arduino y un par de selectores que serán manipulados por arduino para la selección
del canal que en su momento arduino requiera para su operación.

Figura 5.3. Tarjeta electrónica adquisición de lectura de termopares

La prueba que se le realizo a esta tarjeta fue ya mediante la interfaz gráfica, para
poder visualizar las temperaturas. Esta prueba consistió en colocar un termopar en el
canal uno del multiplexor y un puente en el canal dos, con este puente se logra que
el CI de instrumentación ponga a su salida la lectura de temperatura a la cual se
encuentra el dispositivo, es decir la temperatura ambiente y aplicándole fuego al termopar
se consiguieron 2 lecturas diferentes para el monitoreo de estas. El resultado de la prueba
fue satisfactoria. En la figura 5.4 se pueden observar el monitoreo en forma de tendencia
de ambas temperaturas.
5.2. IDENTIFICACIÓN DE SEÑALES EN TABLERO DE LA MMI 111

Figura 5.4. Tendencias de la lectura de dos temperaturas

5.2. Identificación de señales en tablero de la MMI


Esta parte del desarrollo, contrajo una serie de problemas ya que la forma en la que
esta implementada la instalación de las canalizaciones eléctricas de la MMI es complicada
y de difı́cil acceso.
Se tuvo que desmontar la guarda para tener acceso a los interruptores de limite para
el cierre y apertura de la prensa y ya una vez accediendo a ellos se prosiguiera a destapar
su bloque de conexiones para que a través de un multimetro se testeara punta por punta
en el tablero de control la localización de la terminal correspondiente a cada contacto.
Esta tarea fue realmente engorrosa ya que como se puede observar en la figura 3.23 el
tablero se encunetra con cierto desorden de conductores, aunado que no se contaba con
ningun tipo de diagrama eléctrico sobre la MMI.
Después de localizar las terminales de cada uno de los contactos de los interruptores
de limite, se continuo con la tarea de la identificación de las terminales de las bobinas
que controlan la extracción y retracción de los pistones ası́ como de los contactores que
controlan el arranque del motor de la bomba hidráulica como el del motor de carga.
Después de dos dı́as se termino de localizar las puntas necesarias. Sobre estas puntas se
112 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

realizo la conexión hacia las tarjetas electrónicas sin alterar al tablero original de la MMI
ya que el propietario de esta argumento que requerı́a el tablero electromagnético para una
futura venta de la MMI. En las figuras 5.5 y 5.6 se puede apreciar la identificación de
puntas ası́ como las conexiones sobre las terminales necesarias.

Figura 5.5. Identificación de terminales

Figura 5.6. Conductores sobre terminales identificadas


5.3. RESULTADOS SOBRE LA COMUNICACIÓN E INTERFAZ GRAFICA 113

5.3. Resultados sobre la comunicación e interfaz


grafica

La comunicación entre arduino y labview mediante protocolo Modbus se llevo de forma


satisfactoria ya que en todo momento se es capaz de cambiar los parámetros de arduino
mediante esta interfaz.

El tiempo mı́nimo que labview logra refrescar los datos Modbus es de 0.01 segundos
mientras que en la placa arduino se pudo reducir el tiempo de respuesta en comunicación
hasta de 0.005 segundos. Lo anterior acarrea consigo un pequeño retraso de la activación
de los solenoides de las valvulas pero nada critico ya que el modo manual solo es necesario
al montar y ajustar el molde, el operador argumento que el pequeño retraso generado no
era considerarle en la operación de la MMI.

En la figura 5.7 se observa la comunicación del arduino con la PC mediante el cable


USB.

Figura 5.7. Comunicación entre Arduino y PC con LabView


114 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

5.4. Resulatdos sobre el control de temperatura


al igual que las tarjetas de entradas y salidas, La parte que controla la temperatura
del cañón no requirió del diseño e implementación de una PCB ya que la utilización de
elevadores de estado solido ahorro esa parte, debido a que la parte de carga con la de
control en un relevador de estado solido esta ópticamente aislado.
Los relevadores de estado solido son capaces de conmutar con una frecuencia de hasta
400 Hz lo cual hizo que el control de la temperatura fuera satisfactorio. En la figura se
puede observar el comportamiento de la temperatura del cañón a una entrada del 20 %
del relevador de estado solido.

Figura 5.8. Comportamiento de la temperatura del cañón a una entrada escalón

En la figura 5.8 se puede observar que el comportamiento de ambas zonas es diferente


esto se debe a que el termopar de la zona uno se encuentra directamente montado sobre
la resistencia, debido a deterioro del termopar ya no fue posible montar el termopar en
este y se opto por montar a el termopar directamente sobre la resistencia eléctrica.
Aun ası́ el comportamiento dentro del cañón en ambas zonas deberı́a ser como la
tendencia amarilla del gráfico. Sobre este gráfico es posible determinar las ganancias del
controlador mediante al igual que las tarjetas de entradas y salidas,el método de Ziegler-
Nichols. En la figura 5.9 se puede visualizar la forma de obtener las constantes To y Tp
necesarias para aplicar los valores de la tabla 5.1 propuesta por el método de Ziegler-
Nichols.
5.4. RESULATDOS SOBRE EL CONTROL DE TEMPERATURA 115

Figura 5.9. Obtención de las constantes To y Tp

Tabla 5.1. Tabla Ziegler-Nichols

Kp Ki Kd

Controlador P Tp/To - -
Controlador PI 0.9*Tp/To To/0.3 -
Controlador PID 1.2*Tp/To 2*Tp 0.5*To

El tipo de controlador propuesto es del tipo PI ya que este tipo de controlador es


suficiente para un sistema de primer orden, y como se puede apreciar en la figura 5.9 el
comportamiento del sistema se trata de un sistema de primer orden.
Las ganancias calculadas mediante el método de Ziegler-Nichols se capturaron en la
pestaña de PID’s como se puede ver en la figura 5.10. Los valores para To y Tp son de 160
y 285 segundos aproximadamente, que se obtuvieron de la figura 5.9.
116 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

Figura 5.10. Ganancias Kp y Ki calculadas

Finalmente el comportamiento de la temperatura con estas ganancias se puede


visualizar en las figuras 5.11 y 5.12

Figura 5.11. Elevacion de las temperaturas del cañón


5.5. RESULTADOS OBTENIDOS EN LA OPERACIÓN NORMAL DE LA MMI 117

Figura 5.12. Temperaturas estabilizadas

5.5. Resultados obtenidos en la operación normal de


la MMI

En esta ultima parte se hicieron las pruebas en modo de operación automática en la


MMI. El resultado de esta ultima prueba definió si se alcanzo o no el objetivo principal
el cual era la modernización de la MMI.

Después de hacer el montaje de la caja estanca sobre el tablero original de la MMI


y el cableado correspondiente a las salidas y entradas, ver figura 5.13, se realizaron la
pruebas de la operación de la MMI en modo automático, respondiendo esta de manera
satisfactoria.
118 CAPÍTULO 5. ANÁLISIS DE RESULTADOS

Figura 5.13. Caja estanca sobre tablero original

Por una parte la temperatura se controlo de manera eficiente con no mas de un error
de ± 1 C. Por otra parte el control de forma manual desde la botonera de la interfaz
respondió adecuadamente con un pequeño retraso no critico.

La indicación de los temporizadores se visualizo de forma correcta conforme avanzaba


el ciclo de operacional, ver figura 5.14 . Y finalmente los indicadores de las entradas y
salidas digitales se activaron de forma correcta a lo largo de todo el ciclo, ver la figura
5.15.
5.5. RESULTADOS OBTENIDOS EN LA OPERACIÓN NORMAL DE LA MMI 119

Figura 5.14. Monitoreo del transcurso de los temporizadores

Figura 5.15. Monitoreo de los estados de entradas y salidas digitales


120 CAPÍTULO 5. ANÁLISIS DE RESULTADOS
Conclusiones

La evolución de nuevas tecnologı́as en el área de la automatización permite hacer


más eficientes los procesos y/o herramientas industriales. Este es el caso de la MMI,
en la cual se realizó una propuesta de automatización. Para esta serie de mejoras era
necesario comprender la lógica de operación de la MMI 2GV-50-B Flli Sandretto y con ello
desarrollar la programación de la placa Arduino, para lo cual se basó en la observación de
los ciclos de trabajo automático y semiautomático de la MMI V9/12 Negri Bossi, máquina
que también se encuentra en el taller ”Boliplas” y cuyo funcionamiento es óptimo. Esto
debido a la falta de los diagramas de escalera de la MMI 2GV-50-B Flli Sandretto.
Una vez que se comprendió el funcionamiento, se realizó un levantamiento de las
señales de entrada y salida, con la finalidad de de seleccionar la plataforma Arduino que
cumpliera con las caracterı́sticas requeridas en cuanto a número de entradas y salidas.
Una vez seleccionada la placa Arduino se desarrolló el programa de ciclo de inyección.
La programación de la secuencia de operación para la MMI se realizó a través del
reconocimiento de los sensores y actuadores que participan en cada etapa del proceso.
Por otra parte se necesita la protección de los puertos de entrada y salida
del microcontrolador. Por ello se diseñaron circuitos que aislen dichos puertos del
microcontrolador para evitar averı́as y falsos niveles lógicos de control.
La implementación de una interfaz gráfica permite al operador un acercamiento más
amigable control del proceso, en el cual puede observar de manera gráfica posibles averı́as
en en el sistema, además de permitirle observar, monitorear y manipular en tiempo real
el funcionamiento de la máquina.
Finalmente se ha obtenido una implementación de automatización en el ciclo de
inyección de la MMI, como resultado de la combinación de la tecnologı́a electrónica y
la programación. Esta implementación ha hecho más eficiente el proceso de inyección de
plástico al poder realizarse de manera automática el ciclo, modo con el cual no contaba
inicialmente la máquina.

121
122 CONCLUSIONES

También cabe mencionar que con la implementación que se realizó se ha podido


reducir en términos de espacio el lugar que ocupaba el control electromagnético de la
MMI ası́ como el consumo de energı́a ya que se han reducido las cargas inductivas.
Con la implementación de una interfaz gráfica se logra un mejor monitoreo de los
parámetros de la MMI además de la localización rápida de una falla por ejemplo el mal
funcionamiento de un interruptor de limite puede ser apreciado desde el monitoreo de las
señales de entrada.
Recomendaciones para Trabajos
Futuros

Para garantizar el correcto funcionamiento de los ciclos de inyección que presenta esta
propuesta de automatización, es necesario capacitar al operador para un correcto manejo
de la interfaz gráfica y ası́ poder diagnosticar posibles averı́as en el sistema o en el ciclo
de inyección.
Se recomienda la elaboración de un plan de mantenimiento preventivo para los circuitos
electrónicos al igual que un mantenimiento correctivo en caso de la averı́a de algún circuito
electrónico.

123
124 RECOMENDACIONES PARA TRABAJOS FUTUROS
Referencias

[1] Arduino - reference. http://arduino.cc/en/Reference/HomePage. (Consulta: 2013-


11-20).

[2] arduino-modbus-slave - arduino MODBUS slave library - google project hosting.


https://code.google.com/p/arduino-modbus-slave/. (Consulta: 2013-11-20).

[3] Arduino playground - PIDLibrary. http://playground.arduino.cc/Code/PIDLibrary.


(Consulta: 2013-11-20).

[4] Arduino playground - timer1. http://playground.arduino.cc/Code/Timer1.


(Consulta: 2013-11-20).

[5] CodeBlocks for arduino & AVR. http://sourceforge.net/projects/arduinodev/.


(Consulta: 2013-11-20).

[6] C.A. Harper. Handbook of Plastic Processes. Wiley, 2006.

[7] B.K. Modak. C++ Application Development with Code::Blocks. 2013.

[8] Morton-Jones. Procesamiento de Plasticos. LIMUSA, 1997.

[9] A.C. Naranjo, A.N. Carvajal, M.P.N. E, and J.R. Sanz. Injection Molding Processing
Data. Injection molding package. Hanser Gardner Publications, 2001.

125
126 REFERENCIAS
Anexo A

Código Fuente

/∗#########################################################################
Programa p a r a el control d e una maquina inyectora S a n d r e t t o 2GV/50
Desarrollado por los alumnos de I n g e n i e rı́ a en control y automatizacion
L ó p e z L ó p e z A l b e r t o \\
P é r e z R e y e s Alberto de J e s u s
H a y a s h i J i mé n e z Medina
###########################################################################
Entradas Pines Sensor
22 Interruptor de l i m i t e UNO p a r a apertura de p r e n s a
23 Interruptor de l i m i t e DOS p a r a apertura de p r e n s a
24 Interruptor de l i m i t e UNO p a r a cierre de p r e n s a
25 Interruptor de l i m i t e DOS p a r a cierre de p r e n s a
26 Interruptor de l i m i t e UNO p a r a u n i d a d d e inyeccion
27 Interruptor de l i m i t e DOS p a r a u n i d a d d e inyeccion
28 Interruptor de l i m i t e UNO p a r a husillo
29 Interruptor de l i m i t e DOS p a r a husillo
30 Selector en p o s i c i o n Manual
31 Selector en posicion Semiautomatico
32 Selector en posicion Automatico
33 Boton p a r a A r r a n q u e d e Motor Principal
35 A r r a n q u e momentaneo d e m o t o r d e c a r g a
36 Boton momentaneo d e inyeccion
37 Selector en posicion cierre de p r e n s a
38 Selector en posicion a p e r u r a de p r e n s a
39 Selector de unidad de inyeccion atras
40 Selector de unidad de inyeccion adelante
41 Boton inicio de ciclo
53 Boton d e m o t o r d e lubricacion
################SALIDAS####################################################
42 Solenoide apertura prensa
43 Solenoide cierre prensa
44 Solenoide unidad de inyeccion atras
45 Solenoide unidad de inyeccion adelante
46 Solenoide avance husillo
47 Solenoide regreso piston husillo
48 Bobina contactor motor de c a r g a
49 Bobina contactor motor principal
50 Bobina motor de lubricacion
##########################################################

#####################INTERRUPCIONES ############################################
2 Interruptor de l i m i t e UNO d e g u a r d a ( i n t e r r u p c i o n 0)
3 Interruptor de l i m i t e DOS d e g u a r d a ( i n t e r r u p c i o n 1)
################################################################################

#####################TEMPRETURA#################################################
A0 Entrada analogica para termopares

127
128 ANEXO A. CÓDIGO FUENTE

51 Selector d e c a n a l d e t e m p e r a t u r a S1
52 Selector d e c a n a l d e t e m p e r a t u r a S2
4 S a l i d a PWM p a r a PID z o n a 1
5 S a l i d a PWM p a r a PID z o n a 2
6 S a l i d a PWM p a r a PID N a r i z
∗/
/∗##################################L i b r e r i a s i n c l u i d a s#########################∗/
#include <Arduino . h>
#include <ModbusSlave . h>
#include <TimerOne . h>
#include <TimerThree . h>
#include <PID v1 . h>
#include <a v r / i o . h>
#include <a v r / i n t e r r u p t . h>

/∗##############################################################################∗/

/∗############################DECLARACION DE FUNCIONES##########################∗/
void t i m e r I s r ( void ) ;
void c o n t r o l T e m p ( void ) ;
void l e c t u r a ( void ) ;
void e s c r i t u r a ( void ) ;
void manual ( void ) ;
void s e m i a u t o m a t i c o ( void ) ;
void a u t o m a t i c o ( void ) ;
void checkcom ( void ) ;
void t i m e r s ( void ) ;
/∗##############################################################################∗/

/∗###################################E s t a n c i a y R e g i s t r o s Modbus################∗/
/∗ Se c r e a una instancia modbus ∗/
ModbusSlave mbs ;

/∗ R e g i s t r o s del dispositivo modbus esclavo ( A r d u i n o Mega ) ∗/


enum {
/∗ Los registros inician en la direccion 0 y crece d e uno en
uno c o n f o r m e s e declaran r e g i s t r o s ∗/

MB EDIGITALES , /∗ 1 Registro destinado a el estado de los p i n e s 22 a l a 37 ∗/


MB EDIGITALES2 , /∗ 2 registro para los pines 3 8 , 3 9 , 4 0 , 4 1 , 2 , 3 , 5 3 ∗/
MB SDIGITALES , /∗ 3 Registro para salidas digitales de los p i n e s 42 a l a 52 ∗/
MB TEMPZ1, /∗ 4 Registro de la t e m p e r a t u r a de l a Zona 1 ∗/
MB SETPOINT, /∗ 5 Setpoint de la z o n a 1 ∗/
MB PROPORCIONAL, /∗ 6 Ganancia de la accion proporcional de la z o n a 1 ∗/
MB INTEGRAL, /∗ 7 Ganancia de la accion integral de la z o n a 1 ∗/
MB DERIVATIVA, /∗ 8 Ganancia de la accion derivativa de la z o n a 1 ∗/
MB OUTPUT, /∗ 9 Valor de la Salida de control z o n a 1 ∗/
MB TEMPZ2, /∗ 10 Registro de la t e m p e r a t u r a de l a Zona 2 ∗/
MB SETPOINT2 , /∗ 11 Setpoint de la z o n a 2 ∗/
MB PROPORCIONAL2, /∗ 12 Ganancia de la accion proporcional de la z o n a 2 ∗/
MB INTEGRAL2, /∗ 13 Ganancia de la accion integral de la z o n a 2 ∗/
MB DERIVATIVA2 , /∗ 14 Ganancia de la accion derivativa de la z o n a 2 ∗/
MB OUTPUT2, /∗ 15 Valor de la Salida de control z o n a 2 ∗/
MB TEMPTANQUE, /∗ 16 Registro de la temperatura del t a n q u e de a c e i t e ∗/
MB CONTROL, /∗ 17 registro para el inicio del p r o g r a m a ∗/
MB NIVEL , /∗ 18 registro que guarda el valor de n i v e l ∗/
MB TESPERA, /∗ 19 sp tiempo de e s p e r a para cierre d e p r e n s a ∗/
MB TESPERAI , /∗ 20 indicacion tiempo de e s p e r a ∗/
MB TINYECCION, /∗ 21 SP t i e m p o d e i n y e c c i o n ∗/
MB TINYECCIONI , /∗ 22 Indicacion del tiempo de i n y e c c i o n ∗/
MB TSOSTENIMIENTO, /∗ 23 SP t i e m p o d e s o s t e n i m i e n t o ∗/
MB TSOSTENIMIENTOI , /∗ 24 Indicacion de tiempo de s o s t e n i m i e n t o ∗/
MB TCARGA, /∗ 25 SP t i e m p o d e c a r g a ∗/
MB TCARGAI, /∗ 26 Indicacion t i e m p o d e c a r g a ∗/
MB TENFRIAMIENTO, /∗ 27 SP t i e m p o d e e n f r i a m i e n t o ∗/
MB TENFRIAMIENTOI, /∗ 28 Indicacion de e n f r i a m i e n t o ∗/
MB REGS /∗ total number o f registers on s l a v e ∗/
};

/∗##########################DECLARACION DE VARIABLES GLOBALES##################∗/


129

int r e g s [ MB REGS ] ; /∗ a r r e g l o que incluye la direccion de cada r e g i s t r o ∗/


volatile int r e g i s t r o s [ MB REGS ] ;
i n t modo ; // a l m a c e n a modo d e o p e r a c i o n 0=manual , 1= s e m i a u t o m a t i c o , 3= a u t o m a t i c o
volatile i n t c o n t =0; // c o n t a d o r d e veces que se entra a la interrupcion timerIsr
volatile i n t c o n t 2 =0; // c o n t a d o r que acumula las veces q u e s e ha t e n i d o d a t o s en p u e r t o serie
bool c i c l o=f a l s e ; // i n d i c a d o r de ciclo activo
i n t aux =0; // v a r i a b l e auxiliar indica la posicion en la que se encuentra el ciclo
b o o l gh= f a l s e ; // g u a r d a en e s t a d o alto
bool g l= f a l s e ; // g u a r d a en e s t a d o bajo
/∗ B a n d e r a s d e t i e m p o s ∗/
b o o l T e s p e r a= f a l s e ;
bool T i n y e c c i o n= f a l s e ;
bool T s o s t e n i m i e n t o= f a l s e ;
b o o l Tcarga= f a l s e ;
bool T e n f r i a m i e n t o= f a l s e ;

/∗DECLARACION DE PID ’ S ∗/
/∗ p a r a m e t r o s PID z o n a 1 ∗/
double S e t p o i n t , I n p u t , Output ;
PID z o n a 1 (& I n p u t , &Output , &S e t p o i n t , 2 , 5 , 1 , DIRECT ) ;

/∗ p a r a m e t r o s PID z o n a 2 ∗/
double S e t p o i n t 2 , I n p u t 2 , Output2 ;
PID z o n a 2 (& I n p u t 2 , &Output2 , &S e t p o i n t 2 , 2 , 5 , 1 , DIRECT ) ;

/∗###################################################################################∗/

/∗##########################CONFIGURACION DE FUNCION SETUP###########################∗/

void s e t u p ( )
{
/∗ C o n f i g u r a c i o n d e los parametros del esclavo modbus ∗/
const unsigned char SLAVE = 1 ;
const long BAUD = 1 1 5 2 0 0 ;
const char PARITY = ’ n ’ ;
const char TXENPIN = 1 ;

/∗ Se c o n f i g u r a la e s t a n c i a modbus c r e a d a con los parametros e s t a b l e c i d o s ∗/


mbs . c o n f i g u r e (SLAVE,BAUD, PARITY, TXENPIN ) ;

/∗ Se inicializa una i n t e r r u p c i o n interna que se ejecutara cada 5 m i l i s e g u n d o s


para actualizar los registros modbus ∗/
Timer1 . i n i t i a l i z e ( 1 0 0 0 0 ) ; // s e preestablece el t i m e r 1 con un t i e m p o
// d e 1 0 0 0 0 m i c r o s e g u n d o s

Timer1 . a t t a c h I n t e r r u p t ( timerIsr ); // Se especifica la funcion a llamar cada


// v e z que el timer1 c u e n t e 25 m i l i s e g u n d o s

/∗ Se inicializa el t i m e r 3 con 0 . 1 s e g ∗/
Timer3 . i n i t i a l i z e ( 1 0 0 0 0 0 ) ;

/∗CONFIGURACION DE PINES COMO ENTRADAS∗/


for ( int i =22; i <42; i ++){
pinMode ( i , INPUT ) ;
}

pinMode ( 2 , INPUT ) ; // e n t r a d a para sensor guarda


pinMode ( 3 , INPUT ) ; // e n t r a d a para sensor guarda2
pinMode ( 5 3 , INPUT ) ; // e n t r a d a para motor de lubricacion

/∗CONFIGURACION DE PINES COMO SALIDAS∗/


for ( int i =42; i <53; i ++){
pinMode ( i ,OUTPUT) ;
}
pinMode ( 4 ,OUTPUT) ; //SALIDA PARA EL PID Z1
pinMode ( 5 ,OUTPUT) ; //SALIDA PARA PID Z2
pinMode ( 6 ,OUTPUT) ; //SALIDA PARA NARIZ
pinMode ( 1 3 ,OUTPUT) ; // s o l o para prueba
130 ANEXO A. CÓDIGO FUENTE

/∗ C o n f i g u r a c i o n d e l PID ’ s en modo a u t o m a t i c o e inicializacion de e n t r a d a s ∗/


z o n a 1 . SetMode (AUTOMATIC) ;
z o n a 2 . SetMode (AUTOMATIC) ;
I n p u t =0;
I n p u t 2 =0;
}
/∗################################################################################∗/

/∗####################################FUNCION PRINCIPAL###########################∗/
void l o o p ( )
{
/∗BUCLE DE INICIO ∗/
while ( b i t R e a d ( r e g i s t r o s [MB CONTROL] , 0 ) = = 0 ) {
c o n t 2 =0;
c o n t =0;
}

i f ( c o n t >200){
checkcom ( ) ; // s e c o m p r u e b a si no ha fallado la comunicacion
c o n t =0; // s e reestablece el contador para el proximo chequeo
}
/∗ARRANQUE Y PARO DE LA BOMBRA HIDRAHULICA∗/
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 1 1 ) = = 1 | | b i t R e a d ( r e g i s t r o s [ MB SDIGITALES] , 7 ) = = 1 ) {
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 7 , 1 ) ;
d i g i t a l W r i t e ( 4 9 ,HIGH ) ;
}
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] , 1 2 ) = = 1 ) {
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 7 , 0 ) ;
d i g i t a l W r i t e ( 4 9 ,LOW) ;
}

/∗LLAMADA DE LA RUTINA PARA EL CONTROL DE TEMPERATURA∗/


controlTemp ( ) ;

/∗BUCLE PARA GUARDA ABIERTA∗/ //CAMBIO LA LOGICA DEL MICRO


while ( d i g i t a l R e a d (2)==0){ // s e pregunta por el estado del p i n donde esta la guarda
b i t W r i t e ( r e g s [MB CONTROL] , 2 , 1 ) ; // s e escribe el registro modbus c o r r e s p o n d i e n t e
controlTemp ( ) ; // s e sigue ejecutando la rutina de control de t e m p e r a t u r a

/∗CONJUNTO DE IF ∗/
i f ( g l==t r u e ) {
gh=t r u e ;
}
}

b i t W r i t e ( r e g s [MB CONTROL] , 2 , 0 ) ;

lectura (); // l e c t u r a de entradas

/∗ S e l e c c i o n de rutina de c o n t r o l ∗/
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] , 8 ) = = 1 ) { // s e evalua el bit de e s t a d o manual
manual ( ) ;
}
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] , 9 ) = = 1 ) { // s e evalua el bit de estado semiautomatico
semiautomatico ( ) ;
}
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] , 1 0 ) = = 1 ) { // s e evalua el bit de estado automatico
automatico ( ) ;
}

escritura (); // s e escriben salidas


}
/∗###################################################################################∗/

/∗##################################DEFINICION DE LA FUNCION TIMERISR################∗/

void t i m e r I s r ( )
{
cli ();
c o n t=c o n t +1;
131

i f ( S e r i a l . a v a i l a b l e () >0)
c o n t 2=c o n t 2 +1;
mbs . u p d a t e ( r e g s , MB REGS ) ;
for ( int i =0; i <MB REGS ; i ++){
r e g i s t r o s [ i ]= r e g s [ i ] ;
}
sei ();
return ;
}
/∗###################################################################################∗/

/∗##################################DEFINICION DE LA FUNCION CONTROLTEMP################∗/


void c o n t r o l T e m p ( void )
{
/∗ Se selecciona el c a n a l 1 d e t e m p e r a t u r a ∗/
d i g i t a l W r i t e ( 5 1 ,LOW) ;
d i g i t a l W r i t e ( 5 2 ,LOW) ;

I n p u t =0; // s e inicializa input para h a c e r una a c u m u l a c i o n d e 200 lecturas

for ( int i =0; i <5; i ++)


{
I n p u t=I n p u t +( f l o a t ( a n a l o g R e a d ( 0 ) ) ∗ 5 / 1 0 2 3 . 0 ) / 0 . 0 1 ;
}

I n p u t=I n p u t / 5 ;
r e g s [ MB TEMPZ1]= i n t ( I n p u t ∗ 1 0 0 ) ; // s e carga la nueva t e m p e r a t u r a a l o s registros modbus

/∗ Se selecciona el c a n a l 2 d e t e m e p r a t u r a ∗/
d i g i t a l W r i t e ( 5 1 ,HIGH ) ;

I n p u t 2 =0; // s e inicializa input2 para h a c e r una a c u m u l a c i o n d e 200 lecturas


for ( int i =0; i <5; i ++)
{
I n p u t 2=I n p u t 2 +( f l o a t ( a n a l o g R e a d ( 0 ) ) ∗ 5 / 1 0 2 3 . 0 ) / 0 . 0 1 ;
}
I n p u t 2=I n p u t 2 / 5 ;
r e g s [ MB TEMPZ2]= i n t ( I n p u t 2 ∗ 1 0 0 ) ; // s e carga la nueva t e mp e ra t

// C o n t r o l d e inicio de aplicacion
i f ( b i t R e a d ( r e g i s t r o s [MB CONTROL] , 1 ) = = 0 ) {
analogWrite ( 4 , 0 ) ;
analogWrite ( 5 , 0 ) ;
r e g s [MB OUTPUT] = 0 ;
r e g s [ MB OUTPUT2] = 0 ;
return ;
}

/∗ Se c o n f i g u r a n PID con p a r a m e t r o s ∗/
z o n a 1 . S e t T u n i n g s ( double ( r e g i s t r o s [MB PROPORCIONAL] ) / 1 0 0 . 0 ,
double ( r e g i s t r o s [ MB INTEGRAL ] ) / 1 0 0 . 0 , double ( r e g i s t r o s [ MB DERIVATIVA ] ) / 1 0 0 . 0 ) ;

z o n a 2 . S e t T u n i n g s ( double ( r e g i s t r o s [ MB PROPORCIONAL2 ] ) / 1 0 0 . 0 ,
double ( r e g i s t r o s [ MB INTEGRAL2 ] ) / 1 0 0 . 0 , double ( r e g i s t r o s [ MB DERIVATIVA2 ] ) / 1 0 0 . 0 ) ;

/∗ Se a s i g n a n Setpints desde Registros d e L a b v i e w ∗/


S e t p o i n t=double ( r e g i s t r o s [ MB SETPOINT ] ) / 1 0 0 . 0 ;
S e t p o i n t 2=double ( r e g i s t r o s [ MB SETPOINT2 ] ) / 1 0 0 . 0 ;

/∗ Se realiza el computo d e l o s PID∗/


z o n a 1 . Compute ( ) ;
z o n a 2 . Compute ( ) ;

/∗ Se m a n i p u l a las salidas ∗/
a n a l o g W r i t e ( 4 , Output ) ;
a n a l o g W r i t e ( 5 , Output2 ) ;
/∗ Se escribe el valor de la salida a los registros modbus ∗/
r e g s [MB OUTPUT]= i n t ( ( Output / 2 5 5 . 0 ) ∗ 1 0 0 0 0 ) ;
r e g s [ MB OUTPUT2]= i n t ( ( Output2 / 2 5 5 . 0 ) ∗ 1 0 0 0 0 ) ;
132 ANEXO A. CÓDIGO FUENTE

}
/∗###################################################################################∗/

/∗##########################ESCANEO DE ENTRADAS######################################∗/

void l e c t u r a ( void ) {
// e s c a n e o d e sensores
for ( int i =22; i <30; i ++){
b i t W r i t e ( r e g s [ MB EDIGITALES ] , ( i −22) , d i g i t a l R e a d ( i ) ) ; // s e escriben los bits
// d e p e n d i e n d o del estado de los sensores
}

// e s c a n e o d e controles
i f ( b i t R e a d ( r e g i s t r o s [MB CONTROL] , 3 ) = = 1 ) // s e evalua la forma de control ya s e a p o r
// b o t o n e r a o p o r interface
return ; // s i es por interface termina rutina scan ;
else {
for ( int i =30; i <38; i ++){// s i se escoge control por botonera se escanean el
// e s t a d o de los botones

b i t W r i t e ( r e g s [ MB EDIGITALES ] , ( i −22) , d i g i t a l R e a d ( i ) ) ;
}
// e s c a n e o del segundo r e g i s t r o MB EDIGITALES2
for ( int i =38; i <42; i ++){
b i t W r i t e ( r e g s [ MB EDIGITALES2 ] , ( i −38) , d i g i t a l R e a d ( i ) ) ;
}

b i t W r i t e ( r e g s [ MB EDIGITALES2 ] , 6 , d i g i t a l R e a d ( 5 3 ) ) ; // e s c a n e o d e b o t o n d e lubricacion
}
return ;
}
/∗###############################################################################∗/

/∗##################################MANUAL#######################################∗/

void manual ( void ) {


b i t W r i t e ( r e g s [ MB SDIGITALES ] , 0 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 0 ) ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 1 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 1 5 ) ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 2 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 1 ) ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 3 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 2 ) ) ;

i f ( b i t R e a d ( r e g i s t r o s [ MB SDIGITALES] , 5 ) = = 0 )
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 4 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 1 4 ) ) ;
i f ( b i t R e a d ( r e g i s t r o s [ MB SDIGITALES] , 4 ) = = 0 )
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 5 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 1 3 ) ) ;

b i t W r i t e ( r e g s [ MB SDIGITALES ] , 6 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 1 3 ) ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 8 , b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 6 ) ) ;
}
/∗###############################################################################∗/

/∗##################################SEMIAUTOMATICO###############################∗/

void s e m i a u t o m a t i c o ( void ) {

i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2] ,4)==0)&&( gh==f a l s e ) ) {


g l=t r u e ;
}
i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2] ,4)==0)&&( gh==t r u e )&&( g l==t r u e ) ) {
c i c l o =t r u e ;
g l= f a l s e ;
gh= f a l s e ;
}

i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 3 ) = = 1 ) | | ( c i c l o==t r u e ) ) {
// s e pregunta por b o t o n de inicio de ciclo
c i c l o =t r u e ;
i f ( aux==0){
aux=aux +1;
}
133

goto s e m i ;
}
else
return ;

semi :
i f ( aux==1){
Timer3 . a t t a c h I n t e r r u p t ( t i m e r s ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 3 , 1 ) ; // s e activa solenoide de avance para
// u n i d a d d e inyeccion
aux =2;
}

i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],4)==1&& aux==2){ // s e pregunta si llego al


// f i n a l de avance unidad de inyeccion
T e s p e r a=t r u e ; // s e arranca t i m e r de tiempo de espera
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 3 , 0 ) ; // s e a p a g a la solenoide de avance de
// u n i d a d d e inyeccion
aux =3;
}

i f ( r e g i s t r o s [ MB TESPERAI]>= r e g i s t r o s [ MB TESPERA]&&aux==3){ // s e pregunta


// s i termino tiempo de espera
T e s p e r a= f a l s e ; // s i termino se apaga bandera
r e g s [ MB TESPERAI] = 0 ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 1 , 1 ) ; // s e activa solenoide de cierre de p r e n s a
aux =4;
}

// s e pregunta si cerro la prensa


i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],2)==1&& b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],3)==1&& aux==4){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 1 , 0 ) ; // s e desactiva solenoide de cierre de p r e n s a
T i n y e c c i o n=t r u e ; // s e arranca tiempo de inyeccion
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 4 , 1 ) ; // s e activa solenoide de inyeccion
aux =5;
}

/∗ Se p r e g u n t a si llego el husillo al final o si concluyo el tiempo de i n y e c c i o n ∗/


i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 6 ) = = 1 | |
( r e g i s t r o s [ MB TINYECCIONI]>= r e g i s t r o s [ MB TINYECCION]))&& aux==5){
T i n y e c c i o n= f a l s e ; // s e a p a g a t i m e r de inyeccion
r e g s [ MB TINYECCIONI ] = 0 ; // s e reinicia timer
T s o s t e n i m i e n t o=t r u e ; // s e enciende bandera
aux =6;
}

/∗ Se p r e g u n t a si concluyo el tiempo de s o s t e n i m i e n t o ∗/
i f ( r e g i s t r o s [ MB TSOSTENIMIENTOI]>= r e g i s t r o s [ MB TSOSTENIMIENTO]&&aux==6){
T s o s t e n i m i e n t o= f a l s e ; // s e a p a g a b a n d e r a
r e g s [ MB TSOSTENIMIENTOI] = 0 ; // s e reinicia timer
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 4 , 0 ) ; // s e desactiva solenoide de inyeccion
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 5 , 1 ) ; // s e activa solenoide de regreso de husillo
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 6 , 1 ) ; // s e activa b o b i n a de contactor de motor de c a r g a
Tcarga=t r u e ;
T e n f r i a m i e n t o=t r u e ;
aux =7;
}

/∗ Se p r e g u n t a si concluyo el tiempo de c a r g a o si llego al l i m i t e ∗/


i f ( ( r e g i s t r o s [ MB TCARGAI]>= r e g i s t r o s [MB TCARGA ] | |
b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] ,7)==1)&& aux==7){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 5 , 0 ) ; // s e desactiva solenoide de regreso de husillo
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 6 , 0 ) ; // s e desactiva b o b i n a de contactor de motor de c a r g a
Tcarga= f a l s e ;
r e g s [ MB TCARGAI] = 0 ;
aux =8;
}

/∗ Se p r e g u n t a si termino tiempo de e n f r i a m i e n t o ∗/
i f ( r e g i s t r o s [ MB TENFRIAMIENTOI]>= r e g i s t r o s [ MB TENFRIAMIENTO]&&aux==8){
134 ANEXO A. CÓDIGO FUENTE

T e n f r i a m i e n t o= f a l s e ;
r e g s [ MB TENFRIAMIENTOI] = 0 ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 0 , 1 ) ; // s e activa solenoide de apertura de p r e n s a
aux =9;
}

/∗ Se p r e g u n t a si llego al final de carrera la apertura d e p r e n s a ∗/


i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],0)==1&& b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],1)==1&& aux==9){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 0 , 0 ) ; // s e desactiva solenoide de apertura de p r e n s a
c i c l o=f a l s e ; // s e termina el ciclo
Timer3 . d e t a c h I n t e r r u p t ( ) ; // s e a p a g a n los timers
aux =0;
}
}
/∗###################################################################################∗/

/∗##################################AUTOMATICO#######################################∗/

void a u t o m a t i c o ( void ) {
i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2] ,4)==0)&&( gh==f a l s e ) ) {
g l=t r u e ;
}
i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2] ,4)==0)&&( gh==t r u e )&&( g l==t r u e ) ) {
c i c l o =t r u e ;
g l= f a l s e ;
gh= f a l s e ;
}
// s e pregunta por b o t o n de inicio de ciclo
i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES2 ] , 3 ) = = 1 ) | | ( c i c l o==t r u e ) | | aux==1){
c i c l o =t r u e ;
i f ( aux==0){
aux=aux +1;
}
goto s e m i ;
}
else
return ;

semi :
i f ( aux==1){
Timer3 . a t t a c h I n t e r r u p t ( t i m e r s ) ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 3 , 1 ) ; // s e activa solenoide de avance
// p a r a u n i d a d d e inyeccion
aux =2;
}

i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],4)==1&& aux==2){ // s e pregunta si


// l l e g o al final de avance unidad de inyeccion
T e s p e r a=t r u e ; // s e arranca t i m e r de tiempo de espera
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 3 , 0 ) ; // s e a p a g a la solenoide de avance
// d e u n i d a d d e inyeccion
aux =3;
}
// s e pregunta si termino tiempo de e s p e r a
i f ( r e g i s t r o s [ MB TESPERAI]>= r e g i s t r o s [ MB TESPERA]&&aux==3){
T e s p e r a= f a l s e ; // s i termino se apaga bandera
r e g s [ MB TESPERAI] = 0 ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 1 , 1 ) ; // s e activa solenoide de cierre de p r e n s a
aux =4;
}
// s e pregunta si cerro la prensa
i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],2)==1&& b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],3)==1&& aux==4){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 1 , 0 ) ; // s e desactiva solenoide de cierre de p r e n s a
T i n y e c c i o n=t r u e ; // s e arranca tiempo de inyeccion
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 4 , 1 ) ; // s e activa solenoide de inyeccion
aux =5;
}

/∗ Se p r e g u n t a si llego el husillo al final o si concluyo el tiempo de i n y e c c i o n ∗/


i f ( ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES ] , 6 ) = = 1 | |
135

( r e g i s t r o s [ MB TINYECCIONI]>= r e g i s t r o s [ MB TINYECCION]))&& aux==5){


T i n y e c c i o n= f a l s e ; // s e a p a g a t i m e r de inyeccion
r e g s [ MB TINYECCIONI ] = 0 ; // s e reinicia timer
T s o s t e n i m i e n t o=t r u e ; // s e enciende bandera
aux =6;
}

/∗ Se p r e g u n t a si concluyo el tiempo de s o s t e n i m i e n t o ∗/
i f ( r e g i s t r o s [ MB TSOSTENIMIENTOI]>= r e g i s t r o s [ MB TSOSTENIMIENTO]&&aux==6){
T s o s t e n i m i e n t o= f a l s e ; // s e a p a g a b a n d e r a
r e g s [ MB TSOSTENIMIENTOI] = 0 ; // s e reinicia timer
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 4 , 0 ) ; // s e desactiva solenoide de inyeccion
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 5 , 1 ) ; // s e activa solenoide de regreso de husillo
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 6 , 1 ) ; // s e activa b o b i n a de contactor de motor de c a r g a
Tcarga=t r u e ;
T e n f r i a m i e n t o=t r u e ;
aux =7;
}

/∗ Se p r e g u n t a si concluyo el tiempo de c a r g a o si llego al l i m i t e ∗/


i f ( ( r e g i s t r o s [ MB TCARGAI]>= r e g i s t r o s [MB TCARGA ] | |
b i t R e a d ( r e g i s t r o s [ MB EDIGITALES] ,7)==1)&& aux==7){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 5 , 0 ) ; // s e desactiva solenoide de regreso de husillo
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 6 , 0 ) ; // s e desactiva b o b i n a de contactor de motor de c a r g a
Tcarga= f a l s e ;
r e g s [ MB TCARGAI] = 0 ;
aux =8;
}

/∗ Se p r e g u n t a si termino tiempo de e n f r i a m i e n t o ∗/
i f ( r e g i s t r o s [ MB TENFRIAMIENTOI]>= r e g i s t r o s [ MB TENFRIAMIENTO]&&aux==8){
T e n f r i a m i e n t o= f a l s e ;
r e g s [ MB TENFRIAMIENTOI] = 0 ;
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 0 , 1 ) ; // s e activa solenoide de apertura de p r e n s a
aux =9;
}

/∗ Se p r e g u n t a si llego al final de carrera la apertura d e p r e n s a ∗/


i f ( b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],0)==1&& b i t R e a d ( r e g i s t r o s [ MB EDIGITALES],1)==1&& aux==9){
b i t W r i t e ( r e g s [ MB SDIGITALES ] , 0 , 0 ) ; // s e desactiva solenoide de apertura de p r e n s a
c i c l o=f a l s e ; // s e termina el ciclo
Timer3 . d e t a c h I n t e r r u p t ( ) ; // s e a p a g a n los timers
aux =1;
}
}
/∗###################################################################################∗/

/∗##################################ESCRITURA########################################∗/

void e s c r i t u r a ( void ) {

for ( int i =42; i <49; i ++){


d i g i t a l W r i t e ( i , b i t R e a d ( r e g i s t r o s [ MB SDIGITALES ] , ( i − 4 2 ) ) ) ;
}
d i g i t a l W r i t e ( 5 0 , b i t R e a d ( r e g i s t r o s [ MB SDIGITALES ] , 8 ) ) ;

}
/∗###################################################################################∗/

/∗#########################FUNCION PARA CHEQUEO DE COMUNICACION######################∗/


void checkcom ( void ) {
i f ( c o n t 2 ==0){
digitalWrite (13 ,1);
b i t W r i t e ( r e g s [MB CONTROL] , 3 , 0 ) ;
}
else {
c o n t 2 =0;
digitalWrite (13 ,0);
}
}
136 ANEXO A. CÓDIGO FUENTE

/∗###################################################################################∗/

/∗###########################FUNCION QUE CONTROLA LAS BANDERAS DE LOS TIMERS#########∗/

void t i m e r s ( void ) {
cli ();
i f ( T e s p e r a==t r u e ) {
r e g s [ MB TESPERAI]= r e g i s t r o s [ MB TESPERAI] + 1 ;
}

i f ( T i n y e c c i o n==t r u e ) {
r e g s [ MB TINYECCIONI]= r e g i s t r o s [ MB TINYECCIONI ] + 1 ;
}

i f ( T s o s t e n i m i e n t o==t r u e ) {
r e g s [ MB TSOSTENIMIENTOI]= r e g i s t r o s [ MB TSOSTENIMIENTOI] + 1 ;
}

i f ( Tcarga==t r u e ) {
r e g s [ MB TCARGAI]= r e g i s t r o s [ MB TCARGAI] + 1 ;
}

i f ( T e n f r i a m i e n t o==t r u e ) {
r e g s [ MB TENFRIAMIENTOI]= r e g i s t r o s [ MB TENFRIAMIENTOI] + 1 ;
}
sei ();
return ;
}
/∗###################################################################################∗/

También podría gustarte