Nixie Clock 1: Difference between revisions

From Alnwlsn - Projects Repository
Jump to navigation Jump to search
(Created page with "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...")
 
Line 50: Line 50:
* 9 - Local hour at which cathode poisoning routine starts.
* 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.
* 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 - Sync the clock seconds with the ch+ and ch- buttons. This will not update the point at which the second "ticks over".
* 21 - Year for reference date #1. Enter a full year, such as "2017"
* 21 - Year for reference date #1. Enter a full year, such as "2017"
* 22 - Month for reference date #1
* 22 - Month for reference date #1
Line 66: Line 67:
* 37 - Number of decimal places to show when displaying Days until date for reference date #2
* 37 - Number of decimal places to show when displaying Days until date for reference date #2
* 38 - Number of decimal places to show when displaying Jiffies until date for reference date #2
* 38 - Number of decimal places to show when displaying Jiffies until date for reference date #2
* 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.
* 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.
* 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.

Revision as of 17:29, 30 September 2018

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.

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.

  • Power button - shows the cathode poisoning routine. Used as test to make sure all the display elements are working
  • Source - Displays the time in UTC. The realtime clock is set to the UTC time to make conversions and calculations easier.
  • Mute - 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.
  • 0 - Displays the local time
  • 1 - Displays Winter Camp time
  • 2 - Displays days to reference date 1
  • 3 - Displays jiffies to reference date 1
  • 4 - Displays days to reference date 2
  • 5 - Displays jiffies to reference date 2

Often, 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 numerical command, followed by any number of required parameters (usually just one).

To enter a setting, press the Record button on the remote and use the number keys to input the desired setting number. Then, the clock will wait for the value of the setting to be input. When the clock is requesting setting value input, the right indicator neon will light. In any case, when requesting input of any kind, the clock's display will change to show what is being input. Consider the following example for setting the hour of reference date #1 to 1:00 pm.

[record] 2 4 [fullscreen] 1 3 [fullscreen]

[fullscreen] is used as the Enter button. First, the [record] button is pressed to enter a setting number. The setting number to set the hour of reference date #1 is 24, so the number keys 2 and 4 are pressed in sequence, followed by [fullscreen] to enter it. Next, the desired value, the hour of 1pm, is entered with 1 3 [fullscreen] (hours are entered in 24 hour format). The setting has now been changed, and the clock beeps once to let you know it's done changing the setting.

The input display can be cleared back to 000000 by pressing mute, in any case where the clock is waiting for input. In addition to the number buttons for input, the [ch+]/[ch-] buttons can be used to increment the input display up or down in value. For entering negative numbers, the [time shift] button functions as the "+/-" button, the same as on a calculator.

Other features include the [recall] button, which is used to set the value of the setting back to its original value, if applicable. If, for example, the previous value of the hour for reference date #1 was 11am, then instead of pressing 1 and 3, we could press [recall] which would set the input display to 000011. If we then press [fullscreen] the hour of reference date #1 would retain it's original value of 11am.

Setting numbers are listed below:

  • 1 - UTC Year for RTC module. Specify a full four digit year, such as "2017"
  • 2 - UTC Month for RTC. Range of [1 - 12]
  • 3 - UTC Day for RTC. [1 - 31, depending on month]
  • 4 - UTC Hour for RTC. [00 - 23]
  • 5 - UTC Minute for RTC. [00 - 59]
  • 6 - UTC Second for RTC module. [00 - 59]. Setting the real time clock is done as soon as enter [fullscreen] is pressed. It is therefore suggested that you enter the seconds value last.
  • 7 - Offset hours from UTC to local time. UTC time hour + this value = local hour. Can be positive or negative, with a value up to +/- 127.
  • 8 - Offset minutes from UTC to local time. UTC time minute + this value = local minute. Can be positive or negative, with a value up to +/- 127.
  • 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 - Sync the clock seconds with the ch+ and ch- buttons. This will not update the point at which the second "ticks over".
  • 21 - Year for reference date #1. Enter a full year, such as "2017"
  • 22 - Month for reference date #1
  • 23 - Day for reference date #1
  • 24 - Hour for reference date #1
  • 25 - Minute for reference date #1
  • 26 - Second for reference date #1
  • 27 - Number of decimal places to show when displaying Days until date for reference date #1
  • 28 - Number of decimal places to show when displaying Jiffies until date for reference date #1
  • 31 - Year for reference date #2
  • 32 - Month for reference date #2
  • 33 - Day for reference date #2
  • 34 - Hour for reference date #2
  • 35 - Minute for reference date #2
  • 36 - Second for reference date #2
  • 37 - Number of decimal places to show when displaying Days until date for reference date #2
  • 38 - Number of decimal places to show when displaying Jiffies until date for reference date #2
  • 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.