Understanding Drivers in the FAST Modern Platform¶
In the FAST Pinball Modern Platform, all drivers are connected to individual FAST I/O boards. A driver is anything controlled by the high voltage of an I/O board, which would be your coils, solenoids, motors, magnets, etc. (Servos and stepper motors are connected to expansion boards, not I/O boards.)
Different I/O boards have different numbers of driver outputs:
FAST I/O 3208 (8 driver outputs)
FAST I/O 1616 (16 driver outputs)
FAST I/O 0804 (4 driver outputs)
FAST Cabinet I/O Board (7 low current driver outputs, 1 high current driver output)
A driver output is used to control a device that is either “on” or “off”, typically high-voltage, such as a solenoid (coil), motor, or magnet. (The FAST Pinball platform can also control servos and stepper motors, but those are controlled via auxiliary boards dedicated to that purpose, not via the driver outputs of a FAST I/O board.)
The FAST Platform allows for many types of configurations for drivers to facilitate all scenarios, including pulsed, delayed firing, flip/flop, latched, solid on with timings, and many others etc.
Because each I/O board has its own processor, you can configure extremely precise configurations (down to the millisecond) to fine-tune how a driver should be fired, from millisecond-level precision of pulse commands, to variable PWM (pulse-width modulation) to fire drivers at less than 100% power, to automatic changing power levels during pulses, to delays and “rest” time—the list goes on…
Once configured, drivers require no “upkeep” by the game software running on the host computer (apart from things like disabling these trigger rules during tilts and when the game is over, or “drunk mode” where you swap the switches that control the flippers and make the coils weaker, etc.). All of these settings are very easily changed on the fly during game play and automatically handled by the processor on the local I/O board the driver is connected to.
Drivers are connected to FAST I/O boards in groups of 8. (Except for the 0804 board which only has 4 driver outputs, so it has a smaller connector for a bank of 4.) These connectors are 12-pin 0.156” (7-pin on the 0804.) These connectors are larger than the switch connectors since drivers need more current.)
Here’s a close-up view of one of the 8-driver connectors from a FAST I/O 1616 board. (Since the 1616 supports 16 drivers, there are two of these connectors to support the total of 16 drivers.)
The 12 pins of each connector are broken down as follows:
8 pins for your 8 different drivers. In the photo above, these are the pins labeled D0-D7.
1 “key” location, with a missing pin to help you (or your customers) make sure they plug the right connector into the right place and that it’s not backwards. (The “triangle” position in the photo above.) On boards with multiple sets of driver connectors, the key pin is in a different location on each.
3 ground return (2 on the 0804), or “common” pins. (The three “GND” connections in the photo.) Why are there 3 ground returns? See our wiring guides for details.
Autofire “quick action” driver configurations¶
Another helpful feature of the FAST platform is the ability to configure so-called “autofire” combinations of switches linked to specific drivers. This is used where you want the least amount of delay possible between when a switch changes state and a coil fires (or turns off). The most common example of this is for flippers, but also for pop bumpers and some types of diverters.
In the FAST Modern Platform with FAST I/O boards, you can configure these types of linked switch/driver rules which are then completely handled locally on each I/O board by that board’s local processor. This means that once that switch is debounced, that coil will fire instantly, without needing data to go around the FAST I/O Loop or to go to the host computer via USB. (In that case, the switch change event is still sent to the host computer like any other switch, but in this case it’s already fired or turned off the coil before the host computer even knows about it!
For safety reasons, every driver in the FAST Modern platform must be configured before it can be used. The idea is that, for example, you don’t want to be able to enable a coil at 100% on if it’s only meant to be pulsed. (We want to do everything we can to help ensure a mis-typed driver number in your game software doesn’t ruin a coil that was never meant to be used the wrong way.)
This is typically something that happens once when the machine boots up. (For example, the Mission Pinball Framework reads the driver settings from the machine configuration files and configures the drivers appropriately.)
The other advantage of separating the “configuration” of a driver from the “operation” of that driver means that the game software only needs to fire drivers, knowing that the specific configuration for that driver will be handled by the processor on the I/O board that driver is connected to.
There are several modes of operation for drivers. These configurations can be changed or updated at any time, even while the machine is running. (See the FAST Serial Protocol documentation on driver configuration for details.)
By the way, all the “enable” or “on” settings mentioned below can be individually configured to be either full 100% on, or a reduced power via PWM. Many of these configurations also support the concept of a “rest time” which is an amount of time that passes before the driver can be enabled again, which is useful to prevent “machine gunning” in slingshots, for example.
Disabled. The driver is disabled and will not respond to commands to fire it, and it will not auto fire.
Pulse. Pulse the driver for a specific number of milliseconds.
Pulse Kick. Send two variable PWM times and then kick the coil on full power at the end. Useful for gently moving a coil and then kicking it the rest of the way. Used in trough ejects, to gently move the coil shaft before applying full power to kick the ball out.
Latched. Enables and holds the driver in the “on” state.
Flip-Flop. Uses two switches, one to enable the driver and one to disable it.
Delayed. Use a switch to trigger a driver which fires after a delay period.
Auto Triggered Diverter.
Auto Triggered Diverter with Exit Switch.
Gate with Switch Trigger.
Dual Direction Motor. Pairs two driver outputs used to control the direction of motors.
The FAST platform maintains a single list of drivers. Every driver has a number, the first being 0, up through the total number of drivers in your system. (e.g. the totals of all drivers from all I/O boards.) The order of the driver numbers in the list is based on the order of the I/O boards in the I/O Loop. The first board (the one connected to the Neuron's "NODE OUT" port) starts with its first driver as number 0, up through the total number of drivers it has, then the second board continues the numbering, etc. The following diagram illustrates this and provides some examples: (click to zoom in)
Since different I/O boards support different numbers of drivers, the exact driver numbers reported to your host computer will depend on the specific combination of I/O boards you have as well as the order of the boards in the I/O Loop. (The actual number of each driver doesn’t matter in a practical sense, it really only matters when you’re writing your game code.) Note that on I/O boards with more than one set of driver connectors, the individual pins are labeled based on the driver numbers for that entire board. (D0-D7 on one, D8-D15 on the next, and so on.)
Note that each I/O board doesn’t actually “know” whether a driver is physically attached to a connector or not. So the driver numbers are based on how many driver outputs each I/O board has, not what’s physically connected.
The FAST Pinball platform supports the concept of a watchdog timer. This is a configurable safety feature which disables the all the drivers on every I/O board if this timer is not constantly refreshed. For example, if you set the watchdog timer for 500ms, then the host computer must continually send a new watchdog command which keeps on resetting the timer back to 500ms. If the timer ever counts down to zero, then all the drivers are disabled.
The main idea behind this is that if the host computer crashes or something else weird happens, the watchdog commands will stop coming so everything shuts down. The processors on every I/O board (and on the main FAST controller) independently watch for this timer, so if they ever lose connection, they will shut down.
There’s an LED on the FAST controller and on every I/O board which flashes quickly if the watchdog timer ever expires and the boards disable themselves.
Drivers for flipper enable or GI? Not anymore!¶
If you’re an old school pinball technician, you know that machines from the ‘80s and ‘90s sometimes used drivers as a “catch all” controlled relay. One example of this was for GI (general illumination.) This wasn’t used in all machines, but some of them would use a driver essentially like a remote controlled “on/off” switch to control a whole string of multiple GI lights. While this is certainly possible with the FAST modern platform, it’s not really done this way anymore. The main reason is that GI lights in modern machines are typically individually addressable RGB LEDs. So while you could just build a single string of LEDs and control them all with a driver output on a FAST I/O board, most people today like the ability to independently control and color all their lights, including GI LEDs.
Pre-Fliptronic Williams machines would also use a driver to enable a relay which would enable the flippers. But again this isn’t needed in a modern machine since you can get much more nuanced control by using standard switch inputs and driver outputs along with the autofire “quick action” driver configurations mentioned previously.
Documentation Feedback? Requests? Confused?
Hi! I'm Brian, and I'm responsible for the documentation at FAST Pinball. If you have any feedback, requests, corrections, ideas, or any other thoughts about this documentation, please let me know! You can email me at email@example.com. Thanks!
N or > jump the next page, P or < for previous, search with S or ?