Nixie Clock 1

From Alnwlsn - Projects Repository
Jump to navigation Jump to search

This article is about the 6 digit nixie clock built by Alan Wilson in 2017.

Description

The clock uses 6 IN-12b nixie neon tubes, and two INS-1 indicator tubes. The nixies are arranged close together, so that the unit may be used for purposes other than displaying the time. Power is supplied to the tubes at 180 volts DC, using the switchmode power supply described here. Each nixie tube is controlled by it's own K155ID1 nixie driver chip. Four 74HC595 shift registers supply all the outputs required to completely control the display. Three of the shift registers control digits 0-9 for two nixie tubes each, and the final shift register controls the six decimal points in the nixie tubes, and the two INS-1 indicator tubes, placed on either side of the six digit display. This means that the entire display section can be controlled with just three data lines, the clock, data, and latch lines from the first shift register.

The heart of the clock is a standard Arduino Nano board (ATMEGA 328p). It does all the date calculations, and stores the settings of the clock. Time is sourced from a DS3231 real-time clock module, which provides quite accurate timekeeping.

The clock and it's settings were originally controlled by a set of switches on the back of the clock, but these switches are hard to access when the clock was installed in its case. Instead, an IR decoder was hooked up to the arduino, so that one of the 12 button remote controls that come with the RTL-SDR tv tuner modules can be used, since I happen to have quite a few. These remote controls use the NEC protocol, which is supported by several Arduino libraries. I believe that these remotes are the same as those that are sold in those arduino starter kits you can find on eBay or Aliexpress, though I have seen similar remotes sold individually for as little as 74 cents delivered.

Update 2019 - I am now using an extra TV remote instead. All the RTL-SDR remotes I have have either broken or became too weak to use (they are not the most durable remotes). I also placed the IR sensor within the clock behind the tubes, which makes it possible to use actually the remote from the front of the clock.

Additional options such as outputs for timer relays, or a start/stop trigger inputs are planned.

Display mode

The normal way the clock operates is in this display mode. This is what shows the display of the time. During the night (a duration specified in the settings), all the digits of each tube are cycled, along with the decimal points and indicators, to reduce the effect of cathode poisoning.

The selection of what is shown in this is made by pressing one of the remote control buttons (2019 version).

  • PICTURES - shows the cathode poisoning routine. Used as test to make sure all the display elements are working
  • LIVE TV - Displays the time in UTC. The realtime clock is set to the UTC time to make conversions and calculations easier.
  • POWER - When the cathode poisoning routine is running during the night, the mute button pauses it for about 30 seconds, revealing whatever the last selection was. This is so you can read the clock at night, although the clock is usually set to do the cathode poisoning routine at night when everyone is asleep.
  • TV - Displays the local time
  • VIDEOS - Displays Winter Camp time
  • PLAY - reset and display the stopwatch
  • PAUSE - display stopwatch and pause/resume it

When the clock is displaying a negative number, the left indicator will be used as a negative sign indicator.

Setting mode

All of the settings of the clocks, such as local time offset, reference dates, etc. are controlled by this method. The various settings are accessed by entering a setting number, followed by any number of required parameters (usually just one). To enter setting number, press WINDOWS, use numbers to enter the setting number you want, then press OK.

Setting numbers are listed below:

  • 1 - Enter UTC time, in format HHMMSS
  • 2 - Enter date, in format yymmdd
  • 3 - Enter offset from utc to local, in format HHMM. Value can be negative. Value is added to UTC to produce local time.
  • 9 - Local hour at which cathode poisoning routine starts.
  • 10 - Local hour at which cathode poisoning routine ends. I have not implemented the hour "wrapping around," so functionally the routine runs when the local hour is greater than the value of setting 9 but less than setting 10.
  • 11 - secondsAdjust - see below
  • 60 - A switch is connected between A1 and GND, which closes on reception of pulses from WWVB. The clock will sync and set itself.
  • 254 - Load settings from EEPROM. Stores utc-local offsets, cathode poisoning on/off times, and reference dates. Has no setting value to input, is only a command.
  • 255 - Save settings to EEPROM. The settings do not update the EEPROM automatically, so you need to call this command if you want the settings to be saved after powering off the clock.

secondsAdjust

Used to adjust the time slightly ahead behind, second by second, with UP and DOWN keys. The adjustment is supposed to happen only at the top of each second, so the clock's "ticks" don't get out of sync. Additionally, you can press RIGHT to adjust the clock immediately, useful for synchronization. When finished, press OK to exit.

Numerical Input

One common function is used whenever the remote is used to type in a number. When this is active, the display will first show 000000. Operation is as described:

  • Use number keys 0 - 9 to type in a number as you would on any other device.
  • CLEAR resets display to 0
  • BACK sets display to the existing value, which can be passed to the numerical input function when it is called. In this way, you can access the already existing value of a setting for reference.
  • * changes sign of number. Left indicator neon is used as minus sign.
  • UP and DOWN increment and decrement the display value
  • OK will exit the function and return the value on the display.