Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica 1
Practica 1
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.
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.
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:
Nombre SquareWave.vi
Símbolo
Entradas
Reset Phase determina la fase inicial de la onda cuadrada.
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.
dónde
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).
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.
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)
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.
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.
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)
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.
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.
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
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.
Nombre BuildArray.vi
Símbolo
Entradas
Array Arreglo inicial con el que se crea el arreglo de salida
Salidas
Appended array Arreglo resultante de la función
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.
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 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