Anda di halaman 1dari 7

FILTRO DIGITAL PASA BAJOS

OBJETIVO.-
El objetivo de este proyecto es el de implementar un filtro digital pasa bajos con un
micro controlador, en el cual primero se realizara la transformación de analógico a
digital y posteriormente se usara la transformada G(z) de un filtro pasa bajos en
su forma de ecuaciones en diferencia G(k). Los valores G(k) obtenidos serán
nuevamente convertidos a señal analógica, pero esta ya estará debidamente
filtrada.

MARCO TEORICO.-
FILTRO DIGITAL.-
Un filtro es un sistema o una red que cambia selectivamente la forma de onda, o
las características amplitud-frecuencia o fase-frecuencia de una manera deseada.
Los objetivos comunes del proceso de filtrado son mejorar la calidad de la señal,
por ejemplo removiendo o atenuando el nivel de ruido, extrayendo información de
dos o más señales previamente combinadas para hacer uso eficiente de un canal
de comunicación, etc. Un filtro digital es un algoritmo implementado en hardware
y/o software que opera sobre una señal de entrada digital (discreta en tiempo y
cuantizada en amplitud) y genera una señal digital de salida, con la finalidad de
efectuar un proceso de filtrado. El término “filtro digital” se refiere al hardware o
software específico que ejecuta el algoritmo. Los filtros digitales trabajan sobre
valores numéricos asociados a muestras de esas señales analógicas previamente
digitalizadas por conversores A/D o simplemente sobre un conjunto de números
almacenados en la memoria de una computadora o microprocesador.

VENTAJAS DE UN FILTRO DIGITAL.-


Los filtros digitales juegan un papel muy importante en el procesamiento digital de
señales. En gran número de aplicaciones, como compresión de datos,
procesamiento de señales biomédicas, procesamiento de señales de voz,
procesamiento de imágenes, transmisión de datos, audio digital, cancelamiento de
ecos telefónicos, se prefieren por sobre los filtros analógicos por uno o más de los
siguientes motivos:
-Los filtros digitales pueden tener características que son imposibles de conseguir
con filtros analógicos, como por ejemplo una respuesta de fase exactamente
lineal.
-El desempeño de los filtros digitales no varía con las condiciones ambientales
(temperatura, humedad, etc.) como sí ocurre con los filtros analógicos, lo que
elimina la necesidad de calibrarlos periódicamente.
-Si el filtro se implementa utilizando un procesador programable la respuesta en
frecuencia de un filtro digital puede ajustarse a voluntad (filtrado adaptivo).
-El mismo filtro puede procesar varias señales o canales de entrada sin necesidad
de
Replicar el hardware.
-Las señales filtradas y sin filtrar pueden almacenarse para uso o análisis
posterior.
-Los avances en las técnicas de integración VLSI hacen que sea posible fabricar
filtros
Digitales pequeños, de bajo consumo, y de muy bajo costo.
-Se pueden lograr atenuaciones que excedan los 60 o 70 dB en la banda de
rechazo
-El desempeño de los filtros digitales es repetible de unidad a unidad.
-Los filtros digitales pueden utilizarse a muy bajas frecuencias, como las que se
encuentran en aplicaciones biomédicas, donde el empleo de filtros analógicos es
poco práctico por los valores muy elevados de los componentes pasivos
involucrados (capacitores, inductancias). Además, los filtros digitales pueden
trabajar sobre un amplio rango de frecuencias simplemente cambiando la
frecuencia de muestreo.

DESVENTAJAS.-
-Limitación de frecuencia. La frecuencia de Nyquist –que fija el ancho de banda útil
Que el filtro puede procesar– queda definida por el proceso de conversión
(tiempos
De conversión del conversor A/D y D/A), velocidad del procesador, cantidad de
operaciones a ejecutar por unidad de tiempo, etc. Este último término se
incrementa a medida que aumenta la exigencia de las características de respuesta
del filtro (filtros muy abruptos).
-Efectos de longitud finita de palabra. En general, los coeficientes del filtro
implementado
Serán distintos de los calculados teóricamente si la representación numérica que
Se utiliza para implementar el filtro no es de precisión infinita (punto flotante). No
sólo influye la cuantización de los coeficientes del filtro, sino también el redondeo
de las operaciones numéricas, la cuantización del conversor A/D y D/A, la
truncación que ocurre al almacenar los contenidos del acumulador en memoria,
etc. Estos efectos, que se modelan como fuentes de ruido de distribución
uniforme, pueden limitar seriamente el desempeño de los filtros digitales:
variaciones de ganancia en la banda de paso, menor atenuación en la banda de
rechazo, y hasta pueden conducir a la inestabilidad en filtros recursivos de orden
elevado.
-Tiempos de diseño y desarrollo prolongados. Los tiempos de diseño y desarrollo
de un filtro digital, en especial el diseño del hardware puede ser muy superior al
necesario para el diseño de un filtro analógico. Sin embargo, una vez que se
dispone del hardware o el software necesario, la misma plataforma puede
utilizarse para muchas otras tareas de filtrado o procesamiento digital de señales
con poca o ninguna modificación.

FILTRO BUTTERWORTH.-
El filtro de Butterworth es uno de los filtros electrónicos más básicos, diseñado
para producir la respuesta más plana que sea posible hasta la frecuencia de corte.
En otras palabras, la salida se mantiene constante casi hasta la frecuencia de
corte, luego disminuye a razón de 20n dB por década (ó ~6n dB por octava),
donde n es el número de polos del filtro.
Según lo mencionado antes, la respuesta en frecuencia del filtro es
extremadamente plana (con mínimas ondulaciones) en la banda pasante. Visto en
un diagrama de Bode con escala logarítmica, la respuesta decae linealmente
desde la frecuencia de corte hacia menos infinito. Para un filtro de primer orden
son -20 dB por década (aprox. -6dB por octava).
El filtro de Butterworth es el único filtro que mantiene su forma para órdenes
mayores (sólo con una caída de más pendiente a partir de la frecuencia de corte).
-15V DAC pin 1 y 2 = GND
DAC pin 13 = VCC ARD1
CONVERSOR
3 12 0 RX
VEE A8 PD0/RXD A5
1 TX PC5/ADC5/SCL
16 11 PD1/TXD A4

DIGITAL (~PWM)
COMP A7 2 PC4/ADC4/SDA
10 PD2/INT0 A3
A6 3 PC3/ADC3

ANALOG IN
~
0.01uF 4 9 PD3/INT1 A2
IOUT A5 4 PC2/ADC2
8 PD4/T0/XCK A1
A4

ATMEGA328P-PU
5 ~ PC1/ADC1
15 7 PD5/T1 A0 INPUT
5k VREF- A3 6 ~ PC0/ADC0
6 PD6/AIN0
A2 7
14 5 PD7/AIN1
VREF+ A1

1121
+5V 8
GND DAC0808 PB0/ICP1/CLKO
9 ~
PB1/OC1A
10 ~
PB2/SS/OC1B
5k 11 ~
PB3/MOSI/OC2A
12 RESET
PB4/MISO
5k 13
PB5/SCK
-15V
AREF
4
5
2
6
3
ARDUINO UNO R3
+88.8

7
1
LF351 Volts
GND
CIRCUITO.-

+15V
GND
Diseñando el filtro de Butterworth con los siguientes datos:

𝑘1 = −3 𝑑𝐵 𝐴𝑡𝑒𝑛𝑢𝑎𝑐𝑢ó𝑛 𝑎𝑙 𝑙𝑙𝑒𝑔𝑎𝑟 𝑎 𝑤𝑐
𝑘 2 = −20 𝑑𝐵 𝐴𝑡𝑒𝑛𝑢𝑎𝑐𝑖ó𝑛 𝑎𝑙 𝑙𝑙𝑒𝑔𝑎𝑟 𝑎 𝑤𝑟
𝑟𝑎𝑑 𝑟𝑎𝑑
𝑤𝑐 = 2𝜋𝑓𝑐 = 2𝜋 · 1000 = 2000𝜋 𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑐𝑜𝑟𝑡𝑒
𝑠 𝑠
𝑟𝑎𝑑 𝑟𝑎𝑑
𝑤𝑟 = 2𝜋𝑓𝑟 = 2𝜋 · 4000 = 8000𝜋 𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑟𝑒𝑐ℎ𝑎𝑧𝑜
𝑠 𝑠

Aplicando la predeformación por aplicar aproximación trapezoidal:


2 𝑤𝑐 𝑇𝑠 2 2000𝜋 · 25 · 10−6 𝑟𝑎𝑑
𝑤𝑐∗ = 𝑇𝑎𝑛 = −6 𝑇𝑎𝑛 ( ) = 6296,136
𝑇𝑠 2 25 · 10 𝑠 2 𝑠
2 𝑤𝑟 𝑇𝑆 2 4000𝜋 · 25 · 10−6 𝑟𝑎𝑑
𝑤𝑟∗ = 𝑇𝑎𝑛 = −6 𝑇𝑎𝑛 ( ) = 12777.748
𝑇𝑠 2 25 · 10 𝑠 2 𝑠
Determinando el orden:
𝑘1
10−10 − 1
𝐿𝑜𝑔 ( 𝑘 )
− 2
10 10 −1 𝐿𝑜𝑔(10−0.3 − 1)
𝑛= 𝑤 = 1 = 1,66 ≈ 2
2𝐿𝑜𝑔 ( 𝑐 ) 2𝐿𝑜𝑔 ( )
𝑤𝑟 4
Necesitamos un filtro de orden 2.
𝑤 ∗2 3,96413 · 107
( )
𝐻 𝑠 = 2 2 =
𝑠 + √2 𝑤𝑐∗ 𝑠 + 𝑤𝑐∗ 𝑠 + 8909,098𝑠 + 3,96413 · 107
2

Haciendo la trasformación por aporximación trapezoidal:


2 𝑧− 1 𝑧 −1
𝑠= ( ) = 80000
𝑇𝑠 𝑧 + 1 𝑧 +1
3,96413 · 107
𝐻(𝑧) = 2
𝑧 −1 𝑧 −1
6,4 · 109 ( ) + 7,12728 · 108 + 3,96413 · 107
𝑧 +1 𝑧 +1
3,96413 · 107 (𝑧 2 + 2𝑧 + 1)
𝐻(𝑧) =
7,15236 · 107 𝑧 2 − 1,27207 · 1010 𝑧 + 5,72691 · 109

0,005424 + 0,01108z −1 + 0,005424z −2


H(z) =
1 − 1,77853z −1 + 0,8007z −2

Obtenemos la ecuación en diferencia:

y(k) = 0,005424x(k) + 0,01108x(k − 1) + 0,005424x(k − 2) + 1,77853y(k − 1)


− 0,8007x(k − 2)
PROGRAMACIÓN:

#include <math.h>

// definimos variables

float Vi = 0.0;

float Vo = 0.0;

float Vi_1 = 0.0;

float Vi_2 = 0.0;

float Vo_1 = 0.0;

float Vo_2 = 0.0;

// variable a filtro de primer orden

double a = 0.1116352117;

double b = 1- a ;

// lo sgte es para establecer una frecuencia de muestreo mayor que la que normalmente usa el
arduino

const unsigned char PS_2 = (1 << ADPS0);

const unsigned char PS_4 = (1 << ADPS1);

const unsigned char PS_8 = (1 << ADPS1) | (1 << ADPS0);

const unsigned char PS_16 = (1 << ADPS2);

const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);

const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);

const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

void setup()

DDRD = 0xFF;//port d (digital pins 0-7) all outputs


// set up ADC

ADCSRA &= ~PS_128;

// Configuracion tiempo de muestreo:

ADCSRA |= PS_4; // aqui se coloca el prescaler que se quiere usar

void loop()

Vi = analogRead(0)/4;

//Vo = 0.0014603163 * Vi + 0.002920632612 * Vi_1 + 0.0014603163 * Vi_2 + 1.88903308 * Vo_1


- 0.8948743452 * Vo_2; // ecuacion en diferencia filtro 2do orden f de corte 500 hz

//Vo = 0.0054240 * Vi + 0.01108 * Vi_1 + 0.0054240 * Vi_2 + 1.77853 * Vo_1 - 0.80070 * Vo_2;
// ecuacion en diferencia filtro 2do orden f de corte 1 khz

Vo = a * Vi + b * Vo; // para filtro 1er orden f corte 500 hz (aqui se usa el coeficiente a)

PORTD = Vo; // salida por el puerto D

// actualizamos valores

Vo_2 = Vo_1;

Vo_1 = Vo;

Vi_2 = Vi_1;

Vi_1 = Vi;

Anda mungkin juga menyukai