Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo de Practica de Filtro Digital Con Arduino
Ejemplo de Practica de Filtro Digital Con Arduino
Ingeniería Electrónica
Practica No: Filtro Fir con Arduino Due Duración (hrs.): 2 hrs.
Profesor:
Título: Procesamiento digital de señales
M.C. Heraclio Heredia
Integrantes: Ureta.
Lee Fonseca Francisco
Rodríguez Cañedo Pedro
Delgado Cañedo José Manuel
Castro Viedas Juan Carlos
Iribe Soto Víctor Alonso
Flores Pérez Héctor Alejandro
Martínez Zavala Jesús Alberto
Materiales: Equipo:
Arduino Due 3 Generadores de señal
Amplificador Operacional LM324 1 Osciloscopio
2 Fuentes triples
Seguridad e Higiene: Seguir las medidas de seguridad e higiene indicadas en el reglamento
interno del Laboratorio.
Introducción
Donde M+1 corresponde a la longitud del filtro. Este sistema considera sólo las ultimas
M+1 muestras de la señal de entrada y las pondera mediante los coeficientes bk.
A este sistema se le denomina FIR, ya que su respuesta al impulso unitario (dada por los
coeficientes bk) es finita.
Su diseño requiere la selección de la secuencia que mejor representa la respuesta al impulso
de un filtro ideal. Los filtros FIR son siempre estables y son capaces de tener una respuesta
lineal en fase. Frente a los filtros IIR presentan la desventaja de requerir un orden mucho
mayor.
clc
close all
passband_cutoff=1100;
stopband_cutoff=1500;
rbp=0.01;
rsb=0.01;
frecuencia_de_muestreo=8000;
[n, Wn, beta, typ]=kaiserord( [passband_cutoff stopband_cutoff], [1, 0],
[rbp rsb], frecuencia_de_muestreo )
B=fir1(n, Wn, typ, kaiser(n+1, beta), 'noscale')
Fx=0:0.0005:0.5;
f1=100;
f2=1000;
f3=2000;
n1=0:1:1000;
fm=2*f3;
T=1/fm;
figure(1)
H=freqz(B,1,2*pi.*Fx);
plot(Fx*fm,abs(H))
X= 2+ cos((2*pi*(f1/fm)).*n1) + 0.5.*cos((2*pi*(f2/fm)).*n1)+
0.5.*cos((2*pi*(f3/fm)).*n1);
figure(2)
plot(n1,X)
y=filter(B,1,X);
figure(3)
plot(n1,y)
clc
close all
fcuts = [200 900 1100 1900];
devs = [0.01 0.01 0.01];
frecuencia_de_muestreo=8000;
[n, Wn, beta, typ]=kaiserord(fcuts, [0 1 0], devs, frecuencia_de_muestreo)
B=fir1(n, Wn, typ, kaiser(n+1, beta), 'noscale')
Fx=0:0.0005:0.5;
f1=100;
f2=1000;
f3=2000;
n1=0:1:1000;
fm=2*f3;
T=1/fm;
figure(1)
H=freqz(B,1,2*pi.*Fx);
plot(Fx*fm,abs(H))
X= 2+ cos((2*pi*(f1/fm)).*n1) + 0.5.*cos((2*pi*(f2/fm)).*n1)+
0.5.*cos((2*pi*(f3/fm)).*n1);
figure(2)
plot(n1,X)
y=filter(B,1,X);
figure(3)
plot(n1,y)
clc
close all
passband_cutoff=300;
stopband_cutoff=600;
rbp=0.01;
rsb=0.01;
frecuencia_de_muestreo=8000;
[n, Wn, beta, typ]=kaiserord( [passband_cutoff stopband_cutoff], [0, 1],
[rbp rsb], frecuencia_de_muestreo)
B=fir1(n, Wn, typ, kaiser(n+1, beta), 'noscale')
Fx=0:0.0005:0.5;
f1=100;
f2=1000;
f3=2000;
n=0:1:200;
fm=f3*2;
T=1/fm;
H=freqz(B,1,2*pi.*Fx);
figure(1)
plot(Fx*fm,abs(H))
x= 2+ cos((2*pi*(f1/fm)).*n)+ 0.5.*cos((2*pi*(f2/fm)).*n)+
0.5.*cos((2*pi*(f3/fm)).*n);
y= filter(B,1,x);
figure(2)
subplot(211), plot(n.*T,x);
subplot(212), plot(n.*T,y);
Diagrama de conexión.-
Señales generadas:
1.- 100 Hz (1 Vpp)
2.- 1000 Hz (0.5 Vpp)
3.- 2000 Hz (0.25 Vpp)
4.- -2V
Resultados.-
Señal de salida del OpAmp. (contiene las tres frecuencias)
Conclusiones.-
Se logro implementar los tres principales filtros (pasa bajas, pasa bandas y pasa altas) en un
arduino, con el apoyo de software como el matlab se determinaron los coeficientes para cada
filtro, cabe aclarar que el arduino due tiene integrado adc y dac por lo que es mucho más
fácil la implementación de los filtros.