Modernizacion de Maquina Inyectora de Plastico
Modernizacion de Maquina Inyectora de Plastico
Modernizacion de Maquina Inyectora de Plastico
TESIS
P R E S E N T AN
ASESORES:
M. EN C. JOSÉ DARIO BETANZOS RAMÍREZ
ING. IVÁN HERNÁNDEZ VELÁZQUEZ
Índice de General V
Índice de Figuras IX
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
Conclusiones 121
Referencias 125
Anexo 125
ix
x ÍNDICE DE FIGURAS
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 CAPÍTULO 1. ANTECEDENTES GENERALES
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
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.
4. Investigar e identificar las tecnologı́as más viables para la modernización del control
electromecánico.
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.
Marco Teórico
Compresión
Inyección
5
6 CAPÍTULO 2. MARCO TEÓRICO
Extrusión
• Termoplásticos
• Elastómeros
• Rara vez con termoendurecibles
Soplado
Colado
Espumado
• Poliestireno
• Poliuretano (PUR)
Calandrado
• 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.
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
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).[? ]
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.
La unidad de inyección
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
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.
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
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):
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.
4. Los pernos expulsores, los cuales sacan la pieza moldeada de la cavidad. Funcionan
automáticamente al abrir el molde.[8]
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.[? ]
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.
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.[? ]
Son insolubles.
El tiempo total del ciclo puede ser calculado mediante la siguiente formula:
2.8.1. Introducción
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.
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.
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
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.
Servicio de alarmas.
EPICS.
OPC.
Data Set.
Modbus.
26 CAPÍTULO 2. MARCO TEÓRICO
VIs personalizados.
Servidores NI OPC
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
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:
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.
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. [? ]
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.[? ]
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.
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.
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.
Los interruptores de final de carrera usados en la MMI Flli Sandretto, son de la marca
Telemecanique OSIsense, modelo XCK-M1D15.
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.
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
PR = IVf (3.3)
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.
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.11. Diagrama a bloques para la interconexión del circuito de entradas de tipo
analógica.
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
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
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.
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
Para el caso en particular de la MMI se conectara con la lógica digital positiva como
se muestra en la figura 3.20.
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:
Termopares.
Electroválvulas.
Motor de carga.
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.
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
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.
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.
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
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.
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
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.
MAPA DE MEMORIA
[MB EDIGITALES]
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
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.
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.
1. Manual
2. Semi-automático
3. Automático
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.
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.
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
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.
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.
1. Inicio
2. Control de temperaturas
3. PID’s
4. Controles
5. Tiempos
6. Indicadores
7. Tendencias
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.
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
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.
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
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.
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.
inicio de ciclo, o también si se ha elegido control por botonera externa se deshabilitan todos
los controles de la interfaz gráfica.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
121
122 CONCLUSIONES
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
[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 ;
/∗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 ) ;
/∗###################################################################################∗/
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 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 ) ;
/∗####################################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) ;
}
/∗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 ) ;
/∗ 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 ( ) ;
}
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 ;
}
/∗###################################################################################∗/
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 ) ;
// 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 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#######################################∗/
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 ] , 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;
}
/∗ 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 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;
}
/∗##################################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;
}
/∗ 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 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;
}
/∗##################################ESCRITURA########################################∗/
void e s c r i t u r a ( void ) {
}
/∗###################################################################################∗/
/∗###################################################################################∗/
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 ;
}
/∗###################################################################################∗/