adquisición de datos, arduino-matlab, comunicación mediante xbee

101
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica Página 1 Ciencias Básicas e Ingeniería. Ingeniería en Electrónica. Reporte de la UEA Estancia Industrial de Ingeniería Electrónica. Alumno: Pérez Miguel Ángel 208302929 Asesor: Reyes Ayala Nicolás. Responsable en la Empresa y Director del Proyecto para el IMP Dr. Reyes Villegas Faustino Martín Ficha: IMP_12697. Trimestre: 13I

Upload: cinvestav

Post on 12-Jan-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 1

Ciencias Básicas e Ingeniería.

Ingeniería en Electrónica.

Reporte de la UEA Estancia Industrial

de Ingeniería Electrónica.

Alumno:

Pérez Miguel Ángel 208302929

Asesor:

Reyes Ayala Nicolás.

Responsable en la Empresa y Director del Proyecto para el IMP

Dr. Reyes Villegas Faustino Martín Ficha: IMP_12697.

Trimestre: 13I

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 2

Índice.

1. Marco Tecnológico.

1.1 Estaciones meteorológicas.

1.1.1 Clima y tiempo.

1.1.2 Escalas de las estaciones Meteorológicas.

1.2 Sistemas de sensores inalámbricos.

1.3 XBEE.

1.3.1 Acceso al medio.

1.3.2 Verificación de error y reconocimiento.

1.3.3 Encapsulación.

1.3.4 Protocolos XBEE

1.3.5 Configuración XBEE punto a punto.

1.3.6 Estilo y características XBEE

1.4 Arduino.

1.4.1 ¿Por qué utilizar Arduino?

1.4.2 Versiones y características de Arduino.

1.4.3 Arduino PRO-MINI en la red de sensores.

1.4.4 Software Arduino.

1.5 Matlab.

1.5.1 Matlab y la comunicación con el Hardware.

1.5.2 Interfaz Gráfica de Usuario (GUI).

2. Plataforma meteorológica, sistema de adquisición de datos

2.1 Lectura de datos.

2.2 Comunicación inalámbrica.

2.3 Interfaz gráfica.

3. Lectura de datos y comunicación inalámbrica.

3.1 Lectura del dato.

3.2 Acoplamiento y multiplexaje de los sensores.

3.3 Implementación de la comunicación inalámbrica.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 3

4. Circuito transmisor.

4.1 Fuente de alimentación y regulador de voltaje.

4.2 Control.

4.3 Multiplexaje y entradas de sensores.

4.4 Radio.

4.5 Algoritmo del circuito transmisor.

4.6 Programación del circuito transmisor.

5. Circuito receptor.

5.1 Tarjeta Xbee Explorer USB.

5.2 Configuración Xbee para la comunicación.

5.3 Comunicación con el circuito transmisor.

6. Interfaz Gráfica.

6.1 Interfaz de la adquisición de datos.

6.2 Bloque de conexión.

6.3 Bloque de control de medición de datos.

6.4 Bloque de selección de variables.

6.5 Bloque Pantalla.

6.6 Bloque de visualización de las variables atmosféricas.

6.7 Bloque de fecha y hora.

6.8 Ecuación del sensor de temperatura.

6.9 Ecuación del sensor de humedad.

6.10 Programación de la interfaz.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 4

Introducción.

La obtención de datos atmosféricos es muy importante en el monitoreo de gases de

efecto invernadero en la atmosfera, y se lleva a cabo con plataformas instrumentadas,

denominada estaciones meteorológicas. Actualmente en el mercado se encuentran gran

variedad de estaciones meteorológicas que permiten leer las diferentes variables de

interés cumpliendo varios objetivos, sin embrago, resulta complicado su uso y aplicación

al momento de describir los componentes electrónicos internos y buscar integrarlos a un

diseño propio para la adquisición de datos atmosféricos y otros aspectos, requeridos

como son Telecomunicación, miniaturización, almacenamiento y control de datos

atmosféricos. El presente documento describe el diseño y construcción de una estación

meteorológica que sea capaz de cumplir con lo anterior. Partiendo de la lectura de datos,

transmisión inalámbrica, adquisición y almacenamiento de datos. Cada etapa presenta

un acoplamiento de componentes electrónicos tales como transductores, controladores,

transmisores de radiofrecuencia, programación de la secuencia de control e interfaz

gráfica. Da tal forma que en conjunto se logre un diseño apropiado de la estación

meteorológica miniaturizada.

Al presentar el desarrollo del diseño se obtendrá la plataforma capaz de adquirir los datos

atmosféricos requeridos, involucrando en el acoplamiento tecnologías apropiadas al

diseño. La plataforma de hardware Arduino facilita la lectura de transductores, la

comunicación a una PC y con el sistema de comunicación inalámbrica. XBEE es una

tecnología específica y estándar de redes inalámbricas personales, utilizada en este

trabajo. El desarrollo del software presenta la Interfaz Gráfica de Usuario Matlab (GUI).

Aunque Java es el lenguaje más habitual para crear GUI, es muy lenta para hacer

cálculos eficientemente y es aquí donde Matlab es más poderoso. También las

aplicaciones de estas tecnologías son limitadas, trabajando en rangos de operación

apropiados para el acoplamiento.

Con la herramienta naciente del proyecto, se obtendrán datos que pueden causar un

impacto en la toma de decisiones en el monitoreo de gases atmosféricos de efecto

invernadero en la atmosfera. Algunas otras variables son necesarias e importantes para

cálculos y análisis de los mismos. Por parte de la comunicación, las redes de monitoreo

inalámbrico se han convertido en la actualidad de mayor importancia y se convierten en

una herramienta interesante en el campo de la ingeniería de telecomunicaciones, los

sensores tienen que estar dentro de esa red detectando los cambios apropiados. La

explicación de la detección de los cambios es la parte importante que se tiene que

interpretar.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 5

Objetivo General:

Realizar el diseño, implementación y/o construcción de un sistema miniaturizado de

comunicación inalámbrica, transmisión y análisis de la información de señales, de

datos atmosféricos utilizados en la medición de emisiones.

Objetivos Particulares:

Aplicar los fundamentos electrónicos aplicados en el diseño y construcción forma

inalámbrica de un sistema de comunicación, transmisión y análisis de la información

de señales.

Aplicar los conocimientos de los principios de diseño de sistemas digitales y sistemas

de control e instrumentación.

Aplicación de conocimientos en comunicaciones, medición remota e interfaz grafica y

monitoreo.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 6

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 7

1. Marco Tecnológico.

En esta primera parte definimos las tecnologías que han sido seleccionadas para la

implementación y diseño de la plataforma meteorológica, siendo la información que nos

ha ayudado en la comprensión y selección de las tecnologías existentes en el mercado.

En esta primera parte se consideran conceptos básicos utilizados en el proyecto de la

Estancia Industrial y fundamentalmente las actividades realizadas en esta primera parte

se relacionan a la investigación documental del estado del arte de las tecnologías

identificadas con posibilidad de considerarse en el presente trabajo:

Definición de las estaciones meteorológicas: Se ha investigado la definición y

las principales variables que se deben medir en una estación meteorológica

comercial.

Definición de una red de sensores inalámbrica: Se ha relacionado a la

plataforma meteorológica implementada con una red de sensores inalámbrica.

Definiendo la arquitectura de la misma: microcontrolador, sensores y radio.

Definición de la comunicación inalámbrica: Se ha seleccionado la tecnología

XBEE, al seleccionarla se han estudiado los protocolos de comunicación y

configuración del radio XBEE. Dentro de la investigación se han definido los

conceptos de error al transmitir el dato, empaquetamiento y acceso al medio.

Señalando también características del radio como: Potencia de salida, alcance y

voltaje de operación.

Definición del microcontrolador: en esta parte se ha seleccionada la tecnología

ARDUINO. Seleccionando la placa Arduino Mini PRO se ha reportado también el

tipo de software que utiliza la tarjeta ARDUINO

1.1 Estaciones meteorológicas.

La meteorología es la rama de la física que estudia los fenómenos que existen y aparecen

en la atmosfera. En el pasado el hombre aprendió a predecir los cambios del tiempo

mediante la observación, dándose cuenta de los cambios que lo benefician o dañan. En la

actualidad, con el crecimiento urbano y tecnológico el hombre han extendido sus sentidos,

que son los instrumentos meteorológicos; con el fin de predecir los cambios que lo dañan.

Monitoreando los gases tóxicos que se encuentran en la atmosfera permitiendo medir,

registrar y procesar la información que se obtiene de la predicción del tiempo y la

atmosfera, sin necesidad de hacer observaciones directas mediante estaciones

meteorológicas, que conllevan el uso de sistemas inalámbricos. En el campo de la

atmosfera se puede sacar provecho de los dos métodos: observar y medir.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 8

Actualmente las estaciones meteorológicas se aplican en distintas áreas de la

investigación, sobre todo, en ciencias de la atmósfera, en donde los datos obtenidos a

través de ellas, se utilizan en análisis atmosféricos funcionando como predictores;

también, se utilizan como pronosticadores y alertas de fenómenos naturales, o, para

operaciones locales de pronósticos hidrológicos y agrometeorológicos. En todos los casos

la estación meteorológica debe cumplir un grado de exactitud necesaria para describir el

valor de la variable para un fin en específico, esto se le llama representatividad.

1.1.1 Clima y tiempo.

Se pude definir clima1 al estado de las condiciones de la atmósfera, en muchos casos se

le relaciona con la temperatura y las observaciones sobre la precipitaciones. A veces se le

hace relación con el tiempo, sin embargo, no tiene el mismo significado. El clima lo

determinan:

a) La altura sobre el nivel del mar.

b) Su distancia a grandes masas de agua.

c) Su orología.

El tiempo se refiere a los cambios rápidos que se presentan en la atmósfera, en cosas de

horas o días de un lugar en específico. Los factores del tiempo son los siguientes:

a) Presión atmosférica.

b) Velocidad y dirección del viento.

c) Temperatura.

d) Humedad del aire.

La vinculación tiempo-estación meteorológica se relaciona muy adecuadamente debido

que muchas estaciones existentes en el mercado registran los factores del tiempo. Los

requerimientos de mediciones del diseño de la plataforma meteorológica instrumentada

que debe registrar son los siguientes2:

1. Tiempo presente.

2. Tiempo pasado.

3. Dirección y velocidad del viento.

4. Temperatura.

5. Humedad relativa.

6. Presión atmosférica.

7. Radiación solar.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 9

Estas variables están presentes en el diseño, dónde cada a una se le puede asignar una

técnica para el registro y obtención de sus valores a través de sensores.

1.1.2 Escalas de las estaciones meteorológicas.

En particular las distintas estaciones meteorológicas tienen una escala espacial y

temporal definida para realizar sus promedios, para definir la red de observaciones

necesaria con la relación del fenómeno que se quiere estudiar. Entonces, la escala del

pronóstico tiene una estrecha relación con la escala temporal del fenómeno. Ejemplo:

para detectar cualquier fenómeno de pequeña escala y de variaciones rápidas en el

tiempo y realizar su pronóstico del tiempo a muy corto plazo se requieren observaciones

más frecuentes, provenientes de la red de observaciones sobre un área limitada. Con lo

anterior, las escalas meteorológicas se clasifican como:

Tabla 1.1 Clasificación de las escalas meteorológicas (Renom, Madeleine. Principios básicos de las

mediciones atmosféricas, 2011).

Con base en la tabla 1.1, la Escala Local es la que más se acerca a los requerimientos

solicitados, dedicado al monitoreo de contaminación atmosférica, siendo también la base

para el diseño de nuestra estación meteorológica. Se considera una distancia máxima de

3 Km, teniendo una estación base y la estación meteorológica comunicadas entre sí a

través de una red inalámbrica. Para la red se sugiere una comunicación de punto a punto,

posteriormente se puede considerar de punto a multipunto, para abarcar un área

geográfica más extensa.

Finalmente señalamos las características importantes de la plataforma meteorológica:

Miniaturización. Parte principal del diseño, también es la causa por la que no se

decidió implementarla con una estación meteorológica existente en el mercado.

Comunicación inalámbrica punto a punto, con alcance máximo de 2 Km al aire libre.

Registrar: Temperatura, humedad relativa, presión atmosférica. Radiación solar,

velocidad y dirección del viento.

CLASIFICACIÓN DISTANCIA APLICACIÓN

Micro escala Menor a 100 metros Agrometeorología: Evaporación

Escala Local Entre 100 metros y 3 Kilómetros

Contaminación atmosférica, tornados

Meso escala De 3 a 100 kilómetros Tormentas, brisa de mar.

Escala Sinóptica De 100 a 3000 Kilómetros.

Frentes, ciclones, clusters nubosos

Escala Planetaria Mayor a 3000 Kilómetros Ondas largas en altura.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 10

1.2 Sistemas de sensores inalámbricos.

Durante los años 90´s ha surgido de revolución de las redes, tal que las personas y las

organizaciones intercambian información y se coordinan. Los avances son tan notorios

que se han desarrollado mecanismos distribuidos, diminutos, baratos y de bajos consumo.

Un ejemplo claro es la telefonía celular. Estos dispositivos son cada vez más capaces,

prometiendo mucho como aspectos de configuración y baja probabilidad de fallar. Todo

queda enlazado entre sí dentro de redes inalámbricas formando desde un entorno simple

hasta el más complejo.

La parte de la tecnología de sensores inalámbricos, tampoco se podía quedar atrás y se

ha desarrollado aventajando los campos de aplicación como defensa, agricultura, medio

ambiente o tráfico3.

La tecnología de redes de sensores se basa en el uso de sensores o actuadores con

capacidad de recibir información del entorno o de realizar alguna acción en él. Estos

sensores están conectados a dispositivos electrónicos con capacidad de procesamiento

de comunicación inalámbrica. Cada nodo de la red consta de un microcontrolador,

sensores y transmisor/receptor, y puede formar una red de muchos nodos. Cada nodo

debe procesar una cantidad limitada de datos, coordinando cada sensor para realizar una

tarea específica.

Una ventaja del sistema de sensores inalámbricos es que, en muchos casos, se requieren

demasiados sensores para evitar obstáculos físicos que obstruyan la línea de

comunicación. El medio que va a ser monitorizado no tiene una infraestructura, ni para el

suministro energético, ni para la comunicación. Por ello es necesario que los nodos

funcionen con pequeñas fuentes de energía y que se comuniquen mediante canales

inalámbricos. En la siguiente figura se muestra la arquitectura de cada nodo de la red de

sensores.

Figura1.1 Arquitectura física de un nodo de red de sensores (Aplicación de las

redes de sensores inalámbricos a la industria nuclear. Tecnatom).

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 11

Los elementos a considerar en cada nodo de una red de sensores son:

a) Sensores: Sus puntos críticos de estas aplicaciones suelen ser el tamaño y

consumo, en los casos cuando el nodo se despliega para obtener la información.

Operan de manera autómata sin acceder a fuentes de energía externa.

b) Capacidad de proceso de los nodos: En la arquitectura todos los nodos tiene un

microcontrolador. Las capacidades de este dispositivo deben considerarse en

conjunción de consumo, autonomía y velocidad de procesamiento.

c) Capacidad de las comunicaciones: En muchas aplicaciones se utiliza el

protocolo 802.15.4 o el Bluetooth (ambos de banda libre a 2.4 GHz). Este protocolo

tiene un alcance de decenas de metros. En otros caso se utiliza el protocolo 802.11

permitiendo mayores alcances (centenares de metros), pero a cambio de una

menor autonomía.

d) Software básico: Los microcontroladores ejecutan software normalmente sobre

sistema operativos muy reducidos. Pero son capaces de procesar la información

obtenida de un nodo.

e) Software de aplicaciones: Las aplicaciones en redes de sensores se limitan a

tener medidas de entorno y transmitirlas un nodo referido. Actualmente estos

nodos tiene una mayor capacidad que le permiten tener más inteligencia como son:

incluir seguridad en sus transmisiones de datos o realizar decisiones de forma

distribuida en base a las condiciones de la red, como niveles de energía en los

nodos.

La aplicación en el Control del Impacto Ambiental es el campo con mayor experiencia en

las redes de sensores y su primero aplicación “natural”. Sin embargo no existen muchas

referencias comerciales que integren la medida de la actividad radiológica en redes de

sensores, salvo de los laboratorios americanos, como Sandia4 o Los Alamos5, más bien

orientadas a emergencias que a la monitorización de plantas.

Aunque en la arquitectura se señalan los componentes más básicos e indispensables

para un nodo de red de sensores, es necesario tener en cuanta un destinatario de los

datos obtenidos. Otro aspecto importante es que en un nodo de red de sensores existen

cierto número de sensores a leer. Es dónde el microcontrolador hace su trabajo, creando

un algoritmo para conocer qué sensor leer y cuando hacer esta lectura. Por ello hemos

modificado la arquitectura del único nodo de sensores. La modificación se muestra en la

siguiente imagen.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 12

Figura 1.2 Arquitectura de la plataforma meteorológica.

1.3 XBEE.

El modem de radiofrecuencia XBEE de Digi International es un transceptor inalámbrico.

El XBEE funciona mediante un protocolo completamente implementado hacia la

comunicación de datos, con las características necesarias para generar una red robusta

de sensores inalámbricos. Características tales como direccionamiento, reconocimiento y

reintento, ayudando a garantizar la entrega segura de los datos en el nodo deseado.

XBEE también tiene características adicionales aparte de la comunicación de datos, para

utilizarlos en el monitoreo y control de dispositivos remotos6.

Muchos módulos inalámbricos para microcontroladores simplemente envían y reciben

datos en la frecuencia proporcionada. Es hasta el usuario final que quiere obtener los

datos o su hardware de aplicación cuando se enfrentan a los siguientes problemas, como

las reglas de acceso de medios, verificación de datos, comprobación de error en la

entrega y en varios nodos de redes qué nodos aceptan y utilizan los datos. Los

dispositivos como XBEE que utilizan un protocolo de red puede facilitar el trabajo del

programador en el manejo de estas tareas.

Al enfrentarse con los problemas de la red, se consideran las soluciones para garantizar

un flujo adecuado de la comunicación. Ciertas reglas y protocolos de la comunicación se

utilizan para asegurar que el mensaje fluya correctamente desde el emisor al receptor a

través del medio, similar al espacio de aire cuando una persona habla.

1.3.1 Acceso al medio.

En conversaciones entre dos o más personas, es importante que dos personas no hablen

al mismo tiempo. El mensaje de uno o ambos no pueden pasar al receptor o chocan

creando confusión al oyente. En términos de redes inalámbricas el acceso al medio se

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 13

bloquea causando un choque en el flujo de los datos.

Los módulos XBEE al igual que las personas tienden

a esperar una apertura antes de empezar a

comunicarse. Cuando dos ven la apertura para

comunicarse y ambos comienzan a hacerlo, al mismo

tiempo se señala el problema, retrocediendo y

llegando a una negociación.

A veces en las redes inalámbricas, el mensaje

puede ser para todos o solamente para uno, es por

ello que se le asignan una dirección a cada dispositivo. Esta dirección permite que los

datos enviados puedan ser utilizados por un dispositivo (punto a punto) o por un grupo

entero de dispositivos (punto a multipunto). En muchos casos los nodos reciben la

información enviada, pero si los datos no contienen su dirección ignoran el mensaje y sólo

el dispositivo con la dirección correcta utiliza el mensaje.

La dirección del mensaje es muy importante. Por ejemplo: En un grupo de clase, un

alumno escucha una pregunta, para que el alumno conteste correctamente tiene que

saber quién mencionó su nombre y le hizo la pregunta. En las redes, parte de los datos

enviados incluye la dirección de origen de quién envió el mensaje con el fin de responder

continuando con el flujo de la programación.

1.3.2 Verificación de error y reconocimiento.

Siempre es importante que las palabras que hablamos sean entendidas por las demás

personas. Al pasar datos en una red, es importante verificar que el mensaje fue recibido y

los datos no contengan ningún error. Una forma sencilla de comprobación de errores es

sumar todos los valores de bytes a enviar y añadir ese valor a los datos enviados. En la

recepción, se realiza la misma operación matemática sobre los datos recibidos. El valor se

compara con el valor de la suma recibida. Si no coincide el valor, los datos contienen

errores y no es reconocido. Si el mensaje no se recibe o contiene errores, el nodo

receptor no ignora la recepción y realiza reintentos de transmisión de un nuevo envío.

1.3.3 Encapsulación.

Al igual que cuando escribimos una carta, no nos limitamos a escribir la carta y dejarla en

el buzón hasta que llegue al destinatario. La carta debe ser colocada en un sobre y

dirigida, asegurándose que será recibida y leída por la persona correcta, incluyendo la

dirección de retorno para que el destinatario se asegure de quién la escribió. En una red

los datos se transfieren de una manera similar. El mensaje se empaqueta con otros datos

que el protocolo requiere, como se ve en la Figura 1.4.

Figura 1.3 Confusión en la comunicación

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 14

Figura 1.4 Encapsulación de los datos en un Xbee

Estos datos que se añaden son: dirección de origen, dirección de destino, valores de

comprobación de errores. Todo este empaquetamiento ayuda a asegurar la entrega

correcta al nodo deseado.

1.3.4 Protocolos XBEE.

XBEE utiliza el protocolo IEE 802.15.2, este protocolo se conoce como de baja velocidad.

Proporciona 250 Kbps de rendimiento de datos entre los nodos de la red. Aunque no se

pretende para grandes volúmenes de datos, tales como archivos de imagen, su uso está

enfocado en sistemas de supervisión y control, comúnmente como una red de sensores

inalámbricos.

En comparación con Bluetooth (con protocolo IEE 802.15.1), XBEE está diseñado como

un protocolo mucho más sencillo con menores tasas de transferencia de datos (250 Kbps

en comparación con 1 Mbps). Bluetooth fue diseñado como un reemplazo de los cables

periféricos y se utiliza en las comunicaciones entre dispositivos portátiles, tales como

teléfonos, lo que requiere acceso de seguridad7.

1.3.5 Configuración XBEE punto a punto.

Para configurar un XBEE, es necesario tener como hardware un convertidor que emule un

puerto serial en la PC. Con ayuda de la hyperterminal se pueden enviar los comandos AT

necesarios para que el XBEE pueda ser configurado8. Existe una lista amplia de los

comandos AT, pero los comandos AT básicos para configurar dos XBEE para la conexión

punto a punto son las siguientes:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 15

FUNCIÓN COMANDO PARÁMETRO

PAN ID ATID Cualquier dirección entre 0 y 65534.

Dirección ATMY Cualquier dirección única entre 1 y 255.

Dirección destino (parte alta)

ATDH 0, indica un dirección de 16 bits.

Dirección destino (parte baja)

ATDL 2, indica la dirección del XBEE con el que se necesita comunicar.

Modo comando +++ Prepara al XBEE en modo comando, una vez que se presiona +++ se recibe un OK, asegurando que el XBEE está listo.

Guardar cambios ATWR Guarda los cambios en los comandos que se han modificado en el XBEE.

Tabla 1.2 Comandos básicos AT para configurar una conexión punto a punto

PAN ID: Es el número de la Red de Área Personal. Es un identificador único para

la red. Sólo los XBEE asignados a un PAD ID pueden comunicarse entre sí. En

nuestro caso utilizaremos el número 3001

Dirección: Esta es la dirección origen única para cada XBEE.

Dirección destino parte alta: Representa la primera mitad de la dirección que

queremos habilitar. En los módulos XBEE se pueden tener direcciones de hasta 64

bits y esta es la dirección de la parte más alta. Como no se necesitaran enviar

datos extensos la pondremos en cero.

Dirección destinos parte baja: Esta dirección se utiliza para localizar el XBEE con

el que se tenga que comunicar. Se tiene que asegurar que coincida con el

parámetro de dirección (ATMY) del XBEE con el que se quiere hablar.

En la siguiente tabla se muestra el orden de los comandos introducidos a dos XBEE para

configurarlos en una conexión punto a punto.

COMANDO XBEE1 XBEE2

+++ Modo comando Modo comando

ATID 3001 3001

ATMY 2 1

ATDH 0 0

ATDL 1 2

ATWR Guarda cambios Guarda cambios

Tabla 1.3 Secuencia de los comando AT para configurar una conexión punto a punto

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 16

Podemos ver los comandos en la

hyperterminal en la siguiente imagen. Cada

que se envía un comando se recibe un OK

como respuesta, asegurándonos que es un

comando correcto. Los comandos de la parte

izquierda es el XBEE1 y el de la derecha el

XBEE2. Ambos tiene una comunicación

bidireccional, con esta configuración ambos

pueden ser transmisores y receptores.

Recordando que el parámetro ATMY debe

coincidir con el parámetro ATDL de los

XBEE que se deseen comunicar.

1.3.6 Estilo y características de XBE.

El módulo XBEE tiene varias versiones, pero todos tienen los pines de salida similar a la

figura mostrada, Figura 1.6.Las diferencias entre las versiones de XBEE incluyen la salida

de potencia, estilo de antena, frecuencia de operación y capacidades de la red.

Figura 1.6 Pines de entrada y salida del XBEE

Aunque se tienen muchos pines típicamente se conectan los de la Figura 1.7.

Figura 1.7 Conexión típica del XBEE

Figura 1.5 Secuencia de configuración de dos XBEE en la Hyperterminal

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 17

El estilo de XBEE con protocolo 802.15.4 se le denomina de Serie 1 y permiten una

conexión punto a punto o punto a multipunto. El XBEE y XBEE-PRO casi son idénticos en

el funcionamiento la diferencia es que el XBEE-PRO es más grande en cuanto a tamaño y

tiene una mayor potencia de salida. Las diferencias se encuentran en la siguiente tabla.

ESPECIFICACIÓN XBEE XBEE-PRO

Voltaje de alimentación

2.8 VDC-3.4 VDC 2.8 VDC-3.4 VDC

Potencia 1mW 63mW

Distancia de alcance al aire libre

90 m 1.6Km

Distancia de alcance urbano

30 m 90 m

Frecuencia de operación y canales

2.4 GHz, 16 Canales 2.4 GHz, 12 canales

Sensibilidad -92 dBm -100 dBm

Tabla 1.4 Diferencias entre XBEE y XBEE-PRO.

Con las características mostradas, se ha elegido los módulos XBEE-PRO Serie 1, para el

diseño en la comunicación.

1.4 Arduino.

Arduino es una plataforma de prototipo electrónica de código abierto, basada en hardware

y software flexibles y fáciles de usar. El entorno de recepción de entradas de Arduino, se

basa en una gran variedad de sensores y puede afectar a su alrededor mediante el

control de motores, luces y otros artefactos9.

La filosofía del hardware Arduino se basa en Open Source, dónde la versión esquemática

del hardware es libre y puedes construir tu propio Arduino. Las ventajas que sobresalen

son: Nadie te puede acusar de plagio, puedes compartir nuevas ideas, adaptar el

hardware a tus necesidades e incluso hacer dinero.

El software Arduino, y el mismo que permite comunicarse con la PC y programar el

microcontrolador de la placa se le llama Lenguaje de Programación de Arduino y está

basado en el Wiring, el entorno de desarrollo de Arduino se basa en el Processing.

Conjuntamente el software de Arduino se basa en el Processing Wiring.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 18

1.4.1 ¿Por qué utilizar Arduino?

En principio en una red de sensores inalámbrica es necesario un microcontrolador.

Aunque en el mercado existen gran cantidad de microcontroladores, se pensó en la

miniaturización; existe una placa de Arduino miniaturizada que permitía la manipulación

del hardware para los propósitos requeridos. Además de que Arduino tiene un lenguaje de

programación muy flexible para la comunicación serial con otros microcontroladores y la

PC. Algunas otras ventajas de Arduino son las siguientes.

Multiplataforma: El software Arduino se ejecuta en varios sistemas operativos

como son Windows, Macintosh OSX y GNU/Linux

Código abierto y software extensible: El software Arduino está publicado como

herramientas de código abierto, disponible para extensión de programadores

experimentados. El lenguaje puede ser expandido mediante librerías C++, y la

gente que quiera entender los detalles técnicos pueden hacer el salto desde

Arduino y la programación en lenguaje AVR-C en el cual está basado. De forma

similar, puedes añadir código AVR-C directamente en los programas.

Código abierto y hardware extensible: Arduino está basado en

microcontroladores ATMega8, ATMega168 y ATMega328 de Atmel. Los

esquemáticos así como los componentes de la tarjeta están publicados bajo la

filosofía Open Source, por lo que diseñadores de circuitos pueden hacer su propia

versión del módulo, extendiéndolo y mejorándolo. Incluso usuarios con poca

experiencia pueden construir su propia versión de la placa del módulo, así se

puede entender cómo funciona.

1.4.2 Versiones y características de Arduino

Hay una gran variedad de tarjetas Arduino. La mayoría utilizan el microcontrolador

ATmega328 y Arduino Mega el ATMega2560. Entre las que destacan:

Decimila: Actualmente esta placa se ha hecho muy popular. Se conecta al

ordenador con cable estándar USB y contiene el hardware de comunicación serial

para comunicarse con la PC, necesario para ser programado.

Nano: Es una placa compacta diseñada para uso como tabla de pruebas, este se

conecta a la computadora usando un cable Mini USB.

Bluetooth: Esta placa contiene un módulo bluetooth que permite la comunicación y

programación sin cables. Es compatible con otros dispositivos Arduino.

Mini: Esta placa es la más pequeña de Arduino. Trabaja bien en tablas de pruebas

en aplicaciones donde el espacio es muy reducido. Se conecta a la computadora

utilizando el cable mini USB.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 19

1.4.3 Arduino PRO-MINI en la red de sensores.

Se ha relacionado la plataforma meteorológica con el nodo de una red de sensores

inalámbrica. Siendo Arduino Pro-Mini el microcontrolador de esta.

Esta versión de Arduino consiste en una tarjeta compacta, diseñada para aplicaciones

donde se requiere flexibilidad y un tamaño reducido, las dimensiones que se tiene de esta

placa son de 18 mm x 33 mm. La miniaturización de esta tarjeta es reducida porque

contiene el mínimo de componentes necesarios para que el microcontrolador pueda

operar correctamente. No contiene la conexión USB incorporado a los circuitos y para

cargar un programa es necesario conectar una tarjeta USB-TTL que es un convertidor de

comunicación serial.

Existen dos versiones de Arduino Pro Mini y se clasifican en relación al voltaje de

alimentación: una que funciona a 5 volts, trabaja a una frecuencia de 16 MHz y otra que

funciona a 3.3 volts con una frecuencia de 8 MHz. Se ha elegido la versión Arduino Pro

Mini de 3.3 volts debido al bajo consumo de energía y porque el radio Xbee también opera

en este intervalo de voltaje.

En la siguiente tabla se señalan algunas características del hardware incorporado a la

tarjeta y otras como son las características del microcontrolador que se utiliza.

CARACTERÍSTICAS DESCRIPCIÓN

Microcontrolador ATmega328

Voltaje de operación 3.3 volts

Pines de Entrada/Salida 14 (de los cuales 6 proveen salidas PWM)

Pines de entrada analógicos 8

Corriente por pin de Entrada/Salida. 40 mA

Memoria Flash 32 Kbyte

EEPROM 1 KBytes

SRAM 2KBytes

Oscilador 8 MHz

Tabla 1.5 Características de Arduino Pro Mini.

Entrada/Salida: Cada uno de los 14 pines puede ser utilizado como entrada o

salida, operando a 3.3 volts. Cada pin puede recibir como máximo una corriente de

40 mA y tienen una resistencia interna d pull-up de 20-50 KOhms. Además algunos

tiene pines especiales.

Comunicación Serial: 0 (Rx) y 1 (Tx). Utilizados para recibir y transmitir datos

TTL en serie.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 20

Interruptores externos 2 y 3: Estos pines pueden ser configurados para disparar

una interrupción de valor bajo, un margen creciente o decreciente, o un cambio de

valor.

PWM 3, 5, 6, 9, 10, 11: Proporciona salida PWM de 8 bits y con una frecuencia

constante de 490 Hz.

Led 13: Hay un led incorporado al pin digital 13.

Pines de entradas analógicas: Arduino Pro mini tiene 8 entradas analógicas.

Estas entradas también pueden ser configurables como pines de entrada y salida

digitales. Cada entrada analógica se conecta a un convertidor analógico-digital con

una resolución de 10 bits de cero volts a un voltaje de referencia. Por defecto el

voltaje de referencia es de 3.3 volts, aunque es posible cambiar este valor usando

el pin ARF.

Reset: Pone esta línea a un valor de cero volts para resetear al microcontrolador.

Las características se muestran en la siguiente figura:

Figura 1.8 Características de la tarjeta Arduino Mino Pro.

Para cargar un programa en Arduino Pro Mini se tiene que conectar una tarjeta

convertidor USB a TTL, permitiendo la comunicación con el microcontrolador con la PC.

Se ha utilizado el USB FTDI TTL-232R-3.3v de Saprkfun. La forma correcta de conectar la

tarjeta y Arduino Pro Mini es mediante seis pines. La tarjeta se conecta a la PC mediante

USB, utilizando un cable mini USB. Las conexiones se realizan como se muestran en la

imagen.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 21

Figura 1.9 Conexión de Arduino Pro Mini para la programación.

Cuando se conecta el convertidor USB a TTL de 3.3 volts, automáticamente la tarjeta

Arduino Pro Mini se alimenta con el nivel de voltaje de 3.3 volts, proporcionado por el

puerto USB de la computadora.

1.4.4 Software Arduino.

Arduino no sólo es hardware, sino también software. La plataforma en que trabaja Arduino

se conoce como Processing Wiring y todas las versiones de las placas trabajan en esta

plataforma. Esta plataforma permite editar, compilar y cargar el programa.

Un “sketch” es un programa que se ejecuta en Arduino, se le hace mucho a la similitud a

la pantalla donde se realizan el conjunto de instrucciones que se ejecutan en Arduino. En

la siguiente imagen se muestra la pantalla donde se editan los programas que se cargan a

la tarjeta Arduino.

Figura 1.10 Sketch Arduino.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 22

La estructura del sketch se basa en dos funciones principales el voidsetup()que es la

inicialización del programa que se ejecuta en Arduino y el voidloop() es un ciclo infinito

que ejecuta Arduino mientras este alimentado.

Voidsetup()

Se establece cuando inicia el programa. Se emplea para inicializar variables, establecer el

estado de los pines o inicializar librerías. Esta función se ejecutará una única vez después

que se conecte la placa Arduino a la fuente de alimentación o cuando se presione el botón

de reinicio de la placa.

Voidloop()

Después de inicializar las variables la función loop hace lo

que su nombre indica y es una función que se ejecuta

consecutivamente, permitiéndole al programar variar y

responder.

En la siguiente Figura 1.11 se muestra las estructuras de las

funciones principales de un sketch en Arduino.

En el Sketch se escriben el conjunto de instrucciones en

lenguaje C++. Algunas instrucciones son propias de Arduino,

sin embargo la sintaxis también se asemeja a las

instrucciones de C++. Algunas de estas instrucciones y que

son los que más utilizaremos son las siguientes:

Modo de entrada/salida: Esta instrucción configura el pin especificado para comportarse

como entrada o salida. Dentro del argumento de la sintaxis se pone el número de pin (1-

13) después un coma y la palabra con mayúsculas “INPUT” si es entrada, “OUTPUT” si es

salida.

Sintaxis:

pinMode(numeroPin, INPUT); //pin en modo de salida.

pinMode(numeroPin, OUTPUT); //pin en modo de entrada.

Escritura digital: Escribe un valor HIGH o un valor LOW a un pin digital. Dentro del

argumento de la sintaxis, se coloca el número de pin (1-13) posteriormente las palabras

HIGH o LOW.

Figura 1.11 Estructura de un sketch en Arduino

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 23

Si el pin ha sido configurado como OUTPUT con pinMode(numeroPin, OUTPUT), su

voltaje será establecido al correspondiente valor: 5 volts (3.3 volts para la tarjeta Arduino

PRO-MINI) para HIGH, 0 volts para LOW.

Si el pin es configurado como INPUT, y escribir un valor HIGH, se habilitarán las

resistencias internas de pull-up de 20K en el pin. Escribir un valor LOW deshabilitará la

resistencia en el pin.

Sintaxis:

digitalWrite(numeroPin, HIGH); //Pone 3.3 volts en el pin correspondiente.

digitalWrite(numeroPin, LOW); //Pone 0 volts en el pin correspondientes.

Comunicación Serial.

Se puede utilizar la comunicación entre la placa Arduino hacia un ordenador u otros

dispositivos. Todas las placas Arduino tienen al menos un puerto serie y se comunica a

través de los pines digitales Rx, 0 y Tx, 1. Así que si se utilizamos estas funciones, no se

pueden utilizar los pines 0 y 1 como entradas o salidas digitales. Las instrucciones más

importantes para la comunicación serial son las siguientes.

Inicialización de la comunicación serial: Esta instrucción establece la velocidad de

datos en bits por segundo (baudios) para la transmisión de datos en serie. Las

velocidades necesarias para comunicarse con la PC son: 300, 1200, 2400, 4800, 9600,

14400, 19200, 28800, 38400, 57600 o 115200. Los valores anteriores son el argumento

de la instrucción, es muy común que siempre se utiliza la velocidad de 9600.

Sintaxis:

Serial.begin(valorVelocidad);//Comunicación serial con velocidad baudios/segundos.

Comunicación serial disponible: Se refiere a datos ya recibidos y disponibles en el

buffer de recepción del puerto serial (tiene una capacidad de 128 bits). Cuando el puerto

serial está disponible en el buffer hay un valor mayor o igual a cero, cuando no está

disponible en el buffer hay un valor de -1. Dentro de la sintaxis, no se coloca ningún

parámetro dentro del argumento.

Sintaxis:

Serial.available(); //Instrucción para confirmar si hay datos en el puerto serial.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 24

Escritura en el puerto serial: Imprime los datos al puerto serie como texto ASCII

seguido de un retorno de carro (tecla Intro). Dentro del argumento se pueden colocar el

valor que se desee transmitir en el puerto serial. Esta instrucción facilita la salida de datos

de Arduino hacia otros dispositivos.

Sintaxis:

Serial.println(valorTransmitido); //Escritura en el puerto serial.

Lectura del puerto serial: Esta instrucción permite leer datos provenientes del puerto

serial. En la sintaxis no se coloca nada como parámetro. Esta instrucción facilita la llegada

de datos de un dispositivo externo hacia Arduino.

Sintaxis:

Serial.read(); //Lectura del puerto serial.

Tipos de datos.

Los tipos de datos que se manejan son idénticos a los que utiliza C/C++, por lo que es

necesario declararlos antes de utilizar un tipo de dato.

Dato entero: Este tipo de datos se usan principalmente para almacenar números y

guardan valores de 2bytes. Esto produce un intervalo entre -32768 hasta 32767. La placa

Arduino puede trabajar con números negativos, para que las operaciones aritméticas

trabajen de manera trasparente y en la forma esperada.

Sintaxis

int ledPin=13;

Dato caracter: Es un tipo de dato que ocupa 1 byte de memoria y almacena un valor de

carácter. Los caracteres literales se escriben con comillas simples: ‘A’ (para varios

caracteres se utilizan comilla dobles “ABC”).

Todos los caracteres son almacenados como datos de tipo entero. La codificación está

presente en la tabla ASCII. El tipo de datos de tipo caracter tiene signo codificando

números desde -128 hasta 127.

Sintaxis:

charmiCaracter = ‘B’;

charmiCaracter= 66; //ambos son equivalentes.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 25

Dato Byte: Un dato tipo byte almacena un número sin signo de 8 bits, desde 0 hasta 255.

Sintaxis:

byte b = B10010 //La “B” es el formato de un número binario.

Dato booleano: Un dato tipo booleano sólo puede tomar dos valores: Verdadero o falso.

Cada booleano ocupa un único byte en la memoria.

Sintaxis:

boolean estado=false

boolean estado=0 //Ambos son equivalentes.

Estas son algunas de las instrucciones de Arduino, para ampliar el conocimiento de las

mismas visite la página de referencias de Arduino3

1.5 Matlab.

Matlab es un software matemático para la manipulación de matrices, representación de

datos y funciones, implementación de algoritmos, creación de interfaces GUI y

comunicación con hardware. Sus características optan la idea apropiada a que sea

utilizado como la interfaz gráfica de obtención de datos. Tiene un lenguaje de

programación propio que es el M, no es muy complejo de utilizar. El objetivo de utilizar

Matlab es permitir la transferencia de datos a través del puerto serial para leerlos y

escribirlos directamente en su entorno, con el fin de interactuar como una interfaz gráfica

igualando a las interfaces comerciales de instrumentación.

1.5.1 Matlab y la comunicación con el hardware.

Las características de Matlab engrandecen cuando se tiene una tarjeta de adquisición de

datos. Convirtiéndose en un posible instrumento de medición de cualquier rama. Aunque

muchas aplicaciones, la tarjeta resulta muy costosa, por lo que puede reemplazarse por

hardware menos complejo y barato como un microcontrolador.

La comunicación típica entre Matlab y un microcontrolador es mediante el puerto RS-232,

actualmente se usan los puertos virtuales COM, conectados físicamente por cable USB.

El mando general corre por cuenta de una función en Matlab desarrollada con las

instrucciones del toolbox de instrumentación. Es mediante este puerto dónde Matlab inicia

la adquisición de datos proveniente del microcontrolador10.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 26

1.5.2 Interfaz Gráfica de Usuario (GUI).

En un sistema de adquisición de datos es común que se generen gráficas para tener

control de los datos. Es aquí donde Matlab vuelve a favorecer la visualización de gráficas,

además de generar un control amigable para el usuario. Todo mediante la herramienta de

Interfaz Gráfica de Usuario de Matlab.

GUI es una representación gráfica en una o más ventanas que contienen controles

denominados componentes, que le permiten al usuario realizar tareas interactivas. El

usuario al utilizar la GUI de Matlab no tiene que crear un script o escribir instrucciones en

la línea de comandos para realizar las tareas. En la codificación de programas para

realizar las tareas, el usuario no necesita conocer a detalle de cómo se realizan estas

tareas11.

Los componentes que se incluyen en una GUI son: Barras de herramientas, botones,

botones de opción, cuadros de lista, deslizadores, ejes de gráficas, cuadros de texto y

cajas de texto. Las GUI creadas por la herramienta Matlab realizan cualquier tipo de

cálculo, leer y escribir cualquier archivo de datos, comunicarse con otras GUI´s y mostrar

los datos en forma de tablas o gráficos.

Figura 1.12 Plantilla de trabajo de la GUI en Matlab.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 27

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 28

2.- Plataforma meteorológica, sistema de adquisición de datos.

Después de seleccionar la tecnología a utilizar, continuamos con el diseño y desarrollo de

la plataforma meteorológica. Las actividades que se han realizado en esta parte son las

siguientes:

Relación del hardware seleccionado con una red de sensores inalámbrico:

Esta relación se hace con el fin de identificar las etapas de la plataforma

meteorológica. Identificando también la arquitectura de una red de sensores

inalámbrica, siendo esta la base del diseño.

Definir los bloques de la plataforma meteorológica: Se señalaron tres bloques

básicos para el diseño de la plataforma meteorológica. Los bloques son los

siguientes: Lectura de datos, comunicación inalámbrica y obtención de datos.

Podemos decir que la estación meteorológica será un sistema de adquisición de

datos, tomando en cuenta que nuestros datos de interés provienen de variables

atmosféricas ambientales.

Metodología:

Haciendo la relación de la estación meteorológica con un nodo de sensores inalámbrico

se presenta en la siguiente imagen.

Figura 2.1 Arquitectura de la estación meteorológica.

Con base a la imagen anterior se describen las etapas de Lectura de datos, comunicación

inalámbrica, y obtención de datos.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 29

2.1 Lectura de datos.

La lectura de datos se lleva a cabo en el nodo de sensores inalámbrico. En él se

implementa un sistema electrónico encargándose de la lectura de los sensores de las

variables atmosféricas. Como son: Temperatura, presión atmosférica, humedad relativa.

Los sensores a utilizar deben cumplir con el tipo de respuesta en voltaje analógico, con el

fin de que en el nodo de sensores inalámbrico exista un microcontrolador con un

convertido analógico digital. Uno de los objetivos de la lectura de datos es caracterizar y

registrar la energía de los diferentes sensores ambientales. Como se muestra en la figura

anterior, queda dentro del nodo de sensores inalámbrico y su hardware son: Los

sensores, el multiplexor y el microcontrolador.

Figura 2.2 Hardware de la lectura de datos.

2.2 Comunicación inalámbrica.

En esta etapa hay un radio que se comunica con el microcontrolador y la estación base,

siente este el intérprete que guía el flujo de datos en un canal inalámbrico. El tipo de

comunicación que se requiere es la más básica que es de punto a punto, bidireccional

para tener una adecuada comunicación en el flujo de datos. Las consideraciones que se

tiene que tener en cuenta para el diseño son: Potencia de salida y transmisión de 100

metros en vista libre.

La comunicación inalámbrica se encuentra tanto en el nodo de la red de sensores así

como en la estación base, debido que es la posición adecuada y parte de la arquitectura

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 30

de comunicaciones inalámbricas así está definido. El hardware sólo corresponde a dos

radios transceptores con sus respectivas antenas.

Figura 2.3 Hardware de la comunicación inalámbrica.

2.3 Interfaz gráfica.

La interfaz gráfica forma parte de la estación base, es el fin último y llegada de los datos

provenientes de los sensores. En esta parte ya se

tiene un control total del dato, por lo que se puede

manipular fácilmente, siendo modificadas mediante

software. Se ha desarrollado una interface en Matlab

que permite obtener una visualización gráfica de los

datos, siendo un PC donde se manipulan y visualizan

los datos.

Figura 2.4 PC para la visualización Gráfica

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 31

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 32

3.-Lectura de datos y comunicación inalámbrica.

Se han definido los tres bloques fundamentales del trabajo de estancia. Ahora se define la

primera parte de las actividades de implementación. Esta parte es la lectura de datos y a

transmisión, relacionándolo todo como un nodo de sensores de comunicación inalámbrica

al que se le ha llamado el circuito transmisor. Las actividades que se han realizado en

esta parte son las siguientes:

Lectura del dato: Se han definido los conversores analógico-digital a partir del

microcontrolador ATmega328 de Arduino, así como su implementación para lectura

de voltajes analógicos.

Acoplamiento y multiplexaje de los sensores: En este punto se ha ideado la

manera de leer un cierto número de sensores, utilizando un solo convertidor

analógico-digital. Para esto se usó el término multiplexaje, utilizando el circuito

CD74HC4051. Es un multiplexor analógico, el motivo por el que se ha utilizado es

para conectar las salidas de voltaje analógico de los sensores hacía en convertidor

analógico-digital del microcontrolador ATmega328. Este multiplexor de 3 bits, por lo

que se pueden direccionar hasta 8 sensores.

Comunicación inalámbrica: Se implementa un radio dentro de la plataforma

meteorológica.

Metodología:

3.1. Lectura del dato.

La técnica para la obtención de datos es mediante un convertidor de voltaje a un valor

digital, es necesario que el sensor de cada variable sea de salida analógica. El sensor

será el elemento fundamental para el sistema de teledetección, ya que es capaz de

detectar, caracterizar y cuantificar

energía.

El valor de la salida en voltaje de

cada sensor entra el convertidor

Analógico-Digital, asignándole un

valor numérico. En la siguiente

imagen se muestra los bloques

de la entrada del sensor.

Figura 3.1 Ejemplo de la conversión del voltaje analógico del sensor.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 33

Como se ve en la imagen anterior, al hacer la conversión analógica- digital, no se logra

obtener la señal real del sensor, sino una aproximación que dependerá de la frecuencia

de muestreo. Un inconveniente que se tiene al llevar a cabo esta etapa, es que cada

sensor necesitará de un convertidor Analógico-Digital. El problema se resuelve mediante

multiplexaje, enlazando el canal del voltaje analógico del sensor a la entrada del

convertidor justo en el instante en que se desee obtener el valor.

Al tener en cuenta el multiplexaje, el número de convertidores se reduce a uno, facilitando

el número de sensores analógicos al valor del multiplexor que se desee utilizar (2, 4, 8,

16, 32). La siguiente imagen nos muestra los bloques de la conexión para los distintos

sensores. El microcontrolador a utilizar (Atmega328) tiene un multiplexor analógico, en un

futuro se piensan añadir más sensores, por lo que se ha elegido un multiplexor externo

para aumentar el número de señales a leer.

Figura 3.2 Multiplexaje de las señales analógicas, provenientes de los diferentes sensores.

El sensor funciona como un intérprete que hace una conversión de una variable

atmosférica a una señal eléctrica (voltaje). El dispositivo que hace esta conversión se le

conoce como transductor, aunque en la literatura y en algunas hojas de fabricantes se les

denomina sensor. Y es el dispositivo principal para implementar la estación

meteorológica, posteriormente se realizará la conversión Analógica- Digital para comenzar

con la parte de la lectura de datos. El bloque de lectura de datos la conforman el

multiplexor, que es dispositivo que

seleccionará el sensor a leer y el

conversor AD que es el dispositivo que

obtendrá los datos numéricos. Esta

técnica permite principalmente registrar la

energía detectada por el sensor y los

bloques son los de la figura 3.3

Figura 3.3 Diagrama de bloques para la lectura del

dato.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 34

3.2 Acoplamiento y multiplexaje de sensores

Una conversión analógica se realiza en base a un cierto número de bits y a un valor de

voltaje de referencia. El voltaje de referencia es considerado de 3.3 volts, debido a que

ARDUINO Mini PRO trabaja a este voltaje de alimentación.

De esta tarjeta utilizaremos principalmente el convertidor analógico. El convertidor del

ATmega 328 es de 10 bits, tomando valores entre 0 y 1023 a partir de 0 volts a un voltaje

de referencia (3.3 volts). La resolución del convertidor se tiene con la siguiente relación:

La relación numérica es:

Cuando en la entrada se tiene un voltaje entre 0 volts-3.3 volts y se ha programado el

convertidor del µControlador, se hará la lectura del voltaje de algún sensor, traduciéndolo

a un valor numérico. Este será el valor numérico del sensor. Internamente este número ya

es un dato entendible para el µControlador, se puede controlar, realizarle una operación,

asignarle un espacio de memoria o transmitir inalámbricamente. El dato numérico del

sensor se da por la siguiente formula.

El flujo de la secuencia para obtener el dato numérico del sensor es la siguiente imagen:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 35

Figura 3.4. Esquema del conversor analógico- digital de la tarjeta Arduino.

En la selección del multiplexor se seleccionado el CD74HC4051 dispositivo es un

multiplexor de tipo analógico, puede ser controlado digitalmente con señales TTL. El

selector del dispositivo es de tres bits, permitiendo seleccionar ocho entradas de voltaje

analógico. Estas ocho entradas son las señales que provienen de los diferentes sensores

a leer.

Figura 3.5. Multiplexor analógico de ocho canales.

Dentro de las características eléctricas de este multiplexor se encuentran las

recomendaciones del voltaje de operación proporcionados por el fabricante:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 36

Habilitación S2 S1 S0

Bajo Bajo Bajo Bajo Voltaje de la entrada A0

Bajo Bajo Bajo Alto Voltaje de la entrada A1

Bajo Bajo Alto Bajo Voltaje de la entrada A2

Bajo Bajo Alto Alto Voltaje de la entrada A3

Bajo Alto Bajo Bajo Voltaje de la entrada A4

Bajo Alto Bajo Alto Voltaje de la entrada A5

Bajo Alto Alto Bajo Voltaje de la entrada A6

Bajo Alto Alto Alto Voltaje de la entrada A7

Alto No Importa No Importa No Importa 0 volts

Voltaje en la salida del canal

analógico

ESTADOS DE LA ENTRADA

Figura 3.6 Recomendaciones del voltaje de operación del multiplexor CD74HC4051

Cómo se muestra para el voltaje de VCC va de -0.5 volts a 10.5 volts, alimentaremos con

un voltaje de 3.3 que se encuentra dentro del rango. VEE se conectará a 0 volts que

también se encuentra dentro del rango. Para la lógica TTL, los datos límites para que el

multiplexor entienda como una señal HIGH es de 3.15 volts hasta VCC y una señal LOW

a partir de 1.35 volts. Para controla la lógica del multiplexor se conectará a la tarjeta

Arduino Mini con señales de 0 volts para una señal LOW y 3.3 volts para una señal HIGH.

Estas señales entrarán en el puerto de selección e canales que son los pines 9, 10 y 11.

Además de seleccionar los distintos canales, también se tiene una señal de habilitación

en el pin seis, para direccionar el canal AN hacia la salida analógica. La señal para de

habilitación también es de TTL y se activa en bajo, cero volts. Cuando en este pin

tenemos un valor alto, 3.3 volts; en el pin tres de la salida analógica no habrá una señal

significativa, independientemente de las señales que tengamos en la selección de canales

y la salida en este caso será de cero volts. La selección del canal se visualiza en la

tabla3.1

Tabla 3.1 Respuesta ante la selección de canales del multiplexor CD74HC4051.

Esta tabla se tomará de base para diseñar el algoritmo que permita realizar la lectura de

los diferentes sensores conectados al multiplexor. El µControlador estará conectado al

multiplexor, siendo este el que seleccionará el canal donde se desea obtener el dato y

leer el dato con el conversor Analógico-Digital.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 37

La conexión del µControlador Arduino al multiplexor se hará mediante cuatro canales de

salida. Tres de estos canales son salidas del µControlador Arduino que seleccionan con

números binarios el canal que se desee abrir. La otra conexión es la habilitación del

multiplexor para que pueda abrir el canal y poder multiplexar la señal. Cuando se haya

seleccionado el canal deseado y la habilitación esté activada, se direccionará la señal de

voltaje del sensor seleccionado hacia la salida analógica del multiplexor (pin tres). Esta

salida analógica estará conectada en una entrada analógica del µControlador Arduino,

logrando hacerse la lectura del voltaje analógico del sensor. El flujo de la secuencia se

señala en la siguiente imagen.

Figura 3.7 Acoplamiento de la tarjeta Arduino y el multiplexor.

3.3 Implementación de la comunicación inalámbrica.

En la Figura 3.7 se asimila un nodo inalámbrico de sensores. Falta implementar el radio

para que se le pueda llamar totalmente inalámbrico. Es dónde los radios XBEE realizan

su tarea. Las conexiones principales que se utilizan son: los pines de alimentación del

XBEE y los pines de comunicación con el microcontrolador. Se señala que el voltaje de

alimentación del radio XBEE es de 3.3 volts y es totalmente compatible con la tarjeta

Arduino.

La conexión final del nodo de sensores inalámbricos con el radio integrado es el que se

muestra en la Figura 3.8.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 38

Figura 3.8 Plataforma meteorológica, nodo de sensores inalámbrica.

El radio Xbee se configura con comandos AT (antes ya se ha mencionado). Para que el

radio pueda realizar una comunicación punto a punto es necesario configura el radio Xbee

antes de conectarlo.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 39

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 40

4. Circuito transmisor.

El nodo de sensores inalámbrico que se muestra en la Figura 3.8 es apenas el hardware

necesario para implementar la plataforma meteorológica, sin embargo se necesita la

secuencia de control. La secuencia de control inicia la lectura de cada sensor enviándola

a una estación base. En esta parte de la estancia se diseña el circuito transmisor

encargado de la secuencia de control, así como la construcción del circuito transmisor.

Las actividades fueron las siguientes:

Circuito transmisor: Se ha construido un circuito transmisor de 5x5 cm. (Sin

contar los sensores). Siguiendo el requerimiento de miniaturización. Este circuito es

capaz de leer varios sensores de respuesta analógica y transmitir los datos

inalámbricamente.

Programación del circuito transmisor: Se ha realizado el diagrama de flujo y la

programación del microcontrolador del circuito transmisor. La programación se ha

hecho dentro de la plataforma ARDUINO.

Transmisión inalámbrica: Utilizando el concepto y las herramientas de los

convertidores Analógicos-Digitales, se ha preparado el dato para que se

transmitido inalámbricamente. Así se hace uso de radios diseñados para la

comunicación inalámbrica digital para enviar todos los datos solicitados a una

estación base.

Metodología:

Como se menciona anteriormente la Figura 3.8 es la base para el diseño del circuito

transmisor. Parte del diseño del circuito transmisor se centra en cuatro componentes:

1. Fuente de alimentación y regulador de voltaje.

2. Control.

3. Multiplexaje y entradas de sensores.

4. Radio.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 41

4.1 Fuente de alimentación y regulador de voltaje.

Como parte del diseño de la fuente de alimentación se presenta de una manera muy

simple y es la más importante de la tarjeta, porque todos los componentes se

alimentan con el mismo valor de voltaje. El valor de voltaje de la fuente de

alimentación es de 3.3 volts.

La elección más común para generar el voltaje de alimentación es mediante un

regulador. El regulador de 3.3 volts que se utiliza es el LF33ABP y tiene como entrada

una pila de 9 volts. El diagrama eléctrico que le corresponde a la fuente de

alimentación del diseño propuesto se muestra en la siguiente imagen:

Figura 4.1 alimentación de 3.3 volts.

Este diseño permite reducir el hardware de la alimentación del circuito transmisor,

aunque es ineficiente por la potencia que se disipa. Se trabaja con componentes que

tiene una bajo consumo de energía, la pila se agotará más rápido. La otra solución es

utilizar un convertidor de DC a DC, se tendría un poco de problema al tratar de

polarizar el circuito de control del convertidor.

El fabricante propone que C1 sea un capacitor no electrolítico de 0.1µF y C2 un

capacitor electrolítico de 2.2µF. Como voltaje de entrada, se ha revisado que para el

regulador LF33ABP se tiene que alimentar en el intervalo de voltaje de: 3.5-16 volts,

es por eso que alimentaremos con una pila de 9 volts.

Para el consumo de corriente se toma en cuenta la corriente consumida de la placa

Arduino, el módulo de radio Xbee y el multiplexor CD74HC4051.La suma de corriente

debe ser menor a la corriente máxima que puede proporcionar el regulador.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 42

La corriente de consumo debe ser menor a la corriente máxima del regulador.

En la siguiente tabla se muestran las corrientes de consumo de los elementos a

conectar.

COMPONENTE CORRIENTE DE CONSUMO

Arduino 40 mA

Radio Xbee 50 mA

Multiplexor CD74HC4051 20 mA

Suma total 110 mA

Tabla 4.1 Corrientes de consumo de los componentes del circuito transmisor.

Se cumple:

110mA<1 A

4.2 Control.

El componente del circuito transmisor que realiza esta tarea es la placa Arduino, dentro de

la placa se tiene el microcontrolador, el oscilador indispensable de 8MHz para que trabaje

el microcontrolador y un botón de reinicio.

En la placa Arduino se programa la

secuencia de control para realizar la

lectura de datos. El diagrama eléctrico se

muestra en la siguiente figura:

En la tarjeta Arduino se tienen 10

conexiones importantes que se comunican

con el multiplexor y el radio Xbee. Las

conexiones se muestran en la siguiente

tabla: Figura 4.2 Diagrama completo de la tarjeta Arduino Mini PRO

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 43

NÚMERO DE PIN

NOMBRE DESCRIPCIÓN

0 Tx Este pin se conecta con el radio Xbee, permitiendo la comunicación serial del Arduino hacia el radio Xbee.

1 Rx Este pin se conecta con el radio Xbee, permitiendo la comunicación serial del radio hacia Arduino.

6 Selector(S2) Pin conectado el selector del multiplexor, envía un valor HIGH o LOW al bit más significativo del multiplexor.

7 Selector(S1) Pin conectado el selector del multiplexor, envía un valor HIGH o LOW al segundo bit más significativo del multiplexor.

8 Selector(S0) Pin conectado el selector del multiplexor, envía un valor HIGH o LOW al bit menos significativo del multiplexor.

9 Habilitación Pin conectado al multiplexor enviando un valor HIGH (deshabilita el multiplexor) o LOW (habilita el multiplexor).

10 Conectar En este pin está conectado un led, se enciende si se ha recibido la señal de conexión con la estación base.

14 (A0) Entrada analógica

Este pin se conecta con la salida del multiplexor. Es válida y se lee por el microcontrolador, si se ha seleccionado un canal del multiplexor y está habilitado el multiplexor

Vcc Alimentación Pin conectado a 3.3 volts

Gnd Referencia Pin conectado a 0 volts.

Tabla 4.2 Conexión de la tarjeta Arduino.

4.3 Multiplexaje y entradas de sensores.

El hardware que realiza esta acción es el multiplexor CD74HC4051, con capacidad de

direccionar ocho valores analógicos hacia una de sus salidas. El multiplexor es controlado

por la tarjeta Arduino, dónde Arduino selecciona cada una de las entradas mediante un

selector de tres bits y una señal de activación. Las características eléctricas y las

conexiones con la tarjeta Arduino del multiplexor se presentan en la siguiente imagen:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 44

Figura 4.3 Diagrama eléctrico de las conexiones del multiplexor.

De esta forma interactúa la tarjeta Arduino con el multiplexor. También se tiene un

conector de 8 canales, dónde físicamente se conectarán los sensores, siendo estas las

entradas que se direccionarán mediante el multiplexor. El multiplexor se alimenta con 3.3

volts al igual que la tarjeta Arduino. En la siguiente tabla se muestran las descripciones de

las conexiones del multiplexor.

NÚMERO DE PIN

NOMBRE DESCRIPCIÓN

13 A0 Señal 1 de entrada con valor de 0 a3.3 volts

14 A1 Señal 2 de entrada con valor de 0 a3.3 volts

15 A2 Señal 3 de entrada con valor de 0 a3.3 volts

12 A3 Señal 4 de entrada con valor de 0 a3.3 volts

1 A4 Señal 5 de entrada con valor de 0 a3.3 volts

5 A5 Señal 6 de entrada con valor de 0 a3.3 volts

2 A6 Señal 7 de entrada con valor de 0 a3.3 volts

4 A7 Señal 8 de entrada con valor de 0 a3.3 volts

9 S0 Bit menos significativo de selección, es puesto en HIGH o LOW por la tarjeta Arduino

10 S1 Segundo bit menos significativo de selección, es puesto en HIGH o LOW por la tarjeta Arduino

11 S2 Bit más significativo de selección, es puesto en HIGH o LOW por la tarjeta Arduino

6 Habilitación Pin de habilitación. La habilitación es dada por la tarjeta Arduino, HIGH deshabilita el multiplexor y LOW habilita el multiplexor

3 Salida Pin que se conecta al convertidor Analógico-Digital de

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 45

Analógica la tarjeta Arduino. En este pin direcciona el valor del voltaje que ha sido seleccionado por la tarjeta Arduino

Vcc Alimentación Pin conectado a 3.3 volts

Gnd Referencia Pin conectado a 0 volts.

Tabla 4.3 Pines de conexión del multiplexor CD74HC4051.

4.4 Radio.

El radio del circuito transmisor es un Xbee que interactuara con la tarjeta Arduino y el

radio Xbee de la estación base. El objetivo es realizar una conexión punto a punto con la

estación base. Sobre el radio fluyen los datos que provienen y se dirigen hacia la tarjeta

Arduino. Los datos que se dirigen a la tarje Arduino, son caracteres entendibles por la

programación para iniciar la lectura de algún sensor y los datos provenientes de la tarjeta

Arduino son datos numéricos relacionados con los voltajes de los sensores leídos.

La conexión del Xbee se realiza de la forma más básica que existe para su operación y la

comunicación con la tarjeta Arduino. En la siguiente imagen se muestran estas

conexiones:

Figura 4.4 Diagrama eléctrico del radios Xbee.

La tarjeta radio Xbee se alimenta con un voltaje de valor de 3.3 volts, y se configura para

una velocidad de transmisión de datos seriales igual a la de la tarjeta Arduino. Así los dos

pines de comunicación serial se conectan con los pines de comunicación serial de la

tarjeta Arduino. En la siguiente tabla se muestran la descripción de los pines del Xbee.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 46

NÚMERO DE PIN

NOMBRE DESCRIPCIÓN

2 Din Pin que se conecta al Rx de la tarjeta Arduino, en este pin se reciben datos seriales provenientes de la tarjeta Arduino

3 Dout Pin que se conecta al Tx de la tarjeta Arduino, en este pin se envían datos seriales hacia la tarjeta Arduino

Vcc Alimentación Pin conectado a 3.3 volts

Gnd Referencia Pin conectado a 0 volts.

Tabla 4.4 Pines de conexión del radio Xbee.

Integrando estos cuatro componentes se tiene en conjunto al circuito transmisor, el

encargado de realizar la lectura de los diferentes sensores y transmitirlos a la estación

base. Parte del diseño es integrar todos los componentes en una tarjeta de cobre de 5x5

centímetros. La siguiente imagen es una idea de la plataforma meteorológica esperada.

Figura

4.5

Plataforma meteorológica esperada.

El diseño se ha realizado en el software KiCad, que es un entorno de software usado para

el diseño de circuitos eléctricos y electrónicos en el que se pueden crear y editar un gran

número de componentes y usarlos en esquema. El esquemático de la plataforma

meteorológica completa se muestra en la siguiente imagen:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 47

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 48

Con el esquema, se utiliza el mismo software para realizar el PCB del circuito transmisor.

El PCB del circuito transmisor se diseña en una placa de cobre con doble cara, sus

dimensiones son de 5x5 centímetros. En la siguiente imagen se muestran las dos caras

del PCB diseñado.

Figura 4.7 PCB del circuito transmisor

4.5 Algoritmo del circuito transmisor.

El algoritmo del circuito transmisor son los pasos que se tienen que realizar para ejecutar

las tareas de lectura de datos y transmisión inalámbrica. Estas tareas son designadas al

microcontrolador, este dispositivo interactúa con el multiplexor analógico y el radio Xbee.

Con ello Arduino es dispositivo que lleva el control principal del circuito transmisor y sobre

él se tiene que efectuar el algoritmo del circuito transmisor.

En la siguiente imagen se muestran los pasos que se realizan para que el circuito

transmisor realice la lectura de los diferentes sensores, siendo este algoritmo la base de

la programación de la tarjeta Arduino.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 49

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 50

Estado 1: Se inicializan las entradas y salidas del microcontrolador, relacionando

los pines con el nombre de una variable reconocida dentro de la programación. Las

variables son el selector, la habilitación y conectado, en la siguiente tabla se tiene

la descripción.

Tabla 4.5 Referencia de los pines utilizados en Arduino

Además de las señales de salida, se tiene una variable interna que toma valores con base

a los datos que se escriben en el puerto serial de la tarjeta Arduino, esta variable se llama:

Caracter recibido.

Estado 2: En este bloque se definen las salidas de las variables referenciadas a

los pines de Arduino. También se inicializa la velocidad de comunicación de la

tarjeta. En la siguiente tabla se tienen la inicialización de las variables.

Tabla 4.6 Configuración de los pines utilizados en Arduino.

VARIABLE PIN EN LA TARJETA ARDUINO

DESCRICIÓN

Selector 6

Es una variable de tres bits que se enfoca para controlar la selección del multiplexor analógico. Toma valores binarios de 000 hasta 111, según sea el número de sensor a seleccionar. Así el pin 6 representa al bit más significativo y el pin 8 representa al menos significativo.

7

8

Habilitación

9

Este pin hace referencia a la habilitación del multiplexor. Toma dos valores HIGH (Señal que deshabilita al multiplexor) y LOW (Señal que hablita al multiplexor)

Conectado 10 En este pin se conecta un Led que se enciende si el circuito transmisor ha recibido una señal de conectado de la estación base.

VARIABLE CONFIGURACIÓN

Selector. Son tres pines que se configuran como pines de salida.

Conectado. Este pin se configura como pin de salida

Habilitación Pin que se configura como señal de salida

Velocidad de la comunicación

Físicamente no es un pin, sino una configuración de software indicándole a la tarjeta Arduino para trabajar a 9600 baudios/s

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 51

Estado 3: En este bloque se determinan las condiciones iniciales de los pines de la

tarjeta Arduino. Esto se hace con el fin de no tener un comportamiento no deseado

al momento de encender el circuito transmisor. En la siguiente tabla se tiene los

valores iniciales de las variables de salida.

PIN VARIABLE CONDICIÓN INICIAL

Selector Colocamos esta variable de 3 bits al valor “000”.

Habilitación El valor de este pin se pone con valor HIGH. Con este valor el multiplexor está deshabilitado

Conectado Este pin se conecta a un led, inicialmente se apaga este led con un valor LOW

Tabla 4.7 Inicialización de los pines de salida de Arduino.

Estado 4: Después de inicializar las variables la función loop hace lo que su

nombre indica y es una función que se ejecuta consecutivamente, permitiéndole al

programar variar y responder.

Estado 5: Es la primera instrucción de la función loop. Se lee el puerto serial de la

tarjeta Arduino y si existe un valor en él.

Estado 6: Si existe un valor en el puerto serial este se guarda como un dato

recibido. Únicamente se recibirán datos con valores de caracteres alfabéticos y

numéricos mismos que se han seleccionado: d, c, 1, 2, 3, 4, 5, 6, 7, 8. Teniendo 10

casos posibles, en cada caso se ejecuta una acción.

Caso 1 (6.1): El primer caso es cuando el dato recibido del puerto serial es igual al

caracter ‘c’. La tarjeta Arduino enciende el led que está referenciado a la salida

Conectado.

Caso 2(6.2): El segundo caso sucede cuando el dato recibido del puerto serial es

igual al caracter ‘d’. La tarjeta Arduino apaga el led, desconectando al circuito

transmisor.

Caso 3(6.3): El tercer caso se ejecuta cuando el dato recibido del puerto serial es

igual al carácter ‘1’. En el selector se direccionan tres bits al multiplexor con el

código “000”. Después se habilita el multiplexor con un valor LOW, direccionando la

señal solicitada. Posteriormente se lee el voltaje en la salida del multiplexor con el

convertidor analógico-digital de la tarjeta Arduino, guardando este valor en la

variable sensor1. Finalmente se deshabilita al multiplexor.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 52

Con los siguientes casos sucede lo mismo, sin embargo el código del selector

cambie según el dato recibido. En la siguiente tabla se tienen el valor de las

variables para los siguientes casos.

CASO DATO RECIBIDO SELECTOR SENSOR LEIDO

Caso4 (6.4) ‘2’ “001” Sensor2

Caso5 (6.5) ‘3’ “010” Sensor3

Caso6 (6.6) ‘4’ “011” Sensor4

Caso7 (6.7) ‘5’ “100” Sensor5

Caso8 (6.8) ‘6’ “101” Sensor6

Caso9 (6.9) ‘7’ “110” Sensor7

Caso10 (6.10) ‘8’ “111” Sensor8

Tabla 4.8 Valor de los pines de salida con relación a los casos.

Estado 7: En este bloque el circuito transmisor envía por el puerto serial los

valores de las variables leídas. Las variables son sensor1, sensor2, sensor3,

sensor4, sensor5, sensor6, sensor6, sensor7 y sensor8 que representan el

valor digital del sensor leído, tiene valores entre 0 y 1023.

Estado 8 Es el fin del ciclo y regresa a la función loop, los ciclos son

permanentes a menos que se presione el botón de reset o se corte la

energía de la placa.

4.6 Programación del circuito transmisor.

Con base al algoritmo del circuito transmisor, se realiza la programación. La programación

se aplica a la tarjeta de hardware Arduino que es quien controla el multiplexor analógico e

interactúa con el radio Xbee. La programación se hace en la plataforma Arduino

(ProcessingWiring), similar a C++. El código se presenta en el siguiente sketch Arduino.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 53

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 54

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 55

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 56

En la siguiente figura se tiene el circuito transmisor construido.

Figura 4.9 Circuito transmisor.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 57

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 58

5. Circuito receptor.

El circuito receptor es aquel que se comunica con el nodo de sensores inalámbrico y por

él fluyen los datos de control del nodo y la recepción de los datos recibidos por el mismo.

Por un momento se pensó que el diseño del circuito receptor fuera un microcontrolador

con un módulo Xbee integrado, este microcontrolador tendría que ser capaz de

comunicarse con una computadora para la entrega de datos, a su vez se tenía que hacer

una programación para el flujo correcto de datos. Sin embargo las características del radio

Xbee sustituyeron los requisitos anteriores sin necesidad del microcontrolador. El mismo

radio realiza la comprobación de errores de envío de datos ya que es una característica

importante de su diseño. Xbee ofrece una comunicación bidireccional permitiéndonos

enviar datos al nodo de sensores (circuito transmisor) y recibir datos del mismo, el envío y

la recepción de los datos es simultáneo. Xbee cuenta con una tarjeta XBee Explorer USB

el cual se comunica con una computadora dónde toda la transmisión de datos se hace de

manera serial. Las actividades realizadas en esta parte fueron:

Transmisión inalámbrica: Se configuraron los radios Xbee para establecer una

comunicación punto a punto entre la estación base y el circuito transmisor

Comunicación con el circuito transmisor: se estableció la conexión del circuito

transmisor obteniendo datos de los 8 canales que tiene el circuito transmisor.

Metodología.

5.1. Tarjeta Xbee Explorer USB

Para comunicar el Xbee en la recepción de datos se utilizó la tarjeta XBee Explorer USB que permite una comunicación con la computadora mediante USB. La tarjeta cuenta con chip emulador de un puerto serial FT232RL, es el intérprete entre el Xbee y la computadora. La conexión física entre la tarjeta y la computadora es mediante un cable mini USB. En la siguiente imagen se muestra la tarjeta.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 59

Figura 5.1 Tarjeta Xbee Explorer USB, en la parte derecha su tipo de conexión.

Cuando se conecta por primera vez la tarjeta es necesario instalar los dirvers que

permiten emular el puerto serial, los dirvers se pueden descargar desde la página de

Internet de Sparkfun. Una vez instalados los drivers, a la tarjeta se asigna un puerto

COM#, para asegurarnos en que puerto trabaja la tarjeta podemos guiarnos del

administrador de dispositivos de Windows. La siguiente imagen muestra la conexión entre

la tarjeta Xbee Explore USB y el puerto de conexión.

Figura 5.2 Tarjeta Xbee Explorer USB conectada a la computadora y el puerto de conexión.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 60

5.2 Configuración Xbee para la comunicación punto a punto.

La tarjeta Xbee Explorer USB es el hardware que comunica el radio Xbee con la

computadora. Mediante esta conexión el radio Xbee puede ser configurado para una

comunicación punto a punto. El software que se utiliza para realizar la configuración

puede ser cualquier Hyperterminal que permita escribir datos y recibir datos en el puerto

serial. Para hacer la configuración del radio utilizaremos el software X-CTU.

Inicialmente conectamos la tarjeta Xbee Explorer USB a la computadora, abriendo el

programa X-CTU, haciendo clic en la pestaña de PC Settings.

Figura 5.3 Vista del programa X-CTU.

Como se ve en la figura anterior, el programa X-CTU permite detectar el puerto serial

dónde la tarjeta Xbee Explorer USB está conectada. En nuestro caso la tarjeta está en el

puerto COM16.

Se configurarán los Xbee para la

comunicación inalámbrica, colocamos

las marcas 1 y 2 para distinguir a los

Xbee. La marca 1 es para el Xbee

transmisor y la marca 2 es para el

Xbee detector. En la siguiente imagen

se muestra los dos Xbee.

Figura 5.4 Marcas de los Xbee

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 61

Los Xbee se conectan sobre la tarjeta Xbee Explorer USB. La primera conexión es sobre

el Xbee con la marca número 1. En la siguiente imagen se tienen los comandos

ingresados en la Terminal de X-CTU para la configuración.

Figura 5.5 Comandos de la configuración del Xbee 1.

Conectamos el Xbee con la marca 2, los comandos ingresados mediante la Terminal de

X-CTU son los que se muestran en la siguiente imagen:

Figura 5.6 Comandos ingresados en el Xbee 2.

Una vez ingresados los comandos, los Xbee se conectan al sistema de adquisición de

datos. El Xbee de la marca 1 al circuito transmisor y el de la marca 2 en la tarjeta Xbee

Explorer USB como receptor de datos comunicándolos a la computadora. Los comandos

ingresados se encuentran en Tabla 1.3 Secuencia de los comando AT para configurar

una conexión punto a punto, del presente informe.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 62

5.3 Comunicación con el circuito transmisor.

Una vez configurados los radios Xbee conectamos uno en el circuito transmisor.

Cargamos el sketch de Arduino con el código del circuito transmisor, el mismo que

permite realizar la lectura de los diferentes sensores. En el nodo receptor conectamos el

segundo Xbee sobre la tarjeta Xbee Explorer USB.

Una vez hecha estas conexiones los Xbee están listos para realizar la comunicación

punto a punto. No importa que Xbee se coloque en el circuito transmisor, ambos fueron

configurados para que entiendan sus propios mensajes de comunicación. La

comunicación entre ellos es bidireccional.

Abrimos el software X-CTU para enviar los comandos. Recordemos que podemos enviar

los caracteres ‘D’, ‘C’, ‘1’, ‘2’, ‘3’, ‘4’, ‘’5, ‘6’, ‘7’ y ‘8’; que son los caracteres que entiende la

programación del circuito transmisor. Tenemos conectados el circuito receptor y el circuito

transmisor como se muestra en la siguiente imagen. En la parte izquierda se tiene el Xbee

receptor conectado a la computadora. En la parte derecha el Xbee del circuito receptor.

Figura 5.7 Comunicación punto a punto.

Sobre la placa del circuito transmisor conectamos una carga que simulará las variaciones

de voltaje de un sensor. La variación va entere 0 a 3.3 volts. Terminando de colocar las

cargas en el circuito transmisor, podemos enviar los caracteres para recibir los datos de

los diferentes voltajes registrados. La conexión se hará en el canal número 8. En el canal

2 se tiene un conectador el sensor de humedad. Los demás canales los conectamos a 0

volts. Para hacer la primera adquisición de datos, conectamos el circuito receptor en la

computadora, seleccionando en la Terminal la conexión del puerto serial COM16. Sobre la

terminal enviamos los caracteres del 1 al 8 obteniendo los datos que se muestran en la

siguiente imagen.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 63

Figura 5.8 Primera adquisición de datos entre el circuito transmisor y el circuito receptor.

Los únicos canales en los que tenemos conectados una carga son en los canales 2 y 8.

Vemos que cuando enviamos el caracter ‘2’ recibimos un valor digital 454 y cuando

enviamos el carácter ‘8’ recibimos un 530. Estos valores son el resultado de la conversión

digital del voltaje analógico en esos canales. Para conocer el valor analógico se utiliza la

siguiente formula:

Donde

Con la formula el voltaje analógico en el canal 2 es:

El valor del voltaje en el canal 8 es lo siguiente:

Antes de realizar las mediciones se registraron los voltajes respectivos con un multímetro.

Las siguientes imágenes muestran los voltajes medidos en el canal 8 y en el canal 2.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 64

Figura 5.8 voltaje medido en el canal 2.

Vemos que tenemos un ligero error. Ya que el valor calculado es de 1.46 volts. Es quizá

porque en este canal teníamos conectado un sensor de humedad y es posible que haya

variado un poco en el voltaje. El error es el siguiente:

|

|

En la siguiente imagen se muestra el voltaje registrado en el canal 8 con un multímetro.

En el canal 8 se tiene conectado un potenciómetro de precisión, al observar el valor

medido y compararlo con el valor calculado, se observa que el valor se acerca mucho al

medido.

Figura 5.9 voltaje analógico registrado en el canal 8.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 65

El error calculado es el siguiente.

|

|

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 66

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 67

6. Interfaz Gráfica.

Después de obtener los primeros datos del circuito transmisor al circuito receptor, es

necesario almacenarlos y visualizarlos de una forma ordenada. En esta parte se describe

la Interfaz gráfica que permite la visualización de los datos que llegan al circuito

transmisor. El software en el que se realiza esta tarea es Matlab a través de la

herramienta Guía de Interfaz de Usuario.

Con esta herramienta se ha diseñado la interfaz gráfica que permite visualizar en forma

gráfica los datos recopilados. Sobre ellas se pueden fijar otros parámetros como la

frecuencia de muestreo para la obtención de datos. La interfaz consta de tres pantallas,

cada pantalla puede direccionar hasta 8 variables conectadas al circuito transmisor. En

cada pantalla se pueden observar el comportamiento de estas ocho variables, sólo una a

la vez, por eso se da la capacidad de elegir cuál se quiere observa. En la interfaz también

se tiene un tiempo total que es un tiempo propuesto por el usuario para recopilar la

información. Estas fueron algunas actividades desarrolladas en esta parte de la Estancia

Industrial, que a continuación se muestran con más detalle.

Desarrollo de la Interfaz gráfica de la estación meteorológica: Se diseñó el

software que permite la visualización gráfica de los datos de la estación

meteorológica.

Almacenamiento de los datos: Dentro del código de la Interfaz gráfica, se

direccionó un archivo en hoja de cálculo de Excel que permite almacenar los datos

obtenido después de realizar una medición.

Metodología.

6.1 Interfaz de la adquisición de datos.

Dentro de las herramientas de Matlab se encuentra la herramienta GUI (Guía de Interfaz

de Usuario). En ella se ha trabajado en el diseño de la interfaz de la estación

meteorológica, dónde se visualizarán las entradas y salidas registradas. Su contenido

representa el control entre la adquisición de datos con el circuito transmisor, el encargado

de recopilar la información.

GUI trabaja con base a la programación orientada a objetos, similar a las plataformas para

generar interfaces tal como Visual Basic o Java. Esto se hace en dos partes, una donde

se realiza la visualización física del proyecto final, en ella se encuentran objetos como

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 68

pantallas, botones, cajas de texto. La segunda parte se representa como código e

instrucciones que se ejecutan detrás de la interfaz gráfica obedeciendo instrucciones

generadas por los objetos, a su vez estas instrucciones son eventos generados por los

usuarios que manipulan y programan la interfaz

La interfaz gráfica para la visualización gráfica es la siguiente:

Figura 6.1 Pantalla de la interfaz gráfica de la estación meteorológica.

Dentro de la interfaz podemos visualizar los datos graficados que se está registrando.

Cuanta con 3 pantallas capaz de visualizar has 8 variables. Además existen otros

apartados que permiten la visualización, control del flujo de los datos. Los apartados de la

pantalla de la interfaz gráfica se dividen en los siguientes bloques:

Bloque de conexión.

Bloque de control de medición de datos.

Bloque de Selección de variables.

Bloque Pantalla.

Bloque de visualización de variables atmosféricas.

Bloque de fecha y hora.

En la siguiente imagen podemos visualizar los bloques de la pantalla de la interfaz gráfica.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 69

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 70

6.2 Bloque de conexión:

En el bloque conexión se permite hacer la primera comunicación con el circuito

transmisor, y lo que se hace en esta parte es seleccionar el puerto serial dónde está

conectado el circuito transmisor, una vez seleccionado se abre un puerto que permita leer

y escribir datos en el puerto serial, y a continuación enviamos un carácter ‘c’ al circuito

transmisor, cuando el circuito transmisor reciba el carácter encenderá el led de la placa y

enviará la palabra “Conectado”. Esta palabra se visualizará en la Interfaz dentro del

bloque de conexión y será una indicación de que el circuito transmisor está listo para

realizar la medición.

Esta parte también permite interrumpir la conexión entre la interfaz y el circuito transmisor,

desconectándolo si el usuario ya no requiere realizar otra medición.

Dentro de este bloque se tienen 4 objetos importantes: 1 botón de conectado, 1 botón de

desconectado, una caja de lectura de texto y la visualización de estado. En la siguiente

imagen se muestra el bloque de conexión.

Figura 6.3. Bloque de conexión en la interfaz.

Puerto: es un cuadro de texto en el que se permite ingresar el puerto serial de

conexión. Se ingresa de la siguiente manera COMNúmero. La palabra COM se

escribe con mayúsculas y después se ingresa un número. Dentro del código se

programa de tal manera que pueda validar la palabra correcta, enviando un

mensaje si la palabra es incorrecta. Así mismo si la palabra se ha escrito con

minúsculas, las cambia a mayúsculas. Cuando la palabra es correcta, se envía un

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 71

mensaje que el nombre del puerto es correcto. Sin embargo, no significa que el

puerto sea el correcto, puede ser que el puerto elegido no esté conectado el

circuito receptor. Es necesario revisar en Panel de Control el puerto en el que esté

conectado para realizar una correcta conexión.

Conectado: Es un botón que permite realizar la conexión con el circuito

transmisor. Cuando se presiona con un click a este botón, dentro de la interfaz se

presenta un código en Matlab en el que se crea y abre el puerto serial definiendo

características como: Puerto de conexión, velocidad de conexión (9600 baudios/s)

y nombre del puerto como objeto. Cuando se ha creado el puerto serial se escribe

un carácter ‘c’ que envía al circuito receptor y espera la respuesta colocándola en

el estado de la interfaz. Dentro de las instrucciones realizadas tenemos variables

importantes para la conexión.

VARIABLE DESCRIPCIÓN

enciende Bandera que se pone en 1 si se ha presionado el botón conectado

S Nombre que toma el puerto Serial dentro del código del programa.

conectando Variable de tipo carácter. Es igual al caracter ‘c’ para enviarlo al circuito transmisor

estado Cadena de carácter que se recibe una vez que se ha enviado el carácter ‘c’ al circuito transmisor.

contador Mediciones

Variable que inicializa en cero. Es la condición inicial del número de mediciones que se han realizado.

Comunicación Bandera que se pone en 1 si la comunicación con el circuito transmisor se ha realizado.

Tabla 6.1. Variables importantes al presionar el botón conectado.

En la siguiente imagen se presenta el algoritmo del código que se ejecuta al

presionarse conectado:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 72

Figura 6.4. Algoritmo que se ejecuta al presionarse el botón de conectar.

Desconectado: Es un botón que realiza la desconexión entre la interfaz y el

circuito transmisor. Cuando se presiona el botón se verifica que en algún momento

se haya presionado el botón conectado, esto es hace verificando la bandera

enciende. Si lo anterior es correcto, se envía un carácter ‘d’ que apaga el led del

circuito transmisor. Finalmente cierra y borra el puerto serial, con el fin de que otro

dispositivo pueda utilizar el puerto. Cuando se presiona el botón Desconectado se

ejecuta el código necesario para realizar la desconexión, dentro de este código hay

algunas variables importantes que se muestran en la siguiente tabla:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 73

VARIABLE DESCRIPCIÓN

Enciende Bandera que se pone en o si se ha presionado el botón desconectado

S Nombre que toma el puerto Serial dentro del código del programa. Cuando se presiona el botón desconectado esta variable se elimina.

Estado Cadena de caracteres que muestra la palabra desconectado en la pantalla de la interfaz.

Comunicación Bandera que se pone en 1 si la comunicación con el circuito transmisor se ha realizado.

Tabla 6.2 Variables importantes al presionar el botón desconectado.

En la siguiente imagen se muestra el diagrama de flujo que se ejecuta al presionarse el

botón de desconectar.

Figura 6.5. Diagrama de flujo del botón desconectar.

Estado: es un cuadro de texto que muestra en una cadena de caracteres estado

de la interfaz con el circuito transmisor. Si se ha presionado el botón Conectado,

muestra la palabra “Conectado”. Si se presiona el botón desconectado, muestra la

palabra “Desconectado” dentro de la interfaz.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 74

6.3 Bloque de control de medición de datos.

En este bloque se configuran los tiempos de muestreos que se tendrán para realizar la

medición para las 8 variables a medir y una cuadro de texto que indica el tiempo de la

medición total. El muestreo de las 8 variables debe ser forzosamente de valor entero y

está dada en unidades de segundos. Este bloque la parte más importante, contienen el

botón que inicia la medición y es el segundo paso porque depende de la conexión con el

circuito transmisor.

Si el circuito transmisor no ha realizado la conexión con la interfaz, la medición no puede

iniciar. En caso contrario, si la conexión se ha realizado la conexión correcta y se presiona

el botón de medir, se leerán los valores de muestreos de las 8 variables a medir y el

tiempo total de medición. Se generará un ciclo en el que se inicia un temporizador que y

se detendrá cuando haya llegado al tiempo total de medición. Durante el tiempo en que

este activo el temporizador, se enviarán caracteres por el puerto serial con múltiplos del

tiempo de muestreo de cada variable. Los caracteres que se enviaran son los caracteres

numéricos: ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’ y ‘8’. El carácter número está relacionado con el

número de sensor que se desea leer.

Por ejemplo: Se define un tiempo total de 36 segundos. Y un tiempo de muestro para el

sensor1 de 4 segundos y un tiempo muestreo de 6 segundos para un sensor2. Al tener

esta información se estará enviando un carácter ‘1’ cada 4 segundos solicitando la

información al circuito transmisor el valor digital de ese sensor. Para el sensor2 se

solicitará la información al circuito transmisor cada 6 segundos. En la siguiente tabla se

muestran los caracteres enviados y los valores que solicita al circuito transmisor. Para no

utilizar mayor número de datos del tiempo total lo dividimos en intervalos de 2 segundos.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 75

TIEMPO TOTAL = 36 SEGUNDOS

CARÁCTER QUE ENVIA DATO QUE RECIBE

Muestreo1 Muestreo 2 Muestreo 1 Muestreo 2

2 Ninguno Ninguno Ninguno Ninguno

4 ‘1’ Ninguno Sensor1 Ninguno

6 Ninguno ‘2’ Ninguno Sensor2

8 ‘1’ Ninguno Sensor1 Ninguno

10 Ninguno Ninguno Ninguno Ninguno

12 ‘1’ ‘2’ Sensor1 Sensor2

14 Ninguno Ninguno Ninguno Ninguno

16 ‘1’ Ninguno Sensor1 Ninguno

18 Ninguno ‘2’ Ninguno Sensor2

20 ‘1’ Ninguno Sensor1 Ninguno

22 Ninguno Ninguno Ninguno Ninguno

24 ‘1’ ‘2’ Sensor1 Sensor2

26 Ninguno Ninguno Ninguno Ninguno

28 ‘1’ Ninguno Sensor1 Ninguno

30 Ninguno ‘2’ Ninguno Sensor2

32 ‘1’ Ninguno Sensor1 Ninguno

35 Ninguno Ninguno Ninguno Ninguno

36 ‘1’ ‘2’ Sensor1 Sensor2 Tabla 6.3 Ejemplo de valores de lectura para tiempos de muestreo de 4 segundos y 6 segundos.

El bloque de control de medición de datos consta de una

caja de texto dónde se introduce el valor del tiempo total

de la medición. 8 cajas de texto en el que se introducen

los 8 tiempos de muestreos de los diferentes sensores.

Un botón que inicia la medición y otro que detiene la

medición. En la siguiente imagen se muestra el bloque de

control de las mediciones.

Figura 6.6. Bloque de control de medición de datos en la interfaz

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 76

Lectura de tiempo: Es una caja de texto en el que se introduce el tiempo total

para realizar una medición. El valor del tiempo se debe introducir en segundos.

Muestra1, muestra2, muestra3, muestra4, muestra5, muestra6, muestra7,

muestra8: Son cajas de texto en el que se introduce el tiempo de muestreo de los

diferentes sensores. El tiempo está dado en segundos.

Inicio de Medición: Es un botón que lee los valores del tiempo de medición y el

tiempo de muestreo de los diferentes sensores. Al presionarse este botón se inicia

un temporizador para indicar el tiempo en que la medición sea finalizada. Durante

el tiempo en que el temporizador este activo, registrará los datos de los diferentes

sensores conectados en el circuito transmisor con base en los múltiplos del tiempo

de muestreo asignado para cada sensor.

Otra de las tareas dentro del código de este botón es involucrarse con la apariencia

inicial de las tres pantallas de la interfaz. Coloca las visualizaciones de las pantallas

a un intervalo del 50 % del tiempo total de medición y la centra a un 25 % del

tiempo total de medición.

Por ejemplo si se tiene un tiempo de medición de 100 segundos, al presionarse el

botón medición se ajustaran las tres pantallas de tal manera que podamos verlas

de 0 segundos a 50 segundos. Aunque se tiene un bloque independiente para el

ajuste de pantallas, en esta parte sólo se hace la condición inicial para empezar a

visualizar datos.

La tarea principal del botón de Inicio de Medición es recopilar datos con base a los

tiempos de muestreo y el tiempo total de la medición, entonces al recopilar datos

es necesario graficarlos, una parte importante de la interfaz gráfica es visualizar los

datos en un tiempo cercano al real. Por ese motivo le asignamos una nueva tarea

al presionar este botón: Cuando se envía el caracter de solicitud de un sensor en el

circuito transmisor, se recibe el valor digital del sensor; si la pantalla para visualizar

está activada entonces se fija el tiempo en que fue solicitada la medición y se

grafica contra el valor solicitado. Conforme avance el temporizador y con los

valores obtenidos, se van generando dos vectores de datos:

1.-El vector del tiempo del sensor que coincide con los múltiplos del tiempo de

muestreo del sensor.

2.- El vector magnitud del sensor que son los datos solicitados en los valores del

vector tiempo.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 77

Con estos dos vectores es suficiente para realizar una gráfica que se actualiza

cada que toma una medición o cada que sea solicitada. Dentro de este bloque

actualizaremos las gráficas de las pantallas cada que se toma una medición por lo

que la podemos visualizar en un tiempo real.

Finalmente cuando el temporizador termina de medir, los datos quedan guardados

dentro de los vectores tiempo y vector magnitud, automáticamente exportamos

estos datos hacia un archivo de Excel, dónde ya se pueden analizar con mayor

detalle.

Algunas de las variables importantes dentro del botón de este bloque se muestran

en la siguiente tabla:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 78

VARIABLE DECRIPCIÓN

Enciende Bandera que se pone en 1 durante la conexión. Y nos sirve para conocer si la conexión con el circuito transmisor se ha realizado.

Comunicación Cuando el circuito transmisor se comunicó con la interfaz, esta bandera se pone en 1, el botón de medición funciona si esta bandera y la bandera enciende son iguales a 1

Fecha Inicial Al iniciar la medición se registra la fecha inicial y se guarda en una cadena de caracteres.

Fecha Final Al finalizar la medición se guarda en esta variable la cadena de caracteres de la fecha final.

Fecha Actual Variable que se actualiza con la fecha actual cada que se toman valores en la medición.

Tiempo máximo Variable que guarda el valor del tiempo máximo en que se desea realizar la medición.

Muestreo1, muestreo2, muestreo3, muestreo4, muestreo5, muestreo6, muestreo7, muestreo8.

Son valores leídos de la caja de texto de los muestreos de la variables, están dados por segundos

Temperatura, sensor2, sensor3, sensor4, sensor5, sensor6, sensor7, sensor8

Son arreglos de los vectores de magnitud de las variables leídas. Su dimensión depende del tiempo máximo de medición y del tiempo de muestreo. Por ejemplo si se tiene un tiempo máximo de medición de 60 segundos y el tiempo de muestreo del sensor2 es de 6 segundos, la dimensión del vector del sensor2 será de 10 datos de medición.

T1, t2, t3, t4, t5, t6, t7, t8 Son las variables del vector tiempo, en el que se guardan los múltiplos de tiempo en que fue tomada la medición.

Toc Más que una variable, es un temporizador interno de Matlab y es que llevará la cuenta del tiempo de medición.

Contador modulo1, contador modulo2, contador modulo3, contador modula4, contador modulo5, contador modulo6, contador modulo7, contador modulo8.

Son variables que se incrementan con base al tiempo de muestreo asignado, por ejemplo si el sensor 1 tiene un tiempo de muestreo de 3 segundos, el contador modulo tomara valores de: 3, 6, 9, 12…

pausa Bandera que pone en 1 si el botón de detener es presionado

Tabla 6.4. Variables importantes al presionar el botón medir.

La siguiente imagen muestra el algoritmo que se ejecuta al presionar el botón de

medir.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 79

Figura 6.7. Algoritmo que se ejecuta al presionar el botón medir.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 80

Paro de Medición: Cuando se presiona este botón, detiene la medición en al

instante, automáticamente se guardan los valores obtenidos hasta entonces. Al

presionarse cambia el estado de la bandera pausa al valor de 1, rompiéndose el

ciclo que ejecuta el botón medir. Recordemos que en una GUI, el estilo de

programación es concurrente, por lo que al estarse ejecutando el código de medir

se pueden hacer otras tareas sin que se pierda el proceso. Una de esas tareas es

modificar la bandera pause para que la medición sea detenida.

6.4 Bloque de Selección de variables.

Dentro de la interfaz gráfica existen tres pero se comportan de la misma manera. En este

bloque se encuentran 8 botones que permiten seleccionar la variable deseada en la

pantalla correspondiente. El bloque se muestra en la siguiente figura:

Figura 6.8. Bloque de Selección de variables en la interfaz.

Cuando se presiona alguno de los 8 botones se visualiza en la pantalla la gráfica

seleccionada, desactivándose las demás. Esto se hace mediante un código binario que se

presenta en la siguiente tabla. El código de selección.

BOTON PRESIONADO

S1 S2 S3 S4 S5 S6 S7 S8

Temperatura. 1 0 0 0 0 0 0 0

Humedad. 0 1 0 0 0 0 0 0

Sensor3 0 0 1 0 0 0 0 0

Sensor4 0 0 0 1 0 0 0 0

Sensor5 0 0 0 0 1 0 0 0

Sensor6 0 0 0 0 0 1 0 0

Sensor7 0 0 0 0 0 0 1 0

Snsor8 0 0 0 0 0 0 0 1

Tabla 6.5 Código generado al presionar los botones del bloque de selección de variables.

Los siguientes códigos son leídos cuando se requieren graficar una de las variables en

alguna de las tres pantallas que existen en la interfaz. Una vez que se tiene el código se

manda a llamar el trazado del grafico de los valores que tengamos en ese instante.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 81

6.5 Bloque Pantalla.

Existen tres de estos bloques dentro de la interfaz, en ella cada una de ellas se permiten

visualizar las ocho variables que se tiene registradas. Esta la parte más importante de la

interfaz, en ella se grafican en tiempo real los valores registrados, así mismo se pueden

enfocar intervalos de tiempo deseados mediante 2 barras slider que modifican el ancho de

la pantalla y el centro. Después de que termina la medición es necesario revisar con

detalle alguna curvas de análisis, también se es posible enfocarlas.

En muchos casos por el tamaño de slider no se tienen una mayor resolución en la hora de

seleccionar el ancho de la ventana, en ocasiones se pierde la señal durante la medición,

por lo que se integra un botón de autoconfiguración que enfoca la pantalla 15 segundo

antes de valor de tiempo del temporizador y 15 segundos después del tiempo del

temporizador. En la siguiente imagen se tiene el bloque de pantalla.

Figura 6.9. Bloque pantalla dentro de la interfaz.

Dentro de este bloque se tienen 5 objetos importantes que son: autoconfiguración, rango

de pantalla, centro de pantalla, axes y el nombre de la pantalla. A continuación se

presentan la descripción:

Nombre de la pantalla: es una caja de texto que cambia el nombre de la pantalla

con relación a la variable elegida.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 82

Axes: Es un objeto en el cual se visualizan los datos, burdamente es el área donde

aparece la gráfica. Dependiendo de la gráfica seleccionada es la que se aparecerá

en el axes.

Rango de pantalla y centro de pantalla: En la parte visual de la interfaz son dos

sliders que modifican el ancho de la pantalla y el centro de las pantallas. Con estas

herramientas se permiten visualizar y ajustar a los intervalos de tiempo deseados e

incluso ver el historial del comportamiento de las variables en cualquier tiempo de

la medición.

Con ello, el comportamiento de estos objetos se da por eventos, y pueden ser

utilizados: Cuando la medición se está realizado sin interrumpirla y cuando la

medición ha terminado.

Cuando se presiona el slider rango de pantalla o centro de pantalla, se confirma el

código de selección del sensor que se desea visualizar y grafica ese sensor en el

intervalo señalado por el slider, ajustándose el ancho de la ventana y el centrado

de esta.

Las características principales de los slider tanto de rengo de pantalla como centro

de pantalla son: tienen un valor mínimo y un valor máximo. Damos las

explicaciones de los valores que toman los dos slider.

Intervalos de operación del slider Rango de pantalla: Este slider determina el ancho

de la ventana que se desea visualizar, por lo que el valor mínimo de este slider es

de un valor arbitrario de 20 (con el fin de ver como mínimo un pantalla de 20

segundos, si damos valor 0 tendremos una visión de pantalla de 0 segundos y no

es muy lógico tener una pantalla con este tiempo de visión). El valor máximo es el

tiempo máximo de medición y no puede rebasar este valor.

Intervalos de operación del slider Centro de pantalla: Una vez que se define el

ancho de pantalla se tiene que definir la posición dentro de la medición de dónde

se requiere ubicar. No es lo mismo tener un ancho de pantalla de 20 segundos

centrada a un tiempo de 30 segundos que centrada a un tiempo de 40 segundos.

Como antes se define el valor mínimo del ancho de la pantalla es de 20 segundos.

Los casos más críticos son: visualizar la pantalla en el extremo derecho y en el

extremo izquierdo. Cuando centra la pantalla en el extremo izquierdo con un ancho

de pantalla mínimo, se centrará en un valor 10 y este el valor mínimo que puede

tomar el slider de centro de pantalla. Si la pantalla se requiere centrar en el

extremo derecho con un ancho de pantalla mínimo, el centro de pantalla debe estar

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 83

en el valor del tiempo máximo menos 10; y este es el valor máximo que puede

tomar el slider de centro de pantalla.

Algunas variables importantes al ejecutarse los eventos de los objetos rango de

pantalla y centro de pantalla son los siguientes:

VARIABLE DESCRIPCIÓN

Rango de pantalla. Es un valor leído del slider de rango de pantalla.

Centro de pantalla. Es un valor leído del slider de centro de pantalla.

Límite inferior de pantalla.

Variable con valor para visualizar el límite inferior de pantalla, usa como referencia valor del centro de pantalla

Límite superior de pantalla

Variables con valor para visualizar el límite superior de la pantalla, usa como referencia el centro de pantalla.

Límites de pantalla Vector de dos valores en los que se guardan: límite inferior de pantalla y límite superior de pantalla.

Tabla 6.6 variables importantes de los objetos rango y centro de pantalla.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 84

En la siguiente imagen se muestra el algoritmo de los sliders centrado de pantalla y

rango de pantalla:

Figura 6.10. Algoritmo que se ejecuta al ajustar la pantalla con los sliders.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 85

Autoconfiguración: Cuando se define un tiempo máximo de medición muy

grande, los sliders pierden su resolución y encontrar la señal en el tiempo actual a

veces es difícil de ubicar. Autoconfiguración permite localizar a la señal en el

tiempo actual con un ancho de pantalla de 30 segundos, el centro de pantalla es

igual al tiempo del temporizador justamente cuando se presiona este botón.

Mostramos el algoritmo en la imagen:

Figura 6.11. Algoritmo que se ejecuta al presionar el botón de autoconfiguración.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 86

6.6 Bloque de visualización de variables atmosféricas.

En este bloque se visualizan los valores de las variables de medición en el tiempo en

que se toma la medición. Se hace con el fin de visualizar que datos se están

registrando y se muestran en cuadros de texto. El bloque se muestra en la siguiente

figura:

Figura 6.12. Bloque de la visualización de las variables atmosféricas dentro de la interfaz.

6.7 Bloque de fecha y hora.

En este bloque se visualiza la fecha y hora actual. Matlab tiene una instrucción que

permite manejarla como cadena de caracteres. Cuando se inicia una medición se registra

la fecha inicial de la medición y se guarda variables, cuando termina la medición se

guarda en otra variable. Con esta información se puede conocer la fecha y hora en que

inicia una medición y finaliza. En la siguiente figura se tiene el bloque de facha y hora:

Figura 6.13. Bloque de la visualización de las variables atmosféricas dentro de la interfaz.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 87

6.8 Ecuación del sensor de temperatura.

Actualmente se tiene pueden conectar en el circuito transmisor hasta 8 sensores, sin

embargo únicamente tenemos dos y el sensor de temperatura es uno de ellos. El sensor

seleccionado para esta variable es el sensor LM35. Con salida totalmente lineal

proporcional a grados centígrados, no requiere calibración externa. Al sensibilidad de este

sensor es de 10mV/°C y puede operar de 4 a 30 volts de corriente directa. Una de las

propiedades de este sensor es que es totalmente lineal. Así que de la gráfica del

fabricante tomamos el dato inicial y el dato final, con esto ajustamos a una recta, que es la

curva más simple.

Figura 6.14. Respuesta del sensor LM35 Voltaje vs Temperatura.

Si tomamos el valor mínimo que es:

El valor máximo es:

Encontrando la ecuación de la recta.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 88

(

)

Pero como se lee valores digitales de temperatura tenemos:

Igualando las dos ecuaciones:

(

)

Como se quiere tener el valor de la temperatura y el dato temperatura es el valor que

tomamos como lectura, despejamos a t.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 89

6.9 Ecuación del sensor de humedad.

El sensor que se utiliza es el HMZ-433 A1 consiste en un sensor integrado con una salida

de voltaje de DC para una temperatura de 0 a 100 %RH. Dentro de la hoja de datos del

fabricante se proporciona la siguiente tabla que genera la gráfica mostrada.

Figura 6.15. Respuesta del sensor de humedad HZM33A1 Humedad vs voltaje de salida

De la tabla dad por el fabricante realizamos un ajuste de los datos mediante el método de

mínimos cuadrados ajustando a un recta. La ecuación resultante es la siguiente.

Como se sabe en la lectura se obtienen valores numéricos a partir del voltaje de DC del

sensor de humedad por lo que:

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 90

Igualando las dos ecuaciones se tiene:

Despejando al porcentaje de humedad que es el valor que se requiere obtener a partir del

valor digital, se tiene la ecuación del sensor de humedad:

La ecuación de humedad a programa es la siguiente.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 91

6.10 Código de la programación de la interfaz. %Código generado cuando se crea una interfaz en Matlab

function varargout = conectar(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @conectar_OpeningFcn, ...

'gui_OutputFcn', @conectar_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% --- Executes just before conectar is made visible.

function conectar_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

%%Coloca la imagen llamada imp

guidata(hObject, handles);

A=imread('imp', 'bmp');

A=uint8(A);

Img=image(A, 'Parent',handles.axes5);

set(handles.axes5, 'Visible', 'off', 'YDir', 'reverse', 'XLim', get(Img, 'XData'),'YLim', get(Img,

'YData'));

% --- Outputs from this function are returned to the command line.

function varargout = conectar_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

%%Fin del código del programa.

%////////INICIA CODIGO DE PROGRAMA/////////////////////////////////

%Codigo que se ejecuta cuando se presiona conectar

function Conectar_Callback(hObject, eventdata, handles)

%Declaración de variables globales

global enciende

global s

global comunicacion

global puerto

global contadorMediciones

contadorMediciones=0 %Inicia contador de mediciones

puerto=get(handles.puerto_com, 'string') %Leemos el puerto serial del cuadro de texto.

delete(instrfind({'Port'},{puerto})) %Borramos algún puerto existente con ese nombre.

s = serial(puerto,'BaudRate',9600,'Terminator','CR/LF');%Guardamos un objeto s= puerto

serial utilizado.

warning('off','MATLAB:serial:fscanf:unsuccessfulRead');%Aviso de precaución si no hay

puerto.

fopen(s); %abrir puerto.

enciende=1 %bandera enciende igual a 1

if enciende==1

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 92

conectando=99;

fwrite( s, conectando); %Escribimos un caracter 'c' al circuito transmisor

prende=fscanf(s, '%s') %Leemos el dato del circuito transmisor.

set(handles.Aviso, 'string', prende); %Mostramos la palabra recibida.

end

estado='Conectado'; %Se asegura si la palabra recibida es "Conectado"

if estado==prende

comunicacion=1; %Activación de las banderas

enciende=1;

end

%Fin del código que se ejecuta cuando se presiona conectar

%Codigo que se ejecuta cuando se presiona para medir

function pushbutton6_Callback(~, eventdata, handles)

%Declaración de las varaibles globales

global s

global contadorMediciones

global terminar

global enciende

global fechaInicial

global fechaFinal

global fechaActual

global comunicacion

global limites_pantalla_1

global tiempo_maximo

global q

global t_8

global sensor8

global pantalla1

global pantalla22

global pantalla33

global p

global t_7

global sensor7

global n

global t_6

global sensor6

global m

global t_5

global sensor5

global l

global t_4

global sensor4

global k

global t_3

global sensor3

global j

global t_2

global sensor2

global i

global t

global temperatura

%Sensosres de la panatalla 1

global sensor1

global sensor2a

global sensor3a

global sensor4a

global sensor5a

global sensor6a

global sensor7a

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 93

global sensor8a

%sensores de la panatalla 2

global sensor21

global sensor22

global sensor23

global sensor24

global sensor25

global sensor26

global sensor27

global sensor28

%Sensores de la panatalla 3

global sensor31

global sensor32

global sensor33

global sensor34

global sensor35

global sensor36

global sensor37

global sensor38

%Variable global para pausar el sistema

global pausa

pausa=0

if enciende==1

if comunicacion==1

%Tomando la fecha actual

fechaInicial=datestr(now);

set(handles.fecha, 'string', fechaInicial);

%%Lee el valor del tiempo maximo de la medición.

tiempo_maximo=str2double(get(handles.lectura_tiempo, 'string'));

%%Leyendo datos para vusualizar la tercera pantalla

muestreo_sensor3=str2double(get(handles.muestreo3, 'string'))

muestreo_sensor3=fix(muestreo_sensor3);

rango_inicial_pantalla3=tiempo_maximo;

set(handles.barra_rango_pantalla3, 'Max', tiempo_maximo);

set(handles.barra_rango_pantalla3, 'value', rango_inicial_pantalla3);

centro_inicial_pantalla3=tiempo_maximo/4;

set(handles.barra_centro_pantalla3, 'Max', tiempo_maximo-10);

set(handles.barra_centro_pantalla3, 'value', centro_inicial_pantalla3);

limite_inferior_inicial_pantalla3=0;

limite_superior_inicial_pantalla3= tiempo_maximo/2

velocidad_sensor3=1/muestreo_sensor3

limites_pantalla_3=[limite_inferior_inicial_pantalla3,

limite_superior_inicial_pantalla3]

set(handles.pantalla3, 'XLim', limites_pantalla_3, 'YLim', [0, 100]);

grafica2=line(nan, nan, 'Color', 'b', 'LineWidth', 2);

%% Leyendo datos para vizualizar la segunda pantalla

muestreo_sensor2=str2double(get(handles.muestreo2, 'string'));

muestreo_sensor2=fix(muestreo_sensor2);

rango_inicial_pantalla2=tiempo_maximo;

set(handles.barra_rango_pantalla2, 'Max', tiempo_maximo);

set(handles.barra_rango_pantalla2, 'value', rango_inicial_pantalla2);

centro_inicial_pantalla2=tiempo_maximo/4;

set(handles.barra_centro_pantalla2, 'Max', tiempo_maximo-10);

set(handles.barra_centro_pantalla2, 'value', centro_inicial_pantalla2);

limite_inferior_inicial_pantalla2=0;

limite_superior_inicial_pantalla2=tiempo_maximo/2;

velocidad_sensor2=1/muestreo_sensor2;

limites_pantalla_2=[limite_inferior_inicial_pantalla2,

limite_superior_inicial_pantalla2];

set(handles.pantalla2, 'XLim', limites_pantalla_2, 'YLim',[0 100]);

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 94

grafica2=line(nan, nan, 'Color', 'b', 'LineWidth', 2);

%% Leyendo datos para visualizar la primera pantalla.

muestreo_sensor1=str2double(get(handles.muestra, 'string'));

muestreo_sensor1=fix(muestreo_sensor1);

set(handles.slider4, 'Max', tiempo_maximo);

set(handles.slider6, 'Max', tiempo_maximo-10);

centro_inicial_pantalla1=tiempo_maximo/4;

rango_inicial_pantalla1=tiempo_maximo;

set(handles.slider4,'value', rango_inicial_pantalla1);

set(handles.slider6, 'value',centro_inicial_pantalla1);

limite_inferior_inicial_pantalla1=0;

limite_superior_inicial_pantalla1=tiempo_maximo/2;

velocidad_sensor1= 1/muestreo_sensor1;

limites_pantalla_1=[limite_inferior_inicial_pantalla1,

limite_superior_inicial_pantalla1]; %colocando

set(handles.axes7, 'XLim', limites_pantalla_1,'YLim',[0 100]);

grafica1 = line(nan,nan,'Color','r','LineWidth',2);

%% Vectores de inicio del sensor 1

temperatura=zeros(1, tiempo_maximo*velocidad_sensor1);

t=zeros(1, tiempo_maximo*velocidad_sensor1);

contador_modulo=0;

i=1;

%% Vectores de inicio del sensor 2

sensor2=zeros(1, tiempo_maximo*velocidad_sensor2);

t_2=zeros(1, tiempo_maximo*velocidad_sensor2);

contador_modulo2=0;

j=1;

%% Vectores de inicio del sensor 3

sensor3=zeros(1, tiempo_maximo*velocidad_sensor3);

t_3=zeros(1, tiempo_maximo*velocidad_sensor3);

contador_modulo3=0;

k=1;

%% Vectores de inicio del sensor 4

muestreo_sensor4=str2double(get(handles.muestreo4, 'string'));

muestreo_sensor4=fix(muestreo_sensor4);

velocidad_sensor4=1/muestreo_sensor4

sensor4=zeros(1, tiempo_maximo*velocidad_sensor4);

t_4=zeros(1, tiempo_maximo*velocidad_sensor4);

contador_modulo4=0;

l=1

%% Vectores de inicio del sensor 5

muestreo_sensor5=str2double(get(handles.muestreo5, 'string'));

muestreo_sensor5=fix(muestreo_sensor5);

velocidad_sensor5=1/muestreo_sensor5;

sensor5=zeros(1, tiempo_maximo*velocidad_sensor5);

t_5=zeros(1, tiempo_maximo*velocidad_sensor5);

contador_modulo5=0;

m=1;

%% Vectores de inicio del sensor 6

muestreo_sensor6=str2double(get(handles.muestreo6, 'string'));

muestreo_sensor6=fix(muestreo_sensor6);

velocidad_sensor6=1/muestreo_sensor6;

sensor6=zeros(1, tiempo_maximo*velocidad_sensor6);

t_6=zeros(1, tiempo_maximo*velocidad_sensor6);

contador_modulo6=0;

n=1;

%% Vectores de inicio del sensor 7

muestreo_sensor7=str2double(get(handles.muestreo7, 'string'));

muestreo_sensor7=fix(muestreo_sensor7);

velocidad_sensor7=1/muestreo_sensor7;

sensor7=zeros(1, tiempo_maximo*velocidad_sensor7);

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 95

t_7=zeros(1, tiempo_maximo*velocidad_sensor7);

contador_modulo7=0;

p=1;

%% Vectores de inicio del sensor 8

muestreo_sensor8=str2double(get(handles.muestreo8, 'string'));

muestreo_sensor8=fix(muestreo_sensor8);

velocidad_sensor8=1/muestreo_sensor8;

sensor8=zeros(1, tiempo_maximo*velocidad_sensor8);

t_8=zeros(1, tiempo_maximo*velocidad_sensor8);

contador_modulo8=0;

q=1;

%% Inicia reloj interno de Matlab

tic

while(toc<=tiempo_maximo&pausa==0)

fechaActual=datestr(now);

set(handles.fecha, 'string', fechaActual);

terminar=0;

tiempo=toc;

set(handles.Segundos,'string', tiempo);

t(i)=toc;

t(i)=fix(t(i));

t_2(j)=toc;

t_2(j)=fix(t_2(j));

t_3(k)=toc;

t_3(k)=fix(t_3(k));

t_4(l)=toc;

t_4(l)=fix(t_4(l));

t_5(m)=toc;

t_5(m)=fix(t_5(m));

t_6(n)=toc;

t_6(n)=fix(t_6(n));

t_7(p)=toc;

t_7(p)=fix(t_7(p));

t_8(q)=toc;

t_8(q)=fix(t_8(q));

axes(handles.axes7);

grid on;

axes(handles.pantalla2);

grid on;

axes(handles.pantalla3);

grid on;

%%Condicion de mestreo del sensor1

if contador_modulo<=t(i)

com='1' ;

contador_modulo=contador_modulo+muestreo_sensor1;

fwrite(s, com); %envía el caracter 1

dato=fscanf(s,'%d'); %espera la lectura del dato

temperatura(i)=0.5371093*dato-541.666; %Ecuación de temperatura

tem=temperatura(i);

set(handles.temperatura_texto,'string', tem);

x = linspace(0,i/velocidad_sensor1,i);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%graficar%%%%%%%%%%%%%%%%%%%%%%%%%

if pantalla1&sensor1==1

graficarSensor1Pantalla1

end

if pantalla22&sensor21==1

graficarSensor1Pantalla2

end

if pantalla33&sensor31==1

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 96

graficarSensor1Pantalla3

end

i=i+1

end

%condición de muestreo para el sensor 2

if contador_modulo2<=t_2(j)

com2='2';

contador_modulo2=contador_modulo2+muestreo_sensor2;

fwrite(s, com2); %envía el caracter 2

dato2=fscanf(s, '%d'); %Lee el datos del sensor 2

sensor2(j)=0.0966796*dato2; %Ecucaión del sensor 2

x_2=linspace(0, j/velocidad_sensor2, j);

%verificacion de la pantalla activada

if pantalla1&sensor2a==1

graficarSensor2Pantalla1

end

if pantalla22&sensor22==1

graficarSensor2Pantalla2

end

if pantalla33&sensor32==1

graficarSensor2Pantalla3

end

j=j+1;

end

%condición de muestreo para el sensor 3

if contador_modulo3<=t_3(k)

com3='3';

contador_modulo3=contador_modulo3+muestreo_sensor3;

fwrite(s, com3); %envia caracter 3

dato3=fscanf(s, '%d');%lee el datos del sensor3

sensor3(k)=dato3*3.3/1023

x_3=linspace(0, k/velocidad_sensor3, k);

%verificación del la pantalla del sensor3

if pantalla1&sensor3a==1

graficarSensor3Pantalla1

end

if pantalla22&sensor23==1

graficarSensor3Pantalla2

end

if pantalla33&sensor33==1

graficarSensor3Pantalla3

end

k=k+1;

end

%condición de muestreo para el sensor 4

if contador_modulo4<=t_4(l)

com4='4';

contador_modulo4=contador_modulo4+muestreo_sensor4;

fwrite(s, com4); %envia el caracter 4

dato4=fscanf(s, '%d'); %lee datos del sensor 4

sensor4(l)=dato4*3.3/1023

x_4=linspace(0, l/velocidad_sensor3, l);

%verificación del la pantalla del sensor4

if pantalla1&sensor4a==1

graficarSensor4Pantalla1

end

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 97

if pantalla22&sensor24==1

graficarSensor4Pantalla2

end

if pantalla33&sensor34==1

graficarSensor4Pantalla3

end

l=l+1;

end

%condición de muestreo para el sensor 5

if contador_modulo5<=t_5(m)

com5='5';

contador_modulo5=contador_modulo5+muestreo_sensor5;

fwrite(s, com5); %envia el caracter 5

dato5=fscanf(s, '%d'); %lee datos del sensor 5

sensor5(m)=dato5*3.3/1023

x_5=linspace(0, m/velocidad_sensor5, m);

%verificación del la pantalla del sensor5

if pantalla1&sensor5a==1

graficarSensor5Pantalla1

end

if pantalla22&sensor25==1

graficarSensor5Pantalla2

end

if pantalla33&sensor35==1

graficarSensor5Pantalla3

end

m=m+1;

end

%condición de muestreo para el sensor 6

if contador_modulo6<=t_6(n)

com6='6';

contador_modulo6=contador_modulo6+muestreo_sensor6;

fwrite(s, com6); %envia el caracter 6

dato6=fscanf(s, '%d'); %lee datos del sensor 6

sensor6(n)=dato6*3.3/1023

x_6=linspace(0, n/velocidad_sensor6, n);

%verificación del la pantalla del sensor6

if pantalla1&sensor6a==1

graficarSensor6Pantalla1

end

if pantalla22&sensor26==1

graficarSensor6Pantalla2

end

if pantalla33&sensor36==1

graficarSensor6Pantalla3

end

n=n+1;

end

%condición de muestreo para el sensor 7

if contador_modulo7<=t_7(p)

com7='7';

contador_modulo7=contador_modulo7+muestreo_sensor7;

fwrite(s, com7); %envia el caracter 7

dato7=fscanf(s, '%d'); %lee datos del sensor 7

sensor7(p)=dato7*3.3/1023

x_7=linspace(0, p/velocidad_sensor7, p);

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 98

%verificación del la pantalla del sensor7

if pantalla1&sensor7a==1

graficarSensor7Pantalla1

end

if pantalla22&sensor27==1

graficarSensor7Pantalla2

end

if pantalla33&sensor37==1

graficarSensor7Pantalla3

end

p=p+1;

end

%condición de muestreo para el sensor 8

if contador_modulo8<=t_8(q)

com8='8';

contador_modulo8=contador_modulo8+muestreo_sensor8;

fwrite(s, com8); %envia el caracter 8

dato8=fscanf(s, '%d'); %lee datos del sensor 8

sensor8(q)=dato8*3.3/1023

x_8=linspace(0, q/velocidad_sensor8, q);

%verificación del la pantalla del sensor8

if pantalla1&sensor8a==1

graficarSensor8Pantalla1

end

if pantalla22&sensor28==1

graficarSensor8Pantalla2

end

if pantalla33&sensor38==1

graficarSensor8Pantalla3

end

q=q+1;

end

end

terminar=1; %Bandera de terminar que se poene en 1

hoja='hoja--'

contadorMediciones=contadorMediciones+1; %Conteo de mediciones

%%Preparacion del nombre de la hoja en excel

modulo=mod(contadorMediciones, 10);

modulo=modulo+48;

divisor=fix(contadorMediciones/10);

divisor=divisor+48;

hoja(5)=divisor;

hoja(6)=modulo;

fechaFinal=datestr(now); %Guardano la fecha final

guardar='Guardando Medicion';

msgbox('Guardando datos, ¡Espere!', guardar);

%Columna de temperatura

temperatura=temperatura';

x=x';

%Columna de Humedad

sensor2=sensor2';

x_2=x_2';

%Guardando datos del sensor 3

sensor3=sensor3';

x_3=x_3';

%Guardando datos del sensor 4

sensor4=sensor4';

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 99

x_4=x_4';

%Guardando datos del sensor 5

sensor5=sensor5';

x_5=x_5';

%Guardando datos del sensor 6

sensor6=sensor6';

x_6=x_6';

%Guardando datos del sensor 7

sensor7=sensor7';

x_7=x_7';

%Guardando datos del sensor 8

sensor8=sensor8';

x_8=x_8';

%%Exportando todos los datos a excel

xlswrite('datos.xlsx', x, hoja, 'a2');

xlswrite('datos.xlsx', temperatura, hoja, 'b2');

xlswrite('datos.xlsx', x_2, hoja, 'd2')

xlswrite('datos.xlsx', sensor2, hoja, 'e2');

xlswrite('datos.xlsx', x_3, hoja, 'g2')

xlswrite('datos.xlsx', sensor3, 'hoja1', 'h2');

xlswrite('datos.xlsx', x_4, hoja, 'j2')

xlswrite('datos.xlsx', sensor4, hoja, 'k2');

xlswrite('datos.xlsx', x_5, hoja, 'm2')

xlswrite('datos.xlsx', sensor5, hoja, 'n2');

xlswrite('datos.xlsx', x_6, hoja, 'p2')

xlswrite('datos.xlsx', sensor6, hoja, 'q2');

xlswrite('datos.xlsx', x_7, hoja, 's2')

xlswrite('datos.xlsx', sensor7, hoja, 't2');

xlswrite('datos.xlsx', x_8, hoja, 'v2')

xlswrite('datos.xlsx', sensor8, hoja, 'w2');

termina_medicion='t'

fwrite(s, termina_medicion)

finMedicion='Termina Medicion';

%Mensaje al usuario, indaca la medicion finalizada

msgbox('Acabo la Medición', finMedicion);

end

end

%%Fin del código al presionar el notón medir

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 100

Conclusión.

Finalmente se entrega un trabajo en el que se aprendieron varios aspectos de la

adquisición y manejo de información, que a su vez fueron etapas que se fueron

resolviendo. Inicialmente se empezó con el problema de adquisición de datos, determinar

qué variables tenían que ser recopiladas y cómo representarlas. Con un poco de

experiencia fue resuelto, sin embargo se obtenían dato que simplemente se perdían y no

eran procesados. Fue cuando surgió otra etapa, realizar la primera conexión entre una

computadora con un microcontrolador y viceversa. El microcontrolador debería entregar

datos y la computadora interpretarlos y visualizarlos. Es cuando nace la necesidad de

contar con una interfaz de usuario.

Se tenían las primeras mediciones sobre la interfaz siempre a prueba y error, es como

siempre se trabajó. Se descartaron opciones de lo que debería tener y no tener la interfaz

gráfica en Matlab, naciendo el primer prototipo: sistema adquisición de datos atmosféricos

alámbrico. Este primer prototipo estaba casi diseñado para acoplar un modo dispositivo

inalámbrico. Se volvió a considerar opciones de lo que necesitábamos. Xbee fue una

solución ante el problema de comunicación inalámbrica, naciendo el segundo prototipo

que fue un sistema adquisición de datos atmosféricos inalámbrico.

Este prototipo ya cumplía los objetivos propuestos dentro de la Estancia Industrial. Y es el

producto casi final aunque surgen otras dudas acerca de usar la interfaz y el dispositivo

inalámbrico. Utilizarlos sin la necesidad de utilizar Matlab, la respuesta es sí y no. Se

puede empaquetar la interfaz junto con los compiladores de Matlab e instalarlo en una

computadora, este es el próximo paso en cual se trabajará.

Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Página 101

Referencias.

1. Martínez de la Rosa, Juan José. Meteorología. Asociaciones de Scouts México. Página 3.

2. Renom, Madeleine. Principios básicos de las mediciones atmosféricas. Fac, de Ciencias –UdelaR.

2011. Página 10.

3. J. Serrano, P. Piñeiro, E. Cabrera. Aplicación de las redes de sensores inalámbricos a la industria

nuclear. Tecnatom. 10. Página 2.

4. Sandia National Laboratories “HybridEmergency Radiation Detection Network:

minimizeradiationrisksafter an attack”, USA, June 2004. Página 17.

5. A. Mielke et al. “Independent Sensor Networks”, IEEE Instrumentation & Measurement, Junio 2005.

6. Digi International, 2009, (empresa dedicada al diseño de tecnología de conexión de dispositivos

inalámbricos), URL http://www.digi.com/ (última visita 10/Enero/2013).

7. Hebel Martin, Bricker George, Harries Daniel. Getting Started with Xbee RF Modules a tutorial for Basic

stamp and Propeller Microcontrollers. Versión1.0. Parallax.inc. Página 8.

8. Ruiz Gutiérrez, José Manuel. Arduino+Xbee Implementación de Sistemas de transmisión de Datos y

sensores en Redes Inalámbricas con Xbee integrado en la “Plataforma Open hardware” Arduino.

Versión 1.0. Serie: Arduino y Comunicación. Noviembre 2012. Página 12.

9. Arduino (plataforma de código libre para el prototipo Arduino como computación física, apta para

sensores inalambricos), URL http://www.arduino.cc (última visita 3/Marzo/2013).

10. Restrepo G., Andrés D., Loaiza C., Humberto, Caicedo B. Eduardo. Control y adquisición serial de

señales ultrasónicas con Matlab. Página 4.

11. MATLAB ®. Creating Graphical User Interfaces. MathWorks R2012b. (Revised for Matlab 8.0). Página

3.