Sensor de rotación - reducción de ruido

0

Acabo de comprar el sensor de rotación Waveshare.

Lo conecté a Logic Analyzer e hice algunas pruebas. Como era de esperar, el sensor envía dos señales de bajo nivel movidas en fase.

Perocuandoloamplías,puedesvermuchoruidomientrascambiaselniveldealtoabajoodebajoaaltosiempreycuandoelvoltajenoseestabilice.Aquíhayunejemplo.

El ruido continúa durante varios microsegundos, por lo que es un problema porque si quiero registrar la acción del usuario desde el microcontrolador, registra el borde descendente (como se esperaba) pero a menudo (no siempre) también el ruido. Como resultado recibo algunas interrupciones en lugar de una real.

1. ¿Es este ruido un comportamiento natural al agitar la pala de rotación?

2. ¿Hay alguna forma de eliminar este ruido porque la comunicación con el microcontrolador?

    
pregunta matx1

3 respuestas

1

Este es el comportamiento normal de la mayoría de los codificadores mecánicos (sensores de rotación). Se encuentra un problema similar cuando se usa un interruptor conectado al pin del microcontrolador.

¿Solución? Utilice un circuito de rebote simple (capacitor + resistencia), un circuito de rebote más complicado (búfer / puerta con entrada Schmidt) o cree un código de rebote.

Al tocar el eje, existe la posibilidad de que el codificador esté en el borde entre encendido y apagado, por lo que puede dar "señales falsas" o simplemente alternar entre 1 y 0. Un buen código de rebote debe eliminar el desorden.

    
respondido por el smajli
0

Este es un comportamiento bastante normal de todos los codificadores, ya sean mecánicos, ópticos o lo que sea. Cuando se atraviesa un borde, la salida es realmente indeterminada y susceptible de "ruido" eléctrico y mecánico.

Por lo tanto, es prudente utilizar correctamente la información de cuadratura. No confíe en los bordes individuales para obtener información sobre la posición. Necesita confiar en la información relativa suministrada por las dos líneas.

En su ejemplo, debe tratar la segunda información de rastreo como ... avanzó un poco, retrocedió, avanzó nuevamente, etc., etc.

No es hasta que veas una transición en la otra señal que puedes ignorar los bordes de manera segura en la primera.

Si lo haces correctamente, no importa si hay rebotes erróneos o bordes inducidos por ruido en la señal.

    
respondido por el Trevor_G
0

Lo que tienes es un codificador de cuadratura. Hay dos salidas que están desfasadas 90 °. (90 ° = cuarto de vuelta, por lo tanto en cuadratura). Para mantener un registro de la posición, se trata de mantener un seguimiento del recuento utilizando un contador de arriba a abajo.

simular este circuito : esquema creado usando CircuitLab

Figura 1. Formas de onda de codificador rotatorio de 2 bits.

La lógica del programa es muy simple.

  • Seguimiento del estado actual de 'A'. Si el estado cambia a 'alto', entonces:
  • Mira la entrada 'B'. Si 'B' es bajo, entonces cuenta. Si 'B' es alto, entonces haga una cuenta regresiva.

Probablemente deba rebotar las entradas para evitar disparos falsos.

Interrupción activada

Para hacer que la activación de la interrupción de seguimiento del codificador solo necesite tener una fase ("A" en el ejemplo anterior) active la entrada. El controlador de interrupciones luego mira a B para determinar si se debe contar hacia arriba o hacia abajo.

Eliminando el rebote de una entrada dirigida por interrupción directa

simular este circuito

Figura 2. Si los disparos de interrupción son posibles tanto en flanco ascendente como descendente, no hay necesidad de rebotar.

La Figura 2 duplica el esquema de la Figura 1 al contar con bordes negativos de 'A' pero con lógica inversa con respecto a 'B'. Aquí podemos ver que cualquier rebote en cualquiera de las entradas resulta en una fluctuación de un solo conteo.

    
respondido por el Transistor

Lea otras preguntas en las etiquetas