Septie Septiembre mbre de 2011
Práctica 1. Adq Adquisic uisición ión de señales mediante MatLab MatLab
-------
Carrera
-------
INGENIERIA ELECTRONICA. -------
Materia
-------
PROCESAMIENTO DIGITAL DE SEÑALES
Titulo del Trabajo
-------
-------
Reporte de la práctica 1 “adquisición de señales mediante MatLab”
EQUIPO
Integrantes -------
------
Rejón Sosa Manuel Cimé Rosado Fernando Gamboa Pérez Ares Ferrera Damas Damas Adrian
--------
Maestro: --------
Jesús Sandoval Gio
MÉRIDA, YUCATÁN, MÉXICO A 9 DE SEPTIEMBRE SEPTIEMBRE DE 2011. 20 11.
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
INSTITUTO TECNOLÓGICO DE MÉRIDA DEPARTAMENTO DE INGENOERÍA ELÉCTRICA Y ELECTRÓNICA PROCESAMIENTO DIGITAL DE SEÑALES LABORATORIO 1 Adquisición de señales mediante Matlab®
Objetivo: conocer sobre el funcionamiento del toolbox de adquisición de datos de MatLab, el cual permite adquirir datos de sensores y enviar señales eléctricas que puedes ser utilizadas para el control de dispositivos externos. En este caso se utiliza la tarjeta de sonido que se encuentra en el interior de la computadora, y el micrófono de la misma computadora servirá como el dispositivo de adquisición de datos. Material y equipo: PC con Matlab®, micrófono u otra fuente de señal. Desarrollo:
Adquirir alguna señal de audio mediante el Matlab® y la tarjeta de sonido de la PC. Revisar la documentación anexa que describe la manera de usar la tarjeta de sonido del PC para adquirir señales con Matlab®. Graficar los resultados. Observar la diferencia obtenida cuando se utilizan distintos anchos de ventana y frecuencias de muestreo. Escuchar las señales obtenidas usando la función sound() y corroborar las diferencias. Grabar las señales resultantes usando la función wavwrite() .
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
Introducción
Primeramente se recordaran algunos conceptos básicos que resultan importantes para realizar esta práctica. El primero de ellos es el concepto de la conversión analógica a digital, este es el hecho de transformar una señal que es analógica tal como la voz, la luz, la señales que emite el corazón en una señal analógica que pueda procesar una computadora, ya que como debe saberse, una computadora es digital y solo puede guardar números discretos. El Hardware que aquí se utiliza tiene la electrónica que puede tomar mediciones digitales discretas de una señal analógica continua. Otro de los conceptos a tomar en cuenta es, la frecuencia de muestreo, la cual es el número de veces que el equipo Analógico / Digital toma una medida discreta cada segundo. El disparo de activación es cuando el usuario le hace saber al hardware de adquisición de datos que es tiempo de comenzar a tomar datos. La tarjeta se puede activar de manera manual (es decir, decirle a la tarjeta cuando comenzará a recopilar datos). Alias de error es cuando una señal tiene una componente de frecuencia que es mayor que la media de frecuencia de muestreo, y causa que se obtenga una señal falsa de baja frecuencia.
Desarrollo e implementación
Una vez que se han recordado los conceptos importantes entonces es momento de adquirir los datos y procesarlos en la computadora. Los sensores que se envían una señal eléctrica analógica. La tarjeta de sonido A/D muestra la señal a una tasa de muestreo que es especificada por el usuario mediante MatLab y almacena los valores de la tensión en cada tiempo de muestreo en la memoria de la computadora. La señal analógica continua que se convertirá en una lista de números que corresponden al voltaje en ciertos instantes de tiempo. El muestro digital se puede observar en la figura 1. Hay algunos pasos que se deben siempre debe seguir. Lo primero que se debe de hacer es crear un dispositivo de entrada analógica y abrir canales de datos de entrada (téngase en cuenta que el programa final de MatLab se mostrara en el anexo 1. Aquí se pretende explicar paso a paso tal programa). Así bien se escribe lo siguiente: AI = analoginput( 'winsound' ,1); chan = addchannel(AI,1);
La primera línea define la tarjeta de sonido de Windows como el dispositivo de entrada analógica y la segunda línea abre un canal para la entrada de datos. La tarjeta de sonido sólo tiene dos canales: los canales 1 y 2, si se especifican otros canales, MATLAB marcará un error. El uno en el comando “analoginput” es una bandera específica de Hardware.
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
Figura 1. Muestreo digital de una señal analógica continúa Atención: cuando se tiene instalado un módem además de la tarjeta de sonido, es posible que el primero sea reconocido como dispositivo de audio por defecto. Si se tiene un número cero en lugar de un uno en la instrucción “analoginput” podría abrir por defe cto el módem como entrada analógica y no el micrófono, que es lo que se desea. Para que en este caso utilice la tarjeta de sonido se añade el valor uno como parámetro en la función “analoginput”.
La variable de AI es un objeto que tiene muchas propiedades asociadas. El usuario puede cambiar estas propiedades para que el dispositivo se comporte de la manera que se prefiera. La tarjeta tiene valores por defecto que se pueden aceptar, aunque no sea lo mejor para la aplicación para la que se requiera. Por lo tanto estas propiedades pueden cambiarse, y a continuación se mostrará cómo. Las siguientes instrucciones muestran la manera en la que se puede definir una frecuencia de muestreo, el número de muestras a adquirir, y la condición de disparo. duration = 3; %graba por tres segundos para tener un diferente ancho de ventana SampleRate = 44100; set(AI,'SampleRate' ,SampleRate); set(AI,'SamplesPerTrigger' ,duration*SampleRate); set(AI,'TriggerType' ,'Manual');
En la primera línea se muestra una instrucción en la que se puede elegir la duración en la que se grabara la voz o el audio que se quiera, en este ejemplo se tiene elegido 3 segundos, aunque se podría cambiar al tiempo que el usuario requiera para su aplicación; esto nos da un diferente ancho de ventana.
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
En la segunda línea se elige la frecuencia de muestreo, es decir, el numero de muestras a adquirir en un segundo, en este ejemplo se tienen elegido 44100 muestras por segundo. En la tercera línea se define la condición de disparo, en este ejemplo se tiene activado de manera manual, esto quiere decir que cuando se quiera que la tarjeta de sonido colecte datos será cuando escribamos el comando “trigger(AI)”. Se tiene que tomar en cuenta que el usuario puede elegir la
forma de disparo más le convenga para la aplicación para que se vaya a utilizar. Hasta ahora se tiene ya la tarjeta de sonido para poder empezar a adquirir datos. Para realizar esto se utilizan los siguientes comandos: start(AI); trigger(AI); data = getdata(AI);
Estos comandos funcionan de la siguiente manera: Después de que el comando “start” es utilizado la tarjeta de sonido se encuentra colectando datos y reciclándolos en un buffer temporal. Después del comando de disparo “trigger” , la tarjeta se activa y recoge 44,100
muestras durante un segundo. Una vez realizado esto, las 44,100 muestras se encuentran disponibles para obtenerlos con el comando “getdata”, los datos adquiridos con el comando “trigger” son guardados en un buffer temporal. Así los datos son puestos en el workspace de
MatLab usando el comando “getdata”. Para finalizar se guardan esos datos en una variable llamada “data”, con la instrucción data = getdata(AI).
Posterior a esto los datos pueden ser graficados como se muestra a continuación: plot (data) xlabel('Ancho de ventana' );ylabel('Amplitud' );title('Ancho de ventana Vs. Amplitud');
con el comando plot(data) se grafican los datos que se encuentran guardados en la variable “data”. Las líneas dos y tres de las instrucciones mostradas anteriormente son simplemente para
darle titulo a los ejes Y y X, y a la gráfica misma. A continuación se muestran otros dos comandos utilizados en ésta práctica: SOUND(data,SampleRate) wavwrite(data,SampleRate, 'voz a 5000 SampleRate, duración 3 segundos' ); wavplay(data,SampleRate);
La primera línea es utilizada para escuchar el sonido que se encuentra grabado en la variable data a la frecuencia de muestreo utilizada. La segunda línea se utiliza para guardar el sonido grabado como un archivo “.wav” de Windows. El comando “wayplay” es utilizado para verificar si efectivamente el sonido se grabo de manera correcta como archivo “.wav”.
Septiembre de 2011
Práctica 1. Adquisición de señales mediante MatLab
Pruebas Prueba 1
En la primera prueba se realizó una grabación de un audio a una frecuencia de muestreo de 44100 muestras por segundo (44.1 kHz) con una duración de grabación de 3 segundos. La gráfica resultante se puede observar en la figura 2; el ancho de ventana se encuentra definido por la multiplicación de duración*frecuencia de muestro (duration*SampleRate). Ancho de ventana Vs. Amplitud 1 0.8 0.6 0.4 d u t i l p m A
0.2 0
-0.2 -0.4 -0.6
0
2
4
6 8 Ancho de ventana
10
12
14 x 10
4
Figura 2. Voz grabada a 44100 de SampleRate y duración de 3 segundos Una vez realizada la grabación de audio se procedió a cambiar la frecuencia de muestreo; se puede notar que la voz grabada originalmente, es decir, la grabada a 44100 muestras por segundo y a una duración de tres segundos se escucha a una calidad aceptable y no se distorsiona en ningún momento; pero al momento de realizar la primera modificación a la frecuencia de muestreo ya se nota un cambio significativo a la calidad del audio, para eso se procedió a cambiar la frecuencia de muestreo a 70000 muestras por segundo, lo que ahora ocasionara que ahora el audio se escuche como una cinta magnética utilizada en los antiguos cassettes de audio que es reproducida muy rápido, es decir se puede simular una voz muy aguda y rápida, esto quiere decir que se tomaron demasiadas muestras en 3 segundos y por tanto la grabación corre muy rápida ya que el tiempo es muy corto para tomar tantas muestras.
Septiembre de 2011
Práctica 1. Adquisición de señales mediante MatLab
Por otro lado se cambió de igual forma la frecuencia de muestreo a 30000 muestras por segundo, lo cual ocasiona el efecto contrario a aumentar la frecuencia de muestro, esto quiere decir que ahora el audio se vuelve lento, simulando la voz como en cámara lenta. Esto sucede porque se toman muy pocas muestras en 3 segundos y eso ocasiona que el audio de salida se escuche lento y tarde un poco más en reproducirse. Prueba 2 En la segunda prueba se realizó el mismo experimento, sólo que en este caso la grabación del audio se realizó a una frecuencia de muestreo de 5000 muestras por segundo (5 kHz) y a una duración de 2 segundo. La gráfica de tal grabación se puede observar en la figura 3. De igual forma que en el caso anterior el ancho de ventana está determinado por duración*frecuencia de muestro (duration*SampleRate).
Ancho de ventana Vs. Amplitud 1.2
1
0.8
d u t i l p m A
0.6
0.4
0.2
0
-0.2
0
1000
2000
3000
4000 5000 6000 Ancho de ventana
7000
8000
9000
10000
Figura 3. Voz grabada a 5000 de SampleRate y duración de 2 segundos Se puede notar que el audio original grabado a 5000 muestras por segundo y a una duración de 2 segundos tiene una calidad de sonido aceptable, e incluso la grabación suena clara, pero cuando la frecuencia de muestro se aumenta hasta 10000 muestras por segundo, se puede notar que la grabación corre muy rápido debido a las causas explicadas en la prueba 1. Por otro lado cuando se disminuye la frecuencia de muestreo hasta la mitad de la frecuencia a la que fue grabada, es decir 2500 muestras por segundo, se puede escuchar una voz que parecería estar lenta o retardada, las causas de esto fueron igual especificadas en la prueba 1.
Septiembre de 2011
Práctica 1. Adquisición de señales mediante MatLab
Prueba 3 En la tercera y última prueba se grabo un audio a una frecuencia de muestreo de 44100 muestras por segundo (44.1 kHz) y a una duración de 4 segundos. La gráfica de tal grabación se puede mostrar en la figura 4. De igual forma que en los dos casos anteriores el ancho de ventana se encuentra determinado por duración*frecuencia de muestro (duration*SampleRate).
Ancho de ventana Vs. Amplitud 1.2
1
0.8
d u t i l p m A
0.6
0.4
0.2
0
-0.2
0
2
4
6
8 10 Ancho de ventana
12
14
16
18 x 10
4
Figura 4. Voz grabada a 44100 de SampleRate y duración de 4 segundos Se puede notar que en la grabación original de 44100 muestras por segundo y una duración de grabación de 4 segundos, el audio se escucha con una buena calidad, pero cuando la frecuencia de muestreo se cambia al doble, es decir a 88200 muestras por segundo entonces tal grabación se escucha demasiado rápida y simula una voz de “ardilla”.
Para cuando la frecuencia de muestreo se reduce a 22500 muestras por segundos se nota que la grabación tarda más en reproducirse por razones especificadas anteriormente. ATENCION: todas las grabaciones de las pruebas aquí realizadas se enviaran adjuntos con este archivo.
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
Conclusiones
Mediante este trabajo se pudo conocer una de las formas que se tienen para obtener datos analógicos y poder convertirlos a una secuencia de números que pueden ser procesados en la computadora, es decir se realizo una conversión analógica a digital, y posteriormente se realizo una conversión de digital a analógica. La primera de ella sucedió al grabar la voz, al suceder esto la señal analógica determinada en este caso por la voz grabada la cual es una señal continua en el tiempo, se convirtió a una señal digital por medio de la tarjeta de sonido de la computadora, la cual toma determinadas muestras en un segundo para así asignarle cierto número digital a cada valor de tensión que varía en el tiempo. De esta forma es que se realiza la conversión de analógica a digital, se toman muestras de una señal continua para convertirlas a una secuencia de números que posteriormente pueden graficarse y procesarse digitalmente, en este caso mediante una computadora. En la práctica realizada se realizaron grabaciones de audio a una frecuencia de muestreo determinada y posteriormente se fue cambiando tal frecuencia de muestreo para notar como el audio grabado se iba distorsionando y así poder comparar el audio grabado a la frecuencia de muestreo original con el audio a la frecuencia de muestreo modificada. Para esto se aumento y disminuyo la frecuencia de muestreo a tal grado que se notaran distorsiones; de esta forma se pudo observar que cuando se eleva la frecuencia de muestreo a una duración de grabación determinada la grabación corre muy rápida y se nota una voz aguda y rápida por que se toman demasiadas muestran en ese intervalo de tiempo, y cuando se reduce la frecuencia de muestreo se observa el efecto contrario, es decir, la grabación ocurre más lenta de lo habitual y se nota una voz pesada y lenta, y eso sucede porque en ese intervalo de tiempo se toman muy pocas muestras. En general la práctica sirvió para conocer las operaciones básicas para adquirir datos analógicos de alguna fuente (en este caso utilizamos en micrófono de la computadora) y poder convertirlo a una serie de números y así poder procesarlos.
Práctica 1. Adquisición de señales mediante MatLab
Septiembre de 2011
Anexo 1
Programa en MatLab AI = analoginput( 'winsound' ,1); chan = addchannel(AI,1);
AI; duration = 2; %graba por tres segundos para tener un diferente ancho de ventana SampleRate =2500; set(AI,'SampleRate' ,SampleRate); set(AI,'SamplesPerTrigger' ,duration*SampleRate); set(AI,'TriggerType' ,'Manual'); AI;
AI; start(AI); AI; trigger(AI); AI; data = getdata(AI); figure plot (data) xlabel('Ancho de ventana' );ylabel('Amplitud' ); title('Ancho de ventana Vs. Amplitud' ); SOUND(data,SampleRate)
wavwrite(data,SampleRate, 'voz grabada a 10000 de SampleRate y duración de 2 segundos') axis auto wavplay(data,SampleRate) delete(AI) clear AI %borra el contenido de AI
Referencias
Brian D. Storey, “Using the MATLAB Data Acquisition Toolbox”, año de 2002. http://isa.uniovi.es/~ialvarez/Curso/cptr/SonidoMatlab.pdf.