Go Down

Topic: Capacimetro con Arduino (Read 9356 times) previous topic - next topic

lm386


Un par de cosas. La ecuación para calcular la capacidad del condensador pones

(tiempofincarga/3350)-0.04

pero matemáticamente debería ser el tiempo de carga dividido por la resistencia. ¿Por qué has puesto esa otra? ¿Cómo has llegado a esa ecuación? ¿Es algo que has hecho de forma empírica?

Y una última cosa. El programa es sencillo pero a la vez lo veo muy práctico. Tanto es así que podías ampliarlo para calcular valores de condensadores más pequeños. En el programa que puedas seleccionar entre la resistencia de 3K u otra de por ejemplo 100K (no sé si la impedancia de las entradas de Arduino permitiría valores más altos para la resistencia).


3350 fue a base de probar. En realidad tendría que ser 3000, que es la resistencia de carga del condensador, pero como los resultados que me daba no coincidían por el tema de las tolerancias tan altas de los condensadores, lo ajusté hasta que cuadrasen las medidas leídas. -0.04 es una lectura que me daba el programa en vacío, es decir, sin conectar ningún condensador, así que se me ocurrió rectar ese valor de 0,04uF. No se si será que los 40 nanofaradios es por algún error en el programa, es por que las pistas de la protoboard hacen de condensador o es por algún tema interno del arduino.

Con respecto a poner resistencias mucho más altas no hay problema teóricamente, pero lo tengo que probar. El programa en principio lo hice únicamente con fines educativos.

La verdad que con el arduino se puede hacer un polímetro bastante práctico y barato. Por supuesto con limitaciones.

Ni que decir tiene que se admiten mejoras al programa que hice. Si alguien ve como mejorarlo, aumentando el rango de lecturas o implementándole otras funciones, pues por supuesto bien venido sea. Eso sí, ruego que se prueba antes de colgar el código aquí y que se comente de la forma más exhaustiva posible, el código incluido o modificado.


fm

Es diferencia entre el valor teórico y el valor que has medido viene determinado por:
- el tiempo que tarda el  AVR en invocar a la rutina para leer el tiempo.
- el tiempo que tarda el código digitalWrite hasta que realmente se pone el pin a 1 o a 0.
- error de cuantización del contador de micros. Es decir, tu mejor resolución es 1 micro segundo.
Por otro lado, las rutinas digitalWrite y microseconds son deterministas, e.d. constantes. Por eso puedes añadir ese offset, que realmente debería ser un offset en vez de una constante por la que multiplicas.

Resumiendo:
1. cuando la constante RC sea inferior a 1us o de unos poco microsegundos, el error será mayúsculo.
2. tendrías que calibrar cuanto tiempo se tarda, desde que invocas a microseconds y se pone el pin a 1 y restar este valor al tiempo que estás midiendo a modo de offset.
   

Cheyenne

@lm386, ese sistema de ajuste de valores es muy bueno para ti pero puede ser muy malo para cualquier otro que vaya a utilizar el código ya que has fijado unos ajustes para tu resistencia y tu Arduino. Lo importante es conseguir precisión independientemente del usuario y los elementos que utilice, bien porque se consigue con el código reducir los errores o bien porque se establece una subrrutina de calibración que cada usuario puede hacer. No lo he pensado mucho así que no sé si para este caso hay alguna forma.
http://cuadricopterodiyarduino.blogspot.com/

lm386


@lm386, ese sistema de ajuste de valores es muy bueno para ti pero puede ser muy malo para cualquier otro que vaya a utilizar el código ya que has fijado unos ajustes para tu resistencia y tu Arduino. Lo importante es conseguir precisión independientemente del usuario y los elementos que utilice, bien porque se consigue con el código reducir los errores o bien porque se establece una subrrutina de calibración que cada usuario puede hacer. No lo he pensado mucho así que no sé si para este caso hay alguna forma.


La única forma que se me ocurre, es modificar el programa para que pueda auto calibrarse usando la capacidad de un condensador conocido, pero eso supone hacer más complejo el código y más difícil de entender para el que quiera entender como funciona el programa. Aunque es una idea totalmente razonable la que propones, creo que con que cada uno modifique la cifra hasta conseguir una lectura correcta, de un condensador de capacidad conocida, es suficiente por el momento.

Este programa posiblemente lo termine ampliando y mejorando, pero como lo hago como simple hobbye, no se para cuando estará. Hice pruebas con condensadores de mucha menos capacidad y en condensadores de cientos de pico faradios las lecturas son correctas. Pero bajando de los 100 picofaradios se producen errores monumentales, posiblemente por que las entradas del arduino tengan algún tipo de condensador entre sus patillas o a nivel interno dentro del propio chip o yo que se, lo mismo las pitas también hacen de condensador.

Cheyenne

De todas formas si los condensadores los fa rican con un 20% de precisión de su capacidad y teniendo en cuenta que en la gran mayoría de sus usos  no se necesitan valores más exactos creo que tu programa cumple muy bien su finalidad.
http://cuadricopterodiyarduino.blogspot.com/

arielC

perdón que responda a este hilo que tiene ya más de un año pero como se refiere a un desarrollo específico me parece que lo mejor es continuarlo y no abrir otro para hacer referencia a este mismo.

Justamente ayer observaba en una casa de electrónica un medidor de componentes y recuerdo perfectamente que medimos un capacitor electrolítico de 470uf y marcaba un margen de error exactamente igual al tuyo.

La consulta que quería hacer es la siguiente ¿el riesgo del voltaje es solo si se llegara a medir un capacitor cargado? ¿si me aseguro de descargarlo puedo medir capacitores de cualquier voltaje?

muchas gracias

uargo

#21
Sep 04, 2015, 01:50 pm Last Edit: Sep 04, 2015, 03:05 pm by uargo
La verdad que es un circuito peligroso, tarde o temprano pincharas un condensador con 12v y adios, ademas q tarde 10 seg en medir uno de 1000uF me parece muy poco practico...

Los capacimetros profesionales montan el condensador en un circuito LC y miden la frecuencia de resonancia, como sabemos la frecuencia y el valor de L es un valor fijo conocido aplicamos la formula y ya, es super rapido (nada de 10s, en menos de medio segundo medimos cualquier valor) y ademas es mas preciso...

Lo unico es que no podemos hacer pistas largas o poner cables en el circuito LC pues afectaria creando un cierto valor L residual, pero haciendolo bien no hay problema.

Lo otro seria poner dos L de valores distintos controladas con un rele para tener 2 escalas de medida y poder tener un gran rango de valores a medir.

Por ultimo mostrar los valores en un LCD y hacerlo autonomo (tipo polimetro) sin necesidad de ordenador

Y ya para los mas avezados poner varios reles para conectar y desconertar L o C segun queramos y asi poder medir bobinas y condensadores, puesto que usamos un circuito LC asi que segun sustituyamos uno u otro componente podemos medir las dos cosas.

Lo montamos todo en un tupperwear de tamaño adecuado con una pila de 9v y tenemos un medidor LC autonomo, quedaria algo asi:





En esta pagina montan uno tipo RC con un 555
http://www.instructables.com/id/Capacitance-meter-with-arduino-and-555-timer/

Aqui para medir inductanciascircuito LC con un 339
http://reibot.org/2011/07/19/measuring-inductance/

otro
http://www.instructables.com/id/Medidor-de-capacitancia-con-el-arduino-y-el-op-amp/

arielC

Muchísimas gracias!!!

es un gran aporte!

Go Up