Variable velocity solenoid

Hello:

I am working on a project in which a set of solenoids strike individual chimes in a large carillon-style set up. I am using a Darlington array (ULN2803A?) to do the switching of a higher voltage source (12volts) via the Arduino (5volts). That is working well, clicking along splendidly.

Now, the next step . . .

How can I control the velocity of the solenoids, that is the force with which it strikes the chimes? The idea is to have some dynamics to the instrument. I have looked into modern player pianos, such as the Yamaha Disklavier, and it looks as if they are using push solenoids to actuate the hammers. How are they providing a variety of forces via a single solenoid (one per key)?

My research has shown that there might be something in using PWM to drive the solenoid. Early tests have just turned the solenoids into vibrating noise makers.

Any ideas would be appreciated.

Thanks,

Jason

F = mA or A = F/m.

The acceleration of the solenoid’s slug is dependant on it’s mass and the magnetic force. You could vary the force by varying the supply voltage. A way of doing this would be to have an adjustable voltage regulator supply the voltage. These are often controlled by resistors or a pot setting a control voltage. Digitals pots, or perhaps PWM, could be used to set the control voltage before firing the solenoid.

V = At.

The velocity of the slug depends on it’s acceleration and how long it accelerates. So you could leave the voltage alone and just adjust the pulsewidth of the applied voltage to vary the speed of the slug. No doubt you’ve found a max PW. The question is, is the shortest PW … that which just allows the slug to kiss the chime … make enough of a sonic difference ?

PWM implies that you are sending a pulse of a certain duration over a repeated cycle time. That is why you see a vibrational action. Try just sending a single pulse, and increasing the duration to get a harder strike. Otherwise you may need to use a DAC to send generate an analog voltage. You would vary the ramp time of the signal by setting different levels over time.

What PWM frequency are you using? The fact that you can see the solenoid vibrating suggests that it’s way too low.