Индикатор уровня на ИЛТ4-30М (Arduino)

Индикатор ИЛТ4-30М (П402А) двухцветный — основной цвет зелёный, цвет элементов, отображающих наивысшие уровни сигнала — красный. Выполнен в стеклянном корпусе с 20-ю плоскими лужеными выводами для монтажа на печатную плату.

Основные параметры индикатора ИЛТ4-30М

  • Цвет свечения — зелёный / красный
  • Число управляемых элементов:  32
  • Размеры информационного поля:  20х70 мм
  • Размеры индикатора: 100х33 мм
  • Яркость свечения номинальная:
    • зеленого цвета: 400 кд/м²
    • красного цвета: 70 кд/м²
  • Неравномерность яркости свечения элементов < 60%
  • Напряжение накала: 3,5 В (2,97..3,85 В)
  • Ток накала номинальный: 115 мА (110..130 мА)
  • Запирающее напряжение сетки не менее: -3 В
  • Напряжение анодов-сегментов: 35 В
  • Напряжение на сетке: 25 В
  • Номинальный ток сетки: 12 мА
  • Суммарный ток анодов-сегментов: 16 мА
  • Температура среды: -60..+70ºС
  • Число циклов переключения накала, не менее: 10000
  • Минимальная наработка: 30000 ч

Как правило в ИЛТ4-30М две сетки одна для верхней части индикатора, вторая для нижней, но в моем индикаторе три сетки, первая сетка находится на элементами «ЛЕВЫЙ» «ПРАВЫЙ» и две другие над верней и нижней частями шкал уровня сигнала. Поэтому первая сетка не имеет управления и напряжение +30 В подается на нее через резистор. Вторая и третья сетка запитываются от транзисторных ключей. Так же следует учитывать, что что элементы «ЛЕВЫЙ», «ПРАВЫЙ», шкала dB и первый сегмент индикатора уровня имеют один общий анод (поэтому горят постоянно и не участвуют в динамической индикации), который так же не имеет управления и напряжение +30 В подается на нее через резистор. Все остальные сегменты индикатора имеют управление в виде транзисторных ключей.

Итого используется 16 транзисторных ключей, 14 из которых для управления сегментами индикатора уровня, а два управляют сетками.

Для управления ключами используется плата разработчика LGT8F328P-LQFP32 MiniEVB, которая основана на китайском микроконтроллер LGT8F328p и является клоном популярной AVR ATmega328p (Arduino NANO). Микроконтроллер LGT8F328p практически полностью совместим с микроконтроллером ATmega328p и обладает рядом дополнительных функций и возможностей превышающих ATmega328p.

Схема индикатора уровня

При сборке обратите внимание на номиналы резисторов подключенных к коллекторам транзисторов, в для сеток это 47 кОм, для анода с элементами «ЛЕВЫЙ», «ПРАВЫЙ», шкала dB и первый сегмент индикатора 10 кОм, для сегментов зеленого свечения 100 кОм, для красного свечения 10 кОм.

В схеме используются транзисторы с Uкэ_max не менее 100 В, в данном проекте используются транзисторы KSP44 c Uкэ_max = 400 В.

Основное питание схемы 9 В, оно подается на преобразователь напряжения и на вход VIN платы контроллера.

Преобразователь имеет трансформатор выполненный из ферритового сердечника (гантельный сердечник) на который намотано 3 обмотки проводом диаметром 0,2…0,3 мм.

Первая обмотка содержит 20 витков, вторая 10 витков с отводом от середины, третья содержит 120 витков. Транзистор IRF3205 необходимо установить на небольшой радиатор.

При правильной сборке ток потребления схемы должен находится в пределах 0,4 А.

// LGT8F328

// сетки
#define SETKA_0   2
#define SETKA_1   3
// аноды
#define P1        4
#define P2        5
#define P3        6
#define P4        7
#define P5        8
#define P6        10
#define P7        11
#define P8        12
#define P9        13
#define P10       A0
#define P11       A1
#define P12       A2
#define P13       A3
#define P14       A4  
// входы аудио
#define AN_R      A6
#define AN_L      A7 

#define  LOW_IN    2
#define  HIGH_IN   50

byte h;
int r_in,l_in,r,l;
int ur_l,urr_l,ur_r,urr_r;

void setup(){
  Serial.begin(9600);
  noInterrupts();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = 0;
  TCCR1A = (1 << COM1A1)|(1 << WGM11);
  TCCR1B = (1 << WGM13)|(1 << WGM12)|(1 << CS10);
  DDRB =  1 << DDB1; // OUTPUT PWM (OCR1A)
  OCR1A = 15;
  ICR1 = 40;
/////
  TCCR2A = 0;
  TCCR2B = 0;
  TCNT2 = 0; 
  OCR2A = 77;
  TCCR2A |= (1 << WGM21);
  TCCR2B |= (1 << CS22) | (1 << CS21) | (1 << CS20);
  TIMSK2 |= (1 << OCIE2A); 
  interrupts();
  pinMode(2,OUTPUT);pinMode(3,OUTPUT);pinMode(P1,OUTPUT);pinMode(P1,OUTPUT);pinMode(P3,OUTPUT);pinMode(P4,OUTPUT);pinMode(P5,OUTPUT);pinMode(P6,OUTPUT);pinMode(P7,OUTPUT);
  pinMode(P8,OUTPUT);pinMode(P9,OUTPUT);pinMode(P10,OUTPUT);pinMode(P11,OUTPUT);pinMode(P12,OUTPUT);pinMode(P13,OUTPUT);pinMode(P14,OUTPUT);
  pinMode(AN_R,INPUT);
  pinMode(AN_L,INPUT);
  analogReadResolution(8);
  analogReference(INTERNAL1V024);
}

void loop(){
   r_in = map(analogRead(AN_R), LOW_IN,HIGH_IN, 0, 14);
   l_in = map(analogRead(AN_L), LOW_IN,HIGH_IN, 0, 14);
   r = constrain(r_in, 0, 14);
   l = constrain(l_in, 0, 14);
   urr_l = l;
   urr_r = r;
  if(urr_l<ur_l){ur_l=ur_l-1;}else{ur_l = l;}
  if(urr_r<ur_r){ur_r=ur_r-1;}else{ur_r = r;}
  delay(50);
  }

ISR(TIMER2_COMPA_vect){
  switch(h){
    case 0: segm(ur_l);ch(SETKA_0,0);ch(SETKA_1,1);break;
    case 1: segm(ur_r);ch(SETKA_0,1);ch(SETKA_1,0);break;
    }
  h++;if(h>1){h=0;}
  }  

void segm(int a){
  switch(a){
   case 0: ch(P1,1);ch(P2,1);ch(P3,1);ch(P4,1);ch(P5,1);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 1: ch(P1,0);ch(P2,1);ch(P3,1);ch(P4,1);ch(P5,1);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 2: ch(P1,0);ch(P2,0);ch(P3,1);ch(P4,1);ch(P5,1);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 3: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,1);ch(P5,1);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 4: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,1);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 5: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,1);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 6: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,1);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 7: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,1);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 8: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,1);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
   case 9: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,1);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
  case 10: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,0);ch(P11,1);ch(P12,1);ch(P13,1);ch(P14,1);break;
  case 11: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,0);ch(P11,0);ch(P12,1);ch(P13,1);ch(P14,1);break;
  case 12: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,0);ch(P11,0);ch(P12,0);ch(P13,1);ch(P14,1);break;
  case 13: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,0);ch(P11,0);ch(P12,0);ch(P13,0);ch(P14,1);break;
  case 14: ch(P1,0);ch(P2,0);ch(P3,0);ch(P4,0);ch(P5,0);ch(P6,0);ch(P7,0);ch(P8,0);ch(P9,0);ch(P10,0);ch(P11,0);ch(P12,0);ch(P13,0);ch(P14,0);break;
    }
  } 

void ch(int pin, int logic){digitalWrite(pin, logic);}     

Настройка индикатора уровня:

После сборки подайте напряжение 9 В на индикатор уровня, измерьте переменное напряжение подаваемое на накал, оно должно находится в пределах 3,5±0,2 В, при необходимости измените номиналы токоограничивающих резисторов (4,7 Ом).

Напряжение анодов-сегментов должно быть в пределах 30…35 В, для регулировки этого напряжения можно изменить скважность ШИМ путем изменения содержимого регистра OCR1A. При OCR1A = 20 скважность ШИМ равна 50 %, постарайтесь не увеличивать скважность больше 50 %, увеличение скважности больше 50 % заметно увеличит ток потребления индикатора уровня и вызовет сильный нагрев транзистора IRF3205.

OCR1A = 15;

Следующие два параметра устанавливают уровень тишины и ограничивают максимальный уровень сигнала. Если при замкнутом входе уровень индикатора превышает 1 деление шкалы , то увеличьте параметр LOW_IN.

Если при подачи на вход звукового сигнала индикатор постоянно находится в красной зоне, то увеличьте параметр HIGH_IN.

#define  LOW_IN    2

#define  HIGH_IN   50

При загрузке скетча отключайте питание 9 В.

Настройки платы контроллера:

Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=8979#p8979

свинцовые аккумуляторы

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

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