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 \ddot x 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:

(thumbnail)
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.


(thumbnail)
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)
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);                                        
Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Tipos de páginas
Bloques temáticos
Herramientas