Autor: Mauro Montoya Arenas (mauro2017pre@gmail.com)
Medidor de capacitancia con opamp y arduino
Resumen
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. 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.
Materiales:
• Arduino uno
• Opamp 741
• LED
• 2 Resistencia de 220
• 3 Resistencia de 10k
• 1 resistencia de 1M
• Condensador para medir
• Protoboard
FUNCIONAMIENTO DEL PROYECTO
Se va a analizar el proyecto en 7 partes detallando cada una de las mismas a continuación:
PRIMERA PARTE: 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.
SEGUNDA PARTE: 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.
TERCERA PARTE: 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.
CUARTA PARTE : 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
SEXTA PARTE: CONSTRUCCION DEL PROYECTO
Las conexiones del circuito se muestran a continuación
CODIGO DEL ARDUINO PARA EL FUNCIONAMIENTO DE LA MEDICION:
Simulaciones
Para realizar las simulaciones lo hicimos en TINKERCAD. Un programa que realiza simulaciones con arduino.
Pruebas
Apretamos el botón aproximadamente 2 segundos, para tener una mayor precisión, en dicho tiempo (mientras Arduino realiza la medición)., el led rojo se encenderá.
Para el capacitor 104:
Para el capacitor de 22 uF
Para el capacitor de 100 uF