This project is a PIC based Nixie Tube clock. I built this project to give me some more experience with hardware design and debugging. I wanted to try implementing a switching power supply, so I used two in this build. One for the high voltage (~170VDC) used to drive the neon filled Nixie Tubes, and another to supply 5V for the rest of the components on the board. At a high level, I have a PIC18F2550 running the show. The main communication bus on the board is I2C. I am using a battery backed DS1307 for the real time clock. I use 2x MCP23017 IO Expanders to run the Nixie Drivers( Russian K155ID1, equivalent to a 74141). The PIC will also host a USB HID device used to communicate with the computer and receive time / other settings (see bellow). I breadboarded all major components before spinning the PCB... which was a good step for me as the 170V supply did not function correctly for the first power up. When I first ordered parts I was not paying attention to some critical parameters that make the supply efficient. One of the parameters is the ON resistance of the N-Channel FET (Rds), the original attempt had a 1ohm resistance causing a lot of loss and heating the FET when switching current through the inductor. As a result I reevaluated all of the components in the circuit and selected more efficient ones. (Low Rds FET, Fast Recovery Diode, Excessively high rated inductor). PIC Firmware: I wanted to add some advanced features to the clock and needed a way to set them. Since I already had USB support working on a previous project I decided to use the same microcontroller (PIC18F2550) as the platform for this project. This imposed some limitations as well. I knew I wanted to add RGB LEDs to the project and be able to adjust the brightness of each color via PWM. Unfortunately the PIC I chose only has two hardware based PWM modules, and I used one is used to drive the IN-13 nixie bar-graph. Since I am using a high clock frequency (Fosc = 48MHz) I used a timer module and created my own software PWM routine and called it from the ISR. To set the brightness of a individual color, set the color brights limit from 0 to 255. The ISR will call the below function fast enough that the LEDs will dim without flickering. void Nixie_SoftwarePWM(void) { static unsigned char Tim0Ctr = 0; // Timer will increment from 0 -> 255 then roll over. Tim0Ctr++; // +---------------------------------------------------+ // | Software PWM. Counter will run from 0 to 255. Set | // | the color limits within the same range where | // | 0 = off, 255 = Always On. | // +---------------------------------------------------+ // Red LED control if (Tim0Ctr < RedLim) NIXIE_RED_LED_ON(); else NIXIE_RED_LED_OFF(); // Green LED control if (Tim0Ctr < GreenLim) NIXIE_GREEN_LED_ON(); else NIXIE_GREEN_LED_OFF(); // Blue LED control if (Tim0Ctr < BlueLim) NIXIE_BLUE_LED_ON(); else NIXIE_BLUE_LED_OFF(); } Schematic / PCB: Full size schematic: link here. Once I was happy with how everything was functioning I designed the full Schematic / PCB. It is a two layer board measuring 9.5"x4.3". In the lower right hand side is where both power supplies live. I went a bit overboard with the traces because I wanted to make sure there would be no issue carrying enough current to the supplies. I also experimented with a ground plane pour on the far left of the board, to try to shield the RTC crystal. In the very center of the board is a coin-cell battery holder. This will keep the RTC running and keep accurate time if power is lost or the microcontroller is reset. Build Pictures: (Click to enlarge) I populated the PCB going from the shortest component (resistors / sockets) and moving to larger ones to make my job easier so that the PCB would lay flat and hold the parts in place while I soldered them. The nixie sockets were the most time consuming part of the build. I hot-glued a 5mm RGB LED in the middle of the socket and then soldered a ribbon cable to all of the pins. This is what gives the tubes the back-lighted effect seen below. The project really looks good in a dark room. The glowing tubes contrast nicely with green/blue light given off by the LEDs. You can also see the extra LEDs I placed around the perimeter of the PCB making the whole board glow. Dim lights Download Embed Embed this video on your site PC Software: Current Features: Color Fade Speed: Adjust how fast the board LEDs will fade from red -> green -> blue.

Colon Indicator: Adjust if the colons are always on, always off, or blink at 1Hz.

Sleep Times: Since this clock is pretty bright, I wanted a way to turn it off when I'm trying to sleep. If this feature is enabled, when the time is between sleep start / sleep end the high voltage power supply is shut down, turning off all nixie tubes. (Also saves on nixie tube bulb life) The leds will fade dim green -> off to indicate sleep mode is active.

12/24 Hour Display Mode

Automatic Daylight Saving Time adjustment code. (United States based, second Sunday of March / first Sunday of November) Features to be added in future releases: Cathode Poisoning Prevention.

Custom LED color latching. Downloads: Contact: Source Code, Schematics, Hex Files: Nixie Release 1.2 - (Sep 14 2014) - PIC Firmware: 1.2 | PC Application: 1.1 | Schematic: 1.0

PIC Firmware: Added PBIT & CBIT (Power-up / Continuous Built-In-Test) code. PIC Firmware: Added code to detected repeated hardware failures and latch the clock into a fail safe mode. PIC Firmware: Minor bug-fixes within RTC module. RTC would send an extra byte of data on calls to RTC_SetData(). PIC Firmware: Minor bug-fixes within I2C module. I2C_Idle() performed a bit-wise instead of logical OR in status calculation. PIC Firmware: Style changes for code consistency.

Nixie Release 1.1 - (Feb 19 2014) - PIC Firmware: 1.1 | PC Application: 1.1 | Schematic: 1.0

PIC Firmware: Added 12H and 24H display mode. PIC Firmware: Added automatic DST adjustment for USA based DST rules. (2am, +1 Second Sunday in March / -1 First Sunday in November) PIC Firmware: Added switch deboucing code. SW2 will now toggle sleep mode. PIC Firmware: Modified bar graph values to completely fill graph when seconds counter is at 59 seconds. PC Application: Added 12H and 24H setting. PC Application: Added DST automatic adjustment enable setting.

Nixie Release 1.0 - (Dec 04 2013) - PIC Firmware: 1.0 | PC Application: 1.0 | Schematic: 1.0

Initial Release

