carlosvolt
Published © LGPL

Coil or inductor meter with Arduino and OLED display

In this tutorial we will see how to create an inductor meter with an Arduino Nano, an OLED display and other electronic components.

IntermediateProtip315
Coil or inductor meter with Arduino and OLED display

Things used in this project

Story

Read more

Code

Source code

C/C++
Source code
#include "U8glib.h"//Librería para el control del display oled
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI // Se habilita esta linea según el display a usar en este caso el driver SH1106    
double IPulso, frequency, capacitor, valormH, valoruH, inductance;
int muestras = 250;
const int pulsoEntrada = 11;
const int pulsoSalida = 12;
void setup()
{
  Serial.begin(9600);
  pinMode(pulsoEntrada, INPUT);// Lectura del pulso de entrada
  pinMode(pulsoSalida, OUTPUT);// Carga de la circuito resonante LC
  delay(2000);
}
void loop()
{
  valoruH = lectura();
    valormH = valoruH / 1000;
    //Muestra el valor en mH en el terminal serial
    Serial.print("Valor: ");
    Serial.print(valormH);
    Serial.println(" mH");
    //Muestra el valor en uH en el terminal serial
    Serial.print("Valor: ");
    Serial.print(valoruH);
    Serial.println(" uH");
  delay(1);
//Display   
    u8g.firstPage();  
  do {
    draw();//Llama a la función draw
  } while( u8g.nextPage() );  
  
}

//Funcion

double lectura()
{
  double sumaInductancia = 0;
  for (int contador = 0; contador < muestras ; contador++)
  {
    digitalWrite(pulsoSalida, HIGH);
    delay(5);// Tiempo para cargar la bobina.
    digitalWrite(pulsoSalida, LOW);
    delayMicroseconds(100);// verificar que mide la resonancia.
    IPulso = pulseIn(pulsoEntrada, HIGH, 5000);//Transcurrido este tiempo pulsein devuelve un varlor 0                                       
    if (IPulso > 0.1) 
    {
      capacitor = 2.12E-6;// Medir la capacidad del capacitor para mayor presición y cambiar ese valor obtenido
      frequency = 1.E6 / (2 * IPulso);
      inductance = 1. / (capacitor * frequency * frequency * 4.*3.14159 * 3.14159);
      inductance = inductance*1E6; 
      sumaInductancia += inductance;
    }
  }
  return (sumaInductancia / muestras);
}
//Función para mostrar los datos en el display
 void draw(void) {
//Imprimimos en pantalla el valor de la inductancia en henrios obtenida en unidad en mH y uH
  u8g.setFont(u8g_font_unifont);
    u8g.setPrintPos(0, 20); 
  u8g.print("Valor Inductor");//
  //Muestra el valor mH
  u8g.setPrintPos(0, 40); 
  u8g.print("mH: ");//
  u8g.setPrintPos(25, 40);
  u8g.print(valormH); 
//Muestra el valor uH
  u8g.setPrintPos(0, 60);
  u8g.print("uH: "); 
  u8g.setPrintPos(25, 60);
  u8g.print(valoruH, 0);

  }

Credits

carlosvolt
34 projects • 4 followers

Comments