sistema automático para la selección de las frecuencias...

46
Sistema automático para la selección de las frecuencias óptimas de modulación de temperatura de microsensores de gases TITULACIÓN: Ingeniería en Automática i Electrónica Industrial AUTOR: Oriol González León DIRECTOR: Dr. Eduard Llobet Valero FECHA: Septiembre del 2012.

Upload: others

Post on 22-Mar-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Sistema automático para la selección de las frecuencias óptimas de modulación de temperatura de microsensores

de gases

TITULACIÓN: Ingeniería en Automática i Electrónica Industrial

AUTOR: Oriol González León

DIRECTOR: Dr. Eduard Llobet Valero

FECHA: Septiembre del 2012.

Proyecto Final de Carrera

2

Dedicado a mi esposa Emma, madre de nuestros hijos,

por tus consejos y apoyo en los momentos claves del proyecto.

Proyecto Final de Carrera

3

Índice

1. Introducción ................................................................................................................ 5 1.1 Los Sensores .....................................................................................................................................5 1.2 Antecedentes.....................................................................................................................................6 2. Síntesis del proyecto realizado................................................................................... 7 2.1 Fase 1: Realizar mediciones para cada concentración .................................................................8 2.2 Fase 2: Analizar los resultados .......................................................................................................9 2.3 Aspectos claves del proyecto .........................................................................................................10 2.3.1 Requerimientos de los sensores.............................................................................................10 2.3.2 Requerimientos de sincronización........................................................................................10 2.3.3 Requerimiento de frecuencia elevada ..................................................................................11 3. Descripción detallada el proyecto ........................................................................... 12 3.1 Pestaña de proyecto .......................................................................................................................13 3.2 Configurar fuente de corriente .....................................................................................................14 3.3 Configurar señal pseudoaleatoria ................................................................................................15 3.4. Conf. Generador ...........................................................................................................................16 3.5 Conf. Electrometro ........................................................................................................................16 3.6 Realizar medida .............................................................................................................................17 3.7 Progreso de la medida actual ........................................................................................................18 3.8 Ficheros del proyecto.....................................................................................................................18 3.9 Conexiones físicas del proyecto: ...................................................................................................20 4. Programa Labview ................................................................................................... 21 4.1 Proceso de medida, bucle de mediciones y salvado en un fichero .txt .......................................21 4.1.1 Crear fichero de datos ...........................................................................................................23 4.1.2 Configuración de los equipos remotos y completar la señal pseudoaletoria.....................24 4.1.3 Ciclos de medida ....................................................................................................................25 4.1.4 Salvado de datos.....................................................................................................................26 4.2 Código generación del fichero Matlab .........................................................................................27 5. Selección de frecuencias y Análisis de los resultados ............................................ 29 5.1 Diagrama de flujo............................................................................................................................30 5.2 Funciones programadas..................................................................................................................31 5.3 Ejemplo de funcionamiento…..........................................................................................………..32

6. Valoración y conclusiones ........................................................................................ 34 7. Referencias.................................................................................................................35 Anexo A: Diseño i fabricación de las fuentes de corriente........................................ 36 A.1 Base teórica....................................................................................................................................36 A.2 Diseño e implementación ..............................................................................................................38 Anexo B: Cálculo de la FFT de la correlación cruzada circular............................. 41 Anexo C: Generación de la señal de modulación de temperatura ........................... 44 C.1 Señales Pseudo Aleatorias Binarias (PRBS) ...............................................................................44 C.2 Señales Pseudo Aleatorias multi-nivel (PRBS) ...........................................................................44 C.3 Señal multi-senoidal......................................................................................................................44 Anexo D: Código MATLAB de análisis de Datos:..................................................... 45 D.1 Función Selecciona_y_valida_frequencias.m .............................................................................45 D.3 Función de analisis de la varianza Selec_freq_factor.m ............................................................46 D.4 Función de creación de grupos crea_grupos_ind.m...................................................................47

Proyecto Final de Carrera

5

1. Introducción

El objetivo de este proyecto es el de diseñar y poner en funcionamiento una estación de medida que utilice la modulación de temperatura, para poder seleccionar las frecuencias óptimas de modulación para diferentes tipos de sensor de gases. El proyecto se enmarca dentro del grupo de investigación MINOS, que actualmente tiene estaciones de medida sin modulación de la temperatura de trabajo; este método de medida, diferente y prometedor, puede servir para descubrir características nuevas en los sensores.

1.1 Los Sensores Entre los diferentes objetivos de investigación del grupo destaca el desarrollo de sensores de tipo resistivo basados en materiales inorgánicos semiconductores (óxidos metálicos dopados con metales nobles). Dichos materiales trabajan a temperaturas elevadas (200 a 600oC) ya que las variaciones de su conductividad eléctrica se deben a la alteración de los niveles de oxígeno adsorbido en presencia de los gases detectados. Cada sensor tiene incorporado una HEATER, una resistencia que calienta al sensor a la temperatura de trabajo deseada. Por ejemplo, la reacción de un gas reductor con el oxígeno adsorbido en un sensor tipo n (p.e. óxido de estaño), conduce a un incremento de la conductividad de dicho sensor. La figura muestra sensores resistivos basados en óxido de tungsteno.

Figura 1: Sensores micromecanizados

En la imagen podemos ver sensores resistivos desarrollados por el Grupo de Sensores de la URV. Multisensor integrado por 4 elementos sobre silicio micromecanizado y capas activas depositadas por serigrafía (izquierda) y sensor sobre soporte de silicio y capa activa depositada por pulverización catódica (derecha).

Proyecto Final de Carrera

6

1.2 Antecedentes

Uno de los mayores problemas experimentados en los sistemas de detección de gases basados en dispositivos de óxidos metálicos es su falta de reproducibilidad, estabilidad y selectividad. Con el fin de intentar resolver estos problemas, diferentes estrategias han sido desarrolladas en paralelo. Algunas de ellas se relacionan con la mejora de los materiales y otras implican acondicionamiento o pre-tratamiento de las muestras. Otras estrategias ampliamente empleadas consisten en aprovechar que los sensores presentan sensibilidades solapadas para construir matrices de sensores y emplear técnicas de procesamiento de señal o bien utilizar características de la respuesta dinámica de los sensores. En los últimos años, modular la temperatura de trabajo de los sensores de óxidos metálicos se ha convertido en uno de los métodos más utilizados para incrementar su selectividad. Esto se debe a, dado que la respuesta del sensor varía con su propia temperatura de trabajo, entonces, en determinados casos, midiendo la respuesta de un sensor a n temperaturas de trabajo diferentes, es equivalente a tener una matriz de n sensores diferentes. Esto permite obtener información multivariante de cada sensor individualmente y ayuda a mantener baja la dimensionalidad del sistema de medida para resolver una determinada aplicación. A pesar de los buenos resultados que han sido publicados dentro de este ámbito, la selección de las frecuencias empleadas en la modulación de la temperatura de trabajo de los sensores ha consistido, hasta el momento, en un proceso empírico lo que no garantiza la obtención de los mejores resultados para una determinada aplicación. En este contexto, el principal objetivo de una tesis desarrollada en el grupo [1] consistió en la obtención de un método sistemático que permitiese determinar cuales son las frecuencias de modulación óptimas que podrían emplearse para resolver un determinado problema de análisis de gases. Este método, extraído del campo de identificación de sistemas, fue desarrollado e implementado por primera vez dentro del ámbito de los sensores de gases. Éste consiste en estudiar la respuesta de los sensores en presencia de gases mientras la temperatura de trabajo de los sensores es modulada mediante una señal pseudo-aleatoria de longitud máxima. Con ello se consigue obtener una estimación de la respuesta impulsional del sistema sensor-gas y, mediante su estudio, se consiguen determinar las frecuencias óptimas de modulación térmica. El sistema probado en la tesis tenía algunos puntos débiles. Por un lado, era un sistema de adquisición muy lento, una muestra de un sensor cada segundo, y si queríamos más de un sensor estos estaban multiplexados en el tiempo cada 200 ms. Por otro, la señal de excitación era generada de manera rudimentaria y el proyecto no podía asegurar una correcta sincronización de la señal de excitación con la medida tomada.

Proyecto Final de Carrera

7

2. Síntesis del proyecto realizado

Para continuar en la línea de investigación, el grupo MINOS ha adquirido dos nuevos equipos para mejorar los puntos débiles en la implementación del sistema de medida: - Un generador de funciones que permitiera generar una señal pseudoaleatoria. - Un electrómetro de 4 canales, instrumento que sirve para medir cargas o diferencias de

potencial de la electricidad de corrientes muy débiles. Con estos dos equipos y un programa realizado con Labview + Matlab podemos automatizar el proceso de caracterización de los sensores, es decir, automatizar la selección de las frecuencias óptimas de modulación de temperatura. El proceso es el siguiente: 1- Primero, configuramos el tipo de medida que vamos a realizar (valores de tensión y corriente, frecuencia de consigna, frecuencia de muestreo entre otros). 2- El segundo paso es realizar n ciclos de medida por cada concentración de gas, y todos los datos los guardamos para su posterior análisis. 3- Seguidamente, realizamos la correlación cruzada de las medidas con la señal pseudoaleatoria, para poder analizar las variaciones frecuenciales. 4- A continuación, hacemos un análisis de la varianza que nos dará las frecuencias óptimas para poder clasificar las concentraciones. 5- Finalmente, con los valores de estas frecuencias entrenamos una red neuronal y validamos con medidas nuevas. El proceso se divide en dos partes, la primera corresponde a la adquisición de las medidas y la segunda al análisis de las mismas.

Concentracion gas 1

Concentracion gas 2

Concentracion gas n Alm

acenam

iento de datos

Conf de la medida

Realización de las medidas para diferentes concentraciones

Correlación cruzada circular

Selección de frecuencias óptimas y entrenamiento de una red neuronal

Validación

Figura 2: Descripción del proceso de medida

Proyecto Final de Carrera

8

2.1 Fase 1: Realizar mediciones para cada concentración

Para poder analizar los datos correctamente necesitamos obtener los datos en régimen permanente. Para ello medimos como mínimo 3 ciclos completos de la señal pseudoaletoria.

- La señal MLS (Maximum Length Sequence) pseudoaletoria de 5 niveles consta de 624 valores.

- Frecuencia de símbolo MLS de 2 Hz cada ciclo tiene una duración de 312 s. - Frecuencia de muestreo de 10 Hz, 3120 muestras por ciclo. - 3 ciclos y 4 sensores hacen un total de 37500 muestras.

El resultado es el siguiente: Los datos los guardamos en un fichero de texto para su posterior análisis:

Electrometro

medidor de resistencia

Conf del sistema

Generador de funciones

Etapa de potencia

Estación de medida

Alm

acenam

iento de datos

Sensor 1

Sensor 2

Sensor 3

Sensor 4 (no operativo)

Figura 3: Proceso de toma de muestras

Figura 4: Resultado de los sensores

Figura 5: Fichero de datos

Proyecto Final de Carrera

9

2.2 Fase 2: Analizar los resultados

Una vez tenemos un número significativo de concentraciones medidas, tendremos almacenadas una importante cantidad de datos. Estos datos los vamos a trabajar desde Matlab. Primero trasladaremos los datos de las medidas desde el .txt a una estructura matlab que contendrá la correlación cruzada de cada sensor (modulo y fase) y desde allí analizaremos la varianza de los datos para poder seleccionar las frecuencias que maximizan la diferenciación de concentraciones.

a) Agrupamos los datos de diferentes concentraciones en una misma estructura de datos

b) Analizamos las componentes frecuenciales para seleccionar las frequencias que

minimizan la varianza dentro de la clase y maximazan la varianza entre las clases. Con estas frequencias entrenamos una red neuronal y finalmente validamos.

Para cada concentración

S4

S1

S2

S3

MLS

Datos alm

acenados

Seleccion

amos el

Con

junto de m

edidas

a agrup

ar

Estrutura de Matlab

Mod

ulo, fase y concentraciones

Selección de frequencias

Estrutura de Matlab

Mod

ulo, fase y concentraciones

VALID

ACIÓ

N

Figura 6: Diagrama de correlación circular cruzada

Figura 7: Diagrama general de analisis de los datos

Proyecto Final de Carrera

10

2.3 Aspectos claves del proyecto

En este punto queremos remarcar aspectos importantes del proyecto, que han condicionado muchas de las decisiones tomadas. Estos permiten que la estación de medida sea útil para varios tipos de sensores y asegurar que la información sea la correcta, sincronizada y suficiente para el análisis posterior.

2.3.1 Requerimientos de los sensores

Cada sensor tiene características y temperaturas de trabajo diferentes y heaters (resistencias calefactores) con rangos de valores desde 100 a 2000 ohms. Si queremos hacer una estación de medida que sea útil, ésta ha de poder ser totalmente configurable. Un punto importante es la potencia que puede suministrar el generador de funciones, esta no es suficiente para alimentar los cuatro heaters de los sensores. Para poder suministrar la corriente a los 4 heaters (uno para cada sensor) hemos incorporado una etapa con 4 fuentes de corriente controladas por tensión (tipo Howland) con ganancia ajustable para adaptarse a cada sensor. Ver el Anexo A: Diseño i fabricación de las fuentes de corriente

2.3.2 Requerimientos de sincronización

El análisis posterior consiste en analizar las variaciones en componentes frecuenciales de la señal medida respecto de la señal pseudoaleatoria generada, la dificultad radica en sincronizar los dos equipos para poder relacionar cada medida con la consigna que le corresponde. La solución empleada ha sido utilizar un trigger generado por el Generador de funciones sincronizado con la consigna de la señal pseudoaletoria, este trigger indica al electrómetro cuando tiene que realizar la medida.

Proyecto Final de Carrera

11

2.3.3 Requerimiento de frecuencia elevada

Para un mejor análisis de las componentes frecuenciales es aconsejable elevar la frecuencia de toma de muestras, a la frecuencia deseada de 10 muestras por segundo, para poder llegar a analizar frecuencias de excitación de 5 Hz. Un problema importante es que el electrómetro solo tiene memoria para almacenar 50 muestras y si esta enviando las muestras por el bus GPIB no puede realizar nuevas medidas. Al aumentar la frecuencia aumentamos el número de muestras y la comunicación entre el PC y el electrómetro resulta crítica para no perder muestras y desincronizar los datos. Se probaron diferentes maneras de adquisición y comunicación en las que se perdían muestras por consiguiente los datos no eran válidos. Estos resultados se pueden observar en las siguientes imágenes: Medida realizada guardando las muestras y enviandolas como esclavo al programa, En los últimos 150 valores, se puede observar que los ciclos estan desfasados La solución fue configurar el electrómetro como “talk only”, de esta manera, al realizar una medida el instrumento la envía directamente por el bus. El inconveniente de este modo es que el electrómetro no es configurable remotamente. Utilizando el modo talk-only las medidas realizadas son validas ya que los ciclos están sincronizados.

Figura 8: Ciclos desfasados

Figura 9: Problema del desfase arreglado

Proyecto Final de Carrera

12

3. Descripción detallada el proyecto

El programa desarollado tiene una gran variedad de paràmetos configurables para poder adaptarse a las necessidades de configuración. Se ha construido una interfaz gràfica para facilitar al investigador el poder ajustar todas las variables del proceso. No es el objetivo explicar como se ha realizado la programación de la interfaz, ya que sería demasiado extenso, lo que se pretende es explicar las opciones implementadas. La interfaz esta divida en las siguientes pestañas:

Figura 10: Vista general del programa

Proyecto Final de Carrera

13

3.1 Pestaña de proyecto En esta pestaña se gestiona la configuración global del proyecto (nombre, sensor, tipo de gases que se quieren detectar) y también se puede guardar o cargar un fichero de configuración de todas las variables ajustables. Al abrir el programa se abre la pestaña del proyecto en la que nos pregunta si queremos cargar los datos por defecto o un archivo de configuración:

Figura 11: Cargar fichero de configuración

Al iniciar el programa carga todos los datos de configuración a las variables del sistema:

- Datos referentes a la señal pseudoaletoria. - Configuración de la fuente de corriente. - Direcciones LAN y GPIB. - Margenes de corriente. - Frecuencia de simbolo y de muestreo. Y se abre la pestaña del proyecto. Donde podemos introducir su nombre, autor, gases y una pequeña descripción del mismo.

Figura 12: Ventana de proyecto

Si deseamos guardar la configuración podemos crear tantos archivos .conf como deseemos.

Proyecto Final de Carrera

14

3.2 Configurar fuente de corriente En esta pestaña podemos ajustar los valores de la fuente de corriente física. Estos valores sirven para calcular la gananicia de la fuente y poder configurar correctamente las tensiones de salida del generador. La fuente de corriente Howland es una fuente de corriente controlada por tensión independiente de la carga que tenga conectada ( si tiene las resistencias correctamente ajustadas). Para un rango de carga de 100 a 800 ohms mantiene el valor de corriente. En el Anexo A esta detallado su diseño.

Figura 13: Ventana de configuración de las fuentes de corriente

Proyecto Final de Carrera

15

3.3 Configurar señal pseudoaleatoria En esta pestaña podemos configurar la señal pseudoaletória, definiendo si es binaria o de multinivel. También definimos la semilla de la secuencia, la generación de una señal pseudoaleatoria esta explicado en el Anexo C: Generación de la señal de modulación de temperatura. La amplitud de la señal va de -1 a 1, en este formato se le envia al generador.Para generar la señal final la multimplica por la amplitud de pico en voltios y suma el offset correspondiente, deesta manera podemos situar la secuencia en los niveles de tensión deseados. Otra opción es establecer una suma de senoides, para ello la frequencia de la señal ha de ser la misma que la frequencia de muestreo.

Figura 15: Configuración de la señal multi-senoidal

Figura 14: Configuración de la señal pseudoaletória

Proyecto Final de Carrera

16

3.4. Conf. Generador Podemos definir la IP del generador y ver el listado de ordenes que se le envian para su configuración [2]. Los valores de las ordenes son calculados según los valores de las variables del programa. También se le envia la secuencia pseudoaletoria pero no se muestra por pantalla por su longitud excesiva.

3.5 Conf. Electrometro Podemos definir la direccion GPIB del electrómetro, parametros de medida de cada uno de los sensores y ver el listado de ordenes que se le envian para su configuración [3].

Figura 16: Imagen de la configuración del generador

Figura 17: Configuración del electrómetro

Proyecto Final de Carrera

17

3.6 Realizar medida En esta pestaña podemos ajustar los valores de corriente deseados en el heater y la frecuencia de generación de la señal pseudoaletoria y la frecuencia de muestreo. También el número de ciclos que deseamos realizar. En la gráfica se puede observar la tensión que proporciona el generador en voltios (blanco), la corriente en mA que va a los heaters (rojo) y la señal del trigger (verde).

Figura 18: Frequencias de excitación y de muestreo

Al apretar START se envían las ordenes de configuración a los equipos y se prepara el fichero donde se van a guardar los datos. Cada fichero contedrá la información de la configuración realizada y de las concentraciones de los gases de esos ciclos de medida.

Figura 19: Concentraciones de gases medidos

Proyecto Final de Carrera

18

3.7 Progreso de la medida actual Observamos el progreso del ciclo de medida, podemos ver la duración prevista de cada ciclo, las medidas que va tomando y las barras de proresso indican el trnscurso de la medida.

Figura 20: Progreso de la medida

3.8 Ficheros del proyecto En esta pestaña podemos contruïr la estructura matlab con los datos que queremos. El primer paso es seleccionar los fixeros txt que queremos incorporar al fichreo .mat Buscamos la carpeta donde tenemos los datos guardados (con el botón Up subimos a la carpeta anterior, y haciendo doble clic entramos dentro de las carpetas.

Figura 21: Directorio del proyecto

Proyecto Final de Carrera

19

Para añadir un fichero a la estructura matlab hacemos doble clic encima de el, al hacer eso el fichero se incorpora a la lista inferior y se visualizan los datos que contiene en las graficas laterales.

Figura 22: Generación del fichero .mat

Las opciones de configuración són las siguientes Señal de referéncia para la correlación: Tipicamente es la Señal de referéncia, es decir la de la excitación. Longitud de muestras a tomar: Es el total de muestras que utilizamos para la correlación Frequencia maxima: Es la frequencia màxima que se va a guardar el el fichero .mat Ciclo: Es el ciclo de medida que se utilizarà para la correlación circular. Opciones e visualización: En la parte inferior izquierda se puede ver el resultado de la correclación circular (módulo) del sensor seleccionado Una vez configurados todos los paramtros procedemos a la creación del fichero .mat

Proyecto Final de Carrera

20

3.9 Conexiones físicas del proyecto:

±15 y GND

Fuentes de corriente

4 Heaters

GND

Trigger Agilent 4349B

(Electrómetro)

GPIB

LAN

Agilent 33500 Series (Generador)

4 Sensores

Señal pseudoaletaória

Sensores

Mezcla de gases

Figura 23: Conexionado de los instrumentos

Proyecto Final de Carrera

21

4. Programa Labview En este apartado explicaremos como se organiza el programa realizado en Labview. La parte gráfica no aporta conocimientos al proyecto, por eso nos centraremos en explicar las partes referentes al proceso de medida y como se almacenan los datos. Imagen general del programa LabView en que están indicadas las diferentes partes:

1

1

a) Bloque para carga y salvado de los datos de configuración en un fichero .conf. b) Interficie gráfica de configuración del programa. c) Proceso de medida, bucle de mediciones y salvado en un fichero .txt. d) Generación de la estructura matlab .mat a partir de los ficheros .txt.

4.1 Proceso de medida, bucle de mediciones y salvado en un fichero .txt

La programación de la recogida de muestras esta resumido en la figura 25

Variables de

configuración

Bucle de recepción i

transformación de datos

Configurar GPIB

Configurar Electrometro

Configurar Generador

Crear fichero de datos

Visualizar y gu

ardar

a b c

d

Figura 24: Vista general de la programación en LabView

Figura 25: Diagrama general de la recogida de muestras

Proyecto Final de Carrera

22

- Inicializaciones - Lanzamiento del ciclo

- Creación del fichero .txt - Configurar equipos remotos - Completar la señal pseuoaleatòria

Bucle de ciclos:

-Visualizar y guardar los datos -Cerrar las conexiones

- Inicializaciones - Lanzamiento del ciclo

- Recogida de muestras - Trata los datos recibidos y los guarda en las posiciones del array - Visualiza los datos que va recibiendo

- Finaliza el ciclo

Figura 26: Esquema general del proceso de medida

Proyecto Final de Carrera

23

4.1.1 Crear fichero de datos

Figura 27: Crear el fichero de datos

El bloque “crea_fichero.vi” se encarga de crear el fichero con los datos del proyecto y de la medida para poder llevar un control de los diferentes experimentos: Abre una ventana de dialogo para introducir las concentraciones de gases presentes en la mezcla a medir. El resultado es el siguiente:

Figura 29: Datos guardados en el fichero txt

Bool: Creación del fichero OK File: Referencia al fichero Bool: Creación del fichero

String: Datos del proyecto Path: Ruta donde guardar los datos

Array: Variables de configuración

Figura 28: Crea_fichero.vi

Proyecto Final de Carrera

24

4.1.2 Configuración de los equipos remotos y completar la señal pseudoaletoria El primer paso para realizar las mediciones es inicializar las comunicaciones y configurar los equipos.

A) Con los datos de configuración crea las ordenes SCPI para inicializar los equipos. El Electrómetro Agilent no está conectado, ya que al actuar en modo Talk Only no se puede configurar remotamente, solo permite una configuración manual.

B) Inicialización de la comunicación TCP/IP, lo primero apagamos la salida de equipo y le enviamos todas las ordenes confeccionadas en el paso anterior.

C) Configuramos el BUS GPIB como “listener”, solo tiene que escuchar e ir recibiendo los datos.

D) Completamos la señal pseudoaletoria. Para poder hacer la correlación circular digital ya que las dos señales han de tener el mismo periodo, es decir, el mismo número de muestras.

E) Tiempo de margen para que los equipos se configuren. F) Inicialización de la gráfica.

E

C

A

B F

D

Figura 30: Configuración de los equipos remotamente

Proyecto Final de Carrera

25

4.1.3 Ciclos de medida El bucle de ciclos de medida se realizará tantas veces como esté configurado. Inicialización del ciclo

A) Activa la salida e inicia el trigger. El trigger

da la señal al generador para iniciar la secuencia y va ordenando al electrómetro que realice la medida.

B) Número de bytes que se reciben por medición (4 sensores * 19 bytes por sensor).

C) Inicializa el número de muestras ledas y el array de medidas.

Bucle de recepción de datos

A) Progreso de la medida, se indica con las dos barras de progreso en el panel frontal. B) Recepción de los datos y construcción del array de medidas con el bloque

“reconstrucción de medidas.vi”. notar que para la recepción de datos en modo listener, en el bloque de GPIB solo se configuran los datos a leer (ninguna dirección GPIB).

C) Visualización de los datos que se van recibiendo.

A

B

C

C B

A

Figura 31: Inicio ciclo

Figura 32: Bucle de recepción de datos

Proyecto Final de Carrera

26

Final del ciclo

A) Con esta orden paramos la señal del trigger hacia el electrómetro y podemos reiniciar la secuencia desde el bloque A del apartado 4.1.3.1 Inicialización del ciclo.

B) Controla el número de ciclos a realizar. C) Muestra por pantalla el histórico de ciclos.

4.1.4 Salvado de datos

A) Bloque que grafica todos los ciclos

superpuestos de cada una de los sensores.

B) Guarda en el fichero .txt todos los datos en formato texto.

C) Apaga la salida del generador y cierra la conexión TCP/IP.

A

B

C

A

B

C

Figura 33: Final del ciclo

Figura 34: Guardar los datos de la medida en el fichero txt

Proyecto Final de Carrera

27

4.2 Código generación del fichero Matlab Para poder analizar los datos de manera ágil i versátil podemos agrupar de manera estructurada los datos de los diferentes experimentos en un mismo archivo .mat, para que el matlab pueda entender los datos y trabajar con ellos. En el apartado hemos visto como configurar la lista de ficheros que queremos compactar, como seleccionar señal de correlación, el ciclo a analizar y el número de componentes frecuenciales. Con estos datos hacemos las correlaciones circulares de todos los ficheros y lo compactamos en una estructura usando MAT-File IO Library for LabVIEW.

El bloque de correlación cruzada circular esta explicado en detalle en el Anexo B.

Figura 35: Correlación y generación del fichero .mat

Proyecto Final de Carrera

28

Al abrir el fichero .mat tenemos los datos ordenados de la siguiente manera:

Figura 36: Fichero .mat abierto en el Matlab

Tenemos 4 estructuras que corresponden a cada uno de los sensores, estas estructuras contienen las FFT de la correlación circular (modulo y fase) y las concentraciones de gases de los experimentos. Se puede observar que tanto Modulo, Fase y Concentraciones tienen 30 filas, estas 30 filas corresponden a cada una de las concentraciones medidas. Las columnas de modulo y fase corresponden a los componentes frecuenciales, y las columnas de Concentraciones son las concentraciones de los 4 gases.

Proyecto Final de Carrera

29

5. Selección de frecuencias y Análisis de los resultados Para seleccionar las frecuencias que mejor nos ayudan a discriminar entre concentraciones vamos a analizar la varianza de cada una de ellas: Calculamos la variación estándar de cada grupo para todas las frecuencias k, y calculamos la variación estándar entre las medias de cada grupo, con esos datos calculamos un factor para poder escoger las mejores frecuencias.

∑=

=N

i

kigruposstnd

kmediasstndkfactor

1

)))(((

))(()(

Con esta formula obtenemos un indicador que nos ayuda a discriminar entre grupos, es decir, las frecuencias que maximizan la diferencia entre clases y minimizan las diferencias dentro de cada clase.

Figura 37: Varianza dentro de cada clase

Figura 38: Varianza entre las medias de cada clase

Proyecto Final de Carrera

30

5.1 Diagrama de flujo:

Inicializar matrizes de datos

Crea matrizes de análisis y de test

Analizar Varianzas

Ordenar Matriz de análisis por grupos de concentraciones

DATOS ANALISIS DATOS TEST

Selección de frecuencias

Construir matriz de TRAIN con las frecuencias seleccionadas

Construir matriz de TEST con las frecuencias seleccionadas

Entrenar Futzzy ARTMAP Entrenar red

Validar datos de test y mostrar resultados

Figura 39: Selección y validación de las frecuencias óptimas

Proyecto Final de Carrera

31

5.2 Funciones programadas: Para facilitar el análisis de datos hemos programado una función Matlab que sirva de base para posteriores análisis de sensores. function Selecciona_frequencias.m Esta función analiza los datos que se le pasan por parámetro para extraer las frecuencias óptimas que maximizan la separación entre clases. También puede entrenar una red neuronal y testear conjuntos de validación. En el anexo D se encuentra el código completo de la función, así como el código de las funciones que utiliza internamente (generar grupos y calcular el factor de varianza). Parámetros necesarios: (Datos,Datos_conce,medidas_test,NUM_f,conce,gaap,neurones,num_nets_entrenar);

Datos = Matriz de datos en que las filas = experimentos; columnas = num de frecuencias ( Datos=S1.Modulo;)

Datos_conce = Matriz de concentraciones (Datos_conce = S1.Concentraciones;) medidas_test = Listado de experimentos que se van a extraer del entrenamiento y

se van a utilizar para la validación NUM_f = Número de frecuencias a seleccionar. Conce = Columna de Datos_conce a analizar Gaap = Ventana mínima de separación entre frequencioas seleccionadas .

Esta función retorna: [dat,tar,data,target, freq] dat,tar,data,target = Conjuntos de datos de entrenamiento y test, con las frecuencias seleccionadas.

Freq = Matriz con las frecuencias seleccionadas

Proyecto Final de Carrera

32

5.3 Ejemplo de funcionamiento: Datos del experimento Las muestras de las que partimos son: 26 conjuntos de muestra con las siguientes concentraciones: 0 = No hay presencia de gas (2) 10= Diferentes concentraciones etanol (8) 20 = Diferentes concentraciones acetona (5) 30 = Mezcla de diferentes concentraciones de etanol y acetona (11) El procedimiento consiste en sacar una muestra , seleccionar las frecuencias, entrenar la FUZZ ARTMAP y validar la muestra extraída, este análisis lo realizamos para cada conjunto de muestras, o sea 26 veces. El resultado es una tasa de error para cada sensor Resultados Sensor1 = 0.6154 Resultados Sensor2 = 0.7308 Resultados Sensor3 = 0.3462 El sensor 2 es el que tiene una mayor selectividad, en un 73% Si analizamos las frecuencias seleccionadas para cada Frecuencias seleccionadas:

- Azul, Sensor 1 - Rojo, Sensor 2 - Amarillo, Sensor 3

Figura 40: Estadistica de frecuencias seleccionadas

Para los 26 conjuntos se seleccionan frecuencias parecidas en los sensores 1 y 2 (que tienen una mayor selectividad) y en un porcentaje alto (>80%) siempre se seleccionan las mismas frecuencias.

Proyecto Final de Carrera

33

El código que analiza los datos : conce=3;

NUM_f=4;

gaap=5;

Datos=[S2.Modulo];

Datos_conce=[S2.Concentraciones];

%Escalado de datos entre 0 y 1

Datos=Datos-(min(min(Datos)));

Datos=Datos/(max(max(Datos)));

Datos_conce=Datos_conce/max(Datos_conce(:,conce));

freq_1=[];

total_ok=0;

total_mal=0;

for i=1:length(Datos(:,1))

%Selecciona frecuencias y crea grupos de entrenamiento con las

%frecuencias seleccionadas

[dat,tar,data,target,freq1]=Selecciona_frequencias(Datos,Datos_conce,i,NU

M_f,conce,gaap);

%F ARTMAP

[viga,wija,wijb,wab]=fzmaptrnexp1(0,0.99,1,1,1,0.001,dat,tar);

[a,ok,nok,nsnc,rateok,viga,wija,vigb,wijb]=fzmaptstok(0,1,1,1,0.001,wija,

wijb,wab,data,target);

%Estadística

total_ok=total_ok+ok;

total_mal=total_mal+nok;

%Estadística de frecuencias seleccionadas

freq_1=[freq_1;sort(freq1)];

end

resultados=total_ok/(total_ok+total_mal)

Proyecto Final de Carrera

34

6. Valoración y trabajos futuros El resultado del proyecto ha sido un sistema configurable y adaptable a los diferentes sensores del grupo de investigación MINOS, tanto por los requerimientos de corriente hasta 20 mA, como las características de las señales a analizar con un espectro de hasta 5Hz, puede realizar 10 muestras por segundo a 4 sensores simultáneamente. El sistema funciona correctamente con el generador y se puede reconfigurar fácilmente a otros equipos de medición disponibles en el laboratorio (Keithley [6]). La dificultad más grande que nos hemos encontrado durante el desarrollo del proyecto ha sido la limitación de memoria del electrómetro, ya que solo dispone de 50 posiciones de memoria para guardar los datos. Este inconveniente supuso la perdida de varios meses de trabajo tratando de enviar los datos al ordenador, encontrando posteriormente que perdía ciclos de medida, es decir, si estaba accediendo a los registros para su envío, no puede guardar nuevos datos. El problema se ha solucionado para poder tener frecuencias de muestreo elevadas como se ha explicado anteriormente. Por lo que se refiere a los trabajos futuros, el proyecto puede ampliarse por varias vías: - Probar el sistema con un sensor con mayor selectividad y un conjunto de entrenamiento amplio. - Mejorar el sistema de selección de frecuencias, utilizando diferentes algoritmos de selección de variables. - Conectar 2 electrómetros controlados por el mismo trigger, para tener 8 canales de medición simultáneos. - Utilizar una resistencia controlada (por tensión o por corriente) conectada a un canal de medición para validar el sistema de sincronización. Y poder testear velocidades de medición mas altas (de 10 a 40 muestras por segundo)

Proyecto Final de Carrera

35

7. Referencias

[1] Improving the performance of micro-machined metal oxide gas sensors: Optimization of the temperature modulation mode via pseudo-random sequences Year: 2006 Author: Alexander Vergara Tinoco Director: Eduard Llobet Valero

[2]

33521A Function / Arbitrary Waveform Generator, 30 MHz http://www.home.agilent.com/agilent/techSupport.jspx?pid=1871159&pageMode=MN&cc=ES&lc=eng [3]

4349B 4 Channel High Resistance Meter, DC http://www.home.agilent.com/agilent/product.jspx?nid=-34124.536879659.00&lc=eng&cc=ES [4] Correlación cruzada http://www.ehu.es/Procesadodesenales/tema8/corre1k.html [5] Fuentes de corriente http://www.ctr.unican.es/asignaturas/instrumentacion_5_IT/IEC_7.pdf [6] Model 6517A Electrometer User's Manual Rev. D http://www.keithley.com/support/keidoc_searchresult?keyword=6517a&item_type=Manual

Proyecto Final de Carrera

36

Anexo A: Diseño y fabricación de las fuentes de corriente A.1 Base teórica [5]

El circuito de Howland es la configuración más típica para diseñar una fuente de intensidad controlada por tensión con capacidad de ser suministrada a una carga con un terminal a tierra. La configuración básica de este circuito es la que se muestra en la figura.

En este circuito se verifica:

Lo

LoLio

vR

Rv

R

vv

R

vvI

+=

−+

−=

1

2

43

1

Eliminando entre ambas ecuaciones, la tensión vo, Resulta:

o

Lio

R

v

R

vI −=

3

siendo, 1234

4

// RRRR

RRo

−=

Cuando en este circuito se balancean el puente constituido por las cuatro resistencias, para que se verifique,

1

2

3

4

R

R

R

R=

La impedancia de salida del circuito Ro, que se ve desde la carga se hace infinita, y en consecuencia la intensidad de salida en la carga se hace independiente de esta, siendo su valor, lo que indica que el circuito se está comportando en su salida como una fuente de intensidad, en la que el valor nominal depende de la tensión de entrada. A fin de incrementar el rango dinámico de salida de la fuente, debe elegirse R2 « R1, siendo un valor razonable (R1 ≈ 10 R2), con el que se consigue prácticamente para la fuente, el rango dinámico del amplificador operacional.

Figura 41: Circuito de Howland

Proyecto Final de Carrera

37

La impedancia de salida de esta fuente, y en consecuencia su prestaciones, son una función crítica del balance de las cuatro resistencias (R1, R2, R3 y R4). Para conseguir altas prestaciones, se necesita introducir una resistencia ajustable (tal como R´1) que permita el ajuste fino del balance,

Una dificultad del circuito de Howland, es que cuando la tensión de la carga sube, el amplificador debe proporcionar una intensidad que supera en muchas veces la que va a atravesar la carga. Esto se puede resolver utilizando el circuito de Howland mejorado, en el que la resistencia R4 e descompone en dos resistencias en serie R4A y R4B. Es fácil demostrar, que en este circuito, si se mantiene el balance entre las cuatro resistencias,

1

2

3

44

R

R

R

RR BA =+

la intensidad de salida es,

i

B

o vRR

Ri

=

41

2 1

Lo cual presenta la ventaja de permitir ajustar la sensibilidad de la fuente con solo disminuir la resistencia R4B, mientras que se pueden mantener altas las otras resistencias del circuito, y con ello se reduce la intensidad que debe ser suministrada por el amplificador.

Figura 42: Circuito de Howland con potenciómetros

Figura 43: Circuito de Howland mejorado

Proyecto Final de Carrera

38

A.2 Diseño e implementación

El diseño realizado es una mezcla de las dos configuraciones anteriores, dividir la resistencia RB en dos para poder aumentar la corriente de salida e incorporar un potenciómetro para balancear las resistencias. Ajustando potenciómetro al 57.4 para cumplir la relación de resistencias Si las resistencias están balanceadas

)1(1

1

13

44

xkR

kx

R

RR BA

−+

⋅=

+

Cumple que ( )

i

B

BAo v

RR

RRi

+=

43

44 1

En este caso la corriente de salida sería ( )

io vi

+=

58

1

4700

58470I = 0.0019 Vin

Para una R4B de 10 Ohms la conversión es por 0.01 Vin

Figura 44: Esquemático y simulación de ganancia 0.002

Figura 45: Esquemático y simulación de ganancia 0.01

Proyecto Final de Carrera

39

Diseño de la placa con las 4 fuentes de corriente con el programa Orcad: Y el posterior enrutamiento de las pistas:

Figura 46: Diseño de la placa con las 4 fuentes de corriente con el programa Orcad

Figura 47: Enrutamiento de las pistas

Proyecto Final de Carrera

40

Imagen con todas las soldaduras realizadas:

Figura 48: Fuentes de corriente montadas

Posteriormente hubo que realizar 4 seguidores de tensión para poder proporcionar a cada fuente una tensión independiente, ya que si conectamos todas las entradas directamente los operacionales se interfieren mutuamente.

Proyecto Final de Carrera

41

Anexo B: Cálculo de la FFT de la correlación cruzada circular

El cálculo de la función de correlación cruzada [4] de dos señales [ ]nx1 y [ ]nx2 puede acelerarse haciendo uso de la expresión:

[ ] [ ] [ ]{ }kXkXFN

jc DD 2*1

12

1⋅⋅= −

donde 1−

DF representa la IDFT. Esta técnica implica el cálculo de dos DFT´s y una IDFT, cada una de las cuales puede ser evaluada mediante el correspondiente algoritmo FFT. Cuando el número de elementos de las secuencia es suficientemente grande es mucho más rápido este cálculo que el obtenido directamente.

Veamos la demostración:

Sean [ ]px1 , [ ]rx2 y [ ]nx3 tres secuencias periódicas de longitud N, y [ ]kX1 , [ ]kX 2 , [ ]kX 3 sus correspondientes DFT´s. Escribamos la expresión

[ ] [ ] [ ]kXkXkX 2

*13 ⋅=

[ ] [ ]∑−

=

⋅⋅⋅−

⋅=1

0

2

11

N

p

pkN

j

epxkX

π

[ ] [ ]∑

=

⋅⋅⋅

⋅=1

0

2

1*1

N

p

pkN

j

epxkX

π

[ ] [ ]∑−

=

⋅⋅⋅−

⋅=1

0

2

22

N

r

rkN

j

erxkX

π

Sustituyendo estas expresiones en [ ] [ ] [ ]kXkXkX 2*13 ⋅=

[ ] [ ] [ ] [ ] [ ]∑∑∑∑−

=

=

−⋅⋅⋅−−

=

⋅⋅⋅−−

=

⋅⋅⋅

⋅⋅=⋅⋅=1

0

1

0

)(2

21

1

0

2

2

1

0

2

13

N

p

N

r

rpkN

jN

r

rkN

jN

p

pkN

j

erxpxerxepxkX

πππ

ahora bien [ ] [ ]∑

=

⋅⋅⋅

⋅=1

0

2

33

1 N

k

nkN

j

ekXN

nx

π

Sustituyendo [ ]kX 3 por la relación anterior queda

[ ] [ ] [ ]∑∑∑−

=

=

=

+−⋅⋅⋅

⋅⋅=1

0

1

0

1

0

)(2

213

N

k

N

p

N

r

nrpkN

j

erxpxnx

π

[ ] [ ] [ ]∑ ∑ ∑−

=

=

=

+−⋅⋅⋅

⋅⋅=

1

0

1

0

1

0

)(2

213

1 N

p

N

r

N

k

nrpkN

j

erxpxN

nx

π

Proyecto Final de Carrera

42

Cuando 1+= nr el término Ne

N

k

nrpkN

j

=∑−

=

+−⋅⋅⋅1

0

)(2π

. Cuando 1+≠ nr

dicho término se puede evaluar como una serie geométrica de la forma:

x

xaxa

NN

n

n

−⋅=⋅∑

= 1

11

0 . En este caso : )(

2

)(2

)(2

)(2

1

0

)(2

1

1

1

1nrp

Nj

nrpj

nrpN

j

NnrpN

jN

k

nrpkN

j

e

e

e

ee

+−⋅⋅

⋅+−⋅

+−⋅⋅

⋅+−⋅⋅−

=

+−⋅⋅⋅

−=

−=∑ π

π

π

ππ

Donde 1)(2 =+−⋅ nrpje π.

En consecuencia la ecuación [ ]nx3 se reescribe como:

[ ] [ ] [ ] [ ]∑ ∑

=

=

+−⋅⋅⋅=1

0

1

0213

1 N

p

N

r

nrpNrxpxN

nx δ

en la cual [ ] 1=+− nrpδ cuando 1+= nr y [ ] 0=+− nrpδ cuando 1+≠ nr .

Simplificando teniendo en cuenta 1+= nr queda finalmente

[ ] [ ] [ ]∑

=

+⋅=1

0213

N

p

npxpxnx

ó [ ] [ ] [ ] [ ]ncnpxpx

Nnx

N

N

p

12

1

0213

11=+⋅= ∑

=

donde le término de la derecha [ ]nc12 es la correlación cruzada de [ ]px1 y [ ]px2 .

Como [ ] [ ]{ }kXFnx D 31

3−=

[ ] [ ]{ } [ ] [ ]{ } [ ]nckXkXFN

kXFN

nxN

DD 122*1

13

13

111=⋅== −−

Esta correlación es circular porque todos los datos son periódicos con periodo N.

Proyecto Final de Carrera

43

En nuestro proyecto nos interesa la FFT de la correlación cruzada circular, por el que la IDFT no la realizamos.

Solución en Labview:

Bloque completo donde se puede seleccionar sensor, referencia, ciclo de medida y numero de muestras.

Figura 49: Correlación cruzada circular en LabView

Proyecto Final de Carrera

44

Anexo C: Generación de la señal de modulación de temperatura C.1 Señales Pseudo Aleatorias Binarias (PRBS) Labview posee el módulo de generación de PRBS de máxima longitud, escogiendo el orden del polinomio. C.2 Señales Pseudo Aleatorias multi-nivel (PRBS) En este caso generamos las señales utilizando los polinomios de Church. La función para N niveles i de orden q:

=>

==

∑−

=

N

nQnkUo

kUok

Ukq

n

1

0

)(*)(mod)(0

1)0(0

Y el correspondiente código Labview.

Figura 51: Señales Pseudo Aleatorias multi-nivel

C.3 Señal multi-senoidal Con las frecuencias seleccionadas podemos crear una señal sumando las senoides.

Figura 52: Señal multi-senoidal

Figura 50: Señales Pseudo Aleatorias Binarias

Proyecto Final de Carrera

45

Anexo D: Código MATLAB de análisis de Datos: D.1 Función Selecciona_frecuencias.m function

[dat,tar,data,target,freq]=Selecciona_frecuencias(Dades_M,Datos_conce,med

idas_test,NUM_f,conce,gaap)

freq=[0];

%funcion que crea los grupos de entrenamiento y de test

[DadesA,C_DadesA,Test,C_Test]=crea_grupos_ind(Dades_M,Datos_conce,medidas

_test);

%Función que clasifica los grupos en diferentes matrizes para su analisis

%de la varianza y retorna un array con el factor de Varianza dentro de

las

%classes e intraclasses

[factor]=Selec_freq_factor(DadesA,C_DadesA,conce);

%grups i a entrenar

dat=[];

data=[];

target=[];

tar=[];

f_select=1;

for i=1:NUM_f

[valm,m]=max(factor);

freq(f_select)=m;

f_select=f_select+1;

dat=[dat DadesA(:,m)];

if medidas_test(1)>0

data=[data Test(:,m)];

end

for ik=m-gaap:m+gaap

if ik>0

if ik<=length(factor)

factor(ik)=0;

end

end

end

end

target=C_Test(:,conce);

tar=C_DadesA(:,conce);

end

Proyecto Final de Carrera

46

D.3 Función de analisis de la varianza Selec_freq_factor.m

function [factor]=Selec_freq_factor(DadesA,C_DadesA,conce)

varian=zeros(50,length(DadesA(:,1)),length(DadesA(1,:)));

len=[];

len=[len;C_DadesA(1,conce) 1];

for k=1:length(DadesA(1,:))

varian(length(len),len(length(len(:,1)),2),k)=DadesA(1,k);

end

for i=2:length(DadesA(:,1))

surt=0;

for j=1:length(len(:,1))

if len(j,1)==C_DadesA(i,conce)

len(j,2)=len(j,2)+1;

for k=1:length(DadesA(1,:))

varian(j,len(j,2),k)=DadesA(i,k);

end

surt=1;

j=length(len(:,1));

end

end

if surt==0

len=[len;C_DadesA(i,conce) 1];

for k=1:length(DadesA(1,:))

varian(length(len),len(length(len(:,1)),2),k)=DadesA(i,k);

end

end

end

%Inicialización y reseteo de las matrices

mitjes=[];

stand=[];

mitjes=zeros(length(len(:,1)), length(varian));

stand=zeros(length(len(:,1)), length(varian));

%Cálculo de la varianza de las frecuencias de cada grupo

%y el valor medio de los grupos

for i=1:length(len(:,1))

A=[];

A=zeros(len(i,2),length(varian));

for j=1:len(i,2)

for k=1:length(varian)

A(j,k)=varian(i,j,k);

end

end

mitjes(i,:)=mean(A);

stand(i,:)=std(A);

end

%Calculo del factor discriminatorio entre grupos para cada frecuencia

factor=[];

stand_mitjes=[];

factor=zeros(1,length(mitjes));

stand_mitjes=std(mitjes);

for i=1:length(mitjes)

for j=1:length(len(:,1))

if factor(i)<stand(j,i)

factor(i)=stand(j,i);

end

end

factor(i)=stand_mitjes(i)/factor(i);

end

end

Proyecto Final de Carrera

47

D.4 Función de creación de grupos crea_grupos_ind.m function [DadesA,C_DadesA,Test,C_Test]=

crea_grupos_ind(M,Concentraciones,medidas_test)

R=zeros(1,length(M(:,1)));

DadesA=[];

Test=[];

C_Test=[];

C_DadesA=[];

total_m=length(M(:,1));

R=[medidas_test 0];

j=1;

for i=1:total_m

if i==R(j)

Test=[Test ;

M(i,:)];

C_Test=[C_Test ;

Concentraciones(i,:)];

j=j+1;

else

DadesA=[DadesA;

M(i,:)];

C_DadesA=[C_DadesA;

Concentraciones(i,:)];

end

end