На платформе Arduino можно собрать простые часы на газоразрядных индикаторах типа ИН-16 (ИН-14, ИН-18 и др.). ИН-16 представляет собой индикатор тлеющего разряда имеющий десять катодов выполненных в виде цифр и два катода для запятых. Ток индикации 2 мА, напряжение возникновения тлеющего разряда не более 170 В, яркость свечения 150 кд/м².
Назначение выводов:
- 1 — анод
- 2 — цифра 1
- 3 — цифра 7
- 4 — цифра 3
- 5 — знак «запятая»
- 6 — цифра 4
- 7 — цифра 5
- 8 — цифра 6
- 9 — цифра 2
- 10 — знак «запятая»
- 11 — цифра 8
- 12 — цифра 9
- 13 — цифра 0
Управление цифрами газоразрядных индикаторов осуществляется при помощи высоковольтного двоично-десятичного дешифратора К155ИД1 (динамическая индикация), управление анодами осуществляется при помощи высоковольтных транзисторных оптронов (TLP627) со схемой Дарлингтона на выходе. Плата Arduino коммутирует управление газоразрядных индикаторов и управляет работой высоковольтного DC-DC преобразователя. В схеме используются часы реального времени DS3231, выход SQW через высоковольтный оптрон управляет индикатором секунд (ИН-3).
В схеме используется стабилизатор типа 7805 для питания платы Arduino, но можно исключить этот элемент и напряжение +9 В подавать на встроенный в Arduino стабилизатор (вход VIN).
Настройка времени по времени компиляции:
// clock.setDateTime(__DATE__, __TIME__);
раскомментировать, залить скетч, закомментировать и по новой залить скетч
Библиотеки
http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
http://forum.rcl-radio.ru/misc.php?action=pan_download&item=58&download=1
#include <MsTimer2.h> #include <Wire.h> #include <DS3231.h> DS3231 clock;RTCDateTime DateTime; int an, segm,times,i; byte a[4]; void setup(){ Wire.begin();clock.begin();MsTimer2::set(4, to_Timer);MsTimer2::start(); // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча pinMode(2,OUTPUT); // D2 === H1 pinMode(3,OUTPUT); // D3 === H2 pinMode(4,OUTPUT); // D4 === H3 pinMode(5,OUTPUT); // D5 === H4 pinMode(6,OUTPUT); // D6 === A0 3 ид1 pinMode(7,OUTPUT); // D7 === A1 6 ид1 pinMode(8,OUTPUT); // D8 === A2 7 ид1 pinMode(10,OUTPUT); // D10 === A3 4 ид1 pinMode(9,OUTPUT); // ВЫХОД СИГНАЛА ГЕНЕРАТОРА 16-30 кГц для высоковольтного источника питания TCCR1A = 0x40;TCCR1B = 0x09;OCR1A = 400;//270=30кГц, 300=26кГц, 400=20кГц, 500=16кГц - изменение яркости индикаторов clock.setOutput(DS3231_1HZ); } void loop(){ DateTime=clock.getDateTime();// опрос времени times = DateTime.hour*100+DateTime.minute; a[0]=times/1000; a[1]=times/100%10; a[2]=times/10%10; a[3]=times%10%10; } void to_Timer(){ switch(i){ case 0: segm=a[0]; an=0; anod(); segment();delay(1);break; case 1: segm=a[1]; an=1; anod(); segment();delay(1);break; case 2: segm=a[2]; an=2; anod(); segment();delay(1);break; case 3: segm=a[3]; an=3; anod(); segment();delay(1);break;}i++;if(i>3){i=0;}} void segment(){ switch(segm){ case 0: digitalWrite(10,LOW);digitalWrite(8,LOW);digitalWrite(7,LOW);digitalWrite(6,LOW);break; // DEC 0 = 0b0000 case 1: digitalWrite(10,LOW);digitalWrite(8,LOW);digitalWrite(7,LOW);digitalWrite(6,HIGH);break; // DEC 1 = 0b0001 case 2: digitalWrite(10,LOW);digitalWrite(8,LOW);digitalWrite(7,HIGH);digitalWrite(6,LOW);break; // DEC 2 = 0b0010 case 3: digitalWrite(10,LOW);digitalWrite(8,LOW);digitalWrite(7,HIGH);digitalWrite(6,HIGH);break; // DEC 3 = 0b0011 case 4: digitalWrite(10,LOW);digitalWrite(8,HIGH);digitalWrite(7,LOW);digitalWrite(6,LOW);break; // DEC 4 = 0b0100 case 5: digitalWrite(10,LOW);digitalWrite(8,HIGH);digitalWrite(7,LOW);digitalWrite(6,HIGH);break; // DEC 5 = 0b0101 case 6: digitalWrite(10,LOW);digitalWrite(8,HIGH);digitalWrite(7,HIGH);digitalWrite(6,LOW);break; // DEC 6 = 0b0110 case 7: digitalWrite(10,LOW);digitalWrite(8,HIGH);digitalWrite(7,HIGH);digitalWrite(6,HIGH);break; // DEC 7 = 0b0111 case 8: digitalWrite(10,HIGH);digitalWrite(8,LOW);digitalWrite(7,LOW);digitalWrite(6,LOW);break; // DEC 8 = 0b1000 case 9: digitalWrite(10,HIGH);digitalWrite(8,LOW);digitalWrite(7,LOW);digitalWrite(6,HIGH);break; // DEC 9 = 0b0110 }} void anod(){ switch(an){ case 0: digitalWrite(2,HIGH);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,LOW);break; case 1: digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(4,LOW);digitalWrite(5,LOW);break; case 2: digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,HIGH);digitalWrite(5,LOW);break; case 3: digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);digitalWrite(5,HIGH);break; }}
После сборки часов необходимо подобрать оптимальную частоту генератора для высоковольтного преобразователя, чтобы выходное напряжение преобразователя находилось в пределах от 160 до 170 В:
TCCR1A = 0x40;TCCR1B = 0x09;OCR1A = 400;
270=30 кГц, 300=26 кГц, 400=20 кГц, 500=16 кГц — изменение яркости индикаторов
*Чем выше частота тем меньше выходное напряжение преобразователя
MOSFET транзистор IRF740 необходимо установить на небольшой по площади теплоотвод.
Видео
Не помогло. Опять та же ошибка
http://rcl-radio.ru/wp-content/uploads/2020/02/test.ino_.zip
Потрясающе! Ваш тестовый скетч скомпилировался «на ура»!
https://www.youtube.com/watch?v=kcmuz48YEdA
Доброго дня. Наконец то оформил часы. Огромная проблема возникла из неоткуда. А именно в дросселе. Для недолгого тестирования подойдёт в принципе любой, а вот для долговременной работы далеко не каждый После часа работы мосфет уходил в дикий перегрев. путём многократной смены оптимально подошёл дроссель от энергосберегающей лампы 105 Ватт. Он намотан на «гантельке» и имеет параметр 1,83 мГн 600В. С ним мосфет уже на протяжении трёх часов остаётся практически холодный. ещё раз спасибо за поддержку при повторении проекта. Ссылка вверху на ролик с этими часам.