Ejemplo de modelado del comportamiento dinámico de un altavoz
De ISAwiki
Este ejemplo se basa en el ejemplo 2.9 de Franklin (pp. 39-41). Implementamos en Matlab el modelo desarrollado en el libro, con ligeras modificaciones: introdujimos una doble derivada para considerar como salida la presión instantánea del aire (proporcional a la aceleración en lugar de la posición x), ya que el sonido, en realidad, lo producen variaciones instantáneas de presión. El diagrama de bloques del altavoz es el siguiente:
Teniendo esto en cuenta, se simula el sistema utilizando el comando lsim ("linear simulation") que aplica la función de transferencia del altavoz a una señal de entrada obtenida de un archivo de sonido en formato wav. El script hace lo siguiente:
- Define los valores de los parámetros (número de espiras, intensidad del campo, etc.)
- Define a partir de ellos la función de transferencia del sistema
- Dibuja la respuesta impulsional
- Dibuja la respuesta en frecuencia del altavoz (diagrama de Bode)
- Simula el altavoz para una señal de entrada va(t) procedente de un archivo de audio.
- Instrucciones para ejecutarlo
- Descarga el siguiente Archivo de sonido y guárdalo en el directorio de Matlab en el que estés trabajando
- Copia y pega el siguiente código en la línea de comandos para ver los resultados inmediatamente, o mejor aún mételo en un archivo *.m (script) para jugar con él y explorar distintas posibilidades.
% EJEMPLO DE MODELADO DE UN SISTEMA ELECTROMECÁNICO: ALTAVOZ % % Modelado y simulación de un altavoz basado en el ejemplo 2.9 de % "Feedback Control of Dynamic Systems", Franklin et al 5ª ed. % % % Análisis Dinámico de Sistemas (Teleco) % EPS de Ingeniería de Gijón % Área de Ingeniería de Sistemas y Automática % Universidad de Oviedo clear; close all; % MODELO MATEMATICO DE UN ALTAVOZ % Parametros del nucleo y la bobina N = 20; % Numero de vueltas del cable arrollado sobre el nucleo d = 0.02; % Diametro del nucleo (metros) B = 0.5; % Campo magnetico del nucleo (tesla) % Parametros del cono M = 0.01; % Masa equivalente del cono (kg) b = 0.1; % Friccion viscosa equivalente (del aire) (Nw/(m/s)) % Parametros del circuito exterior L = 0.01; R = 1; l = N*2*pi*(d/2); % Longitud total del cable % Funciones de transferencia de los subsistemas s = tf([1 0],1); Kf = B*l; Altavoz = 1/(M*s + b); % fdt de la membrana y núcleo del altavoz (parte mecánica) Kb = B*l; Circuito = 1/(L*s + R); % fdt del circuito eléctrico del arrollamiento (parte eléctrica) % Funcion de transferencia entre tensión aplicada y posición de la membrana G_xv = feedback(Circuito*Kf*Altavoz,Kf)/s; % Función de transferencia entre tensión y presión de salida G_pv = G_xv*s^2; % añadimos dos ceros en el origen % porque el sonido está relacionado % con la "presión", que es % proporcional a la "aceleración" % de la membrada del altavoz. % REPRESENTACIÓN DE LA RESPUESTA IMPULSIONAL figure(1); impulse(G_pv); title('Respuesta impulsional del altavoz'); % RESPUESTA EN FRECUENCIA DEL ALTAVOZ figure(2); bode(G_pv); title('Respuesta en Frecuencia (Bode) del altavoz)'); % SIMULACIÓN DEL COMPORTAMIENTO DEL ALTAVOZ CON SONIDO REAL [entrada,fs] = wavread('ADS.wav'); % entrada = onda de sonido, % fs = frecuencia de muestreo ts = 1/fs; % periodo de muestreo = 1 / frecuencia de muestreo N = length(entrada); t = 0:ts:ts*(N-1); % Generamos vector de tiempos con N % instantes separados ts segundos cada uno salida = lsim(G_pv,entrada,t)'; % Aplicamos fdt del altavoz para obtener % la presión instantánea del aire (sonido) % SONIFICACIÓN DE LA SEÑAL ORIGINAL Y LA REPRODUCIDA POR EL ALTAVOZ disp('Sonando la señal original...'); soundsc(entrada,fs); pause(1); disp('Sonando la señal reproducida por el altavoz'); soundsc(salida,fs);