Nixie Clock 1: Difference between revisions
No edit summary |
No edit summary |
||
Line 51: | Line 51: | ||
* <code>UP</code> and <code>DOWN</code> increment and decrement the display value | * <code>UP</code> and <code>DOWN</code> increment and decrement the display value | ||
* <code>OK</code> will exit the function and return the value on the display. | * <code>OK</code> will exit the function and return the value on the display. | ||
==Files== | |||
[[File:Nixie.zip]] |
Revision as of 15:10, 14 August 2019
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 workingLIVE 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 timeVIDEOS
- Displays Winter Camp timePLAY
- reset and display the stopwatchPAUSE
- 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 0BACK
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
andDOWN
increment and decrement the display valueOK
will exit the function and return the value on the display.