Está en la página 1de 16

Escuela Militar de

Ingenieros

Laboratorio de Instrumentación
Virtual

“Practica 1: GENERACIÓN Y
ACONDICIONAMIENTO
DE SEÑALES”

Docente:
José Mauricio Rodríguez Sánchez

Discente:
Tte. PAS. I.C.E. Samuel Valadez Pérez.
Tte. PAS. I.C.E. Ana Karen Meza Aldana

Índice
INTRODUCCIÓN.........................................................................................................................................
OBJETIVOS..................................................................................................................................................
Materiales......................................................................................................................................................
DESARROLLO.............................................................................................................................................
Especificaciones.........................................................................................................................................
Programacion...............................................................................................¡Error! Marcador no definido.
CONCLUSIONES.......................................................................................................................................

INTRODUCCIÓN
OBJETIVOS
Desarrollar tu primer programa funcional en LabVIEW bajo requerimientos
específicos.
 Aplicar los conocimientos adquiridos en el ejercicio 0 para realizar la lógica de programación
del sistema de la práctica.
 Aplicar los conocimientos del ejercicio 1 con la intención de crear una aplicación que sea capaz
de generar señales y acondicionarlas de forma simulada.

Materiales
 1 PC con software LabVIEW instalado.

DESARROLLO.
Especificaciones
Apoyándote en tu profesor y utilizando los conocimientos y técnicas vistos en
los ejercicios 0 y 1 del curso, realiza un programa en LabVIEW que cumpla con los
siguientes requerimientos:
 El usuario debe poder elegir la generación de una señal simulada entre dos opciones indicadas
por el profesor. Todos los parámetros de configuración de las funciones deben de ser
especificados por el usuario de tu programa con los controles adecuados para ello. Sólo el
número de muestras será fijo con un valor de 2000 muestras.
 El usuario debe poder elegir la generación de una señal de ruido entre dos opciones indicadas
por el profesor. Todos los parámetros de configuración se especifican por el usuario mediante
controles adecuados para ello. Sólo el número de muestras a simular es fijo, 2000 muestras.
 Se Genera a partir de la señal simulada y del ruido, de forma aditiva una señal contaminada, a
la cual se le añade un nivel de offset mediante un control numérico operado por el usuario en el
panel frontal.
 El proceso de acondicionamiento se realiza eliminando el nivel de offset y filtrando la señal
mediante la selección de un filtro entre dos opciones a disposición del usuario. Estas opciones
serán indicadas por el profesor.
 Todos los parámetros de los filtros se deben configurar por el usuario mediante controles
adecuados para ello, excepto el tipo de filtro y la frecuencia de muestreo, la cuál será de 500 Hz
y pasa bajo respectivamente.
 Se usarán dos medios de despliegue gráfico para observar las señales resultantes del proceso.
En un Waveform graph, configurado por el programador de forma adecuada, se debe observar
la señal simulada, el ruido generado y la señal contaminada. En un Waveform chart se
desplegará la señal contaminada y la señal filtrada.
 Todo el programa de funcionar de forma cíclica y considerar un botón de paro general. De igual
manera, el proceso de generación y acondicionamiento se ejecuta a demanda del usuario, no de
forma descontrolada.
Programación
El acondicionamiento de señales es una tarea básica en cualquier sistema de instrumentación. Es
necesaria debido a que la adquisición de señales comúnmente implica la adición de ruido a estas,
provocando problemas en subsecuentes etapas de estos sistemas. En la figura 1 se muestra el código
del ejercicio.

Figura 1. Diagrama de bloques con el


código de la practica

En general, la realización de esta práctica consistió en generar una señal Cuadrada/Sierra y un ruido de
tipo gaussiano/Possion, para combinarlas de forma aditiva y obtener una señal ruidosa.
Posteriormente, se aplicó un filtro Butterworth paso alta para reducir el ruido añadido a la señal. La
información gráfica es desplegada en dos indicadores, un Waveform chart y un Waveform Graph,
auxiliándose de su modo multiplot para mostrar varias gráficas.
En primera instancia, se procedió a generar la señal Cuadrada/Sierra usando la función
“SawtoothWave.vi” y “SquareWave.vi” obtenida del menú “Signal Processing > Sig Generation”, en la
tabla 1 y tabla 2se muestra la descripción de su funcionamiento

Nombre SawtoothWave.vi
Símbolo

Entradas
Reset Phase El defecto es cierto. Si la fase de reinicio es VERDADERA, LabVIEW establece la fase inicial para que
entre en fase. Si la fase de reinicio es FALSA, LabVIEW usa el valor de salida desde la última vez que se
ejecutó el VI como la fase inicial de la onda de diente de sierra.

Samples es el número de muestras de la onda en diente de sierra. El valor predeterminado es 128.

Amplitude es la amplitud de la onda de diente de sierra. El valor predeterminado es 1.0.

Frecuency es la frecuencia de la onda de diente de sierra en unidades normalizadas de ciclos/muestra. El valor


predeterminado es 1 ciclo/128 muestras, o 7,8125E–3 ciclos/muestra.
Phase in es la fase inicial, en grados, de la onda en diente de sierra cuando la fase de reinicio es VERDADERA. El
valor predeterminado es 0.
Salidas
sawtooth wave es la onda en diente de sierra de salida.

Phase out fase, en grados, de la siguiente muestra de onda en diente de sierra.

error devuelve cualquier error o advertencia del VI. Puede conectar el error al grupo de errores desde el
código de error VI para convertir el código de error o la advertencia en un grupo de errores.
Descripción Implementa la generación de una señal Sawtooth siguiendo la ecuación:

p = fase[i] módulo 360,

fase[i] = fase_inicial + frecuencia*360*i,

frecuencia es la frecuencia en unidades normalizadas de ciclos/muestra,

fase_inicial es fase de entrada si la fase de reinicio es VERDADERA,

fase_inicial se elimina gradualmente de la ejecución anterior de esta instancia del VI si la fase de


reinicio es FALSA.
Tabla 1. Función SawtoothWave.vi

Nombre SquareWave.vi
Símbolo

Entradas
Reset Phase determina la fase inicial de la onda cuadrada.

Samples es el número de muestras de la onda cuadrada. El valor predeterminado es 128.

Amplitude es la amplitud de la onda cuadrada. El valor predeterminado es 1.0.

Frecuency es la frecuencia de la onda cuadrada en unidades normalizadas de ciclos/muestra.

Phase in es la fase inicial, en grados, de la onda cuadrada cuando la fase de reinicio es VERDADERA. El valor
predeterminado es 0.

Salidas
SquareWave Genera una matriz que contiene una onda cuadrada.

Phase out La eliminación gradual es la fase, en grados, de la siguiente muestra de onda cuadrada.

error devuelve cualquier error o advertencia del VI.


Descripción El Square Wave VI es reentrante, por lo que puede usarlo para simular una adquisición continua desde
un generador de funciones de onda cuadrada.
Este VI calcula el cuadrado (fase [i]) usando la siguiente ecuación:

dónde

p = fase[i] módulo 360,

el deber es el ciclo de trabajo,

fase[i] = fase_inicial + frecuencia*360*i,

frecuencia es la frecuencia en unidades normalizadas de ciclos/muestra,

fase_inicial es fase de entrada si la fase de reinicio es VERDADERA,

fase_inicial es la eliminación gradual de la ejecución anterior de esta instancia del VI si la fase de


reinicio es FALSA.
Tabla 2. Función SquareWave.vi

La configuración de esta señal se dio por medio de constantes conectadas en las entradas
principales de la función, haciendo uso del menú contextual para crearlas, con un click derecho en
la entrada (Figura 2).

Figura 2. Menú contextual para crear constantes, controles e indicadores en las


terminales de una función.

Se pide generar 2000 muestras con una amplitud de 1.0 y una frecuencia normalizada de 0.005,
obtenida de dividir 10 ciclos entre las 2000 muestras generadas, en la figura 3 y figura 4 se muestra el
código resultante.

Figura 3. Código gráfico para la función SquareWave


Figura 4. Código gráfico para la función
SawtoothWave

La generación del ruido es por medio de la función “GaussianWhiteNoise.vi”, y una


“PoissonNoise.Vi” la cual es tomada del menú “Signal Processing > Sig Generation”, en la tabla 3 y
tabla 4 se da su descripción.

Nombre GaussianNoise.vi
Símbolo

Entradas
Initialize Controla la inicialización de la generación del ruido, dado que implementa un procedimiento
recursivo. (Boolean)
Samples Número de muestras que se generan en la señal.(Entero signado de 32 bits)

Std Deviation Desviación estándar de la densidad de probabilidad Gaussiana del ruido.(Float de doble precisión)

Seed Determina la forma de generar el estado interno inicial de la generación del ruido.

Salidas
Gaussian noise Señal de salida de la función. (Arreglo 1D Float doble precisión)

error Código de error o advertencia de la función.(Entero signado de 32 bits)

Descripción Genera una secuencia de muestras de un ruido Pseudoaleatorio con dendisdad de probabilidad
Gaussiana usando el método de transformación uniformemente distribuido Box-
Muller modificado.
Tabla 3. Función GaussianWhiteNoise.vi.

Nombre PossonNoise.vi
Símbolo

Entradas
controla la resiembra del generador de muestras de ruido.
Initialize
Samples deben ser mayores que 0. El valor predeterminado es 128.

Seed ¿La semilla determina cómo generar el estado de la semilla interna cuando se inicializa? es verdad. Si
seed es mayor que 0, este VI usa seed para generar el estado interno directamente. Si la semilla es
menor o igual a 0, este VI utiliza un número aleatorio para generar el estado interno. Si inicializar? es
FALSO, este VI ignora la semilla. El valor predeterminado es -1.
Salidas
PoissonNoise contiene el patrón pseudoaleatorio distribuido por Poisson.

error devuelve cualquier error o advertencia del VI. Puede conectar el error al grupo de errores desde el
código de error VI para convertir el código de error o la advertencia en un grupo de errores.
También puede utilizar el VI Poisson Noise Waveform para generar una señal de ruido Poisson o el VI
Descripción Discrete Random para generar valores aleatorios a partir de una variable distribuida por Poisson.

Tabla 4. Función PoissonNoise.vi

Se configura la generación de 2000 muestras con una desviación igual al 20% de la _amplitud de la
señal Cuadrada/Sierra 0.2, el código gráfico se muestra en la figura 5 y en la figura 6.

Figura 5. Código gráfico para la generación del ruido poisson.

Figura 6. Código gráfico para la generación del ruido


Gausiana.

Para generar la señal ruidosa se suman por medio de la función de adición Add.vi, tomada del
menú “Programing > Numeric”, las señales independientes del ruido y la senoide. En la Tabla 5 se
muestra la descripción de esta función.

Nombre Add.vi
Símbolo

Entradas
X Primer sumando, puede ser un numero escalar, un arreglo numérico o de otro tipo de dato.

Y Segundo sumando, puede ser un numero escalar, un arreglo numérico o de otro tipo de
dato.
Salidas
X+Y Resultado de la operación de suma

Descripción Realiza la suma de sus entradas. Si se conectan arreglos en su entrada, se suman los elementos
de cada arreglo obteniendo como resultado un arreglo de las mismas
dimensiones que los de entrada.
Tabla 5. Función Add.vi.
La señal ruidosa resultante es filtrada por medio de un filtro “BesselFilter” y “EllipticFilter” aplicado
mediante la función EllipticFilter.vi y BesselFilter.vi, obtenida del menú “Signal Processing > Filter”,
en la tabla 6 y tabla 7 se muestra su descripción.

Nombre BesselFilter.vi
Símbolo

Entradas
Filter Type Especifica el tipo de filtro, paso bajo, paso alto, pasa banda o rechaza banda. (Entero sin
signo)
X Señal de entrada a ser filtrada. (Array 1D de float DBL)
fs es la frecuencia en Hz a la que desea muestrear X y debe ser mayor que 0. El valor predeterminado
Sampling Freq es 1,0 Hz. Si sample freq: fs es menor o igual a 0, este VI configura Filtered X en una matriz vacía y
devuelve un error.
High cutoff freq Es la frecuencia de corte alta en Hz. La función ignora este parámetro si el tipo de filtro es
paso bajo o paso alto. (Float DBL)
Los cutoff freq fh es la frecuencia de corte alta en Hz. El valor predeterminado es 0,45 Hz. El VI ignora este parámetro
cuando el tipo de filtro es 0 (Paso bajo) o 1 (Paso alto). Cuando el tipo de filtro es 2 (Paso de banda) o 3
(Parada de banda), la frecuencia de corte alta: fh debe ser mayor que la frecuencia de corte baja: fl y
debe observar el criterio de Nyquist.
Order especifica el orden del filtro y debe ser mayor que 0. El valor predeterminado es 2. Si order es menor o
igual a 0, el VI configura Filtered X en una matriz vacía y devuelve un error.
Init cond Controla la inicialización del estado interno del filtro, por defecto es falsa. (Boolean)

Salidas
Filtered X Arreglo de salida con la señal filtrada.(Arreglo 1D de Float DBL)

error Código de error o advertencia de la función.(Entero signado de 32 bits)

Descripción Genera un filtro Bessel digital llamando a los Coeficientes de Bessel VI. Conecte datos a la entrada X
para determinar la instancia polimórfica que se utilizará o seleccione manualmente la instancia.
Tabla 6. Función BesselFilter.vi.

Nombre EllipticFilter.vi
Símbolo

Entradas
Filter Type Especifica el tipo de filtro, paso bajo, paso alto, pasa banda o rechaza banda. (Entero sin
signo)
X Señal de entrada a ser filtrada. (Array 1D de float DBL)
fs es la frecuencia en Hz a la que desea muestrear X y debe ser mayor que 0. El valor predeterminado
Sampling Freq es 1,0 Hz. Si sample freq: fs es menor o igual a 0, este VI configura Filtered X en una matriz vacía y
devuelve un error.
High cutoff freq Es la frecuencia de corte alta en Hz. La función ignora este parámetro si el tipo de filtro es
paso bajo o paso alto. (Float DBL)
Los cutoff freq fh es la frecuencia de corte alta en Hz. El valor predeterminado es 0,45 Hz. El VI ignora este parámetro
cuando el tipo de filtro es 0 (Paso bajo) o 1 (Paso alto). Cuando el tipo de filtro es 2 (Paso de banda) o 3
(Parada de banda), la frecuencia de corte alta: fh debe ser mayor que la frecuencia de corte baja: fl y
debe observar el criterio de Nyquist.
Order especifica el orden del filtro y debe ser mayor que 0. El valor predeterminado es 2. Si order es menor o
igual a 0, el VI configura Filtered X en una matriz vacía y devuelve un error.
Init cond Controla la inicialización del estado interno del filtro, por defecto es falsa. (Boolean)

Salidas
Filtered X Arreglo de salida con la señal filtrada. (Arreglo 1D de Float DBL)

error Código de error o advertencia de la función.(Entero signado de 32 bits), devuelve cualquier error o
advertencia del VI.
Descripción Genera un filtro elíptico digital llamando a Coeficientes elípticos VI. Conecte datos a la entrada X para
determinar la instancia polimórfica que se utilizará o seleccione manualmente la instancia.
Tabla 7. Función EllipticFilter.vi.

Al establecer que la frecuencia de la señal cuadrada y sierra sea de 10 Hz, es necesario utilizar una
frecuencia de muestreo de 500Hz, esto debido a que en la generación de _la señal se establece
que en 2000 muestras existan 10 ciclos de la señal. El tipo de filtro seleccionado es Paso alta,
esto para poder atenuar lo suficiente las componentes de alta frecuencia de la señal ruidos, que
en esencia son parte del ruido. Para configurar la frecuencia de corte alta se utiliza un control a
disposición del usuario. Recordemos que esta función, en caso de estar en un modo paso bajo, no
utiliza la entrada de frecuencia de corte superior, solo la inferior. En la figura 7 se muestra el
código gráfico de la aplicación del filtro.

Figura 7. Código gráfico del filtro Bessel.

Para poder observar las señales generadas y el resultado del filtro nos apoyamos del uso de
indicadores gráficos, a saber, un Waveform Graph y un Waveform Chart.

En principio se creó desde la paleta de controles en el menú “Modern > Graphics” un Waveform
Graph, para observar las señales Senoide y ruido Gaussiano, en la tabla 8 se muestran la
descripción de este indicador.

Nombre Waveform Graph


Imagen del indicador

Descripción El indicador Waveform Graph es capaz de desplegar una o


varias gráficas usando su modo multiplot. La gráficas válidas
son las de tipo de valore simples, como y = f(x), aceptando una
amplia gama de tipos datos, con lo que se minimiza la
manipulación de la información antes de ser mostrada. El
modo multiplot consisten en organizar los
arreglos con los datos de las gráficas a mostrar en un arreglo
2D donde las filas sean los elementos a mostrar.
Tabla 8. Indicador Waveform Grapch
Es posible configurar prácticamente cualquier parámetro y característica de este indicador por
medio del menú contextual propio o directamente en los elementos del mismo. Para este
ejercicio, se modificaron atributos como el color de fondo de la gráfica, los nombres de los ejes, su
tamaño y el número de gráficas a mostrar desde su Leyenda de gráfica (Plot Legend). En la figura 8
se muestra el resultado final de la configuración de este indicador.

Figura 8. Indicador Waveform Graph configurado para el ejercicio.

Se puede observar que la escala vertical se nombró como Amplitud y se ajustó al tamaño de las
señales generadas, asimismo, se desactivó la propiedad Autoscale de este eje para evitar se
modifiquen de forma automática los cambios realizados. También se preparó el eje horizontal
para mostrar las 2000 muestras generadas en las señales, y la leyenda de tiempo se cambió por
muestras. Tanto el color del fondo como de las gráficas se estableció para aprovechar el contraste
entre ellos mejorando la apreciación de las señales. Todo esto mediante el menú interactivo de la
leyenda de gráfica (click izquierdo sobre él) y el menú contextual del indicador (click derecho sobre
el indicador o elemento a configurar).

Por otra parte, se hizo uso de un indicador Waveform Chart para desplegar las gráficas del ruido y
el resultado de filtrado. En la tabla 9 se da la descripción de este indicador.
Nombre Waveform Chart
Imagen del indicador

Descripción Este indicador es especial en el sentido de que está diseñado


para mostrar señales que son adquiridas a un intervalo
constante. Para mostrar múltiples señales se puede crear un
vector de clústeres con los puntos individuales de las gráficas,
configurando sus características de despliegue desde el menú
contextual y
la leyenda de gráfica.
Tabla 9. Descripción del indicador Waveform Chart.

Al igual que con el indicador anterior, se configuró las propiedades del Waveform Chart mediante
el menú contextual y la leyenda de gráfica, esto para mostrar tanto el ruido generado como el
resultado del filtro. Es importante mencionar que existe la posibilidad de hacer uso de la memoria
propia del indicador para almacenar una cantidad determinada de muestras, para nuestro
ejercicio 10000, con lo que las señales se mantienen integras hasta que este buffer se llena. En la
figura 9 se muestra el indicador después de su configuración.

Figura 9. Indicador Waveform Chart configurado.


Para ambos indicadores, hubo la necesidad de usar su modo multiplot, para poder desplegar
varias señales en el mismo elemento. En el caso del Waveform Graph se organizó a los arreglos de
las señales Cuadrada/Sierra y contaminada en un arreglo de 2 dimensiones, donde cada fila
representa una gráfica. Esto se logró con el uso de la función BuildArray.vi, obtenida del menú de
funciones “Programing > Array”. En la tabla 10 se muestra la descripción de esta función y en la
figura 8 el código gráfico resultante.

Nombre BuildArray.vi
Símbolo

Entradas
Array Arreglo inicial con el que se crea el arreglo de salida

Element Arreglos subsecuentes del arreglo de salida

Salidas
Appended array Arreglo resultante de la función

Descripción Concatena múltiples arreglos en un arreglo de la misma dimensión o de una dimensión


superior.
Tabla 10. Función BuildArray.vi.

Figura 10. Código gráfico del despliegue multiplot del Waveform Graph.

Para el modo multiplot del Waveform Chart se tiene que realizar un código más extenso. Nos
apoyamos de unas estructuras While Loop y sus túneles indexados para este fin, conectando como
entradas los Case Structure de las señales y del ruido generado y de señal filtrada. Pudiendo
observar ambas gráficas. En la Tabla 11 Se muestra la descripción de la estructura For y en la figura
9 el código gráfico resultante.

Nombre Estructura Case


Imagen

Descripción Contiene uno o más subdiagramas, o casos, exactamente uno de


los cuales se ejecuta cuando se ejecuta la estructura. El valor
conectado al selector de casos determina qué caso ejecutar.

Tabla 11. Descripción de la estructura


Case.
Nombre Estructura While Loop
Imagen

Descripción Repite el código dentro de su subdiagrama hasta que ocurre una


condición específica. Un bucle While siempre se ejecuta al menos una
vez.

Tabla 12. Descripción del While Loop.


Figura 11. Código gráfico del modo multiplot en el Waveform Chart.

Con esto finalizamos el desarrollo del código, pasaremos a presentar algunos _resultados.

RESULTADOS.
Se muestra en el indicador Waveform Graph la señal Cuadrada/Sierra original y la
contaminada con el ruido Gaussiano/Poisson también con la señal filtrada, en la figura 12 se
presenta una imagen del indicador como se observa en el panel frontal del código y en la figura 13
una gráfica exportada con las señales individuales.

Figura 10. Indicador Graph con las tres graficas.


Se observa que las señales tienen 2000 muestras, y las características de la señal Cuadrada/Sierra se
hacen evidentes al tener 10 ciclos en ese número de muestras, asimismo la amplitud es de 1. La señal
contaminada es la que ingresa a la función de filtrado para su depuración. En la figura 13 se presenta
una imagen del Chart con las gráficas de ruido y el resultado del filtro con una frecuencia de corte de
500 Hz.

Figura 12. Chart con las gráficas de ruido Gaussiano/Poisson y el resultado del filtro
con
una frecuencia de corte de 500 Hz.

Notamos las características del ruido generado, de morfología Gaussiana/Poisson y con una
desviación estándar de 0.4, que representa el 20% de la amplitud de nuestra señal
_Cuadrada/Sierra. El resultado del filtro hace evidente a simple vista la perdida de información de
altas frecuencias, principalmente del ruido, otorgando una señal contaminada aún, pero con cambios
más suaves que la señal sin filtrar.

CONCLUSIONES.
Al desarrollar esta práctica fue un poco complicado ya que es la primera vez que hacemos algo similar o al
usar este nuevo programa para nosotros sin embargo tuvimos ayuda del maestro y nos fue apoyando
paso con paso.
También al tener de ayuda a los programas antes realizados nos fuimos basando en ellos para realización
de esta práctica, la finalidad de esta práctica es meter dos señales diferentes en este caso una sierra y una
cuadrada que a la vez se le genere un ruido gaussiano y polisón para así igual filtrarlos por dos filtros
diferentes como la Elíptica y el Bessel y graficarlas al final.

16

También podría gustarte