A motor test stand is the single most useful thing an electrical sub-team can build. It lets you prove a motor, a controller, and your code without the whole robot. Here is the full bill of materials and build order.
BOM: MK ES17-12 12V SLA battery (12V, 18Ah; sold by REV as REV-19-2487 and by AndyMark), an Anderson SB-50 connector pair, a Cooper Bussmann 120A main breaker (CB185-120), a power distribution device (REV PDH REV-11-1850 or CTRE PDP), a roboRIO, a REV SPARK MAX, one NEO motor (a Kraken X60 is powered by its own integrated Talon FX controller, so it isn't driven by a SPARK MAX — swap in a Talon FX instead if you want to test a Kraken), a 40A ATO/AT2-style auto-resetting breaker (the PDH takes ATO blade-style breakers, e.g. the REV ATO breaker or AndyMark am-4947; the classic Snap-Action MX5-A fits the legacy CTRE PDP instead), plus 6 AWG, 12 AWG, and 18 AWG wire.
Build order (mirrors WPILib's wiring guide):
- Crimp a ring terminal to the red lead of the SB-50 connector, then run 6 AWG from the battery connector to the main 120A breaker. The main breaker is the only thing that touches the battery directly.
- Run 6 AWG from the breaker's load terminal to the PD's positive input, and 6 AWG from the SB-50 negative straight to the PD negative. Wire gauge here is mandated by rule R609 (6 AWG / 16 mm minimum on the battery-to-breaker-to-PD path).
- Power the roboRIO from a dedicated PD output through 18 AWG to the roboRIO's power input. On the PDH this is a fused low-current channel; on the PDP use the dedicated roboRIO connector.
- Insert a 40A ATO/AT2-style breaker into a high-current PDH channel and run 12 AWG to the SPARK MAX
+/-input terminals. R622 requires 12 AWG for any 31-40A circuit. - Wire the motor output: for a NEO, land all three motor-phase leads on the SPARK MAX's three output screw terminals, and plug the NEO's 6-pin hall-sensor/encoder cable into the SPARK MAX's
ENCODERport — REV's docs note the motor will not spin without that encoder connection. (A plain two-wireM+/M-hookup, with the third terminal left unused, is only for brushed motors like a CIM.) - CAN: yellow=CANH, green=CANL, daisy-chained roboRIO -> SPARK MAX -> PD.
Smoke test: Before connecting the battery, verify polarity with a multimeter at the PD input pads. Then plug in. The roboRIO Power LED should go solid green.
Minimal code to spin it (WPILib + REVLib 2025):
import com.revrobotics.spark.SparkMax;
import com.revrobotics.spark.SparkLowLevel.MotorType;
import com.revrobotics.spark.config.SparkMaxConfig;
import com.revrobotics.spark.config.SparkBaseConfig;
import com.revrobotics.spark.SparkBase.ResetMode;
import com.revrobotics.spark.SparkBase.PersistMode;
public class Robot extends TimedRobot {
private final SparkMax motor = new SparkMax(5, MotorType.kBrushless);
private final XboxController stick = new XboxController(0);
public Robot() {
SparkMaxConfig cfg = new SparkMaxConfig();
cfg.smartCurrentLimit(40)
.idleMode(SparkBaseConfig.IdleMode.kBrake);
motor.configure(cfg, ResetMode.kResetSafeParameters,
PersistMode.kPersistParameters);
}
@Override public void teleopPeriodic() {
motor.set(stick.getLeftY());
}
}
Note that IdleMode lives on SparkBaseConfig in REVLib 2025, and the CAN ID 5 in the constructor must match the ID you set in the REV Hardware Client. Keep this stand intact all season as your go-to debug rig.
Key takeaways
- Battery -> SB-50 -> 120A main breaker -> PD is the only path that uses 6 AWG (R609); a 31-40A motor circuit downstream uses 12 AWG (R622).
- Always verify polarity with a multimeter before connecting the battery.
- The SPARK MAX CAN ID in code must match the ID assigned in the REV Hardware Client, and IdleMode is on SparkBaseConfig in REVLib 2025.
Keep going
Take the quiz · +10 XP with an accountSources & corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed — publicly, in the corrections log.
Sources and further reading
- WPILib: Introduction to FRC Robot Wiringdocs.wpilib.org
- REVLib: Configuring a SPARKdocs.revrobotics.com
- REV Power Distribution Hub (REV-11-1850)revrobotics.com
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 20 min read
REV Robotics for FRC: NEO Motors, Spark MAX/Flex, PDH & MAXSwerve
A practical guide to the REV Robotics FRC ecosystem: NEO, NEO Vortex and NEO 550 motors, Spark MAX and Spark Flex controllers, the PDH, and MAXSwerve.
Read - 19 min read
FRC PDH: The Power Distribution Hub Explained (Channels, Fuses & Wiring)
A complete guide to the REV PDH (Power Distribution Hub): all 24 channels, breaker and fuse sizing, clean wiring, the switchable channel, CAN telemetry, and PDH vs PDP.
Read - 5 min read
How to Wire an FRC Robot: A Beginner Electrical Guide
A beginner-friendly, accurate guide to wiring an FRC robot: battery, 120A breaker, PDH, roboRIO, radio, CAN bus, and the wire-gauge rules that pass inspection.
Read
Lesson quiz
RequiredAll 3 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 3 answered
01.In a single-motor test stand, what is the role of the 120A main breaker wired between the battery and the power distribution board?
02.What wire gauge does FRC rule R609 mandate for the main power path from the battery through the main breaker to the power distribution board?
03.On the path from battery to a spinning motor, where do the motor's two power leads connect?
Answer every question to submit.
All 35 lessons in Electrical & Wiring
- Not started:Mini-Project 1: A Single-Motor Test Stand from Battery to Spin
- Not started:Mini-Project 2: Current-Limited Drivetrain (CTRE and REV)
- Not started:Mini-Project 3: A Live Power-Monitoring Dashboard
- Not started:Mini-Project 4: A Switchable Channel for Lights and Vision
- Not started:Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client