Anda di halaman 1dari 134

ÁREA ELECTROMECÁNICA INDUSTRIAL

TESIS
“PROTOTIPO DE PROBADOR TÉRMICO TEXTIL DE FLAMA
DIRECTA BASADO EN EL ESTÁNDAR ASTM D4108 Y
OPTIMIZACIÓN DE CIRCUITO DE CONTROL PARA EL
PROBADOR TÉRMICO TEXTIL BASADO EN EL ESTÁNDAR
ASTM D1518”

QUE PARA OBTENER EL TÍTULO DE INGENIERO EN:

MECATRÓNICA
P R E S E N T AN
DIEGO ALFREDO SOTO GUERRA
ALFREDO SUÁREZ MENDOZA

ASESOR EMPRESARIAL:
M. EN C. GILDARDO GODÍNEZ GARRIDO

ASESORES ACADÉMICOS:

M. EN C. JUAN MARCELO MIRANDA GÓMEZ

EMPRESA:

UNIVERSIDAD TECNOLÓGICA DE TULANCINGO

GENERACIÓN
2012 – 2017

SEPTIEMBRE 2017
LIBERACIÓN DE TESIS

Fecha: 4 de septiembre de 2017

Los que suscriben asesores y director de carrera del (os) alumno (s):

DIEGO ALFREDO SOTO GUERRA


ALFREDO SUÁREZ MENDOZA

De la carrera de:

INGENIERÍA EN MECATRÓNICA
En la realización de la Tesis con el proyecto denominado:

Prototipo de Probador Térmico Textil de flama directa basado en el estándar ASTM D4108 y
optimización de circuito de control para el Probador Térmico Textil basado en el estándar
ASTM D1518

En la empresa:

Universidad Tecnológica de Tulancingo

Manifestamos con base en la revisión de la Tesis y entrega de proyecto, nuestra

conformidad con el contenido y funcionamiento, por lo que, no existe inconveniente para

autorizar la impresión de la tesis y continuar con el proceso de recepción profesional.

Asesor Académico Asesor Empresarial

M. en C. Juan Marcelo Miranda Gómez M. en C. Gildardo Godínez Garrido


Nombre y firma Nombre y firma

Director de Carrera

Dr. Luis García Lechuga


Nombre y firma
AGRADECIMIENTOS Y DEDICATORIAS

Dedicado a mi familia y a mi futura esposa que estuvieron a lo largo del camino sin
importar cueles fueran las adversidades ofreciendo apoyo, aliento y solvencia para llegar
a la meta. Sin desaprovechar esta oportunidad quiero recordarles lo mucho que los amo y
admiro. Un agradecimiento especial al M. en C. Juan Marcelo Miranda Gómez que
siempre mostró paciencia, comprensión y profesionalismo a todos sus alumnos para
ofrecerles la oportunidad de tener una carrera profesional.
-Diego Alfredo Soto Guerra

Doy gracias a mi madre que siempre me ha estado apoyando moralmente con sus
consejos de sus experiencias y mi padre por ayudarme económicamente, también doy
gracias a novia por apoyarme en mis momentos más difíciles, a mi abuela le agradezco
por el apoyo económicamente, mi gato Arshi por acompañarme en la soledad y por ultimo
al maestro Marcelo por asesorarnos, apoyarnos y aconsejarnos en esta etapa de mi
carrera para ser mejor en la vida.
-Alfredo Suárez Mendoza

i
RESUMEN
Bajo los estándares ASTM D1518 Y ASTM D4108 se diseñaron dos prototipos de
dispositivos encargados de cumplir los métodos de prueba a textiles para determinar los
coeficientes de transmisión térmica en la acción combinada de conducción, convección y
radiación, además de la clasificación de materiales textiles respecto a su resistencia y
aislamiento térmico ante una exposición de energía convectiva durante un breve periodo
de tiempo. Cada dispositivo cuenta con un circuito de control y una interface gráfica
mediante un sistema de comunicación SPI y USB para el constante monitoreo de
temperatura durante pruebas simuladas en Proteus, reflejadas en la interface gráfica
desarrollada en Visual Studio, organizando y guardando la información necesaria para
después realizar un reporte con los requisitos de los estándares de forma automática. Se
diseñaron tarjetas de circuito impreso para cada circuito de control además de una
propuesta mecánica de los dispositivos creada en 3D utilizando Autodesk Inventor.

ii
ABSTRACT
Under ASTM D1518 and ASTM D4108 standards, two prototype devices were designed to
meet textile testing methods to determine the coefficients of thermal transmission in the
combined action of conduction, convection, and radiation, in addition to the classification of
textile materials considering its resistance and thermal insulation against a convective
energy exposure for a short period of time. Each device has a control circuit and a graphic
interface through an SPI and USB communication system for constant temperature
monitoring during Proteus simulation tests, which can be viewed in the graphic interface
developed in Visual Studio, organizing and storing the necessary information to make
automatically a report with the requirements of the standards. Printed circuit boards were
designed for each control circuit in addition to a mechanical proposal of the devices
created in 3D using Autodesk Inventor.

iii
CONTENIDO
I. INTRODUCCIÓN ........................................................................................................ 9
1.1 Planteamiento del problema .............................................................................. 10
1.2 Justificación ....................................................................................................... 11
1.3 Objetivo general ................................................................................................ 12
1.4 Objetivos específicos ......................................................................................... 12
II. MARCO TEÓRICO ................................................................................................... 13
2.1 Estándar ASTM D1518-85 ................................................................................. 13
2.2 Estándar ASTM D4108-87 ................................................................................. 15
2.3 Características del microcontrolador PIC18F4550 ............................................. 15
2.3.1 Principales características .......................................................................... 16
2.3.2 Modulo convertidor analógica digital (ADC) ................................................ 17
2.3.3 Módulo Serial Peripheral Interface (SPI) ..................................................... 17
2.3.4 Módulo Bus de Serie Universal (USB) ........................................................ 18
2.3.5 Modulación de ancho de pulso (PWM) ....................................................... 19
2.4 Descripción del calorímetro de barra de cobre (Copper Slug Calorimeter Sensor)
20
III. METODOLOGÍA ................................................................................................... 21
3.1 Dispositivo para método de Rendimiento de Protección Térmica ...................... 21
3.2 Dispositivo para método de Rendimiento de Protección Radiante ..................... 21
3.3 Desarrollo de dispositivo del estándar ASTM D1518 ......................................... 22
3.3.1 Diseño de circuito en Proteus ..................................................................... 22
3.3.1.1 Función de interface del circuito .............................................................. 22
3.3.1.2 Descripción del circuito en Proteus ......................................................... 25
3.3.1.2.1 Microcontrolador PIC18F4550 ........................................................... 26
3.3.1.2.2 Test Plate .......................................................................................... 26
3.3.1.2.3 Guard Ring ........................................................................................ 27
3.3.1.2.4 Bottom Plate ...................................................................................... 28
3.3.1.2.5 Interfaz de control para el funcionamiento del circuito ....................... 28
3.3.1.2.6 Sensor para tapa ............................................................................... 29
3.3.1.2.7 Termopar para la cámara (Chamber)................................................. 30
3.3.1.2.8 Conexión Universal Serial Bus (USB) ................................................ 30
3.3.1.2.9 Sensor de humedad .......................................................................... 31
3.3.1.2.10 Fuente de alimentación de 19 V....................................................... 31

iv
3.3.1.2.11 Control de ventiladores a 12 V ......................................................... 32
3.3.2 Pasos a seguir para la función del circuito en simulación de Proteus ......... 32
3.3.3 Diagrama de flujo para el proceso del circuito de control ............................ 33
3.3.4 Diseño del Printed Circuit Board (PCB) en Proteus .................................... 34
3.3.5 Diseño de PCB en 3D en Proteus............................................................... 35
3.3.6 Prototipo de PCB en 3D en Autodesk Inventor ........................................... 36
3.3.7 PCB montada en caja para circuito del Probador Térmico Textil (PTT) ...... 37
3.3.8 Prototipo completo del Probador Térmico Textil en Autodesk Inventor ....... 38
3.3.9 Interface en Visual Studio para el Probador Térmico Textil (Estándar ASTM
D1518) ........................................................................................................ 40
3.3.9.1 Función de la interface ............................................................................ 40
3.3.9.2 Campos para llenar por el responsable de la prueba .............................. 42
3.3.9.3 Resultados de fórmulas solicitadas por el Estándar ASTM ..................... 43
3.3.9.4 Muestras cada 3 minutos de los termopares, los termistores y el sensor de
humedad ............................................................................................................... 45
3.3.9.5 Muestras en tiempo real de los termopares, los termistores y el sensor de
humedad ............................................................................................................... 47
3.3.9.6 Botón para iniciar la prueba en la interface, botón para realizar el Reporte
requerido por el Estándar ASTM e indicador de la conexión USB ......................... 47
3.3.9.7 Propuesta de Reporte requerido por estándar ASTM D1518 .................. 48
3.3.9.8 Instrucciones para utilizar la interface del Probador Térmico Textil ......... 50
3.4 Desarrollo de dispositivo del estándar ASTM D4108-87 .................................... 50
3.4.1 Diseño de circuito en Proteus ..................................................................... 50
3.4.1.1 Función de la interface del circuito .......................................................... 50
3.4.1.2 Descripción del circuito de Proteus ......................................................... 53
3.4.1.2.1 Microcontrolador PIC18F4550 ........................................................... 54
3.4.1.2.2 Test Plate .......................................................................................... 54
3.4.1.2.3 Interfaz de control del circuito ............................................................ 55
3.4.1.2.4 Sensor para tapa ............................................................................... 56
3.4.1.2.5 USB ................................................................................................... 56
3.4.1.2.6 Control de gas ................................................................................... 57
3.4.2 Diseño del Printed Circuit Board (PCB) en Proteus .................................... 58
3.4.3 Diseño de PCB en 3D en Proteus............................................................... 59
3.4.4 Diseño de PCB en 3D en Autodesk Inventor .............................................. 60

v
3.4.5 Prototipo completo de dispositivo para pruebas de flama directa en Autodesk
Inventor (estándar ASTM D4108) ............................................................................. 61
3.4.6 Interface en Visual Studio para pruebas con flama directa (Estándar ASTM
D4108) 62
3.4.6.1 Campos para llenar por el responsable de la prueba .............................. 64
3.4.6.2 Muestras en tiempo real del termopar ..................................................... 65
3.4.6.3 Muestras cada segundo del termopar ..................................................... 66
3.4.6.4 Resultados de las fórmulas del TPP de flama directa ............................. 66
3.4.6.5 Botón para iniciar la prueba en la interface, botón para realizar el Reporte
requerido por el Estándar ASTM D4108 e indicador de la conexión USB.............. 67
3.4.6.6 Propuesta de Reporte requerido por estándar ASTM D4108 .................. 67
IV. RESULTADOS ...................................................................................................... 69
CONCLUSIONES ............................................................................................................ 70
REFERENCIAS ............................................................................................................... 71
ANEXOS Y APÉNDICES ................................................................................................. 72
Lista de materiales del circuito electrónico del PTT (Estándar D1518) ......................... 72
Lista de materiales del circuito electrónico (Estándar D4108) ...................................... 74
Programas utilizados para la elaboración de los proyectos .......................................... 75
Pasos a seguir de la programación en MikroC ............................................................. 75
Programación en MikroC PRO for PIC para el microcontrolador PIC18F4550 (Estándar
ASTM D1518) .............................................................................................................. 76
Programación en MikroC PRO for PIC para el microcontrolador PIC18F4550 (Estándar
ASTM D4108) .............................................................................................................. 95
Programación en Visual Studio para la Interface del Probador Térmico Textil (Estándar
ASTM D1518) ............................................................................................................ 114
Programación en Visual Studio para el Estándar ASTM D4108 ................................. 125

vi
ÍNDICE DE FIGURAS
Figura 1- Entradas y salidas del PIC18F4550 con sus características. ........................... 16
Figura 2- Comunicación SPI entre esclavo y maestro. .................................................... 18
Figura 3- Comunicación USB entre microcontrolador y PC. ............................................ 18
Figura 4- Ejemplo de un circuito en Proteus simulando un PWM. ................................... 19
Figura 5- Calorímetro de barra de cobre. ........................................................................ 20
Figura 6- Prototipo del circuito para control del PTT........................................................ 24
Figura 7- Microcontrolador PIC184550 para control del PTT........................................... 26
Figura 8- Test Plate para control del PTT. ....................................................................... 27
Figura 9- Guard Ring para el control del PTT. ................................................................. 27
Figura 10- Bottom Plate para control del PTT. ................................................................ 28
Figura 11- Interfaz del control para el control del PTT. .................................................... 29
Figura 12- Interruptor de Tapa para el control del PTT.................................................... 29
Figura 13- Termopar de tapa para el control del PTT. ..................................................... 30
Figura 14- USB para el control del PTT........................................................................... 30
Figura 15- Sensor de humedad para el control del PTT. ................................................. 31
Figura 16- Alimentación de voltaje de 19 Volts para el control del PTT. .......................... 31
Figura 17- Ventiladores de 12 Volts para el control del PTT............................................ 32
Figura 18- Diseño en PCB en Proteus para el control del PTT. ....................................... 34
Figura 19- Diseño del circuito completo en Proteus para el control del PTT. ................... 35
Figura 20- Circuito en 3D Autodesk Inventor. .................................................................. 36
Figura 21- Circuito en 3D implementada en la caja en Autodesk Inventor....................... 37
Figura 22- Diseño y prototipo del PTT (Estándar ASTM D1518). .................................... 39
Figura 23- Interface en Visual Studio del Probador Térmico Textil (Estándar ASTM
D1518). ............................................................................................................................ 41
Figura 24- Campos para llenar para la prueba del estándar ASTM D1518. .................... 42
Figura 25- Resultados de fórmulas. ................................................................................ 45
Figura 26- Resultados de muestras en intervalos de tiempos. ........................................ 46
Figura 27- Muestras en tiempo real................................................................................. 47
Figura 28- Botones e indicador de conexión USB. .......................................................... 48
Figura 29- Reporte con requisitos del estándar ASTM D1518. ........................................ 49
Figura 30- Diseño de circuito electrónico para el dispositivo del estándar ASTM D4108. 52
Figura 31- Microcontrolador PIC18F4550 para control del dispositivo para pruebas con
flama directa. ................................................................................................................... 54

vii
Figura 32- Diseño en Proteus de Test Plate. ................................................................... 54
Figura 33- Diseño en Proteus de la interfaz de control. ................................................... 55
Figura 34- Diseño de Proteus Swith Tapa. ...................................................................... 56
Figura 35- USB para el control del PTT........................................................................... 56
Figura 36- Sistema de control de gas diseñado en Proteus para el PTT de flama directa.
........................................................................................................................................ 57
Figura 37- Diseño de Printed Circuit Board (PCB) en Proteus. ....................................... 58
Figura 38-Vista de la PCB en 3D diseñada en Proteus. .................................................. 59
Figura 39- PCB en 3D en Autodesk Inventor. ................................................................. 60
Figura 40- Diseño y prototipo de dispositivo para pruebas de flama directa (Estándar
ASTM D4108). ................................................................................................................. 61
Figura 41- Interface en Visual Studio para pruebas con flama directa (Estándar ASTM
D4108). ............................................................................................................................ 63
Figura 42- Campos para llenar por el responsable de la prueba. .................................... 65
Figura 43- Muestreos en tiempo real. .............................................................................. 65
Figura 44- Resultados de muestras tomadas cada segundo. .......................................... 66
Figura 45- Resultados de fórmulas del TPP rating. ......................................................... 66
Figura 46- Botones e indicador de conexión USB. .......................................................... 67
Figura 47- Reporte con requisitos del estándar D4108. .................................................. 68

viii
I. INTRODUCCIÓN
La industria en México es sumamente competitiva en todos los aspectos, pero
principalmente en sus constantes pasos acelerados para encontrarse al mismo nivel que
sus competidores internacionales, por lo que no importa si son grandes, medianas o
pequeñas las industrias nacionales, el tamaño no les impide entrar en un entorno
competitivo donde cada año la innovación de sus procesos viene siendo el principal
atractivo para generar nuevas maneras de competir. Un excelente ejemplo es el caso de
Textiles Técnicos S.A de C.V., empresa fabricante, desde 1960, de textiles “a partir de
fibras técnicas tales como: Fibra de vidrio, Aramidas, PANO, Fibra Cerámica Biosoluble,
Amianto tipo Crisotilo y otras fibras avanzadas para aplicaciones tales como elementos de
fricción (discos de embrague, balatas tejidas), empaquetaduras industriales, aislamientos
térmicos y eléctricos y ropa de seguridad para protección contra altas temperaturas”. Con
el motivo de mejorar sus procesos calidad y de brindar información de calidad a sus
clientes se estipuló como base el estándar internacional ASTM D1518-85 que indica el
método de prueba para determinar la transmisión térmica de materiales textiles. El
estándar requiere de un dispositivo encargado de realizar la prueba cumpliendo requisitos
específicos definidos por el estándar.

9
1.1 Planteamiento del problema
La empresa Textiles Técnicos S.A de C.V. requiere avalar sus productos textiles con el
estándar ASTM D1518 y el estándar ASTM D4108 para cubrir las necesidades de sus
diversos clientes. Para poder lograr su objetivo es necesario un dispositivo, por cada
estándar, que se adapte a sus respectivos puntos de referencia especificados.
Previamente se hizo la propuesta de un dispositivo, como prototipo, llamado Probador
Térmico Textil (PTT), el cual cubría parcialmente los requerimientos del estándar y
contaba con algunas fallas en el tiempo de respuesta de la información procesada por el
microcontrolador en el circuito electrónico, por lo que quedó inconcluso y abierto a
mejoras.

10
1.2 Justificación
En el primer prototipo del Probador Térmico Textil (PTT) se encontraron fallas en el
circuito de control diseñado con el programa Proteus, como el desbordamiento de
memoria del PIC16F887, también se encontró otro problema en la simulación del
prototipo, ya que tardaba mucho en responder o no ejecutaba el programa, se observó
que el PIC ocupaba muchos pines innecesarios que pueden reducir en menos espacio,
además de que el PIC16F887 no tiene un módulo para la comunicación USB y se observó
que el primer prototipo no cumplía con todos los requisitos del estándar.
Con la finalidad de cubrir la necesidad de la empresa se hicieron mejoras al primer
prototipo del PTT, las cuales fueron el reemplazo del microcontrolador PIC16F887 por el
PIC18F4550, cumpliendo éste último con el módulo de comunicación USB para
desarrollar una interfaz gráfica y suficiente memoria para no saturarse, también se
hicieron reducción de pines como teclado matricial y la eliminación de componentes como
el multiplexor, entre otros componentes; se volvió a diseñar el hardware y el software del
PTT, además se añadió el reporte requerido por el estándar para justificar las pruebas
realizadas a los textiles a través de una interfaz en Visual Studio para una interacción más
amigable con el usuario que realice la prueba y un arreglo al circuito electrónico para una
respuesta más rápida de los datos obtenidos para el reporte solicitado por el estándar
ASTM D1518; por último, se creó un ejecutable en Visual Studio para que el usuario lo
instale y opere.
El segundo prototipo se diseñó cumpliendo el estándar ASTM D4108-67 y de igual
manera que en el PTT se diseñó un circuito electrónico para el procesamiento de la
temperatura y un interfaz de comunicación USB para la transferencia y reporte de datos.

11
1.3 Objetivo general
Diseñar un prototipo para pruebas a textiles basado en el estándar ASTM D4108 y
optimizar el circuito de control previamente diseñado para el Probador Térmico Textil
correspondiente al estándar ASTM D1518.

1.4 Objetivos específicos


 Analizar y estudiar los puntos de referencia para los diseños de los dispositivos y
metodología de prueba del estándar ASTM D1518 y del estándar ASTM D4108.
 Programar el microcontrolador PIC18F4550, usando MikroC PRO for PIC, para el
control de los componentes electrónicos y las interfaces de los dispositivos de
cada estándar.
 Desarrollar una interfaz de comunicación del microcontrolador PIC18F4550 a la
computadora personal vía cable USB para la transferencia de datos a través de
una interfaz gráfica.
 Desarrollar la comunicación SPI entre microcontrolador PIC18F4550 y los
termopares tipo K a través de los circuitos de acondicionamiento MAX6675.
 Realizar pruebas de simulación entre los sistemas de comunicación SPI y USB
con el programa Proteus.
 Diseñar las tarjetas de circuito impreso o PCB de los circuitos de control de los
estándares ASTM D1518 y ASTM D4108.
 Realizar la lista de materiales de los prototipos PTT y PTT de flama directa.

12
II. MARCO TEÓRICO
En este apartado se describen brevemente los estándares ASTM D1518-85 y ASTM
D4108-87 y las variables utilizadas en los métodos de prueba, se mencionan las
características del microcontrolador PIC18F4550 empleado en el diseño del circuito del
sistema de control y se aborda el sensor de calorímetro de barra de cobre (Copper Slug
Calorimeter Sensor) utilizado para la medición de la temperatura de exposición.

2.1 Estándar ASTM D1518-85


El estándar ASTM D1518-85 es un método de prueba que cubre la determinación de
coeficientes de transmisión térmica debido a la acción combinada de la conducción,
convección y radiación para especímenes secos de tejidos textiles, guatas y otros
materiales. Mide la tasa de tiempo de la transferencia de calor de una placa plana
horizontal, tibia, seca y de constante temperatura a través de una capa de material de
prueba a un ambiente fresco y sereno. Para fines prácticos, este método de prueba está
limitado a determinaciones de muestras de tejidos, conjuntos de tela en capas y guatas
𝑊
que tienen transmitancias térmicas dentro de un intervalo de 0.7 a 14 𝑚2 ∗𝐾
y espesores

no excedentes a 50 mm.
Este método determina tres casos diferentes de transmisión térmica, a continuación, se
describen:
 𝑈1 = Combinación de transmisión térmica de la muestra de prueba y del aire.
 𝑈𝑏𝑝 = Transmisión térmica de la placa sin la tela encima (“placa desnuda”). Esta
propiedad refleja la constante del instrumento y se utiliza para estandarizar la
placa, y, en conjunción con 𝑈1 , se utiliza en el cálculo de 𝑈2 .
 𝑈2 = Transmisión térmica únicamente del tejido. Este valor corresponde al valor
𝑊
resultante de C ( ) definido y utilizado por ASTM y ASHRAE. En el cálculo de
𝑚2 ∗𝐾

este valor se hace la suposición de que las capas límite de la placa desnuda y las
capas límite de la tela son iguales. Los resultados experimentales indican que los
valores de 𝑈2 son válidos cuando se hace la prueba dentro de los límites
especificados en la Sección 1 del estándar.
El estándar requiere que se elabore un reporte al finalizar la prueba de los textiles en el
PTT para justificar y evidenciar los resultados obtenidos que validan la prueba para los
clientes. El reporte solamente puede ser llenado al finalizar la prueba y haber resuelto las

13
fórmulas requeridas para los diferentes valores esperados por el estándar, a continuación,
se indican los requisitos del reporte:
 Indicar que los especímenes fueron probados como lo menciona el método de
prueba ASTM D 1518. Describir los materiales o productos a los que se les realiza
la prueba y el método de prueba utilizado.
 Temperatura media de la prueba, 𝑇𝑚
 Coeficiente promedio de transferencia de calor de la placa desnuda, 𝑈𝑏𝑝
 Coeficiente promedio de transferencia de calor de la placa y la tela de forma
combinada, 𝑈1
 Conductancia térmica del tejido, 𝑈2
 Peso de la tela
 Espesor de la tela
 Densidad aparente de la tela, 𝐵
 Conductividad térmica de la tela, 𝑘
 Resistencia térmica de la tela, 𝑅
 Resistividad térmica de la tela, 𝑅′
 Temperatura utilizada en la prueba
 Humedad relativa registrada en la prueba

14
2.2 Estándar ASTM D4108-87
El estándar ASTM D4108-87 es un método de ensayo que clasifica a los materiales
textiles para la resistencia térmica y el aislamiento cuando se expone a un nivel de
energía convectiva de aproximadamente 2.0 cal/cm2 (8.3 W/cm2) durante un breve
período de tiempo, es aplicable a tejidos, tejidos de punto y telas no tejidas, destinados a
ser utilizados como prendas de vestir, para protegerse contra llamas abiertas en
exposición de tiempo corto. Este método no está diseñado para evaluar materiales
expuestos a ninguna otra exposición térmica, como energía radiante o salpicaduras de
metal fundido, es una herramienta de investigación y desarrollo útil, también clasifica los
materiales textiles para la ropa de protección contra las exposiciones accidentales a las
llamas abiertas, por sus propiedades de aislamiento térmico y su reacción contra la
exposición a la prueba.
Este estándar debe usarse para medir y describir las propiedades de los materiales,
productos o ensambles en respuesta al calor y llama bajo condiciones controladas en
laboratorio y no debe usarse para describir o evaluar el riesgo de incendio o riesgo de
incendio en materiales, productos o ensamblajes bajo condiciones reales. Sin embargo,
los resultados de esta prueba pueden utilizarse como elementos de una evaluación del
riesgo de incendio que tenga en cuenta todos los factores pertinentes para una evaluación
del riesgo de incendio de un uso final particular.
La clasificación Terminal Protective Performance o TPP determinada por este método, se
refiere al rendimiento final real sólo en la medida en que la exposición al uso final es
idéntica a la exposición utilizada en el método que es energía convectiva a
aproximadamente 2.0 cal/cm2s (8.3 W/cm2).
A partir de las especificaciones del estándar ASTM, se seleccionó el microcontrolador
PIC18F4550, para el mejoramiento del circuito, ya que es muy accesible con los módulos
de la programación y tiene mejor capacidad de memoria.

2.3 Características del microcontrolador PIC18F4550


El microcontrolador PIC18F4550 es un circuito integrado que en su interior contiene una
unidad central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de
entrada y salida y periféricos interconectados entre sí. Éste es uno de los más populares
cuando se trata de conectividad USB, ya que cuenta con más capacidades como memoria
RAM, EEPROM y FLASH, además es ideal para pequeñas potencias (nanowatts) y
aplicaciones de conectividad que se benefician de la disponibilidad de los tres puertos

15
seriales: FS-USB (12 Mbit/s), I²C™ y SPI™ (hasta 10 Mbit/s). Su gran capacidad de
memoria RAM para almacenamiento temporal y su memoria FLASH de programa
mejoradas hacen que sea ideal para el control integrado y aplicaciones de monitoreo que
requieren conexión periódica con un ordenador personal a través de USB para la carga,
descarga de datos y actualizaciones de firmware.

2.3.1 Principales características


 Puerto USB V2.0 que puede trabajar en modo Low Speed (1.5 Mb/s) y Full Speed
(12 Mb/s).
 RAM 1-kbyte accesible por USB.
 Reloj externo hasta de 48 MHz.
 Oscilador interno de 31 kHz–8 MHz configurable por software.
 Pines con salida de alta corriente de hasta 25 mA.
 Cuatro Timers de los cuales hasta 2 pueden ser utilizados como módulos de
captura/comparación/PWM.
 Puerto USART con soporte para comunicaciones MSSP, SPI e I²C.
 Hasta 13 canales ADC de 10 bits.
 Memoria FLASH con 100,000 ciclos de lecturas escritura típicos.
 Memoria EEPROM con 1, 000,000 ciclos de lectura escritura típicos y retención de
datos de hasta 40 años.
 Programación con código de protección.
 Programación ICSP vía dos pines.

Figura 1- Entradas y salidas del PIC18F4550 con sus características.

16
2.3.2 Modulo convertidor analógica digital (ADC)
El convertidor analógico digital es capaz de convertir una señal de voltaje variable en
valores digitales a una resolución de 8 o 10 bits. Además, se puede llegar hasta a 50
kilomuestras por segundo (ksps), lo que es ideal para proyectos de adquisición de datos.
A continuación, se muestra las características y se describen los registros involucrados
con el convertidor ADC.
 Resolución programable por software en modo de 8 y 10 bits.
 13 canales de entradas multiplexadas.
 Rango del voltaje de entrada para el ADC.
 Referencia de voltaje interna o externa.
 Modo de conversión ADC (continua o individual).
 Inicio de conversión ADC por Auto-Disparo en fuentes de Interrupción.
 Interrupción ADC al completar la conversión.

Por lo tanto, el módulo ADC se aplicó en los tres termistores y en el teclado matricial.
Siendo el teclado matricial un componente digital se hizo un arreglo para tener una señal
analógica.

2.3.3 Módulo Serial Peripheral Interface (SPI)


El Bus SPI (Serial Peripheral Interface) es un estándar de comunicaciones, usado
principalmente para la transferencia de información entre circuitos integrados en equipos
electrónicos. El bus SPI es un estándar para controlar casi cualquier dispositivo
electrónico digital que acepte un flujo de bits serie regulado por un reloj (comunicación
sincrónica). Incluye una línea de reloj, dato entrante, dato saliente y un pin de circuito
integrado, que conecta o desconecta la operación del dispositivo con el que se desee
comunicar.
El SPI es un protocolo síncrono que trabaja en modo full dúplex, es decir, para recibir y
transmitir información, permitiendo que dos dispositivos pueden comunicarse entre sí al
mismo tiempo utilizando canales diferentes o líneas diferentes en el mismo cable. Al ser
un protocolo síncrono el sistema cuenta con una línea adicional a la de datos encarga de
llevar el proceso de sincronismo. Este protocolo está basado en la arquitectura maestro-
esclavo, en el que el dispositivo maestro tiene el control de bus, el cual pone los datos y
genera la señal de reloj que se enviará al dispositivo esclavo en particular. Los datos son
enviados de forma serial mediante las tres líneas que conforman al bus:

17
MOSI (Master Output Slave Input), MISO (Master Input Slave Output) y SCLK (Clock),
como lo muestra la Figura 2.

Figura 2- Comunicación SPI entre esclavo y maestro.

2.3.4 Módulo Bus de Serie Universal (USB)


El USB (Bus de Serie Universal), se basa en una arquitectura de tipo serial. Sin embargo,
es una interfaz de entrada/salida mucho más rápida que los seriales estándar. La
arquitectura serial se utilizó para este tipo de puerto por dos razones principales:
 La arquitectura serial le brinda al usuario una velocidad de reloj mucho más alta
que la interfaz paralela debido a que este tipo de interfaz no admite frecuencias
demasiado altas (en la arquitectura de alta velocidad, los bits que circulan por
cada hilo llegan con retraso y esto produce errores).
 Los cables seriales resultan mucho más económicos que los cables paralelos. En
este caso se utilizó para dar comunicación del PIC18F4550 a la PC, donde se
visualizará los datos en el ordenador y así el usuario pueda imprimir la información
adquirida.

Figura 3- Comunicación USB entre microcontrolador y PC.

18
2.3.5 Modulación de ancho de pulso (PWM)
La modulación de ancho de pulso logra producir el efecto de una señal analógica sobre
una carga, a partir de la variación de la frecuencia y ciclo de trabajo de una señal digital.
El ciclo de trabajo describe la cantidad de tiempo que la señal está en un estado lógico
alto, como un porcentaje del tiempo total que ésta toma para completar un ciclo completo.
La frecuencia determina qué tan rápido se completa un ciclo (por ejemplo: 1000 Hz
corresponde a 1000 ciclos en un segundo), y por consiguiente que tan rápido se cambia
entre los estados lógicos alto y bajo. Al cambiar una señal del estado alto a bajo a una
tasa lo suficientemente rápida y con un cierto ciclo de trabajo, la salida parecerá
comportarse como una señal analógica constante cuando ésta está siendo aplicada a
algún dispositivo. Las señales PWM son utilizadas comúnmente en el control de
aplicaciones. Su uso principal es el control de motores de corriente continua, aunque
también pueden ser utilizadas para controlar válvulas, bombas, sistemas hidráulicos, y
algunos otros dispositivos mecánicos. La frecuencia a la cual la señal de PWM se
generará, dependerá de la aplicación y del tiempo de respuesta del sistema que está
siendo controlado.
 Calentar elementos o sistemas con tiempos de respuesta lentos: 10-100 Hz o
superior.
 Motores eléctricos de corriente continua: 5-10 kHz o superior.
 Fuentes de poder o amplificadores de audio: 20-200 kHz o superior.

Figura 4- Ejemplo de un circuito en Proteus simulando un PWM.

19
Un ensamble que destaca al Probador Térmico Textil de flama directa es el calorímetro
que utiliza para obtener sus mediciones de resistencia térmica y aislamiento de textiles. A
continuación, se muestra dicho ensamble.

2.4 Descripción del calorímetro de barra de cobre (Copper Slug Calorimeter


Sensor)
El sensor calorímetro de barra de cobre mide el aumento de la temperatura térmica que
determina las tasas de transferencia de calor para aplicaciones en flujo de calor radiante y
convectivo. El calorímetro de barra de cobre está construido y probado con
especificaciones precisas y rigurosas basadas en las normas ASTM e ISO. El calorímetro
es calibrado por el método de ASTM E457 e incluye una placa de peso y una extensión
de cable para termopar removible. La exposición es controlada vía un obturador de tiempo
preciso utilizando condiciones ambiente de laboratorio estándar.

Figura 5- Calorímetro de barra de cobre.

20
III. METODOLOGÍA
Existen dispositivos para determinar el Rendimiento de Protección Térmica (Thermal
Protective Performance) y el Rendimiento de Protección Radiante (Radiant Protective
Performance) de textiles, siendo dispositivos costosos y que no cubren específicamente
los estándares de ASTM D1518 Y ASTM D4108. Por tal motivo, es la necesidad de llevar
acabo el desarrollo de dispositivos que si cumplan con los estándares. A continuación, se
mencionan las principales características de los dispositivos comerciales.

3.1 Dispositivo para método de Rendimiento de Protección Térmica


Consiste en dos quemadores de propano, una lámpara de cuarzo infrarroja de 9 bombillas
para la fuente de energía y para el control utiliza sistema automatizado que cuenta con un
carro de muestra accionado neumáticamente, un obturador refrigerado por agua y un
controlador de flujo de masa. El dispositivo se conecta a una computadora instalada con
un sistema de control y adquisición de datos. Este dispositivo se asocia con los siguientes
métodos de prueba:
 ISO 17492
 ASTM F2700
 ASTM F2703
 CAN/CGSB 155.20
 NFPA 1971, 1977 Y 2112

3.2 Dispositivo para método de Rendimiento de Protección Radiante


Consiste de una lámpara de cuarzo infrarroja de 5 bombillas, un obturador refrigerado por
agua activado neumáticamente, dos entradas de termopares y un soporte para
refrigeración de sensor. El dispositivo se conecta a una computadora instalada con un
sistema de control y adquisición de datos. Este dispositivo se asocia con los siguientes
métodos de prueba:
 ASTM F1939
 ASTM F2702
 NFPA 1971
 NFPA 2112

21
Teniendo en cuenta que los dispositivos previamente mencionados no cubren las
necesidades de Textiles Técnicos S.A de C.V. se procedió a diseñar los dispositivos que a
continuación se describen acompañados del desarrollo que involucró cada uno.

3.3 Desarrollo de dispositivo del estándar ASTM D1518


3.3.1 Diseño de circuito en Proteus
Para el control y monitoreo del Probador Térmico Textil se diseñó un circuito electrónico
en el programa de Proteus, el cual es una aplicación para la ejecución de proyectos de
construcción de equipos electrónicos en todas sus etapas: diseño del esquema
electrónico, programación del software, diseño de la placa de circuito impreso, simulación
de todo el conjunto, depuración de errores, documentación y construcción. El desarrollo
del circuito se realizó alrededor del microcontrolador PIC18F4550 ya que es programable
y contiene módulos integrados, los cuales facilitan su utilización mediante el uso de
librerías en su programación, ahorrando de esta forma pines del microcontrolador y
obteniendo mejores resultados de rendimiento. Una de sus grandes ventajas que tiene
este microcontrolador es su módulo para USB, el cual, por medio de la comunicación HID
se comunica con una computadora que contenga la Interface de Visual Studio para
complementar los requisitos del estándar ASTM.

3.3.1.1 Función de interface del circuito


El circuito completo se puede apreciar en la Figura 6, lo cual ayuda a apreciar el conjunto
de componentes electrónicos. Para un mejor entendimiento se divide en 11 secciones el
circuito y, de esta manera, después poder hacer una explicación de cada una. A
continuación, las secciones:
1. PIC18F4550
2. Test Plate
3. Guard Ring
4. Botton Plate
5. Interfaz de control
6. Switch Tapa
7. Termopar Tapa
8. USB
9. Humedad
10. Alimentación 19V

22
11. Control ventiladores 12 V

23
Figura 6- Prototipo del circuito para control del PTT.

24
3.3.1.2 Descripción del circuito en Proteus
En el diseño del PTT es necesario entender la configuración de los componentes
electrónicos para lograr un correcto funcionamiento de la simulación en Proteus. Para
poder recibir datos de los termopares de manera más eficiente se utilizó un circuito
integrado (CI) MAX6675, el cual amplifica la señal analógica obtenida del termopar y la
cambia a una señal digital para que el microcontrolador pueda hacer lecturas más
precisas. En el caso de los termistores la señal recibida por el microcontrolador es
analógica y puede ser procesada conectándolos de forma directa sin ningún amplificador.
El teclado matricial funciona de una forma poco usada ya que comúnmente se utiliza de
forma digital pero utiliza múltiples pines del microcontrolador por lo que se optó por
utilizarlo de forma analógica para solo utilizar un pin del microcontrolador. Las lecturas del
microcontrolador provenientes del teclado son registradas midiendo la cantidad de
resistencia que presenta cada botón al presionarlo y esto se logra dando un voltaje
constante al teclado y haciendo una sumatoria de resistencias al presionar algún botón.
La pantalla LCD es conectada de forma digital al microcontrolador forzosamente para su
funcionamiento y controlada por librerías activadas en la programación del
microcontrolador. Los diodos LED son conectados al microcontrolador directamente y
controlados digitalmente por programación. El interruptor de la tapa está conectado
directamente al microcontrolador cerrando o no el circuito, el cual le envía una señal que
indica si está abierta o cerrada la tapa. La conexión USB es conectada directamente al
microcontrolador funcionando digitalmente y controlada por medio de la comunicación HID
junto con librerías de programación. El sensor de humedad funciona analógicamente y se
conecta directamente al microcontrolador. Para la alimentación de corriente eléctrica y
voltaje se propone un voltaje de 19 V para después convertirlo a través de dos tipos de
reguladores de voltajes, uno es el circuito integrado (CI) 7812, el cual regula el voltaje a
12 V y alimentan los ventiladores, el otro regulador de voltaje es el circuito integrado (CI)
7805, el cual regula el voltaje a 5 V para alimentar el microcontrolador y otros
componentes. Por último, los ventiladores son controlados por el microcontrolador y
alimentados de forma externa.

25
3.3.1.2.1 Microcontrolador PIC18F4550
El microcontrolador, siendo un CI programable, se encarga de todo el control y monitoreo
de los componentes electrónicos del dispositivo PTT.

Figura 7- Microcontrolador PIC184550 para control del PTT.

Las placas están compuestas por un Test Plate, Guard Ring y de un Bottom Plate, cada
una debe de mantener la temperatura constante de 33 a 36 °C (91.4 a 98.8 °F) de forma
eléctrica para representar la temperatura de la piel humana.

3.3.1.2.2 Test Plate


La placa de prueba ó test plate está conformado por 2 termopares, conectados a un CI
MAX6675, y un termistor. Su funcionamiento es tomar lectura de las temperaturas de
cada sensor y mostrarlas en la computadora mediante de un programa ejecutable en
Visual Studio o mostrarlo en la pantalla LCD.

26
Figura 8- Test Plate para control del PTT.

3.3.1.2.3 Guard Ring


El anillo de guarda o guard ring está conformado por 2 termopares, conectados a un CI
MAX6675 y un termistor, su funcionamiento es tomar sus lecturas analógicas de los
sensores y mostrarlas en el programa Visual Studio o la pantalla LCD.

Figura 9- Guard Ring para el control del PTT.

27
3.3.1.2.4 Bottom Plate
La placa inferior o bottom plate está conformado por 2 termopares, conectados a un CI
MAX6675 y un termistor, tiene la misma función que el anillo de guarda y placa de prueba,
que es tomar las lecturas de las temperaturas y las visualiza en Visual Studio o la pantalla
LCD.

Figura 10- Bottom Plate para control del PTT.

3.3.1.2.5 Interfaz de control para el funcionamiento del circuito


La interface de control del circuito electrónico está constituida por una pantalla LCD de
16X2 caracteres, tres diodos LED y un teclado matricial. Su función principal es el control
de las lecturas de los termistores y termopares, al igual que sirve para mostrar los
resultados de las fórmulas requeridas por el reporte del estándar ASTM.
La pantalla LCD muestra un menú con opciones para ser seleccionados con el teclado
matricial y, de esta manera, iniciar la prueba o mostrar resultados de las temperaturas de
los termistores o termopares durante el trascurso de la prueba o al final mostrar los
resultados de las fórmulas. Los diodos LED son indicadores del proceso de la prueba para
saber en qué proceso se encuentra. El primer diodo LED indica cuándo se está
ejecutando la prueba, el segundo muestra cuándo se está preparando la prueba y el
tercero muestra cuándo está detenida la prueba por el probable motivo de que se
encuentre abierta la tapa.

28
Figura 11- Interfaz del control para el control del PTT.

3.3.1.2.6 Sensor para tapa


El sensor para tapa es un botón pulsador o Push Botton que tiene la función de indicar si
la tapa de la cámara (Chamber) está abierta o cerrada. En caso de que la prueba del PTT
se quiera ejecutar mientras la tapa está abierta, la pantalla LCD indicará que está abierta
y no continuará la prueba hasta que se cierre.

Figura 12- Interruptor de Tapa para el control del PTT.

29
3.3.1.2.7 Termopar para la cámara (Chamber)
Este último termopar conectado a un CI MAX6675, no va en alguna placa sino en la parte
interior de la cámara y tomará lectura de la temperatura ambiente del flujo de aire
constante. Se podrá visualizar en Visual Studio o en la pantalla LCD.

Figura 13- Termopar de tapa para el control del PTT.

3.3.1.2.8 Conexión Universal Serial Bus (USB)


Por medio de la comunicación Human Interface Device (HID) se realiza la conexión USB,
la cual enviará y recibirá datos, por medio de programación, desde la interface de Visual
Studio a la computadora, o viceversa.

Figura 14- USB para el control del PTT.

30
3.3.1.2.9 Sensor de humedad
Para la lectura de humedad del aire en la cámara se utiliza un sensor HIH5030. Las
lecturas de este sensor se podrán ver en la LCD o en la interface de Visual Studio para
poder añadir el resultado del sensor en el reporte que pide el estándar ASTM.

Figura 15- Sensor de humedad para el control del PTT.

3.3.1.2.10 Fuente de alimentación de 19 V


Se utiliza una fuente de alimentacion de 19 V para energizar los ventiladores que van en
la cámara y el microcontrolador. La fuente de alimentacion recibe 19 V para después
dividirlos en 2 voltajes diferentes, 12 V para los ventiladores y en 5 V para el
microcontrolador.

Figura 16- Alimentación de voltaje de 19 Volts para el control del PTT.

31
3.3.1.2.11 Control de ventiladores a 12 V
El control de ventiladores tiene como función mantener encendidos los ventiladores para
conservar un flujo constante de aire en la cámara y para regular la temperatura ambiente,
de ser necesario, si las temperaturas de las resistencias son muy elevadas para la prueba
que se realice en el PTT. El control de ventiladores se realiza por un módulo PWM del
microcontrolador.

Figura 17- Ventiladores de 12 Volts para el control del PTT.

3.3.2 Pasos a seguir para la función del circuito en simulación de Proteus


1. Iniciar la simulación del circuito en Proteus.
2. Seguir las indicaciones mostradas en la pantalla LCD.
a. Presionar el botón ON/C.
b. Presionar el botón que tiene le signo de igual (=).
3. Al estar funcionando la simulación se pueden presionar los botones que
representan números para observar las temperaturas registradas por los
termopares y el porcentaje de humedad.

32
3.3.3 Diagrama de flujo para el proceso del circuito de control

33
3.3.4 Diseño del Printed Circuit Board (PCB) en Proteus

Figura 18- Diseño en PCB en Proteus para el control del PTT.

34
3.3.5 Diseño de PCB en 3D en Proteus

Figura 19- Diseño del circuito completo en Proteus para el control del PTT.

35
3.3.6 Prototipo de PCB en 3D en Autodesk Inventor

Figura 20- Circuito en 3D Autodesk Inventor.

36
3.3.7 PCB montada en caja para circuito del Probador Térmico Textil (PTT)

Figura 21- Circuito en 3D implementada en la caja en Autodesk Inventor.

37
3.3.8 Prototipo completo del Probador Térmico Textil en Autodesk Inventor
El diseño mecánico se realizó tomando en cuenta los requisitos mencionados en el
estándar ASTM D1518 con ayuda de las Figura 1 (Guard Ring Hot Plate For Thermal
Transmittance Test), Figura 2 (Hot Plate, Top View, Showing Location of Thermistors and
Thermocouples on Test Section and Guard Ring) y la Figura 3 (Apparatus for
Measurement of Thermal Transmittance, Showing Dimensions), localizadas en las
páginas 4 y 5 del estándar. Se debe de tomar en cuenta que todas las figuras de las
piezas mecánicas y ensambles del PTT fueron hechos en Autodesk Inventor. Siendo el
diseño mecánico el primer prototipo, se debe de considerar futuras mejoras para su
correcto funcionamiento y cumplimiento de los requisitos por el estándar. Mayormente los
componentes electrónicos para el control y monitoreo del dispositivo se encontraran
adentro y los dispositivos encargados de la interface física serán visibles en la parte
frontal del dispositivo, como lo es la LCD y el teclado matricial. En la Figura 22 se aprecia
el dispositivo completo.

38
Figura 22- Diseño y prototipo del PTT (Estándar ASTM D1518).

39
3.3.9 Interface en Visual Studio para el Probador Térmico Textil (Estándar
ASTM D1518)
Para poder lograr una mejor interacción con el usuario del PTT se creó una interface en el
programa de Visual Studio, el cual es un entorno de desarrollo integrado para sistemas
operativos de Windows que tiene la capacidad de soportar múltiples lenguajes de
programación, tales como C++, C#, Visual Basic .NET, F#, Java, Python, Ruby y PHP, al
igual que entornos de desarrollo web, como ASP.NET MVC, Django, etc.
La interface se comunica al circuito electrónico del PTT por medio de una comunicación
HID para poder conectarse con los puertos USB del circuito electrónico y de una
computadora que tenga la interface de Visual Studio.

3.3.9.1 Función de la interface


La interface se divide en 5 secciones las cuales muestran al usuario diferentes aspectos
antes, durante y después de la prueba del PTT. La finalidad de la interface en Visual
Studio es que el usuario pueda observar el desenvolvimiento de la prueba y de esta
manera se asegure que la prueba se desarrolla de forma correcta. Para comprender de
mejor manera se muestra en la Figura 23 la interface con sus secciones las cuales se
describirán más a fondo. A continuación, las secciones:
1. Campos para llenar por el responsable de la prueba.
2. Resultados de fórmulas pedidas por el estándar ASTM D1518.
3. Muestras cada 3 minutos de los termopares, los termistores y el sensor de
humedad.
4. Muestras en tiempo real de los termopares, los termistores y el sensor de
humedad.
5. Botón para iniciar la prueba en la interface, botón para realizar el Reporte
requerido por el estándar ASTM D1518 e indicador de la conexión USB.

40
Figura 23- Interface en Visual Studio del Probador Térmico Textil (Estándar ASTM D1518).

41
3.3.9.2 Campos para llenar por el responsable de la prueba
En esta sección el responsable de la prueba debe de llenar once campos con información
relevante para el reporte que pide el estándar ASTM D1518 y para las fórmulas que se
deben de resolver al final de la prueba con los resultados finales de los termopares. Cabe
mencionar que los campos para llenar se pueden personalizar a petición de la empresa
Textiles Técnicos.
Los campos para llenar incluyen:
 Nombre de Reporte:
 Empresa:
 Responsable de la prueba:
 Fecha:
 Descripción del material/producto:
 Descripción del método de prueba:
 Peso:
 Espesor:
 Masa de la tela:
 Área de la tela:
 Temperatura de la prueba:

Figura 24- Campos para llenar para la prueba del estándar ASTM D1518.

42
3.3.9.3 Resultados de fórmulas solicitadas por el Estándar ASTM
Para la sección relacionada con fórmulas se requiere revisar el estándar ASTM D1518
para tener una mejor compresión de cada una y de sus resultados (Revisar páginas 6 y 7
del estándar en el título Calculations). Estas fórmulas son utilizadas para obtener los
resultados que solicita el reporte del estándar. Fórmulas utilizadas:
 Temperatura media (Mean temperature)

(𝑇𝑎 + 𝑇𝑝 )
𝑇𝑚 =
2

𝑇𝑎 = temperatura ambiente (atmosphere temperature)


𝑇𝑝 = temperatura de la superficie de la placa (plate surface temperature)

 Promedio del coeficiente de transferencia de calor de la placa descubierta


(Average heat transfer coefficient of the bare plate alone)

𝑃
𝑈𝑏𝑝 =
[𝐴 ∗ (𝑇𝑎 − 𝑇𝑝 )]

𝑃 = pérdida de potencia de la placa de prueba, 𝑊 (power loss from test late, 𝑊)


𝐴 = área de la placa de prueba, 𝑚2 (area of test plate, 𝑚2 )
𝑇𝑝 = temperatura de la placa de prueba, °C (test plate temperature, °C)
𝑇𝑎 = temperatura del aire, °C (air temperature, °C)

 Promedio del coeficiente de transferencia de calor de la placa y tejido combinado


(Average of hte heat transfer coefficient of the plate and fabric combined)

𝑃
𝑈1 =
[𝐴 ∗ (𝑇𝑎 − 𝑇𝑝 )]

𝑃 = pérdida de potencia de la placa de prueba, 𝑊 (power loss from test late, 𝑊)


𝐴 = área de la placa de prueba, 𝑚2 (area of test plate, 𝑚2 )
𝑇𝑝 = temperatura de la placa de prueba, °C (test plate temperature, °C)
𝑇𝑎 = temperatura del aire, °C (air temperature, °C)

43
 Conductancia térmica del tejido (Thermal conductance of the fabric)

(𝑈𝑏𝑝 ∗ 𝑈1 )
𝑈2 =
(𝑈𝑏𝑝 − 𝑈1 )

 Densidad aparente (Bulk density of the fabric)

𝑀
𝐵 =
𝑡

𝑘𝑔 𝑘𝑔
𝐵 = densidad aparente, (bulk density, )
𝑚3 𝑚3
𝑔 𝑔
𝑀 = masa / unidad de área del tejido, 𝑚2 (mass / unit area of fabric, 𝑚2)

𝑡 = espesor del tejido, 𝑚𝑚 (thickness of fabric, 𝑚𝑚)

 Conductividad térmica (Thermal conductivity of the fabric)

𝑈2 ∗ 𝑡𝑖
𝑘 =
1000

𝑡𝑖 = thickness of the specimen, 𝑚𝑚, at 0.07 𝑘𝑃𝑎 pressure

 Resistencia térmica (Thermal resistance of the fabric)

1
𝑅 =
𝑈2

Nota: La adición de valores de R medidos independientemente para dos o más telas


(una de las cuales tiene menos de 13 mm de espesor) para calcular la resistencia
térmica de un conjunto, es a menudo inválida, debido a la influencia de un tejido
sobre la resistencia térmica asociada con el otro. Por Ejemplo, un cortaviento forrado
con forro de lana proporciona mucho más aislamiento en movimiento de aire, que la
suma del aislamiento del revestimiento y el tejido exterior tomado por separado.

44
 Resistividad térmica (Thermal resistivity of the fabric)

1
𝑅′ =
𝑘

Figura 25- Resultados de fórmulas.

3.3.9.4 Muestras cada 3 minutos de los termopares, los termistores y el


sensor de humedad
El estándar ASTM D1518 requiere que la prueba se complete en un tiempo de 30 minutos
y dentro de este periodo se tomen muestras de la temperatura de los termopares y
termistores cada 3 minutos por lo que se obtienen 10 muestras durante la prueba. En la
sección de muestras de la interface se obtienen 10 resultados de temperatura, los cuales
son visibles para el usuario cada ocasión que se obtienen para observar la constante de
elevación de temperatura y, de esa forma, se compruebe el funcionamiento correcto de la
prueba. Se añadió un apartado para las muestras de humedad para poder observar su
comportamiento antes, durante y después de la prueba dentro de la cámara (chamber).
Cada termopar y termistor son mostrados al igual que el sensor de humedad.

45
Figura 26- Resultados de muestras en intervalos de tiempos.

46
3.3.9.5 Muestras en tiempo real de los termopares, los termistores y el
sensor de humedad
Para evitar anomalías con la temperatura y humedad se propuso una sección de
muestreo en tiempo real con un intervalo de muestreos de un segundo. Esto tiene la
finalidad de observar lo que no sucede con la temperatura y humedad dentro de los tres
minutos que tarda cada muestreo de la sección anterior mencionada. Cada termopar y
termistor son mostrados al igual que el sensor de humedad.

Figura 27- Muestras en tiempo real

3.3.9.6 Botón para iniciar la prueba en la interface, botón para realizar el


Reporte requerido por el Estándar ASTM e indicador de la conexión
USB
Se requieren de solamente dos botones dentro de la interface para iniciar la prueba y
realizar el reporte que pide el estándar ASTM D1518 de forma automática. No se
incluyeron más para evitar confusión al usuario y de esa forma sea más práctico. El botón

47
de INICIAR tiene el propósito de inicializar la prueba y un temporizador por medio de
programación en Visual Studio, tomará los tiempos requeridos para cada muestreo y la
finalización de la prueba. El botón de REPORTE se presiona al finalizar la prueba ya que
se hayan obtenido todos los valores requeridos de muestreos y fórmulas para después
imprimir un documento en Microsoft Office Word que contenga lo requerido por el
estándar. Por último, se tiene un indicador para mostrar la conexión entre el PTT y la
computadora. El indicador tiene un color verde mate y las palabras USB OFF cuando no
hay una conexión exitosa y un color verde limón con las palabas USB ON cuando es
exitosa.

Figura 28- Botones e indicador de conexión USB.

3.3.9.7 Propuesta de Reporte requerido por estándar ASTM D1518


Como propuesta para los requerimientos del reporte se elaboró un documento en
Microsoft Word que se puede utilizar como guía para adaptaciones a los requerimientos
de la empresa Textiles Técnicos S.A de C.V. o, en dado caso, de sus clientes. Esto se
logró por medio de librerías de Microsoft Office instaladas de forma manual a Visual
Studio y marcadores en el documento Word que contiene el reporte. En la Figura 29 se
muestra la guía para el reporte.

48
Figura 29- Reporte con requisitos del estándar ASTM D1518.

49
3.3.9.8 Instrucciones para utilizar la interface del Probador Térmico Textil
Para realizar la prueba de forma adecuada se presentan los pasos a seguir para utilizar la
interfaz. A continuación, los pasos:
1. Abrir la aplicación de la Interfaz del Probador Térmico Textil en la computadora
donde esté instalado.
2. Conectar el cable USB proveniente del Probador Térmico Textil a la computadora,
o viceversa, dependiendo el caso.
3. Verificar que se haya realizado correctamente la conexión USB observado el
indicador LED del USB en la interfaz.
4. Llenar los campos solicitados de la interfaz.
5. Iniciar la prueba del Probador Térmico Textil e inmediatamente presionar el botón
INICIAR de la interfaz.
6. Después de que haya terminado la prueba y se visualicen todas las muestras
recabadas, al igual que los resultados de las fórmulas, presionar el botón de
REPORTE.

3.4 Desarrollo de dispositivo del estándar ASTM D4108-87


3.4.1 Diseño de circuito en Proteus
Para el monitoreo del Probador Térmico Textil de flama directa se diseñó un circuito
electrónico en el programa de Proteus, el cual es una aplicación para la ejecución de
proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del
esquema electrónico, programación del software, diseño de la placa de circuito impreso,
simulación de todo el conjunto, depuración de errores, documentación y construcción. El
desarrollo del circuito se realizó alrededor del microcontrolador PIC18F4550 ya que es
programable y contiene módulos integrados, los cuales facilitan su utilización mediante el
uso de librerías en su programación, ahorrando de esta forma pines del microcontrolador
y obteniendo mejores resultados de rendimiento. Una de las grandes ventajas que tiene
este microcontrolador es su módulo para USB, el cual, por medio de la comunicación HID
se comunica con una computadora que contenga la Interfaz de Visual Studio para
complementar los requisitos del estándar ASTM.

3.4.1.1 Función de la interface del circuito


El circuito completo se puede apreciar en la Figura 30, lo cual ayuda a apreciar el
conjunto de componentes electrónicos. Para un mejor entendimiento se divide en 6

50
secciones el circuito y de esta manera después poder hacer una explicación de cada una.
Las secciones están conformados por el PIC18F4550, la palca de prueba o Test Plate,
Interfaz de control, interruptor de la Tapa, USB y control de gas.

51
Figura 30- Diseño de circuito electrónico para el dispositivo del estándar ASTM D4108.

52
3.4.1.2 Descripción del circuito de Proteus
Es necesario entender la configuración de los componentes electrónicos para lograr un
correcto funcionamiento de la simulación en Proteus. Para poder recibir datos del
termopar de manera más eficiente se utilizó un CI MAX6675 el cual amplifica la señal
analógica obtenida del termopar y la convierte en una señal digital para que el
microcontrolador pueda hacer lecturas más precisas. En el caso de los termistores la
señal recibida por el microcontrolador es analógica y puede ser procesada conectándolos
de forma directa sin ningún amplificador. El teclado matricial funciona de una forma poco
usada ya que comúnmente se utiliza de forma digital, pero utiliza múltiples pines del
microcontrolador por lo que se optó por utilizarlo de forma analógica para solo utilizar un
pin del microcontrolador. Las lecturas del microcontrolador provenientes del teclado son
hechas midiendo la cantidad de resistencia que presenta cada botón al presionarlo y esto
se logra dando un voltaje constante al teclado y haciendo una sumatoria de resistencias al
presionar algún botón. La pantalla LCD es conectada de forma digital al microcontrolador
forzosamente para su funcionamiento y controlada por librerías activadas en la
programación del microcontrolador. El interruptor de la tapa está conectado directamente
al microcontrolador dejando o no dejando cerrar el circuito, el cual le envía una señal que
indica si está abierta o cerrada la tapa. La conexión USB es conectada directamente al
microcontrolador funcionando digitalmente y controlada por medio de la comunicación HID
junto con librerías de programación. Para la fuente de alimentación del circuito se utiliza
un diseño similar al estándar anterior.

53
3.4.1.2.1 Microcontrolador PIC18F4550
El microcontrolador es el que se encarga de todo el control y monitoreo de los
componentes electrónicos del dispositivo PTT, siendo un dispositivo programable por
medio de programación en lenguaje C.

Figura 31- Microcontrolador PIC18F4550 para control del dispositivo para pruebas con flama
directa.

3.4.1.2.2 Test Plate


La placa de prueba está conformada por un termopar con su CI MAX6675
correspondiente y un termistor, su funcionamiento es tomar lectura de la temperatura del
sensor y mostrar en la computadora mediante de un programa ejecutable en Visual Studio
o mostrarla en la pantalla LCD.

Figura 32- Diseño en Proteus de Test Plate.

54
3.4.1.2.3 Interfaz de control del circuito
La interfaz de control del circuito electrónico está constituida por una pantalla LCD de
16X2 caracteres y un teclado matricial. Su función principal es el control de las lecturas
del termopar y entregar los resultados de las fórmulas requeridas por el reporte del
estándar ASTM.
La pantalla LCD muestra un menú con opciones para ser seleccionados con el teclado
matricial y, de esta manera, iniciar la prueba o mostrar resultados de la temperatura del
termopar, durante el trascurso de la prueba o al final mostrar los resultados de las
fórmulas.

Figura 33- Diseño en Proteus de la interfaz de control.

55
3.4.1.2.4 Sensor para tapa
El sensor para la tapa es un Push Botton el cual tiene la función de indicar si la tapa de la
prueba está abierta o cerrada. En caso de que la prueba del PTT de flama directa se
quiera ejecutar, mientras la tapa está abierta, la pantalla LCD indicará que está abierta y
no continuará la prueba hasta que se cierre.

Figura 34- Diseño de Proteus Swith Tapa.

3.4.1.2.5 USB
Por medio de la comunicación Human Interface Device (HID) se realiza la conexión USB,
la cual enviará y recibirá datos en forma de byte, por medio de programación, desde la
interfaz de Visual Studio a la computadora, o viceversa.

Figura 35- USB para el control del PTT.

56
3.4.1.2.6 Control de gas
El control de la válvula de gas se encuentra constituido por un relevador que se alimenta a
5 V, el cual mantiene el gas en un estado apagado. Cuando se inicia el proceso, se
energiza el relevador y comienza el flujo de gas.

Figura 36- Sistema de control de gas diseñado en Proteus para el PTT de flama directa.

57
3.4.2 Diseño del Printed Circuit Board (PCB) en Proteus

Figura 37- Diseño de Printed Circuit Board (PCB) en Proteus.

58
3.4.3 Diseño de PCB en 3D en Proteus

Figura 38-Vista de la PCB en 3D diseñada en Proteus.

59
3.4.4 Diseño de PCB en 3D en Autodesk Inventor

Figura 39- PCB en 3D en Autodesk Inventor.

60
3.4.5 Prototipo completo de dispositivo para pruebas de flama directa en
Autodesk Inventor (estándar ASTM D4108)
El siguiente prototipo es una propuesta creada para el estándar ASTM D 4108 que tiene
como objetivo principal el estudio de la transmitancia térmica y convección de calor en un
entorno donde se exponga una flama directa sobre un compuesto textil. La base o
componente principal, que tiene como función mantener fijos los elementos secundarios
como se muestra en la Figura 40, donde se monta la muestra textil con una abertura que
permitir la convección de calor al producto. El tercer elemento es el más importante ya
que es el que sostendrá el sensor calorímetro mencionado por el estándar y cuenta con
dos agarraderas para permitir la fácil colocación. En la parte inferior se encuentra el
espacio donde se colocará el mechero de Bunsen que entregará flama al prototipo. Por
último, al costado del dispositivo se encuentra la PCB dentro de una caja especial para su
montaje.

Figura 40- Diseño y prototipo de dispositivo para pruebas de flama directa (Estándar ASTM
D4108).

61
3.4.6 Interface en Visual Studio para pruebas con flama directa (Estándar
ASTM D4108)
Con la misma finalidad de la interface del Probador Térmico Textil, se busca una mejor
interacción con el usuario responsable de las pruebas realizadas a textiles para elaborar
el reporte y las pruebas de forma adecuada dentro de los requisitos del estándar ASTM
D4108. En el caso de este estándar se hizo el monitoreo de solamente un termopar, el
cual registrará la resistencia y aislamiento que tiene un material textil al ser expuesto a un
nivel de energía convectiva durante un breve periodo de tiempo. Por tal motivo la interfaz
contiene cinco secciones de las cuales dos son encargadas específicamente del
monitoreo de las diferencias de temperatura que sufra el termopar, una de las secciones
está encargada de tomar medidas de la temperatura en tiempo real mientras que la otra
sección es encargada de tomar un muestreo de la temperatura del termopar cada
segundo por un total de 6 segundos. Las tres secciones restantes se encargan de
complementar los requisitos del reporte que se genera al final de la prueba. En la Figura
41 se muestra la interfaz completa para después explicar cada sección de forma más
clara. A continuación, se listan las secciones que contiene la interfaz:
1. Campos para llenar por el responsable de la prueba.
2. Muestras en tiempo real del termopar.
3. Muestras cada segundo del termopar.
4. Resultados de las fórmulas TPP.
5. Botón para iniciar la prueba en la interface, botón para realizar el Reporte
requerido por el estándar ASTM D4108 e indicador de la conexión USB.

62
Figura 41- Interface en Visual Studio para pruebas con flama directa (Estándar ASTM D4108).

63
3.4.6.1 Campos para llenar por el responsable de la prueba
En esta sección el responsable de la prueba debe de llenar 21 campos con información
relevante para el reporte que pide el estándar ASTM D4108 como se muestra en la Figura
42. Cabe mencionar que los campos para llenar se pueden personalizar a petición de la
empresa Textiles Técnicos. Los campos para llenar incluyen:
 Nombre de Reporte:
 Empresa:
 Responsable de prueba:
 Fecha:
 Material:
 Número de lote:
 Muestra de lote:
 Número de prueba:
 Tipo de gas:
 Presión de gas:
 Número de prueba de capa simple:
 Número de prueba de capa múltiple:
 Montaje del espécimen:
 Posición del sensor en la muestra:
 Ruptura:
 Fusión:
 Goteo:
 Carbonización:
 Fragilidad:
 Encogimiento:
 Encendido:

64
Figura 42- Campos para llenar por el responsable de la prueba.

3.4.6.2 Muestras en tiempo real del termopar


El termopar es monitoreado de forma constante para tener la temperatura registrada en
tiempo real.

Figura 43- Muestreos en tiempo real.

65
3.4.6.3 Muestras cada segundo del termopar
Está indicado en el estándar ASTM D4108 que se necesita tomar muestras de la
temperatura del termopar cada segundo por un tiempo de 6 segundos por lo que se
muestra en esta sección cada resultado de temperatura por un periodo de 6 segundos.

Figura 44- Resultados de muestras tomadas cada segundo.

3.4.6.4 Resultados de las fórmulas del TPP de flama directa


Para obtener el resultado de la clasificación de rendimiento de protección térmica se
requiere resolver la siguiente fórmula por seis ocasiones, variando el resultado de
temperatura y el segundo en el que se encuentra la prueba. Al final se hace un promedio
de los resultados del TPP rating.

𝑇𝑃𝑃 𝑟𝑎𝑡𝑖𝑛𝑔 = 𝐹 ∗ 𝑇
𝑊
𝐹 = exposición al flujo de calor,
𝑐𝑚2

𝑇 = tiempo de exposición, 𝑠

Figura 45- Resultados de fórmulas del TPP rating.

66
3.4.6.5 Botón para iniciar la prueba en la interface, botón para realizar el
Reporte requerido por el Estándar ASTM D4108 e indicador de la
conexión USB
Se requieren de solamente dos botones dentro de la interfaz para iniciar la prueba y
realizar el reporte que pide el estándar ASTM D4108 de forma automática. El botón de
INICIAR tiene el propósito de inicializar la prueba y un temporizador el cual, por medio de
programación en Visual Studio, tomará los tiempos requeridos para cada muestreo y la
finalización de la prueba. El botón de REPORTE se presiona al finalizar la prueba, ya que
se han obtenido todos los valores requeridos de muestreos y fórmulas para de esta forma
realizar un documento en Microsoft Office Word que contenga lo requerido por el
estándar. Por último se tiene un indicador para mostrar la conexión entre el Probador
Térmico Textil y la computadora. El indicador tiene un color verde mate y las palabras
USB OFF cuando no hay una conexión exitosa y un color verde limón con las palabas
USB ON cuando es exitosa.

Figura 46- Botones e indicador de conexión USB.

3.4.6.6 Propuesta de Reporte requerido por estándar ASTM D4108


Como propuesta para los requerimientos del reporte se redactó un documento en
Microsoft Word que se puede utilizar como guía para adaptación a los requerimientos de
la empresa Textiles Técnicos S.A de C.V. o de sus clientes. Esto se logró por medio de
librerías de Microsoft Office instaladas de forma manual a Visual Studio y marcadores en
el documento Word que contiene el reporte. En la Figura 47 se muestra la guía para el
reporte.

67
Figura 47- Reporte con requisitos del estándar D4108.

68
IV. RESULTADOS
En el desarrollo del prototipo se hicieron algunas mejoras, una de ellas es el empleo del
microcontrolador PIC18F4550 de mejores características, por el PIC16F877. Las pruebas
realizadas se hicieron tanto simuladas como físicas. Las pruebas de simulación se
basaron en el desarrollo del circuito PTT con el programa Proteus, con el cual se
diseñaron varios prototipos para probar cada uno de los componentes y validar la
conectividad entre ellos para obtener el circuito del prototipo completo, tal es el caso de la
comunicación vía USB que transmitir y recibir información mediante full dúplex, con el
propósito de visualizar y validar las temperaturas en la interfaz gráfica desarrollada en
Visual Studio. Por último, la interfaz genera un reporte con fórmulas que cumple con los
estándares ASTM D1518 y ASTM D4108, dando en simulación resultados satisfactorios.
En la parte física se hicieron pruebas para el comportamiento de transferencia de datos,
por medio de la conexión USB junto con la comunicación HID, para visualizar la
temperatura de un solo termopar y mostrarlo en la interfaz gráfica de Visual Studio,
comprobando el enlace exitoso entre el circuito físico y la PC.

69
CONCLUSIONES
El diseño del dispositivo encargado de cubrir los requerimientos del estándar ASTM
D4108 se divide en tres partes, las cuaeles son, el diseño mecánico del dispositivo, el
diseño del circuito de control y la interfaz gráfica. Para cada parte del diseño se utilizaron
programas diferentes, en el diseño mecánico se utilizó el programa de Autodesk Inventor,
en el diseño de circuito se ocupó el programa de Proteus y, por último, para el diseño de
la interfaz gráfica, se utilizó el programa de Visual Studio, ya que cada parte consistía de
diferentes funciones para el Probador Térmico Textil de flama directa. Este dispositivo
queda como prototipo para su desarrollo físico, aunque se debe de tomar en cuenta que
tiene que quedar abierto a mejoras y pruebas físicas de su funcionamiento. En tanto a la
optimización del circuito de control del dispositivo PTT, correspondiente al estándar ASTM
D1518, se obtuvieron resultados satisfactorios en cuanto a su rapidez de respuesta y
funcionamiento en general, cumpliendo así los requisitos del estándar. Se redujo la
cantidad de pines utilizados en el microcontrolador dando oportunidad a la adición de una
comunicación USB, de esta manera, permitiendo la comunicación con la interfaz gráfica
sin tener problemas de desbordamiento de memoria en el microcontrolador como en el
diseño anterior.

70
REFERENCIAS
Biblioman. (s.f.). Comunicación USB-PIC con HID. Obtenido de
http://www.aquihayapuntes.com/indice-practicas-pic-en-c/comunicacion-usb-pic-
con-hid.html
FADISEL. (s.f.). electronicaestudio. Obtenido de Ingenieria Eletrónica y Proyectos
PICmicro: http://www.electronicaestudio.com/microcontrolador.htm
Fernández, D. A. (s.f.). Sistema de Prueba de Transmisión Térmica en elementos textiles.
Jasio, L. D. (2007). Programación de microcontroladores PIC de 16 bits en C: aprender a
volar la tecnología PIC 24 . Newnes.
Joomla. (2000-2017). Academic. Obtenido de www.esacademic.com:
http://www.esacademic.com/dic.nsf/eswiki/1080000
MrElberni. (13 de 09 de 2015). Electricidad y Electrónica. Obtenido de Temas de
electricidad y electrónica: http://mrelberni.blogspot.mx/2015/10/convertidor-
analogico-digital-adc-con.html
Ruan, X. (2014). Convertidores de puente completo PWM de conmutación suave:
topologías, control y diseño. John Wiley & Sons.
Ulmeher, J. M. (s.f.). ibertronica. Obtenido de ¿Sabes Lo Que Es La Función PWM?:
http://www.ibertronica.es/blog/tutoriales/funcion-pwm/
Ulmeher., J. M. (2007). Basic para Microcontroladores PIC. Trafford Publishing, 2007.
USB (Bus de serie universal). (07 de 2017). Obtenido de http://es.ccm.net/contents/407-
usb-bus-de-serie-universal

71
ANEXOS Y APÉNDICES
Lista de materiales del circuito electrónico del PTT (Estándar D1518)
 PIC18F4550-I/P
 Conector macho para termopar tipo k
 Conector hembra termopar tipo k para PCB
 3 termistores PTC
 7 MAX6675
 Teclado matricial de membrana.
 Convertidor Digital
 Resistencias 10 kW
 Resistencias 220 W
 Resistencias 330 W
 Resistencias 470 W
 Resistencias 470 W
 Resistencias 560 W
 Resistencias 1 KW
 resistencia de 8.2kΩ
 Resistencias 2 KW
 Cable USB para impresora
 Conector para USB tipo B Hembra
 Eliminador de voltaje de 3500 mA
 Conector hembra para fuente de alimentación
 7 Termopares Tipo k
 LCD 16 X2
 Interruptor final de carrera
 Placa de cobre doble cara de 25 x 15 cm
 3 Diodos led
 Sensor de Humedad HiH-5030
 3 Capacitores 100UF
 Regulador de voltaje 7812
 Regulador de voltaje 7805
 3 ventiladores

72
 Integrado L298

73
Lista de materiales del circuito electrónico (Estándar D4108)
 PIC18F4550-I/P
 Terminal block
 Conector macho para termopar tipo k
 Conector hembra termopar tipo k para PCB
 Copper Slug Calorimeter Sensor
 Interfaz con sensor K Thermocouple to
 Convertidor Digital
 Teclado matricial de membrana.
 Resistencias 10 kW
 Resistencias 220 W
 Resistencias 330 W
 Resistencias 470 W
 Resistencias 470 W
 Resistencias 560 W
 Resistencias 1 kW
 resistencia de 8.2 kΩ
 Resistencias 2 kW
 Cable USB para impresora
 Conector para USB tipo B Hembra
 Eliminador de voltaje de 3500 mA
 Conector hembra para fuente de alimentación
 Transistor bipolar npn bc337
 Diodo 1N4007
 RELAY 5 V
 LCD 16 X2
 Interruptor final de carrera
 Placa de cobre doble cara de 5 x 15 cm

74
Programas utilizados para la elaboración de los proyectos
 Programa en Proteus 8.4 para diseño circuito y PCB.
 En Proteus 8.4 se instalaron los drivers de Virtual USB.
 Programa en Autodesk Inventor 2014 para diseño mecánico.
 Programación en MicroC PRO for PIC del microcontrolador 18F4550,
 En el programa MicroC PRO for PIC saldrá error al momento de ejecutarlo porque
falta añadir el archivo “USBdsc”, prácticamente ese archivo es el código de la
comunicación USB que se añade a la programación del microcontrolador
18F4550.
 Programa en Visual Studio 2015 para diseñar la interfaz del diseño de las fórmulas
y resultado de los estándares ASTM.
 El programa Visual Studio necesita añadir un archivo llamado “mcHID.dll” a la
carpeta llamado “SystemWOW64” para el momento de la ejecución en Visual no
marque error de la comunicación HID.

Pasos a seguir de la programación en MikroC


1. Primero se declaró el PIC18F4550 junto con sus entradas y salidas digitales, se
van utilizar en el circuito para que pueda identificar cada uno de los sensores.
2. Después se declararon las librerías tales como los módulos SPI, ADC y HID entre
otros, ya que esas librerías sirven para identificar los circuitos que van conectado
al PIC18F4550.
3. Se declararon las variables, que se empelan para asignar e identificar cada uno
del componente de los circuitos tales como los termopares, los termistores, el
teclado matricial, pero se declararon cada uno de los botones del teclado porque
se hizo el divisor de voltaje, el sensor de humedad y la pantalla LCD.
4. Se inicia con la declaración de las subfunciones el cual es el inicio del todo el
proceso del proyecto, donde declaras cada uno del componente del circuito para
que hagan una función tal como mostrar los valores de los termopares, pantalla
LCD, USB, entre otros.
5. Después se declara su función principal, que son las fórmulas que muestran en la
Norma ASTM D 1518 – 1585.
6. Teniendo ya las funciones y subfunciones se configura por medio de la
programación para que muestre los resultados en la pantalla LCD o Visual Studio

75
y para para mostrar el resultado continuamente se utilizó principalmente el ciclo
For y While para que el programa se ejecute sin interrupciones.

Programación en MikroC PRO for PIC para el microcontrolador PIC18F4550


(Estándar ASTM D1518)
1. Se configura el LCD y se declara su librería.
#include <built_in.h>
sbit LCD_RS at RD1_bit;
sbit LCD_EN at RD0_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD1_bit;
sbit LCD_EN_Direction at TRISD0_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

2. Se define los pines CS para activar cada termopar.


sbit MAX6675_CS at RB2_Bit;
sbit MAX6675_CS_Direction at TRISB2_Bit;
sbit MAX6675_CS2 at RB3_Bit;
sbit MAX6675_CS2_Direction at TRISB3_Bit;
sbit MAX6675_CS3 at RB4_Bit;
sbit MAX6675_CS3_Direction at TRISB4_Bit;
sbit MAX6675_CS4 at RB5_Bit;
sbit MAX6675_CS4_Direction at TRISB5_Bit;
sbit MAX6675_CS5 at RB6_Bit;
sbit MAX6675_CS5_Direction at TRISB6_Bit;
sbit MAX6675_CS6 at RB7_Bit;
sbit MAX6675_CS6_Direction at TRISB7_Bit;

76
sbit MAX6675_CS7 at RE2_Bit;
sbit MAX6675_CS7_Direction at TRISE2_Bit;

3. Variables para comunicación USB.


unsigned char Leer_USB[64] absolute 0x500;
unsigned char Escribir_USB[64] absolute 0x540;
unsigned char Reservar_USB[256] absolute 0x400;

4. Variables del termopar.


unsigned temp1,temp2,temp3,temp4,temp5,temp6,temp7=0;
/// Variables termistores
int adc1,adc2,adc3=0;
//unsigned int ADC0;
5. Variables menú.
int adc0; //teclado
char adc[6];
char k='0';
char k1='0';
int band=0;
6. Variables NORMA ASMT: D 1518.
float U1=0.0; //Combined transmittance
float Ubp=0.0; // bare-plate transmittance
float P_l=0.0081; // Power loss
float Area=0.065; //Área test plate m^2
float U2=0.0; //intrinsic transmittance
float k_c=0.0; //intrinsic thermal conductivity
float t=0.2; //Thickness
float R_t=0.0; //Intrinsic thermal resistance
float Rp=0.0; //Intrinsic thermal resistivity
float Clo_U=0.0; //Intrinsic thermal resistance in Clo
float Clo_k=0.0; //Specific thermal resistance in Clo
float B=0.0; //Bulk density

char trans1[5];

77
char transBP[5];
char intrTrans[5];
char intrTerm[5];
char intrTResistance[5];
char intrTResistivity[5];
char intrTClo[5];
char specificTClo[5];
char Bulk[5];

7. Variables de control.
int valor; //lectura de temperatura
int control,cntr; //valor del PWM
float a_1,b_1,c_1; //constantes del PID
float temp_limit; //temperatura a alcanzar
float rT,eT,iT,dT,yT,uT,iT0,eT0,iT_1,eT_1; //variables de ecuaciones
float max1,min1; //límites máximo y mínimo de control.
char ctr_text[6];

char texto[8];
char texto2[8];
char texto3[8];
char texto4[8];
char texto5[8];
char texto6[8];
char texto7[8];

char termistor1[6];
char termistor2[6];
char termistor3[6];

char humedad[6];

8. Envió de datos USB por interrupción.

78
void interrupt(){
Usb_Interrupt_Proc(); //Mantiene viva la comunicacion

9. Configuración de los Sensores.


/////////////////// SENSOR 1 //////////////////
union UNO
{
char state:1;
char deviceID:1;
char open:1;
char temperature:12;
char sign:1;
unsigned output;
}Max6675Data;

void MAX6675_Init()
{
MAX6675_CS_Direction = 0;
MAX6675_CS = 1;
}
unsigned Max6675_Read()
{
unsigned tmp;
MAX6675_CS = 0;
Hi(tmp) = SPI1_Read(0);
Lo(tmp) = SPI1_Read(0);
MAX6675_CS = 1;
return(tmp);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 2 //////////////////
union DOS

79
{
char state2:1;
char deviceID2:1;
char open2:1;
char temperature2:12;
char sign2:1;
unsigned output2;
}Max6675Data2;

void MAX6675_Init2()
{
MAX6675_CS2_Direction = 0;
MAX6675_CS2 = 1;
}
unsigned Max6675_Read2()
{
unsigned tmp2;
MAX6675_CS2 = 0;
Hi(tmp2) = SPI1_Read(0);
Lo(tmp2) = SPI1_Read(0);
MAX6675_CS2 = 1;
return(tmp2);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 3 //////////////////
union TRES
{
char state3:1;
char deviceID3:1;
char open3:1;
char temperature3:12;
char sign3:1;
unsigned output3;
}Max6675Data3;

80
void MAX6675_Init3()
{
MAX6675_CS3_Direction = 0;
MAX6675_CS3 = 1;
}
unsigned Max6675_Read3()
{
unsigned tmp3;
MAX6675_CS3 = 0;
Hi(tmp3) = SPI1_Read(0);
Lo(tmp3) = SPI1_Read(0);
MAX6675_CS3 = 1;
return(tmp3);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 4 //////////////////
union CUATRO
{
char state4:1;
char deviceID4:1;
char open4:1;
char temperature4:12;
char sign4:1;
unsigned output4;
}Max6675Data4;

void MAX6675_Init4()
{
MAX6675_CS4_Direction = 0;
MAX6675_CS4 = 1;
}
unsigned Max6675_Read4()
{

81
unsigned tmp4;
MAX6675_CS4 = 0;
Hi(tmp4) = SPI1_Read(0);
Lo(tmp4) = SPI1_Read(0);
MAX6675_CS4 = 1;
return(tmp4);
}
/////////////////////////////////////////
/////////////////// SENSOR 5 //////////////////
union CINCO
{
char state5:1;
char deviceID5:1;
char open5:1;
char temperature5:12;
char sign5:1;
unsigned output5;
}Max6675Data5;

void MAX6675_Init5()
{
MAX6675_CS5_Direction = 0;
MAX6675_CS5 = 1;
}
unsigned Max6675_Read5()
{
unsigned tmp5;
MAX6675_CS5 = 0;
Hi(tmp5) = SPI1_Read(0);
Lo(tmp5) = SPI1_Read(0);
MAX6675_CS5 = 1;
return(tmp5);
}
/////////////////////////////////////////

82
/////////////////// SENSOR 6 //////////////////
union SEIS
{
char state6:1;
char deviceID6:1;
char open6:1;
char temperature6:12;
char sign6:1;
unsigned output6;
}Max6675Data6;

void MAX6675_Init6()
{
MAX6675_CS6_Direction = 0;
MAX6675_CS6 = 1;
}
unsigned Max6675_Read6()
{
unsigned tmp6;
MAX6675_CS6 = 0;
Hi(tmp6) = SPI1_Read(0);
Lo(tmp6) = SPI1_Read(0);
MAX6675_CS6 = 1;
return(tmp6);
}
/////////////////////////////////////////
/////////////////// SENSOR 7 //////////////////
union SIETE
{
char state7:1;
char deviceID7:1;
char open7:1;
char temperature7:12;
char sign7:1;

83
unsigned output7;
}Max6675Data7;

void MAX6675_Init7()
{
MAX6675_CS7_Direction = 0;
MAX6675_CS7 = 1;
}
unsigned Max6675_Read7()
{
unsigned tmp7;
MAX6675_CS7 = 0;
Hi(tmp7) = SPI1_Read(0);
Lo(tmp7) = SPI1_Read(0);
MAX6675_CS7 = 1;
return(tmp7);
}

10. Función de lectura del teclado.


void teclado(void){
if((adc0>545)&&(adc0<555))
{k='0';
}
else if((adc0>730)&&(adc0<740))
{k='1';
}
else if((adc0>570)&&(adc0<580))
{k='2';
}
else if((adc0>455)&&(adc0<465))
{k='3';
}
else if((adc0>790)&&(adc0<810))
{k='4';

84
}
else if((adc0>610)&&(adc0<625))
{k='5';
}
else if((adc0>480)&&(adc0<490))
{k='6';
}
else if((adc0>860)&&(adc0<870))
{k='7';
}
else if((adc0>640)&&(adc0<655))
{k='8';
}
else if((adc0>500)&&(adc0<515))
{k='9';
}
else if((adc0>690)&&(adc0<700))
{k='A';
}
else if((adc0>440)&&(adc0<455))
{k='I';
}
}
void InitMain() {
ADCON1 = 0x0A; //// Puertos analógicos de A0 a A4
TRISA = 0xFF; /// Puerto A como entradas
PORTB=0;
TRISB=0;
PORTE=0;
TRISE=0x01;
PORTC=0;
TRISC=0;
// PORTD=0;
TRISD2_Bit=0;

85
TRISD3_Bit=0;
// PWM1_Init(2000); // Initialize PWM1 module at 5KHz
}
////////////////////////////////////////
void main()
{
InitMain();

11. Inicio de variables


min1=0.0; //inicialización variables
max1=1000.0;
iT_1=0.0;
eT_1=0.0;
a_1=0.1243; //constantes del PID
b_1=0.0062;
c_1=0.6215;
temp_limit=700.0; //Temperatura a alcanzar

PORTC.F0=1; /// prende led stop

/// INICIALIZA LIBRERIA SPI ///


SPI1_Init();

// MAX6675_Init();
/// INICIALIZA LIBRERIA LCD ///
Lcd_Init();

Lcd_Cmd( _LCD_CURSOR_OFF );
Lcd_Cmd( _LCD_CLEAR );

/// INICIALIzo comunicación usb ///


HID_Enable(&Leer_USB,&Escribir_USB);

/// mensaje de inicio ///

86
Lcd_Out( 1, 3, "STANDARD TEST" );
Lcd_Out( 2, 1, "METHOD FOR THERM" );
Delay_ms( 1000 );
Lcd_Out( 1, 1, "TRANSMITTANCE OF" );
Lcd_Out( 2, 1, "TEXTILE MATERIALS" );
/*PWM1_Start(); // start PWM1
Delay_ms(100);*/
ADC_Init();
Delay_ms( 1000 );
Lcd_Cmd( _LCD_CLEAR );

while(1)
{
12. Código de inicio para empezar el Test
while(k!='A' && k!='I'){ // no se precione en el teclado A E I
adc0 = ADC_Read(0);
teclado();
Lcd_Out( 1, 1, "Preciona ON/C " );
Lcd_Out( 2, 1, "para iniciar prueba" );
if(k=='A'){
Lcd_Cmd( _LCD_CLEAR );
}
PORTC.F0=1; //LED STOP
}
13. Código para verificar que la tapa este cerrado.
while (PORTE.F0==0){
Lcd_Out( 1, 1, "Para iniciar prueba" );
Lcd_Out( 2, 1, " cerrar la tapa" );
if(PORTE.F0==1){
Lcd_Cmd( _LCD_CLEAR );
}
PORTC.F0=1; //LED STOP
PORTD.F2=0; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN

87
}
PORTC.F0=0; //LED STOP
PORTD.F2=1; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN
/// CODIGO PARA REVISAR DATOS /////

while(k!='I'){
if(PORTE.F0==1){
PORTC.F0=0; //LED STOP
PORTD.F2=1; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN
adc0 = ADC_Read(0);
teclado();
// Lcd_Chr(1,1,k);
Lcd_Out( 1, 1, "Pres = para iniciar");
Lcd_Out( 2, 1, "t=0.2mm A=0.065m2" ); //PROPUESTA ESPESOR T=0.2mm y
Área= 0.065m2
if(k=='I'){
Lcd_Cmd( _LCD_CLEAR );
band=1;
Delay_ms(10);
}
}
}

14. Código para la explicación del uso.


Lcd_Out( 1, 1, "Pres del 1 al 8");
Lcd_Out( 2, 1, "para ver valores" );
Delay_ms( 1000 );
Lcd_Cmd( _LCD_CLEAR );
PORTC.F0=0; //LED STOP
PORTD.F2=0; //LED INICIO

88
15. Código principal de cálculos y envió de datos USB
while(band==1){

//leds indicadores

// PORTD.F3=1; //LED EJECUCIÓN


PORTD.F3=~PORTD.F3;

// leer teclado
adc0 = ADC_Read(0); // Lee analógico A0 TECLADO
teclado();
WordToStr ( adc0, adc ); // convierte entero a cadena para vizualizar en LCD

// LECTURA DEL TERMISTOR 1


adc1 = ADC_Read(1);
Delay_ms( 1 );
WordToStr ( adc1, termistor1 );

// LECTURA DEL TERMISTOR 2


adc2 = ADC_Read(2);
Delay_ms( 1 );
WordToStr ( adc2, termistor2 );

// LECTURA DEL TERMISTOR 3


adc3 = ADC_Read(3);
Delay_ms( 1 );
WordToStr ( adc3, termistor3 );

// LECTURA SENSOR DE HUMEDAD


valor = ADC_Read(4); // Lee analógico A0 TECLADO
Delay_ms( 1 );
WordToStr ( valor, humedad );

/*// control PID

89
valor = ADC_Read(4); // Lee analógico A0 TECLADO
Delay_ms( 1 );
yT=valor*5000.0/1024.0; //conversión a mV (0.25V a 250mV)
rT=temp_limit;
eT=rT-yT; //Cálculo error
iT=b_1*eT+iT0; //Cálculo del término integral
dT=c_1*(eT-eT0); //Cálculo del término derivativo
uT=iT+a_1*eT+dT; //Cálculo de la salida PID
if (uT>max1) { //Salida PID si es mayor que el MAX
uT=max1;}
else {
if (uT<min1){ //Salida PID si es menor que el MIN
uT=min1;}
}
control=uT;
PWM1_Set_Duty(control); // Set current duty for PWM1
if(cntr!=control){
Lcd_Cmd( _LCD_CLEAR );
}
iT0=iT; //Guardar variables
eT0=eT;
cntr=control;
FloatToStr ( control, ctr_text ); // convierte entero a cadena para vizualizar en LCD
Lcd_Out(2,1,ctr_text);*/

/// LEE EL TERMOPAR 1


MAX6675_Init();
*(unsigned*)&Max6675Data = MAX6675_Read();
WordToStr( Max6675Data.temperature >> 1, texto );
// Lcd_Out( 1, 1, texto+2 );
// Lcd_Out_CP( texto+2 );
// Lcd_Chr_CP( 223 );
// Lcd_Chr_CP( 'C' );
/// LEE EL TERMOPAR 2

90
MAX6675_Init2();
*(unsigned*)&Max6675Data2 = MAX6675_Read2();
WordToStr( Max6675Data2.temperature2 >> 1, texto2 );
// Lcd_Out( 1, 5, texto2+2 );

/// LEE EL TERMOPAR 3


MAX6675_Init3();
*(unsigned*)&Max6675Data3 = MAX6675_Read3();
WordToStr( Max6675Data3.temperature3 >> 1, texto3 );
// Lcd_Out( 1, 10, texto3+2 );

/// LEE EL TERMOPAR 4


MAX6675_Init4();
*(unsigned*)&Max6675Data4 = MAX6675_Read4();
WordToStr( Max6675Data4.temperature4 >> 1, texto4 );
// Lcd_Out( 2, 1, texto4+2 );

/// LEE EL TERMOPAR 5


MAX6675_Init5();
*(unsigned*)&Max6675Data5 = MAX6675_Read5();
WordToStr( Max6675Data5.temperature5 >> 1, texto5 );
// Lcd_Out( 2, 5, texto5+2 );

/// LEE EL TERMOPAR 6


MAX6675_Init6();
*(unsigned*)&Max6675Data6 = MAX6675_Read6();
WordToStr( Max6675Data6.temperature6 >> 1, texto6 );
// Lcd_Out( 2, 10, texto6+2 );

/// LEE EL TERMOPAR 7


MAX6675_Init7();
*(unsigned*)&Max6675Data7 = MAX6675_Read7();
WordToStr( Max6675Data7.temperature7 >> 1, texto7 );

91
/// CONVIERTE DE cadena a entero
temp1=atoi(texto);
temp2=atoi(texto2);
temp3=atoi(texto3);
temp4=atoi(texto4);
temp5=atoi(texto5);
temp6=atoi(texto6);
temp7=atoi(texto7);

16. Código de control de control de ventiladores.

///////// VENTILADOR TEST PLATE ////////////


if(temp1>=80 || temp2>=80 || adc1>= 574){
PORTC.F6=1;
}
else{
PORTC.F6=0;
}
///////// VENTILADOR GUARD RING ////////////
if(temp3>=80 || temp4>=80 || adc2>= 574){
PORTC.F1=1;
}
else{
PORTC.F1=0;
}
///////// VENTILADOR BUTTOM PLATE ////////////
if(temp5>=80 || temp6>=80 || adc3>= 574){
PORTE.F1=1;
}
else{
PORTE.F1=0;
}

92
17. Formulas de la Norma.
U1=P_l/(Area*(temp7 - temp1)); //// Cálculo de U1
Ubp=U1*1.2; /// Ver 9.5 DE NORMA pruebas físicas

U2=(Ubp*U1)/(Ubp-U1); // Intrinsic transmittance


k_c=U2*(t/1000); //Intrinsic thermal conductivity
R_t=1/U2; //Intrinsic thermal resistance
Rp=1/k_c; //Intrinsic thermal resistivity
Clo_U=1.137/U2; //Intrinsic thermal resistance in Clo
Clo_k=1.137/k_c; //Specific thermal resistance in Clo
B=0.001/t; //Bulk density

switch(k){ ///CONTROL POR CADA NÚMERO DEL TECLADO


case '1': Lcd_Out(1,1, texto);
break;
case '2': Lcd_Out(1,1, texto2+2);
break;
case '3': Lcd_Out(1,1, texto3+2);
break;
case '4': Lcd_Out(1,1, texto4+2);
break;
case '5': Lcd_Out(1,1, texto5+2);
break;
case '6': Lcd_Out(1,1, texto7+2);
break;
case '7': Lcd_Out(1,1, humedad);
break;
case '8': Lcd_Out(1,1, termistor1);
break;
case '9': Lcd_Out(1,1, termistor3);
break;
case 'I': break;
default: band=0;
break;

93
}
18. Borrado de pantalla cada vez que cambia el valor del teclado.
if(k1!=k){
Lcd_Cmd( _LCD_CLEAR );
}
// VERIFICA QUE DURANTE LA EJECUCIÓN NO SE HABRA LA TAPA
if(PORTE.F0==0){
band=0;
Lcd_Cmd( _LCD_CLEAR );
}

19. Envió de datos por USB.

Escribir_USB[10] = temp1;
Escribir_USB[11] = temp2;
Escribir_USB[12] = temp3;
Escribir_USB[13] = temp4;
Escribir_USB[14] = temp5;
Escribir_USB[15] = temp6;
Escribir_USB[16] = temp7;
Escribir_USB[17] = Hi(adc1);
Escribir_USB[18] = Lo(adc1);

while(!HID_Write(&Escribir_USB, 64));

Delay_ms( 100 );
// GUARDA UN CAMBIO DEL TECLADO
k1=k;
}
}

94
Programación en MikroC PRO for PIC para el microcontrolador PIC18F4550
(Estándar ASTM D4108)
///// Configuración de LCD ////
#include <built_in.h>
sbit LCD_RS at RD1_bit;
sbit LCD_EN at RD0_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD1_bit;
sbit LCD_EN_Direction at TRISD0_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

/// se define los pines cs para activar cada termopar


sbit MAX6675_CS at RB2_Bit;
sbit MAX6675_CS_Direction at TRISB2_Bit;
sbit MAX6675_CS2 at RB3_Bit;
sbit MAX6675_CS2_Direction at TRISB3_Bit;
sbit MAX6675_CS3 at RB4_Bit;
sbit MAX6675_CS3_Direction at TRISB4_Bit;
sbit MAX6675_CS4 at RB5_Bit;
sbit MAX6675_CS4_Direction at TRISB5_Bit;
sbit MAX6675_CS5 at RB6_Bit;
sbit MAX6675_CS5_Direction at TRISB6_Bit;
sbit MAX6675_CS6 at RB7_Bit;
sbit MAX6675_CS6_Direction at TRISB7_Bit;
sbit MAX6675_CS7 at RE2_Bit;
sbit MAX6675_CS7_Direction at TRISE2_Bit;

95
/// variables para comunicacion usb
unsigned char Leer_USB[64] absolute 0x500;
unsigned char Escribir_USB[64] absolute 0x540;
unsigned char Reservar_USB[256] absolute 0x400;

///variables del termopar


unsigned temp1,temp2,temp3,temp4,temp5,temp6,temp7=0;
/// Variables termistores
int adc1,adc2,adc3=0;
//unsigned int ADC0;

///////// Variables menú /////////////


int adc0; //teclado
char adc[6];
char k='0';
char k1='0';
int band=0;
///////// Variables NORMA ASMT: D 1518 /////////////
float U1=0.0; //Combined transmittance
float Ubp=0.0; // bare-plate transmittance
float P_l=0.0081; // Power loss
float Area=0.065; //Área test plate m^2
float U2=0.0; //intrinsic transmittance
float k_c=0.0; //intrinsic thermal conductivity
float t=0.2; //Thickness
float R_t=0.0; //Intrinsic thermal resistance
float Rp=0.0; //Intrinsic thermal resistivity
float Clo_U=0.0; //Intrinsic thermal resistance in Clo
float Clo_k=0.0; //Specific thermal resistance in Clo
float B=0.0; //Bulk density

char trans1[5];
char transBP[5];
char intrTrans[5];

96
char intrTerm[5];
char intrTResistance[5];
char intrTResistivity[5];
char intrTClo[5];
char specificTClo[5];
char Bulk[5];

////////// VARIABLES DE CONTROL //////////////


int valor; //lectura de temperatura
int control,cntr; //valor del PWM
float a_1,b_1,c_1; //constantes del PID
float temp_limit; //temperatura a alcanzar
float rT,eT,iT,dT,yT,uT,iT0,eT0,iT_1,eT_1; //variables de ecuaciones
float max1,min1; //límites máximo y mínimo de control.
char ctr_text[6];

char texto[8];
char texto2[8];
char texto3[8];
char texto4[8];
char texto5[8];
char texto6[8];
char texto7[8];

char termistor1[6];
char termistor2[6];
char termistor3[6];

char humedad[6];

//// envio de datos usb por interrupción


void interrupt(){
Usb_Interrupt_Proc(); //Mantiene viva la comunicacion

97
}
/////////////////// SENSOR 1 //////////////////
union UNO
{
char state:1;
char deviceID:1;
char open:1;
char temperature:12;
char sign:1;
unsigned output;
}Max6675Data;

void MAX6675_Init()
{
MAX6675_CS_Direction = 0;
MAX6675_CS = 1;
}
unsigned Max6675_Read()
{
unsigned tmp;
MAX6675_CS = 0;
Hi(tmp) = SPI1_Read(0);
Lo(tmp) = SPI1_Read(0);
MAX6675_CS = 1;
return(tmp);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 2 //////////////////
union DOS
{
char state2:1;
char deviceID2:1;
char open2:1;
char temperature2:12;

98
char sign2:1;
unsigned output2;
}Max6675Data2;

void MAX6675_Init2()
{
MAX6675_CS2_Direction = 0;
MAX6675_CS2 = 1;
}
unsigned Max6675_Read2()
{
unsigned tmp2;
MAX6675_CS2 = 0;
Hi(tmp2) = SPI1_Read(0);
Lo(tmp2) = SPI1_Read(0);
MAX6675_CS2 = 1;
return(tmp2);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 3 //////////////////
union TRES
{
char state3:1;
char deviceID3:1;
char open3:1;
char temperature3:12;
char sign3:1;
unsigned output3;
}Max6675Data3;

void MAX6675_Init3()
{
MAX6675_CS3_Direction = 0;
MAX6675_CS3 = 1;

99
}
unsigned Max6675_Read3()
{
unsigned tmp3;
MAX6675_CS3 = 0;
Hi(tmp3) = SPI1_Read(0);
Lo(tmp3) = SPI1_Read(0);
MAX6675_CS3 = 1;
return(tmp3);
}
//////////////////////////////////////////////////
/////////////////// SENSOR 4 //////////////////
union CUATRO
{
char state4:1;
char deviceID4:1;
char open4:1;
char temperature4:12;
char sign4:1;
unsigned output4;
}Max6675Data4;

void MAX6675_Init4()
{
MAX6675_CS4_Direction = 0;
MAX6675_CS4 = 1;
}
unsigned Max6675_Read4()
{
unsigned tmp4;
MAX6675_CS4 = 0;
Hi(tmp4) = SPI1_Read(0);
Lo(tmp4) = SPI1_Read(0);
MAX6675_CS4 = 1;

100
return(tmp4);
}
/////////////////////////////////////////
/////////////////// SENSOR 5 //////////////////
union CINCO
{
char state5:1;
char deviceID5:1;
char open5:1;
char temperature5:12;
char sign5:1;
unsigned output5;
}Max6675Data5;

void MAX6675_Init5()
{
MAX6675_CS5_Direction = 0;
MAX6675_CS5 = 1;
}
unsigned Max6675_Read5()
{
unsigned tmp5;
MAX6675_CS5 = 0;
Hi(tmp5) = SPI1_Read(0);
Lo(tmp5) = SPI1_Read(0);
MAX6675_CS5 = 1;
return(tmp5);
}
/////////////////////////////////////////
/////////////////// SENSOR 6 //////////////////
union SEIS
{
char state6:1;
char deviceID6:1;

101
char open6:1;
char temperature6:12;
char sign6:1;
unsigned output6;
}Max6675Data6;

void MAX6675_Init6()
{
MAX6675_CS6_Direction = 0;
MAX6675_CS6 = 1;
}
unsigned Max6675_Read6()
{
unsigned tmp6;
MAX6675_CS6 = 0;
Hi(tmp6) = SPI1_Read(0);
Lo(tmp6) = SPI1_Read(0);
MAX6675_CS6 = 1;
return(tmp6);
}

/////////////////////////////////////////
/////////////////// SENSOR 7 //////////////////
union SIETE
{
char state7:1;
char deviceID7:1;
char open7:1;
char temperature7:12;
char sign7:1;
unsigned output7;
}Max6675Data7;

void MAX6675_Init7()

102
{
MAX6675_CS7_Direction = 0;
MAX6675_CS7 = 1;
}
unsigned Max6675_Read7()
{
unsigned tmp7;
MAX6675_CS7 = 0;
Hi(tmp7) = SPI1_Read(0);
Lo(tmp7) = SPI1_Read(0);
MAX6675_CS7 = 1;
return(tmp7);
}
/////////////////////////////////////////

//////// FUNCIÓN LECTURA DE TECLADO //////////


void teclado(void){
if((adc0>545)&&(adc0<555))
{k='0';
}
else if((adc0>730)&&(adc0<740))
{k='1';
}
else if((adc0>570)&&(adc0<580))
{k='2';
}
else if((adc0>455)&&(adc0<465))
{k='3';
}
else if((adc0>790)&&(adc0<810))
{k='4';
}
else if((adc0>610)&&(adc0<625))
{k='5';

103
}
else if((adc0>480)&&(adc0<490))
{k='6';
}
else if((adc0>860)&&(adc0<870))
{k='7';
}
else if((adc0>640)&&(adc0<655))
{k='8';
}
else if((adc0>500)&&(adc0<515))
{k='9';
}
else if((adc0>690)&&(adc0<700))
{k='A';
}
else if((adc0>440)&&(adc0<455))
{k='I';
}
}
void InitMain() {
ADCON1 = 0x0A; //// Puertos analógicos de A0 a A4
TRISA = 0xFF; /// Puerto A como entradas
PORTB=0;
TRISB=0;
PORTE=0;
TRISE=0x01;
PORTC=0;
TRISC=0;
// PORTD=0;
TRISD2_Bit=0;
TRISD3_Bit=0;
// PWM1_Init(2000); // Initialize PWM1 module at 5KHz
}

104
////////////////////////////////////////
void main()
{
InitMain();

///////// INICIALIZACIÓN DE VARIABLES ///////////


min1=0.0; //inicialización variables
max1=1000.0;
iT_1=0.0;
eT_1=0.0;
a_1=0.1243; //constantes del PID
b_1=0.0062;
c_1=0.6215;
temp_limit=700.0; //Temperatura a alcanzar

PORTC.F0=1; /// prende led stop

/// INICIALIZA LIBRERIA SPI ///


SPI1_Init();

// MAX6675_Init();
/// INICIALIZA LIBRERIA LCD ///
Lcd_Init();

Lcd_Cmd( _LCD_CURSOR_OFF );
Lcd_Cmd( _LCD_CLEAR );

/// INICIALIzo comunicación usb ///


HID_Enable(&Leer_USB,&Escribir_USB);

/// mensaje de inicio ///


Lcd_Out( 1, 3, "TESTEO TERMINCO" );
Lcd_Out( 2, 1, "NORMA ASTM D-4108" );
Delay_ms( 1000 );

105
Lcd_Out( 1, 1, "TRANSMITANCIA TERMICA" );
Lcd_Out( 2, 1, "MATERIALES TEXTILES" );
/*PWM1_Start(); // start PWM1
Delay_ms(100);*/
ADC_Init();
Delay_ms( 1000 );
Lcd_Cmd( _LCD_CLEAR );

while(1)
{
//// CODIGO DE INICIO PARA EMPEZAR EL TEST ////
while(k!='A' && k!='I'){ // no se precione en el teclado A E I
adc0 = ADC_Read(0);
teclado();
Lcd_Out( 1, 1, "Preciona ON/C " );
Lcd_Out( 2, 1, "para iniciar prueba" );
if(k=='A'){
Lcd_Cmd( _LCD_CLEAR );
band=1;
}
PORTC.F0=1; //LED STOP
}

/// CODIGO PARA VERIFICAR QUE LA TAPA ESTÁ CERRADA ////


while (PORTE.F0==0){
Lcd_Out( 1, 1, "Para iniciar prueba" );
Lcd_Out( 2, 1, " cerrar la tapa" );
if(PORTE.F0==1){
Lcd_Cmd( _LCD_CLEAR );
}
PORTC.F0=1; //LED STOP
PORTD.F2=0; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN
}

106
PORTC.F0=0; //LED STOP
PORTD.F2=1; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN
/// CODIGO PARA REVISAR DATOS /////

while(k!='I'){
if(PORTE.F0==1){
PORTC.F0=0; //LED STOP
PORTD.F2=1; //LED INICIO
PORTD.F3=0; //LED EJECUCIÓN
adc0 = ADC_Read(0);
teclado();
// Lcd_Chr(1,1,k);
Lcd_Out( 1, 1, "Pres = para iniciar");
Lcd_Out( 2, 1, "t=0.2mm A=0.065m2" ); //PROPUESTA ESPESOR T=0.2mm y
Área= 0.065m2
if(k=='I'){
Lcd_Cmd( _LCD_CLEAR );
band=1;
Delay_ms(10);
}
}

//codigo para explicación del uso //


Lcd_Out( 1, 1, "Pres del 1 al 8");
Lcd_Out( 2, 1, "para ver valores" );
Delay_ms( 1000 );
Lcd_Cmd( _LCD_CLEAR );
PORTC.F0=0; //LED STOP
PORTD.F2=1; //LED INICIO

/// codigo principal de calculos y envio de datos USB ///

107
while(band==1){

//leds indicadores

// PORTD.F3=1; //LED EJECUCIÓN


PORTD.F3=0;

// leer teclado
adc0 = ADC_Read(0); // Lee analógico A0 TECLADO
teclado();
WordToStr ( adc0, adc ); // convierte entero a cadena para vizualizar en LCD

//LECTURA DEL TERMISTOR 1


adc1 = ADC_Read(1);
Delay_ms( 1 );
WordToStr ( adc1, termistor1 );

//LECTURA DEL TERMISTOR 2


adc2 = ADC_Read(2);
Delay_ms( 1 );
WordToStr ( adc2, termistor2 );

//LECTURA DEL TERMISTOR 3


adc3 = ADC_Read(3);
Delay_ms( 1 );
WordToStr ( adc3, termistor3 );

//LECTURA SENSOR DE HUMEDAD


valor = ADC_Read(4); // Lee analógico A0 TECLADO
Delay_ms( 1 );
WordToStr ( valor, humedad );

/*// control PID


valor = ADC_Read(4); // Lee analógico A0 TECLADO

108
Delay_ms( 1 );
yT=valor*5000.0/1024.0; //conversión a mV (0.25V a 250mV)
rT=temp_limit;
eT=rT-yT; //Cálculo error
iT=b_1*eT+iT0; //Cálculo del término integral
dT=c_1*(eT-eT0); //Cálculo del término derivativo
uT=iT+a_1*eT+dT; //Cálculo de la salida PID
if (uT>max1) { //Salida PID si es mayor que el MAX
uT=max1;}
else {
if (uT<min1){ //Salida PID si es menor que el MIN
uT=min1;}
}
control=uT;
PWM1_Set_Duty(control); // Set current duty for PWM1
if(cntr!=control){
Lcd_Cmd( _LCD_CLEAR );
}
iT0=iT; //Guardar variables
eT0=eT;
cntr=control;
FloatToStr ( control, ctr_text ); // convierte entero a cadena para vizualizar en LCD
Lcd_Out(2,1,ctr_text);*/

/// LEE EL TERMOPAR 1


MAX6675_Init();
*(unsigned*)&Max6675Data = MAX6675_Read();
WordToStr( Max6675Data.temperature >> 1, texto );
// Lcd_Out( 1, 1, texto+2 );
// Lcd_Out_CP( texto+2 );
// Lcd_Chr_CP( 223 );
// Lcd_Chr_CP( 'C' );
/// LEE EL TERMOPAR 2
MAX6675_Init2();

109
*(unsigned*)&Max6675Data2 = MAX6675_Read2();
WordToStr( Max6675Data2.temperature2 >> 1, texto2 );
// Lcd_Out( 1, 5, texto2+2 );

/// LEE EL TERMOPAR 3


MAX6675_Init3();
*(unsigned*)&Max6675Data3 = MAX6675_Read3();
WordToStr( Max6675Data3.temperature3 >> 1, texto3 );
// Lcd_Out( 1, 10, texto3+2 );

/// LEE EL TERMOPAR 4


MAX6675_Init4();
*(unsigned*)&Max6675Data4 = MAX6675_Read4();
WordToStr( Max6675Data4.temperature4 >> 1, texto4 );
// Lcd_Out( 2, 1, texto4+2 );

/// LEE EL TERMOPAR 5


MAX6675_Init5();
*(unsigned*)&Max6675Data5 = MAX6675_Read5();
WordToStr( Max6675Data5.temperature5 >> 1, texto5 );
// Lcd_Out( 2, 5, texto5+2 );

/// LEE EL TERMOPAR 6


MAX6675_Init6();
*(unsigned*)&Max6675Data6 = MAX6675_Read6();
WordToStr( Max6675Data6.temperature6 >> 1, texto6 );
// Lcd_Out( 2, 10, texto6+2 );

/// LEE EL TERMOPAR 7


MAX6675_Init7();
*(unsigned*)&Max6675Data7 = MAX6675_Read7();
WordToStr( Max6675Data7.temperature7 >> 1, texto7 );

/// CONVIERTE DE cadena a entero

110
temp1=atoi(texto);
temp2=atoi(texto2);
temp3=atoi(texto3);
temp4=atoi(texto4);
temp5=atoi(texto5);
temp6=atoi(texto6);
temp7=atoi(texto7);
//////////// CONTROL VENTILADORES ///////

///////// VENTILADOR TEST PLATE ////////////


if(temp1>=80 || temp2>=80 || adc1>= 574){
PORTC.F6=1;
}
else{
PORTC.F6=0;
}
///////// VENTILADOR GUARD RING ////////////
if(temp3>=80 || temp4>=80 || adc2>= 574){
PORTC.F1=1;
}
else{
PORTC.F1=0;
}
///////// VENTILADOR BUTTOM PLATE ////////////
if(temp5>=80 || temp6>=80 || adc3>= 574){
PORTE.F1=1;
}
else{
PORTE.F1=0;
}

///// formulas de la NORMA ////


U1=P_l/(Area*(temp7 - temp1)); //// Cálculo de U1

111
Ubp=U1*1.2; /// Ver 9.5 DE NORMA pruebas físicas

U2=(Ubp*U1)/(Ubp-U1); // Intrinsic transmittance


k_c=U2*(t/1000); //Intrinsic thermal conductivity
R_t=1/U2; //Intrinsic thermal resistance
Rp=1/k_c; //Intrinsic thermal resistivity
Clo_U=1.137/U2; //Intrinsic thermal resistance in Clo
Clo_k=1.137/k_c; //Specific thermal resistance in Clo
B=0.001/t; //Bulk density

switch(k){ ///CONTROL POR CADA NÚMERO DEL TECLADO


case '1': Lcd_Out(1,1, texto);
break;
case '2': Lcd_Out(1,1, texto2+2);
break;
case '3': Lcd_Out(1,1, texto3+2);
break;
case '4': Lcd_Out(1,1, texto4+2);
break;
case '5': Lcd_Out(1,1, texto5+2);
break;
case '6': Lcd_Out(1,1, texto7+2);
break;
case '7': Lcd_Out(1,1, humedad);
break;
case '8': Lcd_Out(1,1, termistor1);
break;
case '9': Lcd_Out(1,1, termistor3);
break;
case 'I': break;
default: band=0;
break;
}
//BORRO PANTALLA CADA QUE CAMBIAS DE VALOR DE TECLADO

112
if(k1!=k){
Lcd_Cmd( _LCD_CLEAR );
}
// VERIFICA QUE DURANTE LA EJECUCIÓN NO SE HABRA LA TAPA
if(PORTE.F0==0){
band=0;
Lcd_Cmd( _LCD_CLEAR );
}

//// ENVÍO DATOS POR USB

Escribir_USB[10] = temp1;
Escribir_USB[11] = temp2;
Escribir_USB[12] = temp3;
Escribir_USB[13] = temp4;
Escribir_USB[14] = temp5;
Escribir_USB[15] = temp6;
Escribir_USB[16] = temp7;
Escribir_USB[17] = Hi(adc1);
Escribir_USB[18] = Lo(adc1);

while(!HID_Write(&Escribir_USB, 64));

Delay_ms( 100 );
// GUARDA UN CAMBIO DEL TECLADO
k1=k;
}
}

113
Programación en Visual Studio para la Interface del Probador Térmico Textil
(Estándar ASTM D1518)
1. Declaración de librerías usadas para la comunicación con Microsoft Word.
Imports Microsoft.Office.Interop.Word
Imports System.IO
Imports Microsoft.Office.Interop

2. Inicio de programación.
Public Class Form1

3. Declaración de variables para almacenar valores del microcontrolador y de conteos.


Dim Termopar1 As Integer
Dim Termopar2 As Integer
Dim Termopar3 As Integer
Dim Termopar4 As Integer
Dim Termopar5 As Integer
Dim Termopar6 As Integer
Dim Termopar7 As Integer
Dim Termistor1 As Integer
Dim Termistor2 As Integer
Dim Termistor3 As Integer
Dim Humedad1 As Integer
Dim a As Integer ‘Variable para llevar conteo de la cantidad de muestras que se han
tomado
Dim H As Integer

4. Declaración de variables usadas para los resultados de las formulas.


'///////////////////////////////// RESULTADOS DE FORMULAS ////////////////////////////////////////////////////
Dim T_m As Integer 'MEAN
Dim U_bp As Integer ' Ubp
Dim U_1 As Integer ' Ubp
Dim U_2 As Integer ' Ubp
Dim B As Integer 'Density
Dim k As Integer 'Conductivity

114
Dim R As Integer 'Resistance
Dim R_Prima As Integer 'Resistivity

5. Declaración de variables para variables usadas en las formulas.


'///////////////////////////////// VARIABLES DE FORMULAS ////////////////////////////////////////////////////////
Dim T_a As Integer 'MEAN
Dim T_p As Integer 'MEAN
Dim P As Integer 'Ubp
Dim Area As Integer 'Ubp
Dim M As Integer 'Density
Dim AreaTela As Integer 'Density
Dim t As Integer 'Density
Dim t_i As Integer 'Conductivity

6. Declaración de variables usadas para la comunicación con Microsoft Word.


Dim NombreDocumento As String
Dim MSWord As New Word.Application
Dim Documento As Word.Document

7. Configuración de comunicación Human Interface Device (HID).


'//////////////////////////////////////////////////// COMUNICACION HID ////////////////////////////////////////////////
' IDs del VID y PID
Private Const VendorID As Integer = &H1234 'Remplace si
Private Const ProductID As Integer = &H1 'Utiliza otro

' Buffers de Escritura y Lectura


Private Const BufferInSize As Integer = 64 '64bytes de Entrada
Private Const BufferOutSize As Integer = 64 '64bytes de Salida
Dim BufferIn(BufferInSize) As Byte 'Recivimos los datos y los almacenamos en
BufferIn
Dim BufferOut(BufferOutSize) As Byte 'Guardamos los datos que vamos a
transmitir en este Buffer
Dim D0, D1, D2, D3, D4, D5, D6, D7 As Byte 'Leds
Dim dato1 As Byte 'PWM1

115
Dim dato As Byte 'PWM2
' ****************************************************************
' Cuando iniciamos la Simulacion, Lo primero que
' Se carga es el Formulario e iniciamos la coneccion HID
'*****************************************************************
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
GroupBox3.Enabled = False
ConnectToHID(Me) ' No Remover
End Sub

'*****************************************************************
' Desconectamos el HID, cuando cerramos el formulario
'*****************************************************************
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
DisconnectFromHID()
End Sub

'*****************************************************************
' Se conecto un dispositivo!
'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID
Then
' ** Escriba el codigo que quiera, luego que se Conecto el Tutorial_1._1 **
Label1.Text = "USB ON"
OvalShape1.BackColor = Color.Lime
GroupBox3.Enabled = True
Termopar1 = True
Termopar2 = True
Termopar3 = True
Termopar4 = True
Termopar5 = True

116
Termopar6 = True
Termopar7 = True
Termistor1 = True
Termistor2 = True
Termistor3 = True
Humedad1 = True
'Timer1 = True
End If
End Sub

'*****************************************************************
' Se desconecto
'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID
Then
hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
' ** Escriba el codigo que quiera XD **
Label1.Text = "USB OFF"
OvalShape1.BackColor = Color.DarkGreen
GroupBox3.Enabled = False
Termopar1 = False
Termopar2 = False
Termopar3 = False
Termopar4 = False
Termopar5 = False
Termopar6 = False
Termopar7 = False
Termistor1 = False
Termistor2 = False
Termistor3 = False
Humedad1 = False
'Timer1 = False
End If

117
End Sub
'*****************************************************************
' Mantenemos viva la comunicacion
' No tocar!
'*****************************************************************
Public Sub OnChanged()
' Evento que nos indica si hay datos para leer
' La condicion es TRUE, si se recibieron datos del PIC
Dim pHandle As Integer
pHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
End Sub

8. Asignación de valores enviados por el microcontrolador a ProgressBars y Labels que


mostrarán las lecturas de temperatura en tiempo real de forma visible al usuario en la
interface.
'//////////////////////////////////////////////////// LECTURA EN TIEMPO REAL ////////////////////////////////////
'*****************************************************************
' Es el evento o interrupción que nos permite Leer los datos
'*****************************************************************
Public Sub OnRead(ByVal pHandle As Integer)
'
If hidRead(pHandle, BufferIn(0)) Then
' ** Escribe tu codigo :D **
' El primer byte, es de informe BufferIn(0) nunca se utiliza
'ProgressBar1.Value = Val(BufferIn(13)) + (Val(BufferIn(12)) << 8) 'Entrada
analogica
ProgressBar1.Value = Val(BufferIn(11))
ProgressBar2.Value = Val(BufferIn(12))
ProgressBar3.Value = Val(BufferIn(13))
ProgressBar4.Value = Val(BufferIn(14))
ProgressBar5.Value = Val(BufferIn(15))
ProgressBar6.Value = Val(BufferIn(16))
ProgressBar7.Value = Val(BufferIn(17))

118
ProgressBar14.Value = Val(BufferIn(18))
ProgressBar13.Value = Val(BufferIn(19))
ProgressBar12.Value = Val(BufferIn(20))

ProgressBar10.Value = Val(BufferIn(21))

Label5.Text = Val(BufferIn(11))
Label12.Text = Val(BufferIn(12))
Label13.Text = Val(BufferIn(13)) + 1
Label14.Text = Val(BufferIn(14)) + 1
Label15.Text = Val(BufferIn(15)) + 1
Label16.Text = Val(BufferIn(16)) + 1
Label18.Text = Val(BufferIn(17))

Label33.Text = Val(BufferIn(18)) + 17 ' / 2 - 1


Label27.Text = Val(BufferIn(19)) + 17 '/ 2 - 1
Label26.Text = Val(BufferIn(20)) + 17 '/ 2 - 1

Label38.Text = Val(BufferIn(21)) / 3
End If
End Sub

9. Configuración para la función del botón REPORTE, el cual hará la comunicación a


Microsoft Word para llenar el reporte del estándar ASTM de forma automática.
'/////////////////////////////////// FUNCIONAMIENTO DE BOTON *REPORTE* //////////////////////////
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
NombreDocumento = NombreDoc.Text

10. Fuentes usadas para guardar el reporte y para adquirir la guía del reporte.
File.Copy("C:\Reporte\PRUEBA.docx", "C:\Users\Diego\Desktop\" +
NombreDocumento + ".docx")
Documento = MSWord.Documents.Open("C:\Users\Diego\Desktop/" +
NombreDocumento + ".docx")

119
11. Configuración para asignar la relación de los TextBox con los marcadores en el
reporte de Microsoft Word.
Documento.Bookmarks.Item("Empresa").Range.Text = Empresa1.Text
Documento.Bookmarks.Item("NombreResponsable").Range.Text = RespPrueba.Text
Documento.Bookmarks.Item("Fecha").Range.Text = Fecha1.Text
Documento.Bookmarks.Item("DesMat").Range.Text = DesMaterial.Text
Documento.Bookmarks.Item("DesMet").Range.Text = DesMetodo.Text
Documento.Bookmarks.Item("Mean").Range.Text = Tm.Text
Documento.Bookmarks.Item("U_b_p").Range.Text = Ubp.Text
Documento.Bookmarks.Item("U_1_").Range.Text = U1.Text
Documento.Bookmarks.Item("U_2_").Range.Text = U2.Text
Documento.Bookmarks.Item("Peso").Range.Text = Peso1.Text
Documento.Bookmarks.Item("Espesor").Range.Text = Espesor1.Text
Documento.Bookmarks.Item("Den").Range.Text = Density.Text
Documento.Bookmarks.Item("Cond").Range.Text = Conductivity.Text
Documento.Bookmarks.Item("Rece").Range.Text = Resistance.Text
Documento.Bookmarks.Item("Rety").Range.Text = Resistivity.Text
Documento.Bookmarks.Item("Temp").Range.Text = Temperatura.Text
Documento.Bookmarks.Item("Hum").Range.Text = H

Documento.Save()
MSWord.Visible = True

End Sub

12. Configuración para la función del botón INICIO, el cual sirve para comenzar a tomar
los muestreos, mostrarlos en los TextBoxs y resolver las formulas al tener la última
lectura de muestreo.
'/////////////////////////////// FUNCIONAMIENTO DE BOTON *INICIO* //////////////////////////////////////
Private Sub ButtonINICIAR_Click(sender As System.Object, e As System.EventArgs)
Handles ButtonINICIAR.Click
a=0

120
13. Configuración para los intervalos de tiempo entre cada muestreo.
Timer1.Interval = 1000 'Velocidad obtencion de datos en la grafica
Timer1.Start()

14. Configuración de lo que se va a visualizar en los TextBoxs de los muestreos.


'///////////// MUESTRA DE TERMOPAR 1 ///////////////////////////////
TextBox11.AppendText("Termopar 1 " & vbCrLf)
TextBox11.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 2 ///////////////////////////////
TextBox14.AppendText("Termopar 2 " & vbCrLf)
TextBox14.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 3 ///////////////////////////////
TextBox17.AppendText("Termopar 3 " & vbCrLf)
TextBox17.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 4 ///////////////////////////////
TextBox18.AppendText("Termopar 4 " & vbCrLf)
TextBox18.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 5 ///////////////////////////////
TextBox12.AppendText("Termopar 5 " & vbCrLf)
TextBox12.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 6 ///////////////////////////////
TextBox15.AppendText("Termopar 6 " & vbCrLf)
TextBox15.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMOPAR 7 ///////////////////////////////
TextBox19.AppendText("Termopar 7 " & vbCrLf)
TextBox19.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMISTOR 1 ///////////////////////////////
TextBox13.AppendText("Termistor 1 " & vbCrLf)
TextBox13.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMISTOR 2 ///////////////////////////////
TextBox16.AppendText("Termistor 2 " & vbCrLf)
TextBox16.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE TERMISTOR 3 ///////////////////////////////

121
TextBox21.AppendText("Termistor 3 " & vbCrLf)
TextBox21.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)
'///////////// MUESTRA DE HUMEDAD ///////////////////////////////
TextBox22.AppendText("Sensor de Humedad " & vbCrLf)
TextBox22.AppendText("Hora " & vbTab & " Humedad" & vbCrLf)
End Sub

15. Rutina del Timer.


Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles
Timer1.Tick

16. Valores de los termopares guardados en variables.


Termopar1 = Val(BufferIn(11))
Termopar2 = Val(BufferIn(12))
Termopar3 = Val(BufferIn(13))
Termopar4 = Val(BufferIn(14))
Termopar5 = Val(BufferIn(15))
Termopar6 = Val(BufferIn(16))
Termopar7 = Val(BufferIn(17))
Termistor1 = Val(BufferIn(18)) + 17
Termistor2 = Val(BufferIn(19)) + 17
Termistor3 = Val(BufferIn(20)) + 17
Humedad1 = Val(BufferIn(21)) / 3

17. Variable para guardar la hora de cada muestreo.


Dim HORA As String = TimeOfDay.ToLongTimeString

18. Configuración para actualizar los valores de las variables HORA y la de los
termopares para mostrarlos en los TextBoxs.
TextBox11.AppendText(HORA & vbTab & Termopar1 & vbCrLf)
TextBox14.AppendText(HORA & vbTab & Termopar2 & vbCrLf)
TextBox17.AppendText(HORA & vbTab & Termopar3 & vbCrLf)
TextBox18.AppendText(HORA & vbTab & Termopar4 & vbCrLf)
TextBox12.AppendText(HORA & vbTab & Termopar5 & vbCrLf)

122
TextBox15.AppendText(HORA & vbTab & Termopar6 & vbCrLf)
TextBox19.AppendText(HORA & vbTab & Termopar7 & vbCrLf)
TextBox13.AppendText(HORA & vbTab & Termistor1 & vbCrLf)
TextBox16.AppendText(HORA & vbTab & Termistor2 & vbCrLf)
TextBox21.AppendText(HORA & vbTab & Termistor3 & vbCrLf)
TextBox22.AppendText(HORA & vbTab & Humedad1 & vbCrLf)

a=a+1
If (a > 9) Then
Timer1.Stop()
End If

19. Configuración para realizar las formulas después del último muestreo.
'///////////////////////////////////////// FORMULAS /////////////////////////////////////////////////////////////
If (a = 10) Then

20. Asignación de valores a las variables de las formulas.


H = Humedad1
T_a = Termopar7 'MEAN
T_p = (Termopar1 + Termopar2) / 2 'MEAN
P = 5 'Ubp HAY QUE MODIFICAR!!!!
Area = 100 'Ubp
M = Val(MasaDeLaTela.Text) 'Density
AreaTela = Val(AreaDeLaTela.Text) 'Density
t = Val(Espesor1.Text) 'Density
'M = 300 'Density HAY QUE MODIFICAR!!!!!!
't = 5 'Density HAY QUE MODIFICAR!!!!!!
t_i = 5 'Conductivity HAY QUE MODIFICAR!!!!!

21. Fórmulas para mostrar resultados en TextBoxs.


'/////////////////////////////// MEAN TEMP ///////////////////////////////////////
Tm.Text = (T_a + T_p) / 2
T_m = (T_a + T_p) / 2
'/////////////////////////////// Ubp /////////////////////////////////////////////

123
Ubp.Text = P / (Area * (T_p - T_a))
U_bp = (P / (Area * (T_p - T_a))) + 10 'Se añadio una suma al final de la formula
para que no saliera 0 en U2
'/////////////////////////////// U1 /////////////////////////////////////////////
U1.Text = P / (Area * (T_p - T_a))
U_1 = (P / (Area * (T_p - T_a))) + 2 'Se añadio una suma al final de la formula para
que no saliera 0 en U2
'/////////////////////////////// U2 /////////////////////////////////////////////
U2.Text = (U_bp * U_1) / (U_bp - U_1)
U_2 = (U_bp * U_1) / (U_bp - U_1)
'/////////////////////////////// BULK DENSITY ///////////////////////////////////
Density.Text = (M / AreaTela) / t
B = (M / AreaTela) / t
'B = M / t
'/////////////////////////////// Thermal Conductivity ///////////////////////////
Conductivity.Text = U_2 * t_i / 1000
k = U_2 * t_i / 1000
'/////////////////////////////// Thermal Resistance /////////////////////////////
Resistance.Text = 1 / U_2
R = 1 / U_2
'/////////////////////////////// Thermal Resistivity ////////////////////////////
Resistivity.Text = 1 / (U_2 * t_i / 1000)
'R_Prima = 1 / k 'SE COMENTA ESTA LINEA PORQUE NO SE PUEDE
GUARDAR UNA VARIABLE CON VALOR INFINITO

End If
End Sub

End Class

124
Programación en Visual Studio para el Estándar ASTM D4108
1. Declaración de librerías usadas para la comunicación con Microsoft Word.
Imports Microsoft.Office.Interop.Word
Imports System.IO
Imports Microsoft.Office.Interop

2. Inicio de programación.
Public Class Form1

3. Declaración de variables para almacenar valores del microcontrolador y de conteos.


Dim Termopar1 As Integer
Dim F1 As Integer
Dim F2 As Integer
Dim F3 As Integer
Dim F4 As Integer
Dim F5 As Integer
Dim F6 As Integer
Dim T As Integer

4. Declaración de variables usadas para los resultados de las formulas.


'///////////////////////////////// RESULTADOS DE FORMULAS //////////////////////////////////////////////
Dim R1 As Integer
Dim R2 As Integer
Dim R3 As Integer
Dim R4 As Integer
Dim R5 As Integer
Dim R6 As Integer

5. Declaración de variables usadas para la comunicación con Microsoft Word.


Dim NombreDocumento As String
Dim MSWord As New Word.Application
Dim Documento As Word.Document

6. Configuración de comunicación Human Interface Device (HID).

125
'//////////////////////////////////////////////////// COMUNICACION HID ////////////////////////////////////////////////
' IDs del VID y PID
Private Const VendorID As Integer = &H1234 'Remplace si
Private Const ProductID As Integer = &H1 'Utiliza otro

' Buffers de Escritura y Lectura


Private Const BufferInSize As Integer = 64 '64bytes de Entrada
Private Const BufferOutSize As Integer = 64 '64bytes de Salida
Dim BufferIn(BufferInSize) As Byte 'Recivimos los datos y los almacenamos en
BufferIn
Dim BufferOut(BufferOutSize) As Byte 'Guardamos los datos que vamos a
transmitir en este Buffer
Dim D0, D1, D2, D3, D4, D5, D6, D7 As Byte 'Leds
Dim dato1 As Byte 'PWM1
Dim dato As Byte 'PWM2

' ****************************************************************
' Cuando iniciamos la Simulacion, Lo primero que
' Se carga es el Formulario e iniciamos la coneccion HID
'*****************************************************************
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
GroupBox3.Enabled = False
ConnectToHID(Me) ' No Remover
End Sub

'*****************************************************************
' Desconectamos el HID, cuando cerramos el formulario
'*****************************************************************
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
DisconnectFromHID()
End Sub
'*****************************************************************

126
' Se conecto un dispositivo!
'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID
Then
' ** Escriba el codigo que quiera, luego que se Conecto el Tutorial_1._1 **
Label1.Text = "USB ON"
OvalShape1.BackColor = Color.Lime
GroupBox3.Enabled = True
Termopar1 = True
End If
End Sub

'*****************************************************************
' Se desconecto
'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID
Then
hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
' ** Escriba el codigo que quiera XD **
Label1.Text = "USB OFF"
OvalShape1.BackColor = Color.DarkGreen
GroupBox3.Enabled = False
Termopar1 = False

'Timer1 = False

End If
End Sub

'*****************************************************************
' Mantenemos viva la comunicacion
' No tocar!

127
'*****************************************************************
Public Sub OnChanged()
' Evento que nos indica si hay datos para leer
' La condicion es TRUE, si se recibieron datos del PIC
Dim pHandle As Integer
pHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
End Sub

7. Asignación de valores enviados por el microcontrolador a un ProgressBar y a un


Label que mostrará las lecturas de temperatura en tiempo real de forma visible al
usuario en la interface.
'//////////////////////////////////////////////////// LECTURA EN TIEMPO REAL ////////////////////////////////////
'*****************************************************************
' Es el evento o interrupcion que nos permite Leer los datos
'*****************************************************************
Public Sub OnRead(ByVal pHandle As Integer)
'
If hidRead(pHandle, BufferIn(0)) Then
' ** Escribe tu codigo :D **
' El primer byte, es de informe BufferIn(0) nunca se utiliza
'ProgressBar1.Value = Val(BufferIn(13)) + (Val(BufferIn(12)) << 8) 'Entrada
analogica
ProgressBar1.Value = Val(BufferIn(11))

Label5.Text = Val(BufferIn(11))
End If
End Sub

8. Configuración para la función del botón REPORTE, el cual hará la comunicación a


Microsoft Word para llenar el reporte del estándar ASTM de forma automática.

128
'/////////////////////////////////// FUNCIONAMIENTO DE BOTON *REPORTE* //////////////////////////
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
NombreDocumento = NombreDoc.Text

9. Fuentes usadas para guardar el reporte y para adquirir la guía del reporte.
File.Copy("C:\Reporte\Reporte de ASTM D4108.docx", "C:\Users\Diego\Desktop\" +
NombreDocumento + ".docx")
Documento = MSWord.Documents.Open("C:\Users\Diego\Desktop/" +
NombreDocumento + ".docx")

10. Configuración para asignar la relación de los TextBox con los marcadores en el
reporte de Microsoft Word.
Documento.Bookmarks.Item("empresa").Range.Text = empresa1.Text
Documento.Bookmarks.Item("responsable").Range.Text = responsable1.Text
Documento.Bookmarks.Item("fecha").Range.Text = fecha1.Text
Documento.Bookmarks.Item("material").Range.Text = material1.Text
Documento.Bookmarks.Item("Nlote").Range.Text = Nlote1.Text
Documento.Bookmarks.Item("Mlote").Range.Text = Mlote1.Text
Documento.Bookmarks.Item("Nprueba").Range.Text = Nprueba1.Text
Documento.Bookmarks.Item("Tgas").Range.Text = Tgas1.Text
Documento.Bookmarks.Item("Pgas").Range.Text = Pgas1.Text
Documento.Bookmarks.Item("Csimple").Range.Text = Csimple1.Text
Documento.Bookmarks.Item("Cmultiple").Range.Text = Cmultiple1.Text
Documento.Bookmarks.Item("montaje").Range.Text = montaje1.Text
Documento.Bookmarks.Item("posicion").Range.Text = posicion1.Text
Documento.Bookmarks.Item("tpp").Range.Text = PromedioTPP.Text
Documento.Bookmarks.Item("ruptura").Range.Text = ruptura1.Text
Documento.Bookmarks.Item("fusion").Range.Text = fusion1.Text
Documento.Bookmarks.Item("goteo").Range.Text = goteo1.Text
Documento.Bookmarks.Item("carbo").Range.Text = carbo1.Text
Documento.Bookmarks.Item("fragilidad").Range.Text = fragilidad1.Text
Documento.Bookmarks.Item("encogimiento").Range.Text = encogimiento1.Text
Documento.Bookmarks.Item("encendido").Range.Text = encendido1.Text

129
Documento.Save()
MSWord.Visible = True

End Sub

11. Configuración para la función del botón INICIO, el cual sirve para comenzar a tomar
los muestreos, mostrarlos en el TextBox y resolver las formulas al tener la última
lectura de muestreo.
'/////////////////////////////// FUNCIONAMIENTO DE BOTON *INICIO*
///////////////////////////////////////////////////////////
Private Sub ButtonINICIAR_Click(sender As System.Object, e As System.EventArgs)
Handles ButtonINICIAR.Click
T=0

12. Configuración para los intervalos de tiempo entre cada muestreo.


Timer1.Interval = 1000 'Velocidad obtencion de datos en la grafica
Timer1.Start()

13. Configuración de lo que se va a visualizar en el TextBox de muestreos.


'///////////// MUESTRA DE TERMOPAR 1 ///////////////////////////////
TextBox11.AppendText("Termopar 1 " & vbCrLf)
TextBox11.AppendText("Hora " & vbTab & " Temperatura" & vbCrLf)

End Sub

14. Rutina del Timer.


Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles
Timer1.Tick

15. Valor del termopar guardado en la variable.


Termopar1 = Val(BufferIn(11))
16. Variable para guardar la hora de cada muestreo.
Dim HORA As String = TimeOfDay.ToLongTimeString

130
17. Configuración para actualizar los valores de las variables HORA y del termopar para
mostrarlos en el TextBox.
TextBox11.AppendText(HORA & vbTab & Termopar1 & vbCrLf)

T=T+1
If (T > 5) Then
Timer1.Stop()
End If

18. Configuración para realizar las formulas después del último muestreo.
'///////////////////////////////////////// FORMULAS /////////////////////////////////////////////////////////////
If (T = 1) Then

19. Asignación de valor a la variable de las formulas.


F1 = (Termopar1 / 8.9) * 5

20. Fórmulas para mostrar resultados en TextBoxs.


'//////////////////////////////////// TPP 1 //////////////////////////////////////
Tpp1.Text = F1 * T
R1 = F1 * T
End If
If (T = 2) Then
F2 = (Termopar1 / 8.9) * 5
'//////////////////////////////////// TPP 2 //////////////////////////////////////
Tpp2.Text = F2 * T
R2 = F1 * T
End If
If (T = 3) Then
F3 = (Termopar1 / 8.9) * 5
'//////////////////////////////////// TPP 3 //////////////////////////////////////
Tpp3.Text = F3 * T
R3 = F1 * T
End If

131
If (T = 4) Then
F4 = (Termopar1 / 8.9) * 5
'//////////////////////////////////// TPP 4 //////////////////////////////////////
Tpp4.Text = F4 * T
R4 = F1 * T
End If
If (T = 5) Then
F5 = (Termopar1 / 8.9) * 5
'//////////////////////////////////// TPP 5 //////////////////////////////////////
Tpp5.Text = F5 * T
R5 = F1 * T
End If

If (T = 6) Then
F6 = (Termopar1 / 8.9) * 5
'//////////////////////////////////// TPP 6 //////////////////////////////////////
Tpp6.Text = F6 * T
R6 = F1 * T
PromedioTPP.Text = (R1 + R2 + R3 + R4 + R5 + R6) / 6
End If

End Sub

End Class

132

Anda mungkin juga menyukai