61. Shaker motors
The shaker motor is one of my favorite feedback toys. It does what
the name suggests: it shakes the cabinet when activated. When done
properly, this isn't a buzzy kind of shake like a cell phone on
vibrate; it's a deep, earthquake-like rumble. In fact, the shaker was
used to evoke exactly that effect the first time it was featured in a
real pinball machine, in Earthshaker (Williams, 1989).
The shaker effect is so intensely tactile that it adds a great dose of
drama and excitement to the game whenever it fires. And virtual pin
cab people aren't the only ones who think so. Shakers have become
common on real machines as well. Nearly all of the newer Stern
machines (from the early 2000s onward) have at least an option for a
shaker, as do the recent remake editions of 90s Williams games
(Medieval Madness Remake, Attack from Mars Remake).
As with backbox fans
, if you install a shaker,
its use won't be at all limited to games that originally included
shakers. The DOF database replicates the authentic shaker usage for
tables that had shakers originally, but it also adds the effect to
lots of games that didn't. As of this writing, the DOF Config Tool
database includes shaker effects for 237 (!) games. If you do install
a shaker, you can count on getting a lot of use out of it.
A shaker is just a motor with an unbalanced weight attached to its
shaft. It works like a washing machine on spin cycle with an
If you want to design your own shaker motor from scratch, the basic
parameters for a good shaker are: two 1-pound weights, placed about
1cm off-axis relative to the motor shaft, spinning at about 3000-4000
RPM. These aren't exact numbers that you have to slavishly replicate
to make it work; they're just to give you a rough idea of what has
been found to work well for other cab builders. Anything in the same
general range should work.
Most shakers are built with dual-shaft motors (that's a motor whose
shaft sticks out from each end of the motor body). A dual-shaft
design is nice because it lets you split up the weight, putting half
of the total weight at each end of the shaft. This helps distribute
the forces on the shaft more uniformly, to even out the wear on the
motor's bearings. A single-shaft motor will work, too, though. If
you do go with a single-shaft motor, you'll obviously need to use one
2-pound weight instead of two 1-pound weights.
Thanks to the popularity in recent years of shakers in the real
machines, it's easy to find full shaker assemblies for sale from
pinball parts suppliers. Pinball Life and Marco Specialties both sell
a variety of shakers designed for the last couple of generations of
Stern machines. They sell for $100 to $200, depending on the target
All of the Stern shaker assemblies use the same mechanical parts, so
you should be able to use any of them in a virtual cab. The
differences between the available kits are all in the interface
electronics - which you won't need, because we're interfacing to a
completely different kind of system in a virtual cab. If you want to
go with a pre-built kit, my advice is to buy any of the available
Stern kits at the lowest price point (currently about $100). You can
ignore the details about which Stern system board it's designed for,
and when you get the kit, you can just throw away the interface
electronics board. All you need to connect is the two wires from the
motor. See "Wiring" below.
There are several good designs for DIY shaker motors on the Web, that
can be built for $50 to $100 in parts. Given that you can (as of this
writing) buy a full assembly for $100 from Pinball Life, I'm not sure
the cost savings are enough to justify it, but you might prefer it
if you enjoy this sort of project.
Motors: The hardest element to source for an improvised shaker
is the motor itself. There are hundreds (maybe thousands) of DC
motors available, but that creates a needle-and-haystack problem
that makes it tough to find one in the right size
and torque range. Ideally, you want a 12VDC, high-torque, dual-shaft
motor with a 6mm or 1/4" shaft. (The shaft size isn't critical in and
of itself, but it's a good proxy for the motor power we're looking
Some specific models that are known to work well:
The replacement motor option from Pinball Life is by far the easiest
choice, since you can just order one without hunting all over eBay.
The problem with the other motors is that you can't buy any of them
retail; they were made in big runs for OEM customers, and the only way
to buy them is from surplus stores and eBay sellers with used parts
and remnant inventory. If you can find one of the models above on
eBay, or a similar alternative, it'll probably be a bit cheaper than
the replacement part from Pinball Life. If you can't, or you can't
find one that's cheaper, go with the Pinball Life part, as it's
reasonably priced and should be exactly the right thing.
If you know of any other specific models that are similar to the above
and are currently available, please let me know so that I can add them
to this list!
Weights: The plans referenced above are mostly about how to
make improvised weights and attach them to the shafts. There aren't
any off-the-shelf parts (that I know of) that make good weights by
themselves, so some fabrication is required.
Mounting: The other big DIY element that the plans above will
help with is mounting the assembly to your cabinet. Darkfall's scheme
uses U-bolts. The Pinside plans use metal plates.
Enclosure: You should enclose your assembly with a sturdy cover
that will contain the weights in case one of them ever comes loose. If
a weight detaches while the motor is running, it could be ejected at
high speed and sent careening across the cabinet. It's really
important to make sure that doesn't happen, by surrounding the motor
with a good enclosure. The off-the-shelf assemblies use plastic
boxes. It's fairly easy to fashion a suitable box out of plywood if
you don't have something else at hand to use.
Where to mount
On the real machines with shakers, the standard place to install the
unit is near the front of the cabinet, usually near a corner. The
motor shaft is oriented parallel to the long axis of the cabinet.
This orientation makes the shaking a side-to-side motion, which
transfers more motion to the cabinet body because it's narrow in that
direction. Placing the motor close to the front of the cabinet makes
most of the motion happen in front, where the player can feel it most
Interaction with nudge devices
Some people have trouble with the nudge device picking up
accelerations from the shaker. The nudge device is an accelerometer
specifically put in place to pick up cabinet motion, so it's obviously
going to detect motion from the shaker the same way it detects motion
imparted by the player.
If you're having a problem with your nudge device going crazy when
your shaker is on, the first thing you should do is ask yourself this
question: "What would a real pinball machine do?" In other words,
would that same exact shaker motor affect the ball on a real pinball
machine the way it's affecting your virtual game? If the answer is
yes, you don't have a problem: the nudge device is doing exactly what
it should by replicating what would happen in a real game. The
problem is when the answer is no, when the virtual nudge effect is
wildly exaggerated compared to reality.
In case you've never played a real pinball machine with a shaker,
here's the reference point: a shaker on a real machine doesn't affect
the course of the ball noticeably. And the real shakers are
strong; they're strong enough that people standing nearby can
feel the effect. So if your virtual cab shaker is making
the virtual ball fly around wildly, something's wrong.
There are two ways to fix this:
- Turn down the intensity of the shaker
- Turn down the sensitivity of the nudge device
You should start by making sure the shaker is producing an effect
that you like. Adjust the speed of the motor, either by adjusting
the voltage or by adjusting the DOF PWM parameters; see "Speed
adjustment" below. But don't let the tail wag the dog, as it
were: don't keep turning down the shaker effect just because
it's causing unwanted nudging. Adjust it until it feels right
and leave it at that.
If the shaker is still causing excessive nudge interference after
adjusting the force to your liking, the correct solution is to reduce
the sensitivity of your nudge device. You might balk at this
suggestion, but go back to that question about real machines: does the
ball fly around wildly on a real machine when the shaker is on? No,
it doesn't. The thing is, most virtual cab builders initially set
their nudge devices to be far too sensitive, because they want to see
an immediate big effect from the slightest touch on the cabinet. If
your slightest touch affects the ball, then obviously the shaker is
going to affect the ball. I always urge new cab builders to go find a
real machine and play around with it for a while, to see how a real
ball reacts to nudges. If you mostly play virtual pinball, you'll
probably be surprised by how "dead" a real ball feels when you nudge
it. A trapped ball on a real machine will not fly up a few
inches from the flipper when you give the machine a little push, the
way many people want it to in Visual Pinball. If you want the shaker
to coexist peacefully with your nudge device, you'll have to adjust
your nudge device sensitivity so that it resembles that more subdued
response a real ball would show.
Note: I strongly recommend that you don't use "dead zones" to
adjust nudge sensitivity. Dead zones are terrible. They'll make
erratic behavior even more erratic because they create a non-linear
"cliff" where there's no response at all at one level, and suddenly a
huge response just a hair above that. It's far better to use linear
settings, like the "Gain" settings in Visual Pinball.
The amount of shaking you get out of your motor will be a function of
the weights, the distance they are off-axis, and the speed of the
motor. It will also depend on factors that aren't related to the
motor itself, like where it's mounted in the cabinet, the overall
weight of your cabinet, the stiffness of the legs, and the
construction of the floor the machine is sitting on. The same shaker
motor will produce somewhat different effects in different cabinets.
Of all of these factors, there's one that we can easily control: the
speed of the motor. Once you have everything set up, you can
fine-tune the effect by adjusting the motor speed up or down to
get the effect you want.
There are two ways to control the motor speed: adjusting the voltage
of the power supply, and adjusting the power in software via PWM
Adjusting the voltage: DC motors generally can run on a
range of voltages. A nominally 12V motor should run on 10V or 9V,
just a bit slower than it would on 12V.
To control the voltage, you can use a variable voltage regulator as
the motor's power supply, instead of connecting it directly to the 12V
supply. Look for a "DC-to-DC step down converter" on eBay, and find
a type that has a set-screw to adjust the output voltage. This will
let you reduce the voltage to slow down the motor.
Adjusting with PWM: The DOF Config Tool lets you set the power
range for the shaker motor. Go to the Port Assignments page, and look
for the "Shaker Motor" section on the right side of the page. This
will let you set a maximum intensity, on a 1-48 scale.
Note that this only works if you're using a PWM-capable output
controller, such as an LedWiz or a Pinscape Power Board. If you're
using a relay-based controller (e.g., Sainsmart), PWM control won't
work; you'll have to use the voltage adjustment approach instead.
Follow the general wiring plan for any output device
(Feedback Device Wiring
). Connect one terminal of the shaker
motor to the positive (+) power supply voltage (usually 12V). Connect
the other terminal to an available port on your output controller.
A diode is required, to protect your output controller and other
electronics from interference from the motor's magnetic field. See
. If you're using a pre-built shaker assembly, it
might or might not already have a diode installed; if you don't see
one, assume there isn't one and add your own.
If you're using a pre-built kit, and it came with some kind of
interface board for a real pinball machine (e.g., a Stern SAM
connector), you won't need that to connect to your virtual cab. Those
boards are designed to interface to the specific electronics found in
the target pinball machine, so they're not relevant to a virtual cab.
We just need the motor itself.
If you're using the Pinscape expansion boards, you can connect the
shaker directly to any MOSFET Power Board port. If you're using an
LedWiz, don't connect the motor directly, as it will draw too much
power for an LedWiz port; you'll need some kind of booster or
amplifier circuit. See "Power limits and boosters" in
H-bridges: If you read through old posts on the forums, you
might see people say that "H-bridges" are needed to control shaker
motors. This idea became embedded into the group's consciousness
enough that some people still repeat it. But you should ignore these
posts; they're based on a misconception that came from Arduino
robotics hobbyists. H-bridges are relevant to motors, but only
if you need to switch the polarity on the motor to make it run
forwards and backwards. Robotics people use H-bridges because they
want their rovers to be able to back up. You don't need anything like
this with a shaker. If you're using the Pinscape expansion boards,
you can run the motor directly from any Power Board port. If you're
using an LedWiz, you just need an ordinary booster circuit, the same
as you'd use for any other type of device, not an H-bridge.
You might also see old posts with some really
nasty LedWiz hacks involving soldering wires to IC pins on the LedWiz
board. Ignore those! They reflect outdated advice based on the
H-bridge misconception. If you're using an LedWiz, you will need some
kind of booster circuit, but you don't need to hack the LedWiz to add
that. You just need an external booster circuit, as described in
(see "Power limits and boosters").
Motors produce a lot of electrical noise that can affect logic circuitry
(like the feedback controller and the PC motherboard). Diodes are a
must, as already mentioned. In some cases, you might need to add more
noise filtering beyond the diode. If your motor causes noticeable
problems, such as USB disconnects or random keyboard input, try adding
a pair of inductors, in series with the wiring to the motor, one
on the power input to the motor and one on the connection to the
Try a 4.7 µH inductor, with an amperage rating equal to or
higher than your motor's operating current. Here's an example
part from Mouser that should work well:
Coilcraft DR0608-472L 4.7µH, 5.8A radial inductor - at Mouser
Inductors aren't polarized, meaning they don't need a special
orientation when you install them. It doesn't matter which lead
connects to the "+" side and which connects to the "-" side.
(The diode, in contrast, has to be installed with its striped
side going to the "+" voltage, as shown in the diagram.)
This really shouldn't be necessary on most virtual cabs. I haven't
had a need for this with any motors on my machine. But it's something
to try if you have persistent interference problems from your shaker
and nothing else helps. The same goes for any other feedback devices
that include motors, such as gear motors, fans, and beacons.
In the DOF Config Tool
, go to the
Port Assignments page. Find the port number where you wired the
shaker motor. Assign it to "Shaker".
At the right side of the page, you'll also find a section labeled
"Shaker Motor" that lets you set the intensity range. If you're using
a PWM-capable controller (e.g., an LedWiz or a Pinscape power board),
this lets you set the range of power that DOF uses when the shaker
runs. The intensity values are on a 1-48 scale, where 48 is the
highest power. The default settings use the full available range. If
you find that the shaking effect is too powerful when DOF activates it
during game play, you can reduce the maximum intensity setting to slow
down the motor. Similarly, if the motor seems too weak some of the
time, or doesn't have enough power to start spinning in some cases,
you can raise the minimum setting.
Note that the intensity adjustment won't work unless you're using a
PWM-capable output controller. If the motor is connected through any
kind of relay, such as a Sainsmart board, the DOF PWM adjustment won't
work and you'll have to adjust the speed some other way, such as with
a varying voltage supply (see "Speed adjustment" above).