Lectura de capacidades muy bajas con Arduino

5

Estoy tratando de medir la capacitancia de un sensor de capacitancia muy baja (dos placas paralelas en un bloque de espuma). Este es un sensor de fuerza de producción propia; Estoy intentando usar parte del trabajo presentado aquí . Estoy estimando que la capacitancia debería estar cerca de 90 pF.

Comencé con el tutorial CapacitanceMeter del sitio web de Arduino. Lo modifiqué para usar micros() en lugar de millis() y generar pF en lugar de nF. También cambié una resistencia de 10 megohm en lugar de la de 10 K ohm, y actualicé el código. Sin embargo, estoy recibiendo lecturas que oscilan en más de 50 pF.

¿Cómo puedo mejorar la precisión de la configuración?

¡Gracias!

    
pregunta David Pfeffer

3 respuestas

5

Las capacitancias pequeñas se miden mejor usando un oscilador HF, y midiendo el cambio en la frecuencia con y sin el DUT en el circuito del tanque del oscilador. Entonces se puede calcular la capacitancia. Esto se puede hacer automáticamente en el Arduino, y el resultado se muestra. Aquí es el esquema para una PCB que diseñé para el medidor Elsie LC que usa esa técnica.

Usar espuma conductora y medir el cambio en la resistencia a medida que se comprime sería más fácil.

    
respondido por el Leon Heller
5

Puede obtener una medida aproximada de la capacitancia con solo 2 pines del microcontrolador, 1 resistencia y 1 capacitor conocido. El circuito se ve algo como esto:

C2eslacapacitanciadesconocidaqueestástratandodemedir.C1esuncondensadordereferenciadevalorconocido,yaproximadamente50-1000veceselvalordeC2.R1noesdemasiadocrítico,1kOhmomenos.

LaideaescargarC2conunvoltajeconocido(5o3.3V,cualquieraqueseaV+),yluegotransferirsucarga(q=C*V)aC1.CadavezquetransferimoslacargadeC2aC1,elvoltajedeC1aumentaenunapequeñacantidadproporcionalaC2.ElnúmerodevecesquetenemosquetransferirlacargaparahacerqueelvoltajedeC1excedaalgúnumbral(paranosotros,elumbral"1" lógico del pin A) es inversamente proporcional al valor de C2.

El truco es aprovechar el estado de alta impedancia de los pines del microcontrolador. Si mantuviéramos a tierra el lado inferior de C1 mientras cargábamos C2, también terminaríamos cargando completamente C1. En cambio, dejamos que el lado inferior de C1 flote configurando el pin B como de alta impedancia. Ahora, independientemente de lo que haga la parte superior de C1, la parte inferior también lo hace, manteniendo siempre el mismo voltaje en C1.

El algoritmo de medición es el siguiente (en pseudo-C):

// Step 0: discharge C1 to prepare for a new measurement
PIN_A = 0;
PIN_B = 0;
delay(some_time); // long enough to discharge C1

bool under_threshold = true; // has the voltage across C1 exceeded the threshold?
int count = 0;
while (under_threshold)
{
    // Step 1: Charge C2
    PIN_B = Z; // Z means high-impedance
    PIN_A = 1;
    delay(some_time); // long enough to charge C2

    // Step 2: Transfer charge from C2 to C1
    PIN_A = Z;
    PIN_B = 0;
    delay(some_time); // long enough for C2 to discharge into C1

    // Step 3: Check if the threshold is exceeded
    if (PIN_A || (count > COUNT_MAX))
    {
        under_threshold = false;
    }
}
return count;

Puede ver una demostración del circuito en enlace

    
respondido por el Theran
0

Ya que usa un sensor de fuerza capacitivo y quiere saber el valor en tiempo real de la capacitancia, puede usar un puente de vigilancia.

simular este circuito : esquema creado usando CircuitLab

Con Cx: la capacitancia que desea medir. C, R y E son conocidos.

Al aplicar las leyes de Kirschof, usted tiene:

$$ Vm = E. \ frac {C-Cx} {2 (C + Cx)} $$ Al medir Vm puedes tener Cx:

$$ Cx = C. \ frac {E-2Vm} {E + 2Vm} $$

La resolución depende de las constantes que esté utilizando y la calidad del voltímetro que utilice.

    
respondido por el Raphael CREPINGE

Lea otras preguntas en las etiquetas