Eliminación de ruido digital en el software

7

Tengo un diseño que espera una onda cuadrada de nivel TTL de un receptor de radio que se alimenta a un microcontrolador. Hay algo de ruido de nivel TTL ya que no se realiza ninguna codificación en el extremo de transmisión. Me preguntaba si alguien tenía alguna indicación sobre cómo reducir el ruido en el software. (Entiendo que hay varias soluciones de hardware, pero me interesa más aprender) No busco a nadie que me resuelva el problema, solo un consejo.

¡Los nombres / artículos / temas serían geniales!

    
pregunta penjuin

5 respuestas

8

A partir de su último comentario, sugeriría un exceso de muestreo de la entrada. Registre varias muestras consecutivas, y luego su salida debe ser cualquiera que sea la mayoría de las muestras registradas.

Por ejemplo, digamos que grabas 10 muestras. Si obtiene un pico de ruido, solo una o dos de las muestras se corromperán, mientras que la mayoría de ellas son el valor correcto. Si obtiene datos reales, finalmente el 1s superará en número a los 0 y la salida cambiará.

    
respondido por el ajs410
6

Hay muchas formas de trabajar con el ruido en el software, y cada vez son más efectivas de implementar en el software en lugar del hardware, lo que reduce el costo del sistema.

En lugar de intentar explicarlo yo mismo, le pasaré a Jack Ganssle , un consultor de sistemas integrados que tengo crecido a partir de la lectura de los artículos de.

Tiene una lista de sus artículos en línea, el primero que me gustaría que hiciera es sobre ruido analógico en sistemas integrados . El segundo artículo al que tengo que vincularlo es sobre usar software para reducir el ruido en su sistema .

También sugeriría su artículo en suavizar las entradas digitales y sistemas de autocalibración . Después de dedicar tiempo a trabajar con sistemas integrados, recogí parte de esta información de mis propios errores, pero realmente disfruté leyendo su forma de pensar. El sistema de autocalibración fue muy obvio para mí, pero la forma en que sugirió hacerlo fue valiosa para mí. Puede que no necesite la información, pero sus artículos me han ayudado.

    
respondido por el Kortuk
5

Descubrí que el procesamiento de señales digitales y el microcontrolador de Grover y Deller es el único libro sobre filtros que puedo entender. Desafortunadamente, es difícil de encontrar barato.

enlace

    
respondido por el pingswept
4

¿Su software sondea esta entrada o utiliza un esquema de interrupción para procesarlo?

Si está sondeando, es probable que lea la entrada a una tasa mucho más alta que los cambios esperados en la señal. Si el ruido está bien separado, los picos de frecuencia muy alta, estos se verían como muestras aisladas de la polaridad "incorrecta". Podría mitigar esto manteniendo las muestras N más recientes y decidiendo leer la entrada como la polaridad que sea mayoritaria. Es decir, si N = 5, entonces si tiene 3, 4 o 5 bits '1', su entrada es un '1'; si tiene 0, 1 o 2 bits '1', su entrada es un '0'. Esto es realmente solo una especie de filtro de paso bajo en el software.

Si está utilizando la entrada para desencadenar interrupciones en el cambio (ambos bordes), puede hacer que la rutina de interrupción (ISR) inicie un temporizador para provocar una segunda interrupción poco tiempo después, pero más larga que el tiempo de pico de ruido. En lugar de que el pin de entrada ISR acumule directamente los bits de señal, tiene que hacer que el temporizador ISR lo haga. Por ejemplo, si la señal es baja y aparece un pico alto, el flanco ascendente inicia el temporizador, pero antes de que expire el conteo del temporizador, el borde descendente del pico se restablece, por lo que cuando la interrupción del temporizador finalmente se apaga, Estamos mirando la señal, no el ruido. Por otro lado, la señal activará el temporizador solo una vez, y el temporizador ISR podrá capturar el nuevo nivel de señal.

De estos dos, Polled vs Interrupt, personalmente iría por el enfoque de sondeo, b / c (1) las interrupciones son más complicadas, y (2) un par de picos colocados patológicamente aún podría dar una entrada falsa.

    
respondido por el JustJeff
0

Quizás el "ruido" es un problema causado por la falta de codificación. Los transmisores y receptores simples requieren NRZ: el código de Manchester se usa con frecuencia.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas