Introduction: Medidor De Capacitancia Con El Arduino Y El Timer 555

MEDIDOR DE CAPACIDAD CON ARDUINO Y EL CHIP TEMPORIZADOR 555

Se trata de la construcción de un sencillo capacímetro, o sea un dispositivo para medir la capacidad en microFaradios y nanoFaradios de los capacitores con un rango mínimo de 1 nanoFaradio y hasta cientos de microFaradios.

Este proyecto, mi primer instructable, se
basa en las características del conocido chip 555 configurado como multivibrador monostable.

El 555 como monostable

En este modo, el 555 es utilizado para producir un pulso de salida cuya duración la podemos determinar mediante la elección de una resistencia y un capacitor mediante una fórmula tan sencilla como la ley de Ohm:

T = 1.1 x R1 x C1

Por lo tanto, de esta fórmula podemos despejar la capacidad :

C1 = T / (1.1 x R1)

Y como el valor de R lo conocemos (lo hemos elegido nosotros) nos faltaría conocer el valor de T (duración del pulso).

Es aquí donde hacemos intervenir a nuestro arduino, al que le encargaremos la misión de determinar T, calcular C1 y comunicárnoslo a través del puerto serie.

Step 1: BREVE EXPLICACION DEL 555 COMO MONOSTABLE

FUNCIONAMIENTO DEL 555 COMO MONOSTABLE (Ver figura arriba)

El proceso se inicia cuando se aplica a la entrada del 555 (pin 2 : TRIGGER o DISPARO) un pulso disparador que lleva el nivel de esta entrada a menos de 1/3 VCC, lo que dispara un pulso a la salida (pin 3 : OUTPUT) desde el nivel bajo al nivel alto (VCC).

Al mismo tiempo comienza la carga del capacitor cuya capacidad queremos averiguar siguiendo la conocida ley de carga de los capacitores.

Cuando dicha carga llega al nivel 2/3 VCC, la salida vuelve al nivel bajo marcando el final del pulso.

La duración del pulso se corresponde con el valor determinado con la fórmula antes descripta.

Step 2: LA FUNCION DEL ARDUINO

ARDUINO COMO MEDIDOR DE TIEMPO

La salida del 555 se conecta al arduino (para este proyecto usé el arduino uno) en dos de sus terminales (2 y 3) los que por medio de programación mediante el uso de Interrupts o Interrupciones son habilitados para detectar los cambios de nivel de la salida del 555.

De este modo el pin 2 que está vinculado al Interrupt 0 del arduino detectará el flanco de subida (RISING) del pulso de salida e instantáneamente, interrumpiendo toda actividad que se estuviera ejecutando en ese momento, procesará las instrucciones que escribiremos en una función que denominaremos Start(). En esta función la única acción que ejecutará el arduino será la de asignar un valor de tiempo inicial a una variable global (volatile). Al cabo de esto, la interrupción finaliza y el arduino continua su operación normal.

Luego, cuando el pulso de salida del 555 finalice, el pin 3 que está vinculado al interrupt 1 detectará el flanco de bajada (FALLING) del mismo y se vuelve a producir otra interrupción en la operación del arduino para ahora ejecutar instrucciones en otra función que denominaremos Stop() y que será asignar a otra variable un tiempo final.

La función Loop() del código se encarga de verificar continuamente si el valor de dicha variable ha dejado de ser cero, lo que ocurrirá al finalizar el pulso.

Cuando la condición en nuestro bloque if nos confirma que ello ha ocurrido, procedemos a la determinación de T, la duración del pulso y con él calculamos la capacidad del capacitor :

T = T_final - T_inicial

Con esto obtenemos el tiempo que necesitábamos y solo nos resta calcular el valor de la capacidad incógnita y transmitirla por el puerto serie.

En el esquematico del circuito podemos ver los valores de los componentes utilizados.

El valor de R1 de 1 Mohm es adecuado para capacitores en el rango de 1nF a 1uF aproximadamente. Para valores mayores la duración de los pulsos sería de varios segundos, por lo que cuando se trate de medir estos valores lo recomendable sería utilizar un resistor de 1kohm.

Step 3: CONSTRUCCION DEL CIRCUITO

En la imagen se puede ver el circuito montado en un protoboard. Es muy simple y fácil de implementar.

Tambien puede cliquear el archivo .ino para ver el código fuente, aunque sin los colores y el formato del editor del arduino.

Toda la alimentación la provee el arduino (VCC = +5V).

El circuito de disparo consta de un pulsador en conjunto con un resistor de 1k y un capacitor de 100nF.

El capacitor en la pata 5 (CV) del 555 no es necesario para este proyecto.

Espero que este sencillo instructable pueda serle de utilidad a alguien, sobre todo porque a pesar de su simpleza abarca conceptos avanzados como interrupciones que son tan útiles para nuestros proyectos.

Tambien nos permite conocer un poco más al tan versatil ic 555.

Hasta un próximo instructable.

Comments

author
MarioA101 (author)2016-10-01

en el programa de arduino me sale "start was not declared in this cope", como lo soluciono?

author
BetorSGLP (author)MarioA1012017-03-28

Funciona declarando las funciones start y stop antes de declarar la función setup.

author
JuanB2 (author)2015-01-28

Muy bueno!! La única duda que tengo es donde se encuentra el código fuente para descargar. Gracias!

author
ramtonio (author)JuanB22015-01-28

Al final del instructable está el link al archivo .ino (https://www.instructables.com/files/orig/FP2/BJXQ/I45HNZ55/FP2BJXQI45HNZ55.ino)

author
JuanB2 (author)ramtonio2015-01-28

Ahh, gracias. Cuando entré por primera vez lo busqué y no aparecía. Gracias! Te molesta si hago un video sobre esto para Youtube?, obviamente poniendo un link hacia este instructable. Saludos!

author
ramtonio (author)JuanB22015-01-28

Adelante. No hay problema. Cuando lo tengas pásame el link.

author
JuanB2 (author)ramtonio2015-01-29

Unas dudas/consultas, por alguna razón el pulsador de disparo en serie con el capacitor no activa el circuito, pero sin el capacitor, si. Después, para capacitores entre 1uF y 100uF anda perfecto, pero si es menos, el pulso de disparo resulta demasiado largo y no funciona. De igual manera, si se testea un capacitor de 100uF para arriba se demora una eternidad y arroja un valor erróneo. Alguna idea de como solucionarlo? Gracias!

author
ramtonio (author)JuanB22015-01-29

Hola, en cuanto al circuito de disparo, cambia el resistor de 1k por uno de 10k. El capacitor mantenlo en 100 nF cerámico. Con esto deberías poder medir capacidades >= 1nF (es hasta donde yo pude llegar).

En cuanto a los tiempos de medición, te sugiero que a partir de 1 uF, utilizes en el circuito RC un resistor de 10k en lugar del de 1M para bajarlos considerablemente. No olvides de cambiar este valor en el código.

No es un dispositivo que sea un alarde de precisión, pero creo que por su simpleza admite un mayor rango de tolerancia en los valores medidos.

En mi caso, los que más se desvían de su valor teórico son los electrolíticos.

Saludos!

author
JuanB2 (author)ramtonio2015-01-30

Gracias, va mejorando pero por alguna extraña razón el circuito de disparo no me funciona. Probé de todo, cambiando capacitores, resistencias, el lugar del integrado en la protoboard, el pulsador, pero no hay caso. No consigo que se dispare. Ya veré como solucionarlo. Igual, muchas gracias y saludos!

author
ramtonio (author)JuanB22015-01-30

Te cuento mi experiencia. Tal como tú, al principio no emplee capacitor de disparo y así pude medir capacitores a partir de los 330 nF sin problemas. Para poder medir capacidades menores tuve que agregar el capacitor. Y a prueba y error conseguí que funcione con el resistor de 10k y el capacitor cerámico de 100 nF. El capacitor fue lo más problemático ya que sólo me funcionó uno del tipo cerámico (una de esas lentejitas verdes). Saludos!