Close
0%
0%

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

  • 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

  • Update Regulation Paper

    Dave Ehnebuske03/17/2014 at 02:26 0 comments

    03/16/14 Update the paper on regulating a bendulum clock to include information on dealing with out-of-plane bendulum movement.

View all 12 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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