Introduction: Medidor De Capacitancia Con El Arduino Y El Op-amp 741

Este proyecto consiste en el diseño y construcción de un capacímetro muy simple capaz de medir capacitores del orden de unos 20 picofaradios a cientos de microfaradios.

Este puede ser un dispositivo muy útil a la hora de comprobar nuestros capacitores y que además nos hará sentir la satisfacción de haberlo construido nosotros mismos.

En un instructable anterior (https://www.instructables.com/id/Capacitance-meter-with-arduino-and-555-timer/), presenté otro proyecto similar de capacímetro utilizando el arduino uno y el circuito integrado temporizador 555. Dicho proyecto demostró un excelente desempeño, midiendo con mucha precisión capacitores en el rango de 1 nanoF a los cientos de microF.

Para este capacímetro utilicé nuevamente el arduino uno pero ahora con un circuito externo basado en el popular amplificador operacional 741 configurado como comparador.

La función del 741 en este proyecto es informar al arduino el instante exacto en que la carga del capacitor en medición ha alcanzado un nivel de referencia conocido.

Con esta información suministrada a través de un pin asociado a una interrupción, el arduino se encarga de determinar el tiempo transcurrido entre el inicio de la carga y el momento en que ésta alcanzó el nivel de referencia.

Una vez establecido este tiempo T, es posible determinar la capacidad incógnita mediante las ecuaciones conocidas de carga y descarga de los capacitores a través de un resistor.

Step 1: EL OP-AMP 741 Y EL CIRCUITO COMPARADOR

El principio de funcionamiento de este medidor se basa en la determinación del tiempo T de carga del capacitor C incógnita a través de un resistor R conocido hasta un nivel de referencia (Vref) también conocido, determinado por un simple divisor de tensión formado por R1 y R2.

Elegí R1 = R2 de modo que Vref = VCC/2 y así simplificar los cálculos.

VCC para el circuito comparador es provisto por el Arduino , por lo tanto VCC = 5V.

El voltaje de referencia se aplica a la entrada inversora A1 del 741 por lo cual el nivel a la salida será alto (HIGH) cuando el voltaje en la entrada no inversora A2 sea mayor que Vref y bajo (LOW) cuando sea menor que Vref (de aquí el nombre de "Comparador" de esta configuración).

La entrada no inversora A2 del 741 se empalma a la conexión de R y C.

La configuración común del comparador se muestra en el esquema de la figura arriba; el capacitor cargado con un voltaje de VCC hace que el voltaje en A2 sea mayor que A1 y así pone la salida en el estado ALTO que en el caso del 741 tiene un valor de VCC - 2V = 3V.

Sin embargo, en este proyecto, el capacitor va a estar la mayor parte del tiempo descargado ya que la tensión VCC aplicada al circuito R-C será controlada por nosotros a través del pin 11 del Arduino. Realmente VCC solo será aplicada cuando la carga deba comenzar.

Por lo tanto, la salida también estará mayormente en BAJO y solo cambiará a ALTO cuando la carga del capacitor alcance Vref en la entrada A1.

Step 2: INICIANDO LA MEDICION

El proceso de medición se inicia con la pulsación de un interruptor que pone a tierra el pin 10 del arduino que estaba a nivel de VCC a través del resistor pull-up R3 de 10 kohm.

En la función loop() un bloque if detecta el cambio de voltaje en el pin 10 y, luego de procesar el "debouncing" del pulsador, ejecuta el código dentro del bloque según la siguiente secuencia:

1 - Se cambia el modo del pin 9 de INPUT a OUTPUT para poner al mismo a tierra (BAJO) y así permitir la descarga del capacitor a través de R5 de 220 ohm.

2 - Provocamos una espera de 100 ms a fin de asegurarnos una completa descarga.

3 - Volvemos a cambiar el modo del pin 9 a INPUT (estado de alta impedancia) que equivale a poner en este pin una resistencia de unos 10 Mohm en serie con R5, lo cual visto desde el circuito R-C es un circuito abierto y por lo tanto sin influencia en la medición.

4 - Ponemos al pin 11 en estado ALTO para alimentar al circuito R-C con VCC y así iniciar la carga de C a través de R.

5 - Guardamos en una variable (t_start) el tiempo retornado por micros() que marca el inicio de la carga. Para señalar visualmente el proceso de carga, encendemos un led conectado al pin 12.

Step 3: FINALIZANDO LA MEDICION (la Carga Alcanzó Vref)

La carga del capacitor se produce a través del resistor R cuyo valor es elegido en función del rango de capacidades que queremos medir. Estos son los resistores aconsejables:

1. 20 pF < C <= 10 nF => R = 1 Mohm

2. 10 nF < C <= 300 uF => R = 10 kohm

3. 300 uF < C => R = 1 kohm

La carga en el capacitor aumenta exponencialmente de 0 a VCC.

En el preciso instante en que el voltaje en A2 sobrepasa el nivel Vref en A1, la salida del 741 cambia abruptamente al estado ALTO.

La salida del 741 (pin 6 del c.i.) está conectada al pin 3 del arduino, el cual hemos vinculado al interrupt 1 en el bloque setup() de nuestro código.

Allí establecemos que dicha interrupción se disparará cuando el pin 3 detecte el flanco ascendente producido por el 741 cuando la carga del capacitor haya alcanzado Vref. Cuando la interrupción se dispare, inmediatamente deberá saltarse a la función stop() suspendiendo toda otra acción que el arduino estuviera atendiendo en ese momento.

Cuando el voltaje del capacitor C alcanza Vref y la interrupción se dispara, en la función stop() simplemente guardamos en la variable t_stop el tiempo retornado por micros() marcando el tiempo del fin de la medición.

Step 4: DETERMINACION DE LA CAPACIDAD DESCONOCIDA

Luego de asignada la variable t_stop durante la interrupción, el arduino ya está en condiciones de efectuar los cálculos para la determinación de la capacidad incógnita.

En la función loop(), existe un segundo bloque if que es ejecutado únicamente si se cumplen estas 3 condiciones simultáneamente :

1. t_stop > 0

2. t_start > 0

3. (t_stop - t_start) > 0

En principio se pensaría que la primera condición debería haber sido suficiente, pero no fue así, ya que el ruido (noise) en la salida del 741 provocaba repetidos disparos de la interrupción y con ello falsas lecturas además de la correcta.

Con la inclusión de las condiciones 2 y 3 logré eliminar los falsos disparos y obtener una lectura limpia y precisa.

A continuación la secuencia de operaciones dentro de este bloque if:

Calculamos el tiempo transcurrido desde el inicio de la carga del capacitor hasta que ésta alcanza el valor Vref:

T = t_stop - t_start

Se calcula la constante de tiempo RC del circuito despejándola de la ecuación general de carga de los capacitores.

RC = -T / log((Vref - VCC) / (V0 - VCC))

V0 = 0 ya que el capacitor inicia la carga desde 0

Finalmente se determina la capacidad:

C = RC/R

Step 5: PRESENTANDO LOS RESULTADOS Y RESETEO DEL DISPOSITIVO

La capacitancia hallada se muestra en el monitor del puerto serie. El valor se expresa en microF, nanoF y picoF.

Al expresar la capacidad en picoF, le restamos un valor que representa las capacidades parásitas del circuito y que lo obtuve experimentalmente tomando lecturas sin ningún capacitor instalado. Por lo tanto quien vaya a construir este proyecto, deberá hacer sus propias estimaciones y asignar el valor encontrado a la variable error_correction.

Por último reasignamos 0 a las variables de tiempo t_start y t_stop y ponemos a tierra el pin 11 con lo cual quitamos VCC del circuito R-C y nuestro capacímetro queda nuevamente listo para una nueva medición.

Step 6: CONSTRUCCION DEL PROYECTO

En la figura arriba puede apreciarse el diagrama de montaje en un protoboard, el cableado y los componentes con sus respectivos valores.

Como se puede apreciar el montaje no reviste ninguna dificultad y puede implementarse en muy poco tiempo.

El código fuente puede descargarse haciendo clic en el link correspondiente.

Bueno amigos, con esto concluyo este instructable, esperando pueda serle de utilidad a alguien o por lo menos como inspiración para los fanáticos del arduino en la búsqueda de nuevas y creativas maneras de utilizar este increíble dispositivo.

Hasta el próximo instructable.