Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P ROYECTO DE GRADO
GITUD
24 de octubre de 2022
III
Índice general
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Marco teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Energía Eólica: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1. Turbinas: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2. Generadores de vórtice: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.3. Túnel de viento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2. Comportamiento aerodinámico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1. Límite de Betz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2. Dinámica de Fluidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Sistema de monitorizacion de viento . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1. Modulo de captura de datos . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.2. Modulo de adquisición de datos . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.3. Sistemas embebidos para monitorización de variables: . . . . . . . . . . 13
3.3.4. Instrumentos de medición de velocidad del viento . . . . . . . . . . . . 14
3.3.5. Instrumentos de medición de dirección del viento . . . . . . . . . . . . 15
3.3.6. Módulo de procesamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.7. Modulo de transmisión de datos . . . . . . . . . . . . . . . . . . . . . . . 16
4. Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1. Trabajos desarrollados para mejorar la eficiencia de las turbinas . . . . . . . . . . 19
4.1.1. Diseño y fabricación de palas de turbinas eólica de baja capacidad uti-
lizando técnicas CAD/CAM y materiales compuestos . . . . . . . . . . 19
4.1.2. Uso de un mecanismo de manivela para reorientar las palas planas de
la turbina eólica vertical para mejorar su rendimiento . . . . . . . . . . 20
4.1.3. Turbina bio-inspirada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2. Ejemplos de generadores de vórtice para aumentar la eficiencia de las turbinas
eólicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3. Caracterización aerodinámica: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4. Simulaciones mediante CFD en busca de mejoras aerodinámicas para las turbi-
nas eólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4.1. Simulación en CFD del halcón peregrino: . . . . . . . . . . . . . . . . . 26
4.5. Proyectos de sistemas de adquisición de datos . . . . . . . . . . . . . . . . . . . . 27
4.5.1. Diseño e implementación de un sistema DAQ de bajo costo para me-
diciones de propiedades termoeléctricas . . . . . . . . . . . . . . . . . . 27
4.5.2. Diseño conceptual del sistema DAQ inalámbrico para pruebas de ex-
plosión de vehículos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
IV
A. Productos en el mercado 66
Índice de figuras
Índice de cuadros
1. Introducción
En la actualidad cada vez es mayor el uso de las energías renovables debido al aumento de interés
por cuidar el medio ambiente. El afán por tener energía más limpia a bajo costo da lugar a tecnolo-
gías sostenibles capaces de aprovechar los recursos naturales renovables, entre estas destacan la solar
fotovoltaica, solar térmica y eólica.
Y es que tanto en las fuentes de energía eólicas como la solar fotovoltaica se ha notado una re-
ducción en los costos en estos últimos años, esto ha conducido a que cada vez más se implementen
las energías renovables, a tal punto, que actualmente las energías renovables tienen una participación
del 27 % a nivel mundial. Adicionalmente, las fuentes de energía eólicas y solares fotovoltaicos repre-
sentan más del 7 % en la generación de electricidad. [1].
En Colombia se ha visto un aumento en el interés por su uso, considerándose como uno de los
motores de desarrollo al optar por las energías renovables se puede evidenciar en el PIB donde repre-
sentaron el 9,7 % en el periodo del 2006-2009 y un 11,2 % en el periodo de 2010-2013. Ahora, la meta
en el país es aprovechar al máximo las fuentes de energía sostenibles renovables, cubrir más zonas y
optimizar los servicios públicos domiciliaros eléctricos. Lo anterior con el fin de mejorar la calidad de
vida de las personas, especialmente de las que viven en regiones alejadas.
Si bien existe una gran cantidad de energía eólica aprovechable, existen proyectos donde los dise-
ños de turbinas incorporan generadores de vórtice en la superficie de las aspas, buscando así aumen-
tar la producción de energía al incrementar la velocidad de rotación. Para los diseños que propone el
uso de generadores de vórtice se evidencia la necesidad de hacer pruebas mediante túneles de viento,
para caracterizar el comportamiento aerodinámico de las turbinas e identificar las mejoras que se pre-
sentan, propuesto en el proyecto de investigación financiado por el CIDC “Desarrollo de generadores
de vórtice activos bio-inspirados para rotores eólicos en zonas rurales de Cundinamarca mediante
CFD" en la cual se estudia la implementación de los generadores de vórtice para aumentar la efi-
ciencia aerodinámica de las turbinas eólicas, para lo anterior se plantea evaluar el comportamiento
3
Al recurrir a las simulaciones CFD para la caracterización de las turbinas, se requieren pruebas
físicas que validen los datos con los cuales se va a realizar el estudio de los diseños. Las pruebas de
las turbinas, se realizan introduciendo la turbina dentro de un túnel de viento para caracterizar el
comportamiento aerodinámico de la turbina. Para esto, se requiere de un sistema de adquisición de
datos inalámbrico que se pueda instalar dentro del túnel de viento. Con el fin de capturar los datos
y así validar las simulaciones. Por esta razón, surge la necesidad de implementar un sistema de me-
dición con alta precisión, fidelidad, resolución y frecuencia de muestreo, capaz de transferir los datos
adquiridos vía inalámbrica, y acceder a los mismos de manera remota.
2. Objetivos
2.1. Objetivo general
Diseñar e implementar un sistema de adquisición de datos inalámbrico para instalar en un túnel
de viento que aporte a la caracterización aerodinámica de nuevos diseños de turbinas con generadores
de vórtice.
Implementar los módulos para la visualización en tiempo real de los datos adquiridos mediante
el desarrollo de una interfaz gráfica.
3. Marco teórico
3.1. Energía Eólica:
Las fuentes de energía eólica son fuentes que producen electricidad a partir de la energía cinética
generada por el viento [5],[6]. El viento es una masa de aire en movimiento, que es producida por una
diferencia en el calentamiento de la superficie terrestre debido a diferentes intensidades de radiación
solar, por lo cual se puede considerar la energía eólica como un pequeño porcentaje de la energía solar
incidente sobre la tierra [5],[7],[8]. En la figura 1 se puede observar un mapa otorgado por obtenidos
por el instituto de Hidrología, Meteorología y Estudios Ambientales (IDEAM). del potencial eólico en
Colombia con respecto a la velocidad, del mapa se puede apreciar que el potencial eólico disponible
es diferente en cada zona por lo cual es importante caracterizar la turbina para una adecuada imple-
mentación dependiendo de la zona de instalación.
Las ventajas de implementar fuentes de energía eólica son que es una fuente de energía renovable,
gratuita y amigable con el medio ambiente. Por otro lado, se tiene como desventaja que las corrientes
de viento son dispersas y aleatorias [5],[6],[8], lo cual hace de vital importancia aumentar el desem-
peño de las fuentes eólicas.
3.1.1. Turbinas:
Lo que diferencia las turbinas eólicas de otras turbinas es que el fluido que impacta sobre las
palas del elemento giratorio es el aire en movimiento, el viento. La turbina eólica es un dispositivo
mecánico que transforma la energía cinética producida por el viento en electricidad. Para entender
mejor el funcionamiento de la turbina se ilustra de manera básica el proceso de transformación de
energía en la figura 2.
6
Cuando el viento golpea las aspas de la turbina hace girar un rotor cuya función es convertir la
energía cinética del viento en energía mecánica, este rotor a su vez mueve el rotor de un generador
acoplado al eje de la turbina, transformando la energía mecánica en electricidad [5], [6], [7]. En la
figura 3 se pueden observar los componentes de la turbina eólica.
En cuanto al funcionamiento de la turbina existen tres leyes básicas fundamentales que describen
la cantidad de energía que puede ser aprovechada del viento:
La cantidad de electricidad que puede producir una turbina es proporcional a la velocidad del
viento al cuadrado.
La energía que puede ser aprovechada por la turbina es proporcional al cuadrado de la longitud
de sus aspas.
8
F IGURA 6: Componentes de un túnel de viento [13].
La aerodinámica es el estudio de las fuerzas y movimientos que se ejercen sobre un objeto que
atraviesa una corriente de aire [16]. Cuando una corriente de aire fluye alrededor de un objeto se
presenta el choque entre dos fuerzas que son la resistencia contra el objeto en función de la veloci-
dad y la sustentación que es la fuerza ejercida sobre el objeto. La sustentación es una fuerza que se
ejerce en el objeto de abajo hacia arriba y la dirección de esta fuerza es perpendicular a la del viento [5].
Existen diferentes factores que afectan la aerodinámica de la turbina debido a que dichos factores
influyen en el flujo de viento afectando la eficiencia de la turbina. De los factores que afectan el flu-
jo del viento destacan cuatro que son mencionados a continuación. El primero es la ubicación de la
turbina debido a que la dirección y la velocidad del viento dependen de los efectos locales, es decir
la topografía de la zona colinas, acantilados, valles, etc... La segunda es la velocidad del viento de la
cual depende la cantidad de producción de electricidad, el funcionamiento de la turbina (arranque,
parada y orientación del sistema) y la vida útil de la turbina (máxima turbulencia soportada por el
sistema). Cabe destacar que para una turbina eólica pequeña la velocidad mínima requerida para su
funcionamiento es de 3.5 m/s y, para producir la máxima potencia de generación, se requiere una
velocidad de aproximadamente 10 m/s [17]. La velocidad del viento depende de la rugosidad del te-
rreno (figura 7), de la estabilidad de la atmósfera y de la circulación general, cada una de las zonas en
que se puede dividir el planeta tierra tiene un determinado régimen de viento en el caso de Colombia
es el que se puede observar en la figura 1. La tercera es la turbulencia del viento la cual depende de
los rasgos topográficos locales, formaciones geográficas, flora y/o estructuras artificiales. Este tipo de
9
1 2
E= mv (1)
2
Expresando la energía cinética del viento en unidad por volumen es:
1 2
e= ℘v (2)
2
La potencia eólica disponible para la turbina es una sección de área perpendicular a la corriente
de aire:
1 3
Pd = ℘v A (3)
2
Una ilustración acerca de la potencia disponible para una turbina eólica en función del diámetro
del rotor se puede observar en la figura 8.
10
F IGURA 8: Potencia disponible para una turbina eólica en función del diámetro del rotor
[8].
Ecuaciones tomadas de [18],[8].Teniendo un valor de la potencia que puede ser aprovechada por
la turbina se continua con en el estudio del comportamiento aerodinámico en este existen dos fuertes
estudios que son la dinámica de fluidos y la teoría de la cantidad de movimiento (el límite de Betz)
De acuerdo con lo planteado por Betz y a la conservación de masa se obtiene que la mayor eficien-
cia que puede tener una turbina eólica es del 59 % y la potencia generada por una corriente de viento
al atravesar un objeto se deduce de la figura 9 y se define con la ecuación 4.
11
1
Pd = ℘ Av3 Cp (4)
2
De este estudio cabe destacar que no se tienen en cuenta parámetros como los efectos viscosos del
fluido, el número de palas de la turbina, el sentido del rotor, y los fenómenos estacionarios como la
variación de la velocidad del aire con el tiempo.
psV
Re = (5)
µ
Donde V es la velocidad del flujo en la corriente de aire a su paso por el rotor, S la longitud del objeto
que atraviesa la corriente, p es la densidad del aire considerada como constante debido a hipótesis de
flujo incomprensible y µ la viscosidad dinámica del fluido. Además, se debe considerar que si el nú-
mero de Reynolds es pequeño la capa limite es laminar y si es suficientemente grande la capa limite
es turbulenta [16], [6].
m = pSV (6)
La fuerza que ejerce la corriente de aire sobre el rotor es dada por la ecuación 7.
F IGURA 11: Gráfica obtenida de simulaciones mediante CFD, suministrada por el grupo
de investigación GITUD
Anemómetro: este tipo de instrumento se utiliza para medir la velocidad del viento.
13
Veleta: es un dispositivo de giro libre que se ubica sobre un eje vertical, permitiendo medir la
dirección del viento.
Termómetros: para medir la temperatura ambiente, con lo cual se determina la potencia sumi-
nistrada.
De tamaño pequeño para facilitar su instalación dentro del túnel de viento y para no afectar el
comportamiento aerodinámico de la turbina.
De transferencia de datos inalámbrico para evitar el cableado dentro del túnel de viento. Ade-
más de que el usuario puede estar a una distancia segura de la zona de las pruebas.
Con dos modos de operación el primero con una tasa de muestreo rápida y el segundo con una
tasa de muestreo lenta.
- El tamaño es muy
Instrumentó de medición la
Rango de medición de la Realiza medición
componente horizontal de la
velocidad del viento: 0 - 75 m/s. de velocidad y grande para ser
velocidad del viento y la
Rango de medición de la dirección del implementado en
Anemómetro Ultrasónico dirección del viento, adicional [22]
dirección del viento:0-360°. viento. Además de el dispositivo.
a esto este anemómetro puede
Precisión: +/- (2 % + 0.1 m/s) medir la temperatura - Requiere de una
medir la temperatura virtual
Tensión de alimentación: 9 - 36 V ambiente. alta fuente de
acústica
alimentación.
Finalmente, se considera que el mejor instrumento para realizar las mediciones de la velocidad del
viento es el instrumento anemómetro de hilo caliente (wind sensor rev.P). Las razones que destacan
el wind sensor rev.P sobre los otros instrumentos de medición de la velocidad del viento son una alta
precisión, un rango de operación grande, tamaño pequeño haciendo más sencilla su implementación
y transporte. Por último, este sensor posee una salida analógica de 3.3 V facilitando la conexión con
el módulo de procesamiento de datos. Dichas razones son adecuadas para el diseño del dispositivo
de adquisición de datos inalámbrica para la monitorización aerodinámica de una turbina eólica.
15
- El tamaño es muy
el funcionamiento de este sensor es similar grande para ser
- Alta sensibilidad
al acelerómetro pizoresistivo la diferencia Rango de medición: +/- 500 g implementado en
- Alto rango de operación tanto
está en que al ejercer una fuerza sobre el Rango de operación: 0.5-10000 Hz el dispositivo.
en frecuencia como en amplitud
KISTEL 8704 acelerómetro provocando un cambio en la Sensibilidad: 10 mV/g - Requiere de una [26], [30],[31],[32]
- Salida analógica adecuada
estructura del cristal piezoeléctrico Tensión de alimentación: 20-30 V alta fuente de
para la implementación en el
generando una tensión eléctrica proporcional Salida analógica de: 0-5 V alimentación.
dispositivo
a la aceleración -Es un instrumento muy
costoso
Finalmente, se considera que el mejor instrumento para realizar las mediciones de la dirección del
viento es el acelerómetro MMA7361. Las razones que destacan este sensor sobre los otros instrumen-
tos de medición es que tiene un bajo consumo de potencia, es un componente de tamaño pequeño, es
de precio moderado, tiene la capacidad de medir tanto la dirección del viento mediante la inclinación
del objeto como las vibraciones de la turbina en los ejes X,Y y Z. Por último, este sensor posee una
salida analógica de 3.3 V facilitando la conexión con el módulo de procesamiento de datos. Dichas
razones son adecuadas para el diseño del dispositivo de adquisición de datos inalámbrica para la
monitorización aerodinámica de una turbina eólica.
por el módulo de procesamiento de datos da la capacidad de poder transferir y visualizar los datos.
En la tabla 3 se relacionan la comparación de dispositivos para el módulo de procesamiento de datos..
- Es un instrumento fácil de
manejar
Esta placa cuenta con un entorno en el que Tensión de alimentación: 3.3-5 V - Es de bajo costo - La resolución depende
la codifican se hace mediante el uso de Cuenta con ADC - Tiene un tamaño moderado de la velocidad de
PSoC 5lp bloques y lenguaje c++. La PSoC 5LP Resolución de 8-15 bits - Cuenta con una alta resolución muestreo. Se tiene una [34]
ofrece una mayor eficiencia debido a Tasa de muestreo: 536-384000 - Cuenta con un alto periodo de alta resolución a una baja
controlado DMA de alto rendimiento. muestras por segundo. muestreo lo que le da la capacidad tasa de muestreo-
de operar en el modo rápido
requerido para el proyecto.
- Puede manejar procesos paralelos
- Cuenta con una alta resolución - El tamaño es muy
Es una FPGA de mayor rendimiento Tensión de alimentación: 5 V
y tasa de muestreo grande para ser
que los microcontroladores Cuenta con ADC
permitiendo tener mejores resultados implementado en
Basys 3 mencionados anteriormente. La Resolución de 12 bits [35]
en las mediciones el dispositivo.
Basys 3 está basada en una FPGA Tasa de muestreo: 1 millón de
- Cuenta con múltiples pines que - Es un instrumento
Xilinx Artix-7. muestras por segundo.
funcionan como ADC permitiendo muy costoso.
la conexión de varios sensores
- Cuenta con una alta resolución
La placa de desarrollo esp32 es un y tasa de muestreo
SoC (System On Chip) diseñado por Tensión de alimentación: 3.3-5 V permitiendo tener mejores resultados
Espressif System quien la define Cuenta con ADC en las mediciones
como la solución para los Resolución de 12 bits - Cuenta con múltiples pines que
microcontroladores que carecen de Tasa de muestreo: 1000 de funcionan como ADC permitiendo
medios de transición inalámbrica de muestras por segundo. la conexión de varios sensores - No soporta señales de
ESP32 datos esto debido a que este tipo de Cuenta con módulo de - Tiene implementados módulos de entrada superiores a [36],[37],[38]
placas son comúnmente usados como transferencia inalámbrica de transferencia inalámbrica de datos 3.3 V
los medios para tener acceso a la datos Wi-Fi, Bluetooth y Ble. por lo que no es necesario recurrir a
tecnología de IoT, además tienen la 32 pines de entrada y de salida, elementos externos que aumenten el
capacidad para ser usadas para la de los cuales 18 pueden ser tamaño del dispositivo.
monitorización de variables en usados como ADC - Es un instrumento de pequeñas
tiempo real dimensiones.
- Es de bajo costo
Las razones mencionadas en el tabla 3 son por la que selecciona a la placa ESP32 como el módulo
de procesamiento de datos, además de que puede ser usado también como el módulo de transferencia
de datos inalámbrico adecuado para la adquisición de datos dentro del túnel de viento, debido a
que se va a ocupar menos espacio en la implementación del dispositivo, abatiendo un dispositivo
inalámbrico de adquisición de datos para la monitorización del comportamiento aerodinámico de
una turbina eólica.
Comunicación serial: Para las tecnologías como IoT, dispositivos integrados o diferentes com-
ponentes de un dispositivo es necesario un intercambio de información entre estos para su buen
funcionamiento, el intercambio de datos entre estos dispositivos se puede realizar por medio de una
comunicación serial o paralela. La comunicación serial es el método más común de comunicación el
17
cual se basa en transferir un bit a la vez, a través de un medio dado. Para este tipo de comunicación
se requiere solo de una línea de comunicación lo cual facilita la transferencia de datos. Algunos de
los canales de comunicación más populares de la comunicación serial son estándar 232 (RS232), bus
serie universal (USB), Interfaz multimedia de alta definición (HDMI), interfaz serie periférica (SPI),
circuito integrado (I2C), área del controlador Red (CAN), Transmisor-Receptor asíncrono universal
(UART), etc. [39].
Módulo de transferencia inalámbrica de datos: Debido a la ventaja que otorga la ESP32 en cuan-
to a la reducción de espacio, siendo implementada tanto como módulo de procesamiento de datos y
módulo de transferencia inalámbrica de datos. Esta placa de desarrollo se escoge para el diseño del
dispositivo del presente proyecto.
En cuanto a las características técnicas de conecxión con las que cuenta la ESP32, se presentan a
continuación la de conectividad WiFI:
Tiene soporte para 802.11 e: QoS (WiFi multimedia): donde se prioriza el tráfico de red para
aumentar el rendimiento de aplicaciones, como stream de audio y video.
F IGURA 13: Prototipo de aspa compuesta por fibra de vidrio y poliuretano. [40]
F IGURA 14: Diseño de aspa compuesta por fibra de vidrio y poliuretano. [40]
20
F IGURA 15: Resultados de aspa compuesta por fibra de vidrio y poliuretano. [40]
Para la toma de datos fue necesario generar las corrientes de viento mediante un túnel de viento,
las conclusiones obtenidas al realizar la medición de la tensión contra la velocidad del viento fueron
que las técnicas de diseño de aerogeneradores con CAM/CAD garantizan una aerodinámica perfecta
lo cual corresponde a una mejora en la eficiencia de la máquina (figura 15).
4.1.2. Uso de un mecanismo de manivela para reorientar las palas planas de la turbina eólica
vertical para mejorar su rendimiento
Las turbinas eólicas VAWT generan la potencia máxima instantánea cuando la dirección del vien-
to es perpendicular a la superficie de la pala, esto hace que el promedio de potencia entregado por
las turbinas VAWT sea dependiente de la dirección del viento, este proyecto propone un mecanismo
para aprovechar la corriente de viento sin que la dirección de donde provengan afecte el funciona-
miento de la turbina. El diseño propuesto se puede observar en las figuras 16 y 17, como se puede
notar el diseño consta de un mecanismo mecánico de manivela-manivela (cuatro cuchillas planas au-
to orientadas además de una jaula auto orientada) para proporcionarles a las palas la capacidad de
reorientarse para que estén continuamente perpendiculares a la dirección del viento. [41].
Al poner la turbina mejorada frente a un túnel de viento notaron que mejoró la eficiencia de la
turbina VAWT, esto se logró a través de este movimiento auto orientado que asegura una orientación
perpendicular continua entre la superficie de las cuchillas y la dirección del viento. Además, el di-
seño propuesto depende del uso de cuatro cuchillas planas para reducir los costos de fabricación y
mantenimiento. [41].
Los resultados obtenidos en este trabajo se puede apreciar en la figura 20, donde se nota que la
turbina bio-inspirada logra alcanzar rendimientos similares a rotores actuales de Aero-bombas. Por
otro lado, la turbina bio-inspirada presenta mayor ventaja que una turbina convencional al ser más
liviana y resistente al aire, mejorando el comportamiento de arranque del sistema. [42].
4.2. Ejemplos de generadores de vórtice para aumentar la eficiencia de las turbinas eóli-
cas.
Un ejemplo de cómo los generadores de vórtice mejoran la aerodinámica en las turbinas eólicas
se puede apreciar en el trabajo “Control de flujo en el perfil aerodinámicos del generador NREL S809
mediante generadores de vórtice” [43], donde se hace uso del S809 que es un aerogenerador diseñado
para aplicaciones de turbinas eólicas de eje horizontal. En este proyecto se analiza el rendimiento
aerodinámico presentado al implementar generadores de doble vórtice mediante simulaciones de
CFD [43]. En la figura ?? se puede apreciar el esquema de los generadores de doble vórtice que se
implementan en el proyecto. .
F IGURA 21: Geometría del perfil aerodinámico S809 con implementación de VG. [43].
Para las pruebas, las posiciones de cuerda de los VG fueron del 10,20 y 40 %, el generador de do-
ble vórtice fue ubicado del 10 y 20 % en las posiciones de cuerda, y el 10 y 40 % de las posiciones de
cuerda, en la tabla 4 se pueden apreciar las dimensiones de los VG [43].
23
Por medio de las simulaciones de CFD se obtuvieron gráficas para comparar la aerodinámica del
S809 con y sin VG (figura 22). En las gráficas se representa la longitud de cuerda del perfil aerodiná-
mico y AOA representa el ángulo de ataque [43].
F IGURA 22: Gráficas del perfil aerodinámico S809 afectado por los GV sobre los paráme-
tros de: a) coeficiente de sustentación, b) coeficiente de resistencia. [43].
24
La popularidad que han adquirido las simulaciones mediante CFD es debido a que los datos ob-
tenidos son afines a los datos obtenidos experimentalmente por medio del uso de túneles de viento,
como evidencia de lo anterior en el proyecto de “efectos de los generadores de vórtice en un perfil
aerodinámico de borde de salida romo para turbinas eólicas” [44], se llevó a cabo una interesante
comparación entre pruebas con túneles de viento y simulaciones realizadas con CFD. En el proyecto
se realizó una investigación, de cómo los VG afectan el rendimiento aerodinámico de un borde de
25
F IGURA 24: Comparación entre los resultados CFD y los datos experimentales con túnel
de viento. a) Coeficientes de sustentación y coeficientes de arrastre sin VG. b) Coeficien-
tes de sustentación y coeficientes de arrastre de VG. [44].
De la figura 24 se puede observar que los resultados de CFD son cercanos a los datos experimen-
tales obtenidos del túnel de viento, lo anterior se puede apreciar en distintos aspectos de las curvas
como que hay una alta correlación en el ángulo de ataque de perdida, en la figura (b) se evidencia
que en las curvas del coeficiente de sustentación ambos métodos son muy similares y en la curva del
coeficiente de arrastre tiene un margen de error de máximo un 8 %. La diferencia que hay en los re-
sultados de los coeficientes de arrastre, ocurre por las limitaciones del modelo de turbulencia, debido
a que, en las simulaciones numéricas, es complejo un cálculo preciso de los pequeños valores de los
coeficientes de arrastre, en estos hay un máximo de error del 10 % para considerarlos resultados acep-
tables. De esta comparación se concluye que los datos obtenidos por medio de la simulación CFD del
ángulo de ataque de pérdida y los coeficientes de sustentación tienen una alta similitud a los datos
26
obtenidos experimentalmente, y que los coeficientes de arrastre obtenidos por medio de la simulación
son tolerables [44].
4.4. Simulaciones mediante CFD en busca de mejoras aerodinámicas para las turbinas
eólicas
4.4.1. Simulación en CFD del halcón peregrino:
El halcón peregrino es considerado el animal aéreo más rápido del mundo siendo capaz de alcan-
zar velocidades de 400 km/h al descender, es por esta razón que surgen investigaciones sobre este
animal para mejorar las características aerodinámicas de los sistemas aéreos existentes. Lo que hace
que el halcón peregrino sea tan veloz son unas plumas especiales que posee en su dorso, las cuales
varían su posición de acuerdo con la vibración superficial, reduciendo la turbulencia y estabilizando
el vuelo del halcón. [45].
F IGURA 25: Resultados de contornos de velocidad de viento mediante CFD de perfil del
halcón peregrino. [45].
F IGURA 26: Estructura del sistema de adquisición de datos para mediciones de propie-
dades termoeléctricas. [46].
F IGURA 27: Diagrama circuital del sistema de adquisición de datos para mediciones de
propiedades termoeléctricas. [46].
28
F IGURA 28: Resultados del sistema de adquisición de datos para mediciones de propie-
dades termoeléctricas. [46].
En la figura 28 se puede observar los resultados obtenidos en el proyecto, se concluyó que la lec-
tura del valor promedio de 20 veces generaba un dato confiable. Además, con el sistema desarrollado
se eliminó el error de compensación de tensión dando como resultado que los valores obtenidos del
coeficiente de Seebeck son cercanos a los valores teóricos [46].
4.5.2. Diseño conceptual del sistema DAQ inalámbrico para pruebas de explosión de vehículos
En este artículo se requiere de la implementación de un sistema de adquisición de datos inalám-
brica, para obtener información acerca de los daños que se presentan en un vehículo cuando se ve
afectado por una explosión. El sistema al ser inalámbrico garantiza la seguridad de las personas que
se encuentran realizando el experimento y evitar la pérdida de información. Para tomar medidas va-
lida se requiere que el sistema posea una alta frecuencia de muestreo con el fin de registrar la llegada
de múltiples choques y generar datos que se aproximen a la fluctuación producida por cada uno de
los choques [47].
F IGURA 29: Sistema propuesto para obtener las lesiones que puede causar una explosión
cerca de un vehículo a su tripulante. [47].
En la figura 29 se puede observar el sistema propuesto para obtener las lesiones que puede causar
una explosión cerca de un vehículo a su tripulante. El sistema está compuesto por un acelerómetro
para en la parte posterior de la cabeza para las lesiones cerebrales, un acelerómetro en la parte pélvica
29
para detectar una alta aceleración del impacto, un sensor de celda para detectar la fuerza causada
por la explosión y finalmente un sensor de lápiz para medir la sobrepresión que se produce luego del
impacto [47].
Para dar cumplimiento al objetivo uno se realizó la consulta mostrada en el marco teórico en
donde se da evidencia de que los parámetros a medir son la dirección y la velocidad del viento. No
obstante, al tener en cuenta lo descrito en los estudios de dinámica de fluidos, para realizar la carac-
terización del comportamiento aerodinámico de una turbina eólica, la velocidad del viento se debe
medir en dos puntos claves que son frente y detrás de las aspas de la turbina. Dos puntos que pre-
sentan complejidad para medir con un solo dispositivo, ya que una conexión física entre estos puede
presentar una obstrucción para las aspas de la turbina y al usar dos dispositivos se aumenta tanto
la complejidad de la transferencia de los datos a un solo dispositivo receptor como los tiempos de
retardo de la transferencia de información.
Por otro lado, la variación de la velocidad y dirección del viento son dos parámetros que en con-
diciones reales tienden a tener pocas variaciones significativas y que pueden tomar intervalos muy
largos para que estas variaciones ocurran. Debido a estos dos motivos se plantea que el dispositivo se
debe usar para pruebas en túnel de viento ya que este permite modificar la variable de la velocidad
del viento a un valor conocido y constante, presentando la ventaja que el dispositivo debe capturar
únicamente la velocidad del viento después de que pase por las aspas de la turbina. Adicional la di-
rección del viento no varía sino por la ubicación, en este punto se prefiere muestrear la vibración de la
turbina cuando la corriente de aire choca con esta. Planteados estos puntos se identifica que el dispo-
sitivo y el software a desarrollar para la adecuada monitorización del comportamiento aerodinámico
de la turbina eólica deben contar con las siguientes características:
Transferencia inalámbrica mediante el protocolo IEEE 802.11 (para red Wi-Fi), proporcionan-
do los datos al usuario en cualquier parte que se encuentre siempre y cuando cuente con una
conexión a internet.
Transferencia inalámbrica local mediante el protocolo IEEE 802.15 (para red Bluetooth), para
proporcionar los datos al usuario si este se encuentre a una distancia máxima de 10 metros del
dispositivo y no requiere de una conexión a internet.
Almacenar los datos adquiridos por el dispositivo durante las pruebas en archivos de texto para
ser utilizados en otro momento o software, principalmente en software de dinámica de fluidos
computacionales.
Un modo en que el dispositivo tome la mayor cantidad de muestras por segundo, para brindar
la información necesaria para quienes deseen realizar simulaciones mediante CFD, con los datos
obtenidos por el dispositivo.
Un modo en que el dispositivo tome muestras cada cierto periodo de tiempo con el fin de mo-
nitorizar el comportamiento aerodinámico de la turbina por prolongados periodos de tiempo
como días o semanas.
El acelerómetro MMA7361 tiene dos funciones, medir las vibraciones en la turbina generadas
por el movimiento de las aspas bajo la influencia de una corriente de aire. Por otro lado, tiene
la función de medir el ángulo de inclinación de la turbina para así determinar la dirección de
la velocidad del viento, variable de importancia para monitorizar el comportamiento aerodiná-
mico de la turbina eólica. Realizar estas mediciones son posibles debido a que el sensor mide la
aceleración del movimiento de este en unidades de fuerza gravitacional (g) en los ejes X, Y y Z,
permitiendo tomar datos de cuanto se desplaza en cada uno de los ejes.
El wind sensor Rev.P es un anemómetro de hilo caliente, es decir que calienta cierta área por
donde cruza la corriente de aire y mide la variación térmica en dicha área para así determinar
la velocidad del viento. Este sensor tiene la capacidad de proporcionar la velocidad del viento
en unidades de metros por segundo (m/s).
Para la implementación de estos sensores es necesario conocer sus especificaciones técnicas, para
así determinar que se requiere para tener una adecuada lectura de las variables por parte de estos
sensores.
En la figura 33 se pueden observar los puertos de entrada y salida de este sensor donde [49],[50]:
Sleep(SL): De acuerdo con a la tensión que reciba este pin cambia el estado del sensor. Si recibe
0 V entre en estado de bajo consumo desactivando las salidas analógicas de los ejes x,y,z.
5v: En este pin se recomienda conectar la fuente de alimentación debido a que cuenta con un
regulador de tensión a 3.3 V para proteger al sensor de algún sobre pico.
3.3v: Al igual que el pin 5V puede ser usado para polarizar el sensor, pero no cuenta con la
protección del regulador.
Select(GS): Este pin permite seleccionar la sensibilidad del sensor, en nivel alto es de 800 mV/g
y en nivel bajo es de 206 mV/g.
EL wind sensor rev.P tiene 5 pines los cuales son [51], [52]:
OUT: Es la salida analógica del sensor. El wind sensor rev.P tiene integrado un potenciómetro
para calibrar la magnitud de la señal precedente de este pin.
SHDN: Indica la tensión de velocidad cero usada para la calibración de la medida de la veloci-
dad del viento.
TMP: Genera una señal analógica para señalar la temperatura ambiente, también es usada para
la calibración de la medida de la velocidad del viento.
Teniendo en cuenta las características técnicas de los sensores se establece, que los sensores no
requieren de elementos externos para realizar la medición de las variables, pero si se requiere de
un conversor análogo-digital debido a que ambos sensores proporcionan las medidas en tensión y se
requiere realizar la conversión de tensión a sus respectivas unidades, pero este se realiza en el módulo
de procesamiento de datos.
Como las señales de los sensores son analógicas se usa el ADC para convertir esas señales analó-
gicas a señales digitales y así hacer el tratamiento de los datos dentro de la ESP32. Primero se debe
ajustar los puertos de la ESP32 de acuerdo con las características técnicas suministradas por el fabri-
cante y que se pueden observar en la figura 36.
Debido a que la salida de tensión de los sensores seleccionados para la implementación del pro-
yecto, no superan el rango establecido por el fabricante de la ESP32 se puede hacer la lectura directa
de la tensión. La lectura de la tensión por medio de la ESP32 se realiza mediante el uso de los puertos
que cuentan con ADC, pero para un uso adecuado de los ADC se debe tener en cuenta el rango de
tensión que puede soportar la placa de desarrollo y la resolución de esta. En el caso de la ESP32 esta
cuenta con una tensión máxima de 3,3 V y una resolución de 12 bits. Teniendo en cuenta que la ESP32
36
tiene una resolución de 12 bits y un valor máximo de tensión de 3,3 V, la ESP32 cuenta con la capaci-
dad de medir 4095 niveles de tensión y cuenta con una sensibilidad de 8 uV para realizar la lectura
de tensión.
Adicional a la lectura de tensión, es necesario de un tratamiento de los datos dentro del módulo
de procesamiento de datos. Se requiere de convertir esa magnitud de tensión capturada a las uni-
dades respectivas de cada sensor. Para los datos que envía el acelerómetro MMA72361 se realiza la
conversión de la tensión leída por el módulo de procesamiento de datos a una magnitud de fuerza
gravitacional (g), para los datos del Wind sensor Rev.p se transforma la tensión leída en magnitud
de velocidad específicamente en unidades de m/s. para estas conversiones se requieren de la im-
plementación de ecuaciones que se pueden obtener de dos formas, la primera es usar la ecuación
suministrada por el fabricante y la segunda es la caracterización de los sensores, pero como este pro-
yecto se basa en el apoyo a otros proyectos no se realiza la caracterización de los sensores, esto lo
realiza la persona que va a realizar las pruebas, debido a que no se cuenta con un túnel de viento don-
de realizar la pruebas. Por tal motivo las ecuaciones que se introducen en el código para la conversión
de las variables son tomadas de las hojas de datos que proporcionan los fabricantes.
Para la conversión de los datos que proporciona el wind sensor Rev.P se requiere implementar la
ecuación 9 suministrada por el fabricante, con esta ecuación se convierte la tensión leída en velocidad
expresada en unidades de m/s.
Tensin− leda∗3,3
(( )−1,3692)
212 −1
3,038517∗10,20 ,115157
Velocidad(m/s) = 10 ∗ ( )3,009364 (9)
0,087288
Finalmente, como los sensores no superan los 3.3 V de tensión de salida se pueden conectar direc-
tamente a la ESP32, aspecto que beneficia al proyecto, debido a que no se requieren de componentes
externos que aumenten el tamaño del dispositivo como divisores de tensión, amplificadores, suma-
dores, seguidores de tensión u otros para conectar el módulo de adquisición de datos con el módulo
de procesamiento de datos.
datos mediante el módulo Wi-Fi se requiere de un servidor WEB que sirva como puente para la
transferencia de información entre el dispositivo y el computador.
Dichos datos son los que se van a ingresar a las simulaciones mediante CFD para realizar la ca-
racterización del comportamiento aerodinámico de la turbina. El servomotor vario su posición de
acuerdo con una señal enviada por el módulo de procesamiento de datos y la cantidad que debe
moverse es especificada por el usuario mediante el software. El software envía el valor mediante el
protocolo de comunicación que haya establecido el usuario al dispositivo y este envía la señal para
modificar la posición del servomotor a ese valor, en la siguiente sección se describe como se realiza él
envió de la señal desde el dispositivo para modificar la posición del servomotor.
38
5.5.1. Bibliotecas:
En esta sección se realiza la declaración de las bibliotecas necesarias para los diversos elementos
a utilizar en el código, las bibliotecas son:
”Wi − Fi.h”: Proporciona las herramientas requeridas para inicializar, configurar y usar el mó-
dulo Wi-Fi de la ESP32.
”Wi − FiClient espClient”: Es declarada para usar las herramientas de la biblioteca ”Wi − Fi.h”.
”TI ME_TO_SLEEP 600”: Se declara para establecer cuanto segundo va a permanecer la ESP32
en modo suspendido, en este caso 600 segundo que equivalen a 10 minutos.
”l_x”: Puerto donde se realiza la lectura del eje X proporcionado por el acelerómetro MMA7361.
”l_y”: Puerto donde se realiza la lectura del eje Y proporcionado por el acelerómetro MMA7361.
”l_z”: Puerto donde se realiza la lectura del eje Z proporcionado por el acelerómetro MMA7361.
”l_v”: Puerto donde se realiza la lectura de la medición de la velocidad del viento proporcionada
por el anemómetro wind sensor rev.P.
”al”: Puerto que suministra la alimentación del acelerómetro MMA7361 para no tener que recu-
rrir a
”ssid”: Establece el nombre de la red Wi-Fi a la que se puede conectar el dispositivo para tener
acceso al internet.
”password”: Es la clave que requiere el dispositivo para conectarse a la red Wi-Fi disponible.
”mqtt_user”: Establece el usuario para que el dispositivo acceda a la cuenta adecuada del servi-
dor web.
”mqtt_pass”: Es la clave que requiere el dispositivo para conectarse al servidor Web disponible.
”root_topic_subscribe”: Establece el canal por el cual el dispositivo va a recibir los datos del ser-
vidor web. Estos datos se almacenan en el servidor web para que el software pueda adquirirlos.
"”root_topic_publish”: Establece el canal por el cual el dispositivo va a enviar los datos al ser-
vidor web. Estos datos son enviados por el software para mandar instrucciones al dispositivo
como que inicie su funcionamiento, que lo detenga, que modo de muestreo selecciono el usuario
y finalmente que mueva la posición del servomotor.
5.5.6. Funciones:
En esta sección del código se realiza el llamado a las distintas funciones creadas para proporcionar
una programación orientada objetos, lo que facilita corregir o actualizar el código. Estas funciones son
utilizadas para configurar los módulos, procesar datos, escoger entre el modo de lectura lento y modo
de lectura rápido entre otras cosas, a continuación, se da una breve descripción de cada una de las
funciones:
”dormir”: Esta función es utilizada para poner en estado de suspensión al dispositivo durante
10 minutos.
”en_leds”: Esta función se encarga de encender los leds del dispositivo para indicarle al usuario
que hay conexión con el software, en qué modo de muestreo se encuentra el dispositivo o si está
en estado de suspensión. La función se compone únicamente por instrucciones del tipo ”i f ” y
solo utiliza dos variables globales que son ”estado” para indicar si hay conexión con el software
y ”n_led” para indicar si el dispositivo se encuentra en modo de muestreo lento o rápido.
”callback”: Esta función es usada para que el dispositivo sepa si existe un dispositivo en este
caso un computador queriendo establecer una conexión inalámbrica, si la conexión es estable o
si se perdió la conexión.
”clear_matriz”: Usada para limpiar una matriz donde se almacena la cadena de datos que va a
ser enviada mediante el módulo Wi-Fi o Bluetooth.
”enviar_ble”: Esta función es usada para enviar los datos mediante el módulo Bluetooth.
”enviar_Wi − Fi”: En esta ficción se determina si hay una conexión estable con el servidor web
y en caso de que sea así envía los datos mediante el módulo Wi-Fi, en caso contrario hace que el
dispositivo reintente la conexión con el servidor web.
”reconnect”: Esta función es usada cuando no hay una conexión estable entre el dispositivo y el
servidor web, en esta se entra en un bucle donde se envían peticiones por parte del dispositivo
al servidor web para establecer una conexión. El bucle se repite una y otra vez hasta que se
establezca la adecuada conexión entre el dispositivo y el servidor web.
”setup_Wi − Fi”: Esta función es donde se establece la conexión entre el dispositivo y una red
Wi-Fi disponible usando las variables ”ssid” y ”password” al igual que en la funcion ”reconnect”
41
se usa de un bucle para que el dispositivo intente repetidas veces establecer una conexión hasta
lograrlo.
”lectura”: En esta función se realiza la lectura de los valores otorgados por el módulo de ad-
quisición de datos mediante los ADC del dispositivo, también realiza el procesamiento de los
datos para obtener la lectura de las medidas en sus respectivas unidades de acuerdo con las
ecuaciones y finalmente crea la cadena de datos que se va a enviar.
Para la conversión de las medidas del acelerómetro MMA7361 se usa la instrucción ”map"” la
cual se basa en crear una tabla de valores en base a diferentes variables que son: el valor máximo
de entrada, el valor mínimo de entrada, el valor máximo de salida y el valor mínimo de salida.
Para este proyecto se estableció que 3.3 v es el máximo de entrada y corresponde a 500 g que es
el máximo de salida, también se estableció que 0 v corresponde al mínimo de entrada y corres-
ponde a -500 g que es el mínimo de salida. Por otro lado, para la conversión de las unidades de
wind sensor Rev.P se implementa la ecuación. Ambas conversiones se realizan en el código.
Y como última parte de este proceso de captura de los datos se realiza la concatenación de los
datos leídos en una cadena de información para enviarlos en un solo mensaje, esto se realiza
debido a que el tiempo que tarda el software desarrollado en recibir, procesar y graficar los
datos es mayor al tiempo que el tiempo que tarda el dispositivo en leer, procesar y enviar los
datos, con la cadena se almacenan en el dispositivo los datos durante el tiempo que requiere el
software en el procesamiento de los datos evitando así la perdida de información.
5.5.7. Configuración
En esta parte del código de ”set_up”, se declara la configuración de la placa de desarrollo indican-
do la velocidad de transición uart, los módulos que se van a utilizar en este caso el módulo Bluetooth
y Wi-Fi, también si los pines van a ser usados como pines de entrada o salida. Finalmente, el nombre
con el que se va a encontrar el dispositivo cuando se intente establecer una conexión Bluetooth con el
computador.
5.5.8. Loop
Es esta sección del código es donde se realizar el ciclo de repetición infinita dentro del dispositi-
vo, es acá donde se halla el llamado de las funciones de acuerdo con ciertos parámetros que definen
como debe ser el comportamiento del dispositivo. Es decir, si el dispositivo debe estar en modo de
muestreo lento o rápido. También se toma la decisión de acuerdo con estos parámetros si la transfe-
rencia de información debe ser mediante una conexión local (uso del módulo Bluetooth) o mediante
la transferencia de datos a un servidor web (uso del módulo Wi-Fi).
WEB y poder hacer la captura de la información que llega por estos medios. El software desarrollado
en MATLAB tiene la función de capturar, procesar, almacenar y graficar los datos enviados por el
dispositivo inalámbrico de adquisición de datos. Adicional se presenta en este una interfaz gráfica
amigable con el usuario donde puede configurar el dispositivo y visualizar los datos en tiempo real
del comportamiento aerodinámico de la turbina. En la sección de los anexos se encuentra es código
desarrollado para la implementación del software C.
Para el desarrollo del software se inició con la parte de la conexión inalámbrica entre el compu-
tador y el dispositivo, la cual se considera la base fundamental del software, ya que sin esta no tendría
sentido desarrollar el resto de las funciones del software. La configuración básica para establecer la
transferencia de información entre MATLAB mediante el computador y el dispositivo inalámbrico de
adquisición de datos es tomada por la guía ofrecida por MATLAB donde nos ofrece las siguientes
instrucciones [54]:
readline: Lee una cadena de datos enviada por el dispositivo inalámbrico de adquisición de
datos.
Por otro lado, para el diseño de la aplicación MATLAB cuenta con una herramienta llamada ”APP
Designer” que es un entorno de desarrollo amigable para el desarrollo de aplicaciones. Está aplica-
ción es necesaria para el desarrollo de una interfaz gráfica amigable con el usuario que la use. Se
busca que el dispositivo brinde la mayor comodidad y facilidad, para obtener los datos requeridos
para usar en la caracterización aerodinámica de la turbina eólica, en software de dinámica de fluidos
computacional. La aplicación desarrollada para este proyecto se presenta en la figura 37.
43
La aplicación está compuesta por 4 pestañas, la primera pestaña (Figura 37) es para realizar la
configuración de la conexión entre el computador y el dispositivo inalámbrico de adquisición de
datos, en esta pestaña se realiza el siguiente procedimiento:
1. Dar clic sobre el botón ”Buscar dispositivos” para verificar que se encuentre activo el puerto
establecido para la comunicación por Bluetooth. Luego de dar clic en el botón se puede apreciar
una lista de los puertos activos en el computador en la tabla de la derecha de la aplicación
mostrada en la figura 37).
2. Se debe seleccionar uno de los modos de funcionamiento. Rápido para que el dispositivo ob-
tenga una muestra cada 0.5 ms o lento para que el dispositivo entre en estado de suspensión
durante 10 minutos, tome una muestra y vuelva a entrar en estado de suspensión, esto con el
fin de priorizar la duración de la batería y poder monitorear el comportamiento del objeto de
estudio por días.
3. Una vez identificado el puerto asignado por el computador para el dispositivo se procede a
realizar la conexión con el dispositivo para esto se debe seleccionar el puerto y pulsar el botón
”Conectar con dispositivo Bluetooth”.
5. Por último, se cuenta con dos leds que indican cuando el dispositivo está conectado cambiando
el color del led nombrado ”Conectado” a verde y el led nombrado ”Desconectado” a blanco, en
caso de que se desconecte el dispositivo el led nombrado ”Conectado” pasa a ser blanco y el led
nombrado ”Desconectado” a rojo.
44
En la segunda y tercera pestaña (figura 38 y figura 39) se ubican las gráficas que están compuesta
por los datos que se obtienen del acelerómetro MMA7361 que son eje y, eje x y eje z en g, adicional en
la tercera pestaña se gráfica el ángulo entre los ejes medidos por el acelerómetro MMA7361. La otra
gráfica nos muestra la velocidad del viento obtenida por el Wind Sensor Rev.P en m/s. Finalmente,
se presenta una grafica donde se muestra la temperatura medida por el Wind Sensor Rev.P enPor
otro lado, se encuentra una barra la cual sirve para indicar la posición del servomotor a la cual se
desea que ubique y un botón ”Enviar posición” para enviarle la posición al dispositivo y que este se
encargue de modificar la posición del servomotor a la posición indicada. Por último, se encuentra un
botón de ”Detener” con el cual se pausa tanto la aplicación como el funcionamiento del dispositivo.
La última pestaña (Figura 40) hay información acerca de cómo establecer la comunicación entre
el computador y el dispositivo inalámbrico de adquisición de datos. También algunas instrucciones
básicas de como operar la aplicación.
5.7. Implementación
En la figura 41 se presenta el primer montaje del dispositivo, en este se pude observar en el recua-
dro azul el módulo de adquisición y en el recuadro rojo se observa tanto el módulo de procesamiento
de datos como el módulo de transferencia inalámbrica de datos, debido a que en la ESP32 se imple-
mentan las funciones de ambos módulos. En la figura también se puede observar la conexión directa
entre el módulo de adquisición de datos y el módulo de procesamiento de datos, debido a que la ten-
sión de salida de los sensores que conforman al módulo de adquisición de datos (Wind sensor rev.p
y acelerómetro MMA7361) está en el rango de 0-3,3 V, rango de tensión soportado por el módulo de
46
procesamiento de datos (ESP32), dando la ventaja de poder realizar la conexión directa entre estos sin
tener que recurrir a elementos externos. Por otro lado, como fuente de alimentación del dispositivo
se usó uno de los puertos del computador mediante la conexión por un cable USB, esto debido a que
se requería esta conexión para realizar la programación del dispositivo y al ser una primera versión
se realizan bastantes cambios en el código. Por otro lado, se usó una fuente externa de 12 V, debido a
que está tensión se encuentra entre el rango aceptado para la polarización del el wind sensor Rev.P.
F IGURA 41: Circuito de conexión entre ESP32, el acelerómetro MMA7361 y el wind Sen-
sor rev.P.
Como una segunda versión se optó por eliminar la dependencia del dispositivo al computador,
dejando como única fuente de alimentación la fuente externa de 12 voltios, pero para poder alimentar
los diferentes elementos que componen al dispositivo se implementaron reguladores de tensión, para
así poder suministrar la cantidad adecuada de tensión a cada uno de los elementos.
Recuadro Rojo: Es la placa de desarrollo (ESP32) en la que están montados los módulos de
procesamiento de datos y transferencia inalámbrica de datos.
Recuadro Verde: Están las baterías de litio recargables, estas baterías son colocadas en serie para
poder suplir con la tensión de alimentación de cada uno de los componentes del circuito.
Recuadro Amarillo: Está compuesto por Leds para indicar el comportamiento del dispositivo
durante las pruebas, adiciona se cuenta con 2 reguladores de tensión de referencia L7805, uno
de estos reguladores se ajusta a 3.3 baterías de litio recargable para suministrar la energía la
ESP32 y el otro se ajusta a 5v para alimentar el servomotor.
Recuadro Naranja: Está compuesto por el servomotor implementado para poder modificar el
comportamiento aerodinámico de una turbina, al modificar la posición de generadores de vór-
tice con el movimiento del servomotor.
Como una tercera versión (Figura 42) se cambió la fuente externa por dos baterías de litio, a pesar
de que una sola batería tiene la capacidad de suplir la tensión requerida por el módulo de procesa-
miento de datos se requiere de una segunda para realizar la adecuada alimentación del wind sensor
Rev.P. Por otro lado, como el dispositivo cuenta con reguladores de tensión se usaron las dos baterías
para alimentar también al módulo de procesamiento de datos, esto con el fin de aprovechar por com-
pleto las baterías y aumentar el tiempo que dura activo el dispositivo. Adicionalmente al dispositivo
se le agregaron leds para dar a conocer el comportamiento del dispositivo de la siguiente forma: led
verde para indicar que el dispositivo está en modo de lectura rápido, led amarillo para indicar que
el dispositivo está en modo de lectura lento y un led rojo para indicar que el dispositivo detuvo la
48
adquisición de datos porque así lo indico el usuario desde el software o porque se perdió la conexión
con el computador o el servidor web.
Luego de tener en funcionamiento el dispositivo se procede a realizar el diseño del PCB para redu-
cir el tamaño de este, adicional mejorar la estética del dispositivo. El esquemático donde se muestra
a que va conectado cada uno de los pines de los elementos que componen al dispositivo se presenta
en la figura 43 y en la figura 44 se presenta el esquema de la conexión circuital del dispositivo, donde
los colores de los cables representan los siguiente:
Negro: Tierra.
El esquema diseñado para el PCB se muestra en la figura 45. Adicional se realizó el diseño del
esquema del PC en 3D para poder visualizar de mejor manera el diseño final de dispositivo, esto
se puede apreciar en las figuras 46a y 46b. El PCB es necesario para poder acomodar de forma más
eficiente todos los elementos que componen al dispositivo inalámbrico de adquisición de datos.
También se realizó el diseño un ovni de color verde para el empaquetado del dispositivo inalám-
brico, este ovni se realizó mediante el uso de una impresora 3D y el CAD diseñado para poder realizar
la impresión mediante la impresora 3D se presenta en la figura 47. Se presentan dos figuras las cuales
constan del esquema técnico del ovni (Figura 51a) y del modelo esquemático en 3D del ovni (Figura
51b). Este ovni se desarrolla con la idea de no dejar expuesto el dispositivo, para evitar daños del
dispositivo en el transporte. Adicionalmente brinda una mejor estética al proyecto,
( A ) Esque- ( B ) Disposi-
ma técnico tivo dentro
del ovni
Con el diseño del ovni se procede a mostrar el dispositivo completo, es decir el dispositivo dentro
del ovni (Figura 48). En este se nota que sobre sale el wind sensor Rev.P para que nada presente
un obstáculo para el área del hilo caliente y poder capturar los datos de la velocidad del viento. El
dispositivo presentado en la figura es la versión final del este y la versión que se va a utilizar para las
pruebas de funcionamiento.
Adicional se usó un túnel de viento a escala para poder cumplir con las pruebas de funcionamien-
to del dispositivo, el túnel fue proporcionado por el grupo de investigación GITUD. En la figura 49 se
presenta el esquemático del túnel de viento que se va a utilizar para las pruebas de funcionamiento
del dispositivo.
F IGURA 49: Modelo esquema 3D túnel de viento, suministrado por grupo de investiga-
ción GITUD.
52
6. Resultados
6.1. Pruebas y resultados del dispositivo inalámbrico de adquisición de datos para la
monitorización aerodinámica de una turbina eólica
Para las primeras pruebas del funcionamiento del dispositivo inalámbrico de adquisición de datos
se utiliza el montaje de la figura 50, donde se aprecia que el dispositivo no tiene ninguna conexión
física con el computador. También se puede observar el dispositivo en funcionamiento junto a un
computador donde se tiene instalado el software para la visualización de los datos. En el software se
pueden visualizar la velocidad del viento sobre una gráfica de 2D donde se gráfica la velocidad en
unidades de m/s contra tiempo y las medidas de las vibraciones generadas en el dispositivo a causa
de una perturbación externa, como se capturan los datos de los ejes X, Y y Z, se presentan tres gráficas
en donde se muestran los datos capturados en cada eje contra el tiempo.
Para dar cumplimiento al objetivo cuatro se realiza el montaje presentado en la figura 51, en don-
de se puede apreciar el dispositivo dentro del túnel de viento y estos a su vez se encuentra al lado del
computador donde se tiene instalado del software para visualizar los datos capturados por el dispo-
sitivo. El túnel de viento es necesario para generar una corriente de viento, para así poder evaluar el
funcionamiento de cada uno de los módulos que componen al dispositivo inalámbrico de adquisición
de datos.
53
Como se puede apreciar en la figura 52, se ubicó una pluma frente al dispositivo, se realizó en
este proyecto para que la corriente de viento tuviera un obstáculo que variase la velocidad de esta,
así poder observar dichas variaciones en el software.
F IGURA 52: Montaje para realizar las pruebas de funcionamiento del dispositivo con
pluma
Los datos adquiridos por el dispositivo inalámbrico de adquisición de datos son presentados de
dos formas distintas dependiendo del modo de muestreo seleccionado. En las figuras 53 y 54, se
puede apreciar las gráficas obtenidas en modo rápido en donde el eje del tiempo inicia en 0 y varía
de acuerdo con el tiempo que esté en funcionamiento el dispositivo.
54
F IGURA 53: Prueba del funcionamiento del dispositivo y la aplicación en el modo rápido.
F IGURA 54: Prueba segunda pestaña del funcionamiento del dispositivo y la aplicación
en el modo rápido.
Por otro lado, al graficar en modo lento (Figuras 55 y 56) se puede apreciar que el eje del tiempo
se encuentra la fecha y hora en la que se toma la muestra.
55
F IGURA 55: Prueba del funcionamiento del dispositivo y la aplicación en el modo lento.
F IGURA 56: Prueba segunda pestaña del funcionamiento del dispositivo y la aplicación
en el modo lento.
56
Gracias al apoyo del grupo de investigación GITUD, de los datos recolectados con el dispositivo
y almacenados por el software se pudo conseguir la simulación del comportamiento aerodinámico
de la pluma, esto se puede observar en la figura 57. La imagen se presenta como evidencia del apoyo
que dan los datos que son obtenidos en conjunto por el dispositivo y el software desarrollados en el
presente proyecto.
F IGURA 57: Ejemplo de simulación mediante CFD de una pluma, suministrada por gru-
po de investigación GITUD.
De las figuras 50, 53 y 55 se puede observar el adecuado funcionamiento de los módulos, ya que
se pude apreciar la visualización de los datos en el software comprobando el buen funcionamiento
del módulo de transferencia inalámbrica de la información, también al haber variación en la señal
se puede verificar el funcionamiento del módulo de adquisición de datos, además de que las señales
no superan los límites indicados por los fabricantes de los sensores. Por último, al estar en funciona-
miento los módulos mencionados se comprueba que está funcionando adecuadamente el módulo de
procesamiento de datos, debido a que es el que se encarga de comunicar a los módulos.
Luego se realizan pruebas variando la velocidad de transmisión verificando que no haya pérdida
de datos y que la monitorización de los datos en la aplicación se visualice en tiempo real. Los datos
recolectados de esta prueba se pueden observar en la tabla 6.
Al variar la velocidad de transmisión mediante el tiempo que se asigna para establecer el tiempo
que tarda en enviar datos (Tabla 6), se puede observar que al asignar un tiempo menor a 1 ms la gra-
ficación se vuelve inestable, esto se debe a que MATLAB al tardar tanto adquiriendo los datos entra
en un bucle donde solo realiza la lectura de los datos, pero no realiza el procesamiento ni gráficación.
También al ser tan rápida la transferencia de información se pierden datos debido a que MATLAB no
puede realizar la lectura de todos los mensajes enviados por el dispositivo.
También se cambia la cantidad de datos que se envían por mensaje para probar la sincroniza-
ción de la transferencia de datos entre los dispositivos para asegurar la adecuada conexión evitando
las aglomeraciones de información en el módulo de procesamiento de datos provocando el desbor-
damiento de la pila de memoria y que la placa de desarrollo detenga todas sus funciones hasta ser
reiniciada. Los datos de esta prueba se pueden apreciar en la tabla 7.
De la tabla 7 se puede observar que al aumentar la cantidad de datos se puede mantener estable la
transferencia de información entre el dispositivo y el computador con un periodo de envío menor a 1
ms, aunque la velocidad de transmisión no tiene gran variación debido al tiempo que tarda MATLAB
en realizar la lectura de los datos. Por otro lado, se puede apreciar que, aunque se mantenga una co-
nexión estable entre el dispositivo y el computador las gráficas no se realizan debido al tiempo que
tarda MATLAB en realizar la lectura de los datos.
58
Al enviar una cantidad de datos grande por cada mensaje se aumenta el tiempo que tarda el
dispositivo inalámbrico de adquisición de datos en enviar la información provocando la pérdida de
información cuando MATLAB hace la captura de la información, esto se puede apreciar mejor en la
gráfica de la velocidad del viento debido a que es la variable que tiene una mayor variación se aprecia
cómo pasa de ser una gráfica continua a ser más cuadriculada y con ciertos picos de caída como se
observar en la figura 58
Las anteriores pruebas fueron realizadas únicamente con el módulo Bluetooth debido a que es el
único que presenta limitación en la distancia. Para el módulo Wi-Fi se realizó una prueba donde se
mide el tiempo de retardo de graficación, esto con el fin de demostrar que se tiene una monitorización
en tiempo real a pesar de que los datos no sean enviados directamente desde el dispositivo al software,
si no que se hace la transferencia por medio de un servidor WEB. La prueba consiste en enviar la
información por medio de una conexión USB y por la conexión inalámbrica mediante el módulo Wi-
Fi, se toma el tiempo medido con un cronómetro que mide desde horas hasta milisegundos. Debido a
que el cambio de la gráfica se realiza en ms, se toma un vídeo de la gráfica para así en un reproductor
de vídeo reducir la velocidad de reproducción, con lo cual se puede tomar los puntos de referencia.
Tomando el tiempo de retardo como el tiempo que tarda el software en mostrar los mismos datos que
se visualizan mediante la conexión directa con cable USB mediante el IDE de Arduino. En la figura 59
se puede apreciar la visualización de los datos en software desarrollado con MATLAB y en el IDE de
Arduino, aparte se puede apreciar el cronómetro que se tiene como referencia para tomar el tiempo
de retardo.
59
Al realizar la prueba se pudo medir el tiempo que tarda el software en graficar los datos obtenidos
por el dispositivo de adquisición de datos es de 2 segundos, tiempo que para el dispositivo puedes
ser bastante, pero para el ojo humano puede pasar desapercibido. La ventaja de usar como medio de
comunicación un servidor WEB es que en este quedan almacenados los datos enviados por el dispo-
sitivo evitando como en el caso de la comunicación por Bluetooth el dispositivo tenga que almacenar
estos datos. Adicional como los datos quedan almacenados en el servidor WEB el software los puede
tomar de este en cualquier momento evitando la necesidad de una sincronización para la transferen-
cia de los datos entre el dispositivo y el software. Como una gran ventaja de la conexión mediante
Wi-Fi es que no presenta la misma perdida de los datos que con el módulo Bluetooth, esto se debe a
que la información queda almacenada en servidor WEB, por lo que el periodo de envió de los datos
del dispositivo no afecta al periodo de captura de datos por parte del software.
7. Conclusiones
El teorema de Limite de Betz es el más utilizado para realizar la caracterización aerodinámica
de una turbina eólica, donde el parámetro principal a medir por parte del dispositivo es la ve-
locidad del viento, siempre y cuando las pruebas se realicen dentro de un túnel de viento, ya
que se pueden despreciar distintos parámetros como lo son la densidad del aire, considerada
constante, y la ubicación geográfica de la turbina. De acuerdo al teorema del limite de Betz solo
se requiere medir la velocidad del viento. Sin embargo, se tuvo en cuenta la inclinación y vibra-
ción de la turbina eólica, debido a que enriquecen los datos proporcionados a las simulaciones
mediante CFD.
La selección del dispositivo ESP32, dado su reducido tamaño, la disposición del módulo Blue-
tooth y Wi-Fi para la transferencia inalámbrica de datos. y las características técnicas permitie-
ron obtener mejores mediciones, debido a que cuenta con una resolución de 12 bits y una tasa
60
de muestreo de 1000 muestras por segundo, con lo que se obtiene la cantidad de datos adecuada
para ser usados en la simulaciones mediante CFD.
Para la medición de los parámetros se utilizaron los sensores: acelerómetro (MMA7361) el cual
mide la inclinación y la vibración de la turbina. Y el anemómetro de hilo caliente (wind Sensor
Rev.P) para medir la velocidad del viento. Estos sensores se seleccionaron principalmente a su
tamaño, ya que al tener un dispositivo de reducido tamaño facilita la instalación de este. Cabe
destacar el anemómetro seleccionado, debido a la importancia de medir la velocidad del viento.
El anemómetro de hilo caliente (wind Sensor Rev.P) destaca para el presente proyecto debido
a que cuenta con una resolución de 0.5 m/s, valor adecuado, teniendo en cuenta que para que
una turbina eólica pequeña entre en funcionamiento requiere de una velocidad del viento de 3.5
m/s. Sumado a esto, este sensor cuenta con un rango de medición de 0 a 67 m/s lo que amplia
las áreas de pruebas donde se puede llegar a utilizar el dispositivo.
Para el desarrollo de la interfaz gráfica se utilizo MATLAB, debido a la facilidad que presenta
para obtener los datos capturados por los módulos Bluetooth y Wi-Fi del computador. También
cuenta con una herramienta de nombre .App Desing"la cual permite el desarrollo de una apli-
cación donde se facilita el desarrollo visual, permitiendo que la mayor parte del tiempo que se
dedique programando sea utilizado para el desarrollo de la lógica. Finalmente la mayor ventaja
de esta herramienta es obtener un archivo ejecutable que permite la instalación de la aplicación
en cualquier dispositivo, aun si este no cuenta con MATLAB instalado.
El prototipo tuvo un funcionamiento adecuado para una distancia máxima de 10 metros y con
una tasa de muestro de 200 muestras por segundo, debido a que con esta tasa de muestreo
se presenta una adecuada sincronización entre el dispositivo y el software de visualización.
Registrando así una cantidad elevada de datos para proporcionar un adecuado apoyo a la in-
vestigaciones que realicen simulaciones mediante CFD para la caracterización aerodinámica de
una turbina eólica.
El dispositivo puede proporcionar monitorización de datos en tiempo real, lo que permitió vi-
sualizar el comportamiento aerodinámico del aerogenerador dentro del túnel de viento durante
las pruebas, facilitando así las mediciones necesarias para el estudio. Esto proporciona infor-
mación de calidad para apoyar futuros proyectos enfocados en el diseño de aerogeneradores
aumentando su eficiencia para aprovechar la energía cinética producida por el viento.
8. Bibliografía
[1] ENERLAC, «Mejora, aumento y facilitación del acceso a la educación y capacitación en energía
renovable en América Latina.,» Revista de energía de Latinoamérica y el Caribe., 2020. dirección:
http://enerlac.olade.org/index.php/ENERLAC/article/view/150.
[2] G. Kieffer y Á. L. Peña, «RENEWABLE ENERGY MARKET ANALYSIS LATIN AMERICA.,»
IRENA, 2016. dirección: https://www.irena.org//media/Files/IRENA/Agency/Publication/
2016/IRENA_Market_Analysis_Latin_America_2016.pdf.
[3] M. de Minas y Energıa., «La Transicin Energ´tica de Colombia, Memorias al Congreso.,» [En lí-
nea], dirección: https://www.minenergia.gov.co/documents/10192/24226685/MemoriasCongresoMME-
2020.pdf, (Accedido: 10.04.2022).
[4] CRUDOTRANSPARENTE., «POTENCIAL DE ENERGIAS RENOVABLES EN LA GUAJIRA:
IMPORTANCIA Y DESAFIOS DE LA TRANSICION ENERGETICA.,» [En línea], dirección:
https://crudotransparente.com/2021/04/14/potencial-de-energias-renovables-en-la-
guajira-importancia-y-desafios-de-la-transicion-energetica/, (Accedido: 10.04.2022).
[5] J. C. Avila Herrera, «Análisis y optimizacion aerodinámica del prototipo de turbina eólica tipo
savonius implementado en la facultad tecnológica.,» Proyecto Fin de Carrera/Grado, Dpto.
Ing. Mec, Universidad Distrital Francisco José de Caldas, Bogotá, Colombia, 2018. dirección:
http://hdl.handle.net/11349/7853.
[6] R. S. Calle Bernardo, «Estudio aerodinámico de un aerogenerador de eje vertical mediante el uso
de técnicas CFD.,» Proyecto Fin de Carrera/Grado, Dpto. Ing. Mec., Universidad Politécnica de
Madrid. 2018.
[7] J. A. González, R. C. Pérez, A. C. Santos y M. A. Gil, «CENTRALES DE ENERGÍAS RENO-
VABLES: GENERACIÓN ELÉCTRICA CON ENERGÍAS RENOVABLES.,» PEARSON EDUCA-
CIÓN, S.A, Madrid, España: UNED, Prentice Hall, 2009.
[8] J. M. Amada, «CURSO DE ENERGÍA EÓLICA.,» Departamento de Ingeniería Eléctrica de la Uni-
versidad de Zaragoza, 2009.
[9] IDEAM., «Atlas Interactivo - Vientos - IDEAM.,» 2020, [En línea]. dirección: http :/ /atlas .
ideam.gov.co/visorAtlasVientos.html, (Accedido: 13.04.2021).
[10] R. Lynette, «Investigation of V o Generators for Au of Wind Turbine Performance entation er.,»
1996.
[11] D. Garcia Gonzalez, F. Camacho y R. Martınez, «Caracterización De Un Túnel De Viento De
Bajas Velocidades,» Revista Colombiana de Fısica, vol. 43, n.o 3, pág. 669, 2011. dirección: http:
//fisica.udea.edu.co/ojs/ojs/index.php/rcf/article/view/430325.html.
[12] G. Milich Franco, G. M. Alvarez y Alvarez, L. Chuaire Mauricio, G. Veroli Cesar y R. Wittwer
Adrián, «Diseño y construcción del modelo a escala de un aerogenerador de eje horizontal
para estudios experimentales.,» Ponencia Mendoza, Presentado en la UNNE: Jornadas de Jóvenes
Investigadores AUGM, Mendoza, Argentina. 2018. dirección: https://bdigital.uncu.edu.
ar/fichas.php?idobjeto=12725.
62
[13] U. Mejıa, C. M. Sandra Milena, L. Johanna y col., «Automatización de un túnel de viento para
estudios de comportamiento de vuelo de insectos,» Proyecto Fin de Carrera/Grado, Dpto. Ing.
Elect, Universidad Tecnologica de Pereira, Pereira, Colombia, 2016. dirección: https://hdl.
handle.net/11059/6351.
[14] M. Martınez y M. Ángel, «Caracterización del flujo del túnel de viento de la Universidad de
Quintana Roo.,» Proyecto Fin de Carrera/Grado, Dpto. Ing. Sist. Energía, Universidad de Quin-
tana Roo, Chetumal, Mexico, 2019. dirección: http :/ / risisbi. uqroo . mx/ handle /20 . 500.
12249/2256.
[15] R. Farrarons, «Túneles de viento,» f1aldia., 2010, [En línea]. dirección: https://www.f1aldia.
com/10650/tuneles-de-viento-i/, (Accedido: 13.04.2021).
[16] R. G. Aguilar Quispe, «Mejora de la eficiencia aerodinamica en turbinas eolicas mediante dispo-
sitivos hipersustentadores.,» Tesis de Maestría,Dpto. Ing. Producción y Servicios, Universidad
Nacional de San Agustín de Arequipa, Arequipa, Peru, 2017. dirección: http://repositorio.
unsa.edu.pe/handle/UNSA/4561.
[17] L. BRANZ, «Wind turbine systems,» 2022, [En línea]. dirección: https://www.level.org.nz/
energy/renewable-electricity-generation/wind-turbine-systems/, (Accedido: 25.05.2022).
[18] F. Eraso Checa y E. Escobar Rosero, «Metodología para la determinación de características del
viento y evaluación del potencial de energía eólica en Túquerres-Nariño,» Revista Científica,
vol. 31, n.o 1, págs. 19-31, ene. de 2018. DOI: 10 . 14483 / 23448350 . 12304. dirección: https :
//revistas.udistrital.edu.co/index.php/revcie/article/view/12304.
[19] OMEGA, «Introduccíon a los anemómetros,» [En línea], dirección: https://mx.omega.com/
prodinfo/anemometros.html, (Accedido: 13.04.2021).
[20] S. en Metrología, «Anemómetro de copa portátil, 0.9 a 35.0 m/s, Lutron-ABH4224,» [En línea],
dirección: https://suministrosenmetrologia.com/productos/medidores- de- velocidad-
de- aire/anemometro- de- copa- portatil- 0- 9- a- 35- 0- m- s- lutron- abh4224/, (Accedido:
13.04.2021).
[21] infoAgro.com, «Anemómetros,» [En línea], dirección: https://www.infoagro.com/instrumentos_
medida/doc_anemometro_velocidad_viento.asp?k=80, (Accedido: 13.04.2021).
[22] VAISALA, «Sensor ultrasónico de viento WMT700 WINDCAP,» [En línea], dirección: https:
/ / www . vaisala . com / sites / default / files / documents / WEA - ERG - G - WMT700 - Datasheet -
B210917ES-G-LOW-v2.pdf, (Accedido: 13.04.2021).
[23] M. DEVICE, «Wind Sensor rev P,» [En línea], dirección: https://moderndevice.com/product/
wind-sensor-rev-p/, (Accedido: 15.04.2021).
[24] P. Iberica, «Sensor de dirección del viento PCE-FST-200-202,» [En línea], dirección: https://
www.pce- iberica.es/medidor- detalles- tecnicos/sistemas/sensor- direccion- viento-
pce-fst-200-202.htm, (Accedido: 18.04.2021).
[25] R. Apaza, J. Apaza, L. Dávila, I. Olivares y J. Pariapaza, «El Acelerómetro una Puerta a otros
Avances Tecnológicos y su Aplicación en la Ingenierıa Civil.,» Dpto. Ing. Civil, Universidad Na-
cional de San Agustin, Arequipa, Perú, 2019. dirección: https://www.academia.edu/43597818/
Resumen_Recientemente_el_Monitoreo_de_Fen%7B% 5C%%7DC3%7B%5C%%7DB3menos?auto=
citations&from=cover_page.
[26] T. E. Components, «¿CÓMO FUNCIONA Y QUÉ HACE EL ACELERÓMETRO?,» 2020, [En
línea]. dirección: https://www.tme.com/co/es/news/library-articles/page/22568/Como-
funciona-y-que-hace-el-acelerometro/, (Accedido: 18.04.2021).
63
[42] D. Castañeda Vergara, «Diseño y construcción de un sistema eólico para bombeo basado en un
rotor bioinspirado.,» 2010.
[43] H. Wang, B. Zhang, Q. Qiu y X. Xu, «Flow control on the NREL S809 wind turbine airfoil using
vortex generators,» Energy, vol. 118, págs. 1210-1221, 2017, ISSN: 0360-5442. DOI: https://doi.
org/10.1016/j.energy.2016.11.003. dirección: https://www.sciencedirect.com/science/
article/pii/S0360544216315924.
[44] L. Gao, H. Zhang, Y. Liu y S. Han, «Effects of vortex generators on a blunt trailing-edge airfoil
for wind turbines,» Renewable Energy, vol. 76, págs. 303-311, 2015, ISSN: 0960-1481. DOI: https:
//doi.org/10.1016/j.renene.2014.11.043. dirección: https://www.sciencedirect.com/
science/article/pii/S0960148114007587.
[45] B. Ponitz, A. Schmitz, D. Fischer, H. Bleckmann y C. Brücker, «Diving-Flight Aerodynamics of a
Peregrine Falcon (Falco peregrinus),» PLOS ONE, vol. 9, n.o 2, págs. 1-13, feb. de 2014. DOI: 10.
1371/journal.pone.0086506. dirección: https://doi.org/10.1371/journal.pone.0086506.
[46] T. Sumphaoa, C. Thanachayanontb y T. Seetawana., «Diseño e implementación de un sistema
DAQ de bajo costo para mediciones de propiedades termoeléctricas.,» Procedia Eng., vol. 32,
pp. 614-620, 2012. dirección: https://doi.org/10.1016/j.proeng.2012.01.1317.
[47] A. Z. Zuraida, S. S. Fairuza y M. Risbya., «Diseño conceptual del sistema DAQ inalámbrico
para pruebas de explosión de vehículos .,» Procedia Comput. Sci., vol. 94, pp. 502-509, 2016.
dirección: https://doi.org/10.1016/j.procs.2016.08.078.
[48] P. T. Le, H.-L. Tsai y T. H. Lam., «Un sistema de evaluación y monitoreo de visualización inalám-
brico para módulos fotovoltaicos comerciales únicamente en el entorno MATLAB / Simulink.,»
Sol. Energy, vol. 140, pp. 1-11, Dec, 2016. dirección: https://doi.org/10.1016/j.solener.
2016.10.043.
[49] J. Haro, «MMA7361 Sensor Acelerometro,» Hetpro, 2015, [En línea]. dirección: https://hetpro-
store.com/TUTORIALES/mma7361-sensor-acelerometro/, (Accedido: 20.04.2021).
[50] F. Semiconductor, «±1.5g, ±6g Three Axis Low-g Micromachined Accelerometer.,» MMA7361LC
datasheet, Oct. 2011, dirección: https://www.nxp.com/docs/en/data-sheet/MMA7361LC.pdf,
(Accedido: 20.04.2021).
[51] T. HAREENDRAN, «Medición del Flujo de Aire,» Electro Schematics, 2015, [En línea]. dirección:
https://www.electroschematics.com/measuring-air-flow/, (Accedido: 20.04.2021).
[52] R. Moya y D. Prohasky, «Mini airflow tunnel project,» 2014, [En línea]. dirección: https : / /
miniwindtunnel.wordpress.com/tutorial/, (Accedido: 20.04.2021).
[53] Microcontrollerslab.com., «ESP32 Pinout – How to use GPIO pins?,» [En línea], dirección: https:
//microcontrollerslab.com/esp32-pinout-use-gpio-pins/, (Accedido: 23.04.2021).
[54] MathWorks., «Bluetooth Communication,» [En línea], dirección: https://la.mathworks.com/
help/matlab/bluetooth-communication.html?lang=en, (Accedido: 23.04.2021).
[55] PCE., «PCE ADL 11.,» [En línea], dirección: https://www.pce- instruments.com/colombia/
instrumento - medida / medidor / anemometro - pce - instruments - anem _ metro - pce - adl - 11 -
det_5868722.htm?_list=kat&_listpos=5, (Accedido: 24.04.2021).
[56] ——, «PCE FWS 20N.,» [En línea], dirección: https://www.pce-instruments.com/colombia/
instrumento- medida/medidor/anemometro- pce- instruments- anem_metro- pce- fws- 20n-
det_5876231.htm?_list=kat&_listpos=17, (Accedido: 24.04.2021).
65
[57] ——, «Anemómetro de rueda alada PCE-007.,» [En línea], dirección: https : / / www . pce -
instruments.com/colombia/instrumento-medida/medidor/anemometro-pce-instruments-
anem_metro-de-rueda-alada-pce-007-det_5869354.htm?_list=kat&_listpos=21, (Accedi-
do: 24.04.2021).
[58] ——, «PCE-FWS 20N-1.,» [En línea], dirección: https://www.pce-instruments.com/colombia/
instrumento - medida / medidor / anemometro - pce - instruments - anem _ metro - con - sensor -
externo-pce-fws-20n-1-det_5877412.htm?_list=kat&_listpos=18, (Accedido: 24.04.2021).
[59] Amazon., «BT-100APP.,» [En línea], dirección: https://www.amazon.es/dp/B07V6DJDZ7?tag=
millors0d-21&linkCode=osi&th=1, (Accedido: 24.04.2021).
[60] ——, «AP-007WM.,» [En línea], dirección: https : / / www . amazon . es / dp / B07PHWKYY1 ? tag =
herramientas077-21&linkCode=ogi&th=1&psc=1, (Accedido: 24.04.2021).
[61] BRESSER., «Estación meteorológica 5en1 BRESSER.,» [En línea], dirección: https : / / www .
bresser.de/es/Tiempo/Centro- meteorologico/Estacion- meteorologica- 5en1- BRESSER-
negro.html, (Accedido: 24.04.2021).
[62] testo., «Anemómetro de hilo caliente 405i.,» [En línea], dirección: https://www.testo.com/es-
CO/testo-405-i/p/0560-1405, (Accedido: 24.04.2021).
66
Anexo A
Productos en el mercado
Anexo B
//**************************************
//*********** BIBLIOTECAS **************
//**************************************
#include <Servo.h>
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 600 /* Time ESP32 will go to sleep (in seconds) */
#include "BluetoothSerial.h"
#include <Wi-Fi.h>
#include <PubSubClient.h>
//**************************************
//*********** VARIABLES DE INICIO ******
//**************************************
Servo servo1;
Wi-FiClient espClient;
PubSubClient client(espClient);
BluetoothSerial SerialBT;
//**************************************
//*********** ENTRADAS Y SALIDAS *******
//**************************************
static const int servoPin = 21;
int lecturax=35;
int lecturay=34;
int lecturaz=39;
int lecturav=32;
int lecturat=33;
int al=5;
int dis_in=13;
int dis_ac=14;
int dis_sleep=26;
//**************************************
//*********** VARIABLES GLOBALES *******
68
//**************************************
static const int servoPin = 21;
int x=0,y=0,z=0,v=0,t=0;
int t_espera=2;
int cont=0;
int pwm_in=0,pwm=0;
int muestras=0;
String enable_Modo="";
int Numero_datos=1;
int val_contador,val_x,val_y,val_z,val_t,val_v;
char datos[500]="";
char dhtDataString[64];
int funcion=0;
int modo=0;
int modulo=0;
int ins_dor=0;
int LED=0;
int estado=0;
int muestras=0;
//**************************************
//****** CONFIGURACION BLUETOOTH *******
//**************************************
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run ‘make menuconfig‘ to and enable it
#endif
//**************************************
//*********** MQTT CONFIG **************
//**************************************
const char *mqtt_server = "ioticos.org";
const int mqtt_port = 1883;
const char *mqtt_user = "UYHF2HJvQHJStVu";
const char *mqtt_pass = "CQsPBpOxlaILKlI";
const char *root_topic_subscribe = "XgHFWJmFfdnZ5QU/input";
const char *root_topic_publish = "XgHFWJmFfdnZ5QU/output";
//**************************************
//*********** Wi-FiCONFIG ***************
//**************************************
const char* ssid = "CASTRO CASALLAS";
const char* password = "19971996";
//**************************************
//*********** FUNCIONES ****************
//**************************************
69
void dormir();
void clear_matriz();
void seleccion(String dato_seleccion);
void enviar_ble();
void enviar_Wi-Fi();
void callback(char* topic, byte* payload, unsigned int length);
void reconnect();
void setup_Wi-Fi();
void lectura();
void dormir();
void en_leds();
if(event == ESP_SPP_CLOSE_EVT ){
Serial.println("Client disconnected");
}
}
//**************************************
//*********** CONFIGURACION ************
//**************************************
void setup() {
Serial.begin(115200);
setup_Wi-Fi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
SerialBT.begin("DIAD");
Serial.println("Dispositivo listo");
SerialBT.register_callback(callback_b);
pinMode(al,OUTPUT);
pinMode(dis_in,OUTPUT);
pinMode(dis_ac,OUTPUT);
pinMode(dis_sleep,OUTPUT);
servo1.attach(servoPin);
pinMode(l_x,INPUT);
pinMode(l_y,INPUT);
pinMode(l_z,INPUT);
pinMode(l_v,INPUT);
pinMode(l_t,INPUT);
digitalWrite(al,HIGH);
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
}
70
//**************************************
//******** BUCLE INFINITO **************
//**************************************
void loop() {
if (SerialBT.available()) {
seleccion(String(SerialBT.read()).toInt());
}
if(funcion==2){
if(modo==3){
lectura();
delay(t_espera);
muestras++;
if(muestras>Numero_datos){
muestras=0;
if(modulo==5){enviar_ble();}
if(modulo==6){enviar_Wi-Fi();}
clear_matriz();
}
}
if(modo==4){
lectura();
delay(1000);
if(modulo==5){enviar_ble();}
if(modulo==6){enviar_Wi-Fi();}
clear_matriz();
if(ins_dor==7){dormir();}
}
}
}
//*****************************
//*** CONEXION Wi-Fi ***
//*****************************
void setup_Wi-Fi(){
delay(10);
// Nos conectamos a nuestra red Wi-Fi
Serial.println();
Serial.print("Conectando a ssid: ");
Serial.println(ssid);
Wi-Fi.begin(ssid, password);
}
71
Serial.println("");
Serial.println("Conectado a red Wi-Fi!");
Serial.println("Dirección IP: ");
Serial.println(Wi-Fi.localIP());
}
//*****************************
//*** CONEXION MQTT ***
//*****************************
void reconnect() {
while (!client.connected()) {
Serial.print("Intentando conexión Mqtt...");
// Creamos un cliente ID
String clientId = "IOTICOS_H_W_";
clientId += String(random(0xffff), HEX);
// Intentamos conectar
if (client.connect(clientId.c_str(),mqtt_user,mqtt_pass)) {
Serial.println("Conectado!");
// Nos suscribimos
if(client.subscribe(root_topic_subscribe)){
Serial.println("Suscripcion ok");
}else{
Serial.println("fallo Suscripciión");
}
} else {
Serial.print("falló :( con error -> ");
Serial.print(client.state());
Serial.println(" Intentamos de nuevo en 5 segundos");
delay(5000);
}
}
}
//*****************************
//*** CALLBACK ***
//*****************************
//*****************************
//*** MODO DE OPERACION *******
//*****************************
void seleccion(int dato_seleccion){
if(dato_seleccion==200){funcion=1;}
if(dato_seleccion==201){funcion=2;}
if(dato_seleccion==202){modo=3;
Serial.println("Modo rapido");}
if(dato_seleccion==203){modo=4;
Serial.println("Modo lento");}
if(dato_seleccion==204){modulo=5;
Numero_datos=100;
t_espera=5;
}
if(dato_seleccion==205){modulo=6;
Numero_datos=20;
t_espera=15;
}
if(dato_seleccion==206){ins_dor=7;}
Serial.print("funcion:");
Serial.print(funcion);
Serial.print(", modo:");
Serial.print(modo);
Serial.print(", modulo:");
Serial.println(modulo);
pwm_in=String(dato_seleccion).toInt();
if(pwm_in>=0 && pwm_in<=180){
pwm=pwm_in;
Serial.print("Posicion del motor: ");
Serial.println(pwm);
servo1.write(pwm);
}
}
//*****************************
//*** LECTURA DE SENSORES *****
//*****************************
void lectura(){
73
x=analogRead(l_x);
y=analogRead(l_y);
z=analogRead(l_z);
v=analogRead(l_v);
t=analogRead(l_t);
//Serial.print(val_x);
//Serial.println(",");
sprintf(dhtDataString,"%d,%d,%d,%d,%d;",val_x,val_y,val_z,val_v,val_t);
strcat(datos,dhtDataString);
}
//*****************************
//*** ENVIAR DATOS POR BLE ****
//*****************************
void enviar_ble(){
SerialBT.println(datos);
}
//*****************************
//** LIMPIAR MATRIZ A ENVIAR **
//*****************************
void clear_matriz(){
for( int i = 0; i < sizeof(datos); ++i ){
datos[i] = (char)0;
}
}
//*****************************
//*** ENVIAR DATOS POR Wi-Fi ***
74
//*****************************
void enviar_Wi-Fi(){
if (!client.connected()) {
reconnect();
}
if (client.connected()){
client.publish(root_topic_publish,datos);
}
client.loop();
}
//*****************************
//*** PONER A DORMIR ESP32 ****
//*****************************
void dormir(){
Serial.println("Going to sleep now");
digitalWrite(dis_in,HIGH);
digitalWrite(dis_ac,HIGH);
digitalWrite(dis_sleep,HIGH);
delay(1000);
Serial.flush();
digitalWrite(dis_in,LOW);
digitalWrite(dis_ac,LOW);
digitalWrite(dis_sleep,LOW);
Serial.flush();
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
//*****************************
//*** ENCENDER LEDS ***********
//*****************************
void en_leds(){
int n_led=LED;
if(estado==1){
if(n_led==1){
digitalWrite(dis_in,HIGH);
}
if(n_led==2){
digitalWrite(dis_ac,HIGH);
}
if(n_led==3){
digitalWrite(dis_sleep,HIGH);
}
}
if(estado==0){
if(n_led==1){
75
digitalWrite(dis_in,LOW);
}
if(n_led==2){
digitalWrite(dis_ac,LOW);
}
if(n_led==3){
digitalWrite(dis_sleep,LOW);
}
}
estado=1-estado;
//Serial.print(estado);
}
Anexo C
LentoButton matlab.ui.control.StateButton
ESTADODELDISPOSITIVOLabel matlab.ui.control.Label
GraficasTab matlab.ui.container.Tab
POSICIONDELSERVOMOTORLabel matlab.ui.control.Label
PWM matlab.ui.control.Slider
Image2 matlab.ui.control.Image
Image2_2 matlab.ui.control.Image
ENVIARPOSICION matlab.ui.control.Button
DETENER matlab.ui.control.Button
LampLabel matlab.ui.control.Label
Lamp matlab.ui.control.Lamp
EJE_Z matlab.ui.control.UIAxes
EJE_Y matlab.ui.control.UIAxes
EJE_X matlab.ui.control.UIAxes
VEL matlab.ui.control.UIAxes
Angulo matlab.ui.container.Tab
Image2_3 matlab.ui.control.Image
Image2_4 matlab.ui.control.Image
EJE_Z_2 matlab.ui.control.UIAxes
EJE_Y_2 matlab.ui.control.UIAxes
EJE_X_2 matlab.ui.control.UIAxes
VEL_2 matlab.ui.control.UIAxes
InformacinTab matlab.ui.container.Tab
Label matlab.ui.control.Label
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% CONEXION %%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
77
function Puerto(app)
app.esp32=nan;
app.TextArea.Value="Estableciendo conexion";
pause(0.2);
if(app.modo_muestreo=="rapido")
app.esp32=serialport(app.PuertoDropDown.Value,230400,"Timeout",5);
app.TextArea.Value="Modo rapido";
write(app.esp32,210,"uint8");
end
if(app.modo_muestreo=="lento")
app.esp32=serialport(app.PuertoDropDown.Value,230400,"Timeout",300);
app.TextArea.Value="Modo lento";
write(app.esp32,220,"uint8");
end
app.TextArea.Value="Conectado";
app.enable_dispositivo=1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% TABLA DE DISPOSITIVOS %%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function tabla(app)
clear TABLA;
clear app.TABLE.Data;
app.tabla_dispositivos=serialportlist;
app.TABLE.Data=app.tabla_dispositivos’;
app.PuertoDropDown.Items=app.tabla_dispositivos’;
if(size(app.PuertoDropDown.Items)==0)
app.ConectarseadispositivoBluetoohtButton.Enable="off";
end
if(size(app.PuertoDropDown.Items)>0)
app.ConectarseadispositivoBluetoohtButton.Enable="on";
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% MODO RAPIDO %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function modo_rapido(app)
o=0;
t_gra=0;
pos_gra=1;
xant=0;
xfant=0;
yant=0;
yfant=0;
zant=0;
78
zfant=0;
vant=0;
vfant=0;
tant=0;
tfant=0;
app.enable_dispositivo=0;
app.enable_graficas=0;
Xmax=5;
enable_lec=0;
datos=zeros(10);
cla(app.EJE_X);
cla(app.EJE_Y);
cla(app.EJE_Z);
cla(app.VEL);
cla(app.EJE_X_2);
cla(app.EJE_Y_2);
cla(app.EJE_Z_2);
cla(app.VEL_2);
fig1=plot(app.EJE_X, nan, nan);
fig2=plot(app.EJE_Y, nan, nan);
fig3=plot(app.EJE_Z, nan, nan);
fig4=plot(app.VEL, nan, nan);
fig5=plot(app.EJE_X_2, nan, nan);
fig6=plot(app.EJE_Y_2, nan, nan);
fig7=plot(app.EJE_Z_2, nan, nan);
fig8=plot(app.VEL_2, nan, nan);
set(fig1,’Ydata’,nan,’Xdata’,nan);
set(fig2,’Ydata’,nan,’Xdata’,nan);
set(fig3,’Ydata’,nan,’Xdata’,nan);
set(fig4,’Ydata’,nan,’Xdata’,nan);
set(fig5,’Ydata’,nan,’Xdata’,nan);
set(fig6,’Ydata’,nan,’Xdata’,nan);
set(fig7,’Ydata’,nan,’Xdata’,nan);
set(fig8,’Ydata’,nan,’Xdata’,nan);
app.EJE_X.XLim = [0 5];
app.EJE_Y.XLim = [0 5];
app.VEL.XLim = [0 5];
app.EJE_Z.XLim = [0 5];
Puerto(app);
write(app.esp32,190,"uint8");
tIni=tic;
while(app.enable_graficas==0)
%TT=tic;
79
if(app.enable_graficas==0)
datos_in=readline(app.esp32);
end
if(size(datos_in)==0)
enable_lec=0;
app.TextArea.Value="Error, no hay tansferencia de datos, revisar el puerto s
end
if(size(datos_in)>0)
enable_lec=1;
app.TextArea.Value="Transferencia de datos";
datos=datos_in;
end
if(enable_lec==1)
app.Lamp.Color=[0 1 0];
app.ConectadoLamp.Color=[0.00 1.00 0.00];
app.DesconectadoLamp.Color=[1.00 1.00 1.00];
C=strsplit(datos,’;’);
for i=1:1:(length(C)-1)
d=str2double(strsplit(C(i),’,’));
pos_data=o+i;
cuenta(pos_data)=d(1);
d(1)
eje_X(pos_data)=0.006263*xant+0.9937*xfant;
xant=d(1);
xfant=eje_X(pos_data);
eje_Y(pos_data)=0.006263*yant+0.9937*yfant;
yant=d(2);
yfant=eje_Y(pos_data);
eje_Z(pos_data)=0.006263*zant+0.9937*zfant;
zant=d(3);
zfant=eje_Z(pos_data);
Velocidad(pos_data)=0.006263*vant+0.9937*vfant;
vant=d(4)*0.044704;
vfant=Velocidad(pos_data);
temp(pos_data)=0.006263*tant+0.9937*tfant;
tant=d(5);
tfant=temp(pos_data);
an_xz=atan(eje_X(pos_data)/eje_Z(pos_data));
angle_XZ(pos_data)=an_xz*(57.2958);
an_yz=atan(eje_Y(pos_data)/eje_Z(pos_data));
angle_YZ(pos_data)=an_yz*(57.2958);
end
o=pos_data;
80
tEnd=toc(tIni);
tiempo=linspace(t_gra,tEnd,length(eje_X(pos_gra:o)));
% plot(app.EJE_X,tiempo,eje_X(pos_gra:o));
% plot(app.EJE_Y,tiempo,eje_Y(pos_gra:o));
% plot(app.EJE_Z,tiempo,eje_Z(pos_gra:o));
% plot(app.VEL,tiempo,Velocidad(pos_gra:o));
set(fig1,’Ydata’,eje_X(pos_gra:o),’Xdata’,tiempo);
set(fig2,’Ydata’,eje_Y(pos_gra:o),’Xdata’,tiempo);
set(fig3,’Ydata’,eje_Z(pos_gra:o),’Xdata’,tiempo);
set(fig4,’Ydata’,Velocidad(pos_gra:o),’Xdata’,tiempo);
set(fig5,’Ydata’,angle_XZ(pos_gra:o),’Xdata’,tiempo);
set(fig6,’Ydata’,angle_YZ(pos_gra:o),’Xdata’,tiempo);
set(fig7,’Ydata’,temp(pos_gra:o),’Xdata’,tiempo);
set(fig8,’Ydata’,Velocidad(pos_gra:o),’Xdata’,tiempo);
% pause(0.001);
if(tEnd>=Xmax)
pos_gra=o;
t_gra=tEnd;
Xmin=tEnd;
Xmax=tEnd+5;
app.EJE_X.XLim = [Xmin Xmax];
app.EJE_Y.XLim = [Xmin Xmax];
app.VEL.XLim = [Xmin Xmax];
app.EJE_Z.XLim = [Xmin Xmax];
app.EJE_X_2.XLim = [Xmin Xmax];
app.EJE_Y_2.XLim = [Xmin Xmax];
app.VEL_2.XLim = [Xmin Xmax];
app.EJE_Z_2.XLim = [Xmin Xmax];
end
%toc(TT);
end
if(enable_lec==0)
pause(0.1);
end
end
tiempo=linspace(0,tEnd,length(eje_X));
set(fig1,’Ydata’,nan,’Xdata’,nan);
set(fig2,’Ydata’,nan,’Xdata’,nan);
set(fig3,’Ydata’,nan,’Xdata’,nan);
set(fig4,’Ydata’,nan,’Xdata’,nan);
set(fig5,’Ydata’,nan,’Xdata’,nan);
set(fig6,’Ydata’,nan,’Xdata’,nan);
set(fig7,’Ydata’,nan,’Xdata’,nan);
81
set(fig8,’Ydata’,nan,’Xdata’,nan);
pause(0.1);
plot(app.EJE_X,tiempo,eje_X);
plot(app.EJE_Y,tiempo,eje_Y);
plot(app.EJE_Z,tiempo,eje_Z);
plot(app.VEL,tiempo,Velocidad);
plot(app.EJE_X_2,tiempo,angle_XZ);
plot(app.EJE_Y_2,tiempo,angle_YZ);
plot(app.EJE_Z_2,tiempo,temp);
plot(app.VEL_2,tiempo,Velocidad);
filename=’Datos ’+string(datetime(’now’,’TimeZone’,’local’,’Format’,’d-MMM-y HH;mm;s
data(:,1)=eje_X;
data(:,2)=eje_Y;
data(:,3)=eje_Z;
data(:,4)=Velocidad;
data(:,5)=temp;
data(:,6)=tiempo;
data(:,7)=cuenta;
T = array2table(data);
T.Properties.VariableNames(1:7)={’Eje X’,’Eje Y’,’Eje Z’,’Velocidad’,’Temperatura’,’
writetable(T,filename)
app.ConectadoLamp.Color=[1.00 1.00 1.00];
app.DesconectadoLamp.Color=[1.00 0.00 0.00];
app.TextArea.Value="Desconesctado";
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% MODO LENTO %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function modo_lento(app)
app.ConectadoLamp.Color=[1 1 1];
o=0;
cla(app.EJE_X);
cla(app.EJE_Y);
cla(app.EJE_Z);
cla(app.VEL);
cla(app.EJE_X_2);
cla(app.EJE_Y_2);
cla(app.EJE_Z_2);
cla(app.VEL_2);
app.enable_dispositivo=0;
app.enable_graficas=0;
Puerto(app);
write(app.esp32,190,"uint8");
while(app.enable_graficas==0)
82
datos=readline(app.esp32);
if(size(datos)==0)
app.TextArea.Value="Error, no hay tansferencia de datos, revisar el puerto sele
end
if(size(datos)>0)
app.Lamp.Color=[1 1 0];
app.ConectadoLamp.Color=[0.00 1.00 0.00];
app.DesconectadoLamp.Color=[1.00 1.00 1.00];
C=strsplit(datos,’;’);
for i=1:1:(length(C)-1)
d=str2double(strsplit(C(i),’,’));
pos_data=(o+i);
eje_X(pos_data)=d(1);
eje_Y(pos_data)=d(2);
eje_Z(pos_data)=d(3);
Velocidad(pos_data)=d(4)*0.044704;
temp(pos_data)=d(5);
an_xz=atan(eje_X(pos_data)/eje_Z(pos_data));
angle_XZ(pos_data)=an_xz*(57.2958);
an_yz=atan(eje_Y(pos_data)/eje_Z(pos_data));
angle_YZ(pos_data)=an_yz*(57.2958);
tiempo(pos_data)=datetime(’now’);
an(pos_data)=tiempo.Year(pos_data);
mes(pos_data)=tiempo.Month(pos_data);
dia(pos_data)=tiempo.Day(pos_data);
hora(pos_data)=tiempo.Hour(pos_data);
minuto(pos_data)=tiempo.Minute(pos_data);
segundo(pos_data)=tiempo.Second(pos_data);
end
o=pos_data;
plot(app.EJE_X,tiempo,eje_X);
plot(app.EJE_Y,tiempo,eje_Y);
plot(app.EJE_Z,tiempo,eje_Z);
plot(app.VEL,tiempo,Velocidad);
plot(app.EJE_X_2,tiempo,angle_XZ);
plot(app.EJE_Y_2,tiempo,angle_YZ);
plot(app.EJE_Z_2,tiempo,temp);
plot(app.VEL_2,tiempo,Velocidad);
write(app.esp32,230,"uint8");
app.Lamp.Color=[1 1 1];
app.esp32=nan;
83
function serial_error(app)
app.TextArea.Value="Puerto No Reconocido";
end
end
% Component initialization
methods (Access = private)
% Create TabGroup
app.TabGroup = uitabgroup(app.NONITORIZACIONAERODINAMICAUIFigure);
app.TabGroup.Position = [1 1 1216 613];
% Create ConfiguracionTab
app.ConfiguracionTab = uitab(app.TabGroup);
app.ConfiguracionTab.Title = ’Configuracion’;
% Create Image_2
app.Image_2 = uiimage(app.ConfiguracionTab);
app.Image_2.Position = [352 28 221 121];
app.Image_2.ImageSource = ’LOGO_UMNG.png’;
% Create Image
app.Image = uiimage(app.ConfiguracionTab);
app.Image.Position = [73 28 212 121];
app.Image.ImageSource = ’1200px-Escudo_UD.svg.png’;
% Create CONFIGURACIONDECONEXIONCONELDISPOSITIVOLabel
app.CONFIGURACIONDECONEXIONCONELDISPOSITIVOLabel = uilabel(app.ConfiguracionTab);
app.CONFIGURACIONDECONEXIONCONELDISPOSITIVOLabel.HorizontalAlignment = ’center’;
app.CONFIGURACIONDECONEXIONCONELDISPOSITIVOLabel.Position = [156 547 328 22];
app.CONFIGURACIONDECONEXIONCONELDISPOSITIVOLabel.Text = ’CONFIGURACION DE CONEXION CON
% Create MODODEMUESTREOLabel
app.MODODEMUESTREOLabel = uilabel(app.ConfiguracionTab);
app.MODODEMUESTREOLabel.HorizontalAlignment = ’center’;
app.MODODEMUESTREOLabel.Position = [169 405 264 46];
app.MODODEMUESTREOLabel.Text = ’MODO DE MUESTREO’;
% Create ConectarseadispositivoBluetoohtButton
app.ConectarseadispositivoBluetoohtButton = uibutton(app.ConfiguracionTab, ’push’);
app.ConectarseadispositivoBluetoohtButton.ButtonPushedFcn = createCallbackFcn(app, @Con
app.ConectarseadispositivoBluetoohtButton.Enable = ’off’;
app.ConectarseadispositivoBluetoohtButton.Position = [332 205 176 59];
app.ConectarseadispositivoBluetoohtButton.Text = {’Conectarse a dispositivo’; ’Bluetooh
% Create BuscardispositivosBluetoothButton
app.BuscardispositivosBluetoothButton = uibutton(app.ConfiguracionTab, ’push’);
87
% Create TABLE
app.TABLE = uitable(app.ConfiguracionTab);
app.TABLE.ColumnName = {’Puertos disponibles’};
app.TABLE.RowName = {};
app.TABLE.Position = [659 255 500 238];
% Create LISTADEDISPOSITIVOSBLUETOOTHLabel
app.LISTADEDISPOSITIVOSBLUETOOTHLabel = uilabel(app.ConfiguracionTab);
app.LISTADEDISPOSITIVOSBLUETOOTHLabel.Position = [797 500 224 22];
app.LISTADEDISPOSITIVOSBLUETOOTHLabel.Text = ’LISTA DE DISPOSITIVOS BLUETOOTH’;
% Create ConectadoLabel
app.ConectadoLabel = uilabel(app.ConfiguracionTab);
app.ConectadoLabel.HorizontalAlignment = ’right’;
app.ConectadoLabel.Position = [659 163 84 22];
app.ConectadoLabel.Text = ’Conectado ’;
% Create ConectadoLamp
app.ConectadoLamp = uilamp(app.ConfiguracionTab);
app.ConectadoLamp.Position = [758 163 20 20];
app.ConectadoLamp.Color = [1 1 1];
% Create DesconectadoLampLabel
app.DesconectadoLampLabel = uilabel(app.ConfiguracionTab);
app.DesconectadoLampLabel.HorizontalAlignment = ’right’;
app.DesconectadoLampLabel.Position = [837 163 82 22];
app.DesconectadoLampLabel.Text = ’Desconectado’;
% Create DesconectadoLamp
app.DesconectadoLamp = uilamp(app.ConfiguracionTab);
app.DesconectadoLamp.Position = [934 163 20 20];
app.DesconectadoLamp.Color = [1 0 0];
% Create TextArea
app.TextArea = uitextarea(app.ConfiguracionTab);
app.TextArea.Position = [659 28 500 121];
% Create PuertoDropDownLabel
app.PuertoDropDownLabel = uilabel(app.ConfiguracionTab);
app.PuertoDropDownLabel.HorizontalAlignment = ’right’;
app.PuertoDropDownLabel.Position = [58 242 41 22];
app.PuertoDropDownLabel.Text = ’Puerto’;
88
% Create PuertoDropDown
app.PuertoDropDown = uidropdown(app.ConfiguracionTab);
app.PuertoDropDown.Items = {’’};
app.PuertoDropDown.Position = [114 242 100 22];
app.PuertoDropDown.Value = ’’;
% Create RapidoButton
app.RapidoButton = uibutton(app.ConfiguracionTab, ’state’);
app.RapidoButton.ValueChangedFcn = createCallbackFcn(app, @RapidoButtonValueChanged, tr
app.RapidoButton.Text = ’Rapido’;
app.RapidoButton.Position = [60 321 155 65];
% Create LentoButton
app.LentoButton = uibutton(app.ConfiguracionTab, ’state’);
app.LentoButton.ValueChangedFcn = createCallbackFcn(app, @LentoButtonValueChanged, true
app.LentoButton.Text = ’Lento’;
app.LentoButton.Position = [353 321 155 65];
% Create ESTADODELDISPOSITIVOLabel
app.ESTADODELDISPOSITIVOLabel = uilabel(app.ConfiguracionTab);
app.ESTADODELDISPOSITIVOLabel.HorizontalAlignment = ’center’;
app.ESTADODELDISPOSITIVOLabel.Position = [828 213 161 22];
app.ESTADODELDISPOSITIVOLabel.Text = ’ESTADO DEL DISPOSITIVO’;
% Create GraficasTab
app.GraficasTab = uitab(app.TabGroup);
app.GraficasTab.Title = ’Graficas’;
% Create POSICIONDELSERVOMOTORLabel
app.POSICIONDELSERVOMOTORLabel = uilabel(app.GraficasTab);
app.POSICIONDELSERVOMOTORLabel.HorizontalAlignment = ’center’;
app.POSICIONDELSERVOMOTORLabel.Position = [92 500 178 77];
app.POSICIONDELSERVOMOTORLabel.Text = {’POSICION ’; ’DEL ’; ’SERVOMOTOR’};
% Create PWM
app.PWM = uislider(app.GraficasTab);
app.PWM.Limits = [0 180];
app.PWM.FontSize = 16;
app.PWM.Position = [252 564 793 3];
% Create Image2
app.Image2 = uiimage(app.GraficasTab);
app.Image2.Position = [1054 148 115 108];
app.Image2.ImageSource = ’1200px-Escudo_UD.svg.png’;
% Create Image2_2
app.Image2_2 = uiimage(app.GraficasTab);
89
% Create ENVIARPOSICION
app.ENVIARPOSICION = uibutton(app.GraficasTab, ’push’);
app.ENVIARPOSICION.ButtonPushedFcn = createCallbackFcn(app, @ENVIARPOSICIONButtonPus
app.ENVIARPOSICION.Position = [1086 525 95 52];
app.ENVIARPOSICION.Text = {’ENVIAR’; ’POSICION’};
% Create DETENER
app.DETENER = uibutton(app.GraficasTab, ’push’);
app.DETENER.ButtonPushedFcn = createCallbackFcn(app, @DETENERButtonPushed, true);
app.DETENER.Position = [16 522 89 55];
app.DETENER.Text = ’DETENER’;
% Create LampLabel
app.LampLabel = uilabel(app.GraficasTab);
app.LampLabel.HorizontalAlignment = ’right’;
app.LampLabel.Position = [25 494 36 22];
app.LampLabel.Text = ’Lamp’;
% Create Lamp
app.Lamp = uilamp(app.GraficasTab);
app.Lamp.Position = [76 494 20 20];
app.Lamp.Color = [1 1 1];
% Create EJE_Z
app.EJE_Z = uiaxes(app.GraficasTab);
title(app.EJE_Z, ’EJE Z’)
xlabel(app.EJE_Z, ’TIEMPO (S)’)
ylabel(app.EJE_Z, ’ACELERACION (g)’)
zlabel(app.EJE_Z, ’Z’)
app.EJE_Z.PlotBoxAspectRatio = [2.17880794701987 1 1];
app.EJE_Z.FontName = ’Calibri’;
app.EJE_Z.FontWeight = ’bold’;
app.EJE_Z.YLim = [-500 500];
app.EJE_Z.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.6863;
app.EJE_Z.XGrid = ’on’;
app.EJE_Z.YGrid = ’on’;
app.EJE_Z.ColorOrder = [0 0 1;0 0 1;0 0 1];
app.EJE_Z.FontSize = 16;
app.EJE_Z.NextPlot = ’add’;
app.EJE_Z.Position = [797 281 372 214];
% Create EJE_Y
app.EJE_Y = uiaxes(app.GraficasTab);
title(app.EJE_Y, ’EJE Y’)
90
% Create EJE_X
app.EJE_X = uiaxes(app.GraficasTab);
title(app.EJE_X, ’EJE X’)
xlabel(app.EJE_X, ’TIEMPO (S)’)
ylabel(app.EJE_X, ’ACELERACION (g)’)
zlabel(app.EJE_X, ’Z’)
app.EJE_X.PlotBoxAspectRatio = [2.17880794701987 1 1];
app.EJE_X.FontName = ’Calibri’;
app.EJE_X.FontWeight = ’bold’;
app.EJE_X.YLim = [-500 500];
app.EJE_X.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.6863;0.2
app.EJE_X.XGrid = ’on’;
app.EJE_X.YGrid = ’on’;
app.EJE_X.ColorOrder = [0 0 1;0 0 1;0 0 1];
app.EJE_X.FontSize = 16;
app.EJE_X.NextPlot = ’add’;
app.EJE_X.Position = [16 281 372 214];
% Create VEL
app.VEL = uiaxes(app.GraficasTab);
title(app.VEL, ’VELOCIDAD DEL VIENTO’)
xlabel(app.VEL, ’TIEMPO (S)’)
ylabel(app.VEL, ’VELOCIDAD (m/s)’)
zlabel(app.VEL, ’Z’)
app.VEL.PlotBoxAspectRatio = [5.11111111111111 1 1];
app.VEL.FontName = ’Calibri’;
app.VEL.FontWeight = ’bold’;
app.VEL.YLim = [0 70];
app.VEL.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.6863;0.247
app.VEL.XGrid = ’on’;
app.VEL.YGrid = ’on’;
app.VEL.FontSize = 16;
91
% Create Angulo
app.Angulo = uitab(app.TabGroup);
app.Angulo.Title = ’Angulo’;
% Create Image2_3
app.Image2_3 = uiimage(app.Angulo);
app.Image2_3.Position = [1054 148 115 108];
app.Image2_3.ImageSource = ’1200px-Escudo_UD.svg.png’;
% Create Image2_4
app.Image2_4 = uiimage(app.Angulo);
app.Image2_4.Position = [1054 11 115 110];
app.Image2_4.ImageSource = ’LOGO_UMNG.png’;
% Create EJE_Z_2
app.EJE_Z_2 = uiaxes(app.Angulo);
title(app.EJE_Z_2, ’TEMPERATURA’)
xlabel(app.EJE_Z_2, ’TIEMPO (S)’)
ylabel(app.EJE_Z_2, ’ANGULO (°)’)
zlabel(app.EJE_Z_2, ’Z’)
app.EJE_Z_2.PlotBoxAspectRatio = [2.17880794701987 1 1];
app.EJE_Z_2.FontName = ’Calibri’;
app.EJE_Z_2.FontWeight = ’bold’;
app.EJE_Z_2.YLim = [-10 35];
app.EJE_Z_2.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.686
app.EJE_Z_2.XGrid = ’on’;
app.EJE_Z_2.YGrid = ’on’;
app.EJE_Z_2.ColorOrder = [0 0 1;0 0 1;0 0 1];
app.EJE_Z_2.FontSize = 16;
app.EJE_Z_2.NextPlot = ’add’;
app.EJE_Z_2.Position = [797 303 372 245];
% Create EJE_Y_2
app.EJE_Y_2 = uiaxes(app.Angulo);
title(app.EJE_Y_2, ’ANGULO YZ’)
xlabel(app.EJE_Y_2, ’TIEMPO (S)’)
ylabel(app.EJE_Y_2, ’ANGULO (°)’)
zlabel(app.EJE_Y_2, ’Z’)
app.EJE_Y_2.PlotBoxAspectRatio = [2.17880794701987 1 1];
app.EJE_Y_2.FontName = ’Calibri’;
app.EJE_Y_2.FontWeight = ’bold’;
app.EJE_Y_2.YLim = [-90 90];
app.EJE_Y_2.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.686
app.EJE_Y_2.XGrid = ’on’;
app.EJE_Y_2.YGrid = ’on’;
92
% Create EJE_X_2
app.EJE_X_2 = uiaxes(app.Angulo);
title(app.EJE_X_2, ’ANGULO XZ’)
xlabel(app.EJE_X_2, ’TIEMPO (S)’)
ylabel(app.EJE_X_2, ’ANGULO (°)’)
zlabel(app.EJE_X_2, ’Z’)
app.EJE_X_2.PlotBoxAspectRatio = [2.17880794701987 1 1];
app.EJE_X_2.FontName = ’Calibri’;
app.EJE_X_2.FontWeight = ’bold’;
app.EJE_X_2.YLim = [-90 90];
app.EJE_X_2.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.6863;0
app.EJE_X_2.XGrid = ’on’;
app.EJE_X_2.YGrid = ’on’;
app.EJE_X_2.ColorOrder = [0 0 1;0 0 1;0 0 1];
app.EJE_X_2.FontSize = 16;
app.EJE_X_2.NextPlot = ’add’;
app.EJE_X_2.Position = [17 303 372 245];
% Create VEL_2
app.VEL_2 = uiaxes(app.Angulo);
title(app.VEL_2, ’VELOCIDAD DEL VIENTO’)
xlabel(app.VEL_2, ’TIEMPO (S)’)
ylabel(app.VEL_2, ’VELOCIDAD (m/s)’)
zlabel(app.VEL_2, ’Z’)
app.VEL_2.PlotBoxAspectRatio = [5.11111111111111 1 1];
app.VEL_2.FontName = ’Calibri’;
app.VEL_2.FontWeight = ’bold’;
app.VEL_2.YLim = [0 1.5];
app.VEL_2.Colormap = [0.2431 0.149 0.6588;0.2431 0.1529 0.6745;0.2471 0.1569 0.6863;0.2
app.VEL_2.XGrid = ’on’;
app.VEL_2.YGrid = ’on’;
app.VEL_2.FontSize = 16;
app.VEL_2.Position = [16 28 987 246];
% Create InformacinTab
app.InformacinTab = uitab(app.TabGroup);
app.InformacinTab.Title = ’Información’;
% Create Label
app.Label = uilabel(app.InformacinTab);
app.Label.Position = [16 56 1186 513];
app.Label.Text = {’Bluetooth’; ’’; ’Para relizar la conexion mediante Bluetooth con el
93
% Construct app
function app = Wi-Fi_Bluetooth
if nargout == 0
clear app
end
end