1

Тема: Измерить индуктивности на LGT8F328

Основная статья - http://rcl-radio.ru/?p=131780

http://forum.rcl-radio.ru/uploads/images/2024/03/353ab3492ec65495a376c0450c7b551b.png

http://forum.rcl-radio.ru/uploads/images/2024/03/20e8c52c6636d0e357e3466737d678a3.png

http://forum.rcl-radio.ru/uploads/images/2024/03/d2878214264dfc1e03aa05dc7ee63dc3.png

http://forum.rcl-radio.ru/uploads/images/2024/03/315a6cdae72e6d38cf755efa12ee766b.png


#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 

#define CAL 31249; 
#define CAP    1000.0 // pF

extern uint8_t SmallFont[],BigNumbers[];
unsigned long f_out,tic;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  PORTD |= (1 << PD5); // подтягивающий резистор на PD5 (вход T1)
  // TIMER_1 INPUT T1
  TCCR1A = 0;TCCR1B = 0;TCNT1=0;
  TCCR1B = (1 << CS12) | (1 << CS11) | (1 << CS10);
  TIMSK1 = (1 << TOIE1);
  TCKCSR = (1 << F2XEN) | (1 << TC2XS1);
// TIMER_3 1 SEC
// (32000000/((31249+1)x1024))=1 Hz
  TCCR3A = 0;
  TCCR3B = 0;
  TCNT3=0;
  TCCR3B = (1 << CS32) |(1 << CS30) | (1 << WGM32);
  TIMSK3 = (1 << OCIE3A);
  OCR3A = CAL;
// TIMER_2 OUTPUT 8 MHz
TCCR2A = 0;TCCR2B = 0;TCNT2=0;
  TCCR2A = 1 << COM2A0 |1 << WGM21;
  TCCR2B = 1 << CS20;
  OCR2A = 0;
  C0SR = 0;C0XR=0;
  C0XR |=(1<<C0OE); // C0OE[7] = 1, выход компаратора AC0 для внешнего порта PD2
  // ВЫБОР ИНВЕРСНОГО ВХОДА
  ADCSRB = 0b01000000;// ADMUX
  /*
  CME01[7] CME00[6] Источник входного сигнала AC0
  0        0        ACXN
  0        1        ADMUX
  1        0        DFFO
  */
  ADMUX = 0b00000000; // CHMUX[3:0] = 0000 Источник входного сигнала PC0 (A0)
  // ВЫБОР НЕИНВЕРСНОГО ВХОДА
  C0SR &=~(1<<C0BG);C0XR &=~(1<<C0PS0);
  /*
  C0BG C0PS0 Источник входного сигнала AC0
  0    0     AC0P
  0    1     ACXP
  1    0     DAO
  */
  delay(100);
}

void loop() {
 float l_iz = 1/(4*3.14*3.14*f_out*f_out*CAP*pow(10,-12))*1000000.0;
 if(l_iz>100000||l_iz<0){l_iz=0;}
 Serial.print(l_iz,2);Serial.println(" uH");
 Serial.print(f_out);Serial.println(" Hz");
  u8g.firstPage(); do {
  u8g.setFont(u8g_font_profont29r);u8g.setPrintPos(0,25);
    if(l_iz<1000){u8g.print(l_iz,2);u8g.drawStr(97,25,"uH");}
    if(l_iz>=1000){u8g.print(l_iz/1000,2);u8g.drawStr(97,25,"mH");}
  }while( u8g.nextPage() );
 delay(1000);
}


ISR(TIMER1_OVF_vect) {tic++;}

ISR(TIMER3_vect) {
  if (TIFR3 & (1 << OCF3A)){
      TIFR3 = 1 << OCF3A;
      f_out = tic*0xFFFF + TCNT1;
      tic=0;TCNT1=0;
  }} 

2

Re: Измерить индуктивности на LGT8F328

Здравствуйте!
Столкнулся со следующей ситуацией. При замере фабричных маркированных дросселей малых размеров(намотанных тонким проводом) показания совпадают с маркировкой, при замере же дросселей с малым количеством витков толстым проводом(как пример с материнских плат или на ферритовом  кольце с компьтерных б.п., где значения единицы  или доли микрогенри) значения не соответствуют реальным и имеют показания десятки миллигенри. В чём может быть проблема? Я нашёл промежуточное решение, но оно не является удобным. На вход последовательно с измеряемой индуктивностью ставлю промежуточный дроссель 100 микрогенри, считываю показания, разница и является приемлемым результатом. Может поправить скетч( мне самому не под силу)? С уважением Александр.

3

Re: Измерить индуктивности на LGT8F328

Здесь я не смогу Вам помочь, при определенных параметра колебательный контур не будет работать, срыв частоты и тд. Тем более компаратор выполнен на микроконтроллере, а он имеет ряд ограничений.

http://rcl-radio.ru/?p=28914

Вот пример расчета колебательного контура, для измерения малых индуктивностей нужно уменьшать емкость конденсатора, при этом резонансная частота будет стабильна, но компаратор возможно не сможет работать на очень высокой частоте, если наоборот увеличить емкость, то компаратор будет нормально работать на более низкой частоте, но резонансная система может не запуститься на выбранных компонентах.

Поэтому Ваш метод добавлять промежуточный дроссель самое оптимальное решение.

4

Re: Измерить индуктивности на LGT8F328

Ув-й Leman324, благодарю за развёрнутый ответ! Еще раз убедился, что порой простые решения более менее сложных задач, являются самыми оптимальными для конкретных ситуаций.