Autor Tema: Luchando contra el ruido POR SOFTWARE  (Leído 144336 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #75 en: 15 de Marzo de 2008, 04:59:47 »
Bueno  ... quizá mi pregunta este más desviada del tema ... pues todos hablan del WDT y el BOR ... mi inquietud es la siguiente ... resulta que en un proyecto de la universidad tuve que usar el archiconocido sensor de distancias SRF08 ... utilicé este sensor para un experimento de control en donde el profesor me dejó como tarea implementar un Ball&Beam ... este es el famoso experimento de inestabilidad de una barra y una bola en donde la idea del control es centrar la bola en la barra inclinando de un lado al otro la barra, el centro de esta barra esta unido al eje de un motor ....

Pues bien ... este sensor SRF08 fue mi pesadilla pues medía bien la posición de la bola, sin embargo, era demasiado ruidoso. Si la bola estaba centrada en 50cm las mediciones del sensor eran: 50, 51, 49, 47, 52 .... y de vez en cuando una medición incorrecta y absurda como 255, en sí, este es un tipo de ruido digital!!! .. Aunque la bola llegaba a centrarse este ruido hacia que la barra vibrara mucho. Mi solución de principiante fue usar controles en donde la acción derivativa no estuviera directamente asociada al sensor, y tambien atenué con algunos filtros IIR.

Sin embargo, mi profesor me recomendó usar un tipo de filtro llamado filtro Kalman o de Kalman .. no sé ... a su explicación me dijo que este filtro es "inteligente" ... uno le da condiciones iniciales y el filtro "aprende" el comportamiento de la señal haciendo que el ruido se atenúe considerablemente ...

Nunca lo implementé pues ya no me daba la cabeza pa' tanta cosa ...  pero me quedó la inquietud ... si alguien ha hecho algo similar o sabe de eso me gustaría oir la experiencia ...

Saludos!




Control Automático, DSP & Microcontroladores

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #76 en: 15 de Marzo de 2008, 06:52:42 »
Me encanta tu pregunta, amigo Blackcat, y no porque tenga una respuesta, que no la tengo, sino porque para gente como yo , sin preparación académica, preguntas como la tuya nos hacen darnos cuenta de lo poco que sabemos y del montón de cosas que podríamos y deberíamos aprender.

Hablas de filtros IIR que tampoco conozco y de otros de denominación incierta que además son "inteligentes". Yo, en mi desconocimiento no he pasado de promediar medidas para quedarme con valores medios ... no se siquiera como se llamará esto que hago ...

Por eso me uno a la pregunta del amigo Blackcat y ruego a los amigos "estudiados" que hagan el favor de iluminarnos con su sapiencia y buen hacer.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #77 en: 15 de Marzo de 2008, 10:01:00 »
Bueno  ... quizá mi pregunta este más desviada del tema ... pues todos hablan del WDT y el BOR ... mi inquietud es la siguiente ... resulta que en un proyecto de la universidad tuve que usar el archiconocido sensor de distancias SRF08 ... utilicé este sensor para un experimento de control en donde el profesor me dejó como tarea implementar un Ball&Beam ... este es el famoso experimento de inestabilidad de una barra y una bola en donde la idea del control es centrar la bola en la barra inclinando de un lado al otro la barra, el centro de esta barra esta unido al eje de un motor ....

Pues bien ... este sensor SRF08 fue mi pesadilla pues medía bien la posición de la bola, sin embargo, era demasiado ruidoso. Si la bola estaba centrada en 50cm las mediciones del sensor eran: 50, 51, 49, 47, 52 .... y de vez en cuando una medición incorrecta y absurda como 255, en sí, este es un tipo de ruido digital!!! .. Aunque la bola llegaba a centrarse este ruido hacia que la barra vibrara mucho. Mi solución de principiante fue usar controles en donde la acción derivativa no estuviera directamente asociada al sensor, y tambien atenué con algunos filtros IIR.

Sin embargo, mi profesor me recomendó usar un tipo de filtro llamado filtro Kalman o de Kalman .. no sé ... a su explicación me dijo que este filtro es "inteligente" ... uno le da condiciones iniciales y el filtro "aprende" el comportamiento de la señal haciendo que el ruido se atenúe considerablemente ...

Nunca lo implementé pues ya no me daba la cabeza pa' tanta cosa ...  pero me quedó la inquietud ... si alguien ha hecho algo similar o sabe de eso me gustaría oir la experiencia ...

Saludos!





Yo tambien como Diego, pertenezco a la gama de los "No Ilustrados", mis conocimientos son escasos respecto a la electronica y al control.
Pero si he leido un ensayo de un participante de AADECA (Asociacion Argentina De Control Automatico) donde habla de la utilizacion del filtro de Kalman o Kaltman (no se como se escribe) para implementarlo en el control automatico de calderas.
Veo si te lo ubico a ver si te sirve... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #78 en: 15 de Marzo de 2008, 10:07:38 »
Bueno, mezcle las cosas.
El cuadernillo practico se llama:

Citar
C.P. Nº 14 El Predictor De Smith y El Filtro De Kalman: Ejemplos De Predicción Y Estimación
Serie 1 - Instrumentación en Separadores de Ensayo

Si te interesa lo escaneo y lo pongo para leer... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #79 en: 15 de Marzo de 2008, 10:08:59 »
Filtro de Kalman para estimar el estado oculto (no medible) de un sistema dinámico lineal ...

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #80 en: 15 de Marzo de 2008, 10:48:58 »
Parece un método de esos unipaso.
Matemática de la fea,aunque si no reuerdo mal,teniendo todos los datos,el cálculo se efectuaba en un solo paso

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #81 en: 15 de Marzo de 2008, 11:04:08 »
Es la primera vez que escucho hablar del Sr. Kalman.

En un proyecto que hice el año pasado obtenía una respuesta muy similar a la tuya. El pic detectaba lo siguente:

123, 123, 124, 122, 124, 123, 123, ... ..., 122, 255, 123, 122, ... ... 122, 123, 123, ...

Al final (el tiempo premiaba y lo tenía que entregar con urgencia) utlicé mis cutres artimañas para salvar al sistema.

Hice una función que se encargaba de ver la diferencia entre medidas (con cierto margen de seguridad) y cuando detectaba algún valor fuera de lo común, símplemente hacía caso omiso del mismo.

Veré a ver que se cuenta Mr. Kalman  :D


Un saludo desde Alicante.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #82 en: 15 de Marzo de 2008, 11:06:24 »
El filtro de Kalman es un filtro adaptativo. Compara el valor estimado con el valor real y así adapta sus constantes para predecir el próximo valor. Tiene unas funciones de predicción y otras funciones de actualización.

Yo, en mi desconocimiento no he pasado de promediar medidas para quedarme con valores medios ... no se siquiera como se llamará esto que hago ...

Es un filtro de media. Si los valores del ruido son muy grandes, se puede utilizar mejor un filtro de mediana.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #83 en: 15 de Marzo de 2008, 11:08:17 »
¿A ,B y C son residuos,Jesus?
¿dependen del sistema?
En la wiki no dice nada

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #84 en: 15 de Marzo de 2008, 11:10:49 »
matrices...a saber que matrices son esas  :?

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #85 en: 15 de Marzo de 2008, 22:53:21 »
Bueno ... la curiosidad me mato .. por ahi me encontré varias implementaciones en MATLAB  ... uno con matemática fea y otro mas simple ... el problema es que los dos filtros tiene como parámetros la varianza Q y R .... ahora no la conozco de mi señal (SRF08) ... sigo igual de perdido!

Bueno, mezcle las cosas.
El cuadernillo practico se llama:

Citar
C.P. Nº 14 El Predictor De Smith y El Filtro De Kalman: Ejemplos De Predicción Y Estimación
Serie 1 - Instrumentación en Separadores de Ensayo

Si te interesa lo escaneo y lo pongo para leer... :mrgreen:

Si no fuera mucha molestia ...

Saludos!
« Última modificación: 15 de Marzo de 2008, 23:00:57 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #86 en: 15 de Marzo de 2008, 23:06:31 »
Se supone que la covarianza es parámetro de una señal aleatoria,o sea,ruido...no le veo sentido usar una caracterización estadística para una señal que no lo sea.
Como en las fórmulas de Kalman,seguramente debas tener por ahí en la caracterización del filtro algún tipo de señal ruido y de ahí que se usen covarianzas,medianas y demás

Desconectado enero0022

  • PIC10
  • *
  • Mensajes: 36
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #87 en: 17 de Marzo de 2008, 23:31:16 »
Tras haber leído con detenimiento el contenido del hilo Hablemos del Ruido y después de haber analizado y entendido los famosos “checkpoints” de Azicuetano, he llegado a la conclusión de que es de vital importancia luchar contra el ruido haciendo un buen diseño de nuestros circuitos y aplicando todas las técnicas posibles en el HARDWARE, pero no es menos importante implementar una serie de protecciones en el SOFTWARE que lo hagan robusto, fuerte e inexpugnable.

Al abrir este hilo pretendo que los que tenéis experiencia en el tema nos contéis cuáles son esos truquillos que cada uno utiliza, con la intención de que aquí vayan saliendo todos ellos y podamos consultarlos en cualquier momento.

Mi experiencia en la lucha contra el ruido es corta, pero para no empezar el hilo sin aportar alguna medida antirruido, hablaré del archiconocido Watchdog. En vez de contarlo yo, os pego el artículo que he extraido de la WikiPIC.



Watchdog
El Watchdog, o "perro guardian" es un concepto de protección usado para volver a reiniciar el programa cuando éste "se pierde" o realiza una acción no prevista.

Es un dispositivo que resetea al micro cada intervalo de tiempo, salvo que el programa le ponga el contador a 0. De esta manera, si el programa se queda colgado en algún sitio, y no refresca al Watchdog, él se encargará de resetear al micro y evitar el cuelgue.

No es extraño que en microelectrónica se den circunstancias de hardware o firmware no previstas por el diseñador en las que un microprocesador se quede en un estado indeterminado del que le sea imposible salir sin una ayuda externa.

El Watchdog lo que hace fundamentalmente es resetear el micro tras un periodo de tiempo determinado. Su funcionamiento es similar a la Interrupción por Desbordamiento de un Timer, que se produce cuando un Timer que es incrementado continuamente pasa de su valor máximo al mínimo para comenzar de nuevo a contar.
En el caso del Watchdog en lugar de saltar una interrupción se genera un reset automático en el momento de producirse dicho desbordamiento.

Pero evidentemente en condiciones normales, nuestro micro funcionando correctamente, no debería producirse dicho reset automático.

Para evitar que el reset se dispare es para lo que aplicamos el restart_wdt(); o sea que "restauramos" el timer del Watchdog, o lo que es lo mismo: lo volvemos a poner a 0 "a mano" y vuelve de nuevo a iniciar su cuenta para acercarse al abismo y amenazarnos con resetear el micro si antes no lo "restauramos" de nuevo.

Un ejemplo tonto:
Configuramos nuestro Watchdog para que salte cada 5 ms, por ejemplo.
Entramos en una rutina que espera a que le lleguen una docena de caracteres vía RS232, y cada vez que le llega uno hace un restart_wdt().
Al recibir el doceavo carácter sale de la rutina y continua su ejecución normal.
Por manos del demonio se nos escapa el hacha que con la que estábamos haciendo juegos malabares y corta accidentalmente el cable de la RS232, justo cuando el PIC había recibido el carácter número 11 de los 12 que esperaba.
Por lo tanto nuestro programa se queda esperando un carácter que nunca le va a llegar, al menos durante el tiempo en que tardemos en sustituir el cable accidentado.

¿Y qué ocurre entonces con el resto de del programa que debía estar funcionando? pues que todo está detenido indefinidamente
.
Pero, para eso está el Watchdog. Como restaurábamos el contador cada vez que recibíamos un carácter y estos iban llegando, uno a uno en su cadencia natural, el Watchdog no se desbordaba y todo iba bien. Pero tras recibir nuestro 11 carácter y quedarse esperando el 12 nadie ha restaurado el Watchdog por lo que este camina, paso a paso, tick a tick, hasta el temible desbordamiento ... y éste se produce indefectiblemente 5 ms después de haber recibido el onceavo carácter.

El PIC se resetea y todo vuelve a comenzar de nuevo.

Si hemos sido lo suficientemente inteligentes como para escribir un 1 en la EEPROM al iniciar la recepción de los susodichos 12 bytes, y teníamos previsto escribir un 0 en la EEPROM en el mismo sitio para indicar que la última recepción de 12 bytes fue un completo éxito tendremos disponible un indicador veraz y seguro de que al reiniciarse nuestro PIC sabremos fehacientemente que la última recepción fue bien o por el contrario se convirtió en un completo, total y rotundo fracaso y, por lo menos, nos tomaremos con precaución el asunto de la RS232.

Nuestro programa podrá seguir su curso evitando los terrenos pantanosos y habilitando los medios para solventar los problemas que nos hemos encontrado.

En estos dias he tenido muchos problemas de ruido en una tarjeta que elabore para una maquina en la empresa que trabajo, por el molesto ruido, por lo tanto me he dedicado a investigar sobre el tema del ruido, por lo cual me encontre con un convertidor dc,dc de 24 volts a 5 volts que reduce demasiado el nivel de ruido, cabe mencionar que la tarjeta la elabore en una tarjeta perforada que tiene mucha similitud con un protoboard creo que el problema esta ahi quisiera saber si alguien me puede orientar sobre las caracteristicas de la misma tarjeta, volviendo al tema del convertidor dc,dc les envio el numero por si alguien le interesa, cabe mencionar que el costo es un poco elevado por eso quisiera que alguien me orientara sobre el detalle de la tarjeta perforada tipo protoboard, el numero del convertidor es el siguiente: ten5-2411

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #88 en: 08 de Julio de 2008, 19:35:40 »
MMMmmmhhhh... caviar del bueno...

Es de obligada lectura, pero, si estamos un poco perros (gandules, vagos) como mínimo leer desde la página 28 hasta la 34.

http://www.freescale.com/files/microcontrollers/doc/app_note/AN2764.pdf?fsrch=1

Con este documento se confirman muchas teorías. Si yo le hubiera hincado el diente a esto hace unos años...  :D  :D  :D cuantos dolores de cabeza me habría ahorrado  :mrgreen:

Espero que disfruteis con esto tanto como lo he hecho yo.


Un saludo desde Alicante.

Desconectado copper

  • PIC10
  • *
  • Mensajes: 2
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #89 en: 23 de Marzo de 2009, 04:15:26 »
MUY muy interesante foro
Estuve leyendo todos los apartados, en estos momentos me encuentro desarrollando un proyecto en una empresa acerca de una automztizacion de control de calidad de cajas de baterias, bueno relatare un poco acerca de lo que se esta haciendo.
La parte de control fue disenada con un pic 16f877 tengo 6 entradas al pic , 4 salidas , y un lcd.
 La idea es que en la fabrica tienen un dispositivo que al colocar la caja sobre una parte metalica y la caja esta defectuosa se produce una rayo de unos 10Kv y se enciende un foco como alarma para identificar el problema.
Ahora si viene el problema la parte de control resiente los efectos cuando esa maquina esta en funcionamiento, he intenantado los capacitores de desacoplo, he pues mi circuito en caja metalica la tierra de mi circuito se ha aislado de la tierra donde se descarga el rayo, he blindado los cables que salen del exterior he puesto optoacopladores  con buffer 74ls245 para inmunizar el ruido pero no he tenido exito  :(  pero leyendo esto de eliminar ruido con software  he visto una buena alternativa espero y me puedan orientar para que mi sistema no se colapse tambien sucede que mi lcd bum se distorciona y se ponen letras que no de donde salen de antemano muchas gracias