I've got a thing for clocks... I wonder if it's because I'm not getting any younger.
Anyway, I had a day free over the weekend and decided It was clock building time.
There's not much to this clock really. A PIC18F25K22 running some simple firmware written in AMICUS18 BASIC. There's a Dallas DS1302 RTC chip with battery backup, and a handful of other components.
I've been experimenting with different firmware to see which makes the display the most readable.
The image on the left of the clock front is showing a time of 10:20:13UPDATE 29/10/13
I've created a construction project for this clock which can be found here.
It’s been a busy couple of days playing with the Nixie Clock but it’s been well worth it.
The firmware for the PIC is completed and running and the main logic board that contains the PIC, RS232 interface, Audio Amplifier, HT and +5v PSU is complete and working.
I had to make a few “modifications” to the wooden case as the display board PCB was slightly too wide and the 7-way Molex connector was catching on the side, preventing the board from sliding into place. Thank heavens for electric files !!
The chap who will be receiving this is a bit of a change freak and loves things that are configurable, so every parameter can be configured by hooking the clock to a dumb RS232 terminal.
There is provision for two temperature sensors to be connected, and you can set alarms if minimum or maximum temperatures on either channel are exceeded. Alarms are either flashing coloured LED’s and/or an audio alert (frequency configurable of course).
There is provision for the CPU to power down the Nixie tubes during a specified time window. This could be useful during the day when the owner will be at work and should help extend the life of the tubes.
The on board RTC (DS1802) can have its date / time set via a simple command over the serial port, and is also responsible for trickle-charging the on-board NiMH back up battery.
All that’s left to do is fit everything into the case and possibly make a few alterations to the firmware. I’m using just under 25% of the available program space, so theres lots of room available for additional features. I’ve also added an 8-way Molex connector to the top of the PCB that brings out +5v, 0v and the remaining unused I/O pins from the PIC; this will make hardware expansion simpler when it’s required; and it will be required at some point.
I've marked all the connectors so that when enquiring hands take the darn thing apart, it can be put back to gether... that's going to happen at some point as well I suspect.
Picture showing back wooden panel with interface connector, logic and driver board.
Many years ago, I constructed a Nixie tube based clock for a friend, and whilst it worked, it never really worked well. It had an MSF decoder so could automatically synchronise itself from the radio clock at Rugby in the UK (since moved to a new location). However, with all his computers, PSU’s and other radio equipment, the MSF receiver never worked properly. Also, I never gave the design that much thought. It required a cumbersome power supply arrangement to drive the logic and provide the high voltage for the Nixie tubes. I used a PIC microprocessor to control everything but I ran out of program space so the project never reached its full potential. I also ran out of time and enthusiasm which didn’t help.
However, since I’m now officially on vacation for a week or so, I thought it would be an interesting project to re-do, and this time, do it properly.
This time I’ll approach the project in a slightly different way. Instead of one large PCB attempting to house everything, I’ve gone for a modular approach. This will make hardware upgrades a lot simpler in the future and allows the project to be constructed and tested in blocks which will cut down on re-work time if a fault is found in a specific area.
The picture below shows the major building blocks of the project.
At the rear is a small PCB that contains a simple high voltage (HV) inverter. This is really just a prototype and will be re-worked into a complete PSU board for the final build. It’s running from a 9v DC output from my bench PSU and producing the 150v DC to drive the Nixie tubes. The output voltage is adjustable via an on-board variable resistor.
The large board in the middle is the completed display board. This contains a 64-bit shift register constructed from eight 74HC595, 8-bit shift register ICs. There are also 50 x MPSA42 High Voltage driver transistors on the board to control the Nixie tube cathodes; all the tube Anodes are connected to a common HV rail via 47K resistors. There are also 9 x LED’s mounted in strategic locations at the front edge of the display board and these will be used to display operating mode; date, time, temperature, alarm trigger etc.
In the picture foreground you can see a small breadboard that is currently home to an 18F25K22 PIC on a carrier PCB, and various connections to PIC programmers, and my Shift Register monitor device (described in previous blog entries).
The completed unit will contain a Maxim DS1302 Real-Time-Clock chip with battery backup, and a serial port interface for unit setup. There will be support for two temperature sensors (one internal, one external) and temperature / date/time alarms.
The possibilities are almost endless and I’m really only constrained by the amount of code I can squeeze into the PIC, which should be substantial as this PIC is a far cry from the previous one I used that had only 1K of program space.
The advantage of using the 74HC595 IC’s becomes apparent when you realise that you only need a total of five CPU I/O pins to control the shift register chain (and you can do it with less if you really want to). This leaves plenty of PIC I/O pins for other uses. Also, if an upgrade to the display board were ever required, the shift register chain can be lengthened without impacting on the rest of the hardware.
If you need to create a project that has a lot of inputs or outputs, the 74HC595 and 597 IC’s are perfect.
Nixie Clock running display test program.
Now I love clocks, I really do. They are great projects because you can place them on the mantelpiece or in other prominent locations as a functional working device, partners can’t complain about it being another piece of junk because they do something useful, they come in all sorts of shapes and sizes and are great beginner projects and once you’ve built it, you can tell people “I made that”.
Recently, I’ve been working on a new clock project and it suddenly occurred to me that except for the physical display aspect of the clock, the internals are nearly always the same. A battery-backed RTC for the date/time (usually a Dallas DS1302) with support components, a PSU section of some type that usually puts out 5v for the logic and possible an additional higher voltage for larger LED displays, a PIC to glue everything together and some display driver hardware.
The only really custom part is the physical display, and the PIC firmware, and this got me thinking; “Can I construct a generic clock that can have many different displays connected, and just need to update the PIC firmware as required”?
So, this is what I’m currently working on. Some more thought is required on some of the projects finer attributes but I have an initial prototype sat on my breadboard that’s driving a strange looking LED display with 60 LEDs on it (I’ll post pictures later) and it seems to be working well.
The next part is to design several other display units and make sure that they can be driven by the hardware.