| Ваш IP: 18.206.16.123 | Online(22) - гости: 10, боты: 12 | Загрузка сервера: 0.48 ::::::::::::

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

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

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

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

  • Схемы включения биполярных транзисторов

    Транзистор трех электродный прибор, его электроды: эмиттер, коллектор и база. При использовании транзистора в качестве усилителя напряжения, тока или мощности входной сигнал надо подавать на два других электрода и с двух электродов снимать сигнал (усиленный сигнал), при этом один из электродов будет обязательно общим. Это обстоятельство (общий электрод) и определяет …Подробнее...
  • Преобразователь частота-напряжение

    Преобразователь частота-напряжение преобразует импульсы с частотой от 0 до 9кГц в постоянное напряжение от 0 до 9В. Основа преобразователя микросхема ТС9401. Входной сигнал амплитуда которого не должна превышать напряжение питания (10…15В) подается на разъем CON1. Напряжение питания подается на разъем CON3. D2 препятствует протеканию тока в случае перепутывания полярности. Установка …Подробнее...
  • Ультралинейный усилитель мощности на 100Вт

    Ультралинейный усилитель мощности на 100Вт

    На рисунке представлена схема усилителя мощности НЧ в полосе частот от 10 до 600000Гц на 100Вт. Схема: Т1 Т2 и Т3 Т4 — входной усилитель выполненный по дифференциальной схеме, Т5 — каскад предварительного усиления, Т6 Т7 и Т8 Т9 — оконечный каскад с бестрансформаторым выходом по схеме с дополнительной симметрией …Подробнее...
  • Простой УМЗЧ (3)

    Простой УМЗЧ (3)

    Особенность данного УМЗЧ то, что в нем работают 3 составных транзистора. Это привело к минимуму используемых элементов. Такое построение пред оконечного каскада на VT2 обеспечило его высокое входное сопротивление и значительный коэффициент усиления и низкий уровень искажений при отсутствии ООС. Дополнительно увеличить коэффициент усиления позволила цепь R6 C5, что позволило …Подробнее...
  • Шестнадцатеричный дешифратор на одной микросхеме

    Широкодоступных микросхем дешифраторов способных отображать на цифровом табло числа от 0 до 15 соответственно поступающим на входы кодам от 0000 до 1111 практически нет. Для того что бы построить данное устройство необходимо несколько микросхем для индикации на семисегментном табло, но используя дешёвую микросхему ПЗУ К155РЕ3 и запрограммировать ее, можно получить …Подробнее...