medidor de capacitancia Arduino

0

Estoy tratando de medir las capacitancias utilizando un Arduino UNO.

El pin C carga el capactitor a través de una resistencia de 10 K (también he probado 100 K y 220) y el pin G lo descarga.

V_A y V_B son puntos de medición en la resistencia de 10K.

El programa hace lo siguiente:

discharge_capacitor()
while v_b < 4.0V:
    t1 = get_time()
    pin C = HIGH
    dv_1 = v_b - v_a
    wait_a_bit()
    dv_2 = v_b - v_a
    pin C = LOW
    t2 = get_time()
    t = t2 - t1
    calc. q (q = I*t; I = V/R; V is the avg. of dv1 and dv2)
    total_charge += q
capacitance = total_charge / last_measured__v_b
print(capacitance)

I.e. calcula la carga que entra en el condensador.

Puede medir capacitancias de 1 y 3 uF con una precisión bastante alta (para mis propósitos), pero genera 0 nF cuando estoy tratando de medir 470 uF en mayúsculas. ¿Cual podría ser el problema? ¿Estoy haciendo todo mal?

    
pregunta int6h

2 respuestas

3

Un 470 uF probablemente será de tipo electrolítico y tendrá una corriente de fuga del orden de 1 a 10 uA por microfaradado. Suponiendo que 1 uA es la cifra, la fuga total será de 470 uA y esto causará un voltio caiga (independientemente del valor de la capacitancia) a través del resistor de 10 kohm de 4.7 voltios y su algoritmo probablemente nunca se desempeñará correctamente.

    
respondido por el Andy aka
0

Estás probando en v_b < 4V, así que supongo que está utilizando un NFET con Vt < 1V.

Vt a menudo se define como el umbral de conducción de 1 mA, cuando desea que el FET superior se conduzca mucho más rápido, su voltaje de compuerta debe ser mayor que el suministro o la caída de Vd en 2 diodos y se prueba en un umbral inferior.

O mejor aún, cambie la declaración para probar de 0 a 2.5 a 3V

  while v_b < 2.5V:

Use diferentes valores de Rs para el escalado automático para obtener los recuentos de medición en un rango apropiado con los interruptores CMOS seleccionables.

Un método automático de escalado automático puede usar un método dt constante ajustando RdsOn, así que obtenga una constante d (v_b) / dt diferenciándola para obtener, por ejemplo, dV / dt = 50m ~ 100mV con un bucle cerrado para controlar Vg usando un PFET con un Rs mucho más pequeño.

luego C = Ic / constante dV / dt luego promedia esto.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas