X

[:es]Implementacion filtro pasa bajas digital usando aproximación diferencial con Arduino Due[:en]Digital Filter Low Pass un Arduino Due[:]

 

Objetivo: Diseño e Implementar de un filtro pasa bajas digital de 1 orden utilizando la aproximación diferencial a partir de un filtro continuo.

 

A partir de un filtro continuo  pasa bajas de 1 orden

donde wc es la frecuencia de corte en radianes/segundo y usando la aproximación diferencia

se tiene la siguiente función de transferencia en z

usando los siguientes parámetros

 

 

tenemos

cuya ecuación en diferencia es

 

 

La cual tenemos que implementar en arduino

 

Vamos a muestrar la señal a frecuencia de 10 K Hz es decir un periodo  de 100 micro segundos, para hacer un muestra cada ese tiempo vamos a usar la libreria “TimerOne.h”  para generar un interrupción por tiempo cada 100 micro segundos, cada ese tiempo se ejecuta la función muestrea() que toma un valor analógico, lo convierte en digital de 10 bits,    usamos la entrada actual y la salida anterior  en la ecuación en diferencias   para calcular  y[n]  y después  se convierte a 12 bits y se manda al DAC MCP4921

 

Código

#include <DueTimer.h>


float ynant; // señal de salida anterior

 void setup() {

 ynant=0;
 
 analogReadResolution(12); // Configuración de resolución
 analogWriteResolution(12);
 
 Timer3.attachInterrupt(muestrea);
 Timer3.start(100);


}

void muestrea () { // se ejecuta cada 100 us 

float xn=analogRead(A0); //se lee la señal analogica y se convierte en digital de 0 a 1024


float yn=(((0.1257)*xn+ynant)/(1.1257)); // ecuación en diferencias del filtro

 ynant= yn; 

analogWrite(DAC1, yn); // Escribir al DAC la variable valor

}


 

void loop() {

 
 
}
  

 

Es necesario bajar e instalar la libreria de Duetimer.h que es para el manejo de interrupciones temporales para arduino Due.

https://github.com/ivanseidel/DueTimer

 

Diagrama en proteus

 

 

Resultados
Si la señal de entra es de 10 Hz ( debajo de la frecuencia de corte)

 

 

Si la señal de entra es de 200 Hz  ( en la frecuencia de corte)

 

 

Si la señal de entrada es 1000Hz  ( por arriba de la frecuencia de corte)

 

Christian:

View Comments (2)

Related Post