Está en la página 1de 101

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

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

Página 1
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Í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.

Página 2
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 3
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 4
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 5
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

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.

Página 7
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 8
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

CLASIFICACIÓN DISTANCIA APLICACIÓN


Micro escala Menor a 100 metros Agrometeorología:
Evaporación
Escala Local Entre 100 metros y 3 Contaminación
Kilómetros atmosférica, tornados
Meso escala De 3 a 100 kilómetros Tormentas, brisa de mar.
Escala Sinóptica De 100 a 3000 Frentes, ciclones,
Kilómetros. clusters nubosos
Escala Planetaria Mayor a 3000 Kilómetros Ondas largas en altura.

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.

Página 9
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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).

Página 10
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 Sandia 4 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.

Página 11
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 12
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Figura 1.3 Confusión en la comunicació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.

Página 13
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 configurado 8. 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:

Página 14
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 ATDH 0, indica un dirección de 16 bits.
(parte alta)
Dirección destino ATDL 2, indica la dirección del XBEE con el que
(parte baja) 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

Página 15
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 Figura 1.5 Secuencia de configuración de dos XBEE en
coincidir con el parámetro ATDL de los la Hyperterminal
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

Página 16
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 2.8 VDC-3.4 VDC 2.8 VDC-3.4 VDC
alimentación
Potencia 1mW 63mW
Distancia de 90 m 1.6Km
alcance al aire libre
Distancia de 30 m 90 m
alcance urbano
Frecuencia de 2.4 GHz, 16 Canales 2.4 GHz, 12
operación y canales 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.

Página 17
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 18
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 19
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 20
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 21
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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: Figura 1.11 Estructura de un
sketch en Arduino
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.

Página 22
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 23
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 24
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 25
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 26
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

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.

Página 28
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 29
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 30
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

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.

Página 32
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 33
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

Página 34
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

Página 35
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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
ESTADOS DE LA ENTRADA Voltaje en la salida del canal
Habilitación S2 S1 S0 analógico
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

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.

Página 36
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 37
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 38
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

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.

Página 40
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 41
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 42
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

NÚMERO NOMBRE DESCRIPCIÓN


DE PIN
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 Este pin se conecta con la salida del multiplexor. Es
analógica 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:

Página 43
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 NOMBRE DESCRIPCIÓN


DE PIN
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

Página 44
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 45
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

NÚMERO NOMBRE DESCRIPCIÓN


DE PIN
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:

Página 46
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

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.

Página 48
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

 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.

VARIABLE PIN EN LA DESCRICIÓN


TARJETA ARDUINO
Selector Es una variable de tres bits que se enfoca
6 para controlar la selección del multiplexor
analógico. Toma valores binarios de 000
7 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
8 menos significativo.
Habilitación Este pin hace referencia a la habilitación
del multiplexor. Toma dos valores HIGH
9
(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.
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.

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 Físicamente no es un pin, sino una configuración de
comunicación software indicándole a la tarjeta Arduino para trabajar a
9600 baudios/s

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

Página 50
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

 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.

Página 51
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 52
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

En la siguiente figura se tiene el circuito transmisor construido.

Figura 4.9 Circuito transmisor.

Página 56
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

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.

Página 58
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 59
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 60
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 61
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 62
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 63
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 64
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

El error calculado es el siguiente.

| |

Página 65
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

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

Página 67
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 68
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

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

Página 70
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 Variable que inicializa en cero. Es la condición inicial
Mediciones 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:

Página 71
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

Página 72
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 73
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 74
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

TIEMPO TOTAL = 36 CARÁCTER QUE ENVIA DATO QUE RECIBE


SEGUNDOS
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

Página 75
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

 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.

Página 76
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

Página 77
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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, Son valores leídos de la caja de texto de los muestreos de la
muestreo3, muestreo4, variables, están dados por segundos
muestreo5, muestreo6,
muestreo7, muestreo8.
Temperatura, sensor2, sensor3, Son arreglos de los vectores de magnitud de las variables
sensor4, sensor5, sensor6, leídas. Su dimensión depende del tiempo máximo de medición y
sensor7, sensor8 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 Son variables que se incrementan con base al tiempo de
modulo2, contador modulo3, muestreo asignado, por ejemplo si el sensor 1 tiene un tiempo
contador modula4, contador de muestreo de 3 segundos, el contador modulo tomara valores
modulo5, contador modulo6, de:
contador modulo7, contador 3, 6, 9, 12…
modulo8.
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.

Página 78
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

Figura 6.7. Algoritmo que se ejecuta al presionar el botón medir.

Página 79
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

 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
S1 S2 S3 S4 S5 S6 S7 S8
PRESIONADO
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.

Página 80
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 81
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

 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

Página 82
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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 Variable con valor para visualizar el límite inferior
pantalla. de pantalla, usa como referencia valor del centro
de pantalla
Límite superior de Variables con valor para visualizar el límite
pantalla 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.

Página 83
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 84
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

 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.

Página 85
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 86
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 87
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

( )

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.

Página 88
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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:

Página 89
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 90
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 91
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 92
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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]);

Página 93
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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);

Página 94
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 95
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 96
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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);

Página 97
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

%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';

Página 98
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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

Página 99
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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á.

Página 100
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica

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.

Página 101

También podría gustarte