Por lo que puedo ver de un vistazo, parece que utiliza un simple cálculo de tiempo de carga RC. Parece que el pin probablemente está configurado bajo para descargar, luego configurado para entrada y espera a que la resistencia de 3.3MΩ se cargue y se calcula a partir de eso. Como el pin no parece ser una entrada analógica, parece que están utilizando el nivel alto de entrada CMOS para determinar el "punto final".
Puede que me equivoque con respecto a algunos de los anteriores ya que no uso AVr micros, pero no puedo ver otra manera obvia de hacer las cosas. En general, existe la forma de control remoto que se usa en muchos medidores de pasatiempos / bajos, el método de tanque LC también se usa para algunos proyectos de pasatiempos (el más conocido es probablemente el Elsie meter ), o la forma de cálculo de número complejo y señal aplicada, que utilizan la mayoría de los medidores LCR comerciales.
Los medidores de LCR comerciales utilizan una onda sinusoidal muy limpia a frecuencias típicas (generalmente seleccionables) de 1kHz, 10kHz, 100kHz, Aplican la señal a través del componente con una resistencia de derivación y miden la relación entre voltaje / corriente y la fase entre ellos. Desde allí puede calcular lo que necesita saber (Impedancia, ESR, Q, etc.) Los mejores también incluyen un 4 cables configuración de detección, con un terminal de guarda también.
Tengo un Mastech MS5308 aquí, que es un muy buen ejemplo de un medidor de este tipo a un buen precio. Tendrá un valor tan bajo como 0.01pF con una precisión de ~ 2%.
De todos modos, para sus propósitos, ya que esta es una aplicación personalizada, me gustaría aprovechar el hecho de que:
- Ya conoce aproximadamente el rango de medición y la capacitancia será bastante pequeña.
- Ya que es para la detección del nivel de combustible, me imagino que la precisión absoluta no importa (lo cual es bueno, ya que la medición precisa de pF es difícil de hacer bien), es el cambio relativo en el que está interesado.
Así que diseñaría algo que solo tiene un rango de medición, por ejemplo, 1 - 100pF (o cualquiera que sea su rango entre vacío / lleno) y se calibra fácilmente (por ejemplo, anule las lecturas en vacío)
Hay muchos proyectos por ahí que puedes mirar y pellizcar ideas. La constante de tiempo RC es probablemente la forma más fácil, pero difícil con baja capacitancia. Creo que probablemente iría por algo como la forma de Elsie de hacerlo por esto.
Alternativamente, hay micros con periféricos capacitve de detección táctil que podrían utilizarse en este escenario. No sé sobre los AVR, pero por ejemplo, el PIC16F1828 tiene un toque capacitivo de 12 canales periférico.
Esto es lo que parece una versión basada en AVR del medidor Elsie basado en PIC, con esquemático y código fuente, por lo que puede valer la pena verlo.