“The year 2019 is coming to an end, so it is perfect time to finish a project I have working on for the last few weeks: a ‘meta clock’ built with 24 individual analog clocks, controlled by a network of LPC microcontrollers.
The idea of using multiple analog clocks to build a meta clock is not new: The Swedish design studio ‘Human since 1982‘ has created different versions of awesome and stylish clocks in the ‘ClockClock’ project.
Design Considerations and Limitations
Such a clock can be built in many ways. For my design I considered the following:
- Costs: I did not aim for the lowest possible costs, but it still shall be reasonable, aiming at less than $10 for a single clock.
- Time: Using fiducials on the board to use a Pick&Place machine to produce the boards
- Power: The clock shall operate from standard 5V (e.g. USB power bank) and be less than 2A for a 24 clock version.
- Materials: The enclosure should be laser-cut and the hands 3D printed. My laser cutter has a working area of 40×40 cm. It shall be possible to easily exchange the enclosure (material, color).
- Boards: The most flexible way would be to use a single board for each clock. To save costs and making communication easier I decided to drive four clocks per board which seems to be a sweet spot. But this fixes the distance between the clocks too. I want a rather small clock, aiming at 70 mm between clocks instead of the usual 100 mm. Each board shall be easily accessible and removable.
- Communication: instead of using I2C, the communication between the boards shall use the more robust RS-485. Using the bus, a master shall coordinate all clocks and provide a command line (CLI) diagnostic and interface. The master shall be able to communicate with a host PC over USB and maintain the RTC time.
- Motors: to save costs, a special 360° version of the VID28 stepper motor is reduces the height of the design. The X40 motor was considered, but it is more expensive and uses more space in Z direction.
- Motor Driver: to offload the microcontroller and use less pins with silent and fast motor operation, the X27.017 stepper driver is used. This adds to the BOM but makes the design easier. The driver shall support configurable acceleration and de-accelleration curves for smooth and silent operation of the clock hands.
- Microcontroller: I have used the NXP LP845 which I like and love in my previous clock projects. With an ARM Cortex-M0+ I have plenty of processing power and the flexible switch matrix it simplifies pin assignments and PCB routing.
- Software & Tools: Software is tracked with git. For portability everything is written in C using open source tools (GNU for ARM) in the Eclipse based NXP MCUXpresso IDE. Low-Level drivers are implemented with MCUXpresso SDK. Each clock board runs with FreeRTOS which makes it easy to add new functionality. It shall be easy to add new functionality to the software and extend it.
A clock ‘unit’ with 4 boards needs the following main parts:
- NXP LPC845M301JBD48E (32bit ARM Cortex-M0+, 64 KByte Flash, 16 KByte SRAM)
- XC6206 DC-DC 3.3V converter
- SN65HVD72 RS-485 transceiver
- 4x VID28.12 dual-shaft stepper motors in 360° version (or remove the end stops, see World Stepper Clock with NXP LPC845)
- 2x Switec X12.017 quad stepper motor driver
- 8x AH3572 hall sensors
- 8x round neodymium magnets 4×1 mm. Depending on the enclosure material add 4 more magnets.
- 6x PCB (I have produced them at PCBWay)
- Wires, connectors, C’s and R’s (see image below)”