Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Adquisicion de Datos Arduino-Matlab Comu PDF
Adquisicion de Datos Arduino-Matlab Comu PDF
Asesor:
Trimestre: 13I
Página 1
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Índice.
1. Marco Tecnológico.
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.
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:
Objetivos Particulares:
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:
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
a) Presión atmosférica.
b) Velocidad y dirección del viento.
c) Temperatura.
d) Humedad del aire.
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.
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.
Página 9
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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.
Página 10
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 11
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
1.3 XBEE.
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.
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
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
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.
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.
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
En la siguiente tabla se muestra el orden de los comandos introducidos a dos XBEE para
configurarlos en una conexión punto a punto.
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
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.
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.
Página 16
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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.
Página 17
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 18
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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
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
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.
Página 21
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Voidsetup()
Voidloop()
Sintaxis:
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
Sintaxis:
Comunicación Serial.
Sintaxis:
Sintaxis:
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:
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:
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’;
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:
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
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.
Página 25
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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
Metodología:
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
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.
Página 29
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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
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:
Página 32
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
Página 33
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
Página 35
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
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 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
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.
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:
Página 40
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
Página 41
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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:
Página 42
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 43
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 44
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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:
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
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.
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
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
Página 50
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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.
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
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:
Metodología.
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
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.
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.
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
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.
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
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
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:
| |
Página 64
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
| |
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.
Metodología.
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
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.
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
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.
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.
Página 71
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
Página 73
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
Página 74
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 75
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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
Página 78
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 79
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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:
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
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.
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:
Página 81
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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.
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.
Página 83
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
Página 85
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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:
Página 86
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Página 87
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
( )
( )
Página 88
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
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:
Página 90
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
handles.output = hObject;
% --- Outputs from this function are returned to the command line.
function varargout = conectar_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
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
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'));
Página 93
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
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
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
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.
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.
Página 100
Reporte de la UEA Estancia Industrial de Ingeniería Electrónica
Referencias.
2. Renom, Madeleine. Principios básicos de las mediciones atmosféricas. Fac, de Ciencias –UdelaR.
2011. Página 10.
5. A. Mielke et al. “Independent Sensor Networks”, IEEE Instrumentation & Measurement, Junio 2005.
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.
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