He construido algunos condensadores simples para usar como almohadillas de presión en las escaleras de mi casa. El objetivo es iluminar las escaleras mientras las subes. Aquí está en acción . Pero obtengo lecturas extrañas de ellos, pero solo cuando se conectan en un sentido.
Los he construido pegando un trozo de papel de cocina a cada lado de un trozo de cartón y luego pegando un cable pelado a cada lado. Luego se conectan a una pequeña placa de circuito a través de un conector molex KK ("SENSOR"), esquema a continuación.
Los puertos DATA_IN y DATA_OUT se conectan a otras placas de circuitos similares. RA0 genera datos en formato serial a 57600 baudios. RA2 se conecta a RA1 de la placa "aguas abajo" y permite que los dispositivos se autoenumeran y administren el uso del bus serie.
La energía es proporcionada por una batería y los datos se leen a través de un rasberry pi a través de un optoacoplador, por lo que no hay conexión eléctrica fuera de este sistema.
El firmware en el PIC funciona configurando primero RA4 bajo durante un milisegundo para drenar el capacitor. RA4 luego se convierte en una entrada y se conecta a un comparador que compara con una referencia de voltaje interno (4/5 Vdd). RA5 ahora se eleva, iniciamos un temporizador y medimos cuánto tiempo tarda el voltaje en alcanzar la referencia. Cuando se aplica peso al sensor, la tarjeta se comprime y la capacitancia aumenta, y tarda más en cargarse.
La mayoría funcionan con normalidad, y tardan unos 800 uS en cargar hasta 4/5 Vdd. Pero algunos dan lecturas realmente extrañas, que fluctúan entre aproximadamente 30 uS y 4000 uS para cargar, y cambia en cada lectura. Aún más extraño, si tomo el conector adjunto al encabezado "SENSOR" en el tablero e invierto la polaridad del sensor, comienza a funcionar normalmente.
Entonces, en cierto sentido, tengo una solución al problema: invertir la polaridad de los sensores, pero esto no es satisfactorio ya que no tengo idea de por qué estos sensores aparentemente simétricos deberían comportarse de manera tan diferente según la forma en que estén conectados. ¿Por qué está pasando esto?
Una placa de su condensador está captando interferencia, probablemente del cableado de alimentación de su casa. La razón por la que las lecturas son tan erráticas es que depende de la parte del ciclo de energía en la que se tome la lectura. Solo algunos sensores presentan este problema porque el capacitor o los cables están más cerca del cableado de alimentación que los de los otros sensores. .
La razón por la que cambiar la polaridad ayuda es porque la interferencia proviene de un lado del capacitor. Atar la placa de ese lado a tierra reduce en gran medida el ruido acoplado a la otra placa, porque la placa conectada a tierra ahora actúa como un escudo.
Esta es una gran ilustración de por qué un algoritmo de detección capacitiva tan ingenuo no se usa en casos reales. Los cambios de capacitancia son pequeños y las impedancias grandes para hacer manejables las constantes de tiempo. Eso es simplemente invitar a la captación de ruido. Sin un algoritmo que al menos intente cancelar el ruido, hay pocas esperanzas de un funcionamiento fiable.
Usted describe el antiguo método cap-sense basado en el tiempo, incluso incorporado por periféricos integrados en algunos PIC. Sin embargo, eso no lo convierte en una buena idea. Tenga en cuenta que este tipo de periférico cap-sense no se incluye mucho, si es que se incluye, en las piezas más nuevas.
Aquí está el método cap sense que uso principalmente:
Siempre, al menos, intente cancelar el ruido de modo común. Tome dos lecturas usando polaridad opuesta o placas o algo así. Las dos lecturas opuestas de nivel bajo se toman juntas como una lectura de nivel superior. Lo ideal es que tome estas lecturas a menudo de forma repetitiva. Si se organizan correctamente, el ruido de modo común se cancela después de filtrar adecuadamente el flujo de lecturas de nivel superior.
En lugar de medir una constante de tiempo, mida el cambio de voltaje debido a un paso. Eso es mucho más rápido, por lo que la ventana de tiempo cuando es vulnerable al ruido es más corta. También permite que las mediciones consecutivas se tomen más cerca en el tiempo, lo que ayuda a reducir el ruido de modo común si cada medición cambia algo de la anterior. Más mediciones por tiempo también permiten un filtrado de paso bajo más agresivo, lo que produce un mejor margen de ruido.
Para mis botones de detección de tapa (no se deforman, por lo que es un problema un poco diferente al suyo), conduzco la línea de salida común y la línea que quiero detectar, ambas altas. Cambie la línea de detección a una entrada A/D, baje la línea de salida, espere un poco más que el tiempo de adquisición A/D y convierta. Luego haga lo mismo nuevamente excepto que ambas líneas comienzan bajas y la línea de excitación obtiene un paso alto. Al sumar cuánto cayó el primero desde alto y cuánto subió el segundo desde bajo, el ruido de modo común se reduce significativamente. Hacer esto con frecuencia, cambiando la polaridad cada vez, produce una buena inmunidad al ruido en general después del filtrado de paso bajo.
En este método mido el acoplamiento a tierra, lo que disminuye el acoplamiento desde la línea de salida. Por lo tanto, una señal positiva obtiene menos respuesta general. En el caso de los botones de detección de tapa en una PCB, rodeo cada botón con una inundación de tierra. El dedo agrega capacitancia entre el botón y la inundación del suelo. La inundación del suelo también actúa como un escudo, minimizando la captación de ruido de otros lugares.
Tengo una placa de demostración de cap sense donde el ruido aleatorio después de todo el procesamiento es de aproximadamente ± 1 conteo simplemente sentado allí. Un toque sólido con el dedo produce valores de alrededor de 200-350. En otras palabras, obtengo una sólida relación señal/ruido de 100:1 con este método.
Más investigación en mi sistema ha mostrado la respuesta a esto: acoplamiento de 50 Hz de las líneas de alimentación de la casa (como todos los demás han dicho). Cada sensor en realidad muestra alguna variación entre las muestras, y poner todos los números en una hoja de cálculo muestra una variación sinusoidal, con un período de aproximadamente 1 segundo. Algunos sensores tienen mucha más variación en una orientación que en la otra, probablemente debido a su orientación física hacia la fuente de interferencia.
Cada muestra tarda unos 5 ms en procesarse, y luego espera 250 ms hasta hacer la siguiente muestra. Esto nos da un período de 255 ms, o 12¾ ciclos a 50 Hz, que se procesará a través de la señal principal cada 4 muestras (o un segundo).
Resolví este problema por mí mismo haciendo que el PIC monitoree la ondulación de 50 Hz y sincronice la muestra con el pico de la ondulación. Esto ha llevado a lecturas de sensores estables como rocas.
La solución de Olin es en realidad mucho mejor que esta, y la implementaré a continuación si tengo algún problema.
tom carpintero
finbarr
Phil Underwood
finbarr
Tony Estuardo EE75
Phil Underwood
Phil Underwood
finbarr
drtechno
Simón Richter
JRE
uwe
drtechno
Russel McMahon