Cambiar topología de rebote para el codificador rotatorio [duplicado]

2

Estoy buscando rebotar la salida de un codificador rotatorio que estoy usando como un interruptor a tierra con un pull-up. Al mirar en línea, vi el circuito de debouncing en la Figura 2 y lo leí aquí . Sin embargo, también vi la primera imagen a continuación y la leí aquí . ¿Es uno mejor que el otro para mi aplicación? De acuerdo con la hoja de datos, el GPIO del imx6sl que estoy usando tiene un disparador de Schmitt y una histéresis de entrada, así que supongo que tengo un condensador conectado. está bien.

Figura 1

Figura 2

    
pregunta Stephan GM

3 respuestas

3

Suponiendo que la MCU y el disparador Schmitt tienen una resistencia de entrada infinita y que los modelan como abiertos, podemos cerrar el interruptor y ver qué sucede.

Con el interruptor cerrado en la figura 2, la resistencia R2 está en serie con el condensador, lo que significa que hay 0 VCC en la entrada.

En el primer diagrama, con el interruptor cerrado, la resistencia R está en paralelo con el condensador, lo que significa que habrá un voltaje en la entrada a menos que Rpull-up > > R, haciendo que la caída de voltaje a través de R sea insignificante. tener diferentes valores de resistencia significaría que la constante de tiempo sería diferente para la carga y la descarga y nuestra rebote sería inconsistente entre los flancos ascendentes y descendentes.

Por lo tanto, la primera imagen no es una alternativa viable a la figura 2 y tampoco rebota adecuadamente el interruptor. La figura 2 es preferible.

    
respondido por el Stephan GM
1

La figura 2 es preferible suponiendo que la fuente de alimentación de E / S de su MCU es la misma que la tensión de extracción para R1, y que los niveles de tensión CMOS están en uso.

Conectando los condensadores directamente a los pines MCU, es posible que pueda salirse con la suya, pero es mejor tener cierta resistencia en serie, como unos pocos cientos de ohmios hasta 1K. Si elige no usar resistencias, debe asegurarse de que dv / dt en el riel Vdd nunca sea menor que \ $ - \ frac {i_ {MAX}} {C} \ $ where \ $ i_ {MAX} \ $ es la corriente máxima del diodo de pinza (para evitar el bloqueo).

Supongo que ha identificado alguna necesidad de debouncing de hardware, por lo general no es necesario y el debouncing de firmware (entradas sondeadas) hace el trabajo. Si está utilizando interrupciones, es posible que sea necesario el rebote del hardware, pero eso rara vez es deseable.

    
respondido por el Spehro Pefhany
0

He usado la función de rebote de encuestas de software con muy buenos resultados. Este enfoque requiere que pueda sondear los pines de entrada con la frecuencia suficiente para no perderse la actividad del conmutador:

  1. entradas de encuesta
  2. si alguno de los conmutadores ha pasado de off a on , almacene ese valor
  3. ignorar las transiciones posteriores durante un período de tiempo para evitar el cambio del interruptor

Esta técnica se puede utilizar junto con su desventilador de hardware figura 2, especialmente si no puede realizar encuestas muy a menudo.

Una combinación de rebote de software y hardware le permitirá disminuir el tiempo de "ignorar" en el lado del software, y disminuir la constante de tiempo RC en el lado del hardware. Esto puede ser mejor que el rebote de solo hardware o solo de software.

    
respondido por el hoosierEE

Lea otras preguntas en las etiquetas