Best way to control volume of bell being struck?

Hi there,

I am working on a project, striking a bell/disc/singing bowl. Currently I am using an Arduino MKR1000 (powered via usb), to control a 6V push/pull solenoid (powered via separate 6V wall power supply). This works well.

What I am trying to do is to be able to adjust the volume of the strike. In an ideal world, I would have 3-15 different volumes. My understanding is that there are 3 main ways to do this:

(1) Change voltage input to solenoid (to make the force weaker/stronger)
(2) Use a servo instead of a solenoid, and then have 'delay' timings in between the full movement so to 'slow it down' and/or not make it use the full range of motion (e.g. 90degrees instead of 180) to hit the disc.
(3) Use a motor and control the speed directly through software.

Would love to get the community's input on
(1) is this feasible? As in, would it be possible to control the input voltage narrowly enough to actually control the volume, reliably, using components that are not overly (>$20USD) expensive?
(2) I have come across this solution in the forum, to slow down/accelerate a servo, but I am not sure whether the (reduced) 'average' speed of the servo is meaningful for what I am trying to do, given I only care about the speed at impact; and/or whether the acceleration of a servo between 90 degrees and 180 degrees would be meaningful different?
(3) This seems the easiest, but I wonder whether there are issues in terms of power to make the sound loud enough in the first place. Practically, would a small motor with 6-12V power supply generate a comparable force to a 6-12V solenoid, to generate a comparable upper limit volume?

Basically, would love any guidance on which of these paths seems most promising, before I go away and buy lots of components :-). Are there other options I am missing or considerations I should bear in mind?

Thanks

Best

Tobias

The first option is feasible, but complex. You will need an adjustable voltage regulator that can provide more than enough current for the solenoid. For computer control of the voltage, most people would use a DAC, which is missing on most Arduinos.

It might be possible to control the solenoid using PWM to limit the power to the solenoid. Try it and let us know what happens.

Please post a hand-drawn (pencil and paper is fine) schematic of the wiring, and forum members can provide other ideas.

Another option is to send a single pulse to the solenoid. A very short pulse won't be enough to reach the bell. A very long pulse will hold the striker against the bell. Values between should hit the bell with various intensities.

const byte SolenoidPin = 6;

void setup()
{
  Serial.begin(115200);
  delay(200);
  while (!Serial) {}

  pinMode(SolenoidPin, OUTPUT);

  // 1 microsecond to 100 milliseconds in steps
  // of 0.1 millisecond
  for (unsigned long duration = 1; duration < 100000ul; duration += 100)
  {
    digitalWrite(SolenoidPin, HIGH);
    delayMicroseconds(duration);
    digitalWrite(SolenoidPin, LOW);
    delay(500);
    Serial.println(duration);
  }
}

void loop() {}
2 Likes

more than one hammer, with different thickness or density of foam on the additional hammers

one hammer
with a linear actuator carrying a bumper of foam or low density rubber
vary the stroke of the linear actuator to vary the intensity of the strike
the hammer has one job
the linear actuator limits the ability to do that job

Do you need to take the hammer away after it has struck to avoid it damping the bell? That could be a key issue, as you need a variable speed "approach" but a fast retract once it has struck.

I like that idea.

A servo will probably be too slow for the "loud" sounds.

A solenoid is a motor... A linear motor with limited distance. It can be controlled with PWM, just like a regular DC motor. The variable single-pulse timing is "similar" to PWM but maybe slightly more straightforward.

Wow thanks all for your super fast & thoughtful responses!

@johnwasser thank you! This is both very elegant, and an obvious first thing to try! Will play around with this and report back :slight_smile:

If that won't do the job, I will look into PWM and/or adding a more involved hammer mechanism as per @Geek_Emeritus suggestion!

As per my wiring diagram, it looks identical to this (apart from 6V battery pack instead of the 2x 9V set-up shown here, and MKR1000 instead of UNO)

Thanks again, all!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.