¿Cómo funciona la biblioteca Arduino CapSense?

4

¿Puede alguien ayudarme a comprender cómo la biblioteca Arduino CapSense puede detectar la proximidad? Al leer el código fuente, parece que alterna un pin de envío y luego espera a que el pin de recepción cambie al mismo estado. El tiempo empleado (si lo comprendo correctamente) depende de la proximidad de un dedo, por ejemplo, al electrodo sensor. Sin embargo, hay varias cosas que no entiendo, tales como:

  • ¿Por qué la proximidad de, por ejemplo, ¿Una mano humana cambia el tiempo necesario para que el pin de recepción cambie de estado?

  • ¿Por qué se necesita una resistencia? Puedo entender una resistencia pequeña, pero el ejemplo parece recomendar una resistencia muy grande (10 Mohm o mayor) para una mejor sensibilidad.

  • El sitio recomienda capacitores para un mejor rendimiento. ¿Cómo mejoran esto el rendimiento?

  • ¿La frecuencia con la que el pin de envío cambia al rendimiento de los detectores?

  • Y finalmente: ¿Por qué usa un pin digital como receptor? ¿Por qué no canalizar la salida de todo a un pin analógico y medir el voltaje a través de ADC?

pregunta David Högberg

2 respuestas

5

Es un circuito RC simple (Resistencia-Capacitor). Al medir el tiempo que se tarda en pasar de un estado a otro, se obtiene una aproximación de la distancia (sabemos la capacitancia general del cuerpo humano, la resistencia de alto valor y la capacitancia general del material del sensor). La resistencia de alto valor es proporcionar un tiempo de drenaje significativamente bajo.

La razón por la que usa un pin digital es porque no importa cuál sea el voltaje intermedio, solo el tiempo que lleva cambiar de estado 1 a estado 2. Y los pines digitales son más abundantes y tienen puntos fijos donde el estado Cambios, ya sea directamente oa través de disparadores Schmitt. El ADC también es lento o está bloqueando, requiere configuración y algunos ciclos o interrupciones, mientras que el cambio de un pin digital es inmediato, y solo toma 3 o 4 ciclos para verificarlo como máximo.

De la página de la biblioteca de Capsense:

  

El método del sensor capacitivo cambia el pin de envío del microcontrolador a un nuevo estado y luego espera a que el pin de recepción cambie al mismo estado que el pin de envío. Una variable se incrementa dentro de un bucle while para sincronizar el cambio de estado del pin de recepción. El método luego informa el valor de la variable, que está en unidades arbitrarias.

     

Cuando el pin de envío cambia de estado, eventualmente cambiará el estado del pin de recepción. El retraso entre el cambio del pin de envío y el cambio del pin de recepción está determinado por una constante de tiempo RC, definida por R * C, donde R es el valor de la resistencia y C es la capacitancia en el pin de recepción, más cualquier otra capacitancia (por ejemplo, interacción del cuerpo humano) presente en el pin sensor (recibir). Agregar un capacitor pequeño (20 - 400 pF) en paralelo con la capacitancia del cuerpo también es altamente deseable, ya que estabiliza las lecturas detectadas.

    
respondido por el Passerby
1
  

¿Por qué la proximidad de, por ejemplo, Una mano humana cambia el tiempo necesario para   ¿El pin de recepción para cambiar de estado?

Debido a que la proximidad del elemento (dedo) tiene un cargo, y afecta el tiempo del cargo para cambiar de estado.

  

¿Por qué se necesita una resistencia? Puedo entender una pequeña resistencia, pero la   Un ejemplo parece recomendar una resistencia muy grande (10 Mohm o mayor)   para una mejor sensibilidad.

Se necesita una resistencia o los pines de carga y detección estarán cortocircuitados, es decir, R = 0 y, por lo tanto, el tiempo de carga será 0 yc = 0 Debido a la fórmula T = R x C

  

El sitio recomienda capacitores para un mejor rendimiento. Como hacen estos   ¿mejorar el rendimiento? Pequeño valor C disminuirá el ruido y por lo tanto   aumentar la estabilidad y la precisión.

     

¿Se reproduce la frecuencia con la que el pin de envío cambia a la   ¿Detectores de rendimiento en absoluto?

Sí, si se refiere al valor pasado en la función de lectura capacitiveSensor (muestras de bytes) Tomar más muestras aumentará la sensibilidad.

enlace

    
respondido por el Brian Moreau

Lea otras preguntas en las etiquetas