Maker Michael Klements has built a unique electromechanical clock using a little Arduino hardware, code, and 28 servos, which tilt panels to reveal the correct time in digital format. As the time changes, the panels are tilted to show their edge and remove the green highlighted area from view, providing a unique way to present the time. Check out the demonstration video below to learn more about the Arduino clock.
“I built a countdown timer a couple of months ago using a two-digit mechanical 7-segment display which was driven by 14 servos and an Arduino Mega. It came out quite well, and a number of people suggested doubling up on the display to build a clock. The only problem was that the Arduino was already running short on PWM IO, and I needed to double up on the outputs. Fortunately, someone pointed me in the direction of these PCA9685 16 channel PWM drivers, so I used them and a DS1302 real-time clock module to build a mechanical 7-segment display clock which uses 28 servos and is now driven using an Arduino Uno.”
Building the Arduino Clock
The process of building this Arduino clock is both intricate and fascinating. Michael Klements started with the idea of creating a countdown timer, which then evolved into a full-fledged clock. The initial challenge was the limited number of PWM (Pulse Width Modulation) IO pins available on the Arduino Mega. Each servo motor requires a PWM signal to control its position, and with 28 servos needed for the clock, the Arduino Mega’s capacity was quickly exceeded.
To overcome this limitation, Klements utilized PCA9685 16-channel PWM drivers. These drivers are essential for expanding the number of PWM outputs, allowing multiple servos to be controlled simultaneously. By integrating two of these drivers, he effectively managed to control all 28 servos required for the clock.
Technical Components and Functionality
The heart of the clock is the Arduino Uno, a versatile microcontroller known for its ease of use and flexibility. The Arduino Uno reads the time from a DS1302 real-time clock (RTC) module. The RTC module is crucial for keeping accurate time, even when the Arduino is powered off. It maintains the time using a small battery, ensuring that the clock remains accurate.
Each of the 28 servos is connected to a panel that can tilt to reveal or hide segments of the digital display. The servos are programmed to move in precise increments, ensuring that the correct time is displayed. The PCA9685 drivers communicate with the Arduino Uno via the I2C protocol, a communication standard that allows multiple devices to be connected to the same data line.
The mechanical design of the clock is also noteworthy. The panels are arranged in a 7-segment display format, commonly used in digital clocks and calculators. Each digit is represented by seven segments that can be individually controlled to form numbers. By tilting the panels, the clock can display any number from 0 to 9, allowing it to show the current time in hours and minutes.
The video above provides a detailed demonstration of the clock in action. It showcases the smooth movement of the servos and the precise control achieved through the Arduino and PCA9685 drivers. The clock’s unique design and functionality make it a standout project in the maker community.
In conclusion, Michael Klements’ electromechanical clock is a brilliant example of combining hardware and software to create a functional and visually appealing device. By leveraging the capabilities of the Arduino Uno, PCA9685 drivers, and DS1302 RTC module, he has crafted a clock that is both innovative and practical. This project not only demonstrates the potential of Arduino-based projects but also inspires others to explore the possibilities of electromechanical design.
Source: AB: Klements’
Latest Geeky Gadgets Deals
Disclosure: Some of our articles include affiliate links. If you buy something through one of these links, Geeky Gadgets may earn an affiliate commission. Learn about our Disclosure Policy.