| Ваш IP: 3.237.105.210 | Online(21) - гости: 10, боты: 11 | Загрузка сервера: 2.59 ::::::::::::

L/C метр (Arduino)

На платформе Arduino можно собрать простой измеритель емкости и индуктивности. Прибор позволяет измерять индуктивность катушек от единиц мкГн до десятков мГн и емкость конденсаторов от десятков пФ до 0,5 мкФ с достаточно большой точностью. Схема собрана на компараторе LM311 и нескольких пассивных элементах, на плате Arduino собран частотомер (до 6,5 МГц).

Измерение емкости и индуктивности происходит достаточно просто, так как L/C элементы представляют собой колебательный контур, то компаратор совместно с колебательным контуром будет генерировать частоту, а частотомер на Arduino произведет пересчет частоты в значения индуктивности или емкости. В уст-ве две кнопки управления, первая переключение режимов измерения L/C, вторая калибровка нуля. Из схемы видно, что в уст-ве уже имеется индуктивность и емкость, индуктивность необходима для измерения емкости, а так же для измерения малых величин индуктивности. Емкость нужна для измерения индуктивности, при этом индуктивность встроенная в прибор может иметь большой разбег в номинале, а конденсатор должен быть точным, от него зависит базовая погрешность прибора. При первоначальной настройке прибора необходимо закоротить контакты «⊥» и «L», нажать на кнопку калибровки нуля, при этом произойдет измерение индуктивности встроенная в прибор, значение индуктивности будет сохранено в энергонезависимой памяти. Далее можно подключить любую катушку или конденсатор выбрать нужный режим (L/C) и провести измерение. Для измерения емкости необходимо нажать на кнопку L/C, закоротить контакты «⊥» и «L», а  емкость подключить к контактам «⊥ или L» и «C».

При измерении индуктивности или емкости значения индуктивности или емкости внутренних элементов (L1 C1), будут автоматически вычтены из конечного результата. Полученные значения выводятся на LCD индикатор 1602 на первую строку, а во второй строке выводится резонансная частота.

#include <FreqCount.h> // freqcount.zip
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 7, 2, 3, 4, 6);// RS,E,D4,D5,D6,D7
#include <EEPROM.h>
unsigned long f;
const float c = 1000.0*pow(10,-12);
float l_pop=0.00;
float l,c_iz;
int l_int;
byte lc,w;
 
 
void setup() {Serial.begin(9600);
  lcd.begin(16, 2);// LCD 16X2
  FreqCount.begin(1000);
  pinMode(13,INPUT);pinMode(12,INPUT);
  l_pop = float(EEPROM.read(0)*256 + EEPROM.read(1))/100; 
  Serial.println(float(EEPROM.read(0)*256 + EEPROM.read(1))/100);
}
 
void loop() {
    lcd.setCursor(0,1);lcd.print("F = ");
  if(FreqCount.available()&&w==0){f = FreqCount.read();lcd.print(f);lcd.print(" Hz      ");}
  if(digitalRead(13)==HIGH){
   l_pop = float(1000000/(4*PI*PI*f*f*c));lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration  0 ");
   l_int=round(l_pop*100);EEPROM.update(0,highByte(l_int)); EEPROM.update(1,lowByte(l_int));delay(1000);
  }
  if(digitalRead(12)==HIGH&&lc==0){lc=1;delay(200);w=1;} if(digitalRead(12)==HIGH&&lc==1){lc=0;delay(200);w=1;}
  if(lc==0){
  l = float(1000000/(4*PI*PI*f*f*c))-l_pop;
  lcd.setCursor(0,0);lcd.print("L = ");
  if(l<=1000){lcd.print(l,1);lcd.print(" uH       ");}
  if(l>1000){lcd.print(l/1000,3);lcd.print(" mH       ");}}
 
    if(lc==1){
c_iz=float(1000000000000/(4*PI*PI*f*f*l_pop*pow(10,-6))-c*pow(10,12));
  lcd.setCursor(0,0);lcd.print("C = ");
  if(c_iz<=1000){lcd.print(c_iz,1);lcd.print(" pF       ");}
  if(c_iz>1000){lcd.print(c_iz/1000,2);lcd.print(" nF       ");}}
w=0;}

В скетче необходимо указать точную емкость эталонного конденсатора:

const float c = 1000.0*pow(10,-12); // == 1000 пФ

 

Конденсатор 0,1 мкФ

Конденсатор 82 пФ

Эталонный конденсатор

Так прибор способен проводить измерения емкости только до 0,5 мкФ, было принято решение немного доработать уст-во. Добавлена еще одна клемма для подключения электролитических конденсаторов емкостью от 0,1 до 10000 мкФ и пара резисторов.

Процесс измерения емкости электролитических конденсаторов достаточно прост, через резистор номиналом 1 кОм подается напряжение 5 В на конденсатор, одновременно аналоговый вход микроконтроллера производит измерение напряжения подаваемое на конденсатор, как только напряжение достигнет 63% от 5 В, микроконтроллер подсчитает время заряда и пересчитает его по формуле: T = RC. Как и в первых двух режимах измерения, можно воспользоваться кнопкой калибровки нуля, для более точного измерения емкости конденсаторов небольшого номинала.

#include <FreqCount.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 7, 2, 3, 4, 6);// RS,E,D4,D5,D6,D7
#include <EEPROM.h>
 
unsigned long f,time0,time1,time2;
const float c = 1000.0*pow(10,-12);
float l_pop=0.00;
float l,c_iz,c_uf,null0;
int l_int;
byte lc,w;
 
 
void setup() {Serial.begin(9600);lcd.begin(16, 2);// LCD 16X2
  FreqCount.begin(1000);// 1000 мс - время измерения частотомера
  pinMode(13,INPUT);pinMode(12,INPUT);pinMode(A0,INPUT);
  l_pop = float(EEPROM.read(0)*256 + EEPROM.read(1))/100; // eeeprom
}
 
void loop() {
  ///////////////////// F ///////////////////////////////////////////////////
  if(lc<2){lcd.setCursor(0,1);lcd.print("F = ");
  if(FreqCount.available()&&w==0){f = FreqCount.read();lcd.print(f);lcd.print(" Hz      ");}}
  //////////////////// calib 0 //////////////////////////////////////////////
  if(digitalRead(13)==HIGH&&lc<2){
   l_pop = float(1000000/(4*PI*PI*f*f*c));lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration  0 ");
   l_int=round(l_pop*100);EEPROM.update(0,highByte(l_int)); EEPROM.update(1,lowByte(l_int));delay(1000);}
  ///////////////////////// button L/C/Cuf ////////////////////////////////////// 
  if(digitalRead(12)==HIGH){lc++;lcd.clear();w=1;delay(200);if(lc>2){lc=0;}}
  /////////////////// L /////////////////////////////////////////////////////
  if(lc==0){
  l = float(1000000/(4*PI*PI*f*f*c))-l_pop;
  lcd.setCursor(0,0);lcd.print("L = ");
  if(l<=1000){lcd.print(l,1);lcd.print(" uH       ");}
  if(l>1000){lcd.print(l/1000,3);lcd.print(" mH       ");}}
  ////////////////// C pF nF ////////////////////////////////////////////////
    if(lc==1){
c_iz=float(1000000000000/(4*PI*PI*f*f*l_pop*pow(10,-6))-c*pow(10,12));
  lcd.setCursor(0,0);lcd.print("C = ");
  if(c_iz<=1000){lcd.print(c_iz,1);lcd.print(" pF       ");}
  if(c_iz>1000){lcd.print(c_iz/1000,3);lcd.print(" nF       ");}}
  //////////////// C uF /////////////////////////////////////////////////////
      if(lc==2){
    lcd.setCursor(15,0); lcd.print("*");
    pinMode(11,OUTPUT);digitalWrite(11,HIGH);    
  time0=micros();while(analogRead(A0)<644){time2=micros()-time0;if(time2>=10000000){break;}}time1=micros()-time0; 
  while(analogRead(A0)>0){pinMode(11,OUTPUT);digitalWrite(11,LOW);}
  lcd.setCursor(0,0);c_uf=time1;c_uf=c_uf/1000-null0;c_uf=abs(c_uf);
 
   if(time1>=10000000){lcd.setCursor(1,0);lcd.print(" TEST uF   ");}
  else{lcd.print(" C = ");lcd.print(c_uf);lcd.print(" uF       ");}
  if(digitalRead(13)==HIGH){null0=c_uf;lcd.clear();lcd.setCursor(0,0);lcd.print(" calibration  0 ");delay(1000);}
  delay(100);}w=0;}//loop

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=61

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • УМЗЧ 80 Вт на LM3875

    УМЗЧ 80 Вт на LM3875

    На ИМС LM3875 можно собрать простой но достаточно мощный УМЗЧ, выходная мощность усилителя 80 Вт. LM3875 это высококачественный усилитель мощности звуковой частоты, способный выдавать 56 Вт непрерывной средней мощности на нагрузку 8 Ом при КНИ не более 0,1%, имеет частотный диапазон от 20 гц до 20 кГц . При подключении двух …Подробнее...
  • Источник питания 0…13.8В 10А

    На рисунке показана схема источника питания  с выходным напряжением от 0 до 13,8 (16В) с максимальным током нагрузки в 10А. В схеме используется микросхема LM723 и три транзистора, два из которых силовые — 2N3055.      Регулировка выходного напряжения осуществляется потенциометром VR1 (1К).Транзисторы VT1 VT2 должны быть установлены на радиаторы, …Подробнее...
  • Вольтметр — светодиодный индикатор

    R1, R2, R3 — делители напряжения в диапазонах 0-1,2В, 0-12В и 0-120В. Вольтметр индикатор собран на микросхеме LM3914. Ток протекающий через каждый светодиод может достигать 30мА. R4 — регулирует яркость светодиодов. Каждый светодиод имеет шаг 1,2В (в диапазоне 12В). Изменив значения делителей напряжения R1 R2 R3 Вы можете самостоятельно подобрать …Подробнее...
  • Универсальный видео разветвитель

    Данный видео разветвитель может позволить записывать видео сигнал от одного источника на десять видеомагнитофонов(при условии что видеомагнитофоны не оказывают шунтирующего действия друг на друга). Транзисторы используемые в схеме — КТ315 любые или КТ3012 КТ342 КТ503. Конденсаторы на 33 мкФ можно заменить на другие от 22 до 47 мкФ. С32 на …Подробнее...
  • Миниатюрный радиоприемник на ZN414

    Миниатюрный радиоприемник на ZN414

    На микросхеме ZN414 (аналоги — TA7642, MK484) можно собрать простой, миниатюрный АМ приемник СВ-ДВ диапазона. Микросхема имеет всего три вывода и похожа на транзистор, она представляют собой высокочастотный тракт приемника прямого усиления, содержащий усилитель радиочастоты (УРЧ), детектор и систему автоматической регулировки усиления (АРУ). УРЧ имеет большой коэффициент усиления и высокое входное сопротивление, что позволяет …Подробнее...