51. SainSmart Relay Board Setup

The SainSmart USB relay board is an inexpensive output controller option, and it's fairly easy to set up electrically. It's somewhat more trouble to set up the software for these devices, though.
Warning: DOF currently only supports the 8-channel version of the Sainsmart USB board. Sainsmart makes the USB boards with different numbers of relays, from 4 to 16 channels, but DOF is only programmed to recognize the 8-channel version. Other types won't work with DOF.
The big advantage of the SainSmart boards over the LedWiz and PacLed controllers is that SainSmart boards can handle a lot of power, because they use relays instead of transistors for switching. The LedWiz and PacLed have fairly low power limits that aren't adequate for some of the higher-power feedback devices, whereas the SainSmart relays can handle just about anything commonly used in a pin cab. A lot of pin cab builders are also just a lot more comfortable working with relays because they understand how they operate.
The SainSmart USB boards come in 4-relay and 8-relay versions. If you need more outputs than that, you can simply use more than one board.
The SainSmart boards are most attractive if you only plan on a relatively small set of feedback devices, and all of them are mechanical. If that describes your needs, these boards are a good choice. However, the SainSmart boards aren't the best choice if you want a decked-out cab with all of the popular toys. They're not great if you want a lot of outputs overall, because they only have a few outputs per board, and the boards are physically pretty big, so you need a lot of room if you need more than one or two. The solid-state controllers pack more ports into less space. Also, relay boards aren't ideal for controlling lights and LEDs, because they can't vary brightness. They're purely on/off switches. If you're planning to use flasher LEDs or other lighting devices, you'll really want a solid-state controller (such as LedWiz, PacLed, or Pinscape), since those provide brightness control in addition to on/off switching.
Warning: there seem to be some no-brand relay boards out there that look very much like Sainsmart boards, with the same blue relays laid out the same way, but which aren't compatible at the software level. I'd avoid anything like this that isn't sold with clear Sainsmart branding, because the no-brand units probably won't work with DOF and the other pinball software.

USB vs non-USB boards

When you go shopping for these boards, be aware that SainSmart sells two completely different kinds of relay boards: USB and non-USB.
  • The USB type has a USB port for connecting to the PC. This is the type we're talking about in this chapter, and it's the type you should buy if you don't want to have to combine it with a separate device like an LedWiz.
  • The non-USB type doesn't have any ports for connecting to a PC. Instead, it's designed to be used with a microcontroller device like an Arduino, so it has individual control terminals for the relays that the Arduino connects to. Don't buy this type if you're looking for something standalone. However, this type can be used as a booster for the LedWiz (more about that in LedWiz Setup).

Connecting to the PC

There are two steps required to connect the board to the PC.
First, connect the board's power terminals to your PC's power supply, as shown in the diagram below. Connect the GND terminal to the PC power supply ground (the black wire in any of the disk connector cables coming out of the PSU), and connect the VCC terminal to +5V (the red wire in any disk connector).
For more on connecting power wires to the PC power supply, including how to build your own connectors, see Power Supplies for Feedback.
Second, connect the relay board to the PC via USB. Plug a USB cable into the connector on the board, and plug the other end into an available USB port on your PC/motherboard.
These boards require software drivers to be installed on the PC. Follow the instructions that come with the board.

Basic wiring plan

Each relay on the board can control one feedback device (for example, one relay can control your shaker motor, another relay can control your left flipper device, etc). You can see on the board that each relay has a group of three screw terminals next to it:
A relay is simply a mechanical switch, a lot like a regular pushbutton switch, except that it's controlled electronically by a little solenoid coil inside the relay that moves the switch lever. The relay turns the attached device on and off by connecting and disconnecting the power to the device through the internal switch. It's just like turning on the lights in your house with a wall switch, except that the solenoid inside the relay is what moves the switch lever up and down.
The relay's switch section has three terminals, not just two, because the relay is a "double-throw" switch. That means that the switch can connect the center terminal (the common connection) to either of the two outside terminals. One terminal is the "normally closed", often abbreviated to "NC", meaning that it's connected to the center terminal any time the relay is OFF ("closed" means "connected" when we're talking about a switch, and "normally" means "when the relay is OFF"). The other terminal is "normally open", or "NO", meaning that it's not connected to anything at all when the relay is OFF ("open" means "not connected"), but it is connected to the center terminal when the relay is switched ON.
Your wiring for the device should be connected to the center (or common) and normally open terminals. Check the documentation that came with your board to identify these. You can also usually tell by markings on the board, but these vary. You might see the legends NC, C, and NO printed on the board next to the terminals. These stand for Normally Closed, Common, and Normally Open. You might instead see a little line diagram like this:
If you can't find any markings, look for the set of three terminals nearest the relay. The Common is almost always the center terminal, and the Normally Open is usually the top terminal when the relay is oriented like this:
Once you identify the Common and Normally Open terminals for the relay, connect your feedback device like this:
Follow this same plan for any type of feedback device. If the device you're connecting has specifically marked "+" and "-" terminals, be sure to connect the "-" terminal on the device to the "-" connection on the power supply.
Some types of devices have special requirements beyond the basic diagram shown above. For example, anything with a coil needs a diode (see Coil Diodes), and many types of LEDs require current-limiting resistors (see Flashers and Strobes). We go into much more detail about many of the popular pin cab devices in Feedback Devices.

Should I wire (+) or (-) to the relay?

In the diagram above, we showed the wiring with the (+) connection from the power supply going to the relay switch, and the (-) connection going directly to the feedback device.
If you look at the "general purpose" wiring diagram for other controllers in Feedback Device Wiring, though, you'll see the opposite setup, with the (-) connection going to the controller port, and the (+) power supply connection going directly to the feedback device. We show the same polarity in our diagrams for the individual device types as well.
So why did we show this as different for Sainsmart? It turns out that you can do it either way with Sainsmart boards. For the solid-state boards, you must use the polarity shown in Feedback Device Wiring, because the solid-state boards use transistors, which only allow current to flow in one direction. The Sainsmart uses mechanical relay switches, though, which don't care about the direction of the current. That makes them more flexible, letting you hook up the power wiring in either direction.
I know that I'm creating a little confusion here by showing it both ways, but there's actually a reason for it. Maybe not a good enough reason to justify the confusion, but a reason nonetheless. Specifically, given the choice of polarities that we get with the Sainsmart, I'd rather put the relay switch on the positive side of the circuit, because it's safer. When you put the switch on the positive side, as shown in the diagram above, the power supply wiring to the device itself is "dead" when the device is off - there's no voltage going to it. That eliminates any shock risk if you should accidentally touch any of the wires to the device. When you wire things the other way, as we must do for the solid-state controllers, the positive wire is always "live", even when the device is off, so it always runs the risk of shock. For 12V or even 24V devices, the voltage in the live wire isn't that dangerous, but it really is a safety hazard for a 50V device like a knocker coil.
So my apologies for the conflicting diagrams! I hope that this explanation clears it up, but if you still find it confusing, here's some good news: you can follow either diagram with your Sainsmart wiring (the special Sainsmart diagram above or the "general purpose" diagrams shown everywhere else), and it'll work equally well either way.

Use protective diodes

Most mechanical devices require protective diodes. These are required for anything with a coil: solenoids, contactors, replay knockers, motors.
Here's the basic wiring plan:
See Coil Diodes for details on what type of diodes to use and more details about how to install them.
Diodes are critical! Failing to include one where needed can result in damage to your computer motherboard, power supplies, or other equipment in your pin cab.
The Sainsmart relays are themselves coils, so they need diodes, too. However, I think that all of the Sainsmart boards already have diodes pre-installed, so it shouldn't be necessary to add your own there.

USB disconnects and other electrical interference

A lot of pin cab builders using Sainsmarts have problems with electrical interference.
The most obvious manifestation is USB problems, such as the Sainsmart or some other USB device suddenly disconnecting. Devices might stay disconnected until you manually unplug them and plug them back in, or they might re-connect by themselves after a couple of seconds.
Other common electrical interference effects include random keyboard input, random feedback device firing (flashers flashing randomly or solenoids firing randomly), or the whole PC suddenly rebooting.
The first thing you should check is diodes, as mentioned above. See Coil Diodes. Every feedback device that has a coil (solenoids, contactors, motors) must have a diode installed. In addition, double-check that the Sainsmart relays themselves have coils installed. These should be pre-installed on the Sainsmart board itself, but if they aren't, you should add one diode for each relay coil, just like any other coil.
The second thing to try (after ensuring all necessary diodes are installed) is to add a small capacitor on each Sainsmart relay switch. Mechanical switches create their own kind of electrical noise (called "bounce") during the brief instant when the contacts come together or separate. This can be significant when a relay switch controls a high-current device like a coil, motor, or large LED. You can mitigate this by adding a small capacitor across the switch contacts.
Try a capacitor around 0.1µF (which is the same as 100nF). Use a ceramic disc type capacitor. These aren't polarized, so it doesn't matter which direction you install it.
Unlike diodes, capacitors aren't required for any particular type of device. You don't need to worry about them unless you actually have electrical interference problems. In that case you can try adding a capacitor as shown to whichever devices seem to be associated with the problem. The interference problem from a switch doesn't depend on what kind of feedback device is being controlled, so a capacitor could be needed for an LED just as well as a motor or solenoid.
If a 100nF (0.1µF) capacitor doesn't help, or seems to reduce the problem but doesn't fix it entirely, you might experiment with other nearby capacitor sizes, from 200nF to 1µF.
If the device in question is a motor, and capacitors don't help, there's one more thing you can try: inductors, also known as chokes. Capacitors act as voltage filters, leveling out little spikes in voltage changes, whereas inductors act as electric current filters, smoothing out sudden changes in current levels. Motors can sometimes benefit from the latter. See "Electrical interference" in Shaker motors for parts selection and a wiring diagram.
Quick summary:
  • Diode:
    • Required for anything with a coil (solenoid, contactor, relay, motor)
    • Not required for non-coil devices (LEDs, lamps)
  • Capacitor:
    • Not required for any device
    • But might be helpful for any coil and motor devices that cause interference
    • Try ceramic disc capacitors with values 100nF to 1µF
  • Inductors:
    • Not required for any device
    • But might be helpful for motors that cause interference
    • Try inductors around 4.7µH
    • Use one or two per motor, wired in series with the power wiring to the motor

Fuses

Some cab builders include a fuse in each SainSmart output circuit. Fuses can help protect an output controller against wiring faults or device malfunctions. I'm usually pretty conservative on these things, so this might be surprising, but I don't think fuses are all that useful with SainSmart outputs. The reason is that these outputs use relays, so they're pretty tough to start with. Fuses are certainly appropriate for solid-state devices like an LedWiz, but I don't think they add much useful protection for a relay board. If want to add them anyway, see Fuses.

DOF Setup

If you're using my DOF R3++ version, it includes automatic SainSmart board detection and configuration. You shouldn't have to do any of the additional config file setup described below. Just run DOF and it should automatically find your SainSmart board. You can skip straight to DOF Config Tool setup below.
With older DOF versions, SainSmart boards require some extra setup to use with DOF.
If you haven't already set up DOF on your cab, follow the instruction in DOF Setup.
After DOF is set up, you have to create and edit a file called Cabinet.xml in the DirectOutput > config folder. See Extra controller setup in DOF Setup for the basics on getting this file started.
If you're using the template Cabinet.xml file provided with my DOF setup instructions, you should find a section with a pair of lines like this:
<OutputControllers> </OutputControllers>
If you got your Cabinet.xml file from another source, these lines might be missing or might have other contents in between. If they're missing, add them directly under the line(s) that looks like this:
<Name>My Pin Cab</Name>
There might be different text between the bracketed <Name> markers, but that's okay. What's important is that you add the <OutputControllers> section just below the <Name> section.
If there was already something in the <OutputControllers> section, that's okay, too. You just need to add the new text at the end of the existing text, just before the line that at the end that reads </OutputControllers>.
Now copy and paste the following into the file, placing it between the two <OutputController> markers:
<FT245RBitbangController> <Name>Sainsmart 1</Name> <SerialNumber>A1234XYZ</SerialNumber> </FT245RBitbangController>
You have to make one more change to that text: you have to edit the Serial Number and replace it with the correct value for your SainSmart board. You might be able to find your serial number printed on your board or the packaging. If not, the board should have come with some software (or a link to download software), which should include a program called FTDIChipList.exe. Run that program. This will list the serial numbers for all of the similar devices in your system.
If the program lists more than serial number, you must have other devices that use the same USB chip set. The SainSmart uses a common chip that's also used in a variety of other devices, so it's quite possible the chip finder program will discover more than one such device in your system. If this happens, and you're not sure which of the devices is the SainSmart board, try the following:
  • Exit the chip finder software
  • Unplug the SainSmart board
  • Run the chip finder software
  • Write down the list of chips it reports
  • Exit the software
  • Plug in your SainSmart board and give it a few seconds to connect
  • Run the chip finder software again. Compare the new list to the list you wrote down last time. Since the SainSmart board was unplugged last time, it shouldn't have been included in the previous list, so you should be able to identify the SainSmart board as the new entry that wasn't in the old list.
Once you determine the correct serial number, go back and edit the Cabinet.xml file to replace the fake placeholder text I provided in the template ("A1234XYZ") with the true serial number.
There's one more step. Look for a pair of lines like this:
<Toys> </Toys>
As with the previous section, you'll have to add the lines if they're not already there. Add them just after the closing </OutputControllers> line. And as before, if this section is already there and already contains other text, simply add the new text at the end of the existing text, just before the final </Toys> line.
Here's the text we're going to add to the <Toys> section:
<LedWizEquivalent> <Name>SainsmartLWEQ 1</Name> <LedWizNumber>40</LedWizNumber> <Outputs> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.01</OutputName> <LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.02</OutputName> <LedWizEquivalentOutputNumber>2</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.03</OutputName> <LedWizEquivalentOutputNumber>3</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.04</OutputName> <LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.05</OutputName> <LedWizEquivalentOutputNumber>5</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.06</OutputName> <LedWizEquivalentOutputNumber>6</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.07</OutputName> <LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> <LedWizEquivalentOutput> <OutputName>Sainsmart 1.08</OutputName> <LedWizEquivalentOutputNumber>8</LedWizEquivalentOutputNumber> </LedWizEquivalentOutput> </Outputs> </LedWizEquivalent>
You can use that exact text, with no changes, as long as you have one SainSmart unit only, and it's the 8-relay type.
If you have two SainSmart units, you first must repeat the <OutputControllers> entry we added above, again substituting the actual serial number for the second device. And second, you must repeat the <Toys> entry we added above, but this time, change the <LedWizNumber> section to 41 (make it 42 for a third unit, 43 for a fourth unit, etc), and change all of the Sainsmart 1.0x entries to Sainsmart 2.0x for the second unit (or 3.0x for the third unit, 4.0x for the fourth unit, etc).
If your SainSmart unit has a different number of relays (they make them with 1, 2, and 4 relays as well), go through the >Toys> text we added and delete all of the sections beyond the number of relays you have. For example, if you have a 4-relay board, you should delete the "1.05" through "1.08" sections.

DOF Config Tool setup

Almost done! The one remaining step is to enter your new SainSmart board into your DOF Config Tool settings. This step is pretty easy compared to the previous one, fortunately.
  • Point your browser to the DOF config tool
  • Click the My Account tab
  • Find "Number of SainSmart Devices" in the list, and set it to "1" (or the number of these boards you've installed, if more than one)
  • Click Save Settings
  • Click the Port Assignments tab
  • In the "Device" drop-down, select "SainSmart 1"
  • Go through the port list (Port 1 through Port 8), and select the type of device that you've physically wired to each output port
  • Click Save Config
  • If you have more than one SainSmart board, repeat the process for each one by selecting the devices one at a time in the "Device" drop-down at the top of the page
  • When done, click Save Config, then click Generate Config to download your updated DOF config files
  • Unzip the downloaded files into your DOF install folder
All of this is described in the DOF Setup section as well.