Medidor de INDUTANCIAS para o experimentador


Foto medindo uma indutancia de 92,5µH 2%

Este projeto foi baseado no trabalho do colega americano N4TMI Michael A. Covington, com o artigo publicado pelo colega holandes Rob PA3CJD neste link

COIL TESTER
 

Como um indutor comporta-se como um capacitor acima de frequencia de ressonancia devido a capacitancia distribuida e a resistencia interna inerente (na frequencia usada), e mais ainda o Q do indutor fica zerado, em frequencias, acima deste ponto. É importante conhecermos o valor da frequencia natural do indutor que vamos usar.
Um indutor usado como choque de RF, serve para deter a RF e deixar passar a corrente continua, portanto acima da frequencia natural ou de ressonancia como um capacitor a RF passará, ou seja devemos usar um indutor para este casos até 90% da frequencia natural.
Já um indutor usado em um filtro ou circuito ressonante (que trabalha associado a capacitores) a frequencia de trabalho util dele diminue, assim um indutor pode ser utilizado em até 75% da frequencia natural, neste caso.
Resolvemos montar com um arduino, pois o equipamento tem muita utilidade para os montadores e experimentadores.
O projeto ficou bem simples e barato, pois compramos praticamente tudo via web da Asia.
Usamos um LM7805 para obter os 5V e os 12V necessarios a alimentação do equipamento, outro CI usado foi o 74HC4017 divisor por 10, pois o arduino consegue medir frequencias até aproximadamente 6,5MHz assim nosso aparelho pode medir ou trabalhar até 65MHz.
Usamos um arduino NANO com USB pois é necessario acertar alguns parametros que mudam conforme a montagem ou componentes usados.
A alma do aparelho é o circuito oscilador utilizamos dois fets tipo J310 que tiveram um comportamento excelente chegando a 65MHz com a alimentação de 12V. Colegas que montaram usando o BF245C tiveram resultados bons tambem. Para comutar o capacitor de 150pF usamos umrele acionado por um 2N2222 que recebe um comando do arduino.
A caixa de aluminio foi comprada pela WEB/correio com as medidas de 34x75x116mm.
O Display colorido TFT serial  de 128x160 pixels (area util de 38x31mm) compramos da Asia.

Uma outra utilidade alem de medir indutancias o pequeno equipo tambem é um frequencimetro, com a entrada na mesma ponta de medição, bastando apenas colocar um capacitor de 100nF em serie para isolar a temnão continua.
O circuito :


Material :

Arduino nano com USB cerca de 2US$
Display de 128x160 para comprar no Ebay procure esta figura  custo 3.60US$


Materiais simples como PCB padrão, conector BNC painel, soquetes de CIs, terminais de 40 pinos macho e femea, rele e o 74HC4017 foram todos comprados da Asia

Montagem
Minhas montagens não são caprichadas, mas funcionam e esta é uma parte importante.
como se trata de um oscilador que vai até uns 60MHz, é muito importante as ligações curtas, as blindagens e uma montagem compacta.
Montamos em uma placa de circuito impresso padrão, com todo os componentes soquetados , somente a fonte de alimentação ficou de fora.
     
Foto com os componentes montados               Foto somente a placa padrão e a fonte

Modulo divisor
Montamos o 74HC4017 como "inseto morto" (dead bug) e o soldamos como se fosse um 4017 normal em um soquete torneado assim ficou a montagem


 



Montagem do Oscilador / rele

O oscilador montamos em uma placa padão pequena de fibra de vidro e a parte do rele em uma placa padrão comum. Usamos pinos machos para fixar ao soquete na palaca mãe.





A caixa de aluminio foi comprada pronta e deve ter um furo para acesso a porta USB de programação, pois é necessario calibrar o equipamento.



A fonte de alimentação foi montada em uma placa pequena e o 7805 foi fixado na lateral interna da caixa




Calibração  do Frequencimetro :
Ligue um gerador de RF com frequencimetro calibrado na entrada do Lmeter, ou um DDS.
Para calibrar o frequencimetro existem dois parametros no programa ou sketch (as linhas com // são linhas de comentario e não são usadas pelo arduino) :

1. O valor que esta como 4 na linha de programação abaixo, ele deve ser ajustado para que o valor seja o mais proximo possivel do valor da frequencia de entrada
FreqCounter::f_comp = 4;
   // Cal Value / Calibrate with professional Freq Counter
  // este parametro tambem ajusta o valor da frequencia lida
  //entre zero e 10

2. Entrando com uma frequencia de 30MHz ler no Lmeter a frequencia em Hz .... dividir 30000000 pelo valor lido no Lmeter ... substituir o valor nesta linha do sketch :
float ajuste = 1.000085;
No meu caso o valor foi este. erros de alguns Hz podem ser tolerados.

Calibração de indutancia :
São necessarias pelo menos dois indutores de precisão. Eu usei alguns que estavam na caixa de capacitores de 720µH 2% e liguei eles em serie e paralelo obtendo valores diferentes de indutores de 2%. Assim meu medidor ficou com erro maior que 2%, ou seja menor que 3%.
A unica linha do sketch que influi no valor do indutor lido (valor do capacitor em paralelo com o oscilador) é a seguinte :
int cap = 143;
//capacitancia em paralelo acionada pelo rele 
// ajuste até obter a indutancia dentro do padrão usado

Uso
Para saida de sinal usamos um conector BNC painel.
Para conectar um indutor é necessario conexões e elas aumentam a indutancia e consequentemente o erro em medida baixas (abaixo de 5µH). Não coloquei sistema de medida e compensação das pontas de prova, assim para medidas em indutores de baixo valor  é necessário compensar a indutancia das pontas. Curto circuita-se elas e obtem a leitura em nH que deverão ser subtraidas do valor o do indutor medido.
As leituras deixei em nanoFarad então elas podem variar muito pouco a cada medida, pois como dissemos o oscilador trabalha até 60MHz e a bobina osciladora é exatamente a que estamos medindo então qualquer mudança de temperatura ou capacitancia do nosso corpo ou ainda das coisas proximas ao indutor influem na medida, obvio que com valores menores isto é mais critico.
Quando a leitura da frequencia natural for nula e existir uma frequencia com o capacitor em paralelo, é sinal que a frequencia de ressonancia esta acima da capacidade de medição do medidor.
É possivel medir frequencias com este equipo, bastando colocar um capacitor, de 100nF, em serie com a ponta viva do instrumento e medir.
Outra medida simples é a da frequencia de ressonancia de um circuito LC, basta colocar um indutor em paralelo com um capacitotor e a frequencia dada como natural sera afrequencia de ressonacia do circuito LC.
Ainda é possivel medir valores de capacitores de 100pF até 2000pF com um indutor de 33 a 82µH em paralelo como capacitor medido, o valor aparecerá em capacitancia interespiras (como se a capacitancia di capacitor colocado em paralelo fosse acapacitancia inter espiras do indutor), para obter o valor real, o valor da capacitancia do indutor devera ser descontado (sem o capacitor externo em paralelo). Para valores abaixo de 100pF o indutor devera ser de 1 a 4.7µH.
Com algumas modificações é possivel transformar este equipo em um medidor de ressonancia, capacitancia e frequencimetro com escalas na tela.


Programa do Arduino ou sketch ... para programar um arduino é necessario ter um programa chamado IDE instalado (site arduino.cc) ...copie o skech abaixo para um sketch vazio acerte a placa como nano e compile ...depois é só ligar a USB ao arduino via cabo e mandar carregar o programa e boa diversão...

73 de py2ohh miguel

// partes do sketch foram retiradas do BLOG de  John Owen
//do site http://www.vwlowen.co.uk/index.htm

// incluir library entrada do frequencimetro pino 5 digital
//  acionamento do rele = D4
// display 1.8TFT V1.0 Azul 128x160
// vcc led 120R vindo do +5V CS=D10 SK=D13 SDA=D11 AO=D9 RST=D8
//Divisor por 10 74HC4017

#include <SPI.h>
#include <Adafruit_GFX.h>

#define cs   10
#define dc   9
#define rst  8
#include <Adafruit_ST7735.h>
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
#include <FreqCounter.h>

#define PRETO 0x000
#define AZUL 0x001F
#define VERDE 0x07E0
#define AMARELO 0xFFE0
#define BRANCO 0xFFFF

float  frq;
float  frq1;
// colocar na entrada um gerador padrão ou DDS ajustado para 30MHz
// divida o valor de 30000000 pela frequencia lida altere o valor
//do ajuste para obter o valor correto em kHz em Hz fica dificil
// tem outro parametro passivel de ajuste na subrotina frequencimetro
float ajuste = 1.000085;

double cd;
float coil;
double ls = 0.17; //indutancia residual dos conectores e fios
int x = 0;
int pcbcap = 23; //capacitancia parasita da pcb
int cap = 143; //capacitancia em paralelo acionada pelo rele ajuste
// até obter a indutancia dentro do padrão usado

void setup() {
  SPI.begin();
  delay(50);
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab

  tft.setRotation(3); //altera a rotação da tela

  tft.fillScreen(PRETO);
  tft.setCursor(1, tft.height() - 94);
  tft.setTextSize(3);
  tft.setTextColor(AMARELO);
  tft.print(" LMETER");
  tft.setCursor(1, tft.height() - 54);
  tft.setTextSize(3);
  tft.setTextColor(VERDE);
  tft.print(" PY2OHH");

  delay(10000);

  tft.fillScreen(PRETO);
  tft.setCursor(1, tft.height() - 128);
  tft.setTextSize(1);
  tft.setTextColor(BRANCO);
  tft.print("FREQUENCIA natural");

  tft.setCursor(1, tft.height() - 94);
  tft.setTextSize(1);
  tft.setTextColor(BRANCO);
  tft.print("FREQUENCIA com 150pF");

  tft.setCursor(1, tft.height() - 68);
  //  tft.setTextSize(1);
  //  tft.setTextColor(BRANCO);
  tft.print("CAPACITANCIA inter-espiras");

  tft.setCursor(1, tft.height() - 36);
  tft.setTextSize(1);
  tft.setTextColor(BRANCO);
  tft.print("   INDUTANCIA");

  tft.setCursor(15, tft.height() - 10);
  tft.setTextSize(1);
  tft.drawFastHLine(0, tft.height() - 12, tft.width() - 2, AZUL);
  tft.setTextColor(BRANCO);
  tft.print(" Medidor de Indutancia");

  pinMode (4, OUTPUT);

}

void loop() {

  frq = 0;
  frq1 = 0;
  frequencimetro();

}


void frequencimetro() {

  FreqCounter::f_comp = 4; // Cal Value / Calibrate with professional Freq Counter
  // este parametro tambem ajusta o valor da frequencia lida
  //entre zero e 10
  delay (100) ;
  FreqCounter::start(1000);  // values of 10, 100 or 1000 ms are practicable for a resolution of 100, 10 and 1 Hz

  while (FreqCounter::f_ready == 0) {

    frq = (FreqCounter::f_freq);

    frq = (10 * frq) / ajuste ;
  }

  delay (1000);

  digitalWrite (4, HIGH);
  FreqCounter::start(1000);  // values of 10, 100 or 1000 ms are practicable for a resolution of 100, 10 and 1 Hz
  while (FreqCounter::f_ready == 0) {

    frq1 = (FreqCounter::f_freq);

    frq1 = (10 * frq1) / ajuste ;
  }
  if (frq > 10000)  {


    tft.fillRect(1, 11, 140, 22, PRETO);
    tft.setCursor(1, tft.height() - 116);
    tft.setTextSize(2);

    format(frq1);
    tft.print(" Hz");
    tft.setTextSize(1);
    tft.fillRect(1, 45, 140, 12, PRETO);
    tft.setCursor(1, tft.height() - 82);

    format(frq);
    tft.print(" Hz");

    if (frq1 > 60000000) {
      (frq1 = 0);
    }

    delay(300);
    agoravai();

  }

  delay(1000);
  digitalWrite (4, LOW);

}


void agoravai () {

  if (frq > 10000) {
    cd = ((cap) / ((pow((frq1 / frq), 2)) - 1)) - pcbcap;
    if (cd < 0.01) {
      cd = 0;
    }
    coil = (pow((1000000 / (2 * (3.141516) * (frq / 1000) * sqrt(pcbcap + cap + cd))), 2)) - ls ;

    tft.setTextSize(2);
    tft.setCursor(1, tft.height() - 58);
    tft.fillRect(1, 69, 159, 22, PRETO);
    tft.setTextColor(VERDE);
    tft.print(cd);
    tft.print(" pF");

    tft.setCursor(1, tft.height() - 24);
    tft.fillRect(1, 103, 159, 22, PRETO);
    tft.setTextSize(2);


    //tft.print(long(1000 *(coil))); // texto sem formatação
    coil = (long(1000 * (coil))); //texto formatado
    format(coil); //texto formatado
    tft.setTextSize(2);
    tft.print(" nH");

    delay(5000);
  }
}

//subrotina format para colocar um ponto verde separando milhar
void format(unsigned long value) {

  unsigned long j = 10000000;

  for (int i = 7; i >= 0; i--) {
    int digit = (value / j) % 10;
    tft.setTextColor(AMARELO);

    tft.print(digit);
    if ( (i == 6) || (i == 3)) {
      tft.setTextColor(VERDE);
      tft.print(".");
    }
    j /= 10;
  }
}