ИВЛ1-7/ 5 представляет собой цифровой многоразрядный вакуумный люминесцентный индикатор предназначенный для отображения информации в виде цифр от 0 до 9 в 1, 2, 4 и 5-м цифровых разрядах и двух точек в 3-м разряде в средствах отображения информации индивидуального и группового пользования.
Основные данные индикатора ИВЛ1–7/5:
- Цвет свечения: Зеленый
- Номинальная яркость индикатора 500 кд/м2, минимальная – 300 кд/м2.
- Напряжение накала: 5 В
- Ток накала: 120 ± 12 мА
- Напряжение анода–сегмента импульсное: 27 В
- Ток анодов–сегментов импульсный одного разряда: 12 мА
- Напряжение сетки импульсное: 27 В
- Ток сетки импульсный одного разряда: 12 мА
- Скважность: 5 ± 0,5
- Минимальная наработка: 10 000 ч
- Яркость индикатора, изменяющаяся в течение минимальной наработки, не менее: 100 кд/м2
- Срок хранения не менее: 4 лет
Предельно допустимый электрический режим индикатора ИВЛ1–7/5:
- Напряжение накала строго в пределах: 4,5–5,8 В
- Наибольшее напряжение анодов–сегментов: 50 В
- Наибольшее напряжение сетки импульсное: 50 В
Не рекомендуется эксплуатировать индикатор ИВЛ1–7/5 при питании цепи накала постоянным током. Предпочтительно питать цепь накала переменным током от обмотки трансформатора с отводом от середины, служащим общей точкой вывода катода.
Видимое свечение анода-сегмента при поданном напряжении на сетку наступает при положительном потенциале анода-сегмента 2,5 — 3,0 В. Чтобы избежать возможной подсветки потенциал на аноде-сегменте не должен превышать 1,5 — 2,0 В.
В исключительном ряде случаев допускается эксплуатация индикатора ИВЛ1–7/5 при напряжении накала 6,0 В; общее время работы при данном режиме не должно превышать 10 % от всего времени минимальной наработки.
На платформе Arduino (LGT8F328) с использованием ИВЛ1–7/5 можно собрать достаточно простые часы. В часах применяются часы реального времени DS3231. Напряжения питания часов 9 В. Для упрощения схемы в часах используется ИМС PT6312 который представляет собой контроллер вакуумного люминесцентного дисплея (VFD). Более подробно об ИМС PT6312 описано в — http://rcl-radio.ru/?p=131596.
Часы состоят всего из нескольких компонентов:
- Индикатор ИВЛ1-7/5
- ИМС PT6312
- Часы реального времени (модуль) DS3231
- Плата разработчика Arduino на базе контроллера Atmega328 или LGT8F328
- Преобразователь напряжения
Схема часов
Основное питание схемы 9 В, оно подается на преобразователь напряжения и на вход VIN платы контроллера.
Преобразователь имеет трансформатор выполненный из ферритового сердечника (гантельный сердечник) на который намотано 3 обмотки проводом диаметром 0,3 мм.
Первая обмотка содержит 20 витков, вторая 20 витков с отводом от середины, третья содержит 130 витков.
Если напряжение накала будет намного меньше 5 В, то поменяйте местами выводы обмотки II.
Скетч
#define STB 4 #define DIN 2 #define CLK 3 #define SET 5 #define UP 6 #define DW 7 #include <Wire.h> #include <DS3231.h> // http://rcl-radio.ru/wp-content/uploads/2022/10/DS3231.zip DS3231 clock;RTCDateTime DateTime; int a[5]; int hour,minut,set; long times,times0; bool d,mig; void setup(){ Serial.begin(9600);clock.begin(); ///clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча pinMode(STB,OUTPUT); pinMode(DIN,OUTPUT); pinMode(CLK,OUTPUT); pinMode(SET,INPUT_PULLUP); pinMode(UP,INPUT_PULLUP); pinMode(DW,INPUT_PULLUP); delay(100); digitalWrite(STB,HIGH);delay(200); // PWM OUTPUT D9 TIMER 1 TCCR1A = 0;TCCR1B = 0; TCCR1A = (1 << COM1A1)|(1 << WGM11); TCCR1B = (1 << WGM13)|(1 << WGM12)|(1 << CS10); DDRB = 1 << DDB1; // OUTPUT PWM (OCR1A) OCR1A = 15; ICR1 = 40; write_byte1_PT6312(0b01000100);// command 2 write_byte1_PT6312(0b00000100);// command 1 8dig/14seg write_byte1_PT6312(0b10001111);// command 4 display on } void loop(){ DateTime = clock.getDateTime(); hour = DateTime.hour; minut = DateTime.minute; if(digitalRead(SET)==LOW){set++;if(set>2){set=0;} delay(300);} if(digitalRead(UP)==LOW&&set==1){hour++;if(hour>23){hour=23;} clock.setDateTime(2024, 2, 22, hour, minut, 0);delay(100);} if(digitalRead(DW)==LOW&&set==1){hour--;if(hour<0){hour=0;} clock.setDateTime(2024, 2, 22, hour, minut, 0);delay(100);} if(digitalRead(UP)==LOW&&set==2){minut++;if(minut>59){minut=59;} clock.setDateTime(2024, 2, 22, hour, minut, 0);delay(100);} if(digitalRead(DW)==LOW&&set==2){minut--;if(minut<0){minut=0;} clock.setDateTime(2024, 2, 22, hour, minut, 0);delay(100);} if(millis()-times0<200){mig=1;} if(millis()-times0>200){mig=0;} if(millis()-times0>400){times0=millis();} if(millis()-times<500){d=1;} if(millis()-times>500){d=0;} if(millis()-times>1000){times=millis();} if(set==0){ a[0]=minut%10; a[1]=minut/10%10; a[2]=hour%10; a[3]=hour/10%10;} if(set!=2){a[0]=minut%10;} if(set!=2){a[1]=minut/10%10;} if(set==2&&mig==0){a[0]=minut%10;} if(set==2&&mig==0){a[1]=minut/10%10;} if(set==2&&mig==1){a[0]=10;} if(set==2&&mig==1){a[1]=10;} if(set!=1){a[2]=hour%10;} if(set!=1){a[3]=hour/10%10;} if(set==1&&mig==0){a[2]=hour%10;} if(set==1&&mig==0){a[3]=hour/10%10;} if(set==1&&mig==1){a[2]=10;} if(set==1&&mig==1){a[3]=10;} //dp g f e d c b a write_byte2_PT6312(0b11000000,seg(a[0],0));//GR1 write_byte2_PT6312(0b11000010,seg(a[1],0));//GR2 write_byte2_PT6312(0b11000100,seg(a[2],0));//GR3 write_byte2_PT6312(0b11000110,seg(a[3],0));//GR4 write_byte2_PT6312(0b11001000,seg(0,d));//GR5 delay(100); } byte seg(int a, bool dp){ byte segm; switch(a){ case 0: segm=0b00111111+(dp<<7);break; case 1: segm=0b00000110+(dp<<7);break; case 2: segm=0b01011011+(dp<<7);break; case 3: segm=0b01001111+(dp<<7);break; case 4: segm=0b01100110+(dp<<7);break; case 5: segm=0b01101101+(dp<<7);break; case 6: segm=0b01111101+(dp<<7);break; case 7: segm=0b00000111+(dp<<7);break; case 8: segm=0b01111111+(dp<<7);break; case 9: segm=0b01101111+(dp<<7);break; case 10:segm=0b00000000;break;// пусто case 11:segm=0b01000000;break;// - case 12:segm=0b01100011;break;// градус case 13:segm=0b00111001;break;// С } return segm; } void write_byte1_PT6312(byte data){ digitalWrite(STB,LOW); for(int i = 0; i <= 7; i++){ digitalWrite(CLK,LOW); digitalWrite(DIN, (data >> i) & 1); digitalWrite(CLK,HIGH); } digitalWrite(STB,HIGH);delay(1); } void write_byte2_PT6312(byte reg, byte data){ digitalWrite(STB,LOW); for(int i = 0; i <= 7; i++){ digitalWrite(CLK,LOW); digitalWrite(DIN, (reg >> i) & 1); digitalWrite(CLK,HIGH); } delay(1); for(int i = 0; i <= 7; i++){ digitalWrite(CLK,LOW); digitalWrite(DIN, (data >> i) & 1); digitalWrite(CLK,HIGH); } digitalWrite(STB,HIGH);delay(1); }
После сборки часов необходимо настроить работу повышающего преобразователя, делается это при помощи регистра OCR1A.
Установите значение регистра равным 10 и замерьте анодное напряжение, оно должно находиться в пределах от -24 до -36 В (при напряжении накала ~5 В). При необходимости измените значение регистра. В моем случает в OCR1A установлено значение 15 (20 = ШИМ 50%), анодное напряжение -35 В (под нагрузкой).
OCR1A = 10;
Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=9549#p9549