dataloger para termopar - departament …deeea.urv.cat/public/propostes/pub/pdf/340pub.pdfproyecto...

286
DATALOGER PARA TERMOPAR (PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA) MEMORIA DESCRIPTIVA AUTOR: Jesús Pablo Parrado Guardia. DIRECTOR: Xavier Vilanova. FECHA: Junio / 2003.

Upload: lekhue

Post on 17-Apr-2018

235 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

MEMORIA DESCRIPTIVA

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 2: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 2

ÍNDICE

1 INTRODUCCIÓN.........................................................................................................5

1.1 Laboratorio Sensores de gases ......................................................................................................................... 5

1.1.1 Horno de Cinta..................................................................................................................................................5

1.2 Termopar ............................................................................................................................................................... 5

1.3 Compensación....................................................................................................................................................... 7

1.3.1 Sensores de temperatura utilizados como referencia ..................................................................................8

1.3.2 Compensación de unión fría por hardware.................................................................................................10

1.3.2.1 Método obtención de la temperatura del horno previo al proyecto (AD595)............................10

1.3.3 Compensación unión fría por software .......................................................................................................10

2 OBJETIVOS ...............................................................................................................12

2.1 Herramientas utilizadas ...................................................................................................................................13

3 DESCRIPCIÓN FUNCIONAL DEL DATA LOGGER..........................................14

3.1 Funciones del data logger.................................................................................................................................15

3.1.1 Entradas y salidas del data logger...............................................................................................................15

3.2 Diagrama de bloques del funcionamiento del data logger:.........................................................................16

3.2.1 Configuración del sistema.............................................................................................................................18

3.3 Adquisición .........................................................................................................................................................19

3.4 Transmisión........................................................................................................................................................20

4 DESCRIPCIÓN DEL HARDWARE DEL PROYECTO.......................................22

4.1 Chasis Data Logger...........................................................................................................................................22

Page 3: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 3

4.2 Chasis Alimentación.........................................................................................................................................23

4.3 Módulo Principal................................................................................................................................................24

4.3.1 Bloque microntrolador...................................................................................................................................25

4.3.2 Bloque UART .................................................................................................................................................27

4.3.3 Bloque I2C.......................................................................................................................................................28

4.3.4 Bloque Conectores.........................................................................................................................................29

4.4 Módulo de Adquisición......................................................................................................................................30

4.4.1 Bloque Termopar............................................................................................................................................31

4.4.2 Bloque Unión Fría ..........................................................................................................................................32

4.4.3 Bloque Reset, Fuente.....................................................................................................................................33

4.4.4 Bloque Conectores Pulsadores, Leds Micro..............................................................................................34

4.5 Módulo de Potencia............................................................................................................................................35

5 DESCRIPCIÓN SOFTWARE DEL PROYECTO.................................................38

5.1 Programa del PIC16F873 ................................................................................................................................38

5.1.1 Programa Principal. Selección de actividad................................................................................................38

5.1.2 Modificación de los parámetros de configuración....................................................................................41

5.1.3 Adquisición temperaturas, almacenamiento EEPROM.............................................................................43

5.1.4 Lectura temperaturas almacenadas en la EEPROM, Transmisión...........................................................48

5.1.5 Interrupciones.................................................................................................................................................52

5.2 Programa en C ...................................................................................................................................................55

5.2.1 Programa Principal..........................................................................................................................................56

5.2.2 Configuración .................................................................................................................................................58

5.2.3 Compensación ................................................................................................................................................59

5.2.3.1 Obtención Datos..................................................................................................................................59

5.2.3.2 Compensación de unión fría ..............................................................................................................61

5.2.4 Tranmisión.......................................................................................................................................................62

Page 4: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 4

5.2.5 Interrupciones.................................................................................................................................................63

5.2.5.1 Interrupción del puerto serie..............................................................................................................63

5.2.5.2 Interrupción del temporizador............................................................................................................64

6 BLIBLIOGRAFÍA .......................................................................................................65

Page 5: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 5

1 Introducción

Para el presente proyecto se desea diseñar y elaborar un sistema que adquiera y almacene laseñal (este tipo de dispositivos se denominan data loggers) de un termopar, que este caso seráuna temperatura.

La utilidad casi exclusiva del data logger es almacenar perfiles de temperatura (evolucionesde la temperatura medidas mediante un termopar) que se desarrollan en un horno, por lo que seha considerado prioritario que el sistema se adecue a las características de dicho entorno.

1.1 Laboratorio Sensores de gases

En el laboratorio número 335 (Sensores de Gases) de la Universitat Rovira i Virgilisituado en el campus Sescelades (Tarragona) se dispone de un horno de cinta. En el horno serealizan diversos experimentos, para los que se desea conocer el perfil de temperatura quedesarrolla el experimento.

Para medir las altas temperaturas a las que se trabaja en dicho horno se utiliza untermopar, en concreto del tipo K. Este tipo de sensor a diferencia de otros, permite medircualquier temperatura comprendida dentro del rango funcionamiento del horno de cinta.

1.1.1 Horno de Cinta

El horno que dispone el laboratorio es un horno de cinta. Está dividido en cuatro zonasindependientes en las que programa una temperatura para cada zona. Esta temperatura va desdela temperatura ambiente hasta un máximo de 1100 ºC, que es la máxima temperatura que puedesuministrar el horno. Otro parámetro a escoger es la velocidad de movimiento de la cinta.Dependiendo de la velocidad escogida, la cinta transportadora puede tardar entre 30 minutos y 2horas en recorrer las cuatro zonas del horno, siendo la duración más habitual deaproximadamente 1 hora. Regulando las temperaturas en cada zona y la velocidad de la cinta sepueden obtener los diferentes perfiles de temperatura

1.2 Termopar

Un termopar es un transductor de temperatura formado por la unión de dos metalesdiferentes en los extremos. Si las uniones entre metales están a diferentes temperaturas, seproduce una diferencia de tensión entre ambos extremos y una corriente eléctrica circulará a lolargo del circuito. Este fenómeno se llama efecto Seebeck o efecto termoeléctrico. De esta formapodemos observar una relación entre la diferencia de temperaturas y la diferencia de voltaje delos extremos del termopar.

Page 6: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 6

Figura 1.1 Forma de un termopar

Hay diferentes tipos de termopares, según sea la combinación de metales de que esténfabricados, que proporcionan diferentes rangos de temperaturas y diferentes sensibilidades. Laprincipal virtud de los termopares es su amplio rango de medida, que va desde los -270 ºC a los+1800 ºC, su relativo coste en comparación con sensores de otro tipo y similares características,pero por el contrario su funcionamiento es muy no lineal. En la tabla 1.1 se puede observar losprincipales tipos y sus características.

TipoTermopar

Conductor + Conductor - Rango Tª (ºC) Rango tension (mV)

B Platino Rodio 0 a 1800 0 a +13.820

E Cromo Constantan -270 a 1000 -9.835 a 76.373

J Hierro Constantan -210 a 1200 -8.095 a 69.553

K Cromo Aluminio -270 a 1372 -6.548 a 54.874

N Nicrosil Nisil -270 a 1300 -4.345 a 47.502

RPlatinio-13%

RodioPlatinio -50 a 1768 -0.226 a 21.103

SPlatinio-10%

RodioPlatinio -50 a 1768 -0.235 a 18.693

T Cobre Constantan -200 a 400 -5.603 a 20.872

Tabla 1.1: Propiedades de los termopares

Para medir el voltaje creado en el termopar se abre el circuito del termopar y se inserta elvoltímetro en paralelo. Al proceder de esta manera se producen nuevos termopares por la uniónde los metales del voltímetro, pero no modificarán el sistema si estos están a la misma temperaturaque el final del termopar (puede verse la referencia bibliográfica número uno MeasuringTemperature with Thermocouples, para una descripción más detallada). Por lo tanto se distinguen

Page 7: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 7

dos zonas, la zona de unión de los dos metales (unión termopar o unión caliente), que está encontacto con el objeto al que se desea medir la temperatura, y el final del termopar (unión dereferencia o unión fría), donde se ha colocado el voltímetro conectando sus terminales a losextremos de ambos metales, y se produce la caída de tensión. Esta tensión es proporcional a ladiferencia de temperaturas entre ambos extremos del termopar. La unión de referencia sedenomina a veces unión fría porque suele estar a menor temperatura que el otro extremo, que asu vez es unión caliente.

1.3 Compensación

Un termopar produce una tensión E en función de la diferencia de temperaturas entreambos extremos E=∆(TJet-Tref) (fig. 1.1)

Figura 1.1 Variables a considerar en un termopar

Para poder determinar la temperatura absoluta de la unión termopar debe ser conocido elvalor de la temperatura de la unión de referencia. Los métodos que tienen en cuenta latemperatura de referencia para contrarrestarla se denominan métodos de compensación.

El primer método utilizado (tradicional) consistía en mantener la unión de referencia a en unbaño de agua y hielo, con lo que se asegura que la unión de referencia está a cero gradoscentígrados (Fig. 1.2).

Figura 1.2 Compensación Tradicional

Page 8: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 8

Estudiando este sistema, se ha creado una tabla muy precisa, donde se relaciona el voltajedel termopar producido y la temperatura de este para estas condiciones, por lo que es fácilprecisar la temperatura del termopar utilizando esta tabla. Además los valores de dicha tablapueden obtenerse con bastante exactitud mediante la utilización de cálculos polinómicos.

Aunque este método es bastante exacto no siempre es práctico llevarlo a la práctica.Actualmente, con los desarrollos de la electrónica se pueden utilizar otros métodos decompensación. Un segundo método consiste en medir la temperatura de la unión de referenciacon un sensor directo, obtener la tensión que produciría el termopar suponiendo que la unión dereferencia estuviese a cero grados y la unión termopar a la temperatura ambiente, y añadir estátensión a la tensión producida por el propio termopar. De esta forma se pueden utilizar loscálculos estudiados para el método tradicional de compensación. Este tipo de compensación sedenomina compensación de unión fría. Esta se puede implementar por hardware, variando la señalanalógica (amplificadores operacionales), o por software, mediante cálculos que realiza el unordenador.

1.3.1 Sensores de temperatura utilizados como referencia

En la compensación de unión fría se necesita conocer la temperatura de la unión dereferencia del termopar, por ello se necesita utilizar un sensor de temperatura auxiliar. Lossensores térmicos más corrientes que se suelen utilizar en la compensación del termopar son lossiguientes:

1. Termistores. Básicamente son resistencias sensibles a la temperatura (transductorresistivo) .Los hay de una gran variedad de formas y materiales. Los hay de dos tipos:coeficiente de temperatura negativo (NTC), su resistencia disminuye al incrementarsela temperatura, y de coeficiente de temperatura positivo (PTC), su resistencia aumentaal incrementarse la temperatura, aunque este tipo es mucho menos utilizado que elanterior, ya que la mayoría de los utilizados en aplicaciones de medida son NTC. Surango es de -100ºC a +450ºC. Precisión de ±0.1 ºC de -40 ºC a 100 ºC. Son unpoco no lineales.

2. RTD. Similar a las termistores, también son transductores resistivos dependientes dela temperatura, a diferencia de los termistores (mayoritariamente) son PTC. Se suelenllamar según la temperatura que tenga a 0ºC, así una PTC100 tiene 100 Ω a 0ºC.Rango de temperaturas de -250ºC a 900ºC. Con una precisión de ±0.1 ºC para unamplio margen de temperaturas, pudiendo llegar a ±0.01 ºC. Son casi lineales, perosu precio es mucho mayor que los otros métodos.

3. Diodos y Transistores. Varían el voltaje en las uniones con la temperatura, por tantopueden usarse como medidores de esta. Rangos de -270 ºC a 175 ºC .Para un rangode -55 ºC a -125ºC tienen una precisión de ±5 ºC o incluso ±2 ºC. La principalcaracterística de estos es su muy bajo coste.

Page 9: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 9

4. Sensores circuito integrado. Son una extensión de lo anterior pero con circuitería decondicionamiento de señal y calibración ya integrado durante su fabricación. Permitenun rango de -85ºC a 125ºC. Con una sensibilidad de hasta 0.2ºC-0.4ºC. Sonlineales. Coste bajo.

Tabla 1.2 Tabla comparativa de los diferentes sensores de temperatura

Page 10: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 10

1.3.2 Compensación de unión fría por hardware

La compensación por hardware agrega a la tensión producida por el termopar una tensiónproporcional a la temperatura de referencia, que produciría el termopar en cuestión si tuviera unatensión de referencia de cero grados, y la unión caliente estuviese a la temperatura ambiente. Conesta adición la tensión resultante ya no depende de la temperatura en la unión de referencia yrepresenta la temperatura del objeto a medir en términos absolutos.

Aunque existe una relación no lineal entre tensión y temperatura en el termopar, paradeterminados valores, esta proporcionalidad es casi lineal. Por lo que puede aproximarse laproporcionalidad tensión-temperatura a una relación lineal.

La compensación por hardware tiene el inconveniente respecto de la de software quesuele ser menos precisa, principalmente porque suelen utilizarse aproximaciones simples de laproporcionalidad no lineal, y necesita una red específica de compensación para cada tipo determopar, pero no necesita, en cambio, la utilización de ningún sistema computacional, ademásdichas aproximaciones suelen ser válidas para muchos casos.

1.3.2.1 Método obtención de la temperatura del horno previo al proyecto (AD595)

En el Laboratorio de Sensores de Gases se utiliza un circuito que realiza la compensaciónpor hardware. Este circuito está formado principalmente por un integrado AD595 que es a su vezrealiza las funciones de amplificador de instrumentación y compensador. El integrado suministrauna salida de 10mV/ºC directamente proporcional a la señal del termopar de tipo K, aunque suerror es de ± 3ºC para un rango de temperaturas entre 0 y 50ºC, siendo mayor paratemperaturas superiores.

El presente proyecto intenta obtener las temperaturas a través de otro compensador, paraintentar reducir el error en las mediciones.

1.3.3 Compensación unión fría por software

La compensación la realiza el ordenador mediante cálculos una vez conoce las variables delsistema. Suele ser mucho más precisa que la compensación por hardware ya que al utilizar unordenador, se utilizan aproximaciones polinómicas de alto grado con lo que se reduce el error.

Para este sistema de compensación es necesario conocer la temperatura de referencia acompensar (Tref) y el voltaje del termopar producido para esta referencia (VMEAS). Si estos datosson conocidos, se aplica la ecuación (1.1)

VTC(TTC)=VMEAS+VTC(Tref) (1.1)

Para aplicar la ecuación (1.1) deben seguir los siguientes pasos:

Page 11: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 11

- Medir la temperatura en la unión de referencia, Tref

- Convertir esta temperatura en un voltaje equivalente, VTC(Tref). Se desea añadir latemperatura ambiente a la tensión producida por el termopar. Para ello se transforma esatemperatura en una tensión que habría producido el termopar, asumiendo que Tref sería latemperatura en la unión termopar y que la unión de referencia hubiese una temperatura de0 ºC. Para ello se usa la tabla polinomios del termopar (compensación tradicional).

- Añadir el voltaje equivalente, al voltaje producido por el termopar, VMEAS. y así seobtiene el verdadero voltaje que produciría el termopar en circuito abierto con una uniónde referencia de 0 ºC, VTC(TTC)

- Finalmente se convierte el voltaje en temperatura, este valor es la temperatura deltermopar TTC, mediante otra tabla de polinomios correspondiente al termopar.

Para realizar este método, se requieren dos tipos de equivalencias, una equivalencia detemperatura en voltaje y otra de voltaje en temperatura. Para realizar estas equivalencias se usarábien un cálculo polinómico o una tabla de referencia. Los cálculos polinómicos a realizar aparecenen las ecuaciones (1.2) y (1.3). (1.2) Transforma la temperatura en tensión y (1.3) transforma latensión en temperatura. En las ecuaciones c0, …, cn y d0, …, dn son coeficientes que dependendel termopar utilizado. Los valores de estos coeficientes para cada termopar utilizado puedenverse en el ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES delpresente proyecto.

V= c0 + c1T + c2T2 +...+ cnTn (1.2)

T= d0 + d1V + d2V2 +...+ dnVn (1.3)

La ecuación (1.2) es válida para todos los termopares excepto para los de tipo K si latemperatura (T) es superior a los cero grados centígrados, en cuyo caso la ecuación a aplicarsería la (1.4). Donde a0, a1, a2 son coeficientes del termopar K, al igual que lo son ci .

( )( )∑=

−+=0

221exp·

i

no

ii aTaaTcV (1.4)

Normalmente, en los programas utilizados, para evitar las potencias y hacer las menosoperaciones posibles, se calculan las potencias de las ecuaciones (1.2) y (1.3) mediantemultiplicaciones sucesivas. Por ejemplo si tomamos hasta el cuarto grado la ecuación (1.3)quedará:

T= a0 +V(a1+V(a2+V(a3+Va4))) (1.5)

Page 12: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 12

2 Objetivos

Para el presente proyecto se desea diseñar y elaborar un data logger. El data loggeradquirirá y almacenará datos para que posteriormente pueda volcarlos a un ordenador personal.Se ha desarrollar tanto el hardware como el software que se necesite para el sistema.

La compensación del sistema será una compensación de unión fría por software. Loscálculos de la compensación los realizará el ordenador, aprovechando así su alta capacidad decálculo. Para que realice los cálculos de compensación el data logger habrá de transferirle latensión producida por el termopar y la temperatura de la unión de referencia (ver apartado 1.3.3).Por tanto el data logger adquirirá y almacenará las dos señales de tensión, la tensión producidapor el termopar y la temperatura ambiente.

Las señales a adquirir son señales analógicas, por lo que se necesita un conversoranalógico-digital que transforme las señales analógicas en señales digitales. Lo ideal sería quetanto la temperatura ambiente como la tensión producida por el termopar se adquirieran a la vez,pero como esto no es posible, existe un pequeño retardo entre ambas medidas que seráinsignificante a efectos prácticos. El tiempo de muestreo de las señales será constante durante elperiodo que dure la adquisición.

Una vez adquiridas las señales se han de almacenar en una memoria. Esa memoria debeser una memoria no volátil para permitir así, que los datos contenidos en la memoria no se pierdanal desconectarse la alimentación.

Posteriormente a la adquisición los datos almacenados han de poder ser trasvasados alordenador. Para transferir los datos entre el data logger y el ordenador se utilizará lacomunicación más simple que posee el ordenador, la comunicación asíncrona vía RS-232, usandoel puerto serie. Para gestionar toda la parte digital del data logger, anteriormente citada, seutilizará un microcontrolador.

Se ha decidido que el hardware del data logger se adecue para la adquisición de untermopar tipo K, que es el que se dispone en el laboratorio de sensores de gases, para los rangosde medida con los que se trabaja en el horno. Siguiendo los rangos de trabajo del horno losrangos de medida del termopar son:

- Temperatura mínima: La temperatura ambiente.

- Temperatura máxima: Unos 1100ºC, la máxima temperatura alcanzable por el horno.

Se ha decido en cambio que el software de compensación del data logger no se limitesólo a ese termopar en concreto y a ese rango de medida, sino que permita la compensación dediferentes tipos de termopares en todo su rango de medida. De esta forma se consigue que con

Page 13: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 13

un voltímetro de precisión y un sensor de temperatura ambiente se pueda calcular fácilmenteusando un ordenador la temperatura que capta un termopar. Además así, si se amplia el hardwaredel data logger para permitir la adquisición de estas señales, el software ya estará preparado. Elsoftware de compensación permite la compensación de los termopares tipos: B, E, J, K, N, R, S,T.

El data logger ha de poder alimentarse tanto a través de una fuente de tensión laboratorio,de esta forma se consigue mayor precisión con las tensiones de trabajo del data logger, o con unafuente de alimentación que sea diseñada para este proyecto.

El data logger ha de ser un sistema simple y sencillo, por lo que para su utilización sedeben requerir solamente unas pocas señales de mando (marcha, adquisición, reset…). Lainformación del data logger sobre la acción que está desarrollando también ha de ser discreta, yceñirse únicamente a unos pocos leds.

2.1 Herramientas utilizadas

Para la implementación de los circuitos necesarios en el sistema (hardware) se utilizaránplacas de circuitos impreso, que serán diseñadas para poder realizar las funciones requeridas. Lasprincipales placas se implementarán en forma PCB utilizando el programa Orcad que permite eldiseño de tales circuitos y además es el disponible en la universidad. Una vez elaboradas las PCBestas se colocarán en una caja conjuntamente con los elementos externos que deban sobresalir dela caja (conectores, interruptores, leds…)

El software del sistema estará formado por los programas presentes en el microcontrolador yen el ordenador. El programa del microcontrolador estará diseñado utilizando únicamente ellenguaje ensamblador (el de los micros PIC, como posteriormente se indicará) porque de estaforma, se consigue una más eficiente gestión de los recursos del microcontrolador. Además en loslaboratorios no se dispone actualmente de otro lenguaje de más alto nivel, C por ejemplo. Enconcreto el ensamblador utilizado es el MPASM del entorno MPLAB. Estas herramientaspueden obtenerse gratuitamente en la página de internet de microchip.

El programa del ordenador se ejecutará en el sistema operativo Ms-Dos, permitiendo así quepueda utilizarse en cualquier ordenador personal. Deberán programarse en C, ya que estelenguaje es un lenguaje de alto nivel, facilitando así su programación, pero permite accedertambién a recursos de bajo nivel, como las interrupciones del ordenador (temporizador, puertoserie…). El programa utilizado en concreto para compilar los programas es el Turbo C++ deBorland, y aunque este programa permite la utilización de código C++ simplemente se ha utilizadocódigo C estándar.

Page 14: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 14

3 Descripción funcional del data logger

El corazón del data logger debe ser un microcontrolador, y para tal efecto se ha elegidocomo controlador del sistema, el PIC16F873 de Microchip. Dicho microcontrolador además depermitir realizar todas las funciones requeridas en el proyecto, está disponible tanto elprogramador como el software necesario para su programación en los laboratorios de la escuela.

Para realizar la compensación de unión fría se necesita utilizar un sensor auxiliar que mida latemperatura en la unión de referencia. Para medir lo más fielmente posible la temperatura en launión de referencia, lo más conveniente es que el sensor auxiliar esté lo más próximo posible a launión entre el termopar y el data logger. Se ha escogido utilizar un sensor de temperaturaintegrado totalmente lineal, por ser esta la solución más fácil y económica. El sensor elegido es elLM35 que proporciona una tensión de 10 mV por cada grado centígrado, con un pequeño errorinferior al 1 ºC

El PIC16F873 posee un conversor analógico-digital de diez bits integrado en el mismomicrocontrolador. Para utilizarlo simplemente se interactúan sobre determinados registros dememoria del microcontrolador. Se utilizará dicho conversor para efectuar la adquisición de lasseñales, la tensión proporcionada por el termopar y la tensión resultante en el sensor auxiliar. Lastensiones producidas por los sensores son muy pequeñas, por lo que deberán ser amplificadaspara poder aprovechar al máximo las tensiones de trabajo del conversor.

Para controlar el tiempo entre adquisiciones se utilizarán dos módulos de temporización delos que posee el microcontrolador. Uno controlará el tiempo de muestreo, finalizándose este seiniciará la conversión de uno de los canales del conversor analógico. El otro temporizadorcontrolará el retardo entre las señales del termopar y del sensor auxiliar, que obviamente deberáser menor que el tiempo de muestreo; cuando finalice este tiempo se iniciará la conversión delotro canal. Ambos temporizadores están mapeados a memoria en forma de registros, y deberánutilizarse para gobernar el funcionamiento de estos. Se permitirá al usuario poder variar el tiempode muestreo.

La memoria no volátil que se utilizará para almacenar las tensiones digitalizadas procedentesde los dos sensores utilizados será una EEPROM. En concreto una EEPROM serie que secomunique con el microcontrolador mediante el bus I2C. Este tipo de memorias sólo utilizan dosseñales de datos, liberando recursos al microcontrolador y reduciendo el número de pinesnecesarios respecto de otro tipo de memorias EEPROM. Hay muchas memorias serie que secomunican mediante el bus I2C en el mercado, normalmente modelos M24X. Estas memoriassuelen tener idéntico patillaje y lo único que las diferencia es la capacidad de estas. El programaestá diseñado para poder utilizar diversos modelos de memoria EEPROM serie I2C,aprovechando que la conexión de todas estas memorias es idéntica. Para controlar el periférico esmuy útil que el microcontrolador gestiona la comunicación serie I2C vía hardware (control de

Page 15: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 15

tiempos, generación de interrupción…), mediante un módulo llamado SSP (comunicación seriesíncrona periférica), por lo que para utilizar dicha comunicación únicamente se habrá de acceder adeterminados registros en la memoria.

Para la comunicación entre el data logger y el ordenador se utiliza la comunicación serieasíncrona universal (USART), llegándole al ordenador señales con las especificaciones detensiones RS-232. También aquí la gestión de tiempos, interrupciones… es controlada porhardware y la programación de este módulo (USART) se limita a manejar registros de memoria.

El microcontrolador PIC16F873 posee una pequeña memoria EEPROM, que aunqueinsuficiente para albergar las adquisiciones producidas, permite guardar parámetros del sistema:tiempo de adquisición, tipo de memoria EEPROM,… Al no ser fijos estos parámetros puedeadaptarse el sistema a múltiples configuraciones. Nuevamente la gestión de este módulo se realizaa través de registros. Dichos registros específicos al igual que otros de generales, sin funciónpreconcebida, se encuentran en la memoria RAM del microcontrolador para poder ser utilizadossi los requiere el programa del PIC16F873.

El microcontrolador posee puertos de E/S que se utilizarán para conectar a ellos losinterruptores digitales como entradas, y los leds como salida. Los puertos también estánmapeados a memoria.

3.1 Funciones del data logger

El data logger puede funcionar de forma que realice una de las tres actividades siguientes:

- Adquisición y almacenamiento de temperaturas. Se adquieren la tensión producidapor el termopar y la tensión procedente del sensor auxiliar de temperatura y sealmacenan en la memoria EEPROM.

- Transmisión de temperaturas. Las señales guardadas en la EEPROM son leídas yposteriormente enviadas al puerto serie del ordenador.

- Cambio parámetros del sistema. El ordenador envía a través del puerto serie nuevosparámetros de configuración del data logger (tiempo de adquisición, memoria ...) quesustituyen a los anteriormente guardados en la EEPROM interna del microcontrolador

Para seleccionar una u otra actividad se utilizarán los conmutadores de selección deactividad. Si una actividad se inicia, se activará el led señalizador de esa actividad, al igual que seapagará cuando se finalice.

3.1.1 Entradas y salidas del data logger

Las señales de mando permiten acceder a las actividades anteriores son:

Page 16: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 16

- Marcha/Paro. Inicia la actividad del data logger, si está a nivel alto iniciará el procesodeterminado por las otras señales.

- Conmutación de Programación/Normal. Si está activo se iniciará un ciclo demodificación de los parámetros internos de configuración al iniciarse marcha, si no, setendrá en cuenta el estado del segundo conmutador. Por tanto esta señal es prioritariarespecto a la próxima señal.

- Conmutación de Adquirir/Transmisión. Si no está activo programación, y elconmutador está a cero se iniciará un ciclo de adquisición de temperaturas yalmacenamiento al pulsarse marcha, o si no, si el conmutador está a uno, modonormal y se pulsa marcha, se inicia uno de transmisión de las temperaturasalmacenadas en la adquisición previa.

Tales señales estarán implementadas en forma de conmutador. También dispone elsistema de un pulsador de reset que al pulsarlo reinicia el programa presente en elmicrocontrolador.

Los visualizadores serán análogos a las opciones indican la actividad que está realizandoel microcontrolador. Si no hay ningún led encendido indicará que el sistema está inactivo:

- Visualizador de Programación. Cuando está encendido representa que el sistema estáejecutando un ciclo de programación.

- Visualizador de Adquisición. Cuando está encendido representa que el sistema estáejecutando un ciclo de adquisición

- Visualizador de Transmisión. Cuando está encendido representa que el sistema estáejecutando un ciclo de transmisión.

3.2 Diagrama de bloques del funcionamiento del data logger:

El diagrama funcional del sistema a implementar está representado en la fig 3.1

Page 17: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 17

TERMOPAR

MEMEEPROMM24X

PROGRAMACIÓN

PIC16F873

ADQUISICIÓN

COLARAM

TRANSMISIÓN

TMR0

MEMORIAEEPROM

TMR1

81

54

USART

ADQUISICIÓN/TRANSMISIÓN

MSSPI2C

8

15

4

A/D

PROGRAMACIÓN/NORMAL

LM35/TO1 2VS+ VOUT

INICIO

PC

Figura 3.1 Diagrama de bloques del data logger

Todos los elementos representados se encuentran dentro de la caja del data loggerexcepto el ordenador personal.

El corazón del sistema es el microprocesador que gobierna todo el sistema. De el sepueden distinguir diferentes módulos, los que utiliza el programa son:

- La memoria RAM (GPR). Permite que se guarden datos temporales, por ejemploscolas. El acceso a la memoria es el acceso más rápido de todos los módulos, por loque se utilizará para acceder a módulos más lentos y economizar tiempos.

- La memoria EEPROM. Se guardan los datos de configuración del sistema, que seutilizan para desarrollar los diferentes procesos que permite efectuar el data logger

- TMR1. Controla el tiempo de muestreo, cuando se cumple el tiempo adquiere la señalanalógica.

- TMR0. Controla el retardo entre la adquisición de una señal y la otra, cuando secumple el tiempo adquiere la señal analógica que quedaba adquirir.

- A/D. Convierte las tensiones analógicas de los sensores en digitales cuando el timer loconsidera oportuno.

- MSSP. Módulo que controla las comunicaciones serie síncronas I2C, que se utilizanpara comunicar el microcontrolador con la memoria EEPROM externa. En lascomunicaciones I2C el PIC es el maestro del bus.

- USART. Módulo que se utiliza para realizar las comunicaciones asíncronas que serealizan entre el PIC y el ordenador.

Page 18: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 18

Las señales analógicas, que son amplificadas para que puedan ser leídas con exactitudmediante el conversor, provienen de dos sensores:

- LM35. Proporciona una tensión proporcional a la temperatura ambiente y situado enla unión de referencia del termopar.

- Termopar. Proporciona una caída de tensión proporcional a la diferencia detemperaturas entre la unión “caliente” y “fría”.

Los mandos se utilizan para iniciar una actividad, si esa actividad es posible, se indica quese lleva a cabo activando su correspondiente señalizador. Como ya se indicó anteriormente, y seexpresa en la figura hay tres mandos (Inicio, Programación/Normal, Adquisición/Transmisión) ytambién tres señalizadores (Programación, Adquisición, Transmisión).

La EPROM M24X es donde se almacenan los datos de las temperaturas digitalizadas. Secomunica al PIC a través del módulo SSP. En la comunicación serie el PIC será el maestro(controla los tiempos) del bus y la memoria el esclavo.

El PC es el destinatario de la información almacenada en la EEPROM, le llegan al puertoserie señales RS-232 que le llegan a través del módulo USART del microcontroladorPIC16F873.

Una vez vistos los diferentes dispositivos que conforman el data logger se mostrarán cualesson los que actúan en las diferentes actividades.

3.2.1 Configuración del sistema

En la figura 3.2 pueden observarse los diferentes elementos que intervienen en la actividad.El ciclo de configuración del sistema se inicia si el data logger está inactivo, se activa elconmutador de inicio y el conmutador programación/normal está en modo programación.Entonces se enciende el señalizador de programación y se inicia la actividad.

El primer paso es esperar a que la USART reciba los datos procedentes del PC. Cuandorecibe uno, lo guarda en la memoria EEPROM interna del microcontrolador. La acción se irárepitiendo hasta que se hayan recibido todos los datos y se hayan guardado en la memoriaEEPROM, entonces se considerará el ciclo acabado y se apagará el señalizador deprogramación.

Page 19: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 19

USART

MEMORIAEEPROM

PC

PROGRAMACIÓN

INICIO

PIC16F873

PROGRAMACIÓN

Figura 3.2 Ciclo de Configuración

3.3 Adquisición

En la figura 3.3 pueden observarse los diferentes elementos que intervienen en la actividad. Elciclo de adquisición se inicia si el data logger está inactivo, se activa el conmutador de inicio, elconmutador programación/normal está en modo normal y el conmutador adquisición/transmisiónestá en modo adquisición. Entonces se enciende el señalizador de adquisición y se inicia laactividad.

El TMR1 controla la adquisición del canal 0 y el TMR0 la del canal 1. Cuando los timers sedesbordan se inicia la conversión de las entradas analógicas. El tiempo de muestreo está contadopor el TMR1 y el retardo entre canales por el TMR0. Los temporizadores no trabajansimultáneamente, cuando se cumple el tiempo de uno se inicia la cuenta del otro. La conversióndigital efectuada por el A/D se va guardando en la cola. Cuando la cola se considera llena setrasvasan los datos de la memoria a la EEPROM utilizando el módulo MSSP. Cuando la memoriaEEPROM se llena se considera el ciclo acabado y se apaga el señalizador de adquisición.

Page 20: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 20

ADQUISICIÓN

COLARAM

TMR0

MSSPI2C

A/D

TMR1

8

15

4

ADQUISICIÓN

8

15

4

LM35/TO1 2VS+ VOUT

NORMAL

MEMEEPROMM24X

INICIO

TERMOPAR

PIC16F873

Figura 3.3 Ciclo de adquisición

3.4 Transmisión

En la figura 3.4 pueden observarse los diferentes elementos que intervienen en la actividad. Elciclo de transmisión se inicia si el data logger está inactivo, se activa el conmutador de inicio, elconmutador programación/normal está en modo normal y el conmutador adquisición/transmisiónestá en modo transmisión. Entonces se enciende el señalizador de transmisión y se inicia laactividad.

Los datos almacenados en la memoria EEPROM se van extrayendo utilizando el móduloMSSP, y son guardados temporalmente en la RAM, otra vez en forma de cola. Cuando la cola seconsidera llena, se envían los datos a través de la USART al PC. Cuando se han leído todos losdatos almacenados en la memoria se acaba el ciclo y se apaga el señalizador de transmisión

Page 21: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 21

COLARAM

TRANSMISIÓN

USARTMSSPI2C

TRANSMISIÓN

PC

NORMAL

MEMEEPROMM24X

INICIO

PIC16F873

Figura 3.4 Ciclo de transmisión

Page 22: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 22

4 Descripción del hardware del proyecto

Para implementar el hardware que pueda realizar las funciones requeridas por el sistema sehan diseñado tres módulos hardware:

- Módulo de Entradas/Salidas. En este módulo se encuentran las señales analógicasprocedentes del sensor de temperatura integrado y del termopar, tales señales sonamplificadas, permitiendo así aumentar la precisión de lectura del conversor analógicodigital. En este módulo también se encuentran las entradas digitales (conmutadores), ylas salidas digitales (visualizadores leds).

- Módulo principal o data logger. Es el módulo donde tenemos localizado elmicrocontrolador PIC16F873 y la memoria EEPROM por ejemplo. Al contener elmicrocontrolador este módulo es el que controla todo el sistema

- Módulo de Alimentación. Este módulo puede suministrar las tensiones de alimentacióndel sistema. Estas tensiones son cinco y menos cincos voltios. También establece lamasa del sistema (GND).

Para albergar los módulos se utilizan cajas (chasis). El módulo E/S y el módulo principalse encuentran dentro de una misma caja. El módulo de alimentación como es opcional su uso seencuentra en otra caja. Por tanto en el proyecto a simple vista se podrán distinguir tres chasis:

- Alimentación: Estará formada o por una fuente de laboratorio o por el módulo dealimentación aquí diseñado. El módulo que se ha diseñado proporciona las tensionesde +5 V, -5 V y 0 V

- Data logger. En está caja se encuentran el módulo principal y el módulo E/S. Sobre lacaja se encontrarán los mandos y los señalizadotes con los que se interactúa con elsistema

- Ordenador. Dispondrá de al menos un puerto serie libre para conectar con el datalogger.

4.1 Chasis Data Logger

Por dentro la caja estará conectada tal como se ve en la figura 4.1. En la caja se encuentranlas placas de los dos módulos señalados, el principal y el de entradas/salidas. Externamente seencuentran los siguientes elementos:

- Conector RS-232. A el se conecta un cable null-modem (RS-232) que conectará aldata logger con el ordenador

Page 23: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 23

- Bornes de alimentación: Hay 4 bornes con los que llega la alimentación al sistema: +5V, GND, + Vcc, -Vcc. Son las alimentaciones de los amplificadores operacionales.+Vcc debe tener un valor igual a +5 V o superior (hasta un máximo de unos 15 V)

- Conmutadores. Los tres conmutadores para seleccionar la actividad: Inicio,Programación/Normal, y Adquisición/Transmisión

- Señalizadores: Los tres leds que indican la actividad: Programación, Adquisición yTransmisión.

ADQ/TRMSW SPDT

213

J4GND

M.ADQUISICIÓN

LP1PROG

J3+5

J1

TERMOPAR

12

M.PRINCIPAL

P1

CONNECTOR DB9

594837261

SW4

RESET

1 2

LP3TRAS

LP2ADQ

PRG/NORSW SPDT

213

J2+Vcc

INICIOSW SPDT

213

J5-Vcc

Figura 4.1 Chasis Data Logger

4.2 Chasis Alimentación

Si no se pueden utilizar fuentes de tensión de laboratorio se ha diseñado un circuito defuente de alimentación que proporciona las tensiones en continua necesarias para que el datalogger funcione, a través de la tensión alterna de red. El circuito impreso se encuentraresguardado en una caja, tal como puede verse en la fig. 4.2 en la que también pueden verse lossiguientes elementos:

- Bornes de alimentación. Tres bornes de alimentación: +5 V, GND, -5 V.

- Conector tensión de red. Conector al que se conecta un cable macho de tensión dered, 220 V monofásicos alterna. Posee un fusible en su interior

- Transformador. Transforma 220V en alterna a 9V y -9V. Las dos salidas deltransformador son las entradas para el módulo de alimentación.

Page 24: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 24

J4GND

M.ALIMENTACIÓNT1

TRANSFORMER CT

JP1

ALIMENT+FUSE

1 23 45 6

J3+5

J5-5

Figura 4.2 Chasis Alimentación

4.3 Módulo Principal

El circuito implementado en el módulo principal está representado en la fig. 4.3

JP1

HEADER 5X2

1 23 45 67 89 10

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

GND

+ C51uF

GND

GND

+C3

1 uF

Y1

4 mHz

+5V

JP3

HEADER 3

123

GND

+5V

GNDC915pF

JP2

HEADER 5X2

1 23 45 67 89 10

+5V

GND

C7

15pF

U3

M24C16 4

5

8

6

7

GN

D

SDA

VC

CSCL

WC

GND

U2

MAX232

1345

1615

26

129

1110

138

147

C1+C1-C2+C2-

VC

CG

NDV+

V-

R1OUTR2OUT

T1INT2IN

R1INR2IN

T1OUTT2OUT

R22.2k

P1

CONNECTOR DB9

594837261

+C21uF

GND

+5V

R12.2k

+C1

1uF

+ C4

1uF

Figura 4.3 Módulo principal

De este módulo podemos diferenciar los siguientes bloques:

- Microcontrolador: Formado por el PIC16F873 U1, el cristal de cuarzo Y1 y suscorrespondientes condensadores C9 y C7. Todos los demás contendrán algún pin delmicro

Page 25: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 25

- UART. Está formado por el MAX232 U2 y sus correspondientes condensadoresC1, C2, C3, C4, C5 y el conector DB9 P1. Permite la comunicación vía RS232Nótese, como ya se profundizará más adelante, la numeración del conector DB9 (P1)no corresponde con la habitual numeración de las líneas RS-232 (así el 1 sería el 5, el4 el 2 y el 3 no varía)

- I2C. Está formado por la memoria EEPROM U3 y las dos resistencias de pull-up delbus

- Conectores: Formado por los tres conectores JP1, JP2 y JP3. Los dos primerosllevan entradas/salidas no conectadas en el módulo, y el tercero proporciona laalimentación al módulo (+5 V, 0 V) y la señal de reset. Los dos primeros estánmontados en un conector tipo bus de 10 pines y el tercero en un conector poste.

4.3.1 Bloque microntrolador

Se debía usar un microcontrolador por las características del sistema a implementar, ypara ello se ha escogido el PIC16F873 de Microchip, ya que puede realizar todas las funcionesrequeridas para desarrollar el sistema, facilitando además su realización. Las principalescaracterísticas del PIC16F873 son:

- Procesador RISC. Juego reducido de 35 instrucciones con 14 bits de longitud. Todasellas se ejecutan en un ciclo de instrucción, excepto las de salto que pueden tardardos.

- Arquitectura basada en bancos de registros. Todos los objetos están implementadosfísicamente como registro.

- 4 K palabras de 14 bits para la memoria de código, tipo FLASH

- 128 bytes de memoria EEPROM y 192 bytes de memoria RAM como memoria dedatos.

- Frecuencia máxima de 20 MHz.

- 22 líneas de entrada/salida

- Hasta 13 fuentes de interrupción internas y externas.

- Pila con 8 niveles.

- Detección de baja tensión

- ICSP. Permite la programación en serie del circuito

Dispositivos Periféricos internos integrados:

Page 26: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 26

- Temporizadores: un temporizador de 16 bits, dos de 8 bits y un WDT

- Conversor analógico/digital de 10 bits que permite hasta 5 entradas

- Dos módulos de Captura-Comparación-PWM

- USART. Puerto serie asíncrono.

- SSP. Puerto Serie Síncono con SPI y I2C

Además comparativamente el PIC es los más baratos del mercado entre los decaracterísticas similares, tanto en el coste del integrado como en el de las herramientas, además lamayoría de ellas pueden descargarse desde la página de internet de Microchip, es por esto que hasido el microcontrolador elegido.

Para realizar una la gestión de tiempos, que ha de ser bastante precisa se ha optado pordotar al sistema oscilador de cuarzo que controlará el ciclo de instrucción del PIC16F873. Así elesquema del sistema queda como sigue:

GND

+5V

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

C7

15pF

Y1

4 mHz

GND

C915pF

GND

Figura 4.4 Bloque Microcontrolador

Para implementar un oscilador de cuarzo XT se necesita el propio cristal y doscondensadores. Como la frecuencia elegida ha sido 4 MHz los condensadores escogidos son de15pF, que están dentro del rango permitido para esta frecuencia de trabajo tal como se

Page 27: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 27

recomienda en el datasheet del microcontrolador. Nótese que el microcontrolador PIC16F873tiene conexiones con todos los demás bloques del sistema.

4.3.2 Bloque UART

El integrado MAX232, estándar en industria, adapta las salidas de salida de la USARTdel PIC ( 0 V- +5 V) al voltaje necesario para las especificaciones RS232, en concreto 0 V a –10 V y 5 V a 10 V. El modelo elegido es de la casa Maxim, aunque hay otras marcas quetambién lo comercializan como Texas Instruments. Las características más relevantes son:

- Única fuente de tensión de 5V,

- Necesita 5 condensadores externos de 1 µF para funcionar. Con ellos consigue pasardesde una tensión de 5 V a +10 V y –10 V respectivamente

- Permite el uso de 2 entradas / salidas

- Velocidades de hasta 120 Kbps

El PIC16F873 gracias a su módulo USART que es capaz de enviar y recibir datosasíncronamente siguiendo la norma RS-232-C. Para la comunicación utiliza dos líneas RC6/TX(Transmisión) y RC7/RX (Recepción).Por estas líneas salen y entran señales típicas de unacomunicación asíncrona, bit de start, 8 bits de datos, bit de stop, pero están señales estánreferidas entre 0 y 5 V; para que cumplan las especificaciones RS-232 el nivel bajo debe ser unatensión negativa muy inferior a 0, ya a que este nivel de tensiones se considera que las líneas estánen reposo. Con el MAX232 y los condensadores electrolíticos se consigue adaptar las tensionesde salida del micro de 0→-10 V y de +5→10 V. Mediante el conector DB9 podemos conectarel módulo a un PC utilizando el típico cable NULL-MODEM. Este cable tiene la característicaque los terminales TX y RX de los extremos están cruzados, por lo que para el correctofuncionamiento del sistema se debe utilizar cable de este tipo.

Page 28: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 28

+C21uF

+ C4

1uF

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

GND

+ C51uF

GND

+5V

+C3

1 uF

GND

+C1

1uF

U2

MAX232

1345

1615

26

129

1110

138

147

C1+C1-C2+C2-

VC

CG

NDV+

V-

R1OUTR2OUT

T1INT2IN

R1INR2IN

T1OUTT2OUT

P1

CONNECTOR DB9

594837261

Figura 4.5 Bloque UART

El conector DB9 (P1) del esquema tiene una numeración diferente a la numeración de lospines que se utiliza habitualmente para designar las líneas RS-232, en el esquema la numeraciónva de abajo a arriba y en cambio la habitual es de arriba abajo. Así si se numerase de la mismaforma, el pin 1 sería el 5 GND, el 3 no variaría seguiría siendo en ambos casos TX, y el 4 sería el2 RX.

4.3.3 Bloque I2C

El microcontrolador dispone de un módulo MSSP, que permite la comunicación seriemediante el bus I2C.

En la comunicación serie modo I2C sólo se emplean dos líneas: SDA bidirecccional dedatos, y SCL que se encarga de transmitir los impulsos de reloj para la sincronización entredispositivos. Para implementar el bus I2C ambas líneas deben ir conectadas a sus respectivasresistencias de pull-up.

Utilizamos el bus I2C para conectar el PIC16F873, que funciona como master (tiene eldominio de la señal SCL) mediante sus pines RC4/SDA y RC3/SCL a la memoria EEPROM.

Las memorias EEPROM vía serie I2C, M24X tienen idéntico patillaje por lo que sepuede conectar cualquiera de ellas al sistema. Un ejemplo de estas memorias es la MC16 de ST-

Page 29: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 29

Thompson, totalmente compatible con modelos de otras marcas como Microchip, y posee lassiguientes características:

- Comunicación serie I2C, sólo necesita dos pines para comunicarse y velocidades de100 kHz y 400 kHz. El que sólo utilicen dos pines para comunicarse permite unencapsulado de 8 pines, bajando sensiblemente el coste del integrado frente a otrasmemorias serie o paralelas.

- Memoria de 2048 x 8 bits

- Fuente de tensión de 4.5 V a 5 .5 V

- Incremento automático de la dirección

- Retención de la información durante más de 40 años y más de un millón de ciclos deborrado/escritura

U3

M24C16 4

5

8

6

7

GN

D

SDA

VC

CSCL

WC

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

+5V

R22.2kR1

2.2k

Figura 4.6 Bloque I2C

4.3.4 Bloque Conectores

Para conectar el módulo principal con los otros módulos este dispone de tres conectores,JP3 que un conector tipo poste que permite alimentar el módulo (+5 V,0 V) y también permite

Page 30: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 30

resetear el micro. Los otros dos conectores contienen todas las entradas o salidas que no se hanutilizado en los bloques anteriores, nueve en cada uno, son de tipo bus.

Todos los conectores provienen del módulo de adquisición. Del conector JP1 vendrán lasseñales de temperatura, de los pulsadores/conmutador, y leds. Para el presente proyecto no se hautilizado las señales del microcontrolador presentes en el conector JP2, pero se ha creídonecesario juntarlas en un conector para poder utilizar dichas señales para una posible ampliacióndel proyecto.

JP1

HEADER 5X2

1 23 45 67 89 10

JP2

HEADER 5X2

1 23 45 67 89 10

JP3

HEADER 3

123

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

GND

+5V

Figura 4.7 Bloque conectores

4.4 Módulo de Adquisición

El esquema del circuito está representado en la figura 4.8

Page 31: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 31

U 4

INA114

23

4

6

7

518

-VIN+VIN

V-

VO

V+

REFRGRG

GND

+5VJP7

RESET

12

GND

R10 100

D2

DIODE

GND

R1510K

R1410K

JP5

ALIMENTACIÓN FUENTE

1234

V-GND

R8 1K

GND

V+

GND

+5V

V+

R 5 330

R1210K

GND

R1110K

JP8

ALIMENTACIÓN MICRO

123

V-

JP6

ENTRADAS

1234567

+5V

JP9

LEDS

1234

+5V

GNDU 5

LM35/TO

1 2

3

VS+ VOUT

GN

D

+5V

JP10

HEADER 5X2

1 23 45 67 89 10

R 4 330

R3470

R9

3,9K

JP4

TERMOPAR

12

-

+

U6

OP-07

3

26

7 14 8

V-

R 6 330

V+

Figura 4.8 Módulo de Adquisición

De este módulo podemos diferenciar los siguientes bloques:

- Termopar: Formado por el amplificador de instrumentación INA114 U4, el conectordel termopar JP4 y la resistencia para el amplificador R3. La salida del amplificadorse dirigirá hacia JP10.

- Unión Fría. Formado por el sensor LM35 U5, el amplificador operacional OP07 y lasresistencias R8 y R9 de 1 kΩ y 3,9 kΩ respectivamente. La salida del amplificadorse dirigirá hacia JP10.

- Reset, Fuente. Formado por el conector JP7, conector JP8, el diodo D2, Laresistencia R10 de 100 Ω, la resistencia R11 de 10 kΩ, el conector JP2. Aunque noestá en el esquema también se considera parte del bloque el destino del conector JP7,el pulsador de reset

- Conectores Pulsadores, Leds Micro. Formado por las resistencia R15,R14,R12 de10 kΩ, las resistencia R4,R5,R6 de 330 Ω, los conectores JP6,JP9 y JP10. Aunqueno está en el esquema también se considera parte del bloque el destino del conectorJP6, las entradas digitales, el destino del conector JP9 los salidas digitales leds.

4.4.1 Bloque Termopar

Para amplificar la tensión del termopar se utiliza el amplificador de instrumentaciónINA114 de la casa Burr-Brown. Este amplificador de instrumentación tiene como característicasprincipales:

Page 32: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 32

- Bajo offset de tensión 25 µV

- Baja Deriva de tensión: 0.25 µV/ºC

- Alto rechazo en modo común: 115 dB

- Amplio rango de alimentación: ±2.25 V a ±18V

U4

INA114

23

4

6

7

518

-VIN+VIN

V-

VO

V+

REFRGRGR3

470V+

JP4

TERMOPAR

12

GNDV-

Figura 4.9 Bloque Termopar

La amplificacación del amplificador de instrumentación, se ha configurado mediante laresistencia R3 para que amplifique unas 108 veces la tensión del termopar, ver memoria decálculo apartado 1.3.

El amplificador de instrumentación está conectado a una tensión de alimentación negativa,porque aunque no se pretende trabajar con tensiones negativas, si se trabaja con tensiones muypequeñas. Si la referencia negativa se pusiera a cero voltios, como el amplificador deinstrumentación no es common rail, no se pueden captar señales próximas a la tensión dereferencia, por eso se alimenta negativamente a los amplificadores, para anular la falta deresolución sobre los cero voltios.

Si el termopar da una tensión negativa se producirá un error en la compensación deltermopar. Porque aunque el circuito acepta la entrada de tensiones negativas dando una tensiónde salida del amplificador de instrumentación también negativa, al llegar al conversor analógico-digital se leerá como la mínima tensión, en este caso 0 V, por lo que se lee una tensión errónea ala que se produce. En teoría el termopar no debería suministrar tanta tensión como para queamplificador se saturase positivamente.

4.4.2 Bloque Unión Fría

Esta formado por el sensor integrado LM35 que genera una tensión proporcional a latemperatura en la unión de referencia, y el amplificador OP07 en forma de configuración noinversora.

Page 33: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 33

R9

3,9KGND

U5

LM35/TO

1 2

3

VS+ VOUT

GN

D

+5V

-

+

U6

OP-07

3

26

7 14 8

+5V

GND

R8 1K

Figura 4.10 Bloque unión fría

El LM35 es considerado uno de los sensores de circuito integrado estándar, esto esdebido a su bajo coste y su alta linealidad. Las características del integrado escogido másrelevantes son:

- Su tensión de salida es proporcional a la temperatura en una proporción de 10mV/ºC.

- Su rango de funcionamiento puede estar comprendido entre -55ºC y +150ºC.

- Su tensión de funcionamiento permite tensiones de 4 V hasta 30 V en contínua

- El modelo LM35CZ tiene una precisión es ±0.4 ºC

El OP-07 es un amplificador operacional de bajo offset. Sus características másimportantes son:

- Bajo offset de tensión 25 µV

- Baja Deriva de tensión: 0.5 µV/ºC

- Alto rechazo en modo común: 115 dB

- Amplio rango de alimentación: ±3 V a ±18V

4.4.3 Bloque Reset, Fuente

El conector de alimentación del micro además de proporcionar la tensión de 5 V, y 0 V,también proporciona el reset. Para implementar el reset se utiliza un pulsador, estando la señal dereset normalmente a unos cinco voltios excepto cuando se pulse el pulsador, que pasará a sercero.

Page 34: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 34

Como puede observarse en la figura donde debía colocarse un pulsador está colocado unconector poste, esto es debido es que dicho pulsado no está colocado en la propia placa PCBsino en el chasis, conectando el pulsador a la placa PCB mediante un cable.

R10 100

GNDJP7

RESET

12

GND

D2

DIODE

+5V

+5V

R1110K

JP8

ALIMENTACIÓN MICRO

123

Figura 4.11 Bloque reset

En la siguiente figura puede observarse como la tensión proporcionada al módulo deadquisición se obtiene mediante un conector poste que conecta el módulo con el otro módulo dealimentación. De el se obtienen las tensiones de trabajo del módulo es decir las tensiones decinco, las tensiones de alimentación V+ y V- de los amplificadores operacionales, que serán decinco voltios y menos cinco voltios si se conecta al módulo de alimentación, y la masa del sistema

JP5

ALIMENTACIÓN FUENTE

1234

V+

GND

+5V

V-

Figura 4.12 Bloque fuente

4.4.4 Bloque Conectores Pulsadores, Leds Micro

Para conectar los entradas y salidas digitales y comunicar tales señales al micro al igualque las temperaturas, se utiliza el siguiente circuito:

Page 35: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 35

+5V

R6 330

GND

GND

R1210K

R4 330

R1510K

JP9

LEDS

1234

R1410K

R5 330

JP6

ENTRADAS

1234567

JP10

HEADER 5X2

1 23 45 67 89 10

Figura 4.13 Bloque conectores, pulsadores, leds

Los conmutadores en estado de reposo estarán a cero voltios, al igual que los conmutados,el estado de los visualizadores dependerá obviamente del estado de las variables del programadel micro que los controlan.

Al igual que ocurría con el pulsador de reset, en el circuito hay conectores donde debíancolocarse conmutadores o leds y en su lugar están colocados conectores poste, al igual queanteriormente, esto es debido es que dichos elementos no están colocados en la propia placaPCB sino en el chasis, conectados a la placa PCB mediante un cable.

4.5 Módulo de Potencia

Este módulo obtiene la alimentación a través de los conectores externos de tensión que sepueden conectar a una fuente de tensión o al módulo de alimentación. Este módulo lleva laalimentación hacia el módulo principal añadiéndole además la señal de reset.

Este circuito proporciona la alimentación necesaria para alimentar los restantes módulos,las tensiones de cinco voltios, menos cinco y la masa. El circuito utilizado para implementar elmódulo es el siguiente:

Page 36: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 36

D4

DIODE

12

+ C12200uF

GND

JP2

HEADER 4

1234

D2

DIODE

GND

U1

L7805/TO220

1

3

2VIN

GN

D VOUT

U 2

L7905/TO220

3

1

2VIN

GN

D VOUT C6100nF

C 2100nF

C 5100nF

C 3100nF

+ C42200uF

JP1

HEADER 3

123

- +

D 3

BRIDGE

14

32

- +

D 1

BRIDGE

1

4

3

2

Figura 4.14 Módulo de potencia

También aunque no estén incluidos en módulo, también se ha considerado integrados latoma de red, el fusible y el transformador que están sujetos al chasis y se conectan a este módulo.

El sistema se alimenta a través de una toma de corriente de 220 voltios en alterna,monofásica. La tensión se lleva hacia el transformador mediante un cable de red, pero pasandoantes por un fusible.

El transformador reduce la tensión de 220 voltios a nueve voltios y reduce la corrientemáxima a 0,6 A, las tensiones de salida del transformador se conectan al módulo a traves delconector JP1.

La tensión positiva del transformador en alterna será reducida por el transformador hastaalcanzar los cinco voltios en contínua. Primero el puente de diodos rectifica la tensión deltransformador, después los condensadores C1 (electrolítico) y C2 (no electrolítico) la filtra, elregulador de tensión 7805 regula la tensión de salida a 5 V y por último, el condensador C3mejora la respuesta transitoria de la salida del regulador y su estabilidad.

Para la tensión negativa se realiza el mismo proceso aunque aquí se rectifica a partir de lossemiperiodos negativos de la tensión alterna del transformador en lugar de los positivos como serealizaba en el anterior caso. D3, C4, C5, C6 son análogos a D1, C1, C2, C3. El regulador detensión 7905 se encarga de regular la tensión contínua negativa a la entrada del integrado a losmenos cinco voltios.

El conector JP2 sirve para llevar las alimentaciones de la fuente a los diferentes módulosrestantes.

El puente de diodos utilizado es el típico B40C1000, que permite una tensión máxima de 40 V yuna intensidad máxima de 1 A, aunque puede aguantar picos de 100 V y 45 A.

Page 37: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 37

Los reguladores de tensión utilizados son el L7805 y el L7905 de la casa SGS-Thompson.Tales reguladores están protegidos internamente contra cortocircuito. Su encapsulado T0-220permite que se le pueda acoplar un disipador térmico ya que se suelen calentar si debensuministrar intensidades altas.

Los diodos D2 y D4 impiden que si a la salida hay una tensión de signo contrario a lasuministrada por los reguladores de tensión, esto afecte a los reguladores, ya que si no existierantales diodos, esta situación podría ser muy perjudicial para ellos. Estos diodos son del tipo1N4007.

Page 38: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 38

5 Descripción software del proyecto

El software del proyecto controla el hardware anteriormente citado y está formado porlos programas:

- Programa del microcontrolodar. Realizado en el lenguaje ensamblador del PIC, sufunción es controlar todos los recursos que el sistema utilizará mediante elmicrocontrolador, tanto los dispositivos internos del PIC como los dispositivosexternos.

- Programa del ordenador. Realizado en C. Realiza los cálculos de compensación ypermiten modificar la configuración del data logger. Para realizar la compensación deltermopar se utilizan aproximaciones polinómicas con muchas multiplicaciones, por loque tales operaciones es mejor que las ejecute el ordenador, más sobrado derecursos que el microcontrolador

5.1 Programa del PIC16F873

Se encarga de controlar las funciones del datalogger. El programa realizado se halla en lamemoria de programación del microcontrolador (FLASH). Las variables se guardan en lamemoria de datos RAM del microcontrolador. Algunas variables toman como valor inicial el valorguardado en la EEPROM del microprocesador. Algunos recursos del microcontrolador soncontrolados mediante interrupción (adquisición, recepción,…) y otros lo son por encuesta.

El programa está dividido principalmente en las tres actividades que debe ejecutar:

- Recepción de configuración

- Adquisición de temperaturas

- Envío de datos almacenados

También otra parte fundamental del programa es la rutina de atención a las interrupciones,que se genera al producirse una interrupción, provocando que se interrumpa momentáneamente eldesarrollo normal del programa.

5.1.1 Programa Principal. Selección de actividad

El algoritmo del siguiente trozo de programa está representado en la fig 5.1.

Page 39: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 39

Lo primero que se hace en el programa es inicializar los recursos generales, tales como lautilización de los puertos como entradas o como salidas, el ciclo de temporizador del timer 0 y lavelocidad del bus I2C.

Page 40: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 40

PulsadorInicio ?

Programación?

Adquisición Lectura Transmisión

A/D ?RS232

Programación

Led Programación

Led Transmisión

SN

NS

S

N

Led Adquisición

Apagar Led

Inicializaciones

Page 41: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 41

Fig 5.1 Algoritmo selección actividad

Una vez inicializados estos registros lo que hace el programa es comprobar el estado de losconmutadores. Se espera a que se pulse el botón de inicio. Cuando esto se produce compruebael estado de los conmutadores de actividad para saber que actividad ha de realizar. La másprioritaria es la de programación pero si no está activa realiza cualquiera de las otras dos,transmisión o adquisición, según si el conmutador está a nivel alto o bajo. Si está a nivel alto seproducirá un ciclo de transmisión de datos hacia el ordenador, pero si está a nivel bajo seproducirá un ciclo de adquisición las señales analógicas. Cada vez que realiza una actividadenciende el led correspondiente a dicha actividad. Cuando se acaba la actividad que estabarealizando, entonces apaga el led correspondiente y vuelve a esperar otra vez que se le indique elinicio de una nueva actividad, activando el conmutador de inicio.

5.1.2 Modificación de los parámetros de configuración

Si se escoge la opción de programación se escriben en la memoria EEPROM interna delPIC16F873 los parámetros de configuración que se reciben vía puerto serie. Al escribir enmemoria se reemplazará cualquier valor anterior presente en la memoria por los nuevos valoresenviados. El algoritmo de esta rutina puede verse en la fig. 5.2.

Page 42: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 42

Fig 5.2 Algoritmo configuración

Primero se inicializarán los recursos del sistema necesarios para la ejecución de estaopción. La recepción de datos del puerto serie del ordenador, se realizará mediante el móduloUSART presente en el microcontrolador.

La llegada de datos a través del puerto serie, provocará una interrupción. La interrupciónleerá los datos recibidos y los guardará en la memoria EEPROM interna. Los datos se iránguardando en posiciones consecutivas de la memoria al producirse la interrupción, incrementandopor tanto la dirección de la memoria EEPROM interna cada vez que se produce una interrupción.

La descripción de los parámetros guardados en la EEPROM aparece en la tabla 5.1. ,pero para el uso concreto de cada una de las variables referirse a la memoria de cálculo. Elprograma restará a la espera de que los datos recibidos sean igual al número de datos requeridos,o sea que se hayan escrito todas las variables de configuración del data logger. Esto lo puedecomprobar comprobando si la dirección de la memoria EEPROM, señala o no una dirección máselevada que la última dirección en que se guardará la última variable de configuración del sistema.

DIR MEM >max_dir_mem ?

Inicializarconfiguración

N

S

Configuración

Restaurarconfiguración

Retorno

Page 43: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 43

Posición Contenido

0 Valor inicial del contador de la dirección de la EEPROM externa byte alto

1 Valor inicial del contador de la dirección de la EEPROM externa byte bajo

2 Valor inicial del contador de la dirección de la EEPROM externa en lectura

3 Tamaño de la página de escritura de la EEPROM externa

4 Tamaño máximo de la cola de escritura

5 Incremento byte bajo de dirección de la EEPROM externa

6 Incremento byte alto de dirección de la EEPROM externa

7 Valor inicial del contador para el TMR1

8 Valor inicial del contador para el TMR0

Tabla 5.1: Parámetros configuración EEPROM interna

Los datos que ha de recibir del ordenador serán nueve, los siete primero hacen referenciaal valor de inicialización para variables que se utilizan en el control de la EEPROM, y las dosúltimas para los temporizadores. El que se guarden en la EEPROM permite que se puedandiferentes memorias y diferentes temporizaciones aumentando así la versatibilidad del sistema.

Cuando se hayan escrito todos los datos de configuración del sistema, se restauran losrecursos necesarios a su estado anterior a la ejecución de la configuración. Entre estasrestauraciones se incluirá la deshabilitación de la interrupción por recepción.

5.1.3 Adquisición temperaturas, almacenamiento EEPROM

El algoritmo de la función está representado en la figura 5.3. Si se escoge esta opción elprograma debe cada cierto tiempo convertir las señales analógicas a digitales y guardarlas en lamemoria EEPROM externa. Las señales analógicas a digitalizar son la tensión procedente deltermopar y del sensor de la temperatura ambiente LM35, aunque más concretamente laamplificación de estás dos tensiones. El conversor utiliza dos entradas de adquisición, una porsensor utilizado.

Como no se pueden digitalizar los dos canales a la vez, se utilizan dos temporizadorespara controlar el tiempo en la adquisición. Para controlar el tiempo de muestreo se utiliza eltemporizador TMR1 el cual provoca una interrupción cuando se cumple el tiempo prefijado,

Page 44: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 44

entonces se inicia la conversión de un canal. Para controlar el retardo entre una medida y la otrase utilizará el temporizador TMR0, provocando también una interrupción al cumplirse el tiempoprefijado e iniciándose la conversión del otro canal. Cuando se finaliza una conversión se produceotra interrupción. Esta interrupción es la que es detectada por la rutina de adquisición y supone elinicio de esta rutina. Los canales que se emplean en cada caso, son el canal cero para el LM35, yel canal uno para el termopar, por tanto los temporizadores que provocarán el inicio de laconversión de estos canales serán el TMR1 y el TMR0 respectivamente.

El PIC16F873 es un microcontrolador de ocho bits por lo que al realizar una conversiónanalógica-digital el microcontrolador utiliza dos bytes de memoria para guardar los diez bitsresultantes. En un byte se guardan los ocho bits de mayor peso, y en otro byte los dos de menorpeso. Si se guardaran en memoria íntegramente los bytes que genera el conversor se produciría unconsiderable derroche de espacio, ya que seis de los ocho bytes del último registro de memoriade conversión no se utilizan. Por tal de aprovechar dicho espacio se ha decidido unir cuatro bytesbajos de sólo dos bits significativos en un sólo byte. Así la memoria de la EEPROM estaráformada por sucesiones, expresadas en la tabla 5.2:

BYTE ALTO LM351 (LM110- LM102)

BYTE ALTO TERMOPAR1 (TC110- TC102)

BYTE ALTO LM352 (LM210- LM202)

BYTES BAJOS (LM101- LM100 -TC101- TC100-LM201- LM202-TC201- TC200)

BYTE ALTO TERMOPAR1 (TC110- TC102)

Tabla 5.2: Secuencia de información en memoria

El sistema guarda temporalmente las conversiones analógicas-digitales, siguiendo lasecuencia expresada en la tabla 5.2, en la memoria RAM. Se intenta aprovechar de esta forma, lacaracterística común en este tipo de memorias EEPROM que permite la escritura, en modopágina, de varios bytes a la vez. Así una vez la RAM contiene información suficiente como parallenar una página de escritura, se enviará dicha información a la EEPROM I2C utilizando para ellola comunicación propia del bus I2C. Esta forma de almacenamiento se considera una cola,porque a la memoria se le accede de forma indirecta, a través de un índice de dirección, pudiendovariar según los parámetros de configuración el tamaño de la página de escritura y por tanto eltamaño máximo de la cola.

Para conseguir la secuencia de la tabla 5.2, primero se digitaliza la señal del canalcorrespondiente al sensor LM35, posteriormente la del canal de termopar. Con estas dosmedidas ya se posee de información suficiente como para poder realizar la compensaciónnumérica, pero sólo se guardan del resultado de la conversión analógica-digital los bytes que

Page 45: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 45

contienen los bits de mayor peso de las respectivas conversiones en la cola, y se guardan enregistros temporales los bytes que contiene los bits de menor peso de la conversión. Se vuelven arealizar dos conversiones más, ambas corresponden nuevamente al canal de entrada de la tensiónprocedente del sensor de referencia LM35, y al canal de entrada de la tensión producida por eltermopar. Se guarda el byte alto de la primera de la dos últimas conversiones en la cola, el bytebajo temporalmente en la RAM, al igual que el byte bajo de la última conversión. Como ya setienen todos los bits a agrupar, se unen los bits de menor peso de las cuatro conversiones en unbyte. Este byte se guarda en la cola, y por último se guarda el byte alto de la última conversión. Elresultado es que en la cola se agrupan los datos siguiendo la secuencia vista en la tabla 5.2

Según lo dicho anteriormente cada vez que se realiza una conversión se guarda un byteen la cola, el byte alto de la conversión, excepto cuando se realiza la conversión del termopar dela segunda medición, entonces se introducen dos bytes en la cola, uno que corresponde al bytealto de dicha conversión y el otro corresponde a la unión de los bits de menor peso. Los datos sevan colocando en la cola hasta que esta llega en tamaño al de la página de escritura de laEEPROM.

Este diferente incremento en la cola según se esté en ciclo de conversión u otro, puedehacer que la cola pueda sobrepasar el tamaño de la página de escritura. Así por ejemplo, si sóloqueda un espacio en la cola para que esta iguale en tamaño el tamaño máximo de la página deescritura de la EEPROM, si el siguiente ciclo corresponde a la conversión del termopar de lasegunda medición, al incrementarse en dos posiciones la cola, se puede sobrepasar el tamaño dela página. Existen por tanto dos tipos de incrementos en la rutina, el anterior y el típico, que habríaocurrido si para el caso anterior el ciclo de conversión no hubiera sido el del termopar de lasegunda medida, sino cualquier otro ciclo, no se hubiera superado la página y la cola quedaríacompletada exactamente con el tamaño máximo que puede albergar la página.

Page 46: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 46

Canal 0?

Inicializar Bucle

Inicializar Bucle

Medida 0 ?

LM351LCanal 1

TERMO1LCanal 0, M 1

Medida 0 ?

LM352LCanal 1

TERMO1LCanal 0, M 0

Agrupar y a colaLM351L,TERMO1L,LM352L, TERMO2L

BYTE alto a cola

Cola llena?

A B

D

S SN

N

NS

C

Conversión?

N

S

Adquisición

S N

Inicializar Adquisción

Page 47: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 47

Fig 5.3a. Algoritmo de adquisición

Fig 5.3b. Algoritmo de adquisición

Dir altadesborda?

Dir bajadesborda?

BA

Cola llena?

Escribir EEPROMúltimo? primero

D

C

Escribir EEPROM

Cola quedan 16 Cola quedan 17

S

S

S

N

N

N

D

Retorno

Restaurar Adquisción

Page 48: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 48

Si se produce el caso de que la cola sobrepasa el tamaño máximo de la cola de escritura,entonces se procede a vaciar la cola. Para vaciar la cola, los datos de la cola se envían a lamemoria EEPROM externa, por el bus I2C, utilizando para ello el módulo SSP delmicrocontrolador. Al ser una cola, los primeros datos que se guardaron en la cola son losprimeros en ser enviados. Se enviarán tantos datos de la cola como quepan en una página de dememoria, quedando en este caso un byte sin enviar. El byte que ha quedado sobrante se colocarácomo el primero de la nueva cola, se reiniciará la cola, y el índice de la nueva cola se colocará enla segunda posición. Si la cola no ha sobrepasado, pero si igualado el tamaño de la página,simplemente se vaciará la cola y se reiniciará de momento vacía, estando el índice de colacolocado en la primera posición de la cola.

La dirección de memoria de la EEPROM I2C, pueden ocupar según el tipo, más de unbyte, por lo que en este caso, serán necesarios dos bytes para indicar la posición a escribir.Como la escritura se realiza empezando por las direcciones más bajas y se va incrementandosecuencialmente la dirección al escribirse una página, sólo será necesario incrementar el byte altocuando se produzca un desbordamiento del byte bajo, por lo que normalmente sólo habrá quecambiar uno de los dos bytes de dirección, el byte bajo. Por tanto al escribir se deben utilizar dosbucles que comprueben cuando se debe avanzar el byte alto de dirección y otro que compruebesi se ha terminado de escribir la memoria. El ciclo finalizará cuando se complete la escritura de lamemoria, mientras tanto se irán escribiendo los datos en la memoria y incrementándose susdirecciones en los dos bucles.

Cuando se finaliza la adquisición se deben deshabilitar las interrupciones tanto de lostemporizadoradores como del conversor analógico digital.

5.1.4 Lectura temperaturas almacenadas en la EEPROM, Transmisión

El algoritmo de esta rutina está reprensado en la figura 5.4.

Si se escoge esta opción con el conmutador, el programa debe leer toda la EEPROMalmacenada y transferirla al puerto serie. Durante el desarrollo del mismo, todos los recursos delsistema se tratan mediante encuesta si se requieren, por lo que no se utilizan interrupciones.

Utiliza dos bucles igual que el apartado anterior debido a los dos bytes de dirección. Enuno al finalizarse el ciclo se incrementa el byte bajo de la dirección, y si este se desborda,entonces se incrementa el byte alto y se reinicia el anterior bucle, acabando el ciclo cuandotambién cuando se desborde el byte alto de dirección

La EEPROM permite una lectura secuencial de cualquier número de bytes en un solociclo de comunicación por el bus I2C, pero debido a que la memoria del microcontrolador estálimitada, se establece un máximo de bits a leer inferior al máximo de memoria (normalmente 128bytes). Los datos que se van leyendo se van guardando en una cola, del tamaño anteriormente

Page 49: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 49

citado. El utilizar la cola como medio intermedio entre la lectura y la transmisión permite poderaprovechar esta característica, y por tanto minimizar el tiempo empleado.

El tamaño de esta cola de lectura, supera el número de bytes de la memoria de datos quecaben un solo banco de memoria, por lo que también será necesario utilizar el segundo banco dememoria para almacenar los datos en la cola. Al incrementar las direcciones de la cola se ha decontrolar cuando se llega al segundo banco de memoria, porque en este caso, el índice indirectode la cola pasará a ser el de la primera área disponible de memoria del segundo banco, evitandocon este salto que se machaquen registros del sistema (SFR), ya que algunos de ellos estánsituados al principio del segundo banco de memoria RAM, por lo que si no se produce este salto,al incrementar la última posición del primer banco se accedería a ellos. Esta precauciónobviamente se dará en los dos ciclos en que se use la cola, es decir tanto en la lectura de laEEPROM, como en la transmisión.

Para la lectura de la EEPROM se vuelve a utilizar el módulo SSP presente en elPIC16F873, igual como se utilizó en la rutina anterior, pero en este caso se utilizan las rutinas delectura de la EEPROM y no las de escritura.

Para la transmisión dirigida al puerto serie del ordenador, se utiliza el módulo USARTpresente en el microcontrolador. Así se transmiten uno a uno, por este módulo, todos los bytes dela cola. Al final de cada transmisión se permite un cierto retardo para evitar posibles errores en latransmisión de la información y asegurar así el correcto envío de esta, aunque no es necesario eluso del retardo. Para estas temporizaciones se utilizará el TMR0, que a diferencia del apartadoanterior se tratará por encuesta.

El proceso a seguir es en este caso, es ir leyendo los bytes de la EEPROM mediante lacomunicación I2C, y guardando tales datos en la cola, uno a uno secuencialmente hasta llegar alfinal de la cola. Esta cola se transmite al ordenador. Al finalizar la transmisión se reiniciará unnuevo proceso, la cola se reinicia y se procederá a realizar la siguiente lectura, incrementandopara ello la dirección de memoria EEPROM. Se volverán a llenar la cola con los datos leídos dela EEPROM, y se volverán a vaciar transmitiéndolos al ordenador. Este proceso se repetirá hastaque se llegue al final de la memoria y por tanto se hayan acabado los dos bucles de dirección.

Una vez acabada la rutina se restablecerán las condiciones anteriores a la ejecución deesta rutina.

Page 50: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 50

Fig 5.4.a. Algoritmo de transmisión

Dir altadesborda?

Dir bajadesborda?

S

S

N

N

Inicializar Bucle

Inicializar Bucle

Proceso dedatos

Lectura, Transmisión

Retorno

Page 51: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 51

Procesar Datos

COLA llegaa bank 2?

COLA = ini_bank 1

COLA llegaa fin ?

Leer EEPROM

COLA = ini_bank 1

COLA llegaa fin ?

Leer EEPROM

COLA llegaa bank 2?

COLA = ini_bank 1

COLA llegaa fin ?

Leer COLA

COLA = ini_bank 1

COLA llegaa fin ?

Leer COLA

Retorno

S

S

S

S

S

S

N

N

N

N

NN

Page 52: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 52

Fig 5.4b. Algoritmo de transmisión

5.1.5 Interrupciones

El algoritmo de la rutina de interrupción puede verse en la figura 5.5. Hay cuatro posiblescausas de producción de interrupción, el desbordamiento del TMR0, el desbordamiento delTMR1, la finalización de una conversión analógica-digital y la recepción de un dato enviado por elpuerto serie. Si se produce una interrupción y no se ha producido por ninguna de lascircunstancias anteriores se considera una interrupción espúrea.

Lo primero que se hace al entrar en una interrupción es guardar tanto el registro de estadodel microcontrolador, como el acumulador W, ya que ambos registros pueden ser modificadospor la interrupción y se desea que al volver de esta, estos registros conserven la informaciónanterior.

Los temporizadores se utilizan para controlar fielmente el tiempo de muestreo, TMR1, ypara controlar el retardo entre canales de adquisición. Al cumplirse el tiempo prefijado tanto parael TMR0 como para el TMR1 se iniciarán las conversiones analógicas-digitales. Al finalizar eltiempo asignado al primer temporizador se iniciará la conversión del canal cero y al finalizar elotro temporizador se iniciará la conversión del otro canal, en este caso el canal cero.

Para evitar solapamiento no se utiliza la interrupción de los dos temporizadores a la vez.Para evitar este problema, al atenderse una interrupción de un temporizador, se inhibe lainterrupción del mismo y se desinhibe la interrupción del otro. Así cuando se produce unainterrupción por el temporizador uno se inicia la conversión del conversor A/D, se inhibe lainterrupción del mismo y se permite la interrupción del temporizador cero. En cambio cuando seproduce una interrupción por el temporizador cero se inicia la conversión del conversor A/D seinhibe la interrupción del mismo y se permite la interrupción del temporizador uno.

Aunque se inhiba uno de los temporizadores, deberá asegurarse que no se ejecute el trozode rutina de interrupción reservado a la interrupción del timer inhibido. Como los flags deinterrupción de los timers se activan al desbordarse el contador del temporizador aunque no estéactiva la interrupción de este, si simplemente se inhibe el timer, puede darse el caso de que seejecute la rutina de atención a las interrupciones por una acontecimiento diferente al del timerinhibido; pero al examinar los flags de interrupción, como el flag del timer inhibido está activo, seejecute el trozo de rutina de la interrupción destinado al timer inhibido en lugar del trozo destinadopara el evento que provocó la interrupción. Para solucionarlo y diferenciar entre un flag que hasido fruto de una interrupción y otro que simplemente lo ha sido de un desbordamiento, se utilizauna variable(bit) para cada timer, que se activará cuando se desinhiba una interrupción del timer yse desactivará cuando se inhiba.

Como el tiempo de muestreo, que mide el TMR1, a menudo es superior al máximo tiempoque puede temporizar el módulo, se utiliza una variable de incrementos para aumentar así el

Page 53: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 53

tiempo de temporización. Así cada vez que se produce una interrupción de este temporizador seincrementa la variable. Cuando la variable de temporización llegue al máximo establecido, sereiniciará la variable, se iniciará la adquisición, y la deshabilitación y habilitación anteriormentemencionadas. Para el temporizador TMR0, no se requiere la utilización de ninguna variableauxiliar, porque el tiempo de retardo que se busca, al ser un valor bajo se encuentra dentro de losmárgenes de duración de la temporización del TMRO. Idealmente este tiempo sería cero, pero esnecesario este retardo debido a que el conversor analógico-digital requiere cierto al menos ciertoretardo entre adquisición y adquisición.

Fig 5.5.a Algoritmo de interrupciones

N

TMR0 IRQ?

S

Inicia A/D

Deshabilita TMR0Habilita TMR1

Guardar STATUS,W

IRQ

IRQ nooverflow ?

S A

N

B

Page 54: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 54

Fig 5.5.b Algoritmo de interrupciones

La finalización de una conversión analógica-digital produce una interrupción. En la que seinforma, mediante una variable, al programa principal de que hay un nuevo dato procedente de la

TMR1 IRQ?

A/D IRQ?N_T1++

A/D Finalizada

RX IRQ?

Lee RX

Escribe RX enla EEPROM

FIN

N

N

S

S

S

Inicia A/D

N

RestaurarSTATUS,W

N_T1=max?

N_T1=0

Deshabilita TMR1Habilita TMR0

S

N

B

A

IRQ nooverflow ?

S

N

Page 55: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 55

conversión. En las anteriores interrupciones de los temporizadores no se informaba al programade ejecución normal de la existencia de estas interrupciones, ya que hasta que no se ha obtenidoel dato de conversión no se da el ciclo como completo.

Si es la interrupción por recepción se lee el dato recibido y se escribe en memoriaEEPROM interna. Seguidamente se incrementa la dirección de la memoria EEPROM para que enla siguiente interrupción se ocupa la siguiente posición de dicha memoria. Al finalizar lainterrupción se restauran los registros guardados, el de estado y el acumulador, y se vuelve allugar donde se abandonó la ejecución del programa para atender la interrupción. Para elprograma en cuestión es una espera.

5.2 Programa en C

Con este programa se ejecutan todas las funciones asignadas al ordenador. La funcionesprincipales son realizar la compensación por software y permitir modificar la configuración deldata logger.

La comunicación con el data logger utiliza un puerto serie libre del ordenador, utilizandoseñales RS-232, las propias para este puerto. La velocidad de transmisión preasignada es de9600 bps. De las señales del RS-232 posibles sólo se tienen en cuenta TX, RX y GND(transmisión, recepción y masa).

El programa utiliza tanto la interrupción del puerto serie, como la del temporizadordisponible en el ordenador, para controlar la recepción de datos por el puerto serie y la gestiónde tiempos respectivamente. Provocando una interrupción cuando se recibe un carácter.

Las rutinas utilizadas para la compensación del termopar no sólo se limitan al rangoutilizado o al termopar k, sino que permiten trabajar con otros tipos de termopar. Así se permiteel trabajo con termopares (B, E, J, K, N, R, S, T).

Siempre que el usuario procesa nuevos datos, tanto si han sido recibidos desde el datalogger o han sido introducidos mediante el teclado, se guardan esos datos en ficheros de texto,para que estos puedan ser reutilizados en sucesivas ejecuciones del programa.

Los ficheros que se utilizan en el programa son los siguientes:

- FICHCON. En él se guardan parámetros utilizados en la compensación del datalogger (Tensión alimentación, offset, …)

- FICHTRM. En él se guardan los datos que se han enviado al data logger que seguardaran en la memoria EEPROM interna del microcontrolador.

Page 56: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 56

- FICHHEX. En él se guardan los datos que son enviados desde el data logger. Estosbytes enviados son los bytes almacenados en la memoria EEPROM externa del datalogger.

- FICHTXT. En él se guardan la temperatura, ya compensada, a la que se encontrabael termopar

- FICHVAL. En él se guardan la temperatura ambiente a la que se encontraba la uniónde referencia del termopar

- FICHVOL. La tensión que produjo el termopar debido a la diferencia de temperaturaque se producía en los extremos del termopar.

La no falta de alguno de los tres primeros ficheros puede provocar un error de ejecucióndel programa según sea la opción de ejecución del programa escogida.

5.2.1 Programa Principal

El algoritmo de este trozo de programa está representado en la figura 5.6.

Page 57: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 57

Fig 5.6 Algoritmo programa principal

El programa primero captura las opciones de ejecución del programa desde la línea decomandos del sistema operativo MS-DOS. Al reconocer la línea de comandos el programadeducirá que rutina deberá ejecutar. Si los datos son válidos, la rutina de análisis devuelve unnúmero que indica la opción de ejecución escogida, el puerto serie y el tipo de termopar utilizado.

Las opciones de ejecución son seis:

- Compensación por software. Se cargan los parámetros de compensación guardadosen el fichero FICHCON, y si es correcto se irán compensado las temperaturas quelleguen por el puerto serie, estos valores que lleguen se irán guardando en el ficheroFICHHEX, y las temperaturas adquiridas se irán guardando en los ficheroscorrespondientes.

INICIO

Op ?

FIN

TransmisiónFICHTRM

ConfiguraciónCapturarconfiguración

Capturar parámetros de ejecución

Capturarconfiguración

S

N

S

N

N

S

Op=1

ERROR

Op=2

Op=4

Transmisión

Op=3

Op=5

CompensarCOM

CompensarFICHHEX

CompensarManual

Op=6

Page 58: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 58

- Compensación por software, a partir de un fichero. Igual que el anterior pero losdatos se extraen de un fichero FICHHEX. Esta opción permite por ejemplo si sedesean cambiar los parámetros de compensación no sea necesario volver a leer lainformación del data logger

- Transmisión configuración data logger. Se pregunta al usuario la información necesariapara determinar los valores de la memoria de datos EEPROM que servirán comoconfiguración del data logger. La información solicitada (tiempo adquisición, memoriaEEPROM usada,…) se guarda en el fichero FICHTRM.

- Transmisión configuración data logger, a partir de un fichero. Igual que el anterior,pero no se pregunta al usuario, en su lugar se utiliza los datos guardados en ficheroFICHTRM que son los que se envían al data logger.

- Modificarán los parámetros de la compensación. Se entran el valor de los parámetrosde compensación.

- Compensación Manual. Se introduce manualmente la tensión producida por eltermopar y la temperatura ambiente de la unión de referencia, se aplican las fórmulasde compensación y se devuelve la temperatura a la que se encontraba el termopar.

5.2.2 Configuración

Tanto la rutina de configuración como la de capturar configuración del diagrama anteriorse encargan de obtener los parámetros de configuración del programa ya sea a través del ficheroFICHCON o del teclado, en esta última rutina los datos obtenidos se guardan en FICHCON.

Los parámetros que contendrá el fichero FICHCON serán:

- Puerto de comunicaciones. Será un número entero del uno al cuatro.

- Vcc. Tensión máxima distinguible por el conversor A/D. Debe se un número (decimal)entre 4.5-5.5

- Voff. Tensión de offset del A.I. Número decimal.

- Gref. Ganancia entre la entrada de la tensión procedente de la temperatura dereferencia y la salida del sensor. Número decimal.

- Gter. Ganancia entre la entrada de la tensión procedente del termopar y la salida deltermopar. Número decimal.

Page 59: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 59

5.2.3 Compensación

Para las dos primeras opciones se desean compensar datos. Se dará por finalizada laactividad cuando no se deseen leer más datos del data logger o se haya acabado la transmisiónpulsando ESC para un primer caso; o cuando se haya llegado al final del fichero FICHHEX en elotro caso.

La compensación de las temperaturas se hará simultánea a la lectura de datos, así cuandose produzca la lectura de toda una secuencia de datos (tabla 5.2), se compensará esa secuencia yse guardarán los resultados en los ficheros.

La tercera opción, la compensación manual, permite obtener la temperatura a la que estáel termopar si se indica la temperatura a la que está la unión de referencia y la tensiónproporcionada por el termopar.

5.2.3.1 Obtención Datos

La obtención de secuencias de datos es muy sencilla si se utiliza como fuente el fichero,simplemente leer una línea de este, pero puede ser algo más compleja si la fuente es el propiodata logger.

El Algoritmo de obtención de datos desde el termopar está representado en la figura 5.7.El data logger envía la memoria almacenada en la EEPROM externa secuencialmente empezandopor las posiciones iniciales de dicha memoria. Las conversiones analógicas-digitales son de diezbits, pero los envíos son de ocho bits, por ello se necesitan al menos dos envíos para descifrar elresultado íntegro que produjo la conversión. Para minimizar el espacio en la memoria EEPROMse optó por enviar un byte formado por los dos bits de menor peso de las cuatro conversionesanalógicas-digitales, consiguiendo que en la memoria EEPROM no se requiera reservar bits dememoria para “información basura”. De esta forma en una secuencia de información, véase tabla5.2, habrá cuatro bytes que corresponden a los bits los ocho bits de mayor peso de cuatroconversiones y un byte que agrupa los dos bits de menor peso de estas cuatro conversiones.

Cuando se completa la secuencia de datos se disponen de suficientes datos como pararealizar dos compensaciones y por tanto se obtendrá el valor de las dos temperaturas acaecidasen dos instantes del termopar.

Page 60: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 60

T=1

T=2

T=3

T=4

B.hi TERMOP 1

Byte bajo

B.hi LM35 2

B. hi LM35 1

B.hi TERMOP 1

OUT=1024

OUT=0

N

N

N

N

S

S

S

S

S

N

IN=OUT ?

Retorno

NS

T ++T=0

OUT ++

Retorno

Ciclo SEscribir byteFICHHEX

Obtener datos COM

Page 61: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 61

Figura 5.7 Algoritmo obtención de datos

Cuando se recibe un byte se provoca una interrupción, y el dato se guarda en una colacircular. Para controlar la posición de la cola se utilizan dos variables una indica la posición de losúltimos datos que han salido de la cola (out) y los últimos que han entrado (in). Cada vez que seproduce una interrupción aumenta in y cada vez que se realiza una compensación out. Por lo quecuando in sea diferente de out significará que hay un nuevo datos a compensar.

Como el ciclo (ver Tabla 5.2) se repite sabiendo cual fue el último dato se sabe queposición en el ciclo ocupa el dato actual. Así se obtendrá los cinco bytes del ciclo (LM351H,TERMO1H, LM352H, byte bajo, TERMO2H). Después el programa recompondrá los datos,uniendo bytes altos con bajos y aplicará la compensación.

Como la cola es circular cuando se llege a la última posición de la cola se pasará a laprimera posición.

5.2.3.2 Compensación de unión fría

Una vez se dispone de los cinco bytes que componen una secuencia de envío, el siguientepaso es unir los bytes altos con sus correspondientes bits del byte bajo, de esta forma se pasa decinco bytes a cuatro números enteros. Para eso simplemente se rotará dos posiciones a laizquierda el número byte alto y unirá con el byte bajo rotandolo hacia la derecha de forma que losúnicos bits significativos sean los dos últimos.

numnLOW2HIGH =>>⊕<< (5.1)

n=6 para el primer LM35

n=4 para el primer termopar

n=2 para el segundo LM35

n=0 para el segundo termopar

Una vez aplicado (5.1) y obtenido las cuatro mediciones, el siguiente paso es obtener latemperatura de referencia y la tensión que obtuvo el termopar en esos dos instantes, para ello seutilizan las ecuaciones (2.9) y (2.10) de la memoria de cálculo. Para realizar la compensaciónnumérica se aplica la ecuación (1.1). La ecuación (1.1) requiere la utilización de dos cálculospolinómicos para los cuales se aplicarán los coeficientes de aproximación ITS-90, una suma depolinomios convertirá temperatura en tensión, y la otra lo contrario, tensión en temperatura. Elresultado obtenido al aplicar la ecuación (1.1) será en este caso, la temperatura del horno en ese

Page 62: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 62

instante medida a través del termopar. Una vez obtenidas, se guardan los valores de lastemperaturas del termopar ya compensadas en el fichero FICHTXT.

5.2.4 Transmisión

En esta opción envían los parámetros de configuración del data logger al mismo datalogger. Los datos a enviar serán los que el microcontrolador guarda en la memoria EEPROMinterna de que dispone. Estos datos se envían byte a byte en binario por el puerto serie. Elalgoritmo de esta rutina está representado en la figura 5.8.

Figura 5.8 Algoritmo de transmisión

Obtención configuración D.L.

Guarda TABLA

Inicializar TMRINDICE=0

Transmisión

INDICE=FIN?

TIEMPO

Envía TABLAINDICE ++

Retorno

S

S

N

N

INDICE=0

Restaurar TMR

Page 63: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 63

Para evitar una posible pérdida o distorsión del envío por parte del microcontrolador, seespera un cierto tiempo entre envíos. Para controlar este tiempo se utiliza la interrupción deltemporizador 8254 presente en el ordenador. Por tanto el primer paso será configurar losregistros de este integrado y la interrupción del mismo, debiendo restaurar al anterior estado delsistema, antes de la ejecución de este programa, cuando se finalice el programa.

La única diferencia entre las dos rutinas que transmiten la configuración del data logger esde donde obtienen los datos a enviar, del fichero o preguntando al usuario, y como se utiliza elfichero FICHTRM, como lectura en el primer caso o como escritura en el segundo. El ficheroFICHTRM está compuesto por diferentes números en formato hexadecimal (bytes) y son losmismos valores que contendrá la memoria de datos de la EEPROM interna del microcontrolador.Tales campos son los valores iniciales que adoptan diferentes variables que utiliza elmicrocontrolador (ver tabla 5.1)

Si el usuario desea utilizar unos nuevos valores de configuración para transmitirlos al datalogger, la rutina obtiene los datos a transmitir a partir de unas preguntas al usuario (las que sevieron en el apartado 5.1.1.3). Una vez contestadas la preguntas se calculan los datos a transmitir(ver memoria de cálculo, apartado 2.2.6.1) y se escriben los datos en el fichero FICHTRM paraque esos datos puedan ser reutilizados posteriormente, que previamente se abierto para escrituray deberá cerrarse al finalizar la rutina. Ahora sólo falta enviar los datos al data logger para finalizarla rutina.

Los byte a enviar son guardados en una tabla. Cuando la interrupción avisa que se puedeenviar un byte se envía el valor actual de la tabla y se incrementa el índice de la tabla. Esteproceso se repite hasta que el índice de la tabla llega al último valor, dándose por acabados losenvíos y acabada la rutina.

5.2.5 Interrupciones

Hay dos rutinas de servicio al la interrupción, una se provocará al detectarse la llegada deun byte por el puerto serie, dicho puerto es controlado por un chip 8251 o alguno análogo almismo, y la otra al completarse el tiempo de temporizador del sistema, para ello se utiliza untemporizador del tipo 8254.

5.2.5.1 Interrupción del puerto serie

El algoritmo de esta rutina está representado en la figura 5.9. La rutina de interrupción segenera al recibir por el puerto serie, comprueba que se realmente se haya recibido el carácter. Sise ha producido entra el carácter en la cola y se incrementa el señalizador de entrada in. Como esuna cola circular si de 1024 bytes si se alcanza este valor volverá al principio. Como en todas lasrutinas de servicio a la interrupción se acaban insertando un EOI.

Page 64: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 64

Figura 5.9 Algoritmo interrupción puerto serie

5.2.5.2 Interrupción del temporizador

La rutina de interrupción se genera al cumplirse el tiempo asignado al temporizador.Como este tiempo suele ser muy pequeño, hasta que no se provocan diversas interrupciones nose da por el tiempo por concluido. Para ello se utiliza una variable que se incrementa cada vez quese provoca la rutina de servicio a la interrupción, cuando esta variable llega a un determinadovalor, se avisa al programa que se ha cumplido y se reinicia la variable. Como en todas las rutinasde servicio a la interrupción se acaban insertando un EOI. El algoritmo de esta rutina estárepresentado en la figura 5.10.

Recibido Dato ?

Cola[in]=Dato

In ++

In=1024 ?

In=0

EOI

N

N

S

S

Page 65: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DESCRIPTIVA Pag. 65

Figura 5.10 Algoritmo interrupción temporizador

6 Blibliografía

[1] Aplication Note 043: Measuring Temperature with Termocouples. Travis Ferguson. NationalInstruments

[2] Curso C++. Salvador Pozo Coronado. http://c.conclase.net

[3] El Universo Digital de IBM PC, AT y PS/2. Chiriaco García de Celis.http://atc.ugr.es/docencia/udigital/index.html

t = max_tiempo ?

t ++

t = 0

EOI

N

S

TIEMPO

Page 66: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

MEMORIA DE CÁLCULO

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

jmare
FECHA: Junio / 2003.
Page 67: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 2

ÍNDICE

1 ERRORES....................................................................................................................5

1.1 Error Conversor A/D...........................................................................................................................................5

1.2 LM35.......................................................................................................................................................................5

1.3 Termopar K............................................................................................................................................................6

2 PROGRAMAS..............................................................................................................8

2.1 Programa del PIC16F873...................................................................................................................................8

2.1.1 Variables ............................................................................................................................................................9

2.1.1.1 Registro STATUS ...............................................................................................................................10

2.1.1.2 Variables del programa .......................................................................................................................11

2.1.2 Programa principal.........................................................................................................................................13

2.1.2.1 Inicializaciones Puertos E/S...............................................................................................................13

2.1.2.2 Inicialización TMR0 ............................................................................................................................16

2.1.2.3 Inicialización SSP.................................................................................................................................18

2.1.2.4 Inicialización USART..........................................................................................................................21

2.1.3 Selección de Operación.................................................................................................................................23

2.1.4 Lectura de la EEPROM interna.....................................................................................................................24

2.1.5 Modificación de los parámetros de configuración ...................................................................................26

2.1.5.1 Incialización/Restauración Recepción vía USART ........................................................................26

2.1.6 Adquisición temperaturas, almacenamiento EEPROM ............................................................................29

2.1.6.1 Inicialización Adquisición..................................................................................................................32

2.1.6.1.1 Inicialización módulo A/D............................................................................................................33

2.1.6.1.2 Inicialización Timers ......................................................................................................................34

Page 68: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 3

2.1.6.1.3 Preparar Interrupciones ................................................................................................................36

2.1.6.2 Unión de los bits de conversión bajos ............................................................................................36

2.1.6.3 Escritura EEPROM I2C. ......................................................................................................................37

2.1.6.3.1 Rutinas I2C .....................................................................................................................................40

2.1.6.4 Restaurar Adquisición........................................................................................................................43

2.1.7 Lectura temperaturas almacenadas en la EEPROM, Transmisión ..........................................................43

2.1.7.1 Incialización Transmisión...................................................................................................................44

2.1.7.2 Lectura EEPROM.................................................................................................................................45

2.1.7.3 Transmisión USART...........................................................................................................................47

2.1.7.3.1 Rutina Temporiza ...........................................................................................................................48

2.1.7.4 Fin Transmisión...................................................................................................................................48

2.1.8 Interrupciones ................................................................................................................................................49

2.1.9 Escritura EEPROM interna............................................................................................................................51

2.2 Programa en C................................................................................................................................................... 52

2.2.1 Cabecera ..........................................................................................................................................................52

2.2.2 Función Main .................................................................................................................................................55

2.2.3 Análisis de la línea de comandos ................................................................................................................56

2.2.4 Configuración interna del programa............................................................................................................58

2.2.5 Compensación................................................................................................................................................59

2.2.5.1 Compensación desde el data logger.................................................................................................59

2.2.5.2 Compensación desde el fichero ........................................................................................................60

2.2.5.3 Compensación manual........................................................................................................................62

2.2.5.4 Compensación por software ..............................................................................................................62

2.2.5.5 Transformación temperatura en tensión..........................................................................................64

2.2.5.6 Transformación de tensión en temperatura.....................................................................................64

2.2.5.7 Potencias en suma de productos ......................................................................................................65

2.2.5.8 Búsqueda polinomios de compensación.........................................................................................65

2.2.6 Transmisión ....................................................................................................................................................83

Page 69: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 4

2.2.6.1 Memoria ................................................................................................................................................83

2.2.6.2 Obtención de datos y transmsión.....................................................................................................86

2.2.6.3 Envío por el puerto serie ....................................................................................................................90

2.2.7 Interrupciones y Recursos del sistema.......................................................................................................91

2.2.7.1 PIC 8259 ................................................................................................................................................91

2.2.7.2 USART 8250.........................................................................................................................................92

2.2.7.3 Timer 8253.............................................................................................................................................97

2.2.7.4 Incialización USART...........................................................................................................................98

2.2.7.5 Restauración USART .......................................................................................................................100

2.2.7.6 Inicialización Timer............................................................................................................................101

2.2.7.7 Restauración Timer...........................................................................................................................101

2.2.7.8 Interrupción puerto serie..................................................................................................................101

2.2.7.9 Interrupción temporizador................................................................................................................102

Page 70: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 5

1 Errores

A continuación se pretenden analizar los errores que se producen en el sistema paraencontrar soluciones que permitan reducir esto errorres a márgenes aceptables.

1.1 Error Conversor A/D

En un conversión analógica-digital la precisión de un bit será:

12)()(

−= −+

nrefref

bit

VVV (1.1)

Donde:

- )ref(V + y )ref(V − serían la máxima y la mínima tensión a las que trabaja el conversor.

- n Es el número de bits del conversor

El conversor utilizado en el data logger es el conversor analógico digital interno delPIC16F873 que es de 10 bits. Si se supone una V 5V )ref( =+ y una V 0V )ref( =− y se aplica la

ecuación (1.2) queda:

bitmV

89,41023

05=

−=bitV (1.2)

1.2 LM35

La correspondiencia entre temperatura y tensión en el sensor LM35 sigue la fórmula lineal:

10·Vm

TE = (1.3)

Si se desean medir posibles temperaturas ambientes entre 0 ºC y 100 ºC, si se aplica laecuación (1.3) (véase 1.4), la tensión que proporcionará el sensor LM35 estará comprendidaentre 0 V y 1 V

VVm

CE

VVm

CE

max

min

1Cº

10·º100

0Cº

10·º 0

==

==(1.4)

Page 71: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 6

Hay dos versiones del sensor LM35 en el mercado: el LM35DZ, con una precisión de 0,9ºC y el LM35CZ, con una precisión de 0,4 ºC. Cabe pues comprobar si el error de resolucióndel conversor es menor que los error intrínseco del sensor. Para ello se calcula la temperatura quecorresponde la tensión de un bit para el conversor del sistema.

CC

º489,0mV10º1

1·mV4,89T == (1.5)

En este caso el error producido es inferior al producido por el sensor LM35DZ, pero no enel caso del LM35CZ.

Se puede, no obstante, reducir el error debido a la conversión, si se amplifica la señal delsensor. Si se aumenta el márgen de tensiones hasta que este corresponda al márgen de trabajo delconversor analógico-digital, se reducirá el error debido a las conversiones. El sistema se haamplificado utilizando una configuración no inversora, véase figura 4.10 de la memoria descriptiva,en la que la expresión de la tensión de salida respecto a la entrada sigue la fórmula (1.6)

+=

1

21RR

VV io (1.6)

Si R2 = 3,9 kΩ y R1 = 1 kΩ, la tensión de salida seguirá la fórmula (1.7)

io VV 9,4= (1.7)

Añadiendo la amplificación a la fórmula (1.3), la correspondencia entre la tensión deadquisición del conversor y la temperatura queda:

49·Vm

TE = (1.8)

Por lo que ahora el error se ve reducido

CC

º1,0mV49

º11·mV4,89 ≈ (1.9)

Consiguiendo así que este valor sea muy inferior a la propia resolución del sensor.

1.3 Termopar K

Para realizar las equivalencias entre temperatura y tensión del termopar se han utilizado lasecuaciones descritas en el apartado 1.3.3 de la memoria descriptiva.

Así suponiendo una temperatura de referencia de 0ºC si el margen de temperaturas detrabajo varía entre los 0 ºC y los 1100 ºC, el margen de tensiones variará de:

Page 72: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 7

mVVCC

45 0º 1100º 0

→→

Teniendo en cuenta que las tensiones producidas por el termopar tienen valores muypequeños, resulta obvio que se deberá amplificar esta señal para adecuarla al rango de trabajo delconversor analógico-digital. Para amplificar la señal producida por el termopar se utiliza elamplicador de instrumentación INA114, cuya función de transferencia viene dada en la ecuación1.17.

iG

o VR

kV

Ω+=

501 (1.10)

Si RG = 470 Ω la ganancia (G) es G=107,4.

Si la tensión máxima de salida es de 5 V, la máxima tensión de entrada para que elamplificador de instrumentación no se sature serán unos 46,5 mV. Si se calcula la temperatura a laque habría que someter el termopar K para que proporcionaria 46,5 mV, suponiendo una tensiónde referencia de cero grados, serían unos 1138 ºC. Por tanto con los valores escogidos seasegura que se trabaja dentro del margen de temperaturas especificado, ya que se requiriéndoseque el sistema pueda captar una temperatura máxima de unos 1100 ºC, parámetro que se superaholgadamente.

Al no ser la relación temperatura voltaje del termopar lineal, el cálculo del error será tambiénno lineal y por tanto variante. Por tanto, deberá calcularse exactamente para cada temperatura.Pero para tener una cierta cota del error producido, se ha calculado el error para un ejemploconcreto. Si se considera que la tensión de entrada del conversor es igual a la tensión deresolución de un bit del conversor, aplicando (1.10) se puede calcular la tensión creada por eltermopar que, una vez amplicada, produciría la tensión de un bit.

V 538,45

47050

1mV 89.4

µ=

ΩΩ

+=

i

i

V

Vk

(1.11)

Si suponemos que esta tensión se produce considerando que la unión fría del termopar está a0ºC, se obtiene que la temperatura correspondiente a la tensión de error es de 1,14 ºC. Portanto, el error debido a la conversión será normalmente superior al grado.

Page 73: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 8

2 Programas

El presente proyecto consta de dos programas, uno funciona sobre el ordenador y el otrosobre el microcontrolador. El primero se ha desarrolado en lenguaje de programación C y elsegundo en el lenguaje ensamblador de los microcontroladores PIC. Para la lectura de losapartados que describen el funcionamiento del programa del ordenador se recomienda conocer ellenguaje C, sino fuere así, una amplia descripción del lenguaje C puede encontrarse en labibliografía [2]. También se recomienda conocer el lenguaje de programación en ensablador delos microcontrolodores PIC, es especialmente recomendable referise al apartado 13 del ANEXO5.1: PIC16F87X para ver una descripción del conjunto de instrucciones utilizadas por elmicrocontrolador.

El ANEXO 3:LISTADO DE PROGRAMAS contiene el listado íntegro de los programas,reproduciendo íntegramente el contenido de los ficheros en c y en ensamblador.

2.1 Programa del PIC16F873

A la hora de desarrollar el programa, se muestran las diferentes partes que componen elprograma, desde el inicio hasta el fin.

El ensamblador en concreto utilizado para la ejecución del programa es el MPASM. Esteensamblador establece que los programas deben seguir una estructura similar a:

List p=16F873 ;Se indica el modo de procesadorinclude "P16F873.INC" ;se incluye la definicion de los registros internos

;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>

ORG 0x00 ;Inicio en el Vector de Reset

Goto Inicio ;Va a la primera instruccion del programa;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

ORG 0x04 ;Inicio del vector de interrupcion

;Rutina ISR

;Programa

Así en la cabecera del programa se deberá indicar el microcontrolador que se va utilizar,también suele indicarse la dirección de un fichero asociado donde se aparece la definición de losregistros internos de ese microcontrolador. Después deberá indicarse el vector de reset y ladirección de incio del programa. Si el programa utiliza interrupciones deberá indicarse el vector deinterrupción, y normalmente a continuación, poner la rutina de servicio a las interrupciones.

Page 74: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 9

Después de la rutina de atención a las interrupciones ya pueden colocarse las rutinas delprograma, no olvidándose por supuesto de la rutina de inicio del programa.

2.1.1 Variables

Las aquí consideradas variables son un byte (registro) de la memoria delmicrocontrolador. En el programa se utilizan dos localizaciones para las variables, la memoriadatos RAM y la memoria de datos EEPROM, ambas integradas en el propio PIC16F873.

Page 75: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 10

Tabla 2.1 Mapa de Memoria del PIC16F87X

Se utilizan dos tipos tipos de registros dentro de la memoria RAM, los registrosespecíficos (Special Function Registers, SFR) y los registros de propósito general (GeneralPurpose Registers, GPR). Los SFR son registros de memoria reservados para la gestión defuncionones del sistema, a diferencia de los GPR que no tienen una función asignada deanterioridad, y por tanto su valor depende del programa que en esos momentos se estéejecutando.Para identificar las variables se utilizan etiquetas. Normalmente las etiquetas de losSFR no se definen en el programa en sí, sino que ya se han definido en el registro asociado.

El mapa de la memoria RAM, para el microcontrolador PIC16F873, donde aparecentanto los SFR como los GPR, aparece en la tabla 2.1. Como se obserba en la tabla, los registrosse dividen en cuatro bancos de memoria, banco 0, 1, 2, 3. Entre los SFR, los hay algunos que serepiten en los cuatros bancos de memoria y otros que sólo aparecen en uno.

En el PIC16F873 hay 128 bytes de memoria EEPROM (00h-7Fh). El acceso a lamemoria EEPROM es indirecto y se realiza a través de registros específicos destinados a esafunición

2.1.1.1 Registro STATUS

Seguramente en un programa del PIC, el registro más utilizado sea el STATUS (Registro deEstado, ver tabla 2.2), porque, entre otras funciones, permite seleccionar el banco de memoriadonde se ubica un determinado registro de memoria. Las otras funciones que contiene son: lainformación del estado de las operaciones aritméticas con la ALU del microcontrolador (bit decero Z, bit de carry C, bit de digital carry DC), y el estado del RESET o bien si ha habido unaejecución de SLEEP o CLRWDT, además de citada selección del banco de memoria.

Para acceder a un registro de un banco de memoria determinado existen dos métodos dedireccionamento: el direccionamiento directo, si se accede directamente a la dirección del registro,o el indirecto si se accede a la dirección a través de otro registro. Para acceder a los diferentesbancos de memoria dependiendo del modo de direccionamiento se usarán unos u otros bits delregistro STATUS. Se usará el bit IRP si se usa el direccionamiento indirecto o los bits RP1, RP0si se usa el direccionamiento directo.

Page 76: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 11

Tabla 2.2 Registro STATUS

2.1.1.2 Variables del programa

Las variables guardadas en la EEPROM se utilizan para adecuar el sistema a diferentesconfiguraciones, así, por ejemplo se permiten utilizar diferentes tipos de memoria EEPROMexterna, cambiar el tiempo de adquisición… Las de tipo RAM controlan la evolución delprograma, siendo muchas de estas inicializadas a partir de la lectura de la EEPROM interna.

Las variables de la memoria RAM son:SALVAW equ 0x20 ;Guarda W en la IRQ, tambien @ 0xA0SALVASTATUS equ 0x21 ;Guarda STATUS en la IRQ

Las dos primeras se utilizan para preservar el W y el STATUS cuando se atiende a unainterrupción.DATA_EE_ADDR equ 0x22 ;Direccion de la memoria EEPROM interna a escribirDATA_EE_DATA equ 0x23 ;Dato a escribir en la memoria EEPROM

Estas dos variables las utiliza la rutina de escritura de la EEPROM interna delmicrontrolador, y es donde se reflejan la dirección y el dato a escribir en la EEPROM.AUX equ 0x24 ;Variable auxiliar para asignar el bit Add2,1 uso

Page 77: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 12

Es una variable auxiliar que se utiliza sólo una vez por eso comparte dirección con otravariable que en esos momentos no se utiliza.LM351L equ 0x24 ;Byte bajo A/D LM35 1a medidaTERMO1L equ 0x25 ;Byte bajo A/D termopar 1a medidaLM352L equ 0x26 ;Byte bajo A/D LM35 2a medidaTERMO2L equ 0x27 ;Byte bajo A/D termopar 2a medida

Variables donde se guardan los bytes bajos de la conversión A/D para después poderagruparlos.Estado equ 0x28 ;Bits: Ad_ok, Bmes, Add2Bmes equ 0 ;Bit indica 1a/2a medida, EstadoAd_ok equ 1 ;Bit indica fin A/D, EstadoAdd2 equ 2 ;Bit indica 1/2 bytes @, EstadoT0_ok equ 3 ;Bit activa uso TMR0, EstadoT1_ok equ 4 ;Bit activa uso TMR1, Estado

Variable en la que se agrupan diferentes bits de control. En las secuencias detemperaturas es necesario determinar si se está en el primer par de medidas (0), o en el segundo(1). Informar al programa principal de que se ha producido la conversión A/D (1). Indicar si lamemoria M24x necesita dos bytes de dirección (1) o sólo uno (0). Si se debe atender alseñalizador del TMR0(1) o TMR1(1) o no porque está inhibido (0).Index equ 0x29 ;Indice de la colaDIRPAG equ 0x31 ;Inicio de la cola en el banco 0INIBANK2 equ 0xA1 ;Inicio de la cola en el banco 1

Direcciones de inicio de la cola, a la que se accede indirectamente mediante un índice.DEVSEL equ 0x2A ;Selector de dispositivoDIRH equ 0x2B ;Byte alto @ EEPROM M24xDIRL equ 0x2C ;Byte bajo @ EEPROM M24xNDIRH equ 0x2D ;Incrementos byte alto EEPROM M24xNDIRL equ 0x2E ;Incrementos byte bajo EEPROM M24x

Selector de dispositivo, byte de dirección alta y baja para las EEPROM I2C.Incrementos de dirección en los bytes altos y bajos de las memorias.t0 equ 0x2F ;Contador eventos TMR0t1 equ 0x30 ;Contador eventos TMR1

Retardos de cuentas de tiempos una vez se cumplen los tiempos fijados en TMR0 yTMR1.

Las variables que se guardan en la memoria EEPROM interna son:Ini_NDIRH equ 0x00 ;Valor inicial de NDIRH(F8)Ini_NDIRL equ 0x01 ;Valor inicial de NDIRL(F0)Ini_NDIRLR equ 0x02 ;Valor inicial de NDIRL en lectura(FE)MaxPagW equ 0x03 ;Fin de pagina(F0)MaxRamPag equ 0x04 ;Fin de cola(EF)INCL equ 0x05 ;Incremento byte bajo @,1 pag(10)INCH equ 0x06 ;Incremento byte alto @(02)NTMR1 equ 0x07 ;Valor inicial de t1(FD)

Page 78: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 13

NTMR0 equ 0x08 ;Valor inicial de t0(FD)

Estas variables son los denominados, parámetros de configuración del data logger, parasu descripción referirse a la tabla 5.1 de la memoria descriptiva.

Otras etiquetas que se usan a lo largo del programa son:DEVSEL_W equ b'10100000' ;Selección memoria M24x por bus I2C,WW_R equ 0 ;Bit de W/R, DEVSELTAH equ 0x0B ;Valor inicial de TMR1HTAL equ 0xDB ;Valor inicial de TMR1LTT equ 0x63 ;Valor inicial de TMR0

La dirección de las memorias M24x por el bus I2C, el bit de W/R que contiene el byteDEVSEL, y los valores iniciales de cuentas de TMR1 y TMR0.MaxReadA equ 0x81 ;Máximas lecturas con ACKMaxRead equ 0x80 ;Máximas lecturasMaxReadInc equ 0x80 ;Incremento de direccion en lectura

Valores máximos de la cola de lectura de las memorias I2C.

2.1.2 Programa principal

El programa empieza inicializando las entradas y salidas, establece la base de tiempos,inicaliza las comunicaciones, MSSP y USART, y después ejecutará cuando así se requiera, laactividad que indiquen las E/S. Cuando se acabe la actividad solicitada se volverá a esperar quese requiera el inicio de otra actividad.

2.1.2.1 Inicializaciones Puertos E/S

Los registros PORTA, PORTB, PORTC y TRISA, TRISB, TRISC controlan las puertasde entrada o salida del PIC16F873. Para configurar una señal de un puerto como entrada osalida, se pone a uno su bit correspondiente del registro TRISx para ese puerto si se quiereindicar como entrada, y a cero si se quiere indicar como salida. Una vez se ha configurado susseñales como entrada o salida, para obtener información acerca del puerto deberá accederse alregistro PORTx correspondiente a cada puerto. Los pines accesibles a través de los puertos y sufunción serán los reflejados en la tabla 2.3

Page 79: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 14

Tabla 2.3 Puertos de entradas y salidas del PIC

Con el registro ADCON1 se indica que entradas se utilizarán como entradas analógicas, oentradas/salidas digitales, o como tensiones de referencia. Los detalles pueden verse en la tabla2.4

Page 80: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 15

Tabla 2.4 Registro ACON1

Según el esquema circuital del data logger, como puede verse en el plano nº8, lasentradas/salidas del microcontrolador representan:

o RA0 es una entrada analógica que recibe la tensión producida por el sensor LM35.

o RA1 es una entrada analógica que recibe la tensión producida por el termopar.

o RA2 es una entrada digital que recibe el estado del conmutador inicio.

o RA3 no se utiliza.

o RA4 es una entrada digital que recibe el estado del conmutadorProgramación/Normal.

o RA5 es una entrada digital que recibe el estado del pulsador Adquisición/Transmisión.

o RB0-RB7 no son utilizadas en el sistema.

Page 81: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 16

o RC5 no es utilizada en el sistema.

o RC0 es una salida digital y representa el estado del led de Configuración.

o RC1 es una salida digital y representa el estado del led de Adquisición.

o RC2 es una salida digital y representa el estado del led de Envío.

o RC3 es la salida SCL del bus I2C

o RC4 es la entrada/salida SDA del bus I2C.

o RC6 es la salida TX de la comunicación asíncrona.

o RC7 es la entrada RX de la comunicación asíncrona.

Por lo que la inicialización de las entradas-salidas deberá ser:;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>

Inicio bsf STATUS,RP0 ;Selecciona Banco 1movlw b'00000100' ;Configurar E/S ana,digmovwf ADCON1clrf TRISB ;Configurar E/S portsmovlw b'10011000'movwf TRISCmovlw b'00110111'movwf TRISA

2.1.2.2 Inicialización TMR0

El registro OPTION_REG (Registro de Opciones) contiene varios bits de control paraconfigurar la preescala del TMR0 o del WDT (Watch-Dog), así como los bits INTEDG, queregulan el flanco activo para la generación de interrupción, el uso del TMR0 y si habránresistencias de pull-up en el puerto B, véase la tabla 2.5

Page 82: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 17

Tabla 2.8 Registro OPTION_REG

El TMR0 es un contador ascendente de 8 bits, que puede funcionar con el reloj interno oexterno, ser sensible al flanco ascendente o descendente y se le puede asignar un divisor defrecuencia.

Al utilizar el TMR0 se debe tener en cuenta que:

1. El bit T0CS (OPTION<5>) determina si está a 1 que el TMR0 funcione enmodo temporizador y si está a 0 en modo contador, con señal externa de relojpor T0CKI.

2. En el modo contador, el bit TOSE (OPTION<4>) selecciona el tipo de flancoactivo en T0CKI. (1: Descendente y 0: Ascendente).

3. En modo contador el periodo de la señal externa debe ser como mínimo de 4Tosc. En el modo temporizador la frecuencia de trabajo es Fosc/4.

4. El bit PSA (OPTION<3>) asigna el divisor de frecuencia al TMR0 si esta a 0y al WDT si esta a 1.

5. El ratio al que funciona el divisor de frecuencia se elige con los bits PS2, PS1 yPS0 (OPTION <2:0>)

Page 83: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 18

6. El TMR0 se puede leer en cualquier momento para conocer el estado de lacuenta

7. Cuando se escribe un nuevo valor en TMR0 para establecer una nuevatemporización, los incrementos del mismo se inhiben durante los dos ciclos dereloj posteriores.

8. Como es un contador ascendente, conviene cargarlo con el complemento a 2del valor deseado para la temporización. Las formulas a aplicar son:

Divisor) del (Rango Tosc 4·

ióntemporizac TMR0en cargar aValor

Divisor) del (Rango · TMR0)en cargado(Valor · Tosc · 4 ión temporizac

=

=(2.1)

Cuando se desborda el TMR0, es decir, pasa del valor FFh a 00h, se activa el bit <2> deINTCON (T0IF). Actúa como un señalizador del desbordamiento. Si, además, el bit <5> dedicho registro esta a 1 (Permiso de interrupción), se genera una interrupción. El bit T0IF se debeborrar por software una vez se atiende la interrupción.

9. En el modo de reposo, el TMR0 se detiene, por lo que no puede originarinterrupción.

Si se escoge establecer un preescaler de 128 (Rango del divisor) al TMR0, el programaqueda de la siguiente manera:

movlw b'11000110' ;preescaler de 128 a TMR0movwf OPTION_REG

2.1.2.3 Inicialización SSP

La comunicación serie síncrona (SSP) en modo I2C utiliza los siguientes registros:SSPCON (Registro de control), SSPCON2 (Segundo registro de control), SSPSTAT (Registrode estado), SSPBUF (Registro Buffer de Transmisión/Recepción), SSPSR (No es accesibledirectamente como registro en memoria), SSPADD (Registro de direcciones).

En la inicialización se activará el módulo y se establecerá la velocidad de trabajo delmismo, por lo que se utilizarán los registros SSPSTAT, SSPCON y SSPADD.

Con el registro SSPSTAT, representado en la tabla 2.6, se configura entre otras cosas lavelocidad del módulo I2C.

Page 84: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 19

Tabla 2.6 Registro SSPSTAT

Con el registro SSPCON, representado en la tabla 2.7, configura el módulo decomunicación serie síncrona (SSP) para trabajar en modo I2C

Page 85: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 20

Tabla 2.7 Registro SSPCON

Con este registro, el SSPCON, se activa el módulo y se establece que elmicrocontrolador actúe como maestro.

Con el registro SSPADD se puede establecer, una vez se ha configurado elmicrocontrolador como maestro, la velocidad de comunicación del bus I2C. Así la frecuencia dela comunicación I2C viene dada por la fórmula (2.2)

Page 86: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 21

( )14

+= SSPADDF

clock osc (2.2)

Si la velocidad del bus I2C se configura a 100 kHz, el programa queda:Inii2c movlw b'10000000' ;Inicializa uso I2C

movwf SSPSTATmovlw .9 ;Velocidad I2Cmovwf SSPADDbcf STATUS,RP0movlw b'00101000'movwf SSPCON ;SSPEN, clock=Fosc/4(SPPADD+1)

2.1.2.4 Inicialización USART

Para configurar la transmisión asíncrona se utilizan tres registros TXTSTA, RCSTA,SPBRG.

Tabla 2.8 Registro TXSTA

Page 87: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 22

El registro específico TXSTA, representado en la figura 2.8, actúa como registro deestado y control del transmisor.

El registro RCSTA, representado en la figura 2.9, actúa como registro de estado y controldel receptor.

Tabla 2.9 Registro RCSTA

La velocidad de comunicación se establecen por el valor cargado en el registro SPBRG yel bit BRGH del registro TXSTA. Si BRGH está a uno se considera que se utiliza un modo develocidad alto (1), sino este modo será de velocidad bajo (0), en el modo asíncrono. Con lafórmula (2.3) puede determinar la velocidad a la que está configurada la comunicación asíncrona.

BAUDIOS = FOSC / (n(x + 1)) (2.3)

n = 16 en el modo asíncrono de alta velocidad

Page 88: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 23

n = 64 en el modo asíncrono de baja velocidad

x = valor cargado en el registro SPBRG

siendo x = (FOSC / Baudios) / (n - 1) (2.4)

Si Fosc=4 MHz y la velocidad de transmisión son 9600 bps, SPBRG tendrá un valor de25.

Para realizar una transmisión asíncrona utilizando el PIC16F873 se seguirán los siguientespasos:

o Inicializar el registro SPBRG para el ratio de velocidad deseado. Si se necesita unavelocidad alta, aunque no sea imprescindible es conveniente utilizarlo porque de estaforma se minimizan los retardos. Poner a uno el bit BRGH del registro TXSTA.

o Permitir utilización del puerto de la transmisión asíncrona poniendo a cero el bitSYNC y poniendo a uno el bit SPEN.

La inicialización de la USART queda:Ini_USART bsf STATUS,RP0 ;Selecciona banco 1

bsf TXSTA,BRGHMovlw .25movwf SPBRGbcf TXSTA,SYNCbcf STATUS,RP0 ;Selecciona banco 0bsf RCSTA,SPEN

2.1.3 Selección de Operación

Una vez acabadas las inicializaciones el siguiente paso es comprobar el estado de losconmutadores. Para escoger la actividad a realizar se seguirá el esquema de la figura 5.1 de lamemoria descriptiva. La implementación de ese algoritmo en ensamblador quedará de la siguienteforma:;<<<<<<--------------------- SELECCION OPERACION --------------------->>>>>>>

M_P clrf PORTBBtfss PORTA,2 ;Control Pulsadoresgoto M_P

Conf btfss PORTA,4 ;Transmision/Adquisiciongoto No_Pgoto Ini_Recep ;goto sobrante

No_P movlw INCH ;2 bytes de direcciones?

Page 89: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 24

call Read_EEmovwf AUX ;Si incremento alto es 2?btfss AUX,1goto Addres2

Addres1 bcf Estado,Add2 ;si,1 byte direcciongoto TrAdq

Addres2 bsf Estado,Add2 ;no,2 bytes direcciones

TrAdq btfsc PORTA,5 ;Transmision/Adquisicion goto Ini_Lec_Tr

En el código mostrado aparte de codificar el algoritmo 5.1 de la memoria descriptiva, si laopción escogida utiliza la memoria EEPROM externa, es decir se ejecuta la opción de transmisióno adquisición, se determina si la memoria asignada utiliza un único byte específico para albergarsólo bits de direcciones, o necesita dos bytes específicos para albergar los bits de dirección. Si lacapacidad de la memoria EEPROM, necesita la utilización de uno a tres bits de dirección ademásde los ocho del byte bajo de direcciones, estos bits de mayor peso, en vez de albergarse en unbyte específico de direcciones, se albergan en el registro selector de dispositivo. Si la capacidadde la memoria EEPROM necesita de más de tres bits extra de direccionamiento, deberá utilizarseun segundo byte de direcciones. Para distinguir cuando los bits de mayor peso de la dirección sealbergan en el byte selector de dispositivo o en segundo byte específico de direcciones, seconsulta si el incremento del byte alto de dirección es dos, cosa que deduce que los bits de mayorpeso de la dirección están contenidos en el byte selector de dispositivo. Los bits de direcciónalbergados en el byte selector de dispositivo se sitúan a partir del segundo bit de menor peso, yaque el bit de menor peso está reservado a la lectura/escritura del dispositivo (ver apartado2.1.6.3), y por tanto, para no modificar el bit de menor peso, el incremento debe ser dos. Encambio si el byte selector no se utiliza para albergar esos bits de direcciones, y para estepropósito se utiliza un byte de dirección específico, como los bits de dirección se sitúan a partirdel bit de menor peso, el incremento debe ser uno. Por lo expuesto basta con esta comprobaciónpara deducir el posicionamiento de los bits de mayor peso de la dirección. Si el incremento altode la direcciones es dos, significa que se utiliza un solo byte específico de direcciones por lo queel bit Add2 (2 bytes de direcciones) del registro Estado deberá ponerse a cero, sino se cumple ypor tanto se deduce que el incremento es uno, el bit Add2 del registro Estado, sí debe activarse.

2.1.4 Lectura de la EEPROM interna

Durante el desarrollo del programa se deberá acceder a diversas variables que estaráncontenidas en la memoria de la EEPROM. Para leer y escribir la memoria de la EEPROM seutilizan cuatro registros: EECON1 (Registro de control 1), EECON2 (Registro de control 2),EEDATA (Registro de datos), EEADR (Registro de direcciones).

En el EEDATA se almacena el dato a leer o escribir en la memoria. Si lee una posición dememoria de EEPROM, esta estará disponible en el registro EEDATA en el siguiente ciclo dereloj.

Page 90: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 25

El EEADR es el registro donde se indica la dirección de memoria a escribir o leer, en elPIC16F873 puede ir de 0 a 127, ya que hay 128 bytes de memoria, por lo que el bit mássignificativo del registro debe siempre de mantenerse a cero.

El EECON2 no es físicamente un registro y se usa exclusivamente para indicar lasecuencia necesaria para la escritura de memoria.

El EECON1, representado en la figura 2.10, es el registro de control para el acceso amemoria.

Tabla 2.10 Registro EECON1

Para leer los datos almacenados en la memoria EEPROM interna se utiliza la siguientesubrutina, a la que previamente a su invocación se ha cargado la dirección a leer de la memoria através del registro acumulador (W). La rutina supone que el banco de memoria activo es el ceroen el momento de invocar la subrutina, al igual que acabará siendo al finalizar la subrutina. Larutina devuelve en el acumulador el dato contenido en la EEPROM para la dirección que enviada.Read_EE bsf STATUS,RP1 ;Bank 2

movwf EEADRbsf STATUS,RP0 ;Bank 3bcf EECON1,EEPGD;Point to DATA Memory

Page 91: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 26

bsf EECON1,RD ;EEPROM Readbcf STATUS,RP0 ;Bank 2movf EEDATA,W ;W=EEDATAbcf STATUS,RP1 ;Bank 0return

2.1.5 Modificación de los parámetros de configuración

Durante el desarrollo de esta actividad el programa principal sigue la evolución delalgoritmo 5.2 de la memoria descriptiva (ver también explicación), que expresándolo en lenguajeensamblador tendrá la siguiente forma:

;Ini_Recep

Programacion movf DATA_EE_ADDR,W ;Espera hasta que se reciban lassublw 0x09 ;9 direccionesbtfss STATUS,Zgoto Programacion

;No_Recep

goto M_P

Ahora se pasará a desarrollar el trozo de rutina que ha quedado pendiente de este primeranálisis, la inicialización y la finalización de la recepción en modo USART.

2.1.5.1 Inicialización/Restauración Recepción vía USART

Los pasos a seguir al realizar una recepción son similares a los que se deben seguir parauna transmisión asíncrona, pero cambiando los bits específicos de la transmisión por los derecepción

o Si la interrupción es deseada, habilitar el bit RCIE de PIE1 (GIE, PIE deben tambiénestar activados)

o Permitir la recepción poniendo a uno el bit CREN i asegurarse de que el bit RCIF delregistro PIR1 está a cero .

o Cuando se produzca la recepción, se activará RCIF y se producirá una interrupción sise ha activado RCIE. Entonces, el dato estará disponible en el registro RCREG. Elreset del bit RCIF se debe efectuar por software. Para realizar nuevas recepciones sedeberá repetir este último paso.

Teniendo en cuenta que las recepciones del sistema se tratan mediante interrupción, sedeberá activarse esa interrupción.

El registro INTCON es un registro que contiene varios bits de habilitación y señalizaciónde interrupciones, ver tabla 2.11. El registro INTCON, si tiene activado el bit GIE y el PEIE

Page 92: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 27

permite la interrupción de dispositivos periféricos. A los dispositivos periféricos se les habilita lainterrupción mediante el bit correspondiente del registro habilitador de interrupciones periféricas(PIE). Hay dos registros PIE, pero el que se utilizará en el programa es el registro PIE1,representado en la figura 2.12

Tabla 2.11 Registro INTCON

Page 93: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 28

Tabla 2.12 Registro PIE1

En nuestro caso el bit a que habilita la interrupción por recepción es RCIE, con lo que lainicialización de las recepciones queda finalmente:;Inicialización de la recepción e interrupción

Ini_Recep bsf PORTC,0 ;Led Configuracion

Clrf DATA_EE_ADDR ;Direccion EE=0Bsf RCSTA,CREN ;Recepción contínuabsf STATUS,RP0 ;Selecciona banco 1movlw b'11000000' ;Hablita int globales(GIE) y periferica(PIE)movwf INTCONbsf PIE1,RCIE ;Activa la interrupcion RXbcf STATUS,RP0 ;Selecciona banco 0

Para restaurar la recepción los pasos son similares pero a la inversa.

Page 94: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 29

No_Recep bcf RCSTA,CREN ;Fin recepcionbsf STATUS,RP0 ;Selecciona banco 1clrf INTCON ;Desactiva las interrupcionesbcf PIE1,RCIE ;Desactiva la interrupcion RXbcf STATUS,RP0 ;Selecciona banco 0bcf PORTC,0 ;Fin Configuracion

2.1.6 Adquisición temperaturas, almacenamiento EEPROM

Aquí el algoritmo a desarrollar (y la explicación) aparece en la figura 5.3 de la memoriadescriptiva. Como la rutina es muy grande se ha dividido en subapartados, los trozos en que sólosale el nombre del subapartado es porque se explicarán en subapartados anteriores de la memoriade cálculo;<<<<<<---------------------- INICIO ADQUISICION --------------------->>>>>>>

;<<<<<<--------------------- INICIALIZACIONES ADQ -------------------->>>>>>>

;<<<<<<---------------------------- BUCLES --------------------------->>>>>>>

Ini_BAD movlw Ini_NDIRH ;Inicializamos las variablescall Read_EEmovwf NDIRH ;Contador de incrementos del byte direccion alto

BdirH movlw Ini_NDIRL ;La incializacion byte contador direccion bajocall Read_EEmovwf NDIRLclrf DIRL ;byte de direccion baja

BdirL btfss Estado,Ad_ok ;Interrupcion acontecida? Goto BdirL

bcf Estado,Ad_ok ;Prepara la proxima espera

;<<<<<<----------------- RECONOCIMIENTO CANAL,MEDIDA ----------------->>>>>>>

LM35_Termo btfsc ADCON0,CHS0 ;LM35 o termopar?goto Termopar

LM35_12 btfsc Estado,Bmes ;LM35-> Medida 0 o 1?goto LM35_2

LM35_1 bsf ADCON0,CHS0 ;Proximo canal 1 para completar medicion Tªbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf LM351Lgoto Cola

LM35_2 bsf ADCON0,CHS0 ;Proximo canal 1 para completar medidicion Tªbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf LM352L

Page 95: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 30

goto Cola

Termopar btfsc Estado,Bmes ;Termopar->Medida 0 o 1?goto Termopar2

Termopar1 bcf ADCON0,CHS0 ;Proximo canal 0bsf Estado,Bmes ;Proxima medida 1, las 2 medidas de la medicion OKbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf TERMO1Lgoto Cola

Termopar2 bcf ADCON0,CHS0 ;Proximo canal 0bcf Estado,Bmes ;Proxima medida 0, las 2 medidas de la medicion OKbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf TERMO2L

;<<<<<<---------------------- UNION BITS BAJOS ---------------------->>>>>>>

;<<<<<<-------------------------- A LA COLA -------------------------->>>>>>>

L_Cola movf TERMO2L,W ;El byte se pasa a la colamovwf INDFincf FSR,Fincf Index,F

Cola movf ADRESH,W ;Los bytes altos resultantes de la conversionmovwf INDF ;se llevan a la colaincf FSR,Fincfsz Index,F ;La cola esta llena?goto Lleno

;<<<<<<-------------------------- COLA=MAX --------------------------->>>>>>>

;Escribir EEPROM

Last_No_Pasa movf INDF,W ;El ultimo no ha podido entrar el la EEPROMmovwf DIRPAG ;Sera el primero de la nueva colamovlw DIRPAGmovwf FSRincf FSR,F ;la cola vuelve a empezarmovlw MaxPagWcall Read_EEmovwf Indexgoto FinB

Lleno incfsz Index,W ;pueden entrar los de la cola?goto BdirL ;no, que siga llenandose

Page 96: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 31

;<<<<<<-------------------------- COLA=PAG --------------------------->>>>>>>

Vacia movlw DIRPAG ;Si,los datos pasan a la memoria EEPROMmovwf FSR ;Se repite el trozo de escritura en la E2PROMmovlw MaxPagWcall Read_EEmovwf Indexcall Startbtfss Estado,Add2goto V_Addresmovf DEVSEL,Wcall Send

V_Addres movf DIRH,WCall Sendmovf DIRL,Wcall Send

BW_E2PROM movf INDF,Wcall Sendincf FSR,Fincfsz Index,Fgoto BW_E2PROMcall Stop

New_Cola movlw DIRPAG ;la cola vuelve a iniciarse de momento vaciamovwf FSRmovlw MaxRamPagcall Read_EEmovwf Indexgoto FinB

;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>FinB movlw INCL ;Se incrementa la pagina de escritura

call Read_EEaddwf DIRL,Fincfsz NDIRL,F ;se ha sobrepasado el tope de direcciones por byte bajo?goto BdirLmovlw INCH ;Se incrementa la direccion altacall Read_EEaddwf DIRH,F

Incremento incfsz NDIRH,F ;Se ha completado la memoriagoto BdirH

;Restaurar

;<<<<<<------------------------ FIN ADQUISICION ---------------------->>>>>>>

Nótese que en el subapartado COLA=MAX y COLA=PAG se repite el código deescritura de la EEPROM pero cambiando las etiquetas. Este trozo de programa se comenta en elapartado 2.1.6.3, pero para tener en el mismo documento los dos trozos, en este aparece el

Page 97: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 32

código de escritura de la EEPROM con unas etiquetas y en el otro apartado aparece el otrocódigo.

2.1.6.1 Inicialización Adquisición

En la adquisición se utilizan cuatro módulos del microcontrolador: los temporizadores unoy cero, el conversor A/D y el módulo MSSP. El módulo MSSP ya ha inicializado pero los otrosno, por lo que deberán inicializarse. Los temporizadores y el conversor A/D se tratan medianteinterrupción por lo que también hay que inicializar esas interrupciones;<<<<<<--------------------- INICIALIZACIONES ADQ -------------------->>>>>>>

Ad_1 bsf PORTC,1 ;Led Adquisicion

AD_Add btfss Estado,Add2 ;2 bytes direccion ?goto DirhDevsel

SoloDevsel movlw DEVSEL_W ;Bits direccion I2Cmovwf DEVSELclrf DIRH ;direccion alta=0goto Ini_AD

DirhDevsel movlw DEVSEL_W ;Bits direccion I2C y bits direccion altamovwf DIRH ;de la memoria EEPROM

Ini_AD bcf Estado,Bmes ;Medida 0bcf Estado,Ad_ok ;No adquisiciones producidasbcf Estado,T0_ok ;No hacer caso del flag TMR0bsf Estado,T1_ok ;Hacer caso del flag TMR1bcf ADCON0,CHS0 ;Canal 0movlw DIRPAG ;Direccionamiento indirecto para cola que se pasaramovwf FSR ;a la EEPROMmovlw MaxRamPag ;Contador de bytes en la colacall Read_EEmovwf Index

;Inicializar modulo A/D;Inicializar Temporizador;Inicializar Interrupciones

Primero se enciende el led de adquisición. Después si el bit Add2 está a cero (1 byte dedirección) se usará un solo byte DIRH que hará a la vez las funciones de byte selector dedispositivo y byte de direcciones alto (bits de mayor peso de la dirección), también se utilizará elbyte DIRL como byte de dirección bajo (bits de menor peso de la dirección). Si por el contrario,Add2 está a uno (2 bytes de direcciones), se usará un byte específico como selector dedispositivo DEVSEL, otro también específico como byte de dirección alto DIRH, y como byte dedirección bajo se usará DIRL. Después de inicializar los valores de esos registros, se inicializa elcontrol de las adquisiciones: se establece que se empezará por el canal 0 (LM35), será el primerpar de medidas, no hay todavía adquisiciones producidas y se deberá cumplir primero el tiempo

Page 98: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 33

de muestreo (TMR1) antes que el retardo entre canales(TMR0). Por último se inicializa la cola, eldireccionamiento indirecto de esta, y el índice de la cola.

2.1.6.1.1 Inicialización módulo A/D

El módulo A/D del PIC16F873 tiene cuatro registros ADCON0, ADCON1, ADRESH,ADRESL, los dos primeros son de control y los segundos guardan el resultado alto y bajo de laconversión. El registro ADCON1, como ya se ha mostrado, configura la función de los pines(analógico, digital, referencia), así como si los diez bits se justificarán a derecha o izquierda. Elregistro ADCON0, representado en la figura 2.14, controla las operaciones en el módulo A/D.

Tabla 2.13 Registro ADCON0

El tiempo de conversión se define por TAD, que vendrá definido por los bits ADCS1,ADCS0. El PIC16F873 necesita al menos un mínimo de 12 TAD para los diez bits de conversión.Además se debe asegurar que TAD sea siempre superior a 1.6 µs. Si se escoge una escala deocho, sabiendo que la frecuencia de reloj son 4 MHz vemos como se cumplen lasespecificaciones para el TAD.

µs 1.6µs 88·10·41

·4

8

16 >===

oscAD f

T (2.6)

Page 99: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 34

Para iniciar una conversión analógica-digital utilizando el PIC16F873 se seguirán lossiguientes pasos:

1- Configurar los pines analógicos / tensiones de referencia / E/S digitales (ADCON1)

2- Seleccionar el canal de entrada (ADCON0)

3- Seleccionar el reloj de conversión (ADCON0)

4- Iniciar el módulo A/D (ADCON0)

La inicialización del conversor será:ADon movlw b'01000001' ;Fad=Fosc/8, ADON

movwf ADCON0

2.1.6.1.2 Inicialización Timers

El TMR0 ya ha sido inicializado y ahora sólo hace falta cargar la temporización que seutilizará en este apartado. El valor inicialmente fijado ha sido de veinte milisegundos, aunquevariando la etiqueta de este valor (TT) se puede establecer otra temporización. Si se ha asignadoun preescaler de 128 y el pic va a 4 MHz, aplicando la fórmula (2.1) el valor a cargar en elTIMER 0 será 156. Expresado este valor en complemento a dos en hexadecimal es 0x63.Podemos ver como se cumple lo citado en (2.5)

156·128·4·250 ns=19968 µs (2.5)

El temporizador TMR1 un temporizador/contador de 16 bits que consta de dos registrosde 8 bits (TMR1H, TMR1L). El par de registros (TMR1H:TMR1L) del temporizador seincrementa de 0000h a FFFFh, desbordándose cuando pasa del último valor al primero, entoncesse activa el bit TMR1IF del registro PIR1 (bit 0).

Mediante el registro T1CON, representado en la figura 2.15, se establece el modo detrabajo del TMR1.

Page 100: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 35

Tabla 2.14 Registro T1CON

Para el programa se activa el temporizador uno y se establece una preescala de ocho y seutilizará el módulo como temporizador, utilizando por tanto el reloj interno (Fosc/4). El valor deltemporizador TMR1 inicialmente fijado ha sido de medio segundo, aunque variando la etiquetasque corresponden al valor tomará inicialmente este (TAH-TAL) se puede establecer otratemporización. Para establecer el medio segundo en la temporización los valores a cargar en elTMR1 aplicando (2.1)

625008·4·250

5,0=

n (2.6)

Como se debe expresar el número en complemento a dos el valor inicial será 0x0BDB.La inicialización queda por tanto:Ini_TMR movlw NTMR1 ;Inicializa contador TMR1

call Read_EEmovwf t1movlw NTMR0 ;Inicializa contador TMR1call Read_EE

Page 101: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 36

movwf t0clrf TMR1L ;Aseguramos que TMR1H tiene el valor deseadoclrf TMR1L ;Aseguramos que TMR1H tiene el valor deseadomovlw TAH ;Contar 0,5 s TMR1movwf TMR1Hmovlw TALmovwf TMR1Lmovlw TT ;Contar 20 ms TMR0movwf TMR0movlw b'00110001' ;TMR1 ON preescale 1:8movwf T1CON

2.1.6.1.3 Preparar Interrupciones

Durante la adquisición se utilizarán las interrupciones de los temporizadores uno y cero, ydel conversor analógico-digital. Como no pueden utilizar la interrupción de ambos temporizadoresa la vez, se ha establecido que las interrupciones iniciales serán las del conversor analógico-digitaly la del temporizador uno.Ini_I_A bsf STATUS,RP0 ;Selecciona banco 1

movlw b'01000001' ;ADIE TMR1IEmovwf PIE1movlw b'11000000' ;Hablita int globales(GIE) y periferica(PIE)movwf INTCONbcf STATUS,RP0 ;Selecciona banco 0

2.1.6.2 Unión de los bits de conversión bajos

Se desea crear un byte agrupando los dos bits bajos de cuatro conversiones de tal formaque los bits del byte que los agrupe corresponda, de mayor a menor peso, a la primeraconversión, segunda, tercera y cuarta. Teniendo en cuenta que en el byte bajo de la conversiónanalógica-digital, los dos bits significativos son los de mayor peso, se deberán desplazar esos bitsa la derecha hasta colocarlos en la posición establecida del byte agrupación. Una vez se hancolocado en posición los bits significativos del byte bajo, se ponen a cero los bits restantes y sesuman todos los bytes bajos, dando como resultado el byte que se quería obtener.;<<<<<<---------------------- UNION BITS BAJOS ---------------------->>>>>>>

L_Byte bcf STATUS,Crrf TERMO2L,F ;Une los 2 bits bajos de la conversion en un byterrf TERMO2L,F ;En el extremo derecha va el termopar medida 2rrf TERMO2L,F ;por eso se rota el byte 6 veces a dcharrf TERMO2L,Frrf TERMO2L,Frrf TERMO2L,Wandlw 0x03 ;Elimina bits basuramovwf TERMO2L ;bits colocadosrrf LM352L,F ;Coloca el LM35 medida 2rrf LM352L,F ;por tanto 4 rotacionesrrf LM352L,Frrf LM352L,W

Page 102: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 37

andlw 0x0C ;Elimina bits basuraaddwf TERMO2L,F ;se suma, colocandose junto con las anterioresrrf TERMO1L,F ;coloca el termopar medida 1rrf TERMO1L,W ;2 rotacionesandlw 0x30 ;Elimina bits basuraaddwf TERMO2L,F ;suma con las anteriores bits rotadosmovf LM351L,W ;En el extremo izda el LM35 medida 1, no rotaandlw 0xC0 ;Elimina bits basuraaddwf TERMO2L,F ;se suman y la union se completa

2.1.6.3 Escritura EEPROM I2C.

El primer byte que le envía el master (PIC) a la memoria es el selector de dispositivo delbus I2C (DEV_SEL), al recibirlo la memoria reconoce que el master se quiere comunicar conella. En la tabla 2.16 se aprecian diferentes valores que adopta DEV_SEL dependiendo del tipode memoria utilizada.

Los selectores de dispositivo (chip enable) de la memoria se consideran que están a cero,ya que esos pines no se han conectado en la placa. Puede que aprovechando el espacio delDEV_SEL donde sólo se requieren cuatro bits para identificar el dispositivo, se aprovechen hastaun máximo de tres para indicar la dirección de memoria a utilizar. El bit cero se utiliza para indicarsi se va utilizar un ciclo de lectura o escritura.

Tabla 2.15 Byte Selector de Dispositivo

Después pueden seguir uno o dos bytes de direcciones (BYTE_ADDR). La escritura sehará siempre en modo página con la mayor capacidad posible. Si se utiliza un únicoBYTE_ADDR tal como indica la siguiente figura 2.1 los pasos a seguir son:

Page 103: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 38

Figura 2.1 Modos de escritura un byte de dirección

Iniciar la transmisión mediante una condición de start, después le sigue una selección dedispositivo (DEV SEL) con el bit R/W a cero. La memoria reconoce el envío, envía ACK, yespera la transmisión del byte de dirección, vuelve a responder con el ACK. El micro enviará elmáximo de bytes escribibles por página, uno después de otro tras recibir el bit de ACK. Porúltimo enviará el stop y se dará por concluido el correspondiente ciclo de escritura.

Si se utilizan dos BYTE_ADDR, la filosofía es la misma únicamente que se utilizan dosbytes en lugar de uno, pero por lo demás la secuencia es la misma como puede observarse en lafigura 2.2

Page 104: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 39

Figura 2.2 Modos de escritura dos bytes de dirección

Si se implementa en código el trozo de programa queda:W_E2PROM movlw DIRPAG ;Los datos pasan a la memoria EEPROM

movwf FSR ;respetando el orden en la colamovlw MaxPagWcall Read_EEmovwf Indexcall Start ;Se escribe en modo paginabtfss Estado,Add2 ;2 bytes direccion ?goto W_Addresmovf DEVSEL,W ;Selector dispositivocall Send

W_Addres movf DIRH,W ;DEVSEL o direccion altaCall Sendmovf DIRL,W ;Direccion bajacall Send

J_BW_E2PRO movf INDF,W ;bytes de datoscall Sendincf FSR,F

Page 105: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 40

incfsz Index,F ;hasta completar la pagina de escrituragoto J_BW_E2PROcall Stop

2.1.6.3.1 Rutinas I2C

El módulo MSSP ya se ha activado al iniciarse la ejecución del programa, pero aún no sehan establecido las rutinas que se utilizarán en esta comunicación. Las secuencias que se utilizanson las secuencias de start, stop, transmisión y recepción del SSPBUF (registro donde se guardanlos bits recibidos o los listos para transmitir), restart, y secuencia de reconocimiento(acknolewdge). Dichas secuencia se inician utilizando el registro SSPCON2, representado en lafigura 2.15.

Tabla 2.16 Registro SSPCON2

Operaciones que se realizan con el bus I2C:

Page 106: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 41

o Condición Start: Una condición de start debe preceder cualquier transferencia dedatos. Se identifica porque el master cambia el estado de la señal SDA de alto a bajo,mientras la señal SCL se mantiene estable en estado alto.

o Condición Stop: Una condición de stop finaliza una transferencia de datos. Seidentifica porque el master cambia el estado de la señal SDA de bajo a alto, mientrasla señal SCL se mantiene estable en estado alto.

o Envío y recepción de datos. Para enviar y recibir datos correctamente la señal SDAtiene que ser estable mientras SCL esté en alto, mientras SCL esté a nivel bajo puedecambiar el valor de SDA

o Bit ACK. El bit acknowledge (reconocimiento) se usa para indicar una transferenciacorrecta del byte de datos. El transmisor, que tanto puede ser el maestro como elesclavo del bus, cede la señal SDA al receptor después de enviar los ocho bits dedatos. Durante el noveno pulso de reloj, el receptor pone la señal SDA baja parareconocer que recibió los ocho bits de datos. Un NoAck (no reconocimiento) seproduce si la señal SDA está a nivel alto en el noveno pulso de reloj. En una lecturaun NoAck seguido de una condición de parada se utiliza para forzar al dispositivotransmisor a permanecer en estado stand-by hasta la próxima comunicación.

o Condición Restart. Análoga a la condición de start, es un segundo start antes definalizar la comunicación con la secuencia de stop.

Cuando el PIC16F873 acaba una secuencia de start, stop, restart, transmisión, recepcióno acknowledge el bit SSPIF del registro PIR1 se pone a uno, el reseteo del bit debe realizarsepor software.

Las rutinas del I2C implementadas serán la de start, stop, enviar, leer y terminar con un noreconocimiento, leer y terminar con un reconocimiento.

En todas las rutinas excepto en las de lectura se sigue un proceso similar, se borra elseñalizador SSPIF, se activa la secuencia correspondiente y se espera recibir el ACK. En laescritura la secuencia es escribir el dato presente en el acumulador en el registro SSPBUF. En lasrutinas de lectura después de activar la secuencia de lectura, se espera el dato, se guarda en elacumulador, se borra el señalizador, y se envía una secuencia de reconocimiento, esta puede seun ACK o un NACK, una vez se recibe la validación del esclavo se da por concluida la rutina.;<<<<<<-------------------- SECUENCIA START I2C ---------------------->>>>>>>

Start bcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,SEN ;Inicia secuencia de startbcf STATUS,RP0

FinStart btfss PIR1,SSPIF ;Espera a que acabe la secuencia

Page 107: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 42

goto FinStartreturn

;<<<<<<------------------- SECUENCIA RESTART I2C --------------------->>>>>>>

Restart bcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,RSEN;Inicia secuencia de restartbcf STATUS,RP0

FinRestart btfss PIR1,SSPIF ;Espera a que acabe la secuenciagoto FinRestartreturn

;<<<<<<--------------------- SECUENCIA STOP I2C ---------------------->>>>>>>

Stop bcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,PEN ;Inicia secuencia de stopbcf STATUS,RP0

FinStop btfss PIR1,SSPIF ;Espera a que acabe la secuenciagoto FinStopreturn

;<<<<<<------------------- SECUENCIA ESCRITURA I2C ---------------->>>>>>>

Send bcf PIR1,SSPIF ;Borra señalizador operacion I2Cmovwf SSPBUF ;Envia dato

FinSend btfss PIR1,SSPIF ;Espera ACKgoto FinSendreturn

;<<<<<<----------------- SECUENCIA LECTURA I2C CON ACK --------------->>>>>>>

Read bcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,RCEN;Inicia secuencia de lecturabcf STATUS,RP0

FinRead btfss PIR1,SSPIF ;Espera datogoto FinReadbcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,ACKDT ;Si ACKbsf SSPCON2,ACKEN ;Inicia secuencia de ACKbcf STATUS,RP0

FinNAck btfss PIR1,SSPIF ;Espera a que acabe la secuenciagoto FinNAckmovf SSPBUF,W ;Dato listo en Wreturn

;<<<<<<----------------- SECUENCIA LECTURA I2C SIN ACK --------------->>>>>>>

ReadAck bcf PIR1,SSPIF ;Borra señalizador operacion I2C

Page 108: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 43

bsf STATUS,RP0bsf SSPCON2,RCEN;Inicia secuencia de lecturabcf STATUS,RP0

FinReadAck btfss PIR1,SSPIF ;Espera datogoto FinReadAckbcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bcf SSPCON2,ACKDT ;No ACKbsf SSPCON2,ACKEN ;Inicia secuencia de ACKbcf STATUS,RP0

FinAck btfss PIR1,SSPIF ;Espera a que acabe la secuenciagoto FinAckmovf SSPBUF,W ;Dato listo en Wreturn

2.1.6.4 Restaurar Adquisición

Se han de desactivar las interrupciones, la del temporizador cero, uno y del conversorA/D. Se ha el funcionamiento del temporizador uno y del conversor analógico-digital. Por últimoapagar el led de adquisición y volver a esperar un próximo comando;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>

Rest_Adq bsf STATUS,RP0 ;Selecciona banco 1clrf INTCON ;Borra GIE,PIE,T0IEbcf PIE1,TMR1IE ;Desactiva la interrupcion TIMER 1bcf PIE1,ADIE ;Desactiva la interrupcion A/Dbcf STATUS,RP0 ;Selecciona banco 0bcf T1CON,TMR1ON;Desactiva el TIMER 1bcf ADCON0,ADON;Desactiva el A/Dbcf PORTC,1 ;Fin Adquisiciongoto M_P ;Vuelve a la espera de un proximo comando

2.1.7 Lectura temperaturas almacenadas en la EEPROM, Transmisión

Ahora el algoritmo a desarrollar aparece en la figura 5.4a de la memoria descriptiva,quedando el trozo de programa de la siguiente forma:;<<<<<<----------------------- INCIO TRANSMISION --------------------->>>>>>>

;<<<<<<--------------------- INICIALIZACIONES TRM -------------------->>>>>>>

;<<<<<<---------------------------- BUCLES --------------------------->>>>>>>

BdirH_R clrf DIRL ;direccion bajamovlw Ini_NDIRLR ;Contador de incrementos del byte direccion bajocall Read_EE ;para una lectura de E2PROMmovwf NDIRL

BdirL_R movlw DIRPAG ;Lectura secuencial de datosmovwf FSR ;los datos se guardan en una cola para enviarlosmovlw MaxReadA

Page 109: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 44

movwf Indexbcf DIRH,W_R ;Primero se realiza una falsa escritura

;<<<<<<---------------------------- EE->RAM -------------------------->>>>>>>

;<<<<<<---------------------------- RAM->RS -------------------------->>>>>>>

;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>

FinBR movlw MaxReadInc ;se icrementa la direccion bajaaddwf DIRL,Fincfsz NDIRL,F ;se ha desbordado?goto BdirL_Rmovlw INCH ;Se incrementa la direccion altacall Read_EEaddwf DIRH,Fincfsz NDIRH,F ;se ha trasmitido todo?goto BdirH_R

;Restaurar

;<<<<<<------------------------ FIN TRANSMISION ---------------------->>>>>>>

Al iniciar el bucle alto se inicializan la dirección alta y al iniciar el bucle bajo se inicializa lacola, después se rellena la cola de datos que se leen de la memoria EEPROM, y una vez llenadase vacía envíado los datos al ordenador, y vuelve a empezar hasta que se han transmitidos todoslos datos contenidos en la memoria.

2.1.7.1 Incialización Transmisión

Se enciende el led de transmisión. Se activa la transmisión asíncrona y se carga al TMR0al valor prefijado. Después dependiendo de si se utiliza uno o dos bytes de direcciones, se iniciasólo el byte DIRH, o los bytes DEVSEL y DIRH. También se inicia NDIRH.;<<<<<<--------------------- INICIALIZACIONES TRM -------------------->>>>>>>

Ini_Lec_Tr bsf PORTC,2 ;Led TransmisionT_Adquirir movlw TT

movwf TMR0TRX_EN bsf STATUS,RP0 ;Selecciona banco 1

bsf TXSTA,TXEN ;Activa la transmisionbcf STATUS,RP0 ;Selecciona banco 0

I_T_C movlw Ini_NDIRH ;Inicializa las variablescall Read_EE ;Contador de incrementos del byte direccion altomovwf NDIRH

LT_Add btfss Estado,Add2 ;2 bytes direccion ?goto LT_DD

LT_Dev movlw DEVSEL_W ;Bits direccion I2Cmovwf DEVSELclrf DIRH ;direccion alta=0

Page 110: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 45

goto BdirH_RLT_DD movlw DEVSEL_W ;Bits direccion I2C y bits direccion alta

movwf DIRH ;de la memoria EEPROM

2.1.7.2 Lectura EEPROM

El proceso de lectura de la memoria EEPROM es similar al realizado en la escritura.Puede observarse en la figura tal proceso en la figura 2.3, donde se expresan las diferentes formasde lectura posibles en las memorias M24x, pudiendo variar únicamente que pueden haber dosbytes de direcciones en lugar de uno como aquí se ha expresado.

Figura 2.3 Lectura EEPROM

Al leer se realizarán una lectura secuencial aleatoria, es decir se especifica la dirección delprimer byte con una falsa escritura, se realizará un start, se enviará el byte selector de dispositivo

Page 111: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 46

con el bit WR/ a cero y después de recibir el ACK se enviará el byte de dirección para recibirnuevamente el ACK y aquí acaba la falsa escritura. La parte de lectura se iniciará con un restart,se volverá a enviar el byte selector de dispositivo, pero con el bit WR/ a uno, indicando que seprocederán a efectuar lecturas, la memoria responderá con un acknowledge e irá enviando bytesde datos mientras el microcontrolador le responda con un ACK, en el momento en que el microresponda a la petición de reconocimiento con un NO ACK seguido de una secuencia de stop sedará por concluida la lectura.

Al indicar la dirección del dispositivo EEPROM se diferencia entre el direccionamientoutilizando un único byte específico de dirección o dos. Los bytes de los valores que se vayanleyendo de la memoria se irán guardando en una cola. El tamaño prefijado de la cola se haestablecido que serán 128 bytes, por lo que para guardar todos los datos de la cola se utilizaránregistros contenidos en los dos primeros bancos de memoria. También

El algoritmo 5.4.b de la memoria descriptiva, se ha tomado de referencia a la hora derealizar el programa:;<<<<<<---------------------------- EE->RAM -------------------------->>>>>>>

R_E2PROM call Start ;Para indicar la direccion a leerbtfss Estado,Add2 ;2 bytes direccion ?goto R_Addresmovf DEVSEL,W ;Selector dispositivocall Send

R_Addres movf DIRH,W ;DEVSEL o direccion altaCall Sendmovf DIRL,Wcall Send

Seq_R call Restart ;Se relizan las lecturas secuencialmentebtfss Estado,Add2 ;donde el incremento de direccion es automaticogoto R_DIRH ;2 bytes direccion ?

R_DEVSEL bsf DEVSEL,W_R ;lectura en el Selector dispositivomovf DEVSEL,Wcall Sendgoto BR_E2PROM

R_DIRH bsf DIRH,W_R ;lectura en la direccion altamovf DIRH,Wcall Send

BR_E2PROM call ReadAck ;Se leen los datos y se envia el ACKmovwf INDF ;Se guardan en la colaincf FSR,Fbtfsc FSR,7 ;La cola ha llenado el banco 1?goto Banco2

Banco1 incfsz Index,F ;avanza la cola,esta a punto de llenarse?goto BR_E2PROMgoto Fin_R

Page 112: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 47

Banco2 incf Index,F ;no nos olvidamos que la cola ha avanzadomovlw INIBANK2 ;se empiezan a colocar los datos en el banco 2movwf FSR

B2R call ReadAck ;Se leen los datos y se envia el ACKmovwf INDF ;se siguen guardadon los datos ahora en el banco 2incf FSR,Fincfsz Index,F ;sigue avanzando,esta a punto de llenarse?goto B2R

Fin_R call Read ;se llena, y se finaliza la lecturamovwf INDFcall Stop

2.1.7.3 Transmisión USART

Cada transmisión seguirá el patrón habitual de las comunicaciones asíncronas: un bit deinicio, ocho bits de datos y un bit de stop.

Teniendo en cuenta que ya se ha inicializado la USART del PIC16F873, para realizarmediante este módulo una transmisión se seguirán los siguientes pasos:

o Permitir la transmisión poniendo a uno el bit TXEN, poner a cero el bit TXIF delregistro PIR1

o Iniciar la transmisión cargando el dato a transmitir en TXREG, internamente el micropasa los datos al registro TSR. Una vez finalizada la transmisión con elcorrespondiente bit de stop, entonces TXIF valdrá uno. El reset del bit TXIF se debeefectuar por software. Para realizar nuevas transmisiones repetir este último paso.

Los datos a transmitir estarán en la cola RAM que puede estar ubicada tanto en un bancoo en los dos bancos de memoria. Cuando se envía un dato se llama una rutina que puede producirun retardo entre transmisión y transmisión. Teniendo en cuenta que el algoritmo de esta rutinaaparece en la figura 5.4.b de la memoria descriptiva, la parte del programa correspondiente a laUSART será:;<<<<<<---------------------------- RAM->RS -------------------------->>>>>>>

Transmision movlw DIRPAG ;Se transmiten los datos de la colamovwf FSRmovlw MaxReadmovwf Index

Trmt128 bcf PIR1,TXIF ;Se borra el señalizador de escritura para empezarmovf INDF,W ;se transmite el datomovwf TXREG

W_Tras btfss PIR1,TXIF ;Encuesta para el final de la transmisionGoto W_Trascall Temporiza ;Evita fallos transmisión esperando un tiempoincf FSR,F ;se ha llegado al banco 1?btfsc FSR,7goto Banco2T

Page 113: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 48

Banco1T incfsz Index,F ;Reduce la colagoto Trmt128goto FinBR

Banco2T incf Index,F ;no nos olvidamos que la cola se ha reducidomovlw INIBANK2 ;empiezan a salir los datos en el banco 2movwf FSR

B2T movf INDF,W ;se transmite el datomovwf TXREGcall Temporiza ;Evita fallos transmisión

W_Tras2 btfss PIR1,TXIFgoto W_Tras2incf FSR,Fincfsz Index,F ;se ha vaciado la cola?goto B2T

2.1.7.3.1 Rutina Temporiza

Esta rutina se utiliza para retardar las transmisiones con la USART.Se retardan un númerode veces, el tiempo de retardo especificado en la EEPROM para el temporizador cero. Esenúmero también puede ser cero y por tanto, no se retardará el sistema. La gestión deltemporizador cero, en este caso, se trata por encuesta.Temporiza bcf STATUS,RP0 ;Selecciona banco 0

movlw NTMR0call Read_EEmovwf t0incfsz to,Fgoto Delay_20mSreturn

Delay_20mS bcf INTCON,T0IFDelay btfss INTCON,T0IF

goto Delayincfsz t0,Fgoto Delay_20mSreturn

2.1.7.4 Fin Transmisión

Para finalizar la transmisión se desactiva la transmisión de la USART, se apaga el led detransmisión y vuelve a esperar una nueva operación.;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>

Fin bsf STATUS,RP0 ;Selecciona banco 1Bcf TXSTA,TXEN ;Desactiva la transmisionbcf STATUS,RP0 ;Selecciona banco 0bcf PORTC,2 ;Finaliza la trasmisiongoto M_P ;Vuelve a la espera de un proximo comando

Page 114: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 49

2.1.8 Interrupciones

Por último el algoritmo de la rutina de interrupción aparece en la figura 5.5 de la memoriadescriptiva. La rutina de interrupción al guardar los bytes de estado y acumulador asegura que sevuelva de la interrupción sin un imprevisto cambio.

El registro señalizador de las interrupciones periféricas es PIR1 y aparece en la tabla 2.17.

Tabla 2.17 Registro PIR1

Teniendo en cuenta los señalizadores y lo anterior la rutina de servicio a la interrupciónqueda:;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

Page 115: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 50

ORG 0x04 ;Inicio del vector de interrupcion

INTER bcf INTCON,GIEmovwf SALVAW ;Salva Wswapf STATUS,W ;Invierte STATUS --> Wclrf STATUS ;Banco 0, borra IRP,RP1,RP0movwf SALVASTATUS ;Salva STATUS

;No se guarda el PCLATH,solo se usa la página 1 de memoria de programa

Timer_0 btfss INTCON,T0IF ;Interrupcion por TMR0?goto Timer_1btfss Estado,T0_ok ;o solo overflow flag?goto Timer_1bcf Estado,T0_ok ;No hacer caso del flag TMR0bsf Estado,T1_ok ;Hacer caso del flag TMR1bcf INTCON,T0IE ;Desactiva irq TMR0bcf PIR1,TMR1IF ;Repone Flag TMR1bsf STATUS,RP0 ;Selecciona banco 1bsf PIE1,TMR1IE ;Activa irq TMR1bcf STATUS,RP0 ;Selecciona banco 0bsf ADCON0,GO ;Inicia la conversion A/Dgoto Restaura_INT

Timer_1 btfss PIR1,TMR1IF ;Interrupcion por TMR1?goto ADCbtfss Estado,T1_okgoto ADCincfsz t1,F ;tiempo completado ?goto Restaura_INTmovlw NTMR1 ;Repone contador TMR1call Read_EEmovwf t1bcf Estado,T1_ok ;No hacer caso del flag TMR1bsf Estado,T0_ok ;Hacer caso del flag TMR0bsf STATUS,RP0 ;Selecciona banco 1bcf PIE1,TMR1IE ;Desactiva irq TMR1bcf INTCON,T0IF ;Repone Flagbsf INTCON,T0IE ;Activa irq TMR0bcf STATUS,RP0 ;Selecciona banco 0bsf ADCON0,GO ;Inicia la conversion A/Dgoto Restaura_INT

ADC btfss PIR1,ADIF ;¿Interrupcion por conversion?goto Receptbcf PIR1,ADIF ;Si. Reponer Flagbsf Estado,Ad_ok ;Datos listosgoto Restaura_INT

Recept btfss PIR1,RCIF ;¿Interrupcion por recepcion?goto Restaura_INT ;No. Falsa interrupcion

Page 116: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 51

bcf PIR1,RCIF ;Si. Reponer Flagmovf RCREG,W ;Lectura dato recibidomovwf DATA_EE_DATA ;Guardar EEPROMcall Write_EEincf DATA_EE_ADDR,F ;Incrementar direccion

Restaura_INT swapf SALVASTATUS,W ;Invierte STATUS --> Wmovwf STATUS ;Restaura STATUSswapf SALVAW,F ;Invierte --> Fswapf SALVAW,W ;Restaura Wbsf INTCON,GIEretfie ;Retorna habilitando todas las interrupciones

2.1.9 Escritura EEPROM interna

La rutina de escritura de la memoria de datos de la EEPROM del PIC16F873 necesitaque se le pasen la dirección y el dato a escribir, mediante las variables DATA_EE_ADDR yDATA_EE_DATA; estas variables son traspasadas a su vez a los registros internos de direccióny datos para la memoria EEPROM (EEADR, EEDATA). Se declara que se escribirá en memoriade datos (EEPROM) no en memoria de programa (FLASH) y habilita la escritura. Para escribirlos datos se debe seguir la secuencia de instrucciones prefijada: primero 55h y después AAh sonenviados sucesivamente al registro EECON2. Se espera que la escritura finalice y para acabar sedeshabilitan las escrituras, evitando de esta forma posibles escrituras espúreas. La rutinaimplementada quedará finalmente:;<<<<<<----------------- ESCRITURA DE EEPROM INTERNA ----------------->>>>>>>

Write_EE movf DATA_EE_ADDR,Wbsf STATUS,RP1 ;Bank 2movwf EEADRbcf STATUS,RP1 ;Bank 0movf DATA_EE_DATA,Wbsf STATUS,RP1 ;Bank 2movwf EEDATAbsf STATUS,RP0 ;Bank 3bcf EECON1,EEPGD ;Point to DATA Memorybsf EECON1,WREN ;Enable writesbcf INTCON,GIE ;Disable interrupts

movlw 0x55 ;Required Sequencemovwf EECON2movlw 0xAAmovwf EECON2bsf EECON1,WR

bsf INTCON,GIE ;Enable interrupts

bcf STATUS,RP0

Page 117: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 52

bcf STATUS,RP1 ;Bank 0Escrito btfss PIR2,EEIF ;Wait for signal write complete

goto Escritobsf STATUS,RP0bsf STATUS,RP1 ;Bank 3bcf EECON1,WREN ;Disable writesbcf STATUS,RP0bcf STATUS,RP1 ;Bank 0return

2.2 Programa en C

A la hora de desarrollar el programa, se muestran las diferentes partes que componen elprograma, desde el inicio hasta el fin.

2.2.1 Cabecera

Primero se incluyen los ficheros donde se encuentran las funciones en C que se usarán a lolargo del programa. Después se definen las direcciones de los registros que controlan eltemporizador 8254 del ordenador y la dirección del vector de la interrupción de este. La últimadefinición define el máximo de coeficientes que podrá tener la matriz de polinomios del termopar.//Definiciones

#include <dos.h>#include <stdio.h>#include <conio.h>#include <math.h>

#define INTVECT_Time 0x08 /* Timer 0 IRQ */#define TIMER0 0x40 /* Adress Timer 0*/#define control8254 TIMER0+3 /*Control Timer 0*/

#define max_coef 15 /*Maximo coefientes polinomicos para calculo termopar*/

Se definen dos estructuras, una agrupa los bytes que se enviarán al data logger, y la otralos parámetros para el cálculo de la compensación por software de unión fría. Los nueve camposde la primera estructura hacen referencia a las variables reflejadas en la tabla 5.1 de la memoriadescriptiva. Los campos de la segunda estructura son: la tensión máxima del conversor analógico-digital, el offset del INA114, la ganancia entrada conversor analógico-digital - temperatura dereferencia, y la ganancia tensión producida por el termopar - tensión de entrada del conversoranalógico-digital.typedef unsigned char uchar;

typedef struct data_EE //Se agrupan los bytes a enviar al data logger unsigned char Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR; unsigned char MaxPagW,MaxRamPag,INCL,INCH,NTMR1,NTMR0;

Page 118: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 53

mem_EE;typedef struct param_int //Se agrupan los parametros internos de compensacion float Vcc,Voff,gao,gai; conf_in;

Para asignar el tiempo de muestreo requerido se necesita conocer la base de tiempos parael muestreo, por lo que se indica mediante una constante. También se indica como constante elnúmero de veces que deberá ejecutarse la rutina de atención a la interrupción del timer para quese de por cumplido el tiempo fijado, en este caso se ha considerado cinco.//Constantesconst float escala=0.52;//Escala TMR1 del data loggerconst int max_times=5; //Veces que se repite la IRQ 0 para dar alarma

Las variables globales utilizadas hacen referencia a la dirección inicial y al vector deinterrupción de la UART, al control de la cola, al retardo del timer y al cumplimiento del tiempodel timer. Una variable se utiliza para indicar la evolución de los datos durante la secuencia deenvíos.//Variables Globalesint PORT1; //Registro de direccion de la UARTint INTVECT; //Registro de direccion del PIC(8259)int bufferin = 0; //Principio de la colaint bufferout = 0; //Final de la colauchar buffer[1025]; //Cola donde se guardan los bytes recibidosint temperatura=-1; //Identifica la secuencia de datosint times=0; //Controla el retardo para dar alarmaint envio=0; //Alarma producida realizar envio...

Las funciones que utiliza el programa son:void interrupt (*oldport1isr)(); /*Punteros a ISR*/void interrupt (*oldtimer0isr)();

Son punteros a las rutinas de servicio a la interrupción que se quieren cambiar en elprogramavoid interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */void interrupt TIMERINT() /* Interrupt Service Routine (ISR) for TIMER 0 */

Las rutinas de servicio a la interrupción del puerto serie y del temporizador.int ini_usart(int com) /*Inicializa los registros internos de la USART permitiendo su uso, einterrupcion*/int fin_usart(int com) /*Fin uso de la USART*/

Inicialización y restaración de la UART, se le pasa el puerto serie a inicializar y devuelveun uno si ese puerto es correcto.void ini_timer(void) /*Inicializa los registros internos del TMR permitiendo su uso, e interrupcion*/void fin_timer(void) /*Fin uso del TMR*/

Inicialización y restaración del temporizador.

Page 119: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 54

int ctermo(char termo,double num,double *c,int *n,int inv)

A partir del tipo de termopar, si se desean equivalencia temperatura-tensión o tensióntemperatura, y el valor al que se le aplicará el cálculo potencia, devuelve una cadena depolinomios y la longitud de esa cadena. Si los datos pasados son correctos, devolverá un uno lafunción.double SUMCOEF(double *tab, float valor,int imax) /*Metodo rapido para el calculo de potencias*/

Método rápido para el cálculo de las ecuaciones (1.2) y (1.3) de la memoria descriptiva,devuelve el resultado de la suma de potencias para la cadena de polinomios enviada, el númerode polinomios de esta cadena, y el valor al que se le aplicarán los polinomios.double EmV(float T,char termo) /*Devuelve la tension que produciria el termopar a la temperaturadada*/double T90(float E,char termo) /*Devuelve la temperatura del termopar con la que se produce latension dada*/

Devuelven la equivalencia temperatura-tensión y tensión-temperatura para el termoparasignado. Devuelven -1 si el termopar no es conocido o la magnitud excede el rango medible paraese termopar.int c_fria(uchar L1,uchar T1,uchar L2,uchar L,uchar T2,double *t1,double *t2,double *trm1,double*trm2,double *V1,double *V2,conf_in *p,char ter) //Compensacion

Determina los cuatro valores de las conversiones contenidos en una serie de datos (L1,T1, L2, Low, T2). Se le envían los parámetros de compensación en una variable estructura.Devuelve las dos temperaturas ambientes y las dos tensiones producidas por el termopar que seregistraron en dos “muestreos” y las dos temperaturas del termopar resultantes ya compensadas.Devuelve un uno si los datos son correctosvoid adq(char op,int COM,conf_in *par) /*Gestiona bytes que llegan del serie, guarda los datosgestionados en ficheros*/

Compensación de temperaturas que llegan del data logger por el puerto serie. Se le indicael termopar usado, el puerto serie y los parámetros de compensación.int adqf(char op,conf_in *par) /*Gestiona bytes del fichero,guarda las temperaturas procesadas enficheros*/

Compensación de temperaturas que están guardas en un fichero. Se le indica el termoparusado, y los parámetros de compensación. Devuelve un uno si el fichero existeint manual (char ter) //compensación manual

Compensación de una temperatura introduciendo datos que se han medido directamentesobre el termopar. Se le indica el termopar usado, y devuelve un uno si el termopar es conocido ylas mediciones corresponden a valores que están localizados dentro del rango de medidas paraese termopar.void trmt (mem_EE *data) //Transmite los datos al data logger

Transmisión por el puerto serie de la configuración para el data logger.void get_data (int COM) //Transmite al DL los parametros introducidos

Page 120: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 55

int get_dataf (int COM) //Transmite al DL los datos de un fichero

Transmitir la configuración por el puerto serie indicado, a través de preguntas al usuario omediante un fichero. Si existe ese fichero devolverá un uno la función.int get_paramf(conf_in *p) /*Carga los parametros internos del fichero de configuracion*/

Carga los parámetros internos de compensación a través de un fichero. Devuelve un unosi el fichero existe.void get_param(conf_in *p) //Modifica los parametros internos del programa

Guarda los parámetros internos de compensación en el fichero.int analisis (int c,char **v,int *comando,int *com,char *ter)

Se le pasan la línea de comandos del MS-DOS los elementos contenidos en ella. Alanalizar la lína la rutina devuelve: la opción de ejecución del programa a realizar, el puerto serie yel termopar a utilizar. Devuelve un uno si la cadena de comandos era correcta.int main(int argc,char *argv[])

Primera rutina que ejecuta el programa, se le pasa la línea de comandos empleada alejecutar el programa, y el número de elementos distinguidos de esa cadena. Devuelve un uno si seproduce algún error.

2.2.2 Función Main

El algoritmo que describe esta función aparece en la figura 5.6 de la memoria descriptiva,quedando el trozo de programa de la siguiente forma:int main(int argc,char *argv[])

char termo='0'; //Tipo de termopar int opcion=0; //Opcion del programa escogida int port=0; //Puerto serie conf_in param; //Parametros internos de compensacion //Si la opcion se ha introducido correctamente sigue sino acaba if (analisis(argc,argv,&opcion,&port,&termo)) return(1); switch (opcion) //Sigue segun la opcion elegida case 1: //Compensacion datos procedentes puerto serie if (get_paramf(&param)) //Si los parametros internos son correctos

adq(termo,port,&param); //Compensa los datos que vengan de alli

else return(1); break; case 2: //Compensacion datos extraidos desde un fichero if (get_paramf(&param))

adqf(termo,&param); //Compensa

Page 121: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 56

else return(1); break; case 3: //Transmite configuracion especifica al data logger get_data(port); break; case 4: //Transmite configuracion habitual al data logger get_dataf(port); break; case 5: //Modifica los parametros internos get_param(&param); break; case 6: //Compensación manual manual(termo); break; return(0);

2.2.3 Análisis de la línea de comandos

Se utiliza para leer la línea de comandos y establecer a partir de ella la opción delprograma que se ejecutará, el tipo de termopar usado, el puerto de comunicaciones disponible, ysi se utilizará fichero. Si la cadena no es correcta la función devolverá cero con lo que seconsiderará que se ha producido un error.

La sintaxis del programa es:

TERMO <comando> [/com=n] [/ter=n] [/fil]

Donde comando puede ser c, t, p, m (ver ANEXO 1:MANUAL USUARIO) y losparámetros el puerto serie de comunicaciones (1-4), el termopar (B, E, J, K, N, R, S, T), y lautilización de un fichero interno (sólo para los comandos c o t).

Para leer un número indeterminado de parámetros, se busca la secuencia de caracteresque conforma un parámetro, cuando no se encuentren más parámetros, o haya un parámetrorepetido, o un parámetro incorrecto, estas dos últimas condiciones producen error si se producen,se dará por finalizada la función. Si se produce un error de reconocimiento de la línea decomandos se mostrará un texto de ayuda de la sintaxis del programa.int analisis (int c,char **v,int *comando,int *com,char *ter) //Interpreta la linea de comandos int error=0; //Linea correcta int n; int p_com,p_ter,p_fil;

*com=1; *ter='k'; //Valores por defecto if ((c>=2)) //Una cadena en la linea if (*v[1]=='c') //Compensacion

Page 122: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 57

*comando=1; else if (*v[1]=='t') //Transmision *comando=3; else if (*v[1]=='p') //Configuracion *comando=5; else if (*v[1]=='m') //Manual *comando=6; else error=1; p_com=p_ter=p_fil=0; for (n=2;(n<c)&&(!error);n++)

p_com=(!p_com)&&(*v[n]=='/')&&(*(v[n]+1)=='c')&&(*(v[n]+2)=='o')&&(*(v[n]+3)=='m')&&(*(v[n]+4)=='='); p_ter=(!p_ter)&&(*v[n]=='/')&&(*(v[n]+1)=='t')&&(*(v[n]+2)=='e')&&(*(v[n]+3)=='r')&&(*(v[n]+4)=='='); p_fil=(!p_fil)&&(*v[n]=='/')&&(*(v[n]+1)=='f')&&(*(v[n]+2)=='i')&&(*(v[n]+3)=='l'); if (p_com) //com=n

*com=(int) *(v[n]+5)-48; //ASCII a numeroerror=(*com<1)||(*com>4); //Puerto serie real

else if (p_ter) //ter=n

*ter=*(v[n]+5); //Termopar permitidoerror=!((*ter=='b')||(*ter=='e')||(*ter=='j')||(*ter=='k')||(*ter=='n')||(*ter=='r')||(*ter=='s')||(*ter=='t'));

else if ((p_fil)&&((*comando==1)||(*comando==3))) //fil y c o t

*comando=*comando+1; else error=1; //Parametro desconocido o repetido else error=1; //No comando if (error==1) //Muestra ayuda printf("\nUso: TERMO <comando> [/com=n] [/ter=n] [/fil]\n\n<Comandos>\n"); printf("c Compensación termopar\n"); printf("t Transmisión configuración data logger\n"); printf("p Modificación/Creación par metros internos\n"); printf("m Compensación indicando tensión producida y temperatura ambiente\n\n"); printf("Parámetros\n"); printf("/com=n indica el puerto serie usado n=1|2|3|4 , por defecto n=1\n"); printf("/ter=n indica el tipo de termopar usado n=b|e|j|k|n|r|s|t , por defecto n=k\n"); printf("/fil indica si se utilizara fichero interno, por defecto no se utiliza\n"); printf("Nota este par metro no será válido para los comandos p o m\n"); return (error);

Page 123: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 58

2.2.4 Configuración interna del programa

Hay dos rutinas de configuración. Una crea o modifica los parámetros de compenascióndel data logger, get_param, guardándolos en el fichero FICHCON y otra los lee de dicho fichero,get_paramf, para poder usar esos parámetros.

La rutina get_param permite al usuario variar los parámetros internos de compensacióndel programa. Una vez el usuario ha introducido todos los datos requeridos, se guardan en elfichero FICHCON. La rutina queda finalmente:void get_param(conf_in *p) //Modifica los parametros internos del programa int valor_ok; FILE *fp;

printf("\nModificacion Parametros Compensacion\n\n"); fp=fopen("fichcon","wt"); //Se introducen todos los parametros en el fich

printf("Tensión alimentación Vcc (V) "); //Preguntas scanf("%f",&p->Vcc); printf("Tensión de offset (mV) "); scanf("%f",&p->Voff); printf("Ganancia LM35 T¦ "); scanf("%f",&p->gao); printf("Ganancia Termopar V "); scanf("%f",&p->gai); fprintf (fp,"%E ",p->Vcc); //Guarda fichero fprintf (fp,"%E ",p->Voff); fprintf (fp,"%E ",p->gao); fprintf (fp,"%E\n",p->gai); fclose(fp);

La rutina get_paramf obtiene los parámetros de configuración del programa que seguardaron en el fichero FICHCON. Si el fichero existe, la rutina devolverá un uno, sino devolveráun cero. Una vez abierto el fichero se extraen todos los números presentes en el ficheroFICHCON que equivalen a las variables de configuración del programa. La rutina quedafinalmente:int get_paramf(conf_in *p) /*Carga los parametros internos del

fichero de configuracion*/ int valor_ok=0; //Devuelve 1 si se realiza correctamente la carga FILE *fp;

fp=fopen("fichcon","rt"); //Si existe el fichero de configuracion valor_ok = !(fp==NULL); if (valor_ok)

Page 124: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 59

//Carga los parametros valor_ok=fscanf (fp,"%E",&p->Vcc); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->Voff); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->ts); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->gao); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->gai); fclose(fp); else printf ("\nFichero de par metros internos no encontrado\n"); return(valor_ok);

2.2.5 Compensación

Hay tres comandos que permiten compensar datos procedentes de un tempar, compensardatos guardados en el termopar que llegan al ordenador a través de su puerto serie, compensartemperaturas que ya han sido transferidas anteriormente y se encuentran guardadas en un fichero,y compensar una única temperatura producida en un termopar introduciendo los datos que hansido medidos por el usuario.

2.2.5.1 Compensación desde el data logger

Primero se abren los ficheros donde se guardarán los datos procesados. En FICHHEX seguardan los datos que se van recibiendo, FICHVAL la temperatura ambiente, FICHVOL latensión producida por el termopar y FICHTXT la temperatura del termopar. Cuando se recibe undato se procesa, tal como se describe en el algoritmo de la figura 5.7 de la memoria descriptiva, ycuando se tiene una secuencia de datos, se compensan los datos obtenidos. Cuando se pulsaESC, se acaba el programa y se cierran los ficheros. La rutina que queda tiene la siguiente forma:void adq(char op,int COM,conf_in *par) /*Gestiona bytes que llegan del serie,

guarda los datos gestionados en ficheros*/ FILE *fp,*fv,*ft,*fa; //ficheros de texto double Ta1,Ta2; //Temperatura ambiente double Ttc1,Ttc2; //Temperatura del termopar double v1,v2; //Tension termopar uchar LM351H,TERMO1H,LM352H,TERMO2H,Low,ch; //Secuencia de datos int c;

printf("\nCompensación Data Logger. Pulsa ESC para salir\n"); /* Se abren los ficheros:

fp->FICHHEX-> Fichero donde se guardan los guardan los datos transmitidos por el data logger

fv->FICHVAL-> Fichero donde se guardan la temperatura ambiente de la adquisicion

fa->FICHVOL-> Fichero donde se guardan la tension producida por el termopar durantre la adquisicion

ft->FICHTXT-> Fichero donde se guardan la temperatura del temopar durante la adquisicion, ya compensada*/

Page 125: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 60

fp=fopen("fichhex","wt"); fv=fopen("fichval","wt"); ft=fopen("fichtxt","wt"); fa=fopen("fichvol","wt");

ini_usart(COM); //Se recibe del termopar do if (bufferin != bufferout) //Si se ha recibido un caracter ch = buffer[bufferout]; //Avanza la cola

bufferout++;if (bufferout == 1024) bufferout = 0;/*Determina la posicion del byte enviado dentro de la secuenciade datos y lo colocalo en fp*/if (temperatura==0) LM351H=ch; //Medida ambiente 1

fprintf(fp,"%x ",LM351H); else if (temperatura==1) TERMO1H=ch; //Medida termopar 1

fprintf(fp,"%x ",TERMO1H); else if (temperatura==2) LM352H=ch; //Medida ambiente 2

fprintf(fp,"%x ",LM352H);else if (temperatura==3) Low=ch; //Agrupacion bytes bajos

fprintf(fp,"%x ",Low); else TERMO2H=ch; //Medida termopar 2 fprintf(fp,"%x\n",TERMO2H);

c_fria(LM351H,TERMO1H,LM352H,Low,TERMO2H,&Ta1,&Ta2,&Ttc1,&Ttc2,&v1,&v2,par,op); fprintf(fv,"%E\n%E\n",Ta1,Ta2); //Guarda resultados fprintf(ft,"%E\n%E\n",Ttc1,Ttc2); fprintf(fa,"%E\n%E\n",v1,v2);

if (kbhit())c = getch();

while (c !=27); //Acaba cuando se pulse ESC

fin_usart(COM); //Fin Adquisicion fclose(fp); //Cierra ficheros fclose(fv); fclose(ft); fclose(fa); printf("\nFicheros Generados\n");

2.2.5.2 Compensación desde el fichero

A diferencia de la rutina del apartado anterior, adqf lee los bytes del fichero FICHHEX,no los obtiene del puerto serie. Como en el fichero FICHHEX una línea de este corresponde a

Page 126: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 61

una secuencia de datos, si se leen los cinco datos de la línea, estos se mandan a compensar. Elproceso irá leyendo líneas y compensándolas hasta que se llegue al final del fichero. Entonces secerrarán los ficheros y se retornará de la función.int adqf(char op,conf_in *par) /*Gestiona bytes del fichero,guarda las

temperaturas procesadas en ficheros*/ FILE *fp,*fv,*ft,*fa; //ficheros de texto double Ta1,Ta2; //Temperatura ambiente double Ttc1,Ttc2; //Temperatura del termopar double v1,v2; uchar LM351H,TERMO1H,LM352H,TERMO2H,Low,ch; //Secuencia de datos unsigned int LM351Hx,TERMO1Hx,LM352Hx,TERMO2Hx,Lowx; //Secuencia auxiliar int valor_ok; //Rutina correcta, fin lectura

printf("\nCompensación Fichero Data Logger\n");

fv=fopen("fichval","wt"); //Abrir ficheros idem rutina anterior ft=fopen("fichtxt","wt"); fa=fopen("fichvol","wt"); fp=fopen("fichhex","rt"); //pero FICHEX sera ahora la fuente valor_ok = !(fp==NULL); //Si existe fichero if (valor_ok) do //Coge una linea de 5 bytes valor_ok=(fscanf(fp,"%x%x%x%x%x",&LM351Hx,&TERMO1Hx,&LM352Hx,&Lowx,&TERMO2Hx)==5); if (valor_ok) //Si se tienen suficientes datos

LM351H=LM351Hx;TERMO1H=TERMO1Hx;

LM352H=LM352Hx;TERMO2H=TERMO2Hx;Low=Lowx; //Compensac_fria(LM351H,TERMO1H,LM352H,Low,TERMO2H,&Ta1,&Ta2,&Ttc1,&Ttc2,&v1,&v2,par,op);fprintf(fv,"%E\n%E\n",Ta1,Ta2); //Guarda resultadosfprintf(ft,"%E\n%E\n",Ttc1,Ttc2);fprintf(fa,"%E\n%E\n",v1,v2);

while (!feof(fp)); //Terminar cuando se llegue al final del fichero valor_ok=1; //Se ha abierto el fichero else printf ("\nFichero de Adquisición no encontrado\n"); fclose(fv); //Cerrar/ fclose(ft); fclose(fa);

fclose(fp); if (valor_ok) printf("\nFichero Generado\n"); return(valor_ok);

Page 127: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 62

2.2.5.3 Compensación manual

La función pregunta la temperatura ambiente y la tensión producida por el termopar quehan sido medidas. Aplica la fórmulas de compensación y escribe la temperatura a la que seencontraba el termopar. La función devuelve -1 si sospecha de que se ha podido introducir datosincorrectos.int manual (char ter) float ta,mV; //Tª ambiente, Tensión del termopar double t,V; //V(ta), t(mV) int pos_err; //error printf("\nCalculo Temperatura Termopar a partir de las mediciones\n\n"); printf("Temperatura ambiente (ºC) "); //Ta scanf("%f",&ta); printf("Tensión producida por el termopar (mV) "); //E scanf("%f",&mV); V=EmV(ta,ter); //Aplicacion formula compensacion t=T90(mV+V,ter); pos_err=!((V==-1.0)||(t==-1.0)); //Resultado de posible error printf("La temperatura del termopar es %f ºC\n",t); //Muestra T return(pos_err);

2.2.5.4 Compensación por software

La función c_fria aplica las ecuaciones (5.1) de la memoria descriptiva con lo que se unenlos bits bajos con los altos dando como resultado un número entero. Una vez se obtiene losnúmeros que registró el conversor analógico-digital, se debe averiguar la tensión que produjo eltermopar y la temperatura ambiente.

Si num es el número que fue obtenido por el conversor aplicando (1.1) La tensión a laentrada del conversor estará expresada en la ecuación (2.8), donde Vref (+) es un parámetrointerno de compensación que tiene una valor sobre los cinco voltios.

1023)(+⋅= ref

bit

VnumV (2.8)

Si num es fruto de la conversión de la tensión producida por el sensor LM35. Latemperatura de la unión de referencia será:

Temp

bitref G

VT = (2.9)

El valor típico de GTemp= 49·10-3 , aunque este valor también es un parámetro decompensación por lo que puede ligeramente cambiar.

Page 128: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 63

En cambio, si num es fruto de la conversión de la tensión producida por el termopar. Latensión que suministró el termopar será:

Term

offbitMEAS G

VVV

−= (2.10)

Hay dos variables del programa a considerar, la tensión de offset del amplificador

INA114 Voff y la ganancia para el termopar GTerm=

ΩΩ

+47050

1K . Ambos variables también son

parámetros de compensación.

Una vez obtenidas VMEAS y Tref ya se puede aplicar la ecuación de compensación (1.1)de la memoria descriptiva.

Los cálculos anteriores se realizan sobre los datos de una secuencia de información, cincovalores, por lo que al final se obtienen los valores correspondientes a: dos temperaturasambientes, dos tensiones producidas por el termopar y dos temperaturas del termopar. Todosestos valores corresponden a la primera y a la segunda medida de la secuencia.int c_fria(uchar L1,uchar T1,uchar L2,uchar L,uchar T2,double *t1,double *t2,double *trm1,double*trm2,double *V1,double *V2,conf_in *p,char ter)

//Compensacion unsigned int ref1,ref2,term1,term2; //Adquisicion unsigned int ref11,ref22,term11,term22; //Adquisicion double mV1,mV2; int pos_err;

//Reagrupa bits altos y bajos ref1=(L1<<2); ref11=((L&0xC0)>>6); ref1=ref1|ref11; term1=(T1<<2);

term11=((L&0x30)>>4); term1=term1|term11; ref2=(L2<<2); ref22=((L&0x0C)>>2); ref2=ref2|ref22; term2=(T2<<2); term22=(L&0x03); term2=term2|term22; //Compensacion de valores de la primera medida *t1=(p->Vcc) * (ref1/1.023E3) / (p->gao); //Tref *V1=((p->Vcc) * 1000 * (term1/1.023E3) / (p->gai))-(p->Voff); /*E en mV*/ mV1=EmV(*t1,ter); *trm1= T90(*V1+mV1,ter); //Aplicacion formula compensacion //Compensacion de valores de la segunda medida *t2=(p->Vcc) * (ref2/1.023E3) / (p->gao); //Tref

Page 129: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 64

*V2=((p->Vcc) * 1000 * (term2/1.023E3) / (p->gai))-(p->Voff); /*E en mV*/ mV2=EmV(*t2,ter); *trm2= T90(*V2+mV2,ter); //Aplicacion formula compensacion pos_err=!((mV1==-1.0)||(mV2==-1.0)||(*trm1==-1.0)||(*trm2==-1.0)); printf("%E %E %E %E\n",*t1,*trm1,*t2,*trm2); return(pos_err);

2.2.5.5 Transformación temperatura en tensión

Trasforma la temperatura de referencia en el voltaje equivalente que produciría eltermopar a esta temperatura si la unión de referencia estuviese a cero grados centígrados. Primerobusca los coeficientes apropiados para el termopar dado y la temperatura indicada. Se aplica lafórmula (1.2) de la memoria descriptiva o (1.5) si se utiliza el termopar K y la temperatura essuperior a los cero grados centígrados. Si no se encuentran los polinomios para esa temperatura otermopar la función devulve -1, sino devuelve el resultado de la transformacióndouble EmV(float T,char termo) /*Devuelve la tension que produciria el termopar a la temperaturadada*/ double E; double pol[max_coef]; int n;

if (ctermo(termo,T,pol,&n,0)) if (termo=='k')

if (T<0) E=SUMCOEF(pol,T,n); else E=SUMCOEF(pol,T,n); E=E+(pol[n+1])*exp((pol[n+2])*(T-pol[n+3])*(T-pol[n+3]));

else //Otro termopar E=SUMCOEF(pol,T,n); else E=-1.0;

return(E);

2.2.5.6 Transformación de tensión en temperatura.

Trasforma el voltaje del termopar a temperatura suponiendo que la unión de referenciaestá a cero grados centígrados. Primero busca los coeficientes apropiados para el termopar dado

Page 130: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 65

y la temperatura indicada. Se aplica la fórmula (1.3) de la memoria descriptiva. Si no seencuentran los polinomios para esa temperatura o termopar la función devulve -1, sino devuelve elresultado de la transformación.double T90(float E,char termo) /*Devuelve la temperatura del termopar con la que se produce latension dada*/ double T; double pol[max_coef]; int n;

if(ctermo(termo,E,pol,&n,1)) T=SUMCOEF(pol,E,n); //Suma potencia else T=-1.0; //Rango no encontrado error return(T);

2.2.5.7 Potencias en suma de productos

Esta función permite realizar menos operaciones al calcular sumas de productos depotencias. Ver ecuación de la memoria descriptiva (1.5).double SUMCOEF(const double *tab, float valor,int imax) int i; double suma=0.0; for (i=imax;i>=0;i--) suma=suma*valor+*(tab+i); /*(1.5)*/ return (suma);

2.2.5.8 Búsqueda polinomios de compensación

Esta función busca la cadena de polinomios compensación a utilizar, indicando también sunúmero, a través del termopar usado y la temperatura o tensión que se pasa como parámetro a lafunción. Debe indicarse si se buscan polinomios temperatura-tensión o tensión-temperatura.Devuelve uno si se encuentran polinomios, la cadena devuelta a los polinomios para el termopar yel valor dado.int ctermo(char termo,double num,double *c,int *n,int inv)

/*Devuelve los coeficientes del termopar usado */int ok=1; //Devuelve 1 si el termopar es conocido

switch (termo)

Page 131: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 66

case 'b':

if (!inv)/************************************* This section contains coefficients for type B thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* 0.000 to 630.615* 630.615 to 1820.000************************************/

if ((num>=0.000)&&(num<=630.615)) // min<t<max *n=6; *(c+0)=0.000000000000E+00; //Valores de los coeficientes *(c+1)=-0.246508183460E-03; *(c+2)=0.590404211710E-05; *(c+3)=-0.132579316360E-08; *(c+4)=0.156682919010E-11; *(c+5)=-0.169445292400E-14; *(c+6)=0.629903470940E-18; elseif ((num>=630.615)&&(num<=1820.000)) // min<t<max *n=8; *(c+0)=-0.389381686210E+01; *(c+1)=0.285717474700E-01; *(c+2)=-0.848851047850E-04; *(c+3)=0.157852801640E-06; *(c+4)=-0.168353448640E-09; *(c+5)=0.111097940130E-12; *(c+6)=-0.445154310330E-16; *(c+7)=0.989756408210E-20; *(c+8)=-0.937913302890E-24;

else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type B thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...

Page 132: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 67

* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* 250. to 700. 0.291 to 2.431 -0.02 to 0.03* 700. to 1800. 2.431 to 13.820 -0.01 to 0.02********************************************************/elseif ((num>=0.291)&&(num<=2.431)) // min<E<max *n=8; *(c+0)=9.8423321E+01; *(c+1)=6.9971500E+02; *(c+2)=-8.4765304E+02;

*(c+3)=1.0052644E+03; *(c+4)=-8.3345952E+02; *(c+5)= 4.5508542E+02; *(c+6)=-1.5523037E+02; *(c+7)=2.9886750E+01; *(c+8)=-2.4742860E+00; elseif ((num>=2.431)&&(num<=13.820)) // min<E<max *n=8; *(c+0)=2.1315071E+02; *(c+1)=2.8510504E+02; *(c+2)=-5.2742887E+01; *(c+3)=9.9160804E+00; *(c+4)=-1.2965303E+00; *(c+5)=1.1195870E-01; *(c+6)=-6.0625199E-03; *(c+7)=1.8661696E-04; *(c+8)=-2.4878585E-06; else ok=0;

break; case 'e':if (!inv)/************************************* This section contains coefficients for type E thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.*

Page 133: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 68

* Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1000.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<E<max *n=13; *(c+0)=0.000000000000E+00; *(c+1)=0.586655087080E-01; *(c+2)=0.454109771240E-04; *(c+3)=-0.779980486860E-06; *(c+4)=-0.258001608430E-07; *(c+5)=-0.594525830570E-09; *(c+6)=-0.932140586670E-11; *(c+7)=-0.102876055340E-12; *(c+8)=-0.803701236210E-15; *(c+9)=-0.439794973910E-17; *(c+10)=-0.164147763550E-19; *(c+11)=-0.396736195160E-22; *(c+12)=-0.558273287210E-25; *(c+13)=-0.346578420130E-28; if ((num>=0.000)&&(num<=1000.000)) // min<E<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.586655087100E-01; *(c+2)=0.450322755820E-04; *(c+3)=0.289084072120E-07; *(c+4)=-0.330568966520E-09; *(c+5)=0.650244032700E-12; *(c+6)=-0.191974955040E-15; *(c+7)=-0.125366004970E-17; *(c+8)=0.214892175690E-20; *(c+9)=-0.143880417820E-23; *(c+10)=0.359608994810E-27; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type E thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error

Page 134: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 69

* Range range range* (°C) (mV) (° C)* -200. to 0. -8.825 to 0.000 -0.01 to 0.03* 0. to 1000. 0.000 to 76.373 -0.02 to 0.02********************************************************/elseif ((num>=-8.825)&&(num<=0.000)) // min<E<max *n=8; *(c+0)=0.0000000E+00; *(c+1)=1.6977288E+01; *(c+2)=-4.3514970E-01; *(c+3)=-1.5859697E-01; *(c+4)=-9.2502871E-02; *(c+5)=-2.6084314E-02; *(c+6)=-4.1360199E-03; *(c+7)=-3.4034030E-04; *(c+8)=-1.1564890E-05; *(c+9)=0.0000000E+00; elseif ((num>=0.000)&&(num<=76.373)) // min<E<max *n=9; *(c+0)=0.0000000E+00; *(c+1)=1.7057035E+01; *(c+2)=-2.3301759E-01; *(c+3)=6.5435585E-03; *(c+4)=-7.3562749E-05; *(c+5)=-1.7896001E-06; *(c+6)=8.4036165E-08; *(c+7)=-1.3735879E-09; *(c+8)=1.0629823E-11; *(c+9)=-3.2447087E-14; else ok=0;

break; case 'j':if (!inv)/************************************* This section contains coefficients for type J thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant

* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -210.000 to 760.000

Page 135: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 70

* 760.000 to 1200.000************************************/if ((num>=-210.000)&&(num<=760.000)) // min<E<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.503811878150E-01; *(c+2)=0.304758369300E-04; *(c+3)=-0.856810657200E-07; *(c+4)=0.132281952950E-09; *(c+5)=-0.170529583370E-12; *(c+6)=0.209480906970E-15; *(c+7)=-0.125383953360E-18; *(c+8)=0.156317256970E-22; elseif ((num>=760.000)&&(num<=1200.000)) // min<E<max *n=5; *(c+0)=0.296456256810E+03; *(c+1)=-0.149761277860E+01; *(c+2)=0.317871039240E-02; *(c+3)=-0.318476867010E-05; *(c+4)=0.157208190040E-08; *(c+5)=-0.306913690560E-12; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type J thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.

** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -210. to 0. -8.095 to 0.000 -0.05 to 0.03* 0. to 760. 0.000 to 42.919 -0.04 to 0.04* 760. to 1200 42.919 to 69.553 -0.04 to 0.03********************************************************/elseif ((num>=-8.095)&&(num<=0.000)) // min<E<max

Page 136: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 71

*n=8;

*(c+0)=0.0000000E+00; *(c+1)=1.9528268E+01; *(c+2)=-1.2286185E+00; *(c+3)=-1.0752178E+00; *(c+4)=-5.9086933E-01; *(c+5)=-1.7256713E-01; *(c+6)=-2.8131513E-02; *(c+7)=-2.3963370E-03; *(c+8)=-8.3823321E-05; elseif ((num>=0.000)&&(num<=42.919)) // min<E<max *n=7; *(c+0)=0.000000E+00; *(c+1)=1.978425E+01; *(c+2)=-2.001204E-01; *(c+3)=1.036969E-02; *(c+4)=-2.549687E-04; *(c+5)=3.585153E-06; *(c+6)= -5.344285E-08; *(c+7)=5.099890E-10; *(c+8)=0.000000E+00; elseif ((num>=42.919)&&(num<=69.553)) // min<E<max *n=5; *(c+0)=-3.11358187E+03; *(c+1)=3.00543684E+02; *(c+2)=-9.94773230E+00; *(c+3)=1.70276630E-01; *(c+4)=-1.43033468E-03; *(c+5)=4.73886084E-06; *(c+6)=0.00000000E+00; *(c+7)=0.00000000E+00; else ok=0;

break; case 'k':if (!inv)/************************************* This section contains coefficients for type K thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation below 0 °C is of the form* E = sum(i=0 to n) c_i t^i.*

Page 137: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 72

* The equation above 0 °C is of the form* E = sum(i=0 to n) c_i t^i + a0 exp(a1 (t - a2)^2).** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1372.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<E<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.394501280250E-01; *(c+2)=0.236223735980E-04; *(c+3)=-0.328589067840E-06; *(c+4)=-0.499048287770E-08; *(c+5)=-0.675090591730E-10; *(c+6)=-0.574103274280E-12; *(c+7)=-0.310888728940E-14; *(c+8)=-0.104516093650E-16; *(c+9)=-0.198892668780E-19; *(c+10)=-0.163226974860E-22; elseif ((num>=0.000)&&(num<=1372.000)) // min<E<max *n=9; *(c+0)=-0.176004136860E-01; *(c+1)= 0.389212049750E-01; *(c+2)= 0.185587700320E-04; *(c+3)=-0.994575928740E-07; *(c+4)= 0.318409457190E-09; *(c+5)=-0.560728448890E-12; *(c+6)=0.560750590590E-15; *(c+7)=-0.320207200030E-18; *(c+8)=0.971511471520E-22; *(c+9)=-0.121047212750E-25; *(c+(*n)+1) = 0.118597600000E+00; *(c+(*n)+2) = -0.118343200000E-03; *(c+(*n)+3) = 0.126968600000E+03; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type K thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,

Page 138: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 73

* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -5.891 to 0.000 -0.02 to 0.04* 0. to 500. 0.000 to 20.644 -0.05 to 0.04* 500. to 1372. 20.644 to 54.886 -0.05 to 0.06********************************************************/elseif ((num>=-5.891)&&(num<=0.000)) // min<E<max *n=8; *(c+0)=0.0000000E+00; *(c+1)=2.5173462E+01; *(c+2)=-1.1662878E+00; *(c+3)=-1.0833638E+00; *(c+4)=-8.9773540E-01; *(c+5)=-3.7342377E-01; *(c+6)=-8.6632643E-02;

*(c+7)=-1.0450598E-02; *(c+8)=-5.1920577E-04; *(c+9)=0.0000000E+00; elseif ((num>=0.000)&&(num<=20.644)) // min<E<max *n=9; *(c+0)=0.000000E+00; *(c+1)=2.508355E+01; *(c+2)=7.860106E-02; *(c+3)=-2.503131E-01; *(c+4)=8.315270E-02; *(c+5)=-1.228034E-02; *(c+6)=9.804036E-04; *(c+7)=-4.413030E-05; *(c+8)=1.057734E-06; *(c+9)=-1.052755E-08; elseif ((num>=20.644)&&(num<=54.886)) // min<E<max *n=6; *(c+0)=-1.318058E+02; *(c+1)=4.830222E+01; *(c+2)=-1.646031E+00; *(c+3)=5.464731E-02; *(c+4)=-9.650715E-04; *(c+5)=8.802193E-06; *(c+6)=-3.110810E-08; *(c+7)=0.000000E+00;

Page 139: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 74

*(c+8)=0.000000E+00; else ok=0;

break; case 'n':if (!inv)/************************************* This section contains coefficients for type N thermocouples for

* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1300.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<E<max

*n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.261591059620E-01; *(c+2)=0.109574842280E-04; *(c+3)=-0.938411115540E-07; *(c+4)=-0.464120397590E-10; *(c+5)=-0.263033577160E-11; *(c+6)=-0.226534380030E-13; *(c+7)=-0.760893007910E-16; *(c+8)=-0.934196678350E-19;elseif ((num>=0.000)&&(num<=1300.000)) // min<E<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.259293946010E-01; *(c+2)=0.157101418800E-04; *(c+3)=0.438256272370E-07; *(c+4)=-0.252611697940E-09; *(c+5)=0.643118193390E-12; *(c+6)=-0.100634715190E-14; *(c+7)=0.997453389920E-18; *(c+8)=-0.608632456070E-21; *(c+9)=0.208492293390E-24; *(c+10)=-0.306821961510E-28;else ok=0;/************************************

Page 140: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 75

* This section contains coefficients of approximate inverse* functions for type N thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -3.990 to 0.000 -0.02 to 0.03* 0. to 600. 0.000 to 20.613 -0.02 to 0.03* 600. to 1300. 20.613 to 47.513 -0.04 to 0.02********************************************************/elseif ((num>=-3.990)&&(num<=0.000)) // min<E<max *n=9; *(c+0)=0.0000000E+00; *(c+1)=3.8436847E+01; *(c+2)=1.1010485E+00; *(c+3)=5.2229312E+00; *(c+4)=7.2060525E+00; *(c+5)=5.8488586E+00; *(c+6)=2.7754916E+00; *(c+7)=7.7075166E-01; *(c+8)=1.1582665E-01; *(c+9)=7.3138868E-03; elseif ((num>=0.000)&&(num<=20.613)) // min<E<max *n=7; *(c+0)=0.00000E+00; *(c+1)=3.86896E+01; *(c+2)=-1.08267E+00; *(c+3)=4.70205E-02; *(c+4)=-2.12169E-06; *(c+5)=-1.17272E-04; *(c+6)=5.39280E-06; *(c+7)=-7.98156E-08; *(c+8)=0.00000E+00; *(c+9)=0.00000E+00; elseif ((num>=20.613)&&(num<=47.513)) // min<E<max *n=5; *(c+0)=1.972485E+01;

Page 141: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 76

*(c+1)=3.300943E+01; *(c+2)=-3.915159E-01; *(c+3)=9.855391E-03; *(c+4)=-1.274371E-04; *(c+5)=7.767022E-07; *(c+6)=0.000000E+00; else ok=0;

break; case 'r':if (!inv)/************************************* This section contains coefficients for type R thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************/

if ((num>=-50.000)&&(num<=1064.180)) // min<E<max *n=9; *(c+0)=0.000000000000E+00; *(c+1)=0.528961729765E-02; *(c+2)=0.139166589782E-04; *(c+3)=-0.238855693017E-07; *(c+4)=0.356916001063E-10;

*(c+5)=-0.462347666298E-13; *(c+6)=0.500777441034E-16; *(c+7)=-0.373105886191E-19; *(c+8)=0.157716482367E-22; *(c+9)=-0.281038625251E-26; elseif ((num>=1064.180)&&(num<=1664.500)) // min<E<max *n=5; *(c+0)=0.295157925316E+01; *(c+1)=-0.252061251332E-02; *(c+2)=0.159564501865E-04; *(c+3)=-0.764085947576E-08; *(c+4)=0.205305291024E-11; *(c+5)=-0.293359668173E-15; else

Page 142: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 77

if ((num>=1664.500)&&(num<=1768.100)) // min<E<max *n=4; *(c+0)=0.152232118209E+03; *(c+1)=-0.268819888545E+00; *(c+2)=0.171280280471E-03; *(c+3)=-0.345895706453E-07; *(c+4)=-0.934633971046E-14; else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type R thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,

* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -50. to 250. -0.226 to 1.923 -0.02 to 0.02* 250. to 1200. 1.923 to 13.228 -0.005 to 0.005* 1064. to 1664.5 11.361 to 19.739 -0.0005 to 0.001* 1664.5 to 1768.1 19.739 to 21.103 -0.001 to 0.002********************************************************/elseif ((num>=-0.226)&&(num<=1.923)) // min<E<max *n=10; *(c+0)=0.0000000E+00; *(c+1)=1.8891380E+02; *(c+2)=-9.3835290E+01; *(c+3)=1.3068619E+02; *(c+4)=-2.2703580E+02; *(c+5)=3.5145659E+02; *(c+6)=-3.8953900E+02; *(c+7)=2.8239471E+02; *(c+8)=-1.2607281E+02; *(c+9)=3.1353611E+01; *(c+10)=-3.3187769E+00; elseif ((num>=1.923)&&(num<=13.228)) // min<E<max *n=9; *(c+0)=1.334584505E+01;

Page 143: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 78

*(c+1)=1.472644573E+02; *(c+2)=-1.844024844E+01; *(c+3)=4.031129726E+00; *(c+4)=-6.249428360E-01; *(c+5)=6.468412046E-02; *(c+6)=-4.458750426E-03; *(c+7)=1.994710149E-04; *(c+8)=-5.313401790E-06; *(c+9)=6.481976217E-08; *(c+10)=0.000000000E+00; elseif ((num>=11.361)&&(num<=19.739)) // min<E<max *n=5; *(c+0)=-8.199599416E+01; *(c+1)=1.553962042E+02; *(c+2)=-8.342197663E+00; *(c+3)=4.279433549E-01; *(c+4)=-1.191577910E-02; *(c+5)=1.492290091E-04; *(c+6)=0.000000000E+00;

elseif ((num>=19.739)&&(num<=21.103)) // min<E<max *n=4; *(c+0)=3.406177836E+04; *(c+1)=-7.023729171E+03; *(c+2)=5.582903813E+02; *(c+3)=-1.952394635E+01; *(c+4)=2.560740231E-01; *(c+5)=0.000000000E+00; else ok=0;

break; case 's':if (!inv)/************************************* This section contains coefficients for type S thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************/

Page 144: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 79

if ((num>=-50.000)&&(num<=1064.180)) // min<E<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.540313308631E-02; *(c+2)=0.125934289740E-04; *(c+3)=-0.232477968689E-07; *(c+4)=0.322028823036E-10; *(c+5)=-0.331465196389E-13; *(c+6)=0.255744251786E-16; *(c+7)=-0.125068871393E-19; *(c+8)=0.271443176145E-23; elseif ((num>=1064.180)&&(num<=1664.500)) // min<E<max *n=4; *(c+0)=0.132900444085E+01; *(c+1)=0.334509311344E-02; *(c+2)=0.654805192818E-05; *(c+3)=-0.164856259209E-08; *(c+4)=0.129989605174E-13; elseif ((num>=1664.500)&&(num<=1768.1)) // min<E<max *n=4; *(c+0)=0.146628232636E+03; *(c+1)=-0.258430516752E+00; *(c+2)=0.163693574641E-03; *(c+3)=-0.330439046987E-07; *(c+4)=-0.943223690612E-14; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type S thermocouples for the subranges of* temperature and voltage listed below. The range of errors of

* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...

* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)

Page 145: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 80

* -50. to 250. -0.235 to 1.874 -0.02 to 0.02* 250. to 1200. 1.874 to 11.950 -0.01 to 0.01* 1064. to 1664.5 10.332 to 17.536 -0.0002 to 0.0002* 1664.5 to 1768.1 17.536 to 18.693 -0.002 to 0.002********************************************************/elseif ((num>=-0.235)&&(num<=1.874)) // min<E<max *n=9; *(c+0)=0.00000000E+00; *(c+1)=1.84949460E+02; *(c+2)=-8.00504062E+01; *(c+3)=1.02237430E+02; *(c+4)=-1.52248592E+02; *(c+5)=1.88821343E+02; *(c+6)=-1.59085941E+02; *(c+7)=8.23027880E+01; *(c+8)=-2.34181944E+01; *(c+9)=2.79786260E+00; elseif ((num>=1.874)&&(num<=11.950)) // min<E<max *n=9; *(c+0)=1.291507177E+01; *(c+1)=1.466298863E+02; *(c+2)=-1.534713402E+01; *(c+3)=3.145945973E+00; *(c+4)=-4.163257839E-01; *(c+5)=3.187963771E-02; *(c+6)=-1.291637500E-03; *(c+7)=2.183475087E-05; *(c+8)=-1.447379511E-07; *(c+9)=8.211272125E-09; elseif ((num>=10.332)&&(num<=17.536)) // min<E<max *n=5; *(c+0)=-8.087801117E+01; *(c+1)=1.621573104E+02; *(c+2)=-8.536869453E+00; *(c+3)=4.719686976E-01; *(c+4)=-1.441693666E-02; *(c+5)=2.081618890E-04; *(c+6)=0.000000000E+00; elseif ((num>=17.536)&&(num<=18.693)) // min<E<max *n=4; *(c+0)=5.333875126E+04;

Page 146: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 81

*(c+1)=-1.235892298E+04; *(c+2)=1.092657613E+03; *(c+3)=-4.265693686E+01; *(c+4)=6.247205420E-01; *(c+5)=0.000000000E+00; else ok=0;

break; case 't':if (!inv)/************************************* This section contains coefficients for type T thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 °C to 400.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<E<max *n=14; *(c+0)=0.000000000000E+00; *(c+1)=0.387481063640E-01; *(c+2)=0.441944343470E-04; *(c+3)=0.118443231050E-06; *(c+4)=0.200329735540E-07; *(c+5)=0.901380195590E-09; *(c+6)=0.226511565930E-10; *(c+7)=0.360711542050E-12; *(c+8)=0.384939398830E-14; *(c+9)=0.282135219250E-16; *(c+10)=0.142515947790E-18; *(c+11)=0.487686622860E-21; *(c+12)=0.107955392700E-23; *(c+13)=0.139450270620E-26; *(c+14)=0.797951539270E-30; elseif ((num>=0.000)&&(num<=400.000)) // min<E<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.387481063640E-01; *(c+2)=0.332922278800E-04; *(c+3)=0.206182434040E-06; *(c+4)=-0.218822568460E-08; *(c+5)= 0.109968809280E-10; *(c+6)=-0.308157587720E-13;

Page 147: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 82

*(c+7)=0.454791352900E-16; *(c+8)=-0.275129016730E-19; else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type T thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -5.603 to 0.000 -0.02 to 0.04* .0 to 400. 0.000 to 20.872 -0.03 to 0.03********************************************************/elseif ((num>=-5.603)&&(num<=0.000)) // min<E<max *n=7; *(c+0)=0.0000000E+00; *(c+1)=2.5949192E+01; *(c+2)=-2.1316967E-01; *(c+3)=7.9018692E-01; *(c+4)=4.2527777E-01; *(c+5)=1.3304473E-01; *(c+6)=2.0241446E-02; *(c+7)=1.2668171E-03; elseif ((num>=0.000)&&(num<=20.872)) // min<E<max *n=6; *(c+0)=0.000000E+00; *(c+1)=2.592800E+01; *(c+2)=-7.602961E-01; *(c+3)=4.637791E-02; *(c+4)=-2.165394E-03; *(c+5)=6.048144E-05; *(c+6)=-7.293422E-07; *(c+7)=0.000000E+00; else ok=0;

break; default:

ok=0; //Termopar no conocido

Page 148: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 83

return(ok);

2.2.6 Transmisión

Hay dos funciones que transmiten su nueva configuración al data logger. Una obtiene losdatos a transmitir a través del usuario, y otro los obtiene de un fichero, FICHTRM, dondepreviamente se habían guardado datos procedentes de anteriores preguntas al usuario. Laspreguntas que se hacen al usuario son concerniente a la memoria EEPROM utilizada, el tiempo demuestreo, y al posible retardo del microcontrolador al enviar los datos al puerto serie.

2.2.6.1 Memoria

El data logger permite la utilización de varios modelos de memoria EEPROM del tipoM24X. En el programa se elige el tipo de memoria y automáticamente el programa sabe quedatos referentes a la memoria se establecen como parámetros de configuración.

La mayoría de los datos están expresados en complemento a dos porque sus variablesson incrementales. Así cuando pasa de 0xFF a 0x00 el microcontrolador percibe eldesbordamiento y se puede dar por finalizada la cuenta. Las variables a determinar aparecen en latabla 5.1 de la memoria descriptiva:

Entre los datos a transmitir, se encuentran los referentes a la memoria EEPROM. Paradeterminar los valores referentes a la configuración de la memoria, se deberán terner en cuenta lacapacidad de las memorias EEPROM y la escritura en modo página tal como aparece en la tabla2.18

MEMORIA DIMENSIÓN MODO PÁGINA

M24C01 128 16

M24C02 256 16

M24C04 512 16

M24C08 1024 16

M24C16 2048 26

M24128 16384 64

M24256 32768 64

Tabla 2.18 Capacidad EEPROMs

Page 149: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 84

Si se pone nombre a las variables de la tabla 5.1 de la memoria descriptiva aparece latabla 2.19

Page 150: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 85

Posición Nombre Contenido

0 NDIRH Valor inicial del contador de la dirección EEPROM byte alto

1 NDIRL Valor inicial del contador de la dirección EEPROM byte bajo

2 NDIRLR Valor inicial del contador de la dirección EEPROM en lectura

3 PagW Tamaño de la página de escritura de la EEPROM externa

4 MaxCola Tamaño máximo de la cola de escritura

5 INCL Incremento byte bajo de dirección de la EEPROM

6 INCH Incremento byte alto de dirección de la EEPROM

7 t1 Valor inicial del contador para el TMR1

8 t0 Valor inicial del contador para el TMR0

Tabla 2.19 Parámetros configuración EEPROM interna

Las variables PagW, MaxCola y INCL se obtienen directamente de la capacidad de lapágina para las respectivas memorias (2.11). INCL es directamente el valor de la página enbinario. PagW es ese mismo valor pero en binario en complemento a dos, y MaxCola es PagWmenos una unidad. INCH vale 2 para las memorias M24Cx (un byte de dirección específico) yINCH vale 1 para las memorias M24128 y M24256 (dos bytes de dirección específico).

IncPag ? Page

PagW = 256 – IncPag (2.11)

MaxCola=PagW - 1

Para calcular las otras tres variables se tiene en cuenta la capacidad de la memoria. Paracalcular NDIRL se divide la máxima dimensión del byte bajo posible (la máxima posible será256) por la página. Si la memoria supera los 256 bytes entonces serán necesarios dos bytes paracalcular la dirección de memoria, por lo que se calcula NDIRH. Para calcular NDIRH se divide ladimensión la capacidad de la memoria entre 256. Para calcular NDIRLR se divide la máximadimensión del byte bajo entre el valor máximo de la cola de lectura, que si no se ha modificado elvalor inicial propuesto ha de ser 128

Page 151: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 86

NDIRH

NDIRLR

NDIRLPage

=

=

=

256max

128lowmax

lowmax

(2.12)

Los resultados obtenidos expresados en hexadecimal y en complemento a dos si serequiere:

MEMORIA NDIRH NDIRL NDIRLR PagW MaxCola INCL INCH

M24C01 FF F8 FF F0 EF 10 02

M24C02 FF F0 FE F0 EF 10 02

M24C04 FE F0 FE F0 EF 10 02

M24C08 FC F0 FE F0 EF 10 02

M24C16 F8 F0 FE F0 EF 10 02

M24128 C0 FC FE C0 BF 40 01

M24256 80 FC FE C0 BF 40 01

Tabla 2.20 Parámetros de configuración data logger referentes a la EEPROM

2.2.6.2 Obtención de datos y transmsión

Al transmitir los datos se inicializa el temporizador del ordenador y la USART del sistema.Si los datos a transmitir se obtienen de preguntas al usuario se utiliza la función get_data. En ellase hacen tres preguntas el tiempo de muestreo, los retardos entre transmisiones al ordenador en eldata logger y la memoria utilizada. A partir de la respuesta a estas preguntas el programaconfigura los datos que se enviarán al data logger. Antes de enviarse se guardan en el fichero, porsi esos datos se quieren utilizar con posterioridad.

Para determinar el parámetro del tiempo de muestreo, como la variable es incremental,debe expresarse en complemento a 2, se utiliza la fórmula (2.13)

escalat

NTMR −= 2551 (2.13)

Page 152: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 87

Para calcular el parámetro de los retardos, que también se expresa en complemento ados, debe usarse la fórmula (2.14)

NTMR0=255-retardos (2.14)

Si NTMR0 vale 255 significará no se producirán retardos entre transmisiones en el datalogger.void get_data (int COM) //Transmite al DL los parametros introducidos unsigned int Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR,MaxPagW,MaxRamPag; //Escaneo unsigned int INCL,INCH,NTMR1,NTMR0; //del fichero FILE *fp; //Fichero fuente mem_EE *dato; //Posiciones memoria EEPROM del data logger int valor_ok; //Funcionamiento correcto int n; //Eleccion memoria float num; //Tiempo muestreo

printf("\nTransferencia configuración al Data Logger"); printf("\na partir de los parámetros siguientes:\n"); ini_usart(COM); /*Aunque no se utiliza la irq port serie se activa*/ ini_timer(); fp=fopen("fichtrm","wt"); do printf("\nTiempo muestreo aproximado (s) ? "); scanf("%f",&num); num = num/escala; valor_ok = num>0; //El tiempo no puede se 0 if (valor_ok)

n = 256-ceil(num); //Redondea hacia arriba y complementa a 2valor_ok = (n > 0);

while (!valor_ok); printf("Tiempo de muestreo(s) %f\n",(256-n)*escala); dato->NTMR1 = n; do printf("\nRetardos en la trasmisión (0-255) ? "); scanf("%d",&n); valor_ok = ((n>=0)&&(n < 255)); if (valor_ok) n=255-n; //Complemento a 2 while (!valor_ok); dato->NTMR0 = n; printf("\nTecle el número correspondiente al tipo de memoria utilizada\n"); printf("\n1 M24C01 2 M24C02 3 M24C04 4 M24C08\n"); printf("5 M24C16 6 M24128 7 M24256\n"); valor_ok=0; do

Page 153: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 88

scanf ("%d",&n); //Segun el tipo de memoria switch (n)

case 1: dato->Ini_NDIRH=0xFF; //Se cargan los valores para la EEPROMdato->Ini_NDIRL=0xF8; //precaculadosdato->Ini_NDIRLR=0xFF;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 2: dato->Ini_NDIRH=0xFF;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 3: dato->Ini_NDIRH=0xFE;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 4: dato->Ini_NDIRH=0xFC;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 5: dato->Ini_NDIRH=0xF8;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 6: dato->Ini_NDIRH=0xC0;dato->Ini_NDIRL=0xFC;dato->Ini_NDIRLR=0xFE;

Page 154: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 89

dato->MaxPagW=0xFC;dato->MaxRamPag=0xFB;dato->INCL=0x40;dato->INCH=0x01;valor_ok=1;break;

case 7: dato->Ini_NDIRH=0x80;dato->Ini_NDIRL=0xFC;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xFC;dato->MaxRamPag=0xFB;dato->INCL=0x40;dato->INCH=0x01;valor_ok=1;break;

default: printf("Opción Incorrecta\n"); while (!valor_ok); trmt(dato); fprintf (fp,"%x ",dato->Ini_NDIRH); //Guarda valores en fichero fprintf (fp,"%x ",dato->Ini_NDIRL); fprintf (fp,"%x ",dato->Ini_NDIRLR); fprintf (fp,"%x ",dato->MaxPagW); fprintf (fp,"%x ",dato->MaxRamPag); fprintf (fp,"%x ",dato->INCL); fprintf (fp,"%x ",dato->INCH); fprintf (fp,"%x ",dato->NTMR1); fprintf (fp,"%x\n",dato->NTMR0); fin_timer(); //Fin Transmision fin_usart(COM); fclose(fp);

Si los datos a transmitir se obtienen de un fichero al usuario se utiliza la función get_dataf.La dinámica es muy similar, pero los datos aquí se obtienen al leer una línea del fichero.int get_dataf (int COM) //Transmite al DL los datos de un fichero

unsigned int Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR,MaxPagW,MaxRamPag; //Escaneo unsigned int INCL,INCH,NTMR1,NTMR0; //del fichero FILE *fp; //Fichero fuente mem_EE *dato; //Posiciones memoria EEPROM del data logger int valor_ok; //Funcionamiento correcto

printf("\nTransferencia configuraci¢n al Data Logger"); printf("\na partir del fichero de transmisi¢n\n"); ini_usart(COM); /*Aunque no se utiliza la irq port serie se activa*/ ini_timer(); fp=fopen("fichtrm","rt"); valor_ok = !(fp==NULL); //Si existe sigue if (valor_ok)

Page 155: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 90

fscanf (fp,"%x",&Ini_NDIRH); //Lee del fichero fscanf (fp,"%x",&Ini_NDIRL); fscanf (fp,"%x",&Ini_NDIRLR); fscanf (fp,"%x",&MaxPagW); fscanf (fp,"%x",&MaxRamPag); fscanf (fp,"%x",&INCL); fscanf (fp,"%x",&INCH); fscanf (fp,"%x",&NTMR1); fscanf (fp,"%x",&NTMR0); dato->Ini_NDIRH=Ini_NDIRH; //Guarda en el registro dato->Ini_NDIRL=Ini_NDIRL; dato->Ini_NDIRLR=Ini_NDIRLR; dato->MaxPagW=MaxPagW; dato->MaxRamPag=MaxRamPag; dato->INCL=INCL; dato->INCH=INCH; dato->NTMR1=NTMR1; dato->NTMR0=NTMR0; trmt(dato); else printf ("\nFichero de Transmisi¢n configuraci¢n no encontrado\n"); fin_timer(); //Acaba transmision fin_usart(COM); fclose(fp); return(valor_ok);

2.2.6.3 Envío por el puerto serie

Los datos simplemente se envían uno a uno por el puerto serie, se informa al usuario tantodel inicio del envío como de su finalización. El orden de transferencia es idéntico a la posición delas variable en la EEPROM y es el que espera recibir el data logger desde el otro extremo delcable. El algoritmo de la rutina puede verse en la figura 5.8 de la memoria descriptiva. Una vez secumple el tiempo prefijado (interrupciones), el programa envía el dato al data logger hasta quetodos los datos hayan sido enviados.void trmt (mem_EE *data) //Transmite los datos al data logger unsigned char TAB[9]; int i;

TAB[0]=data->Ini_NDIRH; //Se transmiten tal como se guardaran en la EEPROM TAB[1]=data->Ini_NDIRL; TAB[2]=data->Ini_NDIRLR; TAB[3]=data->MaxPagW; TAB[4]=data->MaxRamPag; TAB[5]=data->INCL; TAB[6]=data->INCH; TAB[7]=data->NTMR1; TAB[8]=data->NTMR0;

Page 156: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 91

i=0; printf("\nTransferiendo al Data Logger\n"); do if (envio==1) outportb(PORT1,TAB[i]); //Si tiempo cumplido envia

printf("Enviado %d\n",i);i++; //Espera al otroenvio=0;

while (i<9); //Hasta que se envien todos los datos printf("\nTransferencia finalizada\n");

2.2.7 Interrupciones y Recursos del sistema

El programa utiliza tres módulos presentes en el ordenador:

- El controlador de interrrupciones (PIC): Es el integrado 8259 o análogos. Permite lainterrupción de los dos módulos siguientes la USART, y el temporizador.

- La USART: Es el integrado 8250 o análogos.

- El temporizador: Es el integrado 8254 o análogos.

Tanto para la USART como para el temporizador, se utilizarán rutinas de inicialización yrestauración de dichos módulos, así como sus respectivas rutinas de servicio a la interrupción.

2.2.7.1 PIC 8259

Para programar las interrupciones el ordenador utiliza el integrado 8259 o derivadostambién llamado PIC (Programmable interrupt controller). El 8259 gestiona las peticiones deinterrupción IRQ (Interrupt Request), según su nivel de prioridad. Una interrupción será aceptadasi no hay pendiente de ejecución otra interrupción de mayor prioridad, entonces se ejecuta sucorrespondiente rutina de servicio a la interrupción ISR (Interrupt Service Routine). Paraconfigurar el 8259 se utilizan diferentes registros (ICWx, OCWx, IRR, ISR, IMR) que pemitencontrolar el funcionamiento del dispositivo, una descripción de los cuales está reflejada en la tabla2.20.

En la práctica muchos de los registros del 8259 no se varían y se dejan tal como seinicializaron al arrancarse el ordenador. Así basta con emascarar (habilitar) o desemarcarar unainterrupción para utilizar dicha interrupción, esto se realiza simplemente poniendo a cero el bitcorrespondiente a la interrupción a desemascarar del PIC's Interrupt Mask Register (mantener losotros bits intactos). El sistema al arrancarse el ordenador guarda las direcciones de las rutinas deatención a las interrupciones en los denominados vectores de interrupción. Si se desea utilizar unanueva rutina de servicio a la interrupción, se guarda la dirección de la rutina a substituir del vectorde interrupción, se coloca en el vector la dirección de la nueva rutina. Al final del programa se

Page 157: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 92

vuelve a colocar la primera rutina, restableciendo así el sistema tal como era al iniciarse elprograma.

address Read/Write Function

Write Initialization Command Word 1 (ICW1)

Write Operation Command Word 2 (OCW2)

Write Operation Command Word 3 (OCW3)

Read Interrupt Request Register (IRR)

20h

Read In-Service Register (ISR)

Write Initialization Command Word 2 (ICW2)

Write Initialization Command Word 3 (ICW3)

Write Initialization Command Word 4 (ICW4)21h

Read/Write Interrupt Mask Register (IMR)

Tabla 2.21 Registros PIC(8259)

Para utilizar una interrupción se deberán poner a cero los bits que correspondan a lainterrupción y cargar el vector de interrupción. Hay dos posibles fuentes de interrupción en elsistema los puertos serie y el temporizador.

Según el puertos serie utilizado se controlan mediante diferentes interrupciones. El COM1y COM3 utilizan la IRQ4 y el COM2 y COM4 utilizan la IRQ3. Por eso para habilitar lasinterrupciones se pondrán a cero los bits tercero (IRQ3) o cuarto del registro IMR (IRQ4). Elvector de interrupción del Puerto serie es 0Bh (para COM1/COM3) o 0Ch (paraCOM2/COM4).

La interrupción del temporizador 8254 es la IRQ0 y el vector de interrupción es el 08h.

2.2.7.2 USART 8250

El ordenador para gestionar el puerto serie utiliza el integrado 8250 (16550) o algún otrode sus derivados. El 8250 dispone de 11 registros (uno más el 16550) pero sólo 3 líneas dedirección para seleccionarlos. Lo que permite distinguir unos de otros será, aparte de las líneas dedirecciones es el sentido del acceso (en lectura o escritura) y el valor de un bit de uno de los

Page 158: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 93

registros: el bit DLAB del registro LCR, que es el bit 7 de dicho registro. Realmente, DLAB seemplea sólo puntualmente para poder acceder y programar los registros que almacenan el divisorde velocidad; el resto del tiempo, DLAB estará a 0 para acceder a otros registros másimportantes. La posición de los registros vendrá marcada por:

A2 A1 A0 DLAB MODO NOMBRE SIGNIFICADO

0 0 0 0 R RBR Receiver Buffer Register (Registro buffer de recepción)

0 0 0 1 R/W DLL Divisor Latch LSB (Divisor de velocidad, parte baja

0 0 0 0 W THRTransmitter Holding Register (Registro de retención detransmisión

0 0 1 0 R/W IERInterrupt Enable Register (Registro de habilitación deinterrupciones)

0 0 1 1 R/W DLM Divisor latch MSB (Divisor de velocidad, parte alta)

0 1 0 X R IIRInterrupt Identification Register (Registro deidentificación de interrupciones)

0 1 0 X W FCRFIFO Control Register (Registro de control FIFO) -SOLO 16550 -

0 1 1 X R/W LCRLine Control Register (Registro de control de línea) ¡¡EL BIT 7 ES DLAB!!

1 0 0 X R/W MCRModem Control Register (Registro de control delmodem)

1 0 1 X R/W LSR Line Status Register (Registro de estado de la línea)

1 1 0 X R/W MSRModem Status Register (Registro de estado delmodem)

1 1 1 X R/W SCR Scratch Register (Registro residual)

Tabla 2.22 Registros UART

o Registro 0: RHR (Receive Holding Register; Receive Buffer Register in someliterature). El circuito receptor del 8250 es programable para 5, 6, 7 u 8 bits de datos.En el caso de emplear menos de 8, los bits superiores de este registro quedan a 0.

Page 159: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 94

Los datos entran en serie, y se guardan en este registro cuando un carácter completael registro de desplazamiento de recepción, sus bits son volcados al RBR y el bit DRdel LSR es activado para indicar a la CPU que puede leer el RBR. El diseño del8250 permite la recepción continua de datos sin pérdidas.

o Registro 1: IER (Interrupt Enable Register). Este registro de escritura se utiliza paraseleccionar qué interrupciones activan INTRPT y, por consiguiente, van a sersolicitadas a la CPU. Deshabilitar el sistema de interrupciones inhibe el IIR y desactivala salida INTRPT. Bits:

o Bit 0: RHRI (Receive Holding Register Interrupt; RxRDY in some literature).The UART generará una interrupción cuando se reciba un carácter en elregistro RHR si el bit está puesto a uno.

o Bit 1: THRI (Transmit Holding Register Interrupt; TxRDY). Si se pone a uno,la UART genera una interrupción cuando un carácter se mueva del THR alregistro de envío, TSR interno (Internal Shift Register).

o Bit 2: RLSI (Receive Line Status Interrupt; ERROR). Si se pone a uno, laUART interrumpe cuando se produce un error de paridad o desobreescritura, o cuando se encuentra una condición de break

o Bit 3: MSI (Modem Status Interrupt; DELTA). Si se pone a uno, la UARTinterrumpe cuando una línea RS-232 cambia de estado.

o Bits 4-7: Unused

o Registro 0 DLAB 1: Divisor Latch LSB (DLL Divisor Latch Low). Son los bits 7-0del divisor del velocidad.

o Registro a DLAB 1: Divisor Latch MSB (DLH Divisor Latch High). Son los bits 15-8del divisor del velocidad. La unión de este registro con el anterior, ambos registros de8 bits, constituyen un valor de 16 bits que será el divisor que se aplicará a lafrecuencia base para seleccionar la velocidad a emplear. Dicha frecuencia base (porejemplo, 1.8432 MHz) será dividida por 16 veces el valor almacenado aquí. Porejemplo, para obtener 9600 baudios:

129600·16

1843200= (2.15)

o Registro 2: ISR (Interrupt Status Register; also refered to as the InterruptIdentification Register). Informa del evento que causó la interrupción de la UART.Bits:

o Bit 0: Indica si se ha producido una interrupción.

Page 160: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 95

o Bits 1-2: Indica la causa de la interrupción:

§ 00 -> RS-232 cambio en la línea.

§ 01 -> THR vaciado

§ 10 -> RHR contiene un carácter

§ 11 -> Condición de error

o Bits 3-7: No usados

- Registro 3: LCR (Line Control Register). Configura la UART. También monitoriza eluso de los registros 0 y 1 mediante el uso del bit DLR (Divisor Latch Register). Bits:

o Bits 0-1: Establece el número de bits de datos:

§ 00 -> 5-bits de datos

§ 01 -> 6-bits de datos

§ 10 -> 7-bits de datos

§ 11 -> 8-bits de datos

o Bit 2: Establece el número de bits de stop.

§ 0 -> indica un bit de stop por palabra.

§ 1-> indica dos bits de stop por palabra.

o Bits 3-5: Establece la paridad.

§ 000 -> No paridad

§ 001 -> Impar

§ 011 -> Par

§ 101 -> Marca (‘1’)

§ 111 -> Espacio (‘0’)

o Bit 6: Break control; Envía al receptor una condición de break.

o Bit 7: El bit DLAB (Divisor Latch Access Bit) puesto a 1 permite acceder alos Latches divisores DLL y DLM del BRG en lectura y escritura. Paraacceder al RBR, THR y al IER debe ser puesto a 0

Page 161: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 96

- Registro 4 R: MCR (Modem Control Register). Controla las líneas de la interfície RS-232. Es sólo de lectura. Bits:

o Bit 0: Controla la línia RS-232 DTR (Data Terminal Ready).

o Bit 1: Controla RS-232 RTS (Request to Send) .

o Bit 2: GPO1 (General Purpose Output 1).

o Bit 3: GPO2 (General Purpose Output 2). Habilita las interrupciones para serenviadas de la UART al PIC.

o Bit 4: Test de Eco (loop back). Todos los caracteres seran enviadosnuevamente a la fuente.

o Bits 5-7: No usados.

- Registro 4 W : FCR (Fifo Control Register). Sólo disponible en el 16550, no en el8250. Es sólo de escritura. Bits:

o Bit 0: Habilita el borrado de colas XMIT y RCVR

o Bit 1: Borrar cola RCVR.

o Bit 2: Borrar cola XMIT.

o Bit 3: A uno si cambiar los pines RXRDY y TXRDY del modo 0 al modo 1.

o Bit 4-5: No usados

o Bit 6-7: Tamaño de la cola:

§ 00-> 1 byte.

§ 01-> 4 bytes.

§ 10-> 8 bytes.

§ 11-> 14 bytes.

- Registro 5: LSR (Line Status Register). Almacena información general sobre el estadode los bits de la UART. Bits:

o Bit 0: Puesto a uno si RHR contiene un carácter (called RxRDY or RDR,depending on literature).

o Bit 1: Error de sobreescritura (character overwrote the last in the RHR)

Page 162: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 97

o Bit 2: Error de Paridad.

o Bit 3: Error de Framing(stop bit was set to 0 instead of 1)

o Bit 4: Condición de Break.

o Bit 5: THE (or TBE). Transmit Buffer Empty. Si está puesto a uno, la UARTenvía los datos del THR al OSR (Output Shift Register) y los datos puedenser escritos con total seguridad sin sobrescribir nada.

o Bit 6: Transmisor vacío; tanto el THR and TSR(shift register) están vacíos sisu estado es uno.

o Bit 7: No utilizado en el 8250.

- Register 6: MSR (Modem Status Register). Muestra el estado de las líneas de controldel módem. Después de leer los bits 0-3 se ponen a cero.Bits:

o Bit 0: CTS (Clear To Send) ha cambiado(since last read of MSR).

o Bit 1: DSR (Data Set Ready) ha cambiado.

o Bit 2: RI (Ring Indicator) ha cambiado a uno desde la última vez en que elMSR fue leído.

o Bit 3: CD (Carrier Detect) ha cambiado.

o Bit 4: Valor del CTS.

o Bit 5: Valor del DSR.

o Bit 6: Valor del RI.

o Bit 7: Valor del CD.

- Register 7: SPR (Scratch Pad Register) No tiene una function específica.

2.2.7.3 Timer 8253

El 8253/4 es un chip temporizador que puede ser empleado como reloj de tiempo real.Este circuito integrado posee 3 contadores totalmente independientes, que pueden serprogramados de 6 formas diferentes. Todos estos parámetros son accesibles a través del registrode control del 8253

Page 163: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 98

Tabla 2.23 Registro control 8253

El 8254 es muy flexible a la hora de ser programado. Basta con tener en cuenta doscosas: por un lado, escribir siempre primero la palabra de control, antes de enviar la cuenta inicialal contador. Por otro, dicha cuenta inicial debe seguir exactamente el formato seleccionado en lapalabra de control (enviar sólo byte bajo, enviar sólo byte alto, o bien enviar ambosconsecutivamente). Teniendo en cuenta que cada contador tiene su propio puerto y que la palabrade control indica el contador al que está asociada, no hay que seguir un orden especial a la horade programar los contadores. Esto significa que, por ejemplo, se puede enviar la palabra decontrol de cada contador seguida de su cuenta inicial, o bien enviar todas las palabras de controlpara los 3 contadores y después las 3 cuentas iniciales; también es válida cualquier combinaciónintermedia de estas secuencias (por ejemplo: enviar la palabra de control para el contador 0,después la palabra de control para el contador 1, después la parte baja de la cuenta para elcontador 0, luego la parte baja de la cuenta para el contador 1, la parte alta de la cuenta para elcontador 0, etc...).

Un nuevo valor de cuenta inicial puede ser almacenado en un contador en cualquiermomento, sin que ello afecte al modo en que ha sido programado (el resultado de esta operacióndependerá del modo, como se verá más adelante). Si se programa el contador para leer/escribirla cuenta como dos bytes consecutivos (bajo y alto), el sentido común indica que entre ambosenvíos/recepciones no conviene transferir el control a una subrutina que utilice ese mismocontador para evitar un resultado incorrecto.

De los seis modos de operación que permite el temporizador, normalmente se utiliza elmodo 2 Rate Generator (Generador de ritmo). En este modo, el contador funciona como undivisor por N. Es empleado típicamente para las interrupciones de los relojes de tiempo real. Estemodo es, por tanto, periódico, y la misma secuencia de temporización se repite indefinidamente.Para una cuenta inicial N, la secuencia se repite cada N ciclos de reloj.

2.2.7.4 Incialización USART

A la rutina se le envía el puerto de comunicaciones serie que se utilizarán en lacomunicación. Según el puerto se establecerán el vector de interrupción y la dirección del puertode comunicaciones.

Page 164: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 99

Una vez se guarda la antigua rutina de servicio a la interrupción del puerto serie y seestablece que se utilizará la creada en este programa, se procede a inicializar el puerto serie.

Se establece la velocidad de transmisión, el modo de transmisión: ocho bits de datos, unode start y otro de stop, sin paridad. Se inicializa la FIFO, 14 bytes de cola, y se borra sucontenido. Se permite la interrupción y se asigna que se produzca cuando se reciban datos.

La rutina de inicialización del puerto serie quedará:void ini_usart(int com) uchar PIC;

switch (com) case 1:

PORT1=0x3F8;INTVECT=0x0C;PIC=0xEF;break;

case 2:PORT1=0x2F8;INTVECT=0x0B;PIC=0xF7;break;

case 3:PORT1=0x3E8;INTVECT=0x0C;PIC=0xEF;break;

case 4:PORT1=0x2E8;INTVECT=0x0B;PIC=0xF7;break;

outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */

oldport1isr = getvect(INTVECT); /* Save old Interrupt Vector of later recovery */

setvect(INTVECT, PORT1INT);

/* PORT 1 - Communication Settings */

outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */ outportb(PORT1 + 0 , 0x0C); /* Set Baud rate - Divisor Latch Low Byte */

/* Default 0x03 = 38,400 BPS */ /* 0x01 = 115,200 BPS */ /* 0x02 = 57,600 BPS */

Page 165: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 100

/* 0x06 = 19,200 BPS */ /* 0x0C = 9,600 BPS */ /* 0x18 = 4,800 BPS */ /* 0x30 = 2,400 BPS */

outportb(PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch High Byte */ outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */ outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */ outportb(PORT1 + 4 , 0x08); /* OUT2 */

outportb(0x21,(inportb(0x21) & PIC)); /* Set Programmable Interrupt Controller */

outportb(PORT1 + 1 , 0x01); /* Interrupt when data received */

2.2.7.5 Restauración USART

Para restaurar la USART, se restaura la anterior rutina de servicio a la interrupción serie,teniendo en cuenta para ello que puerto serie ha sido utilizado. Se inhibe la interrupción, y serestaurala anterior rutina de atención a la interrupción de la USART.

El trozo de programa de finalización de utilización del puerto serie quedará:void fin_usart(int com) uchar PIC;

switch (com) case 1:

PIC=0x10;break;

case 2:PIC=0x08;break;

case 3:PIC=0x10;break;

case 4:PIC=0x08;break;

outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */ outportb(0x21,(inportb(0x21) | PIC)); setvect(INTVECT, oldport1isr); /* Restore old interrupt vector */

Page 166: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 101

2.2.7.6 Inicialización Timer

Una vez se guarda la antigua rutina de servicio a la interrupción del timer, se establece quese utilizará la creada en este programa. Se utilizará el primer temporizador del 8253, en mododos, y se introducen los dos bytes de cuenta del temporizador de dieciséis bits.void ini_timer(void) oldtimer0isr = getvect(INTVECT_Time); setvect(INTVECT_Time, TIMERINT); outportb(control8254,0x34); /* Modo operacion en 8254*/ outportb(TIMER0,0x01); /* byte alto del timer 0*/ outportb(TIMER0,0xFF); /* byte bajo del timer 0*/ outportb(0x21,(inportb(0x21) & 0xFE));

2.2.7.7 Restauración Timer

Al finalizar el uso del temporizador se restaura la anterior rutina de servicio a lainterrupción del temporizador.void fin_timer(void) outportb(0x21,(inportb(0x21) | 0x01)); setvect(INTVECT_Time, oldtimer0isr);

2.2.7.8 Interrupción puerto serie

La rutina de interrupción se genera al recibir por el puerto serie, comprueba que secontenga un carácter en RHR, si se contiene informa al programa principal de que la cola se haincrementado y debe guardarse el carácter. Como es una cola circular de 1024 bytes si sealcanza este valor volverá al principio. También mediante la variable temperatura va guardando elvalor que ocupa dicho byte en la secuencia de datos de envío. Como todas las rutinas de servicioa la interrupción se acaban insertando un EOI.void interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */ int c; do c = inportb(PORT1 + 5); if (c & 1) buffer[bufferin] = inportb(PORT1); valor[bufferin]=temperatura; temperatura++; bufferin++; if (temperatura==5) temperatura = 0; if (bufferin == 1024) bufferin = 0; while (c & 1); outportb(0x20,0x20);

Page 167: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

MEMORIA DE CÁLCULO Pag 102

2.2.7.9 Interrupción temporizador

La rutina de interrupción del temporizador, va contando hasta que se llega al valormáximo de cuenta, entonces reinicia la cuenta y avisa al programa de que la cuenta ya hafinalizado. Como todas las rutinas de servicio a la interrupción se acaban insertando un EOI.void interrupt TIMERINT() /* Interrupt Service Routine (ISR) for TIMER 0 */ times++; if (times==max_times) envio=1; times=0; outportb(0x20,0x20);

Page 168: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

PLANOS

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 169: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 170: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 171: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 172: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 173: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 174: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión
Page 175: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

7 1

Diagrama Data Logger

A

1 6Thursday, June 19, 2003

Title

Size Document Number Rev

Date: Sheet of

GND

GND

GND

GND

+5V

GND

+5V

+5V

GND

+5V

GND

GND

JP2

HEADER 5X2

1 23 45 67 89 10

+C21uF

C7

15pF

+ C51uF

JP3

HEADER 3

123

U1

PIC16F873

1

234567

8

9

10

1112131415161718

19

20

2122232425262728

MCLR/VPP/THV

RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/T0CKIRA5/SS/AN4

GN

D

OSC1/CLKIN

OSC2/CLKOUT

RC0/T1OSO/T1CKIRC1/T1OSI/CCP2

RC2/CCP1RC3/SCK/SCLRC4/SDI/SDA

RC5/SDORC6/TX/CKRC7/RX/DT

GN

D

VDD

RB0/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD

+C1

1uF

U2

MAX232

1345

1615

26

129

1110

138

147

C1+C1-C2+C2-

VC

CG

NDV+

V-

R1OUTR2OUT

T1INT2IN

R1INR2IN

T1OUTT2OUT

+ C4

1uF

JP1

HEADER 5X2

1 23 45 67 89 10

U3

M24C16 4

5

8

6

7

GN

D

SDA

VC

CSCL

WC

Y1

4 mHz

P1

CONNECTOR DB9

594837261

R22.2k

+C3

1 uF

C815pF

R12.2k

Page 176: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

8 1

Diagrama Adquisición

A

1 6Thursday, January 16, 2003

Title

Size Document Number Rev

Date: Sheet of

GND

GND

+5V

GND

GND

V+

GND

GND

GND

+5V

+5V +5V

V-

V-

V+

V+

V-GND

+5V

JP10

HEADER 5X2

1 23 45 67 89 10

R8 1K

-

+

U6

OP-07

3

26

7 14 8

R9

3,9K

R1410K

JP9

LEDS

1234

R1510K

R4 330

D2

DIODE

R5 330

R6 330

JP5

ALIMENTACIÓN FUENTE

1234

JP6

ENTRADAS

1234567

R3470

JP4

TERMOPAR

12

U4

INA114

23

4

6

7

518

-VIN+VIN

V-

VO

V+

REFRGRG

JP7

RESET

12

R1210K

U5

LM35/TO

1 2

3

VS+ VOUT

GN

D

R1110K

R10 100 JP8

ALIMENTACIÓN MICRO

123

Page 177: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

5

5

4

4

3

3

2

2

1

1

D D

C C

B B

A A

9 1

Diagrama Fuente Alimentación

A

1 6Thursday, June 19, 2003

Title

Size Document Number Rev

Date: Sheet of

GND

GND

+ C12200uF

C2100nF

C3100nF

D4

DIODE

U2

L7905/TO220

3

1

2VIN

GN

D VOUT

- +

D1

BRIDGE

1

4

3

2

+ C42200uF

C5100nF

C6100nF

JP1

HEADER 3

123

- +

D3

BRIDGE

1

4

3

2

U1

L7805/TO220

1

3

2VIN

GN

D VOUT

D2

DIODE

JP2

HEADER 4

1234

Page 178: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

PRESUPUESTO

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

Page 179: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 2

FECHA: Junio / 2003.

ÍNDICE

1.1 MEDICIONES........................................................................................................................................................3

1.2 CUADRO DE PRECIOS......................................................................................................................................8

1.3 APLICACIÓN DE PRECIOS........................................................................................................................... 14

1.4 RESUMEN DEL PRESUPUESTO ................................................................................................................... 20

Page 180: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 3

1.1 MEDICIONES

Num Uts. Descripción Cantidad

CAPÍTULO 1: CONECTORES

1-01 U ZÓCALO DIL DE 8 PINESTORNEADO, PASO DE 7.62 mm

3

1-02 U ZÓCALO DIP DE 16 PINESTORNEADO, PASO DE 7.62 mm

1

1-03 U ZÓCALO DIP DE 28 PINES ESTRECHOTORNEADO, PASO DE 7.62 mm

1

1-04 U CONECTOR POSTE DE 2 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

2

1-05 U CONECTOR POSTE DE 3 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

2

1-06 U CONECTOR POSTE DE 4 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

4

1-07 U CONECTOR POSTE DE 7 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

2

1-08 U CONECTOR POSTE DE 2 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE 2.54 mm

2

1-09 U CONECTOR POSTE DE 3 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE 2.54 mm

2

1-10 U CONECTOR POSTE DE 4 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE 2.54 mm

4

1-11 U CONECTOR POSTE DE 7 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE 2.54 mm

2

1-12 U CONECTOR BUS DE 10 VÍAS HEMBRAMONTAJE RECTO PCB

3

1-12 U CONECTOR BUS DE 10 VÍAS MACHOINCLUYE SOPORTE

2

1-13 U CONECTOR REGLETA 2 VÍASTERMINALES CON TORNILLO, ANCHO CABLE 2,5 mm2, PASODE 5 mm

1

1-14 U CONECTOR DB9CONECTOR DB9 HEMBRA TERMINAL RECTO

1

Page 181: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 4

Num Uts. Descripción Cantidad

CAPÍTULO 2: COMPONENTES CAJA DATA LOGGER

2-01 U LM35SENSOR TEMPERATURA GRADOS CENTÍGRADOS,ENCAPSULADO TO-92

1

2-02 U OP07AMPLIFICADOR OPERACIONAL DE BAJO OFFSET,ENCAPSULADO DIP 8

1

2-03 U INA114AMPLIFI. INSTRUMENTACIÓN DE PRECISIÓN,ENCAPSULADO DIP 8

1

2-04 U PIC16F873MICROCONTROLADOR 8 BITS, ENCAPSULADO DIP 28

1

2-05 U M24C16MEMORIA EEPROM 16KBITS I2C, ENCAPSULADO DIP 8

1

2-06 U MAX232INTERFAZ COMUNICACIÓN RS232, ENCAPSULADO DIP 16

1

2-07 U CRISTAL 4 MHzCRISTAL CUARZO XT, ENCAPSULADO HC49

1

2-08 U DIODO 1N4148DIODO SILICIO DE SEÑAL

1

2-09 U RESISTENCIA 100 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25 W, 5%

1

2-10 U RESISTENCIA 330 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25 W, 5%

3

2-11 U RESISTENCIA 1 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25 W, 5%

1

2-12 U RESISTENCIA 3,9 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25 W, 5%

1

2-13 U RESISTENCIA 10 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25 W, 5%

4

2-14 U RESISTENCIA 470 ΩRESISTENCIA DE PELÍCULA METÁLICA 0,25 W, 1%

1

2-15 U CONDENSADOR 1 µFCONDENSADOR ELECTROLÍTICO POLARIZADOSALUMINIO, 25 V

5

2-16 U CONDENSADOR 15 pFCONDENSADOR CERÁMICO MULTICAPA NO POLARIZADO25 V

2

2-17 U LEDLED ROJO ESTÁNDAR DE 3 mm

3

2-18 U INTERRUPTORINTERRUPTOR CON ACTUADOR DESLIZANTE PCB, PASO2,54 mm

3

2-19 U PULSADORPULSADOR 4 SOPORTES PCB

1

2-20 U TERMOPAR KTERMOPAR K CON PUNTA SOLDADA Y AISLAMIENTO DEFIBRA DE VIDRIO

1

Page 182: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 5

Num Uts. Descripción Cantidad

CAPÍTULO 3: COMPONENTES CAJA FUENTE ALIMENTACIÓN

3-01 U L7805REGULADOR DE TENSIÓN 5V, ENCAPSULADO TO-220

1

3-02 U L7905REGULADOR DE TENSIÓN -5V, ENCAPSULADO TO-220

1

3-03 U B40CPUENTE RECTIFICADOR DE DIODOS, CIRCULAR, 40V 1,5 A

2

3-04 U CONDENSADOR 2200 µFCONDENSADOR ELECTROLÍTICO POLARIZADO ALUMINIO,25 V

1

3-05 U CONDENSADOR 100 NfCONDENSADOR TÁNTALO NO POLARIZADO 25 V

2

3-06 U DIODO 1N4007DIODO SILICIO DE SEÑAL

2

3-06 U TRANSFORMADORTRANSFORMADOR FERRITA 220-9 V 0,6 A

1

Page 183: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 6

Num Uts. Descripción Cantidad

CAPÍTULO 4: CAJAS, SOPORTES, CABLES

4-01 U PLACA PCBPLACA FOTOSENSIBLE CON BAÑO DE COBRE

3

4-02 U PLACA TOPOPLACA PERFORADA EN REJILLA 2,54 mm

1

4-03 U SEPARADORESSEPARADORES HEXAGONALES DE METAL Y TUERCAS M3

12

4-04 U RADIADORRADIADOR TO-220 CON TORNILLO Y TUERCA M3

2

4-05 M CABLE BUS DE 10 VÍASCABLE HILOS TRENZADOS PLANOS PVC, PASOCONDUCTOR DE 1,27 mm

0,20

4-06 M CABLE 4 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,50

4-07 M CABLE 8 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,50

4-08 U CABLE PUERTO SERIECABLE NULL-MODEM DB9

1

4-09 U CABLE ALIMENTACIÓNCABLE RED TRES HILOS CON CLAVIJA EUROPEA

1

4-10 U CAJACAJA PLÁSTICO

2

Page 184: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 7

Num Uts. Descripción Cantidad

CAPÍTULO 5: MANO DE OBRA

5-01 H CONFIGURACIÓN HARDWAREHORAS DEDICADAS AL DISEÑO, MONTAJE Y PRUEBA DELHARDWARE DEL PROYECTO

150

5-02 H CONFIGURACIÓN SOFTWAREHORAS DEDICADAS AL DISEÑO, MONTAJE Y PRUEBA DELSOFTWARE DEL PROYECTO

250

Page 185: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 8

1.2 CUADRO DE PRECIOS

Num Uts. Descripción Precio Precio en letra

CAPÍTULO 1: CONECTORES

1-01 U ZÓCALO DIL DE 8 PINESTORNEADO, PASO DE 7.62 mm

0,26 VEINTISEÍS CÉNTIMOS DEEURO

1-02 U ZÓCALO DIP DE 16 PINESTORNEADO, PASO DE 7.62 mm

0,48 CUARENTA Y OCHOCÉNTIMOS DE EURO

1-03 U ZÓCALO DIP DE 28 PINES ESTRECHOTORNEADO, PASO DE 7.62 mm

0,75 SETENTA Y CINCO CÉNTIMOSDE EURO

1-04 U CONECTOR POSTE DE 2 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,41 CUARENTA Y UNO CÉNTIMOSDE EURO

1-05 U CONECTOR POSTE DE 3 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,48 CUARENTA Y OCHOCÉNTIMOS DE EURO

1-06 U CONECTOR POSTE DE 4 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,62 SESENTA Y DOS CÉNTIMOS DEEURO

1-07 U CONECTOR POSTE DE 7 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,84 OCHENTA Y CUATROCÉNTIMOS DE EURO

1-08 U CONECTOR POSTE DE 2 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,27 VEINTISIETE CÉNTIMOS DEEURO

1-09 U CONECTOR POSTE DE 3 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,32 TRENTA Y DOS CÉNTIMOS DEEURO

1-10 U CONECTOR POSTE DE 4 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,41 CUARENTA Y UNO CÉNTIMOSDE EURO

1-11 U CONECTOR POSTE DE 7 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,48 CUARENTA Y OCHOCÉNTIMOS DE EURO

1-12 U CONECTOR BUS DE 10 VÍAS HEMBRAMONTAJE RECTO PCB

1,00 UN EURO

1-12 U CONECTOR BUS DE 10 VÍAS MACHOINCLUYE SOPORTE

0,84 OCHENTA Y CUATROCÉNTIMOS DE EURO

1-13 U CONECTOR REGLETA 2 VÍASTERMINALES CON TORNILLO, ANCHO CABLE2,5 mm2, PASO DE 5 mm

0,62 SESENTA Y DOS CÉNTIMOS DEEURO

1-14 U CONECTOR DB9CONECTOR DB9 HEMBRA TERMINAL RECTO

0,72 SETENTA Y DOS CÉNTIMOS DEEURO

Page 186: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 9

Num Uts. Descripción Precio Precio en letra

CAPÍTULO 2: COMPONENTES CAJA DATA LOGGER

2-01 U LM35SENSOR TEMPERATURA GRADOSCENTÍGRADOS, ENCAPSULADO TO-92

3,90 TRES EUROS CON NOVENTACÉNTIMOS DE EURO

2-02 U OP07AMPLIFICADOR OPERACIONAL DE BAJOOFFSET, ENCAPSULADO DIP 8

0,48 CUARENTA Y OCHOCÉNTIMOS DE EURO

2-03 U INA114AMPLIFI. INSTRUMENTACIÓN DE PRECISIÓN,ENCAPSULADO DIP 8

11,90 ONCE EUROS CON NOVENTACÉNTIMOS DE EURO

2-04 U PIC16F873MICROCONTROLADOR 8 BITS,ENCAPSULADO DIP 28

10,78 DIEZ EUROS CON SETENTA YOCHO CÉNTIMOS DE EURO

2-05 U M24C16MEMORIA EEPROM 16KBITS I2C,ENCAPSULADO DIP 8

1,50 UN EURO CON CINCUENTACÉNTIMOS DE EURO

2-06 U MAX232INTERFAZ COMUNICACIÓN RS232,ENCAPSULADO DIP 16

1,50 UN EURO CON CINCUENTACÉNTIMOS DE EURO

2-07 U CRISTAL 4 MHzCRISTAL CUARZO XT, ENCAPSULADO HC49

0,51 CINCUENTA Y UNO CÉNTIMOSDE EURO

2-08 U DIODO 1N4148DIODO SILICIO DE SEÑAL

0,03 TRES CÉNTIMOS DE EURO

2-09 U RESISTENCIA 100 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 CUATRO CÉNTIMOS DE EURO

2-10 U RESISTENCIA 330 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 CUATRO CÉNTIMOS DE EURO

2-11 U RESISTENCIA 1 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 CUATRO CÉNTIMOS DE EURO

2-12 U RESISTENCIA 3,9 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 CUATRO CÉNTIMOS DE EURO

2-13 U RESISTENCIA 10 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 CUATRO CÉNTIMOS DE EURO

2-14 U RESISTENCIA 470 ΩRESISTENCIA DE PELÍCULA METÁLICA 0,25W, 1%

0,05 CINCO CÉNTIMOS DE EURO

2-15 U CONDENSADOR 1 µFCONDENSADOR ELECTROLÍTICOPOLARIZADOS ALUMINIO, 25 V

0,18 DIECIOCHO CÉNTIMOS DEEURO

2-16 U CONDENSADOR 15 pFCONDENSADOR CERÁMICO MULTICAPA NOPOLARIZADO 25 V

0,14 CATORCE CÉNTIMOS DE EURO

2-17 U LEDLED ROJO ESTÁNDAR DE 3 mm

0,14 CATORCE CÉNTIMOS DE EURO

Page 187: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 10

2-18 U INTERRUPTORINTERRUPTOR CON ACTUADORDESLIZANTE PCB, PASO 2,54 mm

1,00 UN EURO

2-19 U PULSADORPULSADOR 4 SOPORTES PCB

0,72 SETENTA Y DOS CÉNTIMOS DEEURO

2-20 U TERMOPAR KTERMOPAR K CON PUNTA SOLDADA YAISLAMIENTO DE FIBRA DE VIDRIO

12,00 DOCE EUROS

Page 188: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 11

Num Uts. Descripción Precio Precio en letra

CAPÍTULO 3: COMPONENTES CAJA FUENTE ALIMENTACIÓN

3-01 U L7805REGULADOR DE TENSIÓN 5V, ENCAPSULADOTO-220

0,51 CINCUENTA Y UNO CÉNTIMOSDE EURO

3-02 U L7905REGULADOR DE TENSIÓN -5V,ENCAPSULADO TO-220

0,51 CINCUENTA Y UNO CÉNTIMOSDE EURO

3-03 U B40CPUENTE RECTIFICADOR DE DIODOS,CIRCULAR, 40V 1,5 A

0,14 CATORCE CÉNTIMOS DE EURO

3-04 U CONDENSADOR 2200 µFCONDENSADOR ELECTROLÍTICOPOLARIZADO ALUMINIO, 25 V

0,20 VEINTE CÉNTIMOS DE EURO

3-05 U CONDENSADOR 100 NfCONDENSADOR TÁNTALO NO POLARIZADO25 V

0,14 CATORCE CÉNTIMOS DE EURO

3-06 U DIODO 1N4007DIODO SILICIO DE SEÑAL

0,04 CUATRO CÉNTIMOS DE EURO

3-06 U TRANSFORMADORTRANSFORMADOR FERRITA 220-9 V 0,6 A

8,00 OCHO EUROS

Page 189: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 12

Num Uts. Descripción Precio Precio en letra

CAPÍTULO 4: CAJAS, SOPORTES, CABLES

4-01 U PLACA PCBPLACA FOTOSENSIBLE CON BAÑO DE COBRE

2,50 DOS EUROS CON CINCUENTACÉNTIMOS DE EURO

4-02 U PLACA TOPOPLACA PERFORADA EN REJILLA 2,54 mm

1,20 UN EURO CON VEINTECÉNTIMOS DE EURO

4-03 U SEPARADORESSEPARADORES HEXAGONALES DE METAL YTUERCAS M3

0,06 SEIS CÉNTIMOS DE EURO

4-04 U RADIADORRADIADOR TO-220 CON TORNILLO YTUERCA M3

0,20 VEINTE CÉNTIMOS DE EURO

4-05 M CABLE BUS DE 10 VÍASCABLE HILOS TRENZADOS PLANOS PVC,PASO CONDUCTOR DE 1,27 mm

1,10 UN EURO CON DIEZ CÉNTIMOSDE EURO

4-06 M CABLE 4 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,50 CINCUENTA CÉNTIMOS DEEURO

4-07 M CABLE 8 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,80 OCHENTA CÉNTIMOS DEEURO

4-08 U CABLE PUERTO SERIECABLE NULL-MODEM DB9

2,50 DOS EUROS CON CINCUENTACÉNTIMOS DE EURO

4-09 U CABLE ALIMENTACIÓNCABLE RED TRES HILOS CON CLAVIJAEUROPEA

1,50 UN EURO CON VEINTECÉNTIMOS DE EURO

4-10 U CAJACAJA PLÁSTICO

3,50 TRES EUROS CON CINCUENTACÉNTIMOS DE EURO

Page 190: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 13

Num Uts. Descripción Precio Precio en letra

CAPÍTULO 5: MANO DE OBRA

5-01 H CONFIGURACIÓN HARDWAREHORAS DEDICADAS AL DISEÑO, MONTAJE YPRUEBA DEL HARDWARE DEL PROYECTO

2,50 DOS EUROS CON CINCUENTACÉNTIMOS DE EURO

5-02 H CONFIGURACIÓN SOFTWAREHORAS DEDICADAS AL DISEÑO, MONTAJE YPRUEBA DEL SOFTWARE DEL PROYECTO

2,50 DOS EUROS CON CINCUENTACÉNTIMOS DE EURO

Page 191: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 14

1.3 APLICACIÓN DE PRECIOS

Num Uts. Descripción Precio unitario Total Medido Total €

CAPÍTULO 1: CONECTORES

1-01 U ZÓCALO DIL DE 8 PINESTORNEADO, PASO DE 7.62 mm

0,26 3 0,78

1-02 U ZÓCALO DIP DE 16 PINESTORNEADO, PASO DE 7.62 mm

0,48 1 0,48

1-03 U ZÓCALO DIP DE 28 PINES ESTRECHOTORNEADO, PASO DE 7.62 mm

0,75 1 0,75

1-04 U CONECTOR POSTE DE 2 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,41 2 0,82

1-05 U CONECTOR POSTE DE 3 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,48 2 0,96

1-06 U CONECTOR POSTE DE 4 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,62 4 2,48

1-07 U CONECTOR POSTE DE 7 VÍAS HEMBRATERMINAL RECTO, PASO DE 2.54 mm

0,84 2 1,68

1-08 U CONECTOR POSTE DE 2 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,27 2 0,54

1-09 U CONECTOR POSTE DE 3 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,32 2 0,64

1-10 U CONECTOR POSTE DE 4 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,41 4 1,64

1-11 U CONECTOR POSTE DE 7 VÍAS MACHOINCLUYE CONTACTO DE CRIMPAR, PASO DE2.54 mm

0,48 2 0,96

1-12 U CONECTOR BUS DE 10 VÍAS HEMBRAMONTAJE RECTO PCB

1,00 3 3,00

1-12 U CONECTOR BUS DE 10 VÍAS MACHOINCLUYE SOPORTE

0,84 2 1,68

1-13 U CONECTOR REGLETA 2 VÍASTERMINALES CON TORNILLO, ANCHO CABLE2,5 mm2, PASO DE 5 mm

0,62 1 0,62

1-14 U CONECTOR DB9CONECTOR DB9 HEMBRA TERMINAL RECTO

0,72 1 0,72

TOTAL CAPÍTOLULO 1: 17,75 €

Page 192: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 15

Num Uts. Descripción Precio unitario Total Medido Total €

CAPÍTULO 2: COMPONENTES CAJA DATA LOGGER

2-01 U LM35SENSOR TEMPERATURA GRADOSCENTÍGRADOS, ENCAPSULADO TO-92

3,90 1 3,90

2-02 U OP07AMPLIFICADOR OPERACIONAL DE BAJOOFFSET, ENCAPSULADO DIP 8

0,48 1 0,48

2-03 U INA07AMPLIFI. INSTRUMENTACIÓN DE PRECISIÓN,ENCAPSULADO DIP 8

11,90 1 11,90

2-04 U PIC16F873MICROCONTROLADOR 8 BITS,ENCAPSULADO DIP 28

10,78 1 10,78

2-05 U M24C16MEMORIA EEPROM 16KBITS I2C,ENCAPSULADO DIP 8

1,50 1 1,50

2-06 U MAX232INTERFAZ COMUNICACIÓN RS232,ENCAPSULADO DIP 16

1,50 1 1,50

2-07 U CRISTAL 4 MHzCRISTAL CUARZO XT, ENCAPSULADO HC49

0,51 1 0,51

2-08 U DIODO 1N4148DIODO SILICIO DE SEÑAL

0,03 1 0,03

2-09 U RESISTENCIA 100 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 1 0,04

2-10 U RESISTENCIA 330 ΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 3 0,12

2-11 U RESISTENCIA 1 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 1 0,04

2-12 U RESISTENCIA 3,9 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 1 0,04

2-13 U RESISTENCIA 10 kΩRESISTENCIA DE PELÍCULA DE CARBÓN 0,25W, 5%

0,04 4 0,16

2-14 U RESISTENCIA 470 ΩRESISTENCIA DE PELÍCULA METÁLICA 0,25W, 1%

0,05 1 0,05

2-15 U CONDENSADOR 1 µFCONDENSADOR ELECTROLÍTICOPOLARIZADOS ALUMINIO, 25 V

0,18 5 0,90

2-16 U CONDENSADOR 15 pFCONDENSADOR CERÁMICO MULTICAPA NOPOLARIZADO 25 V

0,14 2 0,28

2-17 U LEDLED ROJO ESTÁNDAR DE 3 mm

0,14 3 0,42

Page 193: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 16

2-18 U INTERRUPTORINTERRUPTOR CON ACTUADORDESLIZANTE PCB, PASO 2,54 mm

1,00 3 3,00

2-19 U PULSADORPULSADOR 4 SOPORTES PCB

0,72 1 0,72

2-20 U TERMOPAR KTERMOPAR K CON PUNTA SOLDADA YAISLAMIENTO DE FIBRA DE VIDRIO

12,00 1 12,00

TOTAL CAPÍTULO 2: 48,37 €

Page 194: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 17

Num Uts. Descripción Precio unitario Total Medido Total €

CAPÍTULO 3: COMPONENTES CAJA FUENTE ALIMENTACIÓN

3-07 U L7805REGULADOR DE TENSIÓN 5V, ENCAPSULADOTO-220

0,51 1 0,51

3-02 U L7905REGULADOR DE TENSIÓN -5V,ENCAPSULADO TO-220

0,51 1 0,51

3-03 U B40CPUENTE RECTIFICADOR DE DIODOS,CIRCULAR, 40V 1,5 A

0,14 2 0,14

3-04 U CONDENSADOR 2200 µFCONDENSADOR ELECTROLÍTICOPOLARIZADO ALUMINIO, 25 V

0,20 1 0,20

3-05 U CONDENSADOR 100 NfCONDENSADOR TÁNTALO NO POLARIZADO25 V

0,14 2 0,28

3-06 U DIODO 1N4007DIODO SILICIO DE SEÑAL

0,04 2 0,08

3-06 U TRANSFORMADORTRANSFORMADOR FERRITA 220-9 V 0,6 A

8,00 1 8,00

TOTAL CAPÍTULO 3: 9,86 €

Page 195: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 18

Num Uts. Descripción Precio unitario Total Medido Total €

CAPÍTULO 4: CAJAS, SOPORTES, CABLES

4-01 U PLACA PCBPLACA FOTOSENSIBLE CON BAÑO DE COBRE

2,50 3 7,50

4-02 U PLACA TOPOPLACA PERFORADA EN REJILLA 2,54 mm

1,20 1 1,20

4-03 U SEPARADORESSEPARADORES HEXAGONALES DE METAL YTUERCAS M3

0,06 12 0,72

4-04 U RADIADORRADIADOR TO-220 CON TORNILLO YTUERCA M3

0,20 2 0,40

4-05 M CABLE BUS DE 10 VÍASCABLE HILOS TRENZADOS PLANOS PVC,PASO CONDUCTOR DE 1,27 mm

1,10 0,20 0,55

4-06 M CABLE 4 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,50 0,50 0,25

4-07 M CABLE 8 NÚCLEOSCABLE FLEXIBLE, PVC, HILOS 0,75 mm2

0,80 0,50 0,40

4-08 U CABLE PUERTO SERIECABLE NULL-MODEM DB9

2,50 1 2,50

4-09 U CABLE ALIMENTACIÓNCABLE RED TRES HILOS CON CLAVIJAEUROPEA

1,50 1 1,50

4-10 U CAJACAJA PLÁSTICO

3,50 2 7,00

TOTAL CAPÍTULO 4: 21,69 €

Page 196: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 19

Num Uts. Descripción Precio unitario Total Medido Total €

CAPÍTULO 5: MANO DE OBRA

5-01 H CONFIGURACIÓN HARDWAREHORAS DEDICADAS AL DISEÑO, MONTAJE YPRUEBA DEL HARDWARE DEL PROYECTO

2,50 150 375,00

5-02 H CONFIGURACIÓN SOFTWAREHORAS DEDICADAS AL DISEÑO, MONTAJE YPRUEBA DEL SOFTWARE DEL PROYECTO

2,50 250 625,00

TOTAL CAPÍTULO 5: 1000,00 €

Page 197: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PRESUPUESTO Pag 20

1.4 RESUMEN DEL PRESUPUESTO

• CAPÍTULO 1: CONECTORES 17,75 €• CAPÍTULO 2: COMPONENTES CAJA DATA LOGGER 48,37 €• CAPÍTULO 3: COMPONENTES CAJA FUENTE ALIMENTACIÓN 9,86 €• CAPÍTULO 4: CAJAS, SOPORTES, CABLES 21,69 €• CAPÍTULO 5: MANO DE OBRA 1000,00 €

PRESUPUSTO DE EJECUCIÓN MATERIAL (P.E.M.) 1097,67 €

• BENEFICIO INDUSTRIAL (6% DEL P.E.M.) 65,86 €• GASTOS GENERALES (13% DEL P.E.M.) 142,70 €

PRESUPUSTO DE EJECUCIÓN CONTRATO (P.E.C.) 1306,23 €

• I.V.A (16%) 209,00 €

PRESUPUESTO DE LICITACIÓN 1515,23 €

Mil quinientos quince euros con veintitrés céntimos de euro

Tarragona, a 31 de maig del 2003

Enginyer Tècnic Industrial

Signat: Pablo Parrado Guardia

Page 198: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

PLIEGO DE CONDICIONES

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 199: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 2

ÍNDICE

1 CONDICIONES GENERALES .................................................................................31.1 Condiciones legales y administrativas ........................................................................................................31.2 Condiciones Económicas................................................................................................................................41.3 Condiciones Facultativas ...............................................................................................................................42 CONDICIONES TÉCNICAS......................................................................................42.1 Condiciones técnicas de materiales y equipos ...........................................................................................5

2.1.1 Descripción general del montaje ..............................................................................................................52.1.1.1 Especificaciones de componentes electrónicos..........................................................................5

2.1.1.1.1 Conductores ................................................................................................................................52.1.1.1.2 Conectores...................................................................................................................................52.1.1.1.3 Resistores lineales fijos .............................................................................................................62.1.1.1.4 Condensadores ...........................................................................................................................6

2.1.1.1.4.1 Condensadores electrolíticos .............................................................................................62.1.1.1.4.2 Condensadores cerámicos multica.....................................................................................6

2.1.1.1.5 Diodos..........................................................................................................................................72.1.1.1.5.1 Diodos de señal ....................................................................................................................72.1.1.1.5.2 Diodos Rectificadores..........................................................................................................72.1.1.1.5.3 LEDS.......................................................................................................................................7

2.1.1.1.6 Amplificadores operacionales ..................................................................................................72.1.1.1.7 Amplificador de instrumentación.............................................................................................72.1.1.1.8 Driver/Receiver RS-232..............................................................................................................82.1.1.1.9 EEPROM ......................................................................................................................................82.1.1.1.10 Microntrolador............................................................................................................................8

2.1.2 Diseño de placas de circuito impreso......................................................................................................82.1.2.1 Protecciones contra ruidos.............................................................................................................9

2.2 Condiciones técnicas de ejecución............................................................................................................ 102.2.1 Fabricación de placas de circuito impreso............................................................................................112.2.2 Soldadura de los componentes ..............................................................................................................122.2.3 Mecanización de las cajas .......................................................................................................................12

2.2.3.1 Aparatos de medida utilizados.....................................................................................................132.3 Especificaciones del sistema...................................................................................................................... 13

Page 200: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 3

1 Condiciones Generales

Este apartado, abarca una serie de condiciones importantes tales como: las legales yadministrativas, económicas y facultativas.

1.1 Condiciones legales y administrativas

Todos los objetivos a desarrollar en el proyecto se ejecutarán cumpliendo la normativaUNE referente a todas las partes implicadas y especificas en el apartado “31 Electrónica” delcatálogo de la asociación Española de Normalización y Certificación (AENOR), tales como:

31.020.- Componentes electrónicos en general.

31.040.- Resistencias eléctricas.

31.040.10.- Resistencias fijas.

31.040.20.- Potenciómetros, resistencias variables. 31.060.- Condensadores.

31.060.10.- Condensadores fijos en general.

31.080.- Dispositivos semiconductores

31.160.- Filtros eléctricos.

31.180.- Tarjetas y circuitos impresos.

31.200.- Circuitos integrados, microelectrónica, etc.

A su vez se han de cumplir los aspectos técnicos de instalación que afecten directa oindirectamente al presente trabajo, incluidos en los Reglamentos Electrotécnicos de BAJATENSIÓN. A continuación se citan las instrucciones complementarias más importantes delreglamento electrotécnico para baja tensión, instrucciones MIBT:

0.17 – Instalaciones interiores o receptoras. Prescripciones de carácter general.0.21 – Instalaciones interiores o receptoras. Protecciones contra sobreintensidades yobretensiones.029 – Instalaciones a pequeñas tensiones.030 – Instalaciones a tensiones especiales.031 – Receptores. Prescripciones generales.035 – Receptores. Transformadores y autotransformadores. Reactancias y rectificadores.Condensadores.

Page 201: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 4

044 – Normas LINE de obligado cumplimiento publicadas por el Instituto deRacionalización y Normalización (IRANOR).

Finalmente, se ajustará a la reglamentación de la Administración local que corresponda.

1.2 Condiciones Económicas

La forma de efectuar el abono del equipo será al contado si éste está ya construido. Si seha de proceder a su fabricación, se abonará en dos plazos de pago: uno a cuenta para iniciar eltrabajo de fabricación y el resto al finalizar el mismo, siempre y cuando se cumplan los requisitosexpuestos en las condiciones facultativas.

1.3 Condiciones Facultativas

Ofertas expuestas por la empresa proyectista:

Se compromete a realizar los trabajos expuestos en el presente proyecto hasta efectuar suventa.

No se compromete a realizar los trabajos ajenos de cualquier tipo no especificados en elpresente proyecto.

En el caso de que el primer pago no se efectúe para dar inicio a la fabricación y no pagueel demandante una vez cumpla el primer plazo acordado, se procederá a la paralización de laconstrucción. En este caso, se podrá aumentar el valor del primer plazo a abonar en un 20%.

El plazo de garantía, de un año, será cumplido por la empresa proyectista, siempre ycuando se justifique que la avería sea ajena al mal uso del equipo.

Requisitos obligatorios a cumplir por el comprador:

Cualquier retraso producido en el proceso de fabricación par causas ajenas a la empresao debidamente justificadas, será aceptado por el demandante, sin opción a reclamar por daños yperjuicios.

Una vez pasen los plazos de garantía no tiene derecho a reclamar gratuitamente ajustes yreparaciones en el equipo global.

Cuando se efectúe el contrato, acordando ambas partes lo expuesto anteriormente y sefijen las fechas de pago según correspondan, se procederá a su cierre firmando los documentosoportunos.

2 CONDICIONES TÉCNICAS

Las condiciones técnicas se dividen en las condiciones materiales y equipos y condiciones deejecución

Page 202: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 5

2.1 Condiciones técnicas de materiales y equipos

A continuación se van a expresar las condiciones que deben cumplir los componentes poradquirir, los componentes por fabricar, los materiales, el diseños de placas de circuito impreso(propiedades, dimensiones,...), las protecciones contra ruidos, las especificaciones del equipo,etc. Estas condiciones garantizan el cumplimento de las normativas y reglamentaciones vigentesque puedan afectarles, ya expresadas en las condiciones generales, legales y administrativas.

En los accesos se especifican las librerías y catálogos de los componentes electrónicosutilizados.

2.1.1 Descripción general del montaje

El hardware diseñado del equipo está colocado dentro de cajas. En ellas se ubican todoslos componentes del sistema.

Antes de llegar al montaje final se ha de conocer una serie de especificaciones, referentesal presente proyecto, para la elección correcta de los componentes electrónicos.

2.1.1.1 Especificaciones de componentes electrónicos

A continuación se especifican algunos de los componentes que forman la circuitería delequipo. Para el resto de componentes o si se desea conocer más especificaciones de los yanombrados, ver las librerías o catálogos descritos en los anexos.

2.1.1.1.1 Conductores

Los conductores utilizados son circulares ya que éstos tienen ventajas sobre otro tipo desección: tienen un área menor, implicando una mayor disipación calorífica y buena flexibilidad.

Los conductores externos para la conexión entre la alimentación eléctrica y la alimentaciónson de conexión cable de manguera con clavija shuko y base aérea con toma a masa CN-230 del’5 metros de longitud, cuya referencia es 50-TH.

El data logger y el PC se conectan mediante un cable NULL-MODEM de conectores denueve pines, cuyas líneas de transmisión y recepción están cruzadas.

Para conectar las cajas de alimentación y del data logger se utilizan tres bananas de 0,5 deconector banana de 5 mm

2.1.1.1.2 Conectores

Todas las conexiones de alimentación externas e internas entre tarjetas de circuito impresose realizan con conectores, ya sean regletas, conectores con ala de seguridad (poste), o tipo IDC(bus). Los dos primeros con un paso de 160 mm y el segundo con uno de 100 mm. Para laconexión con el PC se utiliza un conector DB-9. Los conectores entre la fuente y el data loggerson de tipo banana.

Page 203: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 6

2.1.1.1.3 Resistores lineales fijos

En el presente trabajo se utilizan resistencias de tolerancias l% y 5% correspondientes alas series E96 y E24, respectivamente.

Una vez realizados los cálculos y obtenidos los valores adecuados para las resistencias,donde no es necesaria la precisión, ya que los niveles de cambio (tensiones) son muy distantes, seutilizan resistencias de la serie E24 de tolerancia 5%. Pero donde requiere paso de intensidad conla menor fluctuación de la misma y notable precisión, se utilizan resistencias de la serie E96 cuyaresistencia es del 1%.

Dichos resistores utilizados disipan potencias menores o iguales a 250 mW. De maneraque, es necesario escoger valores de resistencias que disipen mucho más que la potencia prácticaa disipar, cuyo valor sea el menor posible para evitar al máximo posibles ruidos.

Los resistores de tolerancias del 5% están formados por una película de carbón y los de1% por una película metálica.

Características generales de los resistores:

Potencia máxima = 0’25 W (70 ºC)Coeficiente de temperatura =± 50 ppm/ºCTensión limite nominal = 250 V (DC o AC rms)Rigidez dieléctrica = 500 V (DC o AC rms)

2.1.1.1.4 Condensadores

En el presente trabajo se han utilizado dos tipos de condensadores: electrolíticos ycerámicos multicapa; descritos a continuación.

2.1.1.1.4.1 Condensadores electrolíticos

Una de las características más notables de estos condensadores es su gran capacidadpara un determinado volumen, es decir, valores relativamente grandes para un espesor deldieléctrico reducido, por lo que resulta una capacidad de valor elevado.

En el presente trabajo se utilizan condensadores fabricados de aluminio. Su polaridad esfija y se emplean a frecuencias bajas, para rectificadores, filtros y desacoplos a bajas frecuencias.Las principales características del dieléctrico son

Las capacidades que se pueden obtener con este dieléctrico oscilan entre l a 150.000 pF.

2.1.1.1.4.2 Condensadores cerámicos multicapa

El dieléctrico de estos condensadores es un elemento cerámico. Son condensadores conuna muy pequeña inductancia y una excelente característica en alta frecuencia.

Page 204: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 7

Las capacidades de estos condensadores son bajas, de picofaradios. Las tolerancias enlas capacidades son del orden del 5 %.

2.1.1.1.5 Diodos

Para el presente trabajo se distinguen dos tipos de diodos: diodos rectificadores y diodosemisores de luz (LED); descritos a continuación.

2.1.1.1.5.1 Diodos de Rectificadores

Son diodos de propósito general, de fabricación plana epitaxial sobre silicio, con cápsulade plástico. Permiten tensiones de 40 V en valor eficaz y intensidades de hasta 1A.

Si el encapsulado contiene un único diodo, este deberá ser del tipo DO-35, con banda depolaridad en el cátodo. Si el encapsulado contiene un puente de diodos, esté deberá ser circularde cuatro contactos

2.1.1.1.5.2 LEDS

Los LEDs serán de color rojo de 5 mm de diámetro, están fabricados confósforoarsenoide de galio, lo que les proporciona esa brillante luz roja. Los LEDs deberánsatisfacer las siguiente características:

- Empaquetado T-1 ¾ , cátodo estrecho.- Pico espectral: λpeak=625 nm.- Media línea espectral: ∆λ ½=45 nm.- Tensión: VR=5 V.- Corriente: IF=30 mA.

2.1.1.1.6 Amplificadores operacionales

En el presente proyecto se ha utilizado solamente un tipo de amplificador operacional.Éste, de referencia OP07C, se ha escogido principalmente por ser un amplificador de precisión.Debido a sus dos características determinantes, se ha utilizado en los circuitos diseñados al tenerun bajo offset (30 µV) y una pequeñísima variación de este parámetro respecto a la temperatura(0’5 µV/ºC) . El encapsulado del amplificador es el DIP 8.

2.1.1.1.7 Amplificador de instrumentación

El amplificador de instrumentación utilizado es el INA114, un amplificador deinstrumentación de precisión. Este amplificador debe tener un bajo offset y una deriva con latemperatura también baja. En concreto las características del integrado son:

Page 205: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 8

- Encapsulado: DIP 8- Tensión de offset máxima de 50 µV- Deriva con la temperatura máxima de 0.25µV/ºC- Alto Rechazo en modo común

2.1.1.1.8 Driver/Receiver RS-232

El Driver RS-232 debe satisfacer la normas y especificaciones EIA/TIA-RS232E y V.28.El módulo actualmente implementado es el MAX232, por lo que deberá utilizarse este módulo uotro equivalente que posea las siguientes características:

- Tensión de Alimentación de 5 V.- Conexión de cinco condensadores electrolíticos de 1 µF.- Encapsulado DIP de 16 vías.

2.1.1.1.9 EEPROM

La memoria EEPROM debe comunicarse vía seria mediante el interfase I2C y debe tenerel encapsulado DIP de 8 vías, y permitir la alimentación a 5 V.

Estas características han sido considerandas a la hora de realizar el programa, con lo quese ha conseguido que este no limite más el rango de memorias a utilizar. Las memorias quepermiten estas características son la memorias tipo M24x que fabrican, tanto Microchip, comoSGS-Thompson.

2.1.1.1.10 Microntrolador

El Microcontrolador debe ser un microcontrolador de 28 pines de la família Microchip, enconcreto de la gama media, por lo que constará de un repertorio de 35 instrucciones de 14 bits.

Si no se desea modificar el programa, deberádisponer de los módulos USART e I2C y unconversor A/D de diez bits. Los modelos de la casa Microchip que actualmente poseen dichascaracterísticas, ambos con memoria de programa tipo FLASH, son:

- PIC16F873: Es el que se ha utilizado en el diseño del sistema. Posee una memoria deprograma de 4096x14 bits.

- PIC16F876: La única diferencia con el anterior es que este posee una memoria deprograma de 8192x14 bits.

Dichos modelos deben estar en un encapsulado tipo DIP estrecho de 28 pines.

2.1.2 Diseño de placas de circuito impreso

Todas las placas de circuito impreso se han diseñado con el programa informática “Orcad9.2”, para la posterior impresión de los fotolitos.

Page 206: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 9

Para su realización se han escogido placas presensibilizadas positivas a dos caras ytambién se han diseñado, sin utilizar los trazados automáticos de pistas, para conseguir una mayorfiabilidad en las placas, siguiendo lo expresado en los siguientes puntos:

• Utilizar en todos los recorridos de pistas o nets, giros de 45º, entre pads y vías, desde sulugar de origen hasta su llegada.• Minimizar el recorrido de las pistas, llevando la pista correspondiente a su lugar dedestino por el camino más corto y con el número menor de vías, si es posible, ninguna.• Para las pistas pertenecientes a las alimentaciones de todas las placas se ha procurado norealizar ninguna vía en sus recorridos.• Se ha procurado establecer un mínimo para la anchura de las pistas de 0’8 mm, sin llegara los 0’5 mm. establecidos en las normas. También se ha establecido la misma anchura, comomínimoentre las pistas de polaridad positiva, las realimentaciones y los controles con susrespectivas masas.• Se han evitado al máximo los lazos de masassiempre y cuando no exista plano de masaen dicha cara.• Las pistas que van soldadas a los pins de conectores y potenciómetros vanobligatoriamente en la cara contraria donde se encajan, es decir, en su respectiva cara desoldadura.

Todas las pistas de la placa o placas tienen anchuras diferentes, dependiendo de laintensidad máxima que circulará a través de ellas. Dichas anchuras son aproximadamente:para las señales analógicas de 0’8 mm, y para alimentaciones y masas de 0’8y 2mm,respectivamente

La anchura (a), conocida la intensidad máxima (Imax) que ha de recorrer la pista o net,viene dada por la expresión siguiente:

a = anchura del net o pistaImax = intensidad máxima que ha de recorrer la pista o net

( )27

3maxI

a = (2.1)

Todos los pads son circulares, de diámetro l’8, 2, 3 y 3’5 mm u ovalados de l’5 x 3 mm.Las vías son circulares, generalmente, de 2 mm de diámetro.

Las placas de circuito impreso presensibilizadas positivas a dos caras, son de fibra devidrio. Cada una de ellas tiene sus medidas características para la posterior ubicación en las cajas.El proceso de fabricación de las mismas se especifican en las condiciones mecánicas.

2.1.2.1 Protecciones contra ruidos

Page 207: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 10

En el diseño del hardware se ha seguido una serie de criterios para prevenir al máximotodo tipo de ruidos en el sistema y daños en los componentes de cada uno de los circuitos.

Los ruidos externos o interferencias pueden ser eléctricos, magnéticos yelectromagnéticos

Los eléctricos y magnéticos se producen a través de las capacidades parásitas einductancias mutuas entre circuitos adyacentes. Por ello se han diseñado una serie de fuentes dealimentación para cada una de las alimentaciones, independizando al máximo la unión entre ellassalvo en plano de masa. La utilización de transformadores con toma de masa media para evitar lasmasas flotantes y unir todas las masas a la salida de sus respectivos secundarios, se evita almáximo el desequilibrio de las ondas senoidales y diferentes caídas de tensión en la masa de cadafuente. Cada una de dichas alimentaciones se ha procurado llevar lo más próximo que se puedaen las placas de los circuitos impresos a los pins de los integrados que necesiten suministro,uniendo las masas de las diferentes alimentaciones con un plano de masa, ya sean digitales oanalógicos, ya que todos provienen del mismo módulo de alimentación. Evitar los lazos de masasuniendo siempre que se pueda todas las masas en un punto común.

Los electromagnéticos se producen alrededor de los cables del equipo y pistas de loscircuitos impresos, actuando éstos como antena. Aparte de lo expuesto anteriormente, se hanutilizado para prevenir al máximo dicho ruido, conectores y cableado adecuado para cada tipo deseñal. También se procura no pasar las pistas de alimentación de una cara a otra en las placas delos diferentes circuitos impresos siempre que se pueda.

El ruido interno o inherente es debido a fenómenos de agitación térmica de electrones enresistores y en la generación y recombinación aleatoria de pares de electrones-agujeros en lossemiconductores. Para prevenir este tipo de ruido se han utilizado componentes adecuados paracada caso, dependiendo del valor de intensidad que ha de pasar, ya sean resistores fijos ovariables, transistores, etc.

Para la protección de integrados y el resto de componentes de los circuitos se utilizan,aparte de los ya expresados, condensadores no polarizados colocados en paralelo lo máspróximo posible de los pins de alimentación de cada integrado, para evitar picos de tensiónexcesivos, ya sean éstos positivos o negativos, en los intentos de conexión o desconexión delequipo.

Como protección contra los errores, cuando se ha requerido precisión, se han utilizado,aparte de los ya comentados:

– Resistencias de película metálica con la tolerancia mínima del l%.– Operacionales con una mínima fluctuación de la tensión de salida respecto a la temperatura ycon una gran impedancia de salida.– Eliminación de las tensiones e intensidades de offset.

2.2 Condiciones técnicas de ejecución

Page 208: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 11

A continuación se va a expresar la forma de ejecutar, fabricar y montar diferentes partesde la instalación en el equipo, garantizando el cumplimiento de las normativas y reglamentacionesvigentes que puedan afectarles, ya expresadas en las condiciones legales y administrativas.

2.2.1 Fabricación de placas de circuito impreso

Una vez diseñadas y obtenidos los fotolitos en papel de acetato, se puede ya efectuar lafabricación de dichas placas, siguiendo paso a paso las siguientes operaciones:

• Inicialmente se ha de poner a punto la maquinaria y materiales a utilizar: insoladora olámpara de luz actínica, revelador y el atacante o, en su defecto, una disolución de sosa cáustica yagua, atacador rápido que se puede sustituir por una disolución con la siguiente composición:33% de hidruro de cloro, 33% de agua oxigenada de 110 volúmenes y 33% de agua. Y porúltimo se necesitan las placas de circuito impreso de material fotosensible positivo de doble carade material de fibra de vidrio. Previamente dichas placas han sido cortadas con las medidasoportunas.• Colocar la placa de circuito impreso entre los fotolitos previamente unidos. Introducirlaen la insoladora cubriéndola con el plástico. Activar la bomba de vacío para evitar la formaciónde burbujas de aire entre las transparencias y las caras de la placa. Posteriormente se cierra elcircuito superior y se introduce en el interior de la insoladora para poder después conectar la luzactínica durante el tiempo aconsejado por el fabricante.• El tiempo de exposición depende de la lámpara usada, de la distancia de esta placa, delmaterial fotosensible usado y de la antigüedad de éste. Para ello el fabricante indica cual es eltiempo óptimo recomendado.• Acabada la exposición, se retira la placa de la insoladora y se coloca dentro del líquidorevelador. El tiempo de revelado depende de la marca de la placa, indicando su fabricante cuál esel adecuado. De todas formas, dicho tiempo, sirve como referencia ya que paco a poco se vanviendo las pistas y por lo tanto, cuando está suficientemente revelado, las pistas se deber vernítidas y el resto de superficie ausente de cualquier sustancia fotosensible, es decir, se debe ver elcobre limpio.• Una vez revelada la placa, se coloca debajo del grifo y se limpia con agua con lo queproduciremos un paro del revelado. Posteriormente, se puede pasar a la fase del atacado. Paraello se sumerge en el atacador rápido o en la disolución, observando como va desapareciendo elcobre libre y las pistas se mantienen intactas. Una vez que haya desaparecido toda la superficie decobre que forma parte de las pistas, se saca la placa del atacador y se limpia con agua para pararla fase del atacador.• Como fase final se deberá limpiar la emulsión fotosensible que recubre las pistas conalcohol o acetona. Éstas están ya preparadas para su recubrimiento de estaño en la máquinaprovista de dos rodillos en contacto con el estaño de la cubeta.• Posteriormente se procede a su limpieza con agua y ya se puede pasar a la mecanizaciónde los agujeros (pads o vías), con los diámetros de broca correspondientes, con el taladro. Los

Page 209: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 12

diámetros vienen marcados por el grosor de los pins de los diferentes tipos de componentes, conun mínimo de tolerancia.

La colocación de los componentes es lo más próxima a la placa guardando ciertadistancia en reguladores, transistores, etc.

2.2.2 Soldadura de los componentes

La soldadura utilizada en el presente proyecto es por fusión de la aleación metálica através de la aplicación de temperatura. Este tipo de soldadura es sencilla, segura, rápida y conuna gran calidad.

Pasos y fases producidos en la soldadura blanda por fusión:

• El pin hace referencia a todos los tipos de componentes a soldar y extremos delcableado. Se supone que la pista, pad o vía en las placas de C.I. alcanzan su temperatura óptimaal calentar la base metálica del pin a soldar.• Limpieza previa de la punta del soldador eléctrico y resto de componentes a soldar(placa, pins de los componentes y cableado).• Esperar que la punta del soldador alcance la temperatura de trabajo.• Establecer íntimo contacto o unión entre la base metálica del pin a soldar con el metal afundir. Este material a fundir es un hilo que tiene una composición del 63% de estaño y 37% deplomo, provista de una resina que facilita la limpieza de las superficies en contacto en el momentode la soldadura. Dicha resina también facilita y protege la soldadura de posteriores oscilacionesaceleradas al entrar en contacto con el oxígeno del aire a temperaturas elevadas.• Aplicación de suficiente temperatura, 183 ºC, para calentar el pin a soldar y fundir elmaterial.• La soldadura, en estado de fusión, humedece las bases del metal, provocando suposterior formación intermetálica.• Por último, el enfriamiento de la soldadura efectuada.

Es importante soldar alternadamente pins de diferentes componentes, para evitar quedichos componentes alcancen temperaturas demasiado elevadas y se produzca un deterioro.

2.2.3 Mecanización de las cajas

Una vez realizado un estudio previo sobre la cantidad y dimensiones aproximadas de lasplacas de circuito impreso, se disponen éstas para estudiar la mejor forma de ubicar las mismasen las cajas que reúnen buenas características. Tras haber seleccionado la forma de fijar cada unade las futuras placas, se puede proceder al diseño y fabricación de las mismas.

Page 210: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

PLIEGO DE CONDICIONES Pag 13

La disposición de las placas de C.I. en las cajas simplifica notablemente problemasposteriores, ya que solucionan problemas de extracción o incorporación de placas y reparacióndel conjunto ubicado en una caja.

2.2.3.1 Aparatos de medida utilizados

Los aparatos de medida utilizados en la investigación y fabricación del equipo en elpresente proyecto, son los siguientes.

PROGRAMABLE DIGITAL MULTIMETER “HAMEG HM 8112-2”DIGITAL MULTMETER “KT KT-9201”

2.3 Especificaciones del sistema

El hardware del sistema permite medir la temperatura mediante un temopar tipo K, dentrode los rangos de funcionamiento del horno del cinta del laboratorio de gases (Tª ambiente - 1100ºC), aplicando la compensación por software.

El software del sistema no sólo se limita a la compensación del termopar K anteriormentedescrito sino que está implementada la compensación de cualquier termopar: B, E, J, K, N, R, S

Se alimenta el sistema a 220 Vef y 50 Hz.La comunicación entre el sistema y el ordenador se realiza mediante RS232.El ordenador a utilizar debe ser un PC IBM o compatible y debe disponer de al menos un

puerto serie libre y tener instalado el sistema operativo MS-DOS o compatibles.

Page 211: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

ANEXO 1: MANUAL USUARIO

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 212: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 2

ÍNDICE

1 FUNCIONAMIENTO DEL DATA LOGGER............................................................3

2 FUNCIONAMIENTO DEL PROGRAMA ORDENADOR......................................4

2.1 Comado c sin /fil..................................................................................................................................................5

2.2 Comando c con /fil ..............................................................................................................................................5

2.3 Comando t sin /fil................................................................................................................................................6

2.4 Comando t con /fil...............................................................................................................................................7

2.5 Comando p............................................................................................................................................................7

2.6 Comando m...........................................................................................................................................................8

2.7 Mensajes de error ...............................................................................................................................................8

Page 213: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 3

1 Funcionamiento del Data Logger

El funcionamiento del data logger es simple:

1. Conectar la alimentación al data logger, conectando los cuatro bornes dealimentación a las tensiones adecuadas:

a. +5 , debe conectarse a una fuente de alimentación de estrictamente cincovoltios (se permite un margen de ± 0,5 V)

b. +Vcc, debe conectarse a una fuente igual o superior a +5. –Vcc debe seruna tensión negativa y suele ser simétrica a +Vcc.

c. GND, las masas del data logger y fuentes de alimentación deben ser lasmismas

2. Realizar las conexiones dependiendo del modo de trabajo a realizar. Hay tresmodos con el data logger:

a. Programación. Se cambia la configuración del data logger. El data loggerrecibe la configuración del ordenador. Para que reciba la configuracióndebe conectarse el data logger al puerto serie del ordenador mediante uncable null-modem RS-232.

b. Adquisición. Se adquieren las señales para la compensación del data loggery se guardan en la memoria del data logger. Debe ponerse en contacto eltermopar con la superficie a medir

c. Transmisión. Se transmiten al ordenador las señales que se adquirieronpreviamente. Necesita que el data logger esté conectado al puerto serie delordenador mediante el cable RS-232.

3. Una vez conectados los instrumentos para el modo de trabajo escogido, seinicia la actividad utilizando los conmutadores del sistema:

a. Marcha/Paro. Inicia la actividad del data logger, si está en ON iniciará elproceso determinado por las otras señales.

b. Conmutación de Programación/Normal. Si está activo se iniciará un ciclode programación al iniciarse marcha, si no, se tendrá en cuenta el estado delsegundo conmutador.

c. Conmutación de Adquisición/Transmisión. Si no está activo programación,si está a uno se iniciará un ciclo de adquisición de temperaturas yalmacenamiento al pulsarse marcha, o si no, uno de transmisión de lastemperaturas almacenadas en la adquisición previa.

Page 214: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 4

Al activar la marcha el data logger indicará el modo de trabajo a realizar mediantelos leds de visualización.

- Visualizador de Programación. Cuando está encendido indica que el sistema estáejecutando un ciclo de programación.

- Visualizador de Adquisición. Cuando está encendido indica que el sistema estáejecutando un ciclo de adquisición

- Visualizador de Transmisión. Cuando está encendido indica que el sistema estáejecutando un ciclo de transmisión.

4. El sistema dispone de un pulsador de reset que al pulsarlo reinicia el programa.

2 Funcionamiento del Programa Ordenador

El programa se ejecuta sobre el sistema operativo MS-DOS. Para acceder a él sedeberá escribir el nombre del programa en la línea de comandos y especificar el parámetrodeseado. Si no se especifica ningún parámetro aparece la sintaxis del programa:

Uso: TERMO <comando> [/com=n] [/ter=n] [/fil]

<Comandos>

c Compensación temperaturas data logger

t Transmisión configuración data logger

p Modificación/Creación parámetros internos

m Compensación indicado tensión producida y temperatura ambiente

Parámetros

/com=n indica el puerto serie usado n=1|2|3|4 , por defecto n=1

/ter=n indica el tipo de termopar usado n=b|e|j|k|n|r|s|t , por defecto n=k

/fil indica si se utilizara fichero interno, por defecto no se utiliza

Nota este parámetro no será válido para los comandos p o m

El comando c compensa las temperaturas guardadas en el data logger que le lleganpor el puerto serie. Las variables manejadas durante la compensación se guardan endiversos ficheros. Antes de comenzar la rutina de compensación el programa abreinternamente el fichero donde se guardan los parámetros de compensación del data logger,FICHCON. Si no puede abrir el fichero no se ejecuta la rutina de compensación y se acabael programa. Cuando se reciben datos por el puerto serie, estos se guardan en el ficheroFICHHEX. El fichero FICHHEX puede utilizarse como fuente para la compensación,evitando así la conexión al data logger, si el comando c contiene el parámetro /fil. Los

Page 215: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 5

ficheros generados en la compensación son: FICHVAL que guarda la temperatura ambientepresente durante la adquisición, FICHVOL registra la tensión producida por el termopar, yFICHTXT la temperatura en términos absolutos a la que se encontraba el termopar(compensación).

El comando t transmite la configuración del data logger para que este la reciba ycambie la actual configuración por esta. El programa pregunta al usuario los parámetros deconfiguración a transmitir, y son guardados en el fichero FICHTRM. Si se especifica elparámetro /fil, transmite el último FICHTRM guardado y no pregunta esos parámetros alusuario.

El comando p permite modificar los parámetros internos utilizados para compensarel sistema, el programa pregunta esos parámetros al usuario y los guarda en el ficheroFICHCON.

El comando m calcula la temperatura a la que se encuentra un termopar, si se leindica la temperatura ambiente y la tensión que produce.

2.1 Comado c sin /fil

Una vez se entra en esta opción aparece el siguiente mensaje:

Compensación Data Logger. Pulsa ESC para salir

Aparecen en la pantalla las temperaturas una vez compensadas que se vanrecibiendo, una temperatura ambiente, una del termopar, otra ambiente y otra del termopar,y así sucesivamente hasta que se reciben todas las temperaturas. Cuando se pulsa ESC se dapor finalizado el programa.

Fichero Generado

Con lo que se informa que los ficheros han sido generados.

2.2 Comando c con /fil

Los mensajes son similares al anterior, y el programa acaba cuando se termina deleer el fichero FICHHEX

Compensación Fichero Data Logger

Aparecen en la pantalla las temperaturas una vez compensadas que se vanextrayendo del fichero, una temperatura ambiente, una del termopar, otra ambiente y otradel termopar, y así sucesivamente hasta que se lee todo el fichero.

Fichero Generado

Se da por finalizada la compensación y se informa que los ficheros han sidogenerados.

Page 216: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 6

2.3 Comando t sin /fil

Primero el programa pregunta unos cuantos valores para poder deducir losparámetros de configuración a enviar al data logger.

Transferencia configuración al Data Loggera partir de los parámetros siguientes:

Tiempo muestreo aproximado (s) ?

La primera pregunta se refiere al tiempo que transcurrirá entre las medidas detemperaturas, y deberá expresarse en segundos. El usuario deberá indicar un tiempoaproximando, obviamente superior a cero, y el programa calculará el valor preciso, siendoeste valor nunca inferior al aproximado. Un ejemplo de resultado puede ser:

Tiempo de muestreo(s) 1.500000

Con la segunda se indica el valor del contador a cargar para el temporizador deretardos en la transmisión. Poner un valor diferente de cero puede resolver problemas en larecepción de los datos aunque retarda la finalización de esta. El valor máximo son 255unidades.

Retardos en la trasmisión (0-255) ?

La última pregunta se refiere al tipo de memoria EEPROM I2C presente en el datalogger. Permitiendo la configuración el programa de los siguientes dispositivos.Únicamente el usuario deberá introducir el número correspondiente

Tecle el número correspondiente al tipo de memoria utilizada

1 M24C01 2 M24C02 3 M24C04 4 M24C08

5 M24C16 6 M24128 7 M24256 8 M24512

Una vez acabadas la preguntas el data logger muestra la sucesiva transmisión deparámetros. Apareciendo en siguiente mensaje

Transferiendo al Data Logger

Enviado 0

Enviado 1

Enviado 2

Enviado 3

Enviado 4

Enviado 5

Enviado 6

Enviado 7

Page 217: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 7

Enviado 8

Transferencia finalizada

Con el que se van indicando los byte que se van enviado. Al acabar las preguntas losbytes a transmitir se guardan en el fichero FICHTRM

2.4 Comando t con /fil

Exactamente igual que el anterior pero no salen las preguntas.

Transferencia configuración al Data Logger

Transferiendo al Data Logger

Enviado 0

Enviado 1

Enviado 2

Enviado 3

Enviado 4

Enviado 5

Enviado 6

Enviado 7

Enviado 8

Transferencia finalizada

2.5 Comando p

Se desean modificar los parámetros de compensación del data logger.

Modificacion Parametros Compensacion

Que se extraerán de las siguientes preguntas

Tensión alimentación Vcc (V)

La tensión a la que se conecta la borna de +5 en el data logger.

Tensión de offset (mV)

Tensión de offset real del amplificador de instrumentación INA114.

Ganancia LM35

La ganancia entre entrada A/D y temperatura. Suele indicarse 49E-3

Page 218: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 1: MANUAL USUARIO Pag 8

Ganancia Termopar V

La ganancia tensión del termopar y entrada A/D. Suele indicarse 107.4

2.6 Comando m

Se desea calcular la temperatura en el termopar a partir de las medidas realizadas.

Calculo Temperatura Termopar a partir de las mediciones

Esas medidas son:

Temperatura ambiente (ºC)

La temperatura a la que se ha medido la tensión producida en el termopar

Tensión producida por el termopar (mV)

La tensión producida en mV.

Con lo que aparece un mensaje similar a:

temperatura del termopar es 125.1 ºC

2.7 Mensajes de error

Aparte del mensaje de error que se produce si no se introduce correctamente la líneade comandos del programa, ver apartado 2, también se muestran mensajes de error si no seencuentran ficheros que se pretendía utilizar. Así aparece:

Fichero de Adquisición no encontrado

Si se ha ejecutado TERMO c /fil y no se encuentra en el directorio actualFICHTRM.

Fichero de Transmisión configuración no encontrado

Si se ha ejecutado TERMO t /fil (pueden haber más parámetros) y no se encuentraen el directorio actual FICHTRM.

Fichero de parámetros internos no encontrado

Si se ha ejecutado TERMO c o TERMO p y no se encuentra en el directorio actualFICHCON.

Page 219: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

ANEXO 2: JUEGO DE PRUEBAS

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 220: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 2

ÍNDICE

1 CONFIGURACIÓN DEL DATA LOGGER..............................................................3

1.1 Especificaciones de cálculo ordenador ..........................................................................................................3

1.1.1 Fichero FICHCON..........................................................................................................................................3

1.2 Transmisión configuración ordenador-microcontrolador.......................................................................3

1.2.1 Fichero FICHTRM ..........................................................................................................................................4

2 EVOLUCIÓN TEMPERATURA AMBIENTE ..........................................................4

2.1 Fichero de transmisión datos microcontrolador-ordenador ...................................................................4

2.2 Fichero/Gráfica de temperatura ambiente ..................................................................................................4

2.3 Fichero/Gráfica de temperatura termopar ..................................................................................................5

3 SIMULACIÓN TERMOPAR.......................................................................................6

3.1 Fichero de transmisión datos microcontrolador-ordenador ...................................................................7

3.2 Fichero/Gráfica de temperatura ambiente ..................................................................................................7

3.3 Fichero/Gráfica de temperatura termopar ..................................................................................................8

4 COMPENSACIÓN MANUAL.....................................................................................9

Page 221: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 3

1 Configuración del data logger

Antes de empezar a adquirir con el data logger se ha de haber configurado previamentetanto el data logger como las especificaciones del sistema en el programa del ordenador.Las configuraciones seguidamente adoptadas se mantendrán constantes para todas laspruebas salvo que se indique lo contrario.

1.1 Especificaciones de cálculo ordenador

Se ejecuta el programa del ordenador TERMO con los siguientes parámetros:

TERMO p

Introduciendo los siguientes valores en los diferentes campos:

- Tensión alimentación: 5.1 V

- Tensión offset: 0 V

- Ganancia tensión entrada A/D / temperatura ambiente: 49E-3

- Ganancia tensión entrada A/D / tensión producida termopar: 108

1.1.1 Fichero FICHCON

En este fichero se guardan las especificaciones introducidas que serán utilizadas si seejecuta otro comando del programa TERMO.5.100000E+00 0.000000E+00 4.900000E-02 1.080000E+02

Podemos comprobar como los valores del fichero corresponden con los valoresanteriormente indicados

1.2 Transmisión configuración ordenador-microcontrolador

Se ejecuta el programa del ordenador TERMO con los siguientes parámetros:

TERMO t /com=1

Introduciendo los siguientes valores en los diferentes campos:

- Tiempo adquisición: 1.0 s

- Tipo de memoria: M24C16 (5)

- Retardos de transmisión: 0

Page 222: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 4

1.2.1 Fichero FICHTRM

En este fichero se guardan los datos que se han enviado al data logger y son:

f8 f0 fe f0 ef 10 2 fd ff

Podemos comprobar que corresponden a los valores calculados para los parámetrosindicados.

2 Evolución temperatura ambiente

El experimento se ha realizado a una temperatura ambiente de una casa no climatizaday a una tensión diferencial del termopar de 0V.

Se ejecuta el programa del ordenador TERMO con los siguientes parámetros:

TERMO c /com=1 /ter=k

2.1 Fichero de transmisión datos microcontrolador-ordenador

La memoria EEPROM que se va enviando al ordenador se guarda en este fichero.Los valores están expresados en hexadecimal y conforman una cadena de envíos (tabla). Acontinuación podemos observar unos cuantos valores obtenidos. El fichero completo estáincluido en el proyecto para poder observar tales valores.37 0 37 cc 038 0 38 c0 038 0 38 80 0

Puede observarse como el segundo y quinto campo son nulos, al igual que los bits 0,1, 4 y 5 del cuarto campo, ya que corresponden a la conversión de las medidas del termopary para este caso son nulas.

2.2 Fichero/Gráfica de temperatura ambiente

Con los datos del fichero de la temperatura ambiente la gráfica de la temperaturaambiente del termopar a la que se desarrollo el sistema es:

Page 223: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 5

2.3 Fichero/Gráfica de temperatura termopar

Con los datos del fichero de la temperatura del termopar, La gráfica de la temperaturadel termopar a la que se desarrollo el sistema es:

Page 224: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 6

Podemos observar como ambas gráficas son iguales, excepto en las muestras 250 y498 en las que el conversor guardó un bit en lugar de un cero como en las demás muestras yal no ser en entras muestras la tensión del termopar cero difieren ambas muestras. Si seobservan los ficheros (también adjuntados) podrá observarse como los valores de estos sonun poco diferentes, centésimas de grados, esto es debido a que al aplicar los polinomios secomete un error de esa magnitud.

3 Simulación termopar

El programa se ejecuta igual que en el apartado anterior

Como no disponemos de ningún termopar hemos introducido una tensiónprácticamente constante equivalente a la que podría producir un termopar. Los valores dedicha tensión, expresados en mV son:

Page 225: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 7

Está gráfica se ha obtenido de los datos almacenados en la memoria EEPROM quecorresponden a las medidas del termopar

3.1 Fichero de transmisión datos microcontrolador-ordenador

Unos cuantos de los valores del fichero son:36 d9 36 34 da36 da 36 a3 d936 da 36 87 d9

Aquí obviamente la tensión simulada como termopar no es cero

3.2 Fichero/Gráfica de temperatura ambiente

La gráfica de la temperatura ambiente a la que se realizo la simulación es:

Page 226: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 8

3.3 Fichero/Gráfica de temperatura termopar

La gráfica de la temperatura del termopar a la que se simulo el sistema es:

Page 227: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 2: JUEGO DE PRUEBAS Pag 9

Puede observarse como la tensión del termopar media unos 40,26 mV produciría unos975ºC pero al estar a una temperatura ambiente de unos 22ºC el termopar está a los 997ºCque muestra la gráfica.

4 Compensación Manual

Para probar el comando se ejecuta el programa TERMO con los siguientesparámetros:

TERMO m /ter=b

Si se introducen 22 ºC y 15 mV la temperatura a la que corresponden estascondiciones es

317.245496 ºC

Page 228: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

ANEXO 3: LISTADO DE PROGRAMAS

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 229: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 2

ÍNDICE

1 PROGRAMA ENSAMBLADOR................................................................................3

2 PROGRAMA C ..........................................................................................................16

Page 230: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 3

1 Programa Ensamblador

;****************************************************************************; PROGRAMA : termo.asm; Funcion : Programa data logger para termopar;;; Revision : 0.0 27/05/2003 Programa para : PIC16F873; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us; WDT : Deshabilitado Tipo de reloj : XT; Code Prot : OFF;****************************************************************************

List p=16F873 ;Se indica el modo de procesadorinclude "P16F873.INC" ;se incluye la definicion de los

;registros internos

DEVSEL_W equ b'10100000' ;Selección memoria M24x por bus I2C,WW_R equ 0 ;Bit de W/RBmes equ 0 ;Bit indica 1a/2a medida, EstadoAd_ok equ 1 ;Bit indica fin A/D, EstadoAdd2 equ 2 ;Bit indica 1/2 bytes @, EstadoT0_ok equ 3 ;Bit activa uso TMR0T1_ok equ 4 ;Bit activa uso TMR1Paro equ 5MaxReadA equ 0x81 ;Máximas lecturas con ACKMaxRead equ 0x80 ;Máximas lecturasMaxReadInc equ 0x80 ;Incremento de direccion en lecturaTAH equ 0x0B ;Valor inicial de TMR1HTAL equ 0xDB ;Valor inicial de TMR1LTT equ 0x63 ;Valor inicial de TMR0

Ini_NDIRH equ 0x00 ;Valor inicial de NDIRH(F8)Ini_NDIRL equ 0x01 ;Valor inicial de NDIRL(F0)Ini_NDIRLR equ 0x02 ;Valor inicial de NDIRL en lectura(FE)MaxPagW equ 0x03 ;Fin de pagina(F0)MaxRamPag equ 0x04 ;Fin de cola(EF)INCL equ 0x05 ;Incremento byte bajo @,1 pag(10)INCH equ 0x06 ;Incremento byte alto @(02)NTMR1 equ 0x07 ;Valor inicial de t1(FE)NTMR0 equ 0x08 ;Valor inicial de t0(FF)

SALVAW equ 0x20 ;Guarda W en la IRQ, tambien @ 0xA0SALVASTATUS equ 0x21 ;Guarda STATUS en la IRQDATA_EE_ADDR equ 0x22 ;Direccion de la memoria EEPROM interna a escribirDATA_EE_DATA equ 0x23 ;Dato a escribir en la memoria EEPROMLM351L equ 0x24 ;Byte bajo A/D LM35 1a medidaAUX equ 0x24 ;Variable auxiliar para asignar el bit Add2,1 usoTERMO1L equ 0x25 ;Byte bajo A/D termopar 1a medidaLM352L equ 0x26 ;Byte bajo A/D LM35 2a medidaTERMO2L equ 0x27 ;Byte bajo A/D termopar 2a medida

Page 231: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 4

Estado equ 0x28 ;Bits: Ad_ok, Bmes, Add2Index equ 0x29 ;Indice de la colaDEVSEL equ 0x2A ;Selector de dispositivo,E2PROM 2 bytes direccionDIRH equ 0x2B ;Byte alto @ EEPROM M24xDIRL equ 0x2C ;Byte bajo @ EEPROM M24xNDIRH equ 0x2D ;Incrementos byte alto EEPROM M24xNDIRL equ 0x2E ;Incrementos byte bajo EEPROM M24xt0 equ 0x2F ;Contador eventos TMR0t1 equ 0x30 ;Contador eventos TMR1DIRPAG equ 0x31 ;Inicio de la cola en el banco 0INIBANK2 equ 0xA1 ;Inicio de la cola en el banco 1

;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>

ORG 0x00 ;Inicio en el Vector de Reset

goto Inicio ;Va a la primera instruccion del;programa

;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>

ORG 0x04 ;Inicio del vector de interrupcion

INTER movwf SALVAW ;Salva Wswapf STATUS,W ;Invierte STATUS --> Wclrf STATUS ;Banco 0, borra IRP,RP1,RP0movwf SALVASTATUS ;Salva STATUS

;No se guarda el PCLATH,solo se usa la pagina 1 de memoria de programa

Timer_0 btfss INTCON,T0IF ;Interrupcion por TMR0?goto Timer_1btfss Estado,T0_ok ;o solo overflow flag?goto Timer_1bcf Estado,T0_ok ;No hacer caso del flag TMR0bsf Estado,T1_ok ;Hacer caso del flag TMR1bcf INTCON,T0IE ;Desactiva irq TMR0bcf PIR1,TMR1IF ;Repone Flag TMR1bsf STATUS,RP0 ;Selecciona banco 1bsf PIE1,TMR1IE ;Activa irq TMR1bcf STATUS,RP0 ;Selecciona banco 0bsf ADCON0,GO ;Inicia la conversion A/Dgoto Restaura_INT

Timer_1 btfss PIR1,TMR1IF ;Interrupcion por TMR1?goto ADCbtfss Estado,T1_okgoto ADCincfsz t1,F ;tiempo completado ?goto Restaura_INTmovlw NTMR1 ;Repone contador TMR1call Read_EEmovwf t1bcf Estado,T1_ok ;No hacer caso del flag TMR1

Page 232: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 5

bsf Estado,T0_ok ;Hacer caso del flag TMR0bsf STATUS,RP0 ;Selecciona banco 1bcf PIE1,TMR1IE ;Desactiva irq TMR1bcf INTCON,T0IF ;Repone Flagbsf INTCON,T0IE ;Activa irq TMR0bcf STATUS,RP0 ;Selecciona banco 0bsf ADCON0,GO ;Inicia la conversion A/Dgoto Restaura_INT

ADC btfss PIR1,ADIF ;¿Interrupcion por conversion?goto Receptbcf PIR1,ADIF ;Si. Reponer Flagbsf Estado,Ad_ok ;Datos listosgoto Restaura_INT

Recept btfss PIR1,RCIF ;¿Interrupcion por recepcion?goto Restaura_INT ;No. Falsa interrupcionbcf PIR1,RCIF ;Si. Reponer Flagmovf RCREG,W ;Lectura dato recibidomovwf DATA_EE_DATA ;Guardar EEPROMcall Write_EEincf DATA_EE_ADDR,F ;Incrementar direccion

Restaura_INT swapf SALVASTATUS,W ;Invierte STATUS --> Wmovwf STATUS ;Restaura STATUSswapf SALVAW,F ;Invierte --> Fswapf SALVAW,W ;Restaura Wbsf INTCON,GIEretfie ;Retornça habilitando todas las interrupciones

;<<<<<<----------------- LECTURA DE EEPROM INTERNA ------------------->>>>>>>

Read_EE bsf STATUS,RP1 ;Bank 2movwf EEADR ;Load Addressbsf STATUS,RP0 ;Bank 3bcf EECON1,EEPGD ;Point to DATA Memorybsf EECON1,RD ;EEPROM Readbcf STATUS,RP0 ;Bank 2movf EEDATA,W ;W=EEDATAbcf STATUS,RP1 ;Bank 0return

;<<<<<<----------------- ESCRITURA DE EEPROM INTERNA ----------------->>>>>>>

Write_EE movf DATA_EE_ADDR,W ;Load Addressbsf STATUS,RP1 ;Bank 2movwf EEADRbcf STATUS,RP1 ;Bank 0movf DATA_EE_DATA,W ;Load Databsf STATUS,RP1 ;Bank 2movwf EEDATAbsf STATUS,RP0 ;Bank 3bcf EECON1,EEPGD ;Point to DATA Memorybsf EECON1,WREN ;Enable writesbcf INTCON,GIE ;Disable interrupts

Page 233: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 6

movlw 0x55 ;Required Sequencemovwf EECON2movlw 0xAAmovwf EECON2bsf EECON1,WR

bsf INTCON,GIE ;Enable interruptsbcf STATUS,RP0bcf STATUS,RP1 ;Bank 0

Escrito btfss PIR2,EEIF ;Wait for signal write completegoto Escritobsf STATUS,RP0bsf STATUS,RP1 ;Bank 3bcf EECON1,WREN ;Disable writesbcf STATUS,RP0bcf STATUS,RP1 ;Bank 0return

;<<<<<<-------------------- SECUENCIA START I2C ---------------------->>>>>>>

Start bcf PIR1,SSPIF ;Borra señalizador operacion I2CBsf STATUS,RP0bsf SSPCON2,SEN ;Inicia secuencia de startbcf STATUS,RP0

FinStart btfss PIR1,SSPIF ;Espera a que acabe la secuenciaGoto FinStartreturn

;<<<<<<------------------- SECUENCIA RESTART I2C --------------------->>>>>>>

Restart bcf PIR1,SSPIF ;Borra señalizador operacion I2CBsf STATUS,RP0bsf SSPCON2,RSEN ;Inicia secuencia de restartbcf STATUS,RP0

FinRestart btfss PIR1,SSPIF ;Espera a que acabe la secuenciaGoto FinRestartreturn

;<<<<<<--------------------- SECUENCIA STOP I2C ---------------------->>>>>>>

Stop bcf PIR1,SSPIF ;Borra señalizador operacion I2CBsf STATUS,RP0Bsf SSPCON2,PEN ;Inicia secuencia de stopBcf STATUS,RP0

FinStop btfss PIR1,SSPIF ;Espera a que acabe la secuenciaGoto FinStopreturn

Send bcf PIR1,SSPIF ;Borra señalizador operacion I2CMovwf SSPBUF ;Envia dato

FinSend btfss PIR1,SSPIF ;Espera ACKGoto FinSendreturn

Page 234: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 7

;<<<<<<----------------- SECUENCIA LECTURA I2C CON ACK --------------->>>>>>>

Read bcf PIR1,SSPIF ;Borra señalizador operacion I2CBsf STATUS,RP0bsf SSPCON2,RCEN ;Inicia secuencia de lecturabcf STATUS,RP0

FinRead btfss PIR1,SSPIF ;Espera datoGoto FinReadbcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bsf SSPCON2,ACKDT ;Si ACKbsf SSPCON2,ACKEN ;Inicia secuencia de ACKbcf STATUS,RP0

FinNAck btfss PIR1,SSPIF ;Espera a que acabe la secuenciaGoto FinNAckmovf SSPBUF,W ;Dato listo en Wreturn

;<<<<<<----------------- SECUENCIA LECTURA I2C SIN ACK --------------->>>>>>>

ReadAck bcf PIR1,SSPIF ;Borra señalizador operacion I2CBsf STATUS,RP0bsf SSPCON2,RCEN ;Inicia secuencia de lecturabcf STATUS,RP0

FinReadAck btfss PIR1,SSPIF ;Espera datoGoto FinReadAckbcf PIR1,SSPIF ;Borra señalizador operacion I2Cbsf STATUS,RP0bcf SSPCON2,ACKDT ;No ACKbsf SSPCON2,ACKEN ;Inicia secuencia de ACKbcf STATUS,RP0

FinAck btfss PIR1,SSPIF ;Espera a que acabe la secuenciaGoto FinAckmovf SSPBUF,W ;Dato listo en Wreturn

;<<<<<<----------------- TEMPORIZA --------------->>>>>>>

Temporiza bcf STATUS,RP0 ;Selecciona banco 0movlw NTMR0 ;Inicializa cuentacall Read_EEmovwf t0incfsz to,F ;Cuenta es 0?goto Delay_20mSreturn

Delay_20mS bcf INTCON,T0IF ;Espera retardoDelay btfss INTCON,T0IF ;tiempo cumplido ?

goto Delayincfsz t0,F ;cuenta acabada ?goto Delay_20mSreturn

;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>

Inicio bcf STATUS,RP1

Page 235: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 8

bsf STATUS,RP0 ;Bank 1movlw b'00000100' ;Configurar E/S ana,digmovwf ADCON1clrf TRISB ;Configurar E/S portsmovlw b'10011000'movwf TRISCmovlw b'00110111'movwf TRISAmovlw b'11000110' ;preescaler de 128 a TMR0movwf OPTION_REG

Inii2c movlw b'10000000' ;Inicializa uso I2Cmovwf SSPSTATmovlw .9 ;Velocidad I2Cmovwf SSPADDbcf STATUS,RP0movlw b'00101000'movwf SSPCON ; SSPEN, clock=Fosc/4(SPPADD+1)

Ini_USART bsf STATUS,RP0 ;Selecciona banco 1bsf TXSTA,BRGH ;Velocidad Altamovlw .25 ;9600 bpsmovwf SPBRGbcf TXSTA,SYNC ;Comunicacion asincronabcf STATUS,RP0 ;Selecciona banco 0bsf RCSTA,SPEN ;USART activada

;<<<<<<--------------------- SELECCION OPERACION --------------------->>>>>>>

M_P btfss PORTA,2 ;Control Pulsadoresgoto M_P

Conf btfss PORTA,4 ;Transmision/Adquisiciongoto No_Pgoto Ini_Recep ;goto sobrante

No_P movlw INCH ;2 bytes de direcciones?call Read_EEmovwf AUX ;Si incremento alto es 2?btfss AUX,1goto Addres2

Addres1 bcf Estado,Add2 ;si,1 byte direcciongoto TrAdq

Addres2 bsf Estado,Add2 ;no,2 bytes direcciones

TrAdq btfsc PORTA,5 ;Transmision/AdquisicionGoto Ini_Lec_Tr

;<<<<<<---------------------- INICIO ADQUISICION --------------------->>>>>>>;<<<<<<--------------------- INICIALIZACIONES ADQ -------------------->>>>>>>

Ad_1 bsf PORTC,1 ;Led Adquisicion

AD_Add btfss Estado,Add2 ;2 bytes direccion ?

Page 236: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 9

goto DirhDevselSoloDevsel movlw DEVSEL_W ;Bits direccion I2C

movwf DEVSELclrf DIRH ;direccion alta=0goto Ini_AD

DirhDevsel movlw DEVSEL_W ;Bits direccion I2C y bits direccion altamovwf DIRH ;de la memoria EEPROM

Ini_AD bcf Estado,Bmes ;Medida 0bcf Estado,Ad_ok ;No adquisiciones producidasbcf Estado,T0_ok ;No hacer caso del flag TMR0bsf Estado,T1_ok ;Hacer caso del flag TMR1bcf ADCON0,CHS0;Canal 0movlw DIRPAG ;Direccionamiento indirecto para cola que se pasaramovwf FSR ;a la EEPROMmovlw MaxRamPag ;Contador de bytes en la colacall Read_EEmovwf Index

ADon movlw b'01000001' ;Fad=Fosc/8, ADONmovwf ADCON0

Ini_TMR movlw NTMR1 ;Inicializa contador TMR1call Read_EEmovwf t1movlw NTMR0 ;Inicializa contador TMR1call Read_EEmovwf t0clrf TMR1L ;Aseguramos que TMR1H tiene el valor deseadomovlw TAH ;Contar 0,5 s TMR1movwf TMR1Hmovlw TALmovwf TMR1Lmovlw TT ;Contar 20 ms TMR0movwf TMR0movlw b'00110001' ;TMR1 ON preescale 1:8movwf T1CON

Ini_I_A bsf STATUS,RP0 ;Selecciona banco 1movlw b'01000001' ;ADIE TMR1IEmovwf PIE1movlw b'11000000' ;Hablita int globales(GIE) y periferica(PIE)movwf INTCONbcf STATUS,RP0 ;Selecciona banco 0

;<<<<<<---------------------------- BUCLES --------------------------->>>>>>>

Ini_BAD movlw Ini_NDIRH ;Inicializamos las variablescall Read_EEmovwf NDIRH ;Contador de incrementos del byte direccion alto

BdirH movlw Ini_NDIRL ;La incializacion byte contador direccion bajocall Read_EE ;Termopar->Medida 0 o 1?movwf NDIRLclrf DIRL ;byte de direccion baja

BdirL btfss Estado,Ad_ok ;Interrupcion acontecida?

Page 237: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 10

Goto BdirLbcf Estado,Ad_ok ;Prepara la proxima espera

;<<<<<<----------------- RECONOCIMIENTO CANAL,MEDIDA ----------------->>>>>>>

LM35_Termo btfsc ADCON0,CHS0;LM35 o termopar?goto Termopar

LM35_12 btfsc Estado,Bmes ;LM35-> Medida 0 o 1?goto LM35_2

LM35_1 bsf ADCON0,CHS0;Proximo canal 1 para completar medicion Tªbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf LM351Lgoto Cola

LM35_2 bsf ADCON0,CHS0;Proximo canal 1 para completar medidicion Tªbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf LM352Lgoto Cola

Termopar btfsc Estado,Bmesgoto Termopar2

Termopar1 bcf ADCON0,CHS0;Proximo canal 0bsf Estado,Bmes ;Proxima medida 1, las 2 medidas de la medicion OKbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf TERMO1Lgoto Cola

Termopar2 bcf ADCON0,CHS0;Proximo canal 0bcf Estado,Bmes ;Proxima medida 0, las 2 medidas de la medicion OKbsf STATUS,RP0 ;Guarda byte bajo de la conversionmovf ADRESL,W ;para unirlos en un solo bytebcf STATUS,RP0movwf TERMO2L

;<<<<<<---------------------- UNION BITS BAJOS ---------------------->>>>>>>

L_Byte bcf STATUS,C ;No carryrrf TERMO2L,F ;Une los 2 bits bajos de la conversion en un byterrf TERMO2L,F ;En el extremo derecha va el termopar medida 2rrf TERMO2L,F ;por eso se rota el byte 6 veces a dcharrf TERMO2L,Frrf TERMO2L,Frrf TERMO2L,Wandlw 0x03 ;Elimina bits basuramovwf TERMO2L ;bits colocadosrrf LM352L,F ;Coloca el LM35 medida 2rrf LM352L,F ;por tanto 4 rotaciones

Page 238: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 11

rrf LM352L,Frrf LM352L,Wandlw 0x0C ;Elimina bits basuraaddwf TERMO2L,F ;se suma, colocandose junto con las anterioresrrf TERMO1L,F ;coloca el termopar medida 1rrf TERMO1L,W ;2 rotacionesandlw 0x30 ;Elimina bits basuraaddwf TERMO2L,F ;suma con las anteriores bits rotadosmovf LM351L,W ;En el extremo izda el LM35 medida 1, no rotaandlw 0xC0 ;Elimina bits basuraaddwf TERMO2L,F ;se suman y la union se completa

;<<<<<<-------------------------- A LA COLA -------------------------->>>>>>>

L_Cola movf TERMO2L,W ;El byte se pasa a la colamovwf INDFincf FSR,Fincf Index,F

Cola movf ADRESH,W ;Los bytes altos resultantes de la conversionmovwf INDF ;se llevan a la colaincf FSR,Fincfsz Index,F ;La cola esta llena?goto Lleno

;<<<<<<-------------------------- COLA=MAX --------------------------->>>>>>>

W_E2PROM movlw DIRPAG ;Los datos pasan a la memoria EEPROMmovwf FSR ;respetando el orden en la colamovlw MaxPagWcall Read_EEmovwf Indexcall Start ;Se escribe en modo paginabtfss Estado,Add2 ;2 bytes direccion ?goto W_Addresmovf DEVSEL,W ;Selector dispositivocall Send

W_Addres movf DIRH,W ;DEVSEL o direccion altaCall Sendmovf DIRL,W ;Direccion bajacall Send

J_BW_E2PROM movf INDF,W ;bytes de datoscall Sendincf FSR,Fincfsz Index,F ;hasta completar la pagina de escrituragoto J_BW_E2PROMcall Stop

Last_No_Pasa movf INDF,W ;El ultimo no ha podido entrar el la EEPROMmovwf DIRPAG ;Sera el primero de la nueva colamovlw DIRPAGmovwf FSRincf FSR,F ;la cola vuelve a empezarmovlw MaxPagWcall Read_EE

Page 239: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 12

movwf Indexgoto FinB

Lleno incfsz Index,W ;pueden entrar los de la cola?goto BdirL ;no, que siga llenandose

;<<<<<<-------------------------- COLA=PAG --------------------------->>>>>>>

Vacia movlw DIRPAG ;Si,los datos pasan a la memoria EEPROMmovwf FSR ;Se repite el trozo de escritura en la E2PROMmovlw MaxPagWcall Read_EEmovwf Indexcall Startbtfss Estado,Add2goto V_Addresmovf DEVSEL,Wcall Send

V_Addres movf DIRH,WCall Sendmovf DIRL,Wcall Send

BW_E2PROM movf INDF,Wcall Sendincf FSR,Fincfsz Index,Fgoto BW_E2PROMcall Stop

New_Cola movlw DIRPAG ;la cola vuelve a iniciarse de momento vaciamovwf FSRmovlw MaxRamPagcall Read_EEmovwf Indexgoto FinB

;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>

FinB movlw INCL ;Se incrementa la pagina de escrituracall Read_EEaddwf DIRL,Fincfsz NDIRL,F ;se ha sobrepasado el tope de direcciones por byte bajo?goto BdirLmovlw INCH ;Se incrementa la direccion altacall Read_EEaddwf DIRH,F

Incremento incfsz NDIRH,F ;Se ha completado la memoria Goto BdirH

Rest_Adq bsf STATUS,RP0 ;Selecciona banco 1clrf INTCON ;Borra GIE,PIE,T0IEbcf PIE1,TMR1IE ;Desactiva la interrupcion TIMER 1bcf PIE1,ADIE ;Desactiva la interrupcion A/Dbcf STATUS,RP0 ;Selecciona banco 0

Page 240: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 13

bcf T1CON,TMR1ON ;Desactiva el TIMER 1bcf ADCON0,ADON ;Desactiva el A/Dbcf PORTC,1 ;Fin Adquisiciongoto M_P ;Vuelve a la espera de un proximo comando

;<<<<<<------------------------ FIN ADQUISICION ---------------------->>>>>>>;<<<<<<----------------------- INCIO TRANSMISION --------------------->>>>>>>;<<<<<<--------------------- INICIALIZACIONES TRM -------------------->>>>>>>

Ini_Lec_Tr bsf PORTC,2 ;Led TransmisionT_Adquirir movlw TT

movwf TMR0TRX_EN bsf STATUS,RP0 ;Selecciona banco 1

Bsf TXSTA,TXEN ;Activa la transmisionBcf STATUS,RP0 ;Selecciona banco 0

I_T_C movlw Ini_NDIRH ;Inicializa las variablescall Read_EE ;Contador de incrementos del byte direccion altomovwf NDIRH

LT_Add btfss Estado,Add2 ;2 bytes direccion ?goto LT_DD

LT_Dev movlw DEVSEL_W ;Bits direccion I2Cmovwf DEVSELclrf DIRH ;direccion alta=0goto BdirH_R

LT_DD movlw DEVSEL_W ;Bits direccion I2C y bits direccion altamovwf DIRH ;de la memoria EEPROM

;<<<<<<---------------------------- BUCLES --------------------------->>>>>>>

BdirH_R clrf DIRL ;direccion bajamovlw Ini_NDIRLR ;Contador de incrementos del byte direccion bajocall Read_EE ;para una lectura de E2PROMmovwf NDIRL

BdirL_R movlw DIRPAG ;Lectura secuencial de datosmovwf FSR ;los datos se guardan en una cola para enviarlosmovlw MaxReadAmovwf Indexbcf DIRH,W_R ;Primero se realiza una falsa escritura

;<<<<<<---------------------------- EE->RAM -------------------------->>>>>>>

R_E2PROM call Start ;Para indicar la direccion a leerbtfss Estado,Add2 ;2 bytes direccion ?goto R_Addresmovf DEVSEL,W ;Selector dispositivocall Send

R_Addres movf DIRH,W ;DEVSEL o direccion altaCall Sendmovf DIRL,Wcall Send

Seq_R call Restart ;Se relizan las lecturas secuencialmentebtfss Estado,Add2 ;donde el incremento de direccion es automatico

Page 241: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 14

goto R_DIRH ;2 bytes direccion ?R_DEVSEL bsf DEVSEL,W_R ;lectura en el Selector dispositivo

movf DEVSEL,Wcall Sendgoto BR_E2PROM

R_DIRH bsf DIRH,W_R ;lectura en la direccion altamovf DIRH,Wcall Send

BR_E2PROM call ReadAck ;Se leen los datos y se envia el ACKmovwf INDF ;Se guardan en la colaincf FSR,Fbtfsc FSR,7 ;La cola ha llenado el banco 1?goto Banco2

Banco1 incfsz Index,F ;avanza la cola,esta a punto de llenarse?goto BR_E2PROMgoto Fin_R

Banco2 incf Index,F ;no nos olvidamos que la cola ha avanzadomovlw INIBANK2 ;se empiezan a colocar los datos en el banco 2movwf FSR

B2R call ReadAck ;Se leen los datos y se envia el ACKmovwf INDF ;se siguen guardadon los datos ahora en el banco 2incf FSR,Fincfsz Index,F ;sigue avanzando,esta a punto de llenarse?goto B2R

Fin_R call Read ;se llena, y se finaliza la lecturamovwf INDFcall Stop

;<<<<<<---------------------------- RAM->RS -------------------------->>>>>>>

Transmision movlw DIRPAG ;Se transmiten los datos de la colamovwf FSRmovlw MaxReadmovwf Index

Trmt128 bcf PIR1,TXIF ;Se borra el señalizador de escritura para empezarmovf INDF,W ;se transmite el datomovwf TXREG

W_Tras btfss PIR1,TXIF ;Encuesta para el final de la transmisionGoto W_Trascall Temporiza ;Evita fallos transmisión esperando un tiempoincf FSR,F ;se ha llegado al banco 1?btfsc FSR,7goto Banco2T

Banco1T incfsz Index,F ;Reduce la colagoto Trmt128goto FinBR

Banco2T incf Index,F ;no nos olvidamos que la cola se ha reducidomovlw INIBANK2 ;empiezan a salir los datos en el banco 2movwf FSR

B2T movf INDF,W ;se transmite el datomovwf TXREG

Page 242: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 15

call Temporiza ;Evita fallos transmisiónW_Tras2 btfss PIR1,TXIF

Goto W_Tras2incf FSR,Fincfsz Index,F ;se ha vaciado la cola?goto B2T

;<<<<<<-------------------- FIN BUCLES,RESTAURAR --------------------->>>>>>>

FinBR movlw MaxReadInc ;se icrementa la direccion bajaaddwf DIRL,Fincfsz NDIRL,F ;se ha desbordado?goto BdirL_Rmovlw INCH ;Se incrementa la direccion altacall Read_EEaddwf DIRH,Fincfsz NDIRH,F ;se ha trasmitido todo?Goto BdirH_R

Fin bsf STATUS,RP0 ;Selecciona banco 1Bcf TXSTA,TXEN ;Desactiva la transmisionbcf STATUS,RP0 ;Selecciona banco 0bcf PORTC,2 ;Finaliza la trasmisisiongoto M_P ;Vuelve a la espera de un proximo comando

;<<<<<<------------------------ FIN TRANSMISION ---------------------->>>>>>>;<<<<<<-------------------------- RECEPCION -------------------------->>>>>>>

Ini_Recep bsf PORTC,0 ;Led Configuracionclrf DATA_EE_ADDR ;Direccion EE=0bsf RCSTA,CREN ;Recepción contínuabsf STATUS,RP0 ;Selecciona banco 1movlw b'11000000' ;Hablita int globales(GIE) y periferica(PIE)movwf INTCONbsf PIE1,RCIE ;Activa la interrupcion RXbcf STATUS,RP0 ;Selecciona banco 0

Programacion movf DATA_EE_ADDR,W ;Espera hasta que se reciban lassublw 0x09 ;10 direccionesbtfss STATUS,Zgoto Programacion

No_Recep bcf RCSTA,CREN ;Fin recepcionBsf STATUS,RP0 ;Selecciona banco 1clrf INTCON ;Desactiva las interrupcionesbcf PIE1,RCIE ;Desactiva la interrupcion RXbcf STATUS,RP0 ;Selecciona banco 0bcf PORTC,0 ;Fin Configuraciongoto M_P

Final goto Final ;No se ejecutaEnd ;Fin del programa fuente

Page 243: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 16

2 Programa C

/* */ /* Name : Programa Data Logger para termopar */ /* Written By : Pablo Parrado */ /* Date : 27/05/03 */ /* */

//Definiciones#include <dos.h>#include <stdio.h>#include <conio.h>#include <math.h>

#define INTVECT_Time 0x08 /* Timer 0 IRQ */#define TIMER0 0x40 /* Adress Timer 0*/#define control8254 TIMER0+3 /*Control Timer 0*/

#define max_coef 15 /*Maximo coefientes polinomicos para calculo termopar*/

typedef unsigned char uchar;

typedef struct data_EE //Se agrupan los bytes a enviar al data logger unsigned char Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR; unsigned char MaxPagW,MaxRamPag,INCL,INCH,NTMR1,NTMR0; mem_EE;typedef struct param_int //Se agrupan los parametros internos de compensacion float Vcc,Voff,gao,gai; conf_in;

//Constantesconst float escala=0.5;//Escala TMR1 del data loggerconst int max_times=5; //Veces que se repite la IRQ 0 para dar alarma

//Variables Globalesint PORT1; //Registro de direccion de la UARTint INTVECT; //Registro de direccion del PIC(8259)int bufferin = 0; //Principio de la colaint bufferout = 0; //Final de la colauchar buffer[1025]; //Cola donde se guardan los bytes recibidosint temperatura=-1; //Identifica la secuencia de datosint times=0; //Controla el retardo para dar alarmaint envio=0; //Alarma producida realizar envio

//Funcionesvoid interrupt (*oldport1isr)(); /*Punteros a ISR*/void interrupt (*oldtimer0isr)();

void interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */ int c; do c = inportb(PORT1 + 5); //Si hay nuevo caracter

Page 244: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 17

if (c & 1) buffer[bufferin] = inportb(PORT1); //A la cola cirular temperatura++; //Identifica la secuencia de datos bufferin++; if (temperatura==5) temperatura = 0; if (bufferin == 1024) bufferin = 0;

while (c & 1); outportb(0x20,0x20);

void interrupt TIMERINT() /* Interrupt Service Routine (ISR) for TIMER 0 */ times++; //Incrementa el contador if (times==max_times) //Si se llega al valor prefijado envio=1; //Realizar un envio times=0; //Reinicializar el contador outportb(0x20,0x20);

int ini_usart(int com) /*Inicializa los registros internos de la USART permitiendo su uso, e interrupcion*/

uchar PIC; int err=1;

switch (com) //Direcciones de registros segun puerto serie usado case 1:

PORT1=0x3F8;INTVECT=0x0C;PIC=0xEF;break;

case 2:PORT1=0x2F8;INTVECT=0x0B;PIC=0xF7;break;

case 3:PORT1=0x3E8;INTVECT=0x0C;PIC=0xEF;break;

case 4:PORT1=0x2E8;INTVECT=0x0B;PIC=0xF7;break;

default:err=0;

if (err)

Page 245: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 18

outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */

oldport1isr = getvect(INTVECT); /* Save old Interrupt Vector of later recovery */

setvect(INTVECT, PORT1INT);

/* PORT 1 - Communication Settings */

outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */ outportb(PORT1 + 0 , 0x0C); /* Set Baud rate - Divisor Latch Low Byte */

/* Default 0x03 = 38,400 BPS */ /* 0x01 = 115,200 BPS */ /* 0x02 = 57,600 BPS */ /* 0x06 = 19,200 BPS */ /* 0x0C = 9,600 BPS */ /* 0x18 = 4,800 BPS */ /* 0x30 = 2,400 BPS */

outportb(PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch High Byte */ outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */ outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */ outportb(PORT1 + 4 , 0x08); /* OUT2 */

outportb(0x21,(inportb(0x21) & PIC)); /* Set Programmable Interrupt Controller */

outportb(PORT1 + 1 , 0x01); /* Interrupt when data received */ return(err);void ini_timer(void) /*Inicializa los registros internos del TMR

permitiendo su uso, e interrupcion*/ oldtimer0isr = getvect(INTVECT_Time); /* Save old Interrupt Vector of later

recovery */ setvect(INTVECT_Time, TIMERINT); outportb(control8254,0x34); /* Modo operacion en 8254*/ outportb(TIMER0,0x01); /* byte alto del timer 0*/ outportb(TIMER0,0xFF); /* byte bajo del timer 0*/ outportb(0x21,(inportb(0x21) & 0xFE)); /* Set Programmable Interrupt

Controller */

int fin_usart(int com) /*Fin uso de la USART*/

uchar PIC; int err=1;

switch (com) //Segun el puerto se dishibiran una u otra irq case 1:

PIC=0x10;break;

case 2:PIC=0x08;

Page 246: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 19

break; case 3:

PIC=0x10;break;

case 4:PIC=0x08;break;

default:err=0;

if (err) outportb(PORT1 + 1 , 0); /* Turn off interrupts - Port1 */ outportb(0x21,(inportb(0x21) | PIC)); setvect(INTVECT, oldport1isr); /* Restore old interrupt vector */ return(err);

void fin_timer(void) /*Fin uso del TMR*/ outportb(0x21,(inportb(0x21) | 0x01)); /* Turn off interrupts - TMR */ setvect(INTVECT_Time, oldtimer0isr); /* Restore old interrupt vector */

int ctermo(char termo,double num,double *c,int *n,int inv)/*Devuelve los coeficientes del termopar usado */int ok=1; //Devuelve 1 si el termopar es conocido

switch (termo) case 'b':

if (!inv)/************************************* This section contains coefficients for type B thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* 0.000 to 630.615* 630.615 to 1820.000************************************/

if ((num>=0.000)&&(num<=630.615)) // min<t<max *n=6; *(c+0)=0.000000000000E+00; //Valores de los coeficientes *(c+1)=-0.246508183460E-03; *(c+2)=0.590404211710E-05; *(c+3)=-0.132579316360E-08;

Page 247: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 20

*(c+4)=0.156682919010E-11; *(c+5)=-0.169445292400E-14; *(c+6)=0.629903470940E-18; elseif ((num>=630.615)&&(num<=1820.000)) // min<t<max *n=8; *(c+0)=-0.389381686210E+01; *(c+1)=0.285717474700E-01; *(c+2)=-0.848851047850E-04; *(c+3)=0.157852801640E-06; *(c+4)=-0.168353448640E-09; *(c+5)=0.111097940130E-12; *(c+6)=-0.445154310330E-16; *(c+7)=0.989756408210E-20; *(c+8)=-0.937913302890E-24; else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type B thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* 250. to 700. 0.291 to 2.431 -0.02 to 0.03* 700. to 1800. 2.431 to 13.820 -0.01 to 0.02********************************************************/elseif ((num>=0.291)&&(num<=2.431)) // min<E<max *n=8; *(c+0)=9.8423321E+01; *(c+1)=6.9971500E+02; *(c+2)=-8.4765304E+02; *(c+3)=1.0052644E+03; *(c+4)=-8.3345952E+02; *(c+5)= 4.5508542E+02; *(c+6)=-1.5523037E+02; *(c+7)=2.9886750E+01; *(c+8)=-2.4742860E+00; elseif ((num>=2.431)&&(num<=13.820)) // min<E<max

Page 248: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 21

*n=8; *(c+0)=2.1315071E+02; *(c+1)=2.8510504E+02; *(c+2)=-5.2742887E+01; *(c+3)=9.9160804E+00; *(c+4)=-1.2965303E+00; *(c+5)=1.1195870E-01; *(c+6)=-6.0625199E-03; *(c+7)=1.8661696E-04; *(c+8)=-2.4878585E-06; else ok=0;

break; case 'e':if (!inv)/************************************* This section contains coefficients for type E thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant

* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1000.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<t<max *n=13; *(c+0)=0.000000000000E+00; *(c+1)=0.586655087080E-01; *(c+2)=0.454109771240E-04; *(c+3)=-0.779980486860E-06; *(c+4)=-0.258001608430E-07; *(c+5)=-0.594525830570E-09; *(c+6)=-0.932140586670E-11; *(c+7)=-0.102876055340E-12; *(c+8)=-0.803701236210E-15; *(c+9)=-0.439794973910E-17; *(c+10)=-0.164147763550E-19; *(c+11)=-0.396736195160E-22; *(c+12)=-0.558273287210E-25; *(c+13)=-0.346578420130E-28; if ((num>=0.000)&&(num<=1000.000)) // min<t<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.586655087100E-01; *(c+2)=0.450322755820E-04; *(c+3)=0.289084072120E-07; *(c+4)=-0.330568966520E-09;

Page 249: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 22

*(c+5)=0.650244032700E-12; *(c+6)=-0.191974955040E-15;

*(c+7)=-0.125366004970E-17; *(c+8)=0.214892175690E-20; *(c+9)=-0.143880417820E-23; *(c+10)=0.359608994810E-27; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type E thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* Range range range* (°C) (mV) (° C)* -200. to 0. -8.825 to 0.000 -0.01 to 0.03* 0. to 1000. 0.000 to 76.373 -0.02 to 0.02********************************************************/elseif ((num>=-8.825)&&(num<=0.000)) // min<E<max *n=8; *(c+0)=0.0000000E+00; *(c+1)=1.6977288E+01; *(c+2)=-4.3514970E-01; *(c+3)=-1.5859697E-01; *(c+4)=-9.2502871E-02; *(c+5)=-2.6084314E-02; *(c+6)=-4.1360199E-03; *(c+7)=-3.4034030E-04; *(c+8)=-1.1564890E-05; *(c+9)=0.0000000E+00; elseif ((num>=0.000)&&(num<=76.373)) // min<E<max *n=9; *(c+0)=0.0000000E+00; *(c+1)=1.7057035E+01; *(c+2)=-2.3301759E-01; *(c+3)=6.5435585E-03; *(c+4)=-7.3562749E-05; *(c+5)=-1.7896001E-06; *(c+6)=8.4036165E-08;

Page 250: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 23

*(c+7)=-1.3735879E-09; *(c+8)=1.0629823E-11; *(c+9)=-3.2447087E-14; else ok=0;

break; case 'j':if (!inv)/************************************* This section contains coefficients for type J thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant

* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -210.000 to 760.000* 760.000 to 1200.000************************************/if ((num>=-210.000)&&(num<=760.000)) // min<t<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.503811878150E-01; *(c+2)=0.304758369300E-04; *(c+3)=-0.856810657200E-07; *(c+4)=0.132281952950E-09; *(c+5)=-0.170529583370E-12; *(c+6)=0.209480906970E-15; *(c+7)=-0.125383953360E-18; *(c+8)=0.156317256970E-22; elseif ((num>=760.000)&&(num<=1200.000)) // min<t<max *n=5; *(c+0)=0.296456256810E+03; *(c+1)=-0.149761277860E+01; *(c+2)=0.317871039240E-02; *(c+3)=-0.318476867010E-05; *(c+4)=0.157208190040E-08; *(c+5)=-0.306913690560E-12; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type J thermocouples for the subranges of* temperature and voltage listed below. The range of errors of

* the approximate inverse function for each subrange is also given.

Page 251: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 24

* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.

** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -210. to 0. -8.095 to 0.000 -0.05 to 0.03* 0. to 760. 0.000 to 42.919 -0.04 to 0.04* 760. to 1200 42.919 to 69.553 -0.04 to 0.03********************************************************/elseif ((num>=-8.095)&&(num<=0.000)) // min<E<max *n=8; *(c+0)=0.0000000E+00; *(c+1)=1.9528268E+01; *(c+2)=-1.2286185E+00; *(c+3)=-1.0752178E+00; *(c+4)=-5.9086933E-01; *(c+5)=-1.7256713E-01; *(c+6)=-2.8131513E-02; *(c+7)=-2.3963370E-03; *(c+8)=-8.3823321E-05; elseif ((num>=0.000)&&(num<=42.919)) // min<E<max *n=7; *(c+0)=0.000000E+00; *(c+1)=1.978425E+01; *(c+2)=-2.001204E-01; *(c+3)=1.036969E-02; *(c+4)=-2.549687E-04; *(c+5)=3.585153E-06; *(c+6)= -5.344285E-08; *(c+7)=5.099890E-10; *(c+8)=0.000000E+00; elseif ((num>=42.919)&&(num<=69.553)) // min<E<max *n=5; *(c+0)=-3.11358187E+03; *(c+1)=3.00543684E+02; *(c+2)=-9.94773230E+00; *(c+3)=1.70276630E-01; *(c+4)=-1.43033468E-03; *(c+5)=4.73886084E-06; *(c+6)=0.00000000E+00; *(c+7)=0.00000000E+00;

Page 252: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 25

else ok=0;

break; case 'k':if (!inv)/************************************* This section contains coefficients for type K thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation below 0 °C is of the form* E = sum(i=0 to n) c_i t^i.** The equation above 0 °C is of the form* E = sum(i=0 to n) c_i t^i + a0 exp(a1 (t - a2)^2).** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1372.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<t<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.394501280250E-01; *(c+2)=0.236223735980E-04; *(c+3)=-0.328589067840E-06; *(c+4)=-0.499048287770E-08; *(c+5)=-0.675090591730E-10; *(c+6)=-0.574103274280E-12; *(c+7)=-0.310888728940E-14; *(c+8)=-0.104516093650E-16; *(c+9)=-0.198892668780E-19; *(c+10)=-0.163226974860E-22; elseif ((num>=0.000)&&(num<=1372.000)) // min<t<max *n=9; *(c+0)=-0.176004136860E-01; *(c+1)= 0.389212049750E-01; *(c+2)= 0.185587700320E-04; *(c+3)=-0.994575928740E-07; *(c+4)= 0.318409457190E-09; *(c+5)=-0.560728448890E-12; *(c+6)=0.560750590590E-15; *(c+7)=-0.320207200030E-18; *(c+8)=0.971511471520E-22; *(c+9)=-0.121047212750E-25; *(c+(*n)+1) = 0.118597600000E+00; *(c+(*n)+2) = -0.118343200000E-03; *(c+(*n)+3) = 0.126968600000E+03; else ok=0;

Page 253: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 26

/************************************* This section contains coefficients of approximate inverse* functions for type K thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -5.891 to 0.000 -0.02 to 0.04* 0. to 500. 0.000 to 20.644 -0.05 to 0.04* 500. to 1372. 20.644 to 54.886 -0.05 to 0.06********************************************************/elseif ((num>=-5.891)&&(num<=0.000)) // min<E<max *n=8; *(c+0)=0.0000000E+00; *(c+1)=2.5173462E+01; *(c+2)=-1.1662878E+00; *(c+3)=-1.0833638E+00; *(c+4)=-8.9773540E-01; *(c+5)=-3.7342377E-01; *(c+6)=-8.6632643E-02; *(c+7)=-1.0450598E-02; *(c+8)=-5.1920577E-04; *(c+9)=0.0000000E+00; elseif ((num>=0.000)&&(num<=20.644)) // min<E<max *n=9; *(c+0)=0.000000E+00; *(c+1)=2.508355E+01; *(c+2)=7.860106E-02; *(c+3)=-2.503131E-01; *(c+4)=8.315270E-02; *(c+5)=-1.228034E-02; *(c+6)=9.804036E-04; *(c+7)=-4.413030E-05; *(c+8)=1.057734E-06; *(c+9)=-1.052755E-08; elseif ((num>=20.644)&&(num<=54.886)) // min<E<max *n=6; *(c+0)=-1.318058E+02;

Page 254: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 27

*(c+1)=4.830222E+01; *(c+2)=-1.646031E+00; *(c+3)=5.464731E-02; *(c+4)=-9.650715E-04; *(c+5)=8.802193E-06; *(c+6)=-3.110810E-08; *(c+7)=0.000000E+00; *(c+8)=0.000000E+00; else ok=0;

break; case 'n':if (!inv)/************************************* This section contains coefficients for type N thermocouples for

* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1300.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<t<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.261591059620E-01; *(c+2)=0.109574842280E-04; *(c+3)=-0.938411115540E-07; *(c+4)=-0.464120397590E-10; *(c+5)=-0.263033577160E-11; *(c+6)=-0.226534380030E-13; *(c+7)=-0.760893007910E-16; *(c+8)=-0.934196678350E-19;elseif ((num>=0.000)&&(num<=1300.000)) // min<t<max *n=10; *(c+0)=0.000000000000E+00; *(c+1)=0.259293946010E-01; *(c+2)=0.157101418800E-04; *(c+3)=0.438256272370E-07; *(c+4)=-0.252611697940E-09; *(c+5)=0.643118193390E-12; *(c+6)=-0.100634715190E-14; *(c+7)=0.997453389920E-18; *(c+8)=-0.608632456070E-21; *(c+9)=0.208492293390E-24; *(c+10)=-0.306821961510E-28;

Page 255: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 28

else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type N thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -3.990 to 0.000 -0.02 to 0.03* 0. to 600. 0.000 to 20.613 -0.02 to 0.03* 600. to 1300. 20.613 to 47.513 -0.04 to 0.02********************************************************/elseif ((num>=-3.990)&&(num<=0.000)) // min<E<max *n=9; *(c+0)=0.0000000E+00; *(c+1)=3.8436847E+01; *(c+2)=1.1010485E+00; *(c+3)=5.2229312E+00; *(c+4)=7.2060525E+00; *(c+5)=5.8488586E+00; *(c+6)=2.7754916E+00; *(c+7)=7.7075166E-01; *(c+8)=1.1582665E-01; *(c+9)=7.3138868E-03; elseif ((num>=0.000)&&(num<=20.613)) // min<E<max *n=7; *(c+0)=0.00000E+00; *(c+1)=3.86896E+01; *(c+2)=-1.08267E+00; *(c+3)=4.70205E-02; *(c+4)=-2.12169E-06; *(c+5)=-1.17272E-04; *(c+6)=5.39280E-06; *(c+7)=-7.98156E-08; *(c+8)=0.00000E+00; *(c+9)=0.00000E+00; else

if ((num>=20.613)&&(num<=47.513)) // min<E<max *n=5;

Page 256: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 29

*(c+0)=1.972485E+01; *(c+1)=3.300943E+01; *(c+2)=-3.915159E-01; *(c+3)=9.855391E-03; *(c+4)=-1.274371E-04; *(c+5)=7.767022E-07; *(c+6)=0.000000E+00; else ok=0;

break; case 'r':if (!inv)/************************************* This section contains coefficients for type R thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************/

if ((num>=-50.000)&&(num<=1064.180)) // min<t<max *n=9; *(c+0)=0.000000000000E+00; *(c+1)=0.528961729765E-02; *(c+2)=0.139166589782E-04; *(c+3)=-0.238855693017E-07; *(c+4)=0.356916001063E-10; *(c+5)=-0.462347666298E-13; *(c+6)=0.500777441034E-16; *(c+7)=-0.373105886191E-19; *(c+8)=0.157716482367E-22; *(c+9)=-0.281038625251E-26; elseif ((num>=1064.180)&&(num<=1664.500)) // min<t<max *n=5; *(c+0)=0.295157925316E+01; *(c+1)=-0.252061251332E-02; *(c+2)=0.159564501865E-04; *(c+3)=-0.764085947576E-08; *(c+4)=0.205305291024E-11; *(c+5)=-0.293359668173E-15; elseif ((num>=1664.500)&&(num<=1768.100)) // min<t<max *n=4;

Page 257: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 30

*(c+0)=0.152232118209E+03; *(c+1)=-0.268819888545E+00; *(c+2)=0.171280280471E-03; *(c+3)=-0.345895706453E-07; *(c+4)=-0.934633971046E-14; else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type R thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,

* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -50. to 250. -0.226 to 1.923 -0.02 to 0.02* 250. to 1200. 1.923 to 13.228 -0.005 to 0.005* 1064. to 1664.5 11.361 to 19.739 -0.0005 to 0.001* 1664.5 to 1768.1 19.739 to 21.103 -0.001 to 0.002********************************************************/elseif ((num>=-0.226)&&(num<=1.923)) // min<E<max *n=10; *(c+0)=0.0000000E+00; *(c+1)=1.8891380E+02; *(c+2)=-9.3835290E+01; *(c+3)=1.3068619E+02; *(c+4)=-2.2703580E+02; *(c+5)=3.5145659E+02; *(c+6)=-3.8953900E+02; *(c+7)=2.8239471E+02; *(c+8)=-1.2607281E+02; *(c+9)=3.1353611E+01; *(c+10)=-3.3187769E+00; elseif ((num>=1.923)&&(num<=13.228)) // min<E<max *n=9; *(c+0)=1.334584505E+01; *(c+1)=1.472644573E+02; *(c+2)=-1.844024844E+01; *(c+3)=4.031129726E+00; *(c+4)=-6.249428360E-01; *(c+5)=6.468412046E-02; *(c+6)=-4.458750426E-03;

Page 258: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 31

*(c+7)=1.994710149E-04; *(c+8)=-5.313401790E-06; *(c+9)=6.481976217E-08; *(c+10)=0.000000000E+00; elseif ((num>=11.361)&&(num<=19.739)) // min<E<max *n=5; *(c+0)=-8.199599416E+01; *(c+1)=1.553962042E+02; *(c+2)=-8.342197663E+00; *(c+3)=4.279433549E-01; *(c+4)=-1.191577910E-02; *(c+5)=1.492290091E-04; *(c+6)=0.000000000E+00;

elseif ((num>=19.739)&&(num<=21.103)) // min<E<max *n=4; *(c+0)=3.406177836E+04; *(c+1)=-7.023729171E+03; *(c+2)=5.582903813E+02; *(c+3)=-1.952394635E+01; *(c+4)=2.560740231E-01; *(c+5)=0.000000000E+00; else ok=0;

break; case 's':if (!inv)/************************************* This section contains coefficients for type S thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************/if ((num>=-50.000)&&(num<=1064.180)) // min<t<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.540313308631E-02; *(c+2)=0.125934289740E-04; *(c+3)=-0.232477968689E-07; *(c+4)=0.322028823036E-10; *(c+5)=-0.331465196389E-13;

Page 259: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 32

*(c+6)=0.255744251786E-16; *(c+7)=-0.125068871393E-19; *(c+8)=0.271443176145E-23; elseif ((num>=1064.180)&&(num<=1664.500)) // min<t<max *n=4; *(c+0)=0.132900444085E+01; *(c+1)=0.334509311344E-02; *(c+2)=0.654805192818E-05; *(c+3)=-0.164856259209E-08; *(c+4)=0.129989605174E-13; elseif ((num>=1664.500)&&(num<=1768.1)) // min<t<max *n=4; *(c+0)=0.146628232636E+03; *(c+1)=-0.258430516752E+00; *(c+2)=0.163693574641E-03; *(c+3)=-0.330439046987E-07; *(c+4)=-0.943223690612E-14; else ok=0;

/************************************* This section contains coefficients of approximate inverse* functions for type S thermocouples for the subranges of* temperature and voltage listed below. The range of errors of

* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...

* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -50. to 250. -0.235 to 1.874 -0.02 to 0.02* 250. to 1200. 1.874 to 11.950 -0.01 to 0.01* 1064. to 1664.5 10.332 to 17.536 -0.0002 to 0.0002* 1664.5 to 1768.1 17.536 to 18.693 -0.002 to 0.002********************************************************/elseif ((num>=-0.235)&&(num<=1.874)) // min<E<max *n=9; *(c+0)=0.00000000E+00; *(c+1)=1.84949460E+02; *(c+2)=-8.00504062E+01;

Page 260: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 33

*(c+3)=1.02237430E+02; *(c+4)=-1.52248592E+02; *(c+5)=1.88821343E+02; *(c+6)=-1.59085941E+02; *(c+7)=8.23027880E+01; *(c+8)=-2.34181944E+01; *(c+9)=2.79786260E+00; elseif ((num>=1.874)&&(num<=11.950)) // min<E<max *n=9; *(c+0)=1.291507177E+01; *(c+1)=1.466298863E+02; *(c+2)=-1.534713402E+01; *(c+3)=3.145945973E+00; *(c+4)=-4.163257839E-01; *(c+5)=3.187963771E-02; *(c+6)=-1.291637500E-03; *(c+7)=2.183475087E-05; *(c+8)=-1.447379511E-07; *(c+9)=8.211272125E-09; elseif ((num>=10.332)&&(num<=17.536)) // min<E<max *n=5; *(c+0)=-8.087801117E+01; *(c+1)=1.621573104E+02; *(c+2)=-8.536869453E+00; *(c+3)=4.719686976E-01; *(c+4)=-1.441693666E-02; *(c+5)=2.081618890E-04; *(c+6)=0.000000000E+00; elseif ((num>=17.536)&&(num<=18.693)) // min<E<max *n=4; *(c+0)=5.333875126E+04; *(c+1)=-1.235892298E+04; *(c+2)=1.092657613E+03; *(c+3)=-4.265693686E+01; *(c+4)=6.247205420E-01; *(c+5)=0.000000000E+00; else ok=0;

break; case 't':if (!inv)/************************************* This section contains coefficients for type T thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant

Page 261: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 34

* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 °C to 400.000************************************/if ((num>=-270.000)&&(num<=0.000)) // min<t<max *n=14; *(c+0)=0.000000000000E+00; *(c+1)=0.387481063640E-01; *(c+2)=0.441944343470E-04; *(c+3)=0.118443231050E-06; *(c+4)=0.200329735540E-07; *(c+5)=0.901380195590E-09; *(c+6)=0.226511565930E-10; *(c+7)=0.360711542050E-12; *(c+8)=0.384939398830E-14; *(c+9)=0.282135219250E-16; *(c+10)=0.142515947790E-18; *(c+11)=0.487686622860E-21; *(c+12)=0.107955392700E-23; *(c+13)=0.139450270620E-26; *(c+14)=0.797951539270E-30; elseif ((num>=0.000)&&(num<=400.000)) // min<t<max *n=8; *(c+0)=0.000000000000E+00; *(c+1)=0.387481063640E-01; *(c+2)=0.332922278800E-04; *(c+3)=0.206182434040E-06; *(c+4)=-0.218822568460E-08; *(c+5)= 0.109968809280E-10; *(c+6)=-0.308157587720E-13; *(c+7)=0.454791352900E-16; *(c+8)=-0.275129016730E-19; else ok=0;/************************************* This section contains coefficients of approximate inverse* functions for type T thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range

Page 262: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 35

* (°C) (mV) (° C)* -200. to 0. -5.603 to 0.000 -0.02 to 0.04* .0 to 400. 0.000 to 20.872 -0.03 to 0.03********************************************************/elseif ((num>=-5.603)&&(num<=0.000)) // min<E<max *n=7; *(c+0)=0.0000000E+00; *(c+1)=2.5949192E+01; *(c+2)=-2.1316967E-01; *(c+3)=7.9018692E-01; *(c+4)=4.2527777E-01; *(c+5)=1.3304473E-01; *(c+6)=2.0241446E-02; *(c+7)=1.2668171E-03; elseif ((num>=0.000)&&(num<=20.872)) // min<E<max *n=6; *(c+0)=0.000000E+00; *(c+1)=2.592800E+01; *(c+2)=-7.602961E-01; *(c+3)=4.637791E-02; *(c+4)=-2.165394E-03; *(c+5)=6.048144E-05; *(c+6)=-7.293422E-07; *(c+7)=0.000000E+00; else ok=0;

break; default:

ok=0; //Termopar no conocido return(ok);

double SUMCOEF(double *tab, float valor,int imax) /*Metodo rapido para el calculo de potencias*/ int i; double suma=0.0; for (i=imax;i>=0;i--) suma=suma*valor+*(tab+i); //(1.5) return (suma);

double EmV(float T,char termo) /*Devuelve la tension que produciria el termopar a la temperatura dada*/

double E; double pol[max_coef]; int n;

Page 263: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 36

if (ctermo(termo,T,pol,&n,0)) //Si polinomios encontrados if (termo=='k') //Termopar K

if (T<0) E=SUMCOEF(pol,T,n); //(1.3) else //T>0 //(1.4) E=SUMCOEF(pol,T,n); E=E+(pol[n+1])*exp((pol[n+2])*(T-pol[n+3])*(T-pol[n+3]));

else //Otro termopar E=SUMCOEF(pol,T,n); //(1.3) else E=-1.0; //Devuelve -1 como error

return(E);

double T90(float E,char termo) /*Devuelve la temperatura del termopar con la que se produce la tension dada*/

double T; double pol[max_coef]; int n;

if(ctermo(termo,E,pol,&n,1)) T=SUMCOEF(pol,E,n); //Suma potencia (1.3) else T=-1.0; //Rango no encontrado error return(T);

int c_fria(uchar L1,uchar T1,uchar L2,uchar L,uchar T2,double *t1,double *t2,double *trm1,double*trm2,double *V1,double *V2,conf_in *p,char ter) //Compensacion unsigned int ref1,ref2,term1,term2; //Reagrupamiento unsigned int ref11,ref22,term11,term22; //Reagrupamiento double mV1,mV2; //Tension de compensacion de la Ta ambiente int pos_err; //Error

//Reagrupa bits altos y bajos ref1=ref11=ref2=ref22=term1=term11=term2=term22=0; ref1=(L1<<2); ref11=((L&0xC0)>>6); ref1=ref1|ref11; term1=(T1<<2); term11=((L&0x30)>>4); term1=term1|term11;

Page 264: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 37

ref2=(L2<<2); ref22=((L&0x0C)>>2); ref2=ref2|ref22; term2=(T2<<2); term22=(L&0x03); term2=term2|term22; //Compensacion de valores de la primera medida *t1=(p->Vcc) * (ref1/1.023E3) / (p->gao); //Tref *V1=((p->Vcc) * 1000 * (term1/1.023E3) - (p->Voff)) / (p->gai); /*E en mV*/ mV1=EmV(*t1,ter); *trm1= T90(*V1+mV1,ter); //Aplicacion formula compensacion //Compensacion de valores de la segunda medida *t2=(p->Vcc) * (ref2/1.023E3) / (p->gao); //Tref *V2=((p->Vcc) * 1000 * (term2/1.023E3) - (p->Voff)) / (p->gai); /*E en mV*/ mV2=EmV(*t2,ter); *trm2= T90(*V2+mV2,ter); //Aplicacion formula compensacion pos_err=!((mV1==-1.0)||(mV2==-1.0)||(*trm1==-1.0)||(*trm2==-1.0)); printf("%E %E %E %E\n",*t1,*trm1,*t2,*trm2); return(pos_err);

void adq(char op,int COM,conf_in *par) /*Gestiona bytes que llegan del serie,guarda los datos gestionados en ficheros*/

FILE *fp,*fv,*ft,*fa; //ficheros de texto double Ta1,Ta2; //Temperatura ambiente double Ttc1,Ttc2; //Temperatura del termopar double v1,v2; //Tension termopar uchar LM351H,TERMO1H,LM352H,TERMO2H,Low,ch; //Secuencia de datos int c;

printf("\nCompensaci¢n Data Logger. Pulsa ESC para salir\n"); /* Se abren los ficheros:

fp->FICHHEX-> Fichero donde se guardan los guardan los datos transmitidos por el data logger

fv->FICHVAL-> Fichero donde se guardan la temperatura ambiente de la adquisicion

fa->FICHVOL-> Fichero donde se guardan la tension producida por el termopar durantre la adquisicion

ft->FICHTXT-> Fichero donde se guardan la temperatura del temopar durante la adquisicion, ya compensada*/

fp=fopen("fichhex","wt"); fv=fopen("fichval","wt"); ft=fopen("fichtxt","wt"); fa=fopen("fichvol","wt");

ini_usart(COM); //Se recibe del termopar do if (bufferin != bufferout) //Si se ha recibido un caracter ch = buffer[bufferout]; //Avanza la cola

bufferout++;if (bufferout == 1024) bufferout = 0;/*Determina la posicion del byte enviado dentro de la secuenciade datos y lo colocalo en fp*/

Page 265: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 38

if (temperatura==0) LM351H=ch; //Medida ambiente 1fprintf(fp,"%x ",LM351H);

else if (temperatura==1) TERMO1H=ch; //Medida termopar 1

fprintf(fp,"%x ",TERMO1H); else if (temperatura==2) LM352H=ch; //Medida ambiente 2

fprintf(fp,"%x ",LM352H);else if (temperatura==3) Low=ch; //Agrupacion bytes bajos

fprintf(fp,"%x ",Low); else TERMO2H=ch; //Medida termopar 2 fprintf(fp,"%x\n",TERMO2H);

c_fria(LM351H,TERMO1H,LM352H,Low,TERMO2H,&Ta1,&Ta2,&Ttc1,&Ttc2,&v1,&v2,par,op); fprintf(fv,"%E\n%E\n",Ta1,Ta2); //Guarda resultados fprintf(ft,"%E\n%E\n",Ttc1,Ttc2); fprintf(fa,"%E\n%E\n",v1,v2);

if (kbhit())c = getch();

while (c !=27); //Acaba cuando se pulse ESC

fin_usart(COM); //Fin Adquisicion fclose(fp); //Cierra ficheros fclose(fv); fclose(ft); fclose(fa); printf("\nFicheros Generados\n");

int adqf(char op,conf_in *par) /*Gestiona bytes del fichero,guarda las temperaturas procesadas en ficheros*/

FILE *fp,*fv,*ft,*fa; //ficheros de texto double Ta1,Ta2; //Temperatura ambiente double Ttc1,Ttc2; //Temperatura del termopar double v1,v2; uchar LM351H,TERMO1H,LM352H,TERMO2H,Low,ch; //Secuencia de datos unsigned int LM351Hx,TERMO1Hx,LM352Hx,TERMO2Hx,Lowx; //Secuencia auxiliar int valor_ok; //Rutina correcta, fin lectura

printf("\nCompensación Fichero Data Logger\n");

fv=fopen("fichval","wt"); //Abrir ficheros idem rutina anterior ft=fopen("fichtxt","wt"); fa=fopen("fichvol","wt"); fp=fopen("fichhex","rt"); //pero FICHEX sera ahora la fuente valor_ok = !(fp==NULL); //Si existe fichero if (valor_ok)

Page 266: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 39

do //Coge una linea de 5 bytes valor_ok=(fscanf(fp,"%x%x%x%x%x",&LM351Hx,&TERMO1Hx,&LM352Hx,&Lowx,&TERMO2Hx)==5); if (valor_ok) //Si se tienen suficientes datos

LM351H=LM351Hx;TERMO1H=TERMO1Hx;

LM352H=LM352Hx;TERMO2H=TERMO2Hx;Low=Lowx; //Compensac_fria(LM351H,TERMO1H,LM352H,Low,TERMO2H,&Ta1,&Ta2,&Ttc1,&Ttc2,&v1,&v2,par,

op);fprintf(fv,"%E\n%E\n",Ta1,Ta2); //Guarda resultadosfprintf(ft,"%E\n%E\n",Ttc1,Ttc2);fprintf(fa,"%E\n%E\n",v1,v2);

while (!feof(fp)); //Terminar cuando se llegue al final del fichero valor_ok=1; //Se ha abierto el fichero else printf ("\nFichero de Adquisición no encontrado\n"); fclose(fv); //Cerrar/ fclose(ft); fclose(fa);

fclose(fp); if (valor_ok) printf("\nFichero Generado\n"); return(valor_ok);

void trmt (mem_EE *data) //Transmite los datos al data logger unsigned char TAB[9]; int i;

TAB[0]=data->Ini_NDIRH; //Se transmiten tal como se guardaran en la EEPROM TAB[1]=data->Ini_NDIRL; TAB[2]=data->Ini_NDIRLR; TAB[3]=data->MaxPagW; TAB[4]=data->MaxRamPag; TAB[5]=data->INCL; TAB[6]=data->INCH; TAB[7]=data->NTMR1; TAB[8]=data->NTMR0;

i=0; printf("\nTransferiendo al Data Logger\n"); do if (envio==1) outportb(PORT1,TAB[i]); //Si tiempo cumplido envia

printf("Enviado %d\n",i);i++; //Espera al otroenvio=0;

while (i<9); //Hasta que se envien todos los datos printf("\nTransferencia finalizada\n");

Page 267: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 40

int get_dataf (int COM) //Transmite al DL los datos de un fichero unsigned int Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR,MaxPagW,MaxRamPag; //Escaneo unsigned int INCL,INCH,NTMR1,NTMR0; //del fichero FILE *fp; //Fichero fuente mem_EE *dato; //Posiciones memoria EEPROM del data logger int valor_ok; //Funcionamiento correcto

printf("\nTransferencia configuración al Data Logger"); printf("\na partir del fichero de transmisión\n"); ini_usart(COM); /*Aunque no se utiliza la irq port serie se activa*/ ini_timer(); fp=fopen("fichtrm","rt"); valor_ok = !(fp==NULL); //Si existe sigue if (valor_ok) fscanf (fp,"%x",&Ini_NDIRH); //Lee del fichero fscanf (fp,"%x",&Ini_NDIRL); fscanf (fp,"%x",&Ini_NDIRLR); fscanf (fp,"%x",&MaxPagW); fscanf (fp,"%x",&MaxRamPag); fscanf (fp,"%x",&INCL); fscanf (fp,"%x",&INCH); fscanf (fp,"%x",&NTMR1); fscanf (fp,"%x",&NTMR0); dato->Ini_NDIRH=Ini_NDIRH; //Guarda en el registro dato->Ini_NDIRL=Ini_NDIRL; dato->Ini_NDIRLR=Ini_NDIRLR; dato->MaxPagW=MaxPagW; dato->MaxRamPag=MaxRamPag; dato->INCL=INCL; dato->INCH=INCH; dato->NTMR1=NTMR1; dato->NTMR0=NTMR0; trmt(dato); else printf ("\nFichero de Transmisión configuración no encontrado\n"); fin_timer(); //Acaba transmision fin_usart(COM); fclose(fp); return(valor_ok);

void get_data (int COM) //Transmite al DL los parametros introducidos unsigned int Ini_NDIRH,Ini_NDIRL,Ini_NDIRLR,MaxPagW,MaxRamPag; //Escaneo unsigned int INCL,INCH,NTMR1,NTMR0; //del fichero FILE *fp; //Fichero fuente mem_EE *dato; //Posiciones memoria EEPROM del data logger int valor_ok; //Funcionamiento correcto int n; //Eleccion memoria float num; //Tiempo muestreo

Page 268: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 41

printf("\nTransferencia configuración al Data Logger"); printf("\na partir de los parámetros siguientes:\n"); ini_usart(COM); /*Aunque no se utiliza la irq port serie se activa*/ ini_timer(); fp=fopen("fichtrm","wt"); do printf("\nTiempo muestreo aproximado (s) ? "); scanf("%f",&num); num = num/escala; valor_ok = num>0; //El tiempo no puede se 0 if (valor_ok)

n = 256-ceil(num); //Redondea hacia arriba y complementa a 2valor_ok = (n > 0);

while (!valor_ok); printf("Tiempo de muestreo(s) %f\n",(256-n)*escala); dato->NTMR1 = n; do printf("\nRetardos en la trasmisión (0-255) ? "); scanf("%d",&n); valor_ok = ((n>=0)&&(n < 255)); if (valor_ok) n=255-n; //Complemento a 2 while (!valor_ok); dato->NTMR0 = n; printf("\nTecle el número correspondiente al tipo de memoria utilizada\n"); printf("\n1 M24C01 2 M24C02 3 M24C04 4 M24C08\n"); printf("5 M24C16 6 M24128 7 M24256 8 M24512\n"); valor_ok=0; do scanf ("%d",&n); //Segun el tipo de memoria switch (n)

case 1: dato->Ini_NDIRH=0xFF; //Se cargan los valores para la EEPROMdato->Ini_NDIRL=0xF8; //precaculadosdato->Ini_NDIRLR=0xFF;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 2: dato->Ini_NDIRH=0xFF;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;

Page 269: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 42

break;case 3: dato->Ini_NDIRH=0xFE;

dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 4: dato->Ini_NDIRH=0xFC;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 5: dato->Ini_NDIRH=0xF8;dato->Ini_NDIRL=0xF0;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xF0;dato->MaxRamPag=0xEF;dato->INCL=0x10;dato->INCH=0x02;valor_ok=1;break;

case 6: dato->Ini_NDIRH=0xC0;dato->Ini_NDIRL=0xFC;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xFC;dato->MaxRamPag=0xFB;dato->INCL=0x40;dato->INCH=0x01;valor_ok=1;break;

case 7: dato->Ini_NDIRH=0x80;dato->Ini_NDIRL=0xFC;dato->Ini_NDIRLR=0xFE;dato->MaxPagW=0xFC;dato->MaxRamPag=0xFB;dato->INCL=0x40;dato->INCH=0x01;valor_ok=1;break;

case 8:break;default: printf("Opci¢n Incorrecta\n");

while (!valor_ok); trmt(dato); fprintf (fp,"%x ",dato->Ini_NDIRH); //Guarda valores en fichero fprintf (fp,"%x ",dato->Ini_NDIRL); fprintf (fp,"%x ",dato->Ini_NDIRLR);

Page 270: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 43

fprintf (fp,"%x ",dato->MaxPagW); fprintf (fp,"%x ",dato->MaxRamPag); fprintf (fp,"%x ",dato->INCL); fprintf (fp,"%x ",dato->INCH); fprintf (fp,"%x ",dato->NTMR1); fprintf (fp,"%x\n",dato->NTMR0); fin_timer(); //Fin Transmision fin_usart(COM); fclose(fp);

int get_paramf(conf_in *p) /*Carga los parametros internos del fichero de configuracion*/

int valor_ok=0; //Devuelve 1 si se realiza correctamente la carga FILE *fp;

fp=fopen("fichcon","rt"); //Si existe el fichero de configuracion valor_ok = !(fp==NULL); if (valor_ok) //Carga los parametros valor_ok=fscanf (fp,"%E",&p->Vcc); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->Voff); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->gao); if (valor_ok) valor_ok=fscanf (fp,"%E",&p->gai); fclose(fp); else printf ("\nFichero de par metros internos no encontrado\n"); return(valor_ok);

void get_param(conf_in *p) //Modifica los parametros internos del programa int valor_ok; FILE *fp;

printf("\nModificacion Parametros Compensacion\n\n"); fp=fopen("fichcon","wt"); //Se introducen todos los parametros en el fich

printf("Tensión alimentación Vcc (V) "); //Preguntas scanf("%f",&p->Vcc); printf("Tensión de offset (mV) "); scanf("%f",&p->Voff); printf("Ganancia LM35 T¦ "); scanf("%f",&p->gao); printf("Ganancia Termopar V "); scanf("%f",&p->gai); fprintf (fp,"%E ",p->Vcc); //Guarda fichero fprintf (fp,"%E ",p->Voff); fprintf (fp,"%E ",p->gao); fprintf (fp,"%E\n",p->gai); fclose(fp);

int manual (char ter)

Page 271: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 44

float ta,mV; //Tª ambiente, Tensión del termopar double t,V; //V(ta), t(mV) int pos_err; //error printf("\nCalculo Temperatura Termopar a partir de las mediciones\n\n"); printf("Temperatura ambiente (ºC) "); //Ta scanf("%f",&ta); printf("Tensión producida por el termopar (mV) "); //E scanf("%f",&mV); V=EmV(ta,ter); //Aplicacion formula compensacion t=T90(mV+V,ter); pos_err=!((V==-1.0)||(t==-1.0)); //Resultado de posible error printf("La temperatura del termopar es %f ºC\n",t); //Muestra T return(pos_err);

int analisis (int c,char **v,int *comando,int *com,char *ter) //Interpreta la linea de comandos int error=0; //Linea correcta int n; int p_com,p_ter,p_fil;

*com=1; *ter='k'; //Valores por defecto if ((c>=2)) //Una cadena en la linea if (*v[1]=='c') //Compensacion *comando=1; else if (*v[1]=='t') //Transmision *comando=3; else if (*v[1]=='p') //Configuracion *comando=5; else if (*v[1]=='m') //Manual *comando=6; else error=1; p_com=p_ter=p_fil=0; for (n=2;(n<c)&&(!error);n++)

p_com=(!p_com)&&(*v[n]=='/')&&(*(v[n]+1)=='c')&&(*(v[n]+2)=='o')&&(*(v[n]+3)=='m')&&(*(v[n]+4)=='=');

p_ter=(!p_ter)&&(*v[n]=='/')&&(*(v[n]+1)=='t')&&(*(v[n]+2)=='e')&&(*(v[n]+3)=='r')&&(*(v[n]+4)=='='); p_fil=(!p_fil)&&(*v[n]=='/')&&(*(v[n]+1)=='f')&&(*(v[n]+2)=='i')&&(*(v[n]+3)=='l'); if (p_com) //com=n

*com=(int) *(v[n]+5)-48; //ASCII a numeroerror=(*com<1)||(*com>4); //Puerto serie real

else if (p_ter) //ter=n

*ter=*(v[n]+5); //Termopar permitido

Page 272: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 45

error=!((*ter=='b')||(*ter=='e')||(*ter=='j')||(*ter=='k')||(*ter=='n')||(*ter=='r')||(*ter=='s')||(*ter=='t')); else if ((p_fil)&&((*comando==1)||(*comando==3))) //fil y c o t

*comando=*comando+1; else error=1; //Parametro desconocido o repetido else error=1; //No comando if (error==1) //Muestra ayuda printf("\nUso: TERMO <comando> [/com=n] [/ter=n] [/fil]\n\n<Comandos>\n"); printf("c Compensación termopar\n"); printf("t Transmisión configuración data logger\n"); printf("p Modificación/Creación par metros internos\n"); printf("m Compensación indicando tensión producida y temperatura ambiente\n\n"); printf("Parámetros\n"); printf("/com=n indica el puerto serie usado n=1|2|3|4 , por defecto n=1\n"); printf("/ter=n indica el tipo de termopar usado n=b|e|j|k|n|r|s|t , por defecto n=k\n"); printf("/fil indica si se utilizara fichero interno, por defecto no se utiliza\n"); printf("Nota este par metro no será válido para los comandos p o m\n"); return (error);

int main(int argc,char *argv[])

char termo='k'; int opcion=0; //Opcion del programa escogida int port=1; //Puerto serie conf_in param; //Parametros internos de compensacion //Si la opcion se ha introducido correctamente sigue sino acaba if (analisis(argc,argv,&opcion,&port,&termo)) return(1); //opcion=2;port=1; switch (opcion)//Sigue segun la opcion elegida case 1: //Compensacion datos procedentes puerto serie if (get_paramf(&param)) //Si los parametros internos son correctos

adq(termo,port,&param); //Compensa los datos que vengan de alli

else return(1); break; case 2: //Compensacion datos extraidos desde un fichero if (get_paramf(&param))

adqf(termo,&param); //Compensa

else return(1); break; case 3: //Transmite configuracion especifica al data logger

Page 273: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 3: LISTADO DE PROGRAMAS Pag 46

get_data(port); break; case 4: //Transmite configuracion habitual al data logger get_dataf(port); break; case 5: //Modifica los parametros internos get_param(&param); break; case 6: //Modifica los parametros internos manual(termo); break; return(0);

Page 274: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

DATALOGER PARA TERMOPAR

(PERFIL DE TEMPERATURA DE UN HORNO DE CINTA CON COMPENSACIÓN DE UNIÓN FRÍA)

ANEXO 4: COEFICIENTES TERMOPAR

AUTOR: Jesús Pablo Parrado Guardia.

DIRECTOR: Xavier Vilanova.

FECHA: Junio / 2003.

Page 275: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 2

************************************* This section contains coefficients for type B thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* 0.000 to 630.615* 630.615 to 1820.000************************************name: reference function on ITS-90type: Btemperature units: °Cemf units: mVrange: 0.000, 630.615, 6 0.000000000000E+00 -0.246508183460E-03 0.590404211710E-05 -0.132579316360E-08 0.156682919010E-11 -0.169445292400E-14 0.629903470940E-18range: 630.615, 1820.000, 8 -0.389381686210E+01 0.285717474700E-01 -0.848851047850E-04 0.157852801640E-06 -0.168353448640E-09 0.111097940130E-12 -0.445154310330E-16 0.989756408210E-20 -0.937913302890E-24

************************************* This section contains coefficients of approximate inverse* functions for type B thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* 250. to 700. 0.291 to 2.431 -0.02 to 0.03* 700. to 1800. 2.431 to 13.820 -0.01 to 0.02********************************************************Inverse coefficients for type B:

Temperature 250. 700. Range: 700. 1820.

Page 276: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 3

Voltage 0.291 2.431 Range: 2.431 13.820

9.8423321E+01 2.1315071E+02 6.9971500E+02 2.8510504E+02 -8.4765304E+02 -5.2742887E+01 1.0052644E+03 9.9160804E+00 -8.3345952E+02 -1.2965303E+00 4.5508542E+02 1.1195870E-01 -1.5523037E+02 -6.0625199E-03 2.9886750E+01 1.8661696E-04 -2.4742860E+00 -2.4878585E-06

Error -0.02 -0.01 Range: 0.03 0.02

************************************* This section contains coefficients for type E thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1000.000************************************name: reference function on ITS-90type: Etemperature units: °Cemf units: mVrange: -270.000, 0.000, 13 0.000000000000E+00 0.586655087080E-01 0.454109771240E-04 -0.779980486860E-06 -0.258001608430E-07 -0.594525830570E-09 -0.932140586670E-11 -0.102876055340E-12 -0.803701236210E-15 -0.439794973910E-17 -0.164147763550E-19 -0.396736195160E-22 -0.558273287210E-25 -0.346578420130E-28range: 0.000, 1000.000, 10 0.000000000000E+00 0.586655087100E-01 0.450322755820E-04 0.289084072120E-07 -0.330568966520E-09 0.650244032700E-12 -0.191974955040E-15

Page 277: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 4

-0.125366004970E-17 0.214892175690E-20 -0.143880417820E-23 0.359608994810E-27

************************************* This section contains coefficients of approximate inverse* functions for type E thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* Range range range* (°C) (mV) (° C)* -200. to 0. -8.825 to 0.000 -0.01 to 0.03* 0. to 1000. 0.000 to 76.373 -0.02 to 0.02********************************************************Inverse coefficients for type E:

Temperature -200. 0. Range: 0. 1000.

Voltage -8.825 0.000 Range: 0.000 76.373

0.0000000E+00 0.0000000E+00 1.6977288E+01 1.7057035E+01 -4.3514970E-01 -2.3301759E-01 -1.5859697E-01 6.5435585E-03 -9.2502871E-02 -7.3562749E-05 -2.6084314E-02 -1.7896001E-06 -4.1360199E-03 8.4036165E-08 -3.4034030E-04 -1.3735879E-09 -1.1564890E-05 1.0629823E-11 0.0000000E+00 -3.2447087E-14

Error -0.01 -0.02 Range: 0.03 0.02

************************************* This section contains coefficients for type J thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant

* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)

Page 278: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 5

* -210.000 to 760.000* 760.000 to 1200.000************************************name: reference function on ITS-90type: Jtemperature units: °Cemf units: mVrange: -210.000, 760.000, 8 0.000000000000E+00 0.503811878150E-01 0.304758369300E-04 -0.856810657200E-07 0.132281952950E-09 -0.170529583370E-12 0.209480906970E-15 -0.125383953360E-18 0.156317256970E-22range: 760.000, 1200.000, 5 0.296456256810E+03 -0.149761277860E+01 0.317871039240E-02 -0.318476867010E-05 0.157208190040E-08 -0.306913690560E-12

************************************* This section contains coefficients of approximate inverse* functions for type J thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -210. to 0. -8.095 to 0.000 -0.05 to 0.03* 0. to 760. 0.000 to 42.919 -0.04 to 0.04* 760. to 1200 42.919 to 69.553 -0.04 to 0.03********************************************************Inverse coefficients for type J:

Temperature -210. 0. 760. Range: 0. 760. 1200.

Voltage -8.095 0.000 42.919 Range: 0.000 42.919 69.553

0.0000000E+00 0.000000E+00 -3.11358187E+03 1.9528268E+01 1.978425E+01 3.00543684E+02 -1.2286185E+00 -2.001204E-01 -9.94773230E+00 -1.0752178E+00 1.036969E-02 1.70276630E-01

Page 279: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 6

-5.9086933E-01 -2.549687E-04 -1.43033468E-03 -1.7256713E-01 3.585153E-06 4.73886084E-06 -2.8131513E-02 -5.344285E-08 0.00000000E+00 -2.3963370E-03 5.099890E-10 0.00000000E+00 -8.3823321E-05 0.000000E+00 0.00000000E+00

Error -0.05 -0.04 -0.04 Range: 0.03 0.04 0.03

************************************* This section contains coefficients for type K thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation below 0 °C is of the form* E = sum(i=0 to n) c_i t^i.** The equation above 0 °C is of the form* E = sum(i=0 to n) c_i t^i + a0 exp(a1 (t - a2)^2).** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1372.000************************************name: reference function on ITS-90type: Ktemperature units: °Cemf units: mVrange: -270.000, 0.000, 10 0.000000000000E+00 0.394501280250E-01 0.236223735980E-04 -0.328589067840E-06 -0.499048287770E-08 -0.675090591730E-10 -0.574103274280E-12 -0.310888728940E-14 -0.104516093650E-16 -0.198892668780E-19 -0.163226974860E-22range: 0.000, 1372.000, 9 -0.176004136860E-01 0.389212049750E-01 0.185587700320E-04 -0.994575928740E-07 0.318409457190E-09 -0.560728448890E-12 0.560750590590E-15 -0.320207200030E-18 0.971511471520E-22 -0.121047212750E-25exponential: a0 = 0.118597600000E+00 a1 = -0.118343200000E-03 a2 = 0.126968600000E+03

Page 280: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 7

************************************* This section contains coefficients of approximate inverse* functions for type K thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -5.891 to 0.000 -0.02 to 0.04* 0. to 500. 0.000 to 20.644 -0.05 to 0.04* 500. to 1372. 20.644 to 54.886 -0.05 to 0.06********************************************************Inverse coefficients for type K:

Temperature -200. 0. 500. Range: 0. 500. 1372.

Voltage -5.891 0.000 20.644 Range: 0.000 20.644 54.886

0.0000000E+00 0.000000E+00 -1.318058E+02 2.5173462E+01 2.508355E+01 4.830222E+01 -1.1662878E+00 7.860106E-02 -1.646031E+00 -1.0833638E+00 -2.503131E-01 5.464731E-02 -8.9773540E-01 8.315270E-02 -9.650715E-04 -3.7342377E-01 -1.228034E-02 8.802193E-06 -8.6632643E-02 9.804036E-04 -3.110810E-08 -1.0450598E-02 -4.413030E-05 0.000000E+00 -5.1920577E-04 1.057734E-06 0.000000E+00 0.0000000E+00 -1.052755E-08 0.000000E+00

Error -0.02 -0.05 -0.05 Range: 0.04 0.04 0.06

************************************* This section contains coefficients for type N thermocouples for

* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 to 1300.000************************************name: reference function on ITS-90

Page 281: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 8

type: Ntemperature units: °Cemf units: mVrange: -270.000, 0.000, 8 0.000000000000E+00 0.261591059620E-01 0.109574842280E-04 -0.938411115540E-07 -0.464120397590E-10 -0.263033577160E-11 -0.226534380030E-13 -0.760893007910E-16 -0.934196678350E-19range: 0., 1300., 10 0.000000000000E+00 0.259293946010E-01 0.157101418800E-04 0.438256272370E-07 -0.252611697940E-09 0.643118193390E-12 -0.100634715190E-14 0.997453389920E-18 -0.608632456070E-21 0.208492293390E-24 -0.306821961510E-28

************************************* This section contains coefficients of approximate inverse* functions for type N thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -3.990 to 0.000 -0.02 to 0.03* 0. to 600. 0.000 to 20.613 -0.02 to 0.03* 600. to 1300. 20.613 to 47.513 -0.04 to 0.02********************************************************Inverse coefficients for type N:

Temperature -200. 0. 600. Range: 0. 600. 1300.

Voltage -3.990 0.000 20.613 Range: 0.000 20.613 47.513

0.0000000E+00 0.00000E+00 1.972485E+01 3.8436847E+01 3.86896E+01 3.300943E+01 1.1010485E+00 -1.08267E+00 -3.915159E-01

Page 282: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 9

5.2229312E+00 4.70205E-02 9.855391E-03 7.2060525E+00 -2.12169E-06 -1.274371E-04 5.8488586E+00 -1.17272E-04 7.767022E-07 2.7754916E+00 5.39280E-06 0.000000E+00 7.7075166E-01 -7.98156E-08 0.000000E+00 1.1582665E-01 0.00000E+00 0.000000E+00 7.3138868E-03 0.00000E+00 0.000000E+00

Error -0.02 -0.02 -0.04 Range: 0.03 0.03 0.02

************************************* This section contains coefficients for type R thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************name: reference function on ITS-90type: Rtemperature units: °Cemf units: mVrange: -50.000, 1064.180, 9 0.000000000000E+00 0.528961729765E-02 0.139166589782E-04 -0.238855693017E-07 0.356916001063E-10 -0.462347666298E-13 0.500777441034E-16 -0.373105886191E-19 0.157716482367E-22 -0.281038625251E-26range: 1064.180, 1664.500, 5 0.295157925316E+01 -0.252061251332E-02 0.159564501865E-04 -0.764085947576E-08 0.205305291024E-11 -0.293359668173E-15range: 1664.5, 1768.1, 4 0.152232118209E+03 -0.268819888545E+00 0.171280280471E-03 -0.345895706453E-07 -0.934633971046E-14

************************************* This section contains coefficients of approximate inverse

Page 283: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 10

* functions for type R thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -50. to 250. -0.226 to 1.923 -0.02 to 0.02* 250. to 1200. 1.923 to 13.228 -0.005 to 0.005* 1064. to 1664.5 11.361 to 19.739 -0.0005 to 0.001* 1664.5 to 1768.1 19.739 to 21.103 -0.001 to 0.002********************************************************Inverse coefficients for type R:

Temperature -50. 250. 1064. 1664.5 Range: 250. 1200. 1664.5 1768.1

Voltage -0.226 1.923 11.361 19.739 Range: 1.923 13.228 19.739 21.103

0.0000000E+00 1.334584505E+01 -8.199599416E+01 3.406177836E+04 1.8891380E+02 1.472644573E+02 1.553962042E+02 -7.023729171E+03 -9.3835290E+01 -1.844024844E+01 -8.342197663E+00 5.582903813E+02 1.3068619E+02 4.031129726E+00 4.279433549E-01 -1.952394635E+01 -2.2703580E+02 -6.249428360E-01 -1.191577910E-02 2.560740231E-01 3.5145659E+02 6.468412046E-02 1.492290091E-04 0.000000000E+00 -3.8953900E+02 -4.458750426E-03 0.000000000E+00 0.000000000E+00 2.8239471E+02 1.994710149E-04 0.000000000E+00 0.000000000E+00 -1.2607281E+02 -5.313401790E-06 0.000000000E+00 0.000000000E+00 3.1353611E+01 6.481976217E-08 0.000000000E+00 0.000000000E+00 -3.3187769E+00 0.000000000E+00 0.000000000E+00 0.000000000E+00

Error -0.02 -0.005 -0.0005 -0.001 Range: 0.02 0.005 0.001 0.002

************************************* This section contains coefficients for type S thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -50.000 to 1064.180* 1064.180 to 1664.500* 1664.500 to 1768.100************************************name: reference function on ITS-90type: Stemperature units: °C

Page 284: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 11

emf units: mVrange: -50.000, 1064.180, 8 0.000000000000E+00 0.540313308631E-02 0.125934289740E-04 -0.232477968689E-07 0.322028823036E-10 -0.331465196389E-13 0.255744251786E-16 -0.125068871393E-19 0.271443176145E-23range: 1064.180, 1664.500, 4 0.132900444085E+01 0.334509311344E-02 0.654805192818E-05 -0.164856259209E-08 0.129989605174E-13range: 1664.5, 1768.1, 4 0.146628232636E+03 -0.258430516752E+00 0.163693574641E-03 -0.330439046987E-07 -0.943223690612E-14

************************************* This section contains coefficients of approximate inverse* functions for type S thermocouples for the subranges of* temperature and voltage listed below. The range of errors of

* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -50. to 250. -0.235 to 1.874 -0.02 to 0.02* 250. to 1200. 1.874 to 11.950 -0.01 to 0.01* 1064. to 1664.5 10.332 to 17.536 -0.0002 to 0.0002* 1664.5 to 1768.1 17.536 to 18.693 -0.002 to 0.002********************************************************Inverse coefficients for type S:

Temperature -50. 250. 1064. 1664.5 Range: 250. 1200. 1664.5 1768.1

Voltage -0.235 1.874 10.332 17.536 Range: 1.874 11.950 17.536 18.693

0.00000000E+00 1.291507177E+01 -8.087801117E+01 5.333875126E+04 1.84949460E+02 1.466298863E+02 1.621573104E+02 -1.235892298E+04 -8.00504062E+01 -1.534713402E+01 -8.536869453E+00 1.092657613E+03

Page 285: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 12

1.02237430E+02 3.145945973E+00 4.719686976E-01 -4.265693686E+01 -1.52248592E+02 -4.163257839E-01 -1.441693666E-02 6.247205420E-01 1.88821343E+02 3.187963771E-02 2.081618890E-04 0.000000000E+00 -1.59085941E+02 -1.291637500E-03 0.000000000E+00 0.000000000E+00 8.23027880E+01 2.183475087E-05 0.000000000E+00 0.000000000E+00 -2.34181944E+01 -1.447379511E-07 0.000000000E+00 0.000000000E+00 2.79786260E+00 8.211272125E-09 0.000000000E+00 0.000000000E+00

Error -0.02 -0.01 -0.0002 -0.002 Range: 0.02 0.01 0.0002 0.002

************************************* This section contains coefficients for type T thermocouples for* the two subranges of temperature listed below. The coefficients* are in units of °C and mV and are listed in the order of constant* term up to the highest order. The equation is of the form* E = sum(i=0 to n) c_i t^i.** Temperature Range (°C)* -270.000 to 0.000* 0.000 °C to 400.000************************************name: reference function on ITS-90type: Ttemperature units: °Cemf units: mVrange: -270.000, 0.000, 14 0.000000000000E+00 0.387481063640E-01 0.441944343470E-04 0.118443231050E-06 0.200329735540E-07 0.901380195590E-09 0.226511565930E-10 0.360711542050E-12 0.384939398830E-14 0.282135219250E-16 0.142515947790E-18 0.487686622860E-21 0.107955392700E-23 0.139450270620E-26 0.797951539270E-30range: 0.000, 400.000, 8 0.000000000000E+00 0.387481063640E-01 0.332922278800E-04 0.206182434040E-06 -0.218822568460E-08 0.109968809280E-10 -0.308157587720E-13 0.454791352900E-16 -0.275129016730E-19

************************************

Page 286: DATALOGER PARA TERMOPAR - Departament …deeea.urv.cat/public/PROPOSTES/pub/pdf/340pub.pdfPROYECTO DATA LOGGER PARA TERMOPAR MEMORIA DESCRIPTIVA Pag. 7 dos zonas, la zona de unión

PROYECTO DATA LOGGER PARA TERMOPAR

ANEXO 4: COEFICIENTES POLINÓMICOS DE LOS TERMOPARES Pag 13

* This section contains coefficients of approximate inverse* functions for type T thermocouples for the subranges of* temperature and voltage listed below. The range of errors of* the approximate inverse function for each subrange is also given.* The coefficients are in units of °C and mV and are listed in* the order of constant term up to the highest order.* The equation is of the form t_90 = d_0 + d_1*E + d_2*E^2 + ...* + d_n*E^n,* where E is in mV and t_90 is in °C.** Temperature Voltage Error* range range range* (°C) (mV) (° C)* -200. to 0. -5.603 to 0.000 -0.02 to 0.04* .0 to 400. 0.000 to 20.872 -0.03 to 0.03********************************************************Inverse coefficients for type T:

Temperature -200. 0. Range: 0. 400.

Voltage -5.603 0.000 Range: 0.000 20.872

0.0000000E+00 0.000000E+00 2.5949192E+01 2.592800E+01 -2.1316967E-01 -7.602961E-01 7.9018692E-01 4.637791E-02 4.2527777E-01 -2.165394E-03 1.3304473E-01 6.048144E-05 2.0241446E-02 -7.293422E-07 1.2668171E-03 0.000000E+00

Error -0.02 -0.03 Range: 0.04 0.03