Detección del tacto mediante ruido eléctrico en el pin del microcontrolador

Recientemente he estado experimentando con la detección de toque en un pin de entrada digital de microcontrolador usando el siguiente método:

  1. Poner pin en modo de salida
  2. Conduce el alfiler alto
  3. Poner el pin en modo de entrada
  4. Calcule el tiempo que tarda el pin en cambiar de estado de ruido eléctrico.
  5. Filtre el valor y busque grandes aumentos o disminuciones en el tiempo (presumiblemente esto es cuando el usuario toca el pin).

En pruebas breves, este tiempo que tarda el estado del pin en cambiar es varios miles de veces más corto cuando una persona toca el pin. Con una pequeña aplicación de demostración que alterna un LED, en un entorno residencial de ruido relativamente bajo, funciona de manera confiable.

Así que ahora estoy tratando de entender qué es el sistema y cómo funciona. Creo que el sistema es: ingrese la descripción de la imagen aquícuando el ser humano toca el pin, actúa como una antena, lo que aumenta el ruido eléctrico que entra en el pin y disminuye el tiempo que tarda el condensador parásito en cambiar de estado.

También creo que el voltaje en el pin seguirá el movimiento browniano y serpenteará de un estado a otro (esto se debe a que el capacitor está integrando el ruido eléctrico blanco). Sin embargo, sin un osciloscopio, no he podido ver realmente qué está haciendo el voltaje del pin.

Mis preguntas son:

  1. ¿Es correcta mi comprensión del sistema?
  2. ¿Cuáles son las desventajas y limitaciones del sistema?

Algunas limitaciones que puedo ver:

  • Susceptible a picos de ruido ambiental (p. ej., encender un microondas).
  • La electricidad estática al tocar el pin puede dañar el microcontrolador (¿Posiblemente poner a tierra la mano en relación con el circuito a través del gabinete?)
¿Se está comportando el ser humano como una antena o como un gran condensador? ¿Qué sucede si pones a tierra la mano en relación con el circuito primero? ¿Sabes cómo funciona el capsense?
En la detección capacitiva, el tiempo que lleva el contacto humano es mayor que el tiempo sin contacto humano a medida que el ser humano aumenta la capacitancia. (en mi comprensión de la detección capacitiva). En este caso, el tiempo para que el pin cambie de estado es más corto. En mis pruebas con este sistema, no importa si tiras del pasador hacia arriba o hacia abajo para empezar. No importa si la persona está castigada o no. Esto me lleva a concluir que es el ruido el que impulsa el interruptor de voltaje.
@JimmyB: Es interesante ver que alguien más lo ha hecho confiable. Pero mi objetivo para esto era detectar el tacto sin hardware externo.
¿Qué quiere decir con "sin hardware externo"? ¿Un condensador y un área de cobre en algún lugar califican como "hardware externo"?

Respuestas (1)

Un experimento interesante, pero hay algunas razones para no confiar en este tipo de detección táctil.

  • Una puerta lógica CMOS puede sufrir una alta corriente de disparo cuando el voltaje de entrada ronda la mitad de Vdd.
  • Una antena humana aumenta la entrada de ruido a la entrada de una puerta, pero la intensidad del ruido aleatorio varía en muchos órdenes de magnitud, lo que dificulta bastante un diseño confiable.

  • Los fabricantes de chips a menudo especifican las corrientes de fuga de E/S de forma muy vaga.
    Puede tener solo un límite superior de un microamperio, pero también puede ser un subnanoamperio (y la mayoría de las veces es muy bajo).

  • Una entrada de puerta lo suficientemente sensible para trabajar con una fuente de ruido débil es susceptible a una fuente de ruido cercana fuerte. ¿Le gustaría que su teclado sensible al tacto emitiera caracteres aleatorios cuando un aparato cercano se encienda o apague, o cuando pase cerca su parte del cuerpo cargada?

Algunos fabricantes diseñan pines de entrada para este tipo de uso, pero confían en una fuente de señal generada localmente en lugar de una fuente de ruido externa.