Ejemplo de modelado del comportamiento dinámico de un altavoz
1. Ejemplo de modelado del
comportamiento dinámico de un
altavoz
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:
Diagrama de bloques del altavoz
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:
1. Define los valores de los parámetros (número de espiras, intensidad
del campo, etc.)
2. Define a partir de ellos la función de transferencia del sistema
3. Dibuja la respuesta impulsional
4. Dibuja la respuesta en frecuencia del altavoz (diagrama de Bode)
5. Simula el altavoz para una señal de entrada va(t) procedente de un
archivo de audio.
2. Señal de entrada, sistema y señal de salida.
Instrucciones para ejecutarlo
1. Descarga el siguiente Archivo de sonido y guárdalo en el
directorio de Matlab en el que estés trabajando
2. 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)
3. 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,
4. % 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);