0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« on: January 19, 2012, 12:51:10 pm » |
Buenas a todos me preguntaba si arduino tiene librerías para poder hacer un filtro paso bajo y si hay algun referencia, he buscado pero no he encontrado nada....
EDITO: tras mis recentes pruebas con mi codigo, el cual estaba malo decdi modificar esto y borrar los codigos que habia puesto para evitar confuciones.... se momento me resulta dificil hablar de filtros, cuando no teno ni funional el codigo principal...
un saludo
|
|
|
|
« Last Edit: January 22, 2012, 04:37:34 pm by copachino »
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 12
Posts: 1554
|
 |
« Reply #1 on: January 19, 2012, 02:04:50 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« Reply #2 on: January 19, 2012, 02:15:58 pm » |
bueno mi error por no explicar..... me reeria a un filtro paso bao pero no en hardware sino en software
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 12
Posts: 1554
|
 |
« Reply #3 on: January 19, 2012, 02:17:07 pm » |
ya te he entendido..... y ahí lo tienes!  Mira el apartado "Algorithmic implementation"
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« Reply #4 on: January 19, 2012, 02:23:29 pm » |
jejeje es verdad... como ayer empece a buscar y estaba cerrada la wiki en ingles jajaja, pero bueno vere que sucede con mi código..... a lo mejor en dos dias me tiene diciendo no me funciona ayuda jejeje
EDITO: en c debería quedar algo así no??
double filtropasobajo (double *x, double *y, int M, double xm1) { int n; y[0] = x[0] + xm1; for (n=1; n < M ; n++) { y[n] = x[n] + x[n-1]; } return x[M-1]; }
|
|
|
|
« Last Edit: January 19, 2012, 02:34:46 pm by copachino »
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« Reply #5 on: January 21, 2012, 02:08:50 am » |
pues la verdad me he hecho lios con este filtro no se como agregarlo jejeje cada vez que trato me sale mal(obvio no se lo que hago)
|
|
|
|
« Last Edit: January 22, 2012, 05:14:10 pm by copachino »
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 12
Posts: 1554
|
 |
« Reply #6 on: January 21, 2012, 05:06:11 am » |
¿qué no entiendes del filtro paso bajo? Me refiero a conceptos, nada de código. Seguro que si lo entiendes no tienes problemas de hacerlo con la cantidad de información que hay en internet.
Por cierto, para rpm se suele usar "moving average filter", es decir, tomar ciertas medidas y hacer la media (mejor usar la variable del contador, en vez con el float para mejor rendimiento del código).
|
|
|
|
« Last Edit: January 21, 2012, 06:49:49 am by Igor R »
|
Logged
|
|
|
|
|
Belgium
Offline
Newbie
Karma: 1
Posts: 16
The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt. - Bertrand Russel
|
 |
« Reply #7 on: January 21, 2012, 07:56:59 am » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 2
Posts: 524
|
 |
« Reply #8 on: January 21, 2012, 09:14:49 am » |
Hello doggenj.
First sorry for my bad english. I took a look for your library. I think it's a good idea to do a library for a lot filters. I see you did it only 5 days ago. I hope you continue the development of this library. I think it's very important you do an explanation of your library. Characteristics of Bessel and Chebyshev filters, what is filter order.I don't see any explanation for your library for the functions and parameters ("b" is Bessel filter, "c" is...). Either any explanation in the examples.
For last, in your library I don't see the parameter for the frequency corner. I see it's very important, isn't? And value and filtered are declared as int. Could it be poor for any applications? Could it be better to declare as long or float?
I talk you for you can improve your library because I think it's a great idea.
|
|
|
|
|
Logged
|
|
|
|
|
Donostia
Offline
God Member
Karma: 0
Posts: 680
elektronikadonbosco
|
 |
« Reply #9 on: January 21, 2012, 09:23:11 am » |
Muy interesante, y hay un generador de filtros automáticos por software y todo. El tema de los filtros es muy complicado, yo los conceptos los entiendo pero no consigo que se me ocurra ninguna utilidad salvo la de filtrar frecuencias de audio. ¿A alguien se le ocurre algún ejercicio sencillo donde se pueda implementar los filtros con arduino? Gracias por el link
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 0
Posts: 469
|
 |
« Reply #10 on: January 21, 2012, 09:48:53 am » |
Con cualquier sensor para elminar el ruido ambiente, por ejemplo un sensor de distancias de infrarrojos de estos que se ven tanto, sharp creo que son. Es normal implementar un filtro fir paso bajos para eliminar los picos que puedas tener debido al ruido ambiente y promediar la medida.
Por ejemplo si tienes un programa que hace algo cuando el sensor lee x distancia, se puede disparar debido al ruido, implementando un filtro pasobajos previenes que pase ésto, ya que te comes los picos y promedias las medidas.
Por otro lado meter un filtro de este tipo también te supone meter un retardo en la señal que has de consideras en ciertos sistemas.
|
|
|
|
|
Logged
|
|
|
|
|
Belgium
Offline
Newbie
Karma: 1
Posts: 16
The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt. - Bertrand Russel
|
 |
« Reply #11 on: January 21, 2012, 09:57:11 am » |
(español, con traductor Google) Es una buena idea añadir más información a los ejemplos. He añadido una página wiki, con un poco información básica. http://code.google.com/p/arduino-signal-filtering-library/wiki/SignalFilteringBasics"Int" es de 16 bits en el código de Arduino, ya que el ADC es de 10 bits, esto debería ser suficiente (para algunos de los cálculos es necesaria una mayor precisión) @ionhs: Realmente no se entiende la pregunta, pero un estándar de Arduino no es lo suficientemente rápido para procesar la señal de audio en tiempo real. @JMN: Mi uso principal del filtro de un sensor de distancia :-) (Sharp GP2Y0A21YK IR Distance sensor) ( http://code.google.com/p/gp2y0a21yk-library )
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 12
Posts: 1554
|
 |
« Reply #12 on: January 21, 2012, 10:06:38 am » |
Como JMN, yo creo que el ejemplo más fácil de imaginar es el de medir luz (cualquiera la aplicación que sea, por ejemplo los sensores de distancia, los ldr,etc). A tu alrededor, tienes una gran fuente de ruido.... los 50 Hz de la red eléctrica. Por ejemplo, tus fluorescentes estarán apagandose/encendiendose a dicha frecuencia. Es decir, cuando recojas la medida de tu sensor, tendrás dicho "ruido" añadida a tu medición. Si quieres jugar con ésto, nada mejor que el post que salió en paralelo cuando se estuvo discutiendo por aquí aumentar la frecuencia de muestreo del ADC. Puedes usar el KST a tiempo real para saber que más cosas estas midiendo en la señal adquirida ("frecuencias"). http://arduino.cc/forum/index.php/topic,69995.0.htmlhttp://arduino.cc/forum/index.php/topic,68855.0.htmlhttp://real2electronics.blogspot.com/2011/09/arduino-adc-muestreo-alta-velocidad.htmlSi tienes un ldr, puedes hacer el experimento. Tambien puedes probar a medir con el ldr la luz de una incandescente y en una fluorescente para ver diferencias. El filtro sirve precisamente para quitar(atenuar) la parte que no te interesa medir en la señal adquirida (también hay conceptos como el aliasing, pero sin entrar en detalles). Otro ejemplo, que a lo mejor es fácil de entender, es medir la aceleración de un cuerpo. Pongamos un coche. Instalas un acelerómetro dentro del coche. Lo que te interesa es medir la aceleración del mismo, pero en el sensor no distingue, otras fuentes como las inducidas por la carretera-neumático-suspensión ó la vibración del motor, etc también las medirás. Por ello tienes que eliminar dicho "ruido" de tu señal, ya que no te interesa esos datos para tu aplicación.
|
|
|
|
« Last Edit: January 21, 2012, 10:40:02 am by Igor R »
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« Reply #13 on: January 21, 2012, 11:18:50 am » |
¿qué no entiendes del filtro paso bajo? Me refiero a conceptos, nada de código. Seguro que si lo entiendes no tienes problemas de hacerlo con la cantidad de información que hay en internet.
Por cierto, para rpm se suele usar "moving average filter", es decir, tomar ciertas medidas y hacer la media (mejor usar la variable del contador, en vez con el float para mejor rendimiento del código).
igor ehhh conceptos he leido bastante y los comprendo, pero mi nivel de programacion no esta como para lograr implementarlo.... por ejemplo no tengo idea en que parte debe ir el filtro........ otra cosa es que nose si mi codigo es lo mas rcomendado para la medicion ya que es un poco rustico si me dijeran alguna manera de poder estructurarlo mejor me vendria bien
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 333
UNO
|
 |
« Reply #14 on: January 21, 2012, 11:25:32 am » |
Con cualquier sensor para elminar el ruido ambiente, por ejemplo un sensor de distancias de infrarrojos de estos que se ven tanto, sharp creo que son. Es normal implementar un filtro fir paso bajos para eliminar los picos que puedas tener debido al ruido ambiente y promediar la medida.
Por ejemplo si tienes un programa que hace algo cuando el sensor lee x distancia, se puede disparar debido al ruido, implementando un filtro pasobajos previenes que pase ésto, ya que te comes los picos y promedias las medidas.
Por otro lado meter un filtro de este tipo también te supone meter un retardo en la señal que has de consideras en ciertos sistemas.
bueno lo del retardo de la señal lo he cosiderado, pero creo que es preferible tener un retardo en la señal a tener malas lecturas con el sensor.... claro que me gustaria tener el programa bie estructurado para evtar los mas posible retrasos.... y pues la verdad en lo que necesio ayuda es en eso en poder afnar bien el programa, solo que no quise abrir otro hilo ya que tenia este y pues tengo que evitar hacer un hilo por cada pregunta tonta que me salga..... gracias a todos por conestar leere u poco de lo que me han comentado y vere si puedo hace algo
|
|
|
|
|
Logged
|
|
|
|
|
|