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.

Shaker design

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 off-balance load.
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.

Off-the-shelf shakers

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 machine type.
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.

DIY

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 for.)
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 directly.

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.
For more on nudge adjustments, see Nudge & Tilt.

Speed adjustment

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 control.
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.

Wiring

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 Coil Diodes. 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 LedWiz Setup.
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.
LedWiz hacks: 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 LedWiz Setup (see "Power limits and boosters").

Electrical interference

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 feedback controller.
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.

DOF Setup

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).