Medidor de inductancias con Arduino

Hola, hace algún tiempo que vengo buscando una forma simple de medir inductancias de una forma exacta y con un circuito que no sea demasiado complejo, hasta que al final he dado con esta página:
Easily measuring inductance with Arduino
Aquí hace un medidor muy sencillo y soprendentemente exacto, funciona de la siguiente forma, se excita con una secuencia de pulsos una red LC, la frecuencia de estos pulsos es baja (200Hz) de tal manera que el circuito en el inicio de cada pulso oscila con la frecuencia de resonancia de la red LC, esta oscilación es muy pequeña, por eso la pasamos por un comparador el cual nos da a la salida una señal pulsada, con arduino medimos la duración de un pulso y así obtenemos la frecuencia de oscilación, y de ahí la inductancia ya que conocemos el valor del condensador. Arduino también es el encargado de excitar la red LC.
El código que he usado es el siguiente:
Código:
double pulso, frecuencia, condensador=470.E-9, inductancia;
int pinOut = 13;
int pinIn = 11;

void setup() {
  Serial.begin(9600);
  pinMode(pinIn, INPUT);
  pinMode(pinOut, OUTPUT);
  Serial.println("Medidor de Inductancias");
}

void loop() {
  digitalWrite(pinOut, HIGH);
  delay(5);
  digitalWrite(pinOut, LOW);
  delayMicroseconds(100);

  pulso = pulseIn(pinIn, HIGH, 5000);

  if (pulso > 0.1){
    frecuencia = 1.E6/(2*pulso);
    inductancia = 1./(condensador*frecuencia*frecuencia*4.*3.14159*3.14159);
    inductancia *= 1E6;

    Serial.print("Pulso en us:");
    Serial.print( pulso );
    Serial.print("\tfrecuencia Hz");
    Serial.print( frecuencia );
    Serial.print("\tinductancia uH:");
    Serial.println( inductancia );
    delay(20);
  }

}
Estoy probando el circuito con el comparador LM311, en vez de con el LM339, en principio el funcionamiento debería ser el mismo, lo simulo con LTspice y los resultados son los esperados:
1.jpg
Entrada y oscilación sin amplificar:
2.jpg
Señal después de pasar por el comparador (la que mediría arduino):
3.jpg
Ampliamos y vemos que la señal es una señal cuadrada:
4.jpg

Arduino lo que hace es medir la duración de un pulso, en este caso sería 7.013us
Obtiene la frecuencia de oscilación (que es la inversa del período) haciendo: 1/(2*7.013us)=71.296kHz
y de ahí obtiene el valor de la bobina: L=1/(4*pi^2*f^2*C)=1/(4*pi^2*71296^2*470e-9)=1.06e-5=10.6uH
Bueno, tampoco es exacto para tirar cohetes, pero dependiendo para lo que queramos la bobina y la exactitud que necesitemos será suficiente o no.
Además cambiando el condensador y tomando otras medidas a otras frecuencias (recomendable frecuencia cercana a la que va a trabajar la bobina) podremos obtener más valores e interpolar.

Mi problema es que para hacer funcionar el comparador LM311 necesito alimentarlo con +-12V (dual supply) y alimentándolo a +5V (single supply) no funciona, en la hoja de datos viene que debería funcionar, pero a mi en la práctica no me va y no sé por qué.

No sé si al final tendré que terminar comprando el LM339, porque mi idea es alimentarlo todo con arduino y no depender de una fuente simétrica externa. A ver si alguien puede ayudarme en este pequeño problema.

Un saludo.
 
Última edición:

pandacba

Rocker Bear
Cuando lo alimentas con una fuente simple el pin que va a masa debe ir a una tensión intermedia logrado con un divisor resistivo.
Por otro lado nunc alimentes el arduino con lo que alimentas el resto del circuito te traerá dolores de cabeza
 

Dr. Zoidberg

Well-known-Papá Pitufo
Mi problema es que para hacer funcionar el comparador LM311 necesito alimentarlo con +-12V (dual supply) y alimentándolo a +5V (single supply) no funciona, en la hoja de datos viene que debería funcionar, pero a mi en la práctica no me va y no sé por qué.
El problema es que no nos decís que es lo que no te funciona, pero mirá esta tabla del datasheet:
LM311-OP.gif
Con 5V debe funcionar el chip (aunque debe ser algo marginal...supongo). El problema son los voltajes de entrada, que tenés que acotarlos a lo que dice ahí (Vi) o podés hacer fallar la etapa de entrada.

Fijate en el datasheet de Texas que todos los valores se refieren (tipo GND) a la tensión igual a la mitad de V+ - V-, así que tal como te dice Panda, tenés que usar la mitad de 5V como masa virtual y luego acomodar el Arduino para que interprete esa señal. Es decir, vas a tener que corregir la polarización de las entradas del LM311... a la salida no creo que haya problema.
 
Hola de nuevo, muchas gracias por la ayuda, efectivamente el problema estaba en que la tensión de entrada tomaba también valores negativos, de unas centenas de milivoltios, pero suficiente para provocar un mal funcionamiento del comparador, para alimentarlo a +5V he usado un divisor de tensión con dos resistencias iguales, creando una masa virtual de forma que la alimentación sea +-2.5V y de esta forma el comparador LM311 ya sí funciona.

Todo iba perfecto hasta que no sé por qué razón (no sé que he cambiado) la bobina ha disminuido sus oscilacioens y son ahora demasiado pequeñas de forma que la medida que obtengo es errónea. La verdad es que este tipo de circuito es muy subceptible a cualquier cambio en la longitud de los cables, conexiones.. etc. Lo revisaré o lo haré soldado en una PCB.

Un saludo.
 
Arriba