Filtro Pasa bajos de 4 polos
Universidad: UNIVERSIDAD NACIONAL DE CHIMBORAZO Facultad: FACULTAD DE INGENIERIA
TELECOMUNICACIONES Carrera: ELECTRONICA Y TELECOMUNICACIONES Cátedra: ELECTRONICA II Y LABORATORIO Tema: Filtro pasa bajas de 4 polos Nombre: Ángel Vinueza Semestre: Quinto Semestre
septiembre del 2014 Fecha de entrega: 21 de septiembre
2014
Filtro Pasa bajos de 4 polos
2014
UNIVERSIDAD NACIONAL DE CHIMBORAZO
[email protected] Ángel Fernando Vinueza Naranjo RESUMEN: Realizaremos una práctica de
filtros activos en este caso realizaremos un filtro pasa bajos con cuatro polos con el
Simular
el
filtro
en
proteus
y
multisim
operacional LM358
Realizar el barrido de frecuencia en los simuladores
Palabras clave:
DESARROLLO DE LA PRÁCTICA
LM358
Para el desarrollo de la práctica nos pide diseñar un filtro pasa bajos con cuatro polos
Filtro Activo 4 polos
a una frecuencia de 23KHz. Para lo que vamos a emplear la fórmula de la
INTRODUCCION:
frecuencia de corte que es la siguiente.
Los filtros activos son aquellos que se
componen de resistencias, capacitores y de amplificadores operacionales en este caso el
Pero como ya nos da la frecuencia de corte despejamos la resistencia (R) asumiendo un
LM358.
capacitor comercial ya que es más fácil Estos filtros con amplificadores se clasifican
adquirir una resistencia que un capacitor
por su orden o por su número de polos por
despejando
lo que nuestro diseño es de 4 polos.
ecuación.
Se podría decir que si queremos hacer un
filtro de 4 polos deberíamos usar cuatro operacionales.
OBJETIVO GENERAL
Diseñar un filtro activo pasa bajos de cuatro polos.
Objetivos Específicos
Realizar el filtro con una frecuencia de 23 KHz
Lograr el diseño del filtro con una ganancia no mayor a 1.1
obtendremos
la
siguiente
Estas variables vistas en el circuito son las siguientes
Filtro Pasa bajos de 4 polos Vamos a trabajar con un capacitor de 0.1uF
Como
por lo que el valor de la resistencia es.
asumiremos las dos resistencias del mismo
nuestra
ganancia
2014
debe
ser
1
valor en este caso resistencias de 10KΩ
Como
debemos
comercial
una
usar
forma
una fácil
resistencia de
ver
las
resistencias comerciales es ir a multisim en la sección de resistencias y vemos cual se aproxima a la que estamos necesitando
Sacamos la función de transferencia Se sabe que la función de trasferencia es Voltaje de salida (Vo) sobre el Voltaje de entrada (Vi) Entonces nuestra función de trasferencia va hacer
Primer polo
En este caso la que más se aproxima es la
resistencia de 68.1
Segundo polo
Para que en el momento de proceder a ver
en el osciloscopio no se atenuara la señal vamos a realizar el filtro con una ganancia de 1 la que nos determina la ganancia son las
resistencias R1 Y R2 y la formula es
Filtro Pasa bajos de 4 polos
Obtenido nuestros valores procedemos a simular Tomando en cuenta que solo diseñamos el primer polo y los demás vamos solo acoplando
con
los
mismos
resistencias y capacitores
valores
de
2014
Filtro Pasa bajos de 4 polos Procedemos a sacar los diagramas de bode para esto emplearemos MatLab
2014
%Written by Nassim Khaled, Ph.D, 3/23/2014
% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', ...
gui_Singleton,
'gui_OpeningFcn', @Bode_Demo_Lab_OpeningFcn, ... 'gui_OutputFcn', @Bode_Demo_Lab_OutputFcn, ... 'gui_LayoutFcn',
Programación function varargout = Bode_Demo_Lab(varargin) % BODE_DEMO_LAB is a simple example that shows both the time domain simulation and the frequency domain(Bode plot). %The intent is to help the students/Matlab users better understand Bode %plots and make a link between the time doman and frequency domain. %The user is adviced to run this function instead of reading the code. If %the user is interested in understanding how the GUI was created, then I %have added comments to help understand the code. %If the user is trying to read through the code, he/she should go directly %the function slider1_Callback % %Leave comments if you need help or have feedback. %
[] , ...
'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT
% --- Executes just before Bode_Demo_Lab is made visible. function Bode_Demo_Lab_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure
Filtro Pasa bajos de 4 polos
2014
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Bode_Demo_Lab (see VARARGIN)
b=n-a*slider_max; ind=a*slider_value+b; ind=round(ind); w=w_all(ind);
% Choose default command line output for Bode_Demo_Lab handles.output = hObject; % Update handles structure guidata(hObject, handles);
% Definir los parámetros para la entrada A=1; %Amplitud tfinal=20; %tiempo final [seg] t=0:0.0001:tfinal; %rango de tiempo
% UIWAIT makes Bode_Demo_Lab wait for user response (see UIRESUME) % uiwait(handles.figure1);
% Definir la función de transferencia del sistema TF=tf(1,[1 1]);
%%%%%Setup the slider configuration slider_min = get(handles.slider1,'Min'); slider_max = get(handles.slider1,'Max'); set(handles.slider1, 'SliderStep',[1/30 1/30]); set(handles.slider1, 'Value', (slider_max-slider_min)/2); slider_value = get(handles.slider1,'Value');
% Calcula la posición del control deslizante a_w=-2; b_w=2; w_min=10^a_w; w_max=10^b_w; w_all = logspace(a_w,b_w); % Uso logspec para parcelas de frecuencia n=length(w_all); % Interpolar la posición del control deslizante para calcular la frecuencia en base a la posicion% de la corredera a=(n-1)/(slider_max-slider_min);
% Muestra el valor de la frecuencia set(handles.w_Display,'string',nu m2str(w,'%15.10f'));
% Calcular la respuesta del sistema [u,y]=Eval_Output(A,w,t,TF);
% Crear la trama de entrada y su configuración plot(handles.Input_axes,t,u,'Line Width',2) set(handles.Input_axes,'Color','y ') set(handles.Input_axes,'XMinorTic k','on') set(handles.Input_axes,'XLim',[0 tfinal]) set(handles.Input_axes,'YLim',[1.2 1.2]) grid(handles.Input_axes,'on') box(handles.Input_axes,'on') xlabel(handles.Input_axes,'Time[s ec]','FontSize',10) legend(handles.Input_axes,'U(t)') grid on box on % Crear la trama de entrada y su configuración plot(handles.Output_axes,t,y,'Lin eWidth',2) set(handles.Output_axes,'Color',' c') set(handles.Output_axes,'XMinorTi ck','on')
Filtro Pasa bajos de 4 polos
2014
set(handles.Output_axes,'XLim',[0 tfinal]) set(handles.Output_axes,'YLim',[1.2 1.2]) grid(handles.Output_axes,'on') box(handles.Output_axes,'on') xlabel(handles.Output_axes,'Time[ sec]','FontSize',10) legend(handles.Output_axes,'Y(t)' )
axis([10^-2 10^2 -100 2]) % Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuencia semilogx(handles.Magnitude,w,MAG_ w,'ro','LineWidth',2) hold(handles.Magnitude)
% Calcular las magnitudes / Fases del diagrama de Bode en toda la gama de % frecuencias [MAG,PHASE] = bode(TF,w_all);
% Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuencia semilogx(handles.Phase,w_all,PHAS E,'LineWidth',2) set(handles.Phase,'Color','c') grid(handles.Phase,'on') box(handles.Phase,'on') hold(handles.Phase) axis([10^-2 10^2 -100 2])
% Quite dimensiones innecesarias (si existen) if length(size(MAG))==3 MAG=squeeze(MAG); PHASE=squeeze(PHASE); end % Cambio magnitud de dB MAG=20.*log10(MAG); % Calcular las magnitudes / Fases del diagrama de Bode en toda la gama de % frecuencias [MAG_w,PHASE_w] = bode(TF,w); % Quite dimensiones innecesarias (si existen) if length(size(MAG_w))==3 MAG_w=sqeeze(MAG_w); PHASE_w=sqeeze(PHASE_w); end % Cambio magnitud de dB MAG_w=20.*log10(MAG_w); % Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuencia semilogx(handles.Magnitude,w_all, MAG,'LineWidth',2) set(handles.Magnitude,'Color','c' ) grid(handles.Magnitude,'on') box(handles.Magnitude,'on') hold(handles.Magnitude)
% Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuenciaPHASE_w,'ro','LineWidth ',2) hold(handles.Phase)
% --- Outputs from this function are returned to the command line. function varargout = Bode_Demo_Lab_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output;
Filtro Pasa bajos de 4 polos % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
% Calcula la posición del control deslizante slider_value = get(handles.slider1,'Value'); slider_min = get(handles.slider1,'Min'); slider_max = get(handles.slider1,'Max'); set(handles.slider1, 'SliderStep',[1/30 1/30])
% Definir el rango de frecuencias [rad / seg] a_w=-2; b_w=2; w_min=10^a_w; w_max=10^b_w; w_all = logspace(a_w,b_w); %Use logspec for frequency plots n=length(w_all);
% Interpolar la posición del control deslizante para calcular la frecuencia en base a la posicion de la corredera a=(n-1)/(slider_max-slider_min); b=n-a*slider_max;
2014
ind=a*slider_value+b; ind=round(ind); w=w_all(ind); % Muestra el valor de la frecuencia set(handles.w_Display,'string',nu m2str(w,'%15.10f'));
% Definir los parámetros para la entrada A=1; %Amplitute tfinal=23; %Final time [sec] t=0:0.0001:tfinal; %Time range
% Definir la función de transferencia del sistema TF=tf(1,[1 1]);
% Calcular la respuesta del sistema [u,y]=Eval_Output(A,w,t,TF);
% Crear la trama de salida y su configuración plot(handles.Input_axes,t,u,'Line Width',2) set(handles.Input_axes,'Color','y ') set(handles.Input_axes,'XMinorTic k','on') set(handles.Input_axes,'XLim',[0 tfinal]) set(handles.Input_axes,'YLim',[1.2 1.2]) grid(handles.Input_axes,'on') box(handles.Input_axes,'on') xlabel(handles.Input_axes,'Time[s ec]','FontSize',10) legend(handles.Input_axes,'U(t)') grid on box on
% Crear la trama de salida y su configuración plot(handles.Output_axes,t,y,'Lin eWidth',2) set(handles.Output_axes,'Color',' c')
Filtro Pasa bajos de 4 polos set(handles.Output_axes,'XMinorTi ck','on') set(handles.Output_axes,'XLim',[0 tfinal]) set(handles.Output_axes,'YLim',[1.2 1.2]) grid(handles.Output_axes,'on') box(handles.Output_axes,'on') xlabel(handles.Output_axes,'Time[ sec]','FontSize',10) legend(handles.Output_axes,'Y(t)' ) %Display the transfer function image
% Calcular las magnitudes / frecuencia Fases del diagrama de Bode en uno seleccionado [MAG,PHASE] = bode(TF,w_all); % Quite dimensiones innecesarias (si existen) if length(size(MAG))==3 MAG=squeeze(MAG); PHASE=squeeze(PHASE); end % Cambio magnitud de dB MAG=20.*log10(MAG); % Calcular las magnitudes / frecuencia Fases del diagrama de Bode en uno seleccionado [MAG_w,PHASE_w] = bode(TF,w); % Quite dimensiones innecesarias (si existen) if length(size(MAG_w))==3 MAG_w=sqeeze(MAG_w); PHASE_w=sqeeze(PHASE_w); end % Cambio magnitud de dB MAG_w=20.*log10(MAG_w); % Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuencia
2014
semilogx(handles.Magnitude,w_all, MAG,'LineWidth',2) set(handles.Magnitude,'Color','c' ) grid(handles.Magnitude,'on') box(handles.Magnitude,'on') hold(handles.Magnitude) axis([10^-2 10^2 -100 2]) % Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % de la frecuencia seleccionada semilogx(handles.Magnitude,w,MAG_ w,'ro','LineWidth',2) hold(handles.Magnitude)
% Semilog trazar las frecuencias adecuadamente cada década: diagrama de fase para % todo el rango de frecuencia semilogx(handles.Phase,w_all,PHAS E,'LineWidth',2) set(handles.Phase,'Color','c') grid(handles.Phase,'on') box(handles.Phase,'on') hold(handles.Phase) axis([10^-2 10^2 -100 2]) % Semilog trazar las frecuencias adecuadamente cada década: gráfico de magnitud para % todo el rango de frecuencia semilogx(handles.Phase,w,PHASE_w, 'ro','LineWidth',2) hold(handles.Phase)
% --- Executes during object creation, after setting all properties. function slider1_CreateFcn(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
Filtro Pasa bajos de 4 polos % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundCo lor'), get(0,'defaultUicontrolBackground Color')) set(hObject,'BackgroundColor',[.9 .9 .9]); end function [u,y]=Eval_Output(A,w,t,TF) % A=1; A w size(t) TF % TF=tf(1,[1 1]) u=inline('A.*sin(w.*t)'); % t=0:0.1:100; % w=10; % TF=tf(1,[1 1]); [y,t] = lsim(TF,u(A,t,w),t); u=u(A,t,w);
Conclusiones:
El diseño de filtros activos es sencillo ya que tiene una precisión que depende de la tolerancia de sus componentes
2014