Power a motor for a time after a trigger

So I'm mostly a software person. I can handle some electronics, but not much.

A friend of mine likes to build clocks and really weird ones. His latest one has an arm that is lifted to wind the clock. You would have to lift the arm every couple of hours to keep the clock running, so the design has a little motor that allows the clock to "self-wind". The mechanism is very simple:

  • A mercury switch triggers when the arm falls below a certain angle, powering the motor which lifts the arm;
  • When the arm is lifted about 30 degrees from where it started, the mercury switch turns off, and the clock is good for another couple of hours.

The whole thing is powered by a 9V battery, which doesn't seem appropriate to me, but lasts a couple of months.

The problem is that the model of mercury switch is no longer made, and there are no suitable replacements that have to rotate 30 degrees between turning on then off.

I just need a nudge in the right direction here.

Since I'm a software guy, I would tend towards an ATTiny85, a mercury switch, and an appropriate power mosfet, but I'd also need a way of dropping the battery's power down to less than 5.5V and keeping it above 2.7V while the motor runs. The program would have to sleep most of the time, only waking up in response to an external interrupt (the mercury switch).

That's a fair bit of complication compared to just a mercury switch. Surely there must be a simpler approach? This seems like something that would be an exercise in an electronics text. I'm betting a 555 timer would be appropriate here, but I've only barely played with them.

quote:"The problem is that the model of mercury switch is no longer made, and there are no suitable replacements that have to rotate 30 degrees between turning on then off."

This is utter nonsense! Even you can make a suitable replacement. Use a plastic tube with an end plug. Put two copper wires in the plug so when a ball bearing rolls down the tube it shorts the two wires.

Add a plug at the first end if the ball bearing tends to roll out.

Paul

Tilt switches come in all shapes/sizes/angles.
Try one of the big suppliers.
The mercury filled switches are still available on ebay.
leo..

Not to be terse, but I think you missed the problem. It's not that we can't find mercury switches. We can. It's that we can't find any that will turn on at one angle and then turn off at an angle 30-degrees back.

Certainly, I can imagine how your suggestion could be tuned to our needs: Just use a curved tube. If we end up super hard up for solutions, we might go this route, but I think we've got some options now.

Paul_KD7HB:
quote:"The problem is that the model of mercury switch is no longer made, and there are no suitable replacements that have to rotate 30 degrees between turning on then off."

This is utter nonsense! Even you can make a suitable replacement. Use a plastic tube with an end plug. Put two copper wires in the plug so when a ball bearing rolls down the tube it shorts the two wires.

Add a plug at the first end if the ball bearing tends to roll out.

Paul

Am I correct to think that regular mercury switches are too sensitive - that you want one that will need a full 30° of movement before it triggers the motor?

I suspect Heath Robinson (or Rube Goldberg) could figure out a mechanism to delay the tilting of the mercury switch :slight_smile:

You could certainly use an Arduino to wake up when a lower limit switch is triggered and then operate a relay (or Mosfet) to power the motor until an upper limit switch tells the Arduino to turn off the motor and put itself to sleep.

If the motor is powered by a battery then I reckon it would be simpler and more efficient to power the Arduino from a separate battery. An 8MHz Arduino will run happily from two AA Alkaline cells and if it is mostly asleep they would last a very long time. All devices that reduce voltage wast energy.

...R

If an Arduino is involved, then two mercury switches could solve the problem.
One for each angle.
Leo..

A ball bearing resting on two wires will keep contact through a range of inclination based on how close together the wires are. The same wires will keep the ball from rolling up onto them based on how high they are.

So with a marble size metal ball, and metal rod diameter of a toothpick and some trial and error with a Dixie cup should get you well on you way.

I like the 2c end switches idea. When the arm lowers it presses a button, this wakes the arduino, arduino starts motor, arm rises, second switch is pressed and power cuts off again.

Thanks to all for the comments.

Robin2, you are correct. The tilt switches we've been able to find, and we didn't look very hard, are far too sensitive, like 5 degrees versus 30.

Using two mercury switches occurred to me this morning. I thought there would be a way to wire them up (series or parallel) that would work. There isn't, at least, not as far as I can find. But two mercury switches seem like a much better idea than a timer. Less room for error. Two micro-switches would be even better, because the clock would operate the same even if it wasn't level. Alas, the design of the clock really wouldn't allow microswitches.

Looks like I'll need to dust off my ATTiny programmer.

What about using hall effect transducer in this case. It can meet up to your requirements. just attach this sensor at the start and final position of your arm and later we can trigger the motor with the change in Vh. the hall effect transducer is accurate and we can even adjust the sensitivity(by using appropriate pot).
We have SS495A for the same or you can use A1332 hall effect module.

Rural:
Robin2, you are correct. The tilt switches we've been able to find, and we didn't look very hard, are far too sensitive, like 5 degrees versus 30.

What about this for a Heath Robinson solution ... :slight_smile:

Get a piece of curved tube and put a ball bearing in it. Mount it in such a way that the curve has to rotate 30° before the ball lifts off its contacts?

...R

Hi,
Use two tilt switches and some logic circuit or an Arduino.

Tom.... :slight_smile:

TomGeorge:
Use two tilt switches and some logic circuit or an Arduino.

That's the easy way :slight_smile:

...R

Rural:
The tilt switches we've been able to find, and we didn't look very hard, are far too sensitive, like 5 degrees versus 30.

The page I linked to had this 40-degree non-mercury tilt switch.
100 ohm contact resistance, so a mosfet could be needed between switch and motor.
Leo..