Cómo implementar un botón de usuario filtrado

1

Quiero agregar un botón de usuario a mi diseño esquemático, así que primero miro lo que considero que podría ser una buena fuente: the ST Esquema del tablero de descubrimiento .

Su caso de uso es el mismo que el mío: botón de usuario, configuración desconocida del microcontrolador, Vdd a 3.3 V.

Su botón se ve así:

Creo que entiendo la mayor parte (corríjame si me equivoco):

  • R35 puede proteger el microcontrolador (es decir, PA0) en caso de que el usuario haya configurado ese pin para que sea una salida (alta / baja) en lugar de una entrada (alta impedancia). De lo contrario, si PA0 se establece en bajo, presionar el botón podría ser peligroso.
  • R39 reduce la corriente Vdd-GND cuando se presiona el botón (no es necesario perder corriente).
  • El capacitor debería filtrar el botón que rebota y creo que también debería cargarse / descargarse a través de una resistencia (R38?).

Ahora, esto es lo que no entiendo: cuando no se presiona el botón, considerando condiciones estables, en un lado y en el otro botón tenemos potencial de Vdd y GND, lo mismo que con el condensador. Asi que...? (Los pensamientos iniciales que sé deben estar equivocados, pero de todos modos ...)

  • Cuando presionamos el botón, ¿no estamos cortocircuitando dos cables con diferentes potenciales sin resistencia intermedia? (3.3 V de la fuente de alimentación con 0 V del condensador)
  • Mi intuición me hubiera llevado a poner el R38 entre Vdd y el interruptor, en lugar de entre Vdd y el capacitor, pero parece que mi intuición es mala (los ingenieros de STM deben estar en lo correcto y yo debo estarlo).

Entonces, tal vez lo que sucede es que cuando se presiona el botón, la parte inferior del condensador (como se muestra en el esquema) se convierte instantáneamente en 3.3 V y luego la parte superior se convierte en 6.6 V. (y luego se descarga a través de R38)

Si eso es correcto, entonces supongo que si en ese instante exacto soltamos el botón nuevamente (imaginemos que el botón rebota), la parte superior del condensador mantiene el potencial de 6.6 V y va suavemente a 3.3 V de nuevo y el inferior ¿Mantiene el 3.3 V y va bien a 0 V? De lo contrario, el rebote no funcionaría, ¿verdad?

¿Podría alguien aclarar cómo funciona esto?

    
pregunta Peque

1 respuesta

2

En primer lugar, tenga en cuenta que el condensador no está "instalado". Por lo tanto, no está montado en los esquemas reales.

¡Pero supongamos que C38 está ahí!

  

R39 reduce la corriente Vdd-GND cuando se presiona el botón (no es necesario perder corriente).

R39 baja el voltaje cuando se presiona el botón. También se carga el condensador, cuando se suelta el botón. El valor se elige a) para mantener el vcc a gnd actual bajo, b) para tener una cierta constante de tiempo.

  

El condensador debería filtrar el botón que rebota y creo que también debería cargarse / descargarse a través de una resistencia (R38?).

El condensador filtra los rebotes. Cuando presiona el botón, se descarga rápidamente a través de R38. La función de R38 es limitar la corriente de descarga inicial, lo que también podría ser perjudicial para el interruptor (aunque la tapa es solo de 100 nF, por lo que tiene una resistencia mínima). También limita la tasa de descarga.

  

Cuando presionamos el botón, ¿no estamos cortocircuitando dos cables a potenciales diferentes sin resistencia intermedia? (3.3 V de la fuente de alimentación con 0 V del condensador)

No, solo estás cortocircuitando el condensador, a través de R38.

  

Mi intuición me hubiera llevado a poner el R38 entre Vdd y el interruptor, en lugar de entre Vdd y el capacitor, pero parece que mi intuición es mala (los ingenieros de STM deben estar en lo correcto y debo estar en lo correcto).

La resistencia podría haber estado en serie con el interruptor, pero el condensador debería haber estado en paralelo con esta serie. (En otras palabras: en sus esquemas, coloque "vdd" a la izquierda de R38). Esto se puede hacer porque R38 es muy pequeño en comparación con R39.

  

Entonces, tal vez lo que sucede es que cuando se presiona el botón, la parte inferior del condensador (como se muestra en el esquema) se convierte instantáneamente en 3.3 V y luego la parte superior se convierte en 6.6 V. (y luego se descarga a través de R38)

Sí, esto es lo que sucede.

  

Si eso es correcto, entonces supongo que si en ese instante exacto soltamos el botón nuevamente (imaginemos que el botón rebota), la parte superior del condensador mantiene el potencial de 6.6 V y va suavemente a 3.3 V de nuevo y el inferior ¿Mantiene el 3.3 V y va bien a 0 V? De lo contrario, el rebote no funcionaría, ¿verdad?

No. Para obtener los números, supongamos que usted es tan rápido que presiona el botón tan rápido, que lleva instantáneamente el 3.3V al terminal inferior, y luego suelta lo suficientemente rápido (eso debería ser en un tiempo mucho menor que R38 * C38, es decir, 10us!), De modo que la tensión del capacitor no se cambie apreciablemente. Primero, el voltaje del capacitor no puede variar instantáneamente. El potencial de uno de sus terminales puede, pero luego, como el voltaje a través del capacitor no puede cambiar instantáneamente, el potencial en el otro terminal cambiará en consecuencia. Cuando presiona el botón, el terminal inferior pasa instantáneamente a 3.3V. El condensador se carga a 3.3 V, por lo tanto, el terminal superior va instantáneamente a 6.6 V. Entonces lo sueltas muy rápido. El terminal inferior vuelve a 0V, debido a R39. Si no fuera así, ese potencial sería 3.3V y la corriente fluiría a través de R39. Pero si escribe la ecuación de la malla Vdd-C-R38-R39 (R35 está conectado a una entrada, supongamos que es ideal para que no fluya la corriente), verá que Vdd-Vc es cero, por lo que hay cero corriente. Así que el terminal inferior de C38 está a 0V.

Finalmente una palabra en C38.

Si está presente, cuando encienda el circuito, actuará como si presionara el botón, es decir, dará un pulso de alto nivel en PA0. Esto se debe a que el capacitor está inicialmente descargado, por lo tanto, el potencial de los dos terminales está en el mismo valor (3.3V). Los diseñadores tal vez más tarde se dieron cuenta de que

  1. No querían tal pulso.
  2. Cualquier rebote se puede realizar en el software.

EDITAR:

Como referencia, aquí hay un estudio de caso sobre los tiempos de rebote de varios conmutadores: enlace

    
respondido por el next-hack

Lea otras preguntas en las etiquetas