Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство

Компоненты и материалы

Arduino UNO × 1
Лампы Ніксі (IN-12 или аналоги) — 6 шт. × 6
Оптопара TLP627 (или аналогичная, 4 канала) × 1
DC-DC преобразователь 12V → 390V (для анодов Ніксі) × 1
Макетная плата (breadboard) × 1
RTC-модуль DS3231 (с батарейкой) × 1
Перемычки, резисторы, провода × 1 набор

О проекте

После долгих экспериментов получилось собрать работающие часы на лампах Ніксі с Arduino и опторазвязкой — без специализированных драйверов К155ИД1, которые трудно найти.

Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство

Шаг 1. Принцип схемы

Управление 6 лампами (по 10 катодов каждая = 60 выводов) реализовано матрицей 10×6 через оптопары TLP627. Arduino выдаёт 5В логику, оптопары коммутируют высокое напряжение (~150В) на катодах. Используется 16 выводов Arduino (10 для цифр + 6 для разрядов).

Модуль DS3231 по I2C хранит точное время (даже при отключении питания). Arduino считывает время и динамически индицирует цифры на лампах с высокой частотой — глаз видит стабильную картинку.

Шаг 2. Код прошивки

// Youtube channel: engineer2you
#include <Wire.h>
#include "DS3231.h"
RTClib RTC;
DS3231 Clock;
int hour, minute, second;

const int nixie_0 = 2;  const int nixie_1 = 3;  const int nixie_2 = 4;
const int nixie_3 = 5;  const int nixie_4 = 6;  const int nixie_5 = 7;
const int nixie_6 = 8;  const int nixie_7 = 9;  const int nixie_8 = 10;
const int nixie_9 = 11;

const int row_1 = 0;   const int row_2 = 1;   const int row_3 = 14; // A0
const int row_4 = 15;  const int row_5 = 16;  const int row_6 = 17; // A1..A3
const int time_on = 2; // мс на разряд

void setup() {
  for (int p = 2; p <= 11; p++) pinMode(p, OUTPUT); // катоды 0-9
  pinMode(row_1, OUTPUT); pinMode(row_2, OUTPUT);
  pinMode(row_3, OUTPUT); pinMode(row_4, OUTPUT);
  pinMode(row_5, OUTPUT); pinMode(row_6, OUTPUT);
  // Serial.begin(9600); // НЕЛЬЗЯ использовать Serial — задействует D0/D1
  Wire.begin();
}

void loop() {
  DateTime now = RTC.now();
  hour = now.hour(); minute = now.minute(); second = now.second();

  // Секунды
  int j = second / 10, k = second % 10;
  off_all(); on_number(0, k+2); delay(time_on);
  off_all(); on_number(1, j+2); delay(time_on);

  // Минуты
  j = minute / 10; k = minute % 10;
  off_all(); on_number(14, k+2); delay(time_on);
  off_all(); on_number(15, j+2); delay(time_on);

  // Часы
  j = hour / 10; k = hour % 10;
  off_all(); on_number(16, k+2); delay(time_on);
  off_all(); on_number(17, j+2); delay(time_on);
}

void on_number(int row, int nixie) {
  digitalWrite(row, HIGH);
  digitalWrite(nixie, HIGH);
}

void off_all() {
  for (int r = 0; r <= 1; r++) digitalWrite(r, LOW);
  for (int r = 14; r <= 17; r++) digitalWrite(r, LOW);
  for (int c = 2; c <= 11; c++) digitalWrite(c, LOW);
  delayMicroseconds(400); // защита от "призраков"
}

Шаг 3. Сборка на макетке

Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство
Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство
Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство
Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство
Строим простые часы на лампах Ніксі с Arduino — пошаговое руководство

Всё собрано на макетке, заработало с первого раза. Следующий этап — корпус из МДФ с красивым оформлением для домашнего использования.

Код

Полный скетч доступен выше. Библиотеки: Wire.h, DS3231.h, RTClib.h.

Ссылки на комплектующие

Производственный процесс

  1. Arduino POV-часы: сборка дисплея на эффекте сохранения образа
  2. Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
  3. Оптимизация проектирования жгутов в E3.series
  4. Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
  5. Часы реального времени на Arduino с расчётом времени намаза
  6. Создание пользовательских LED-часов с будильником — видно с 12 метров
  7. Умная копилка: управление монетоприёмником на Arduino Nano
  8. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  9. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  10. Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код