Parches soluciones asequibles
Soluciones

Medidor de condensadores con Arduino

Método aproximado para medir la capacidad de un condensador. La medida se basa en cargar el condensador hasta que su tensión alcanza un valor prefijado en el programa midiendo el tiempo que tarda y convertirlo en capacidad con una constante del programa. El resultado se presenta en la pantalla del ordenador

La precisión es adecuada para los usos normales de aficionado.

Programa

/* Medidor capacidad 1.1

No se trata de un medidor de precisión, pero da resultados aceptables dentro del margen de tolerancia no profesional. Se conecta una resistencia de carga entre el pin digital y el pin analógico y la capacidad entre el pin analógico y masa (gnd). Mide, en microsegundos, el tiempo de carga del condensador, entre dos tensiones, y lo convierte en capacidad por medio de una contante del programa. Presenta el resultado en la pantalla del ordenador (serial monitor) y repite el ciclo. Se usa un condensador de valor conocido (no es necesario que sea de precisión) para calibrar la constante K (solo dos cifras significativas). Con una resistencia de carga de 1 M el rango de lectura es a partir de unos 0'4 nanoF, con una precisión aceptable, sobre todo en la zona del condensador de calibración. Modificando los valores de la resistencia y los de las ordenes WHILE se varia el rango de medidas y el tiempo de cada medida. El tiempo de lectura se alarga con el valor de la capacidad. Para valores de microfaradios las medidas tardaran minutos (u horas). ATENCIÓN con condensadores polarizados, el negativo a GND.

*/

unsigned long tiempo; // para medir tiempo en microsegundos

unsigned long inicio;

unsigned long final;

float cap = 0; // para que el resultado de cap salga con decimales

float K = 1500 ; // Con R de 1Mohmio resultado en nF. Ajustar con condensador de valor conocido.

int V = 9; // pin 9 alimenta el circuito RC

int volt = 3; // Puerto A3 de lectura de la tension de carga

int value = 0; // lectura puerto A3 puede ser hasta 1023

void setup()

{

Serial.begin(9600);

pinMode(V,OUTPUT);

}

void loop()

{

digitalWrite(V,LOW); // pone el pin a masa para descargar C a traves de R

while (value > 103) // descarga el condensador hasta 0.5 V {

value = analogRead(volt); // comprueba la tension de C

}

digitalWrite(V,HIGH); // pone el pin alto para cargar C a traves de R

while (value < 123)

{

value = analogRead(volt);

}

inicio = micros(); // comienza el tiempo cuando la tension llega a 0.6 V

while (value < 820)

{

value = analogRead(volt);

}

final = micros(); // acaba tiempo de subida cuando la tension llega a 4 V

// Presentacion de resultados

tiempo = final - inicio;

cap = tiempo / K ;

if (cap > .3) // Evita la presentacion de resultados cuando no hay condensador o es demasiado pequeño

{

Serial.print(cap);

Serial.println(" nanoF");

delay (1000); // para ralentizar la presentacion con valores pequeños

}

}



Para bajar el programa pulsa este enlace PROGRAMA 1.0



Otra versión más completa es la que se puede descargar aquí Medida capacidades 2.1. El rango de medida que he conseguido en las pruebas abarca desde milifaradios a unos 10 picofaradios con un margen de error aceptable, dentro del orden de tolerancia de los componentes usados normalmente.

Tiene tres escalas de medida que se seleccionan automaticamente según el valor de la capacidad, para conseguir más rango de medida y más rapidez en los grandes valores de capacidad. Se mejora la medida en valores bajos aumentando R2 y R3 a valores mayores, pero entonces el tiempo de espera se puede hacer demasiado largo. Se debe, por tanto, de buscar un compromiso en función de las necesidades personales. Se puede aumentar el numero de saltos colocando más resistencias en otros puertos y modificando el programa adecuadamente. R1 no debe ser menor de 125 omhios para no sobrecargar el puerto en caso de condensadores muy grandes o cortocircuito, pero se pueden poner varias conectadas a otros puertos que trabajen en paralelo para conseguir una corriente de carga mayor, para medir condensadores muy grandes.

Se puede hacer una pequeña placa con el circuito que se conecte al Arduino cuando se quiera usar como medidor. Aquí tengo un prototipo para el NANO montado en una placa de contactos, pero se puede adaptar para el modelo con el que se trabaja.



boardcond (50K)   Placa   placacondensador (351K)



En este caso, los puertos digitales usados han sido el D2, D3 y D4 y para el analógico hay que usar un latiguillo y pincharlo al puerto deseado (aquí el A6). El condensador a medir puede conectarse, indistintamente a los huecos del protoboard o al conector de la plaquita perforada.

Este mismo montaje se puede usar para medir resistencias, con otro programa diferente, así que cuando lo prepare lo pondré aquí.

He preparado otra SHIELD para usarla con el UNO que no necesita latiguillo, además lleva cuatro resistencias de medida para un mejor ajuste. En este caso se usan los puertos analógicon 1, 2, 3 y 4 como digitales y el A0 para medir la tensión del condensador. Esta claro que el programa anterior habría que adaptarlo a los nuevos puertos y valores de las resistencias.


placacondUNO (20K)         condenUNO (15K)

Hazlo tú mismo