I built a watch earlier this year to see if I could make something that was functional. I had 3 main design requirements
- Keep accurate time
- Have all-day battery
- Be small enough to wear comfortably
I managed to meet the first 2 requirements, however the third is a bit of a stretch. You do notice this design sitting on your wrist, but it is not unusable. I want to go over the design process and show what went right and wrong in this project. I will post files to use, but as I will explain I would recommend changing some design choices when making your own model.
This project involves strapping a device to your wrist that generates 150V DC. This will seriously hurt or cause injury if you don't pay attention.
Step 1: Parts Needed
When you design your watch you need to start by picking out your components.
The smaller the better. I used IN-17 which have a small footprint, but are quite tall. A tube that has the leads coming out below the number may be able to squeeze into a smaller area.
High Voltage Power Supply
Since this is battery powered, we need to convert ~3V up to at least 150V. I used a Taylor Electronics 1363 board. It is possible to design your own board, but you will need to pay close attention to the design. Using a pre-built board allowed me to shrink the size of the board to half of what it would be with hand soldering, and ended up being more efficient and less ringing than my design was.
High Voltage Switches
Most microcontrollers run off of 3-5V, not 150V. To interface with them we need a shift register, transistors or other switching device capable of the high voltage. I used the HV5523 Shift Register for this board - technically they require 5V logic but I found they worked off 3.3V without issue.
The smallest MCU that has enough pins to run all your devices is needed. Don't use a ATMega2560 for this as it's overkill. I picked the ATTiny841 because it had exactly the number of IO needed and supported the Arduino IDE.
To keep accurate time you need a RTC chip. I used the DS3231.
- Voltage Regulator
- Interface to set time or turn on display
- I used a APDS-9960 Gesture/Proximity sensor with limited success
- A way to make sure everything is working
- I had an exposed serial port and a RGB LED to show the current device state
You may also want a method to charge the battery without removing it.
Step 2: Functional Overview
I've uploaded some of my initial notes for planning the circuit layout and a block diagram of the main components of what I ended up using.
The High Voltage side has the HVPS supplying +150V through a current limiting resistor to the Common Anode (+) terminal of the Nixie Tubes. The Shift Register connects to each of the digits of the tubes. The Shift Register is a Open Drain device. Each pin can either be tied directly to ground, or be left disconnected from the circuit. This means that all disconnected leads of the nixie tube will measure 150V when not being used.
The Low Voltage side has a 3.3V buck/boost regulator regulating the voltage from a lipo battery. This keeps the circuit at 3.3V as the lipo voltage drops from 3.7 to 3.0V. The Attiny841 i2C bus connects to the Gesture sensor and RTC. Not shown is the RGB led and serial connection.
When running the MCU will check the gesture sensor for proximity information. To avoid a sleeve from triggering the display it requires the sensor to be uncovered for at least 1 second, then covered for at least 1 second, then uncovered to trigger an action. The initial version of the watch would display the time once as described in the last image. I have updated it so that it has the ability to go into always on mode by keeping the sensor covered longer.
Step 3: Board Design
I won't go into too much detail on how to make a PCB as there is already lots of information on that. Some useful Nixie Tube footprints are available here.
When I designed my PCB I stacked two smaller boards to reduce the footprint it would have when strapped to my wrist. I found it useful to print off and cut out a paper copy of the PCB to make sure all my footprints lined up and the connectors were aligned. Space permitting try to leave breakout pads for i2C and other data lines to probe or solder too during testing.
Eagle has a feature that allows you to assign a 3D model to a component, then export a 3D model of your board to another program. It was buggy when I was using it but still very useful for making sure no parts will interfere with each other.
To save space I did not include a battery charger inside the watch. Instead I have some female DuPont connectors on the side of the watch. The last image of this set shows the wiring I used. The left side is inside the watch, the right is outside. To charge the watch you connect the outermost wires to the external charger. The blue line near the battery negative represents a keyed slot to prevent inserting the charger backwards. To turn on the watch you use a small jumper cable (green) to bridge the battery + to VCC of the actual circuit. This gives a fast failsafe in case of trouble. Because of the layout you cannot accidentally short or connect up the circuit backwards.
Step 4: PCB Assembly
I ordered my boards from OSHPark because they were quite fast, cheap and had a lovely purple color :D
Also you get 3 of each board, so you can make 2 watches and have a third board for testing on.
Do the QFN packages with hot air first, then hand solder everything else starting with the smaller components. Do not wire up your Nixie tubes or HVPS. If you have a solder stencil and a toaster oven then you're doing quite well. Use a ohm meter to check for shorts on your PCB. If you measure mid-high resistance short you may have too much flux residue on the board. The HV5523 has very fine pitched pins and you cannot see if they are bridged under the IC. Give your board a chance to cool off if you are reworking it for a long time.
Once the low voltage components are assembled, run a program that will cycle through all the digits on the shift register. Use a logic analyzer or multimeter to confirm that the pins are being pulled LOW when expected. Also make sure your RTC and other devices respond as expected.
Solder the HVPS, then the nixie tubes. For the Nixie Tubes solder 1 leg at a time and don't leave the heat on too long. If it is possible hold the leg between the PCB and glass with pliers to act as a heatsink. Give the tubes a chance to cool off between soldering each leg.
If you are having issues with a part not working and you don't know if it is a solder joint, you can try "dead bug" soldering. Remove the chip from the board and use fine wire to solder to each pad directly. Make sure you use wire with enamel coating so none of the wires short together.
Step 5: Case Design
Using Eagles MCAD functions it is easy to get a 3d model of the circuit to build up a case around it. Standard sized watch straps are available at the drug/department store. If you made mounting holes in your PCB you can create standoffs in your model and quickly fasten down the board. My standoffs ended up being cutoff by the Nixie tube and were not usable - I used Sugru to make sure it stayed in one place.
Step 6: Project Files and Problems Faced
I've linked all the files I made while working on this project. These are uploaded as-is, no editing or polishing. Not sure if this is good or bad... You can see my schematic, board design, Solidworks files and Arduino code. I've explained what choices I made, and these files should help you see how to implement those choices in your own watch.
In the Eagle files the HV.brd contains the nixie footprints, HV5523, connector for the HVPS
and the APDS-9960. APDS-9960 is on a second page as it is copied from Sparkfun's 9960 breakout board file. The Schematic.brd contains all the low voltage stuff. I think the needed libraries are all included.
Solidworks folder is a huge mess - The export from eagle created individual files for each resistor, and dumped everything. "Assem8" is the file to look at to see everything mated and assembled. The "Export" folders are STL files with different parameters from testing.
The Arduino sketch in the first code is what is demoed in the video on the next page and is what is used for all the documents in this document. The second link has a newer revision that includes multiple display modes. If the RTC resets on this sketch it will set the time to 12 noon on next power on. This is so the watch can be used as a desk clock that is always plugged in.
If you decide to use my files as a starting point, you should be aware of a few issues I have not solved.
- The APDS-9960 is not compatible with the Attiny Arduino Core. Proximity detection works, however I cannot get the code to reliably pickup on the interrupt signal for gestures.
- The ISP header is mirrored and one of the pins was not connected.
- The ISP VCC header goes to the wrong side of the voltage regulator. If this is not disconnected the voltage regulator will instantly fry
- The CR battery holder overlaps the i2C header by a few mm
Step 7: Final Result
At the end of this odyssey I have a working Nixie Watch. It is somewhat usable, but more of a proof of concept than a daily watch. The second board was converted into a desk clock and the third board was destroyed during the build process.
Some useful links if you are going to try designing your own watch:
EEVBlog Nixie Playlist