Bendulum Clock

A new kind of electromechanical clock

Similar projects worth following
A pendulum clock is one whose timing is determined by the period of a pendulum’s swing. A bendulum clock is one whose timing is determined by the period of a bendulum’s swing. A “bendulum” is a sort of inverted pendulum, made from a long, thin springy vertical stalk, usually made of metal, that’s fixed at the bottom and free to move at the top. Typically, the stalk is rectangular in cross section so that it bends easily left and right but not forward and back.

A bendulum is topped with a weight. If you give the top a push, it sways back and forth periodically. The motion is much like a pendulum, except that instead of swinging rigidly from a pivot and moving the most at the bottom, the bendulum’s stem flexes across its narrow dimension and the motion is most pronounced at the top.

Like a pendulum a bendulum is approximately isochronous, meaning that its period is not too dependent on the amplitude of its swing or on the ambient temperature. Also like a pendulum, a bendulum is more accurately isochronous if the swing amplitude is small.

Since a bendulum is close to isochronous, its periodicity can be used to drive a clock. To do so it needs to be equipped with a mechanism that does two things. It needs to detect when the bendulum passes through the center of its swing and it needs to give the bendulum precisely the same little push each time it passes to keep it going. In a pendulum clock such a mechanism is called an “escapement,” and that’s what we call it here, too.

The bendulum escapement discussed here uses a strong button magnet for the bendulum weight and swings it past a many-turn coil of fine copper wire located at the center of the bendulum’s swing. The coil is attached, via a custom Arduino shield, to an analog input and a digital output of an Arduino Uno microcontroller. When the magnet swings past the coil, it induces a small pulse of electricity that the sketch running in the Arduino detects on the analog input. Very quickly thereafter, the sketch uses the Arduino’s digital output to send a short pulse through the coil. The pulse induces a magnetic field in the coil which gives the magnet the little push it needs.

The bendulum clock project started a few years ago from reading the Make magazine (volume 28, p 148) description of the solar pendulum build by Owen Tanner. Thinking it would be interesting to build one of my own, I ordered a couple of the Solarbotics solar pendulum parts bundles.

The central idea that grabbed me about the solar pendulum’s design right from the beginning was that it used a single inductive coil both as a sensor and as an actuator. Very clever! And that got me to thinking about what other things besides a pendulum I could drive and what other circuits I could use to drive them.

A series of experiments led me to the notion of a bendulum and the conjecture that it ought to be possible to build a bendulum-driven clock. You can, but not using an elaboration of the solar pendulum circuit. The push the circuit gives to the bendulum to keep it going is too temperature dependent and doesn't repeat accurately enough. That makes the bendulum less isochronous than it needs to be. Fortunately, there are other ways to drive a bendulum, and, as it happens, one based on an Arduino works well.

  • 2 × Resistor Carbon Film 47k Ohm 1/4 Watt 5%
  • 1 × Resistor Carbon Film 1.2k Ohm 1/4 Watt 5%
  • 3 × Resistor Carbon Film 330 Ohm 1/4 Watt 5%
  • 1 × Resistor Carbon Film 680 Ohm 1/4 Watt 5%
  • 1 × 47uF 50 V Radial Capacitor

View all 32 components

  • Long Term Accuracy

    Dave Ehnebuske06/01/2021 at 17:09 0 comments

    It's now more than four years later, and I'm pleased to note that the bendulum clock has simply faded into the background as I've moved on to other projects.

    It's been running continuously since March 2017, except for a period of a couple of months when I moved from the East Coast to the Pacific Northwest. Other than for the move, it's had no maintenance and little attention. I still like it a lot, and people who see it for the first time always ask about it, but it's now "just a clock." That's terrific.

    After running it for this much time, I can say its long-term accuracy really surprises me: it's better than a traditional "grandmother" pendulum clock I also have. I adjust the pendulum clock by a minute or so once a week when I pull up its weights. I adjust the bendulum clock by the same amount when I notice it's off, more or less once a month.

    I notice it drifts most when the ambient temperature varies diurnally during the summer months. During the winter months when the central heating is on and the temperature only varies by about 1ºC it's often correct to within a minute for several months. Good enough for me!

  • No Amplitude Jumps

    Dave Ehnebuske03/14/2017 at 18:31 0 comments

    I've been looking for sudden jumps in the amplitude of the bendulum swings or in the clock's speed, but haven't seen any in many weeks. I've adjusted the run rate about as well as I can, and for the last 17 days, the clock consistently loses about 0.58 seconds per day or 6.7 parts per million.

    I'm simply amazed that it works as well as it does. Unless something changes, I think it's time to tinker with a different design. I'm betting I can make a pendulum clock that's even better since a pendulum is more closely isochonous as the amplitude varies than is a bendulum.

  • Working Better than I Had Hoped

    Dave Ehnebuske01/18/2017 at 17:52 0 comments

    The clock now runs consistently for weeks at a time. Its speed is consistent to about 15 seconds per day (under 2 minutes per week). This is better than I had expected to achieve when I started the project.

    I still see the occasional sudden change in speed, from running stably at one speed to stably running at a new speed. This happens irregularly, maybe once a month, so pretty clearly something physical is going on.

    I know that changing the size of the gap between the inductor and the magnet on the top of the bendulum even slightly will visibly change the amplitude of the bendulum's swing. And I'm pretty sure that changing the amplitude will change the bendulum's period slightly, just as it does with a pendulum. So, it looks like the thing to do next is to look for a change in amplitude when I next spot a sudden change in the clock's speed.

  • Still Tinkering with Calibration

    Dave Ehnebuske10/14/2016 at 18:02 0 comments

    I reworked the temperature-compensation calibration once again to further reduce its sensitivity to the history of the temperature changes the clock encounters as it calibrates itself. Also, I changed the calibration model to be a simple linear least-squares fit across the whole temperature range.

    Still testing to see if the small, sudden changes in speed noted with the last update exist. Jury's still out on that. If so, it's got to be something physical. Probably something moves with a thermally induced stick-slip motion.

  • New Calibration Algorithm

    Dave Ehnebuske12/03/2015 at 17:55 0 comments

    With the existing algorithm i was getting horribly inconsistent results from run to run. To figure out why, I constructed a spreadsheet simulation of the algorithm's behavior under varying temperature change histories. This made it easy to see that the "calibration" it did depended strongly on how the temperature varied with time during a calibration run. Not good.

    The new algorithm is much less sensitive to that effect.

    Testing with the new algorithm yields much better consistency, but there's still something not quite right. The calibration data ovr many runs hints that my test clock undergoes some sort of (tiny) discontinuous change over time. The symptom is that after several days there is a sudden change of about 0.1% in the speed at which the clock runs. Once this happens, the clock runs at the new speed until, some days later, the speed shifts once again. My guess is that something in the clock expands and contracts in a stick-slip fashion as the temperature changes.

    Looks like I need to think about physical design some more.

  • New peak detection algorithm

    Dave Ehnebuske10/17/2015 at 17:17 0 comments

    10/17/2015 I determined that it is likely that the major source of error in the operation of the clock was due to the sensitivity of the peak-detection algorithm to spiky noise. The new algorithm is not only much less sensitive to this, it's also simpler. Also updated in this iteration are the project history document and the instructions for regulating the clock.

  • Revision H of Shield

    Dave Ehnebuske10/10/2014 at 19:34 0 comments

    10/10/14 Revised the Arduino shield to incorporate the temperature sensor used for temperature compensation. Removed the potentiometers for the coil and clock drives. Updated documentation to match.

  • Add Temperature Compensation

    Dave Ehnebuske09/18/2014 at 20:31 0 comments

    09/18/14 Reworked lots of the firmware and documentation to add temperature compensation and Arduino real-time clock calibration. Still testing.

  • Add Clock Shield PCB

    Dave Ehnebuske04/25/2014 at 19:26 0 comments

    4/25/14 Added Eagle files and link to OSHPark project for the bendulum clock Arduino shield PCB

  • Update Library and Sketches

    Dave Ehnebuske03/22/2014 at 23:29 0 comments

    3/21/14 Updated the Bendulum Library to improve the accuracy of clock speed adjustments. Updated the Escapement sketch to improve informational message text

View all 13 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates