Як народжувалася ідея годинника на газорозрядних індикаторах (Частина 1)

27.09.2025 2 хвилин Автор: Lady Liberty

Годинники на газорозрядних індикаторах (Nixie clock) — унікальне поєднання ретро-естетики та сучасної електроніки. У першій частині ми розповідаємо, як виникла ідея створення власного Nixie-годинника, чому ці лампи досі зачаровують, які вимоги ставляться до першої версії та як формується логіка роботи індикаторів. Ви дізнаєтеся про вибір формату відображення часу, застосування мікроконтролера PIC16, окремий блок живлення та особливості керування катодами через високовольтні регістри. Це ідеальне занурення для початківців у DIY-електроніку.

Годинник на газорозрядних індикаторах

Газорозрядні індикатори одразу вражають незвичайною естетикою та яскравістю. Вони мають особливості, серед яких — необхідність використання абсурдно високої постійної напруги.

Пошук у мережі показав, що запаси таких ламп зі Східної Європи досі залишаються доступними. Сьогодні найбільш поширене застосування цих компонентів — у виробах, зібраних ентузіастами та запропонованих на продаж.

У відкритому доступі існують спеціалізовані ресурси, де детально розглядаються принципи роботи газорозрядних індикаторів та їх керування. Серед них —  EEVBLOGFran BlancheDalibor Farny, і Threeneuron. Завдяки доступності подібної інформації розробка власних схем і конструкцій стала набагато простішою.

Ознайомлення з цією, хоч і непрактичною, але неймовірно красивою технологією неминуче пробуджує інтерес до створення власного годинника на газорозрядних індикаторах.

Файли та матеріали

Передмова

Після вивчення годинників, які збирали та викладали в мережу інші радіоаматори, стали зрозумілими вимоги до першої версії проекту.

  1. Логікою годинника повинен керувати простий мікроконтролер – PIC16, PIC18 і подібні, – а не надмірне рішення на кшталт одноплатника Raspberry Pi.

  2. Високовольтне джерело живлення краще зробити у вигляді окремої схеми та друкованої плати. Так проект отримає модульність і гнучкість у разі, якщо високовольтна частина знадобиться інших цілей. Крім того, буде максимально обмежена присутність високої напруги та шумів від генератора на основній платі з індикаторами. Нарешті, вдасться зменшити розмір основної плати годинника і розмістити плату джерела живлення позаду. У готовому корпусі її й не видно.

  3. Годинник буде 6-розрядним, у 12-годинному форматі – Ч1 Ч0: М1 М0: С1 С0.

  4. Під кожним газорозрядним індикатором розміститься невеликий RGB-світлодіод для додаткового підсвічування. Червоний, зелений та синій канали кожного світлодіода керуватимуться трьома кнопковими перемикачами з фіксацією – так вийдуть змішані кольори.

  5. Встановлення часу – за допомогою поворотного енкодера. Натискання переводить систему в режим налаштування. Обертання – встановлює годинник. Наступне натискання – хвилини, ще одне – секунди. Останнє поверне годинник у звичайний режим роботи.

  6. Передбачено головний вимикач живлення із фіксацією. Він відключатиме не все живлення схеми, а лише високу напругу, що подається на газорозрядні індикатори. Так можна погасити їх на ніч, не зупиняючи годинника.

  7. Уся схема живиться від готового низьковольтного AC/DC-адаптера.

  8. Газорозрядні індикатори – ІН-12А.

Хотілося б додати ще кілька здібностей.

  1. Мікросхема годинника реального часу (RTC) для більш точного ходу і невеликий батарейний резерв на випадок відключення живлення. (Проблема старого годинника на мікрохвильовій печі).

  2. Модуль Wi-Fi або GPS для автоматичної синхронізації часу, щоб не налаштовувати його вручну.

  3. ШИМ-управління для RGB-світлодіодів, щоб регулювалася яскравість і палітра кольорів виходила ширше.

  4. Запобіжник (PTC), що самовідновлюється, для захисту від перевантаження по струму на випадок несправності.

  5. Лінійний газорозрядний індикатор ІН-9 як секундна шкала для 4-розрядного годинника. До речі, робота вже розпочалася і виглядає багатообіцяюче.

  6. Незалежні роз’єми для індикаторів, а також невеликі плати-адаптери для різних типів. Підключалися б вони до основної плати через простий штирьовий роз’єм. Тоді індикатори різних моделей легко змінюватимуться. Адаптер для ІН-12А вже готовий.

Високовольтне джерело живлення

Купленим газорозрядним індикаторам для роботи потрібна постійна напруга близько 170 Ст.

Я знайшов роботи Threeneuron (Michael Moorrees) – вони здалися якісними та добре документованими. І підхід його сподобався. Високовольтне джерело вимагало на вході всього 12 В постійного струму і видавало на виході регульовану напругу від 45 до 190 – ідеально. Замість купувати один із готових наборів (здається, він тоді їх ще продавав), я вирішив скопіювати його схемотехніку і реалізувати її самостійно.

Для розробки всіх схем та друкованих плат використовувався EAGLE.

Однак моє завдання зажадало кількох змін.

  1. Довелося додати 5-вольтовий стабілізатор напруги живлення мікроконтролера, управляючого логікою на платі індикаторів. Вибраний стабілізатор бере наявні 12 В і видає рівні 5 на вихідні штирьові роз’єми.

  2. Вихід «Pulse» прибрав, оскільки вищу напругу не потрібно, а кількість контактів у роз’ємі хотілося скоротити.

  3. Замість підключення зовнішнього потенціометра Rx було встановленно підстроювальний резистор на 50 кОм прямо на плату джерела живлення. А чому б і ні?

  4. Для зручності підключення додав на вихідний роз’єм контакти землі, що чергуються.

  5. Схема досить проста, тому розвів доріжки лише на нижньому шарі плати. Ось чому на одному з наступних фото паяльна маска лише з одного боку.

Проектування логічної схеми

Вибір окремих цифр на газорозрядних індикаторах – завдання досить просте. Анод через струмообмежуючий резистор підключається до високої напруги +170 В. Потім кожен із 10 катодних висновків замикається на землю (GND), щоб запалити відповідну цифру. У якийсь момент часу має світитися лише одна з них.

В ідеалі решта дев’яти висновків, що не використовуються, повинні бути відключені і «висіти в повітрі», але це нереально, якщо не хочете ставити в схему десятки реле. Погана ідея! Натомість дев’ять висновків потрібно підключити до досить високої напруги, порівнянної з анодною. Тоді напруга пробою індикатора не буде досягнуто, і цифра не спалахне.

Хоча газорозрядним індикаторам потрібна висока напруга, загальний споживаний струм невеликий і не створює проблем.

Проблема виникає з високою напругою та «вимкненням» цифр. Підключити або комутувати окремі катоди на землю – тривіальне завдання для простого мікроконтролера. Але підняти напругу на катоді досить високу для «вимкнення» цифр він не може. Напруга значно перевищує те, з яким здатний працювати мікроконтролер.

Одне з рішень – керувати з мікроконтролера MOSFET-ключами, підключеними до кожного катода. Але тоді схема буде захаращена величезною кількістю транзисторів. Логічне рішення – використовувати зсувні регістри. Мікроконтролер управляє зсувними регістрами, а ті вже взаємодіють із високовольтними індикаторами. Регістри виступають посередником через велику різницю напруг.

Однак це повинні бути «високовольтні» зсувні регістри, здатні утримувати на своїх виходах максимально високу напругу, щоб запобігти запаленню індикаторів. Я скопіював логічну схему з особистого проекту Дейва Джонса , в якій використовується 8-бітовий силовий логічний зсувний регістр TPIC6595 від Texas Instruments. Вихідні каскади (стоки) мають напругу обмеження 45, що достатньо для ефективного гасіння цифр індикатора.

Для керування комутацією цифр індикатора використовується 8-бітна логіка. Кожен окремий бітовий вихід (DRAIN#) підключається до однієї цифри індикатора. Оскільки у кожної мікросхеми зсувного регістру всього вісім виходів, а потрібні 6-розрядний годинник у форматі Ч1 Ч0 : М1 М0 : С1 С0, потрібно з’єднати кілька регістрів послідовно. Висновки SER IN і SER OUT регістру таки дозволяють таке об’єднання, так що можна розширити логіку з 8 біт до 16, 24, 32 і так далі.

Для 12-годинного формату повне представлення будь-якого дозволеного часу вимагає 44 біт. У форматі Ч1 Ч0 : М1 М0 : С1 С0 розряди Ч0, М0 та С0 можуть відображати всі 10 цифр від 0 до 9. Розряди М1 та С1 – лише 6 цифр від 0 до 5. Розряд Ч1 – лише 2 цифри, 0 або 1. Разом: 3×10+4×6. Графік нижче пояснює це наочніше.

Хоча для 12-годинного циклу потрібно всього 44 біти, у фінальній схемі передбачалось ще одне бітове з’єднання на випадок, якщо хтось захоче переробити їх у 24-годинний (45 біт).

Висновки SER IN і SER OUT з’єднуються послідовно для передачі 44 біт, а ось висновки RCK (імпульс замикання) і SRCK (тактовий сигнал зсувного регістру) повинні бути загальними для всіх мікросхем регістрів. Тут у гру вступає мікроконтролер – він служить джерелом 44-бітних даних, тактового сигналу для регістрів та імпульсу замикання.

Я вибрав невеликий 14-вивідний мікроконтролер PIC16F15325 від Microchip. Вибір упав на цей PIC завдяки:

  • компактний корпус;

  • наявності послідовних інтерфейсів, висновків для зовнішніх переривань та функції PPS (Peripheral Pin Select), яка дає гнучкість у призначенні функцій висновків.

Великий 40-вивідний PIC був би надмірним, залишилося б багато незадіяних ніжок. У результаті у фінальній схемі невикористаним виявився лише один висновок.

До PIC підключено стандартне обв’язування: кнопка скидання (MCLR), роз’єм для програматора PICkit 3 та зовнішній кварцовий резонатор для тактування внутрішнього генератора. Вибір пав на резонатор на 12,288 МГц, оскільки його частоту легко поділити до точних секундних імпульсів тактової частоти мого годинника.

Посилання на вихідний файл C — вгорі сторінки. Як на мене, він непогано прокоментований. Усі подробиці — там. У коді для PIC час зберігається у вигляді минулих секунд у десятковому форматі: 43 200 секунд – це 12 годин. Кожну секунду спрацьовує переривання, після чого відбувається два кроки.

  1. Кількість секунд перетворюється на шість цілочислових змінних – для Ч1 Ч0 : М1 М0 : С1 С0.

  2. Окремі цифри часу перетворюються на 44-бітове повідомлення для відправки в зсувні регістри. 44 біти відправляються 8-бітними порціями, починаючи з Ч1 і закінчуючи С0.

// КРОК 1
// Розбиваємо змінну myTime (загальне число секунд) на години, хвилини, секунди,
// а потім кожну з них — на окремі цифри
if (myTime >= 43200) // 12 годин — це 43 200 секунд
    myTime = 0;      // скидаємо лічильник годин

// Кодування ГГ:ХХ:СС (12-годинний формат, без AM/PM)
// Г1 Г0 : Х1 Х0 : С1 С0
secs = myTime % 60;
s1 = secs / 10;
s0 = secs % 10;

mins = (myTime / 60) % 60;
m1 = mins / 10;
m0 = mins % 10;

hours = myTime / 3600;
if (hours == 0) // особливий випадок
    hours = 12;

h1 = hours / 10;
h0 = hours % 10;
// КРОК 2
// Кодуємо/форматуємо змінні вище в «незвичний» двійковий вигляд для зсувних регістрів
// Для кожного окремого двійкового числа лише один біт може бути у стані HIGH (1)
// 44-бітний двійковий формат для зсувних регістрів (Г1Г0:Х1Х0:С1С0):
// (старший біт) XX XXXXXXXXXX XXXXXX XXXXXXXXXX XXXXXX XXXXXXXXXX (молодший біт)

// Необхідно відправляти 8-бітними порціями
// Потрібно послідовно зсунути це 44-бітне число, по 8 біт за раз
// Відправлення починається зі сторони старшого біта (години)

// кодуємо і відправляємо дані послідовно
// (але ще не відображаємо; це відбувається в обробнику переривання таймера,
// який викликає latchoutData() і подає імпульс на вивід RCK)

// 0-й біт shiftReg підключений до цифри «0» індикатора, і так далі за логікою...
bin_hour1 = (unsigned int)pow(2,h1);
bin_hour0 = (unsigned int)pow(2,h0);
bin_min1  = (unsigned int)pow(2,m1);
bin_min0  = (unsigned int)pow(2,m0);
bin_sec1  = (unsigned int)pow(2,s1);
bin_sec0  = (unsigned int)pow(2,s0);

// для надійності, можливо, варто обгорнути цей код з вимкненням усіх переривань
SSP1BUF = 0b00001111 & (((bin_hour1<<2)&0b1100) | ((bin_hour0>>8)&0b11));
while(SSP1STATbits.BF == 0);
SSP1BUF = bin_hour0;
while(SSP1STATbits.BF == 0);
SSP1BUF = ((bin_min1<<2)&0b11111100) | ((bin_min0>>8)&0b11);
while(SSP1STATbits.BF == 0);
SSP1BUF = bin_min0;
while(SSP1STATbits.BF == 0);
SSP1BUF = ((bin_sec1<<2)&0b11111100) | ((bin_sec0>>8)&0b11);
while(SSP1STATbits.BF == 0);
SSP1BUF = bin_sec0;
while(SSP1STATbits.BF == 0);

Висновок

Перша частина історії Nixie-годинника показує, як із захоплення красою газорозрядних індикаторів народжується реальний інженерний проєкт. Автор пройшов шлях від перших вражень і пошуку інформації до формування чітких вимог: використання мікроконтролера PIC замість складних платформ, окремий блок високовольтного живлення, шість індикаторів у 12-годинному форматі, підсвічування RGB-світлодіодами та керування через енкодер. Важливим етапом стало й проектування логічної частини з використанням зсувних регістрів для керування катодами.

Таким чином, на виході ми отримали не просто ідею «зробити гарний годинник», а продуману технічну концепцію з реальною схемотехнікою, що відкриває двері до наступного кроку – практичної реалізації та збірки.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.