0% encontró este documento útil (0 votos)
266 vistas18 páginas

Imforme Proyecto DSP

Este informe describe el diseño, simulación e implementación de un sistema de procesamiento digital de señales para eliminar ruido de señales de audio usando un filtro IIR pasa bajos en Arduino. Primero se generaron señales periódicas en Matlab para simular y probar el filtro, el cual eliminó con éxito la señal de ruido de 60Hz. Luego se adquirió una señal de audio, se analizó en el dominio de la frecuencia y se filtró con un filtro IIR pasa bajos de 40
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Estrategias de Filtrado,
  • Función de Transferencia,
  • Gráficas de Señales,
  • Implementación de Proyectos,
  • Simulación de Filtros,
  • Objetivos del Proyecto,
  • Adquisición de Señales,
  • Técnicas de Simulación,
  • Placa Arduino UNO,
  • Filtrado de Audio
0% encontró este documento útil (0 votos)
266 vistas18 páginas

Imforme Proyecto DSP

Este informe describe el diseño, simulación e implementación de un sistema de procesamiento digital de señales para eliminar ruido de señales de audio usando un filtro IIR pasa bajos en Arduino. Primero se generaron señales periódicas en Matlab para simular y probar el filtro, el cual eliminó con éxito la señal de ruido de 60Hz. Luego se adquirió una señal de audio, se analizó en el dominio de la frecuencia y se filtró con un filtro IIR pasa bajos de 40
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Estrategias de Filtrado,
  • Función de Transferencia,
  • Gráficas de Señales,
  • Implementación de Proyectos,
  • Simulación de Filtros,
  • Objetivos del Proyecto,
  • Adquisición de Señales,
  • Técnicas de Simulación,
  • Placa Arduino UNO,
  • Filtrado de Audio

UNIVERSIDAD NACIONAL DEL ALTPLANO PUNO

Facultad de Ingeniería Mecánica Eléctrica


Electrónica Y Sistemas
Escuela profesional de Ingeniería Electrónica

Procesamiento Digital de Señales


Proyecto: Procesamiento Digital de Señal de Audio usando
Arduino
DOCENTE: David Salinas Mendoza
ESTUDIANTES:
 Fredy Jesus Calcina Quispe (171161)
 Bartolome Roque Roque (170412)
 Bebeto Romario Aquilar Yanapa (170226)
PUNO-PERU
2022-I
Índice

I. Introducción ................................................................................................................................ 3
II. Resumen ...................................................................................................................................... 3
III. Objetivos ................................................................................................................................. 3
1. Objetivo General ..................................................................................................................... 3
2. Objetivos Específicos ............................................................................................................... 3
IV. Metodología ............................................................................................................................ 4
1. Trabajando con la señal Periódica........................................................................................... 4
2. Trabajando con la señal de Audio ........................................................................................... 9
V. Conclusiones.............................................................................................................................. 15
VI. Anexos ................................................................................................................................... 15
1. Programación en Matlab ....................................................................................................... 15
1.1 Programación de Señal de prueba ................................................................................ 15
1.2 Programación de Transformada de Fourier .................................................................. 15
1.3 Programación de Filtro IIR pasa bajos ........................................................................... 16
1.4 Programación de comparación de graficas ................................................................... 16
1.5 Programación de Transformada de Fourier de señal filtrada ....................................... 16
1.6 Programación de señal de audio ................................................................................... 17
2. Programación en Arduino IDE ............................................................................................... 17

P á g i n a 2 | 18
I. Introducción

El procesamiento digital de señales o DSP (Digital Signal Processing) es la manipulación


matemática de una señal de información para modificarla o mejorarla en algún
sentido, esto se consigue llevando la señal en tiempo discreto en el dominio de
frecuencia discreta.
Arduino UNO es una placa de desarrollo basada en el microcontrolador Atmega328p,
equipada con conjuntos de pines de E/S digitales y analógicas que pueden conectarse
a varias placas de expansión y otros circuitos, la cuales son los encargados de realiza la
lectura de datos como señales de audio,
Al hacer procesamiento de audio, se debe de pensar en un sistema con dos etapas, la
etapa de adquisición de la señal y la etapa de procesamiento.

II. Resumen

En este informe se realizó el diseño, simulación e implementación de un sistema para


el procesamiento digital de señales, dicho sistema será diseñado y simulado en el
software Matlab e implementado en el procesador Atmega 328p que se encuentra en
Arduino UNO, la implementación del sistema será un filtro IIR encargado de eliminar el
ruido del audio que se obtendrá mediante un sensor de audio y se procesara en el
Arduino para obtener un audio limpio de ruido, para esto se harán 2 análisis.

Primero trabajaremos solo en Matlab generando una señal periódica de 4Hz y una
señal que fungirá como ruido de 60Hz, para esto diseñaremos un filtro IIR pasa bajo de
grado 5 con una frecuencia de corte de 40Hz que solo permita el paso de señales
menores a esta y elimine las señales mayores a 40Hz, este filtro será implementado
solo como simulación y conocer bien el funcionamiento de el filtro IIR.

Como Segundo paso, tendremos el diseño en Matlab e implementación de un filtro IIR


pasa bajo de grado 5 con una frecuencia de corte de 40Hz para el procesamiento de
audio, dicha señal será adquirida por un sensor de sonido conectado a Arduino, ya que
en el Arduino la señal será filtrada que finalmente deberá de salir libre de ruido

III. Objetivos

1. Objetivo General

 Diseñar, Simular e implementar un filtro IIR pasa bajo para señales periódicas
y señales de audio.

2. Objetivos Específicos

 Eliminar el ruido presente en las señales de audio adquiridas mediante el uso


de un micrófono.
 Determinar el grado de funcionamiento óptimo de nuestro filtro

P á g i n a 3 | 18
IV. Metodología

1. Trabajando con la señal Periódica

Empezamos generando señales periódicas funcionen como señal principal y señal


de ruido de 4Hz y 60hz respectivamente:

P á g i n a 4 | 18
Procedemos a aplicar la transformada de Fourier para graficar el espectro de
frecuencias encontradas en la señal generada anteriormente:

P á g i n a 5 | 18
Diseñamos el filtro IIR estableciendo la frecuencia de corte en 40Hz y definiendo el
grado del filtro, en este caso de de grado 5.

Filtramos la señal ruidosa establecida al inicio y observamos que nuestro filtro


elimino el ruido de 60Hz.

P á g i n a 6 | 18
Para comprobar que el filtro funciono graficamos la señal filtrada y su
transformada de Fourier, y podemos observar que la señal de ruido de 60Hz
disminuyo significativamente.

P á g i n a 7 | 18
Des esta simulación, podemos sacar datos como la función de transferencia que
usaremos para llevarlo a transformada Z y así poder implementarlo con Arduino

Este primer procedimiento se hizo con el objetivo de probar el filtro diseñado y así
experimentar con señales periódicas

P á g i n a 8 | 18
2. Trabajando con la señal de Audio

Comenzamos con la obtención de la señal de audio en Matlab para su respectivo


procesamiento:

Después de la obtención de la señal se pasará a graficar la transformada de


Fourier de dicha señal de audio para poder observar el comportamiento que
presenta en el espectro de frecuencia:

P á g i n a 9 | 18
Se observa que el ruido se encuentra en las frecuencias altas, Para lo cual
crearemos un filtro IIR de grado 2 CON UNA FRECUENCIA DE CORTE DE 40hz.

P á g i n a 10 | 18
A continuación, se puede observar el audio original y el audio filtrado
respectivamente:

P á g i n a 11 | 18
Para finalizar graficamos el audio filtrado y su espectro de frecuencia, y podemos
observar que el filtro funciono correctamente

P á g i n a 12 | 18
Sabiendo que el filtro funcionó, procederemos a la obtención de la función de
transferencia para poder implementarlo en Arduino.

Teniendo la función de transferencia en el plano Z se procedera al reemplazo de


los coeficientes como se muestra:

𝑏0 𝑧 5 + 𝑏1 𝑧 4 + 𝑏2 𝑧 3 + 𝑏3 𝑧 2 + 𝑏4 𝑧1 +𝑏5
𝐻(𝑧) =
𝑧 5 + 𝑎1 𝑧 4 + 𝑎2 𝑧 3 + 𝑎3 𝑧 2 + 𝑎4 𝑧1 + 𝑎5

Reemplazar en la siguiente ecuación para implementar en Arduino IDE

𝑦[𝑛] = 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2) + ⋯ + 𝑏0 𝑥(𝑛) + 𝑏1 𝑥(𝑛 − 1)

Teniendo la ecuación ya preparada se procedera a la programación en Arduino IDE

P á g i n a 13 | 18
Para la adquisición de la señal de audio usaremos un micrófono como se muestra
en la figura y se conectar en A0 de nuestro Arduino UNO:

En el Serial Plotter de Arduino graficamos señal de audio inicial y la señal de audio


filtrada, y podemos observar como el ruido disminuye considerablemente

Vemos que el filtro funciona correctamente la señal de color azul representa la


señal de entrada mientras que la señal de color rojo representa la señal filtrada.

P á g i n a 14 | 18
V. Conclusiones

 Para el diseño e implementación se debe de considerar la frecuencia de corte


de los filtros pasa bajos.
 Se logró eliminar el ruido de la señal de audio aplicando el filtro IIR pasa bajos
ya que el ruido está presente en frecuencias altas.
 El grado del filtro es muy importante ya que este definirá que tan bien
funcionara nuestro filtro.

VI. Anexos

1. Programación en Matlab

La programación en Matlab se dividen en 6 programas distintos

1.1 Programación de Señal de prueba

clear all
close all
clc
f1=60;
f4=4;
fs=14400;
t=0:(1/fs):1-(1/fs);
x1= 0.2*sin(2*pi*f1*t);
x2= 0.2*sin(2*pi*f4*t);
x=x1+x2;
subplot(3,1,3)
plot(t,x)
title('Signal de 4Hz con ruido de 60Hz');
grid
hold on
subplot(3,1,1)
plot(t,x2,'r')
title('Signal original de 4Hz')
subplot(3,1,2)
plot(t,x1,'r')
title('Signal de ruido de 60Hz')

1.2 Programación de Transformada de Fourier

Xk=abs(fft(x));
L=length(Xk);
Xk2=Xk(1:L/2);
Xk2=Xk2/max(Xk2);
F=fs*(1:(L/2))/L;
n=length(x);
P á g i n a 15 | 18
t=n/fs;
Ts=1/fs
tiempo=(0:Ts:(t-Ts));
figure
g1=subplot(2,1,1)
plot(tiempo,x,'b');
title('Senal de Audio capturada, en el dominio del tiempo');
xlabel('Tiempo s');
ylabel('Amplitud');
g2=subplot(2,1,2)
plot(F,Xk2);
title('Espectro de Frecuencia ' );
xlabel('Frecuencia en Hz');
ylabel('Amplitud');
grid(g2,'on');
xlim([0 70])

1.3 Programación de Filtro IIR pasa bajos

Fc=40;
Wn=Fc/(fs/2);
N=5;
[num,den]=butter(N,Wn,'low');

1.4 Programación de comparación de graficas

y=filter(num,den,x);
figure
subplot(3,1,1)
plot(x)
title('Signal con ruido')
grid
subplot(3,1,2)
plot(y)
title('Signal filtrada con un firtro IIR de orden 5');
grid

1.5 Programación de Transformada de Fourier de señal filtrada

Xk=abs(fft(y));
L=length(Xk);
Xk2=Xk(1:L/2);
Xk2=Xk2/max(Xk2);
F=fs*(1:(L/2))/L;
n=length(x);
t=n/fs;

P á g i n a 16 | 18
Ts=1/fs
tiempo=(0:Ts:(t-Ts));
figure
g1=subplot(2,1,1)
plot(y,'b');
title('Signal capturada, en el dominio del tiempo');
xlabel('Tiempo s');
ylabel('Amplitud');
g2=subplot(2,1,2)
plot(F,Xk2);
title('Espectro ' );
xlabel('Frecuencia en Hz');
ylabel('Amplitud');
grid(g2,'on');
xlim([0 100])

1.6 Programación de señal de audio

a=audiorecorder;
recordblocking(a,2);
play(a);
x=getaudiodata(a);

2. Programación en Arduino IDE

float x[] = {0,0};


float y[] = {0,0};
int k = 0;

void setup() {
Serial.begin(115200);
}

void loop() {

x[0] = analogRead(A0);
x[0] = x[0];

float b[] = {4.921e-11, 2.46e-10, 4.921e-10, 4.921e-10, 2.46e-10, 4.921e-11};


float a[] = {-4.944, 9.776, -9.666, 4.779, -0.9451};

y[0] =
a[0]*y[1]+a[1]*y[2]+a[2]*y[3]+a[3]*y[4]+a[4]*y[5]+b[0]*x[0]+b[1]*x[1]+b[2]*x[2]+
b[3]*x[3]+b[4]*x[4]+b[5]*x[5];

P á g i n a 17 | 18
if(k % 3 ==0)
{
//Señal azul
Serial.print(x[0]);
Serial.print(" ");
//Señal roja
Serial.println(y[0]);
}
delay(1);
x[1] = x[0];
y[1] = y[0];
k = k+1;
}

P á g i n a 18 | 18

También podría gustarte