Skip to main content

Core Technologies

Every FRC robot runs on three fundamental technologies: DC power to power things, CAN bus to control them, and Ethernet to talk to the field. This page gives you a plain-English foundation for each one.


DC Power

Your robot runs entirely on direct current (DC) — electricity that flows in one direction, from the battery, through the robot, and back.

The key quantities to understand:

TermWhat It MeansUnit
VoltageThe "pressure" pushing electricity through a wireVolts (V)
CurrentHow much electricity is actually flowingAmps (A)
PowerHow much energy something is usingWatts (W = V × A)

FRC robots run on a single 12 V battery. Everything on the robot — motors, computers, sensors — is powered from that one source. The main breaker and PDP/PDH distribute power to each device through fuses or breakers that protect the wiring if something draws too much current.

Rule of thumb

More amps = more heat = blown breaker. If a motor is stalling or a wire is running hot, current draw is almost always the culprit.


CAN Bus

CAN (Controller Area Network) is the two-wire communication network that connects your robot controller to motor controllers, pneumatics hubs, and power distribution hardware.

Instead of running a separate wire from the robot controller to every device, CAN lets all devices share one cable chain — daisy-chained from device to device around the robot. Each device has a unique CAN ID so the robot controller knows who it's talking to.

Robot controller → Motor Controller 1 → Motor Controller 2 → PDH → ...

The two wires are:

  • CAN H (yellow) — the high signal line
  • CAN L (green) — the low signal line

CAN gives you more than just "spin this motor" commands. You get feedback like encoder position, motor temperature, and current draw — all over the same two wires.

CAN FD

Newer devices support CAN FD (Flexible Data-rate), which is the same two wires but can send data faster and in larger chunks. It's backwards-compatible — CAN FD devices can still talk on a standard CAN bus, just without the speed benefits.

caution

Every device on the CAN bus needs a unique ID. Duplicate IDs cause devices to conflict and behave unpredictably. Assign and label IDs before the robot goes to competition.

Termination resistor

A CAN bus requires a 120 Ω resistor at each end of the chain to prevent signal reflections that corrupt data. On FRC robots, the robot controller provides one terminator internally. You need to add a second 120 Ω resistor at the far end of the chain — across CAN H and CAN L — to complete the circuit. Missing termination is a common cause of intermittent CAN faults.


PWM

PWM (Pulse Width Modulation) is the simplest way to send a control signal from the robot controller to a motor controller or servo. It uses a single signal wire that pulses on and off very rapidly — the width of each pulse tells the device what to do.

Pulse WidthCommand
~1 msFull reverse
~1.5 msStop / neutral
~2 msFull forward

PWM is easy to wire (one signal wire + ground) and works out of the box with no configuration, but it's one-way — the robot controller can send commands but gets nothing back. No encoder readings, no current data, no temperature. For servos, PWM is standard. For motor controllers, prefer CAN when possible.


Digital I/O

Digital I/O (DIO) ports read signals that are either fully on or fully off — there's no middle ground.

Common uses in FRC:

DeviceHow It Works
Limit switchCloses a circuit when pressed; robot controller reads HIGH or LOW
Beam break sensorReads HIGH normally, LOW when something interrupts the beam
Quadrature encoderSends two pulse streams (A and B channels) to report shaft position and direction

For encoders, two DIO ports are used together — one per channel. The robot controller counts the pulses to track how far a mechanism has traveled.


Analog I/O

Analog input ports read a continuously varying voltage and convert it to a number the code can use. This lets the robot controller read sensors that output a smooth range of values rather than just on/off.

Common uses in FRC:

DeviceWhat It Measures
PotentiometerRotational position of an arm or turret
Pressure sensorPneumatic system pressure
Sharp IR distance sensorApproximate distance to an object

USB

USB is used for three main things on an FRC robot: connecting cameras to the robot controller, connecting USB flash drives for logging, and connecting joysticks/controllers to the Driver Station laptop.

ConnectionWhere
Joysticks / gamepadsPlugged into the Driver Station laptop, not the robot
USB camerasPlugged directly into the robot controller for streaming video
USB flash drivePlugged into the robot controller to log match data for post-match analysis

Ethernet

Ethernet carries network traffic — primarily between your robot controller and the radio (the Wi-Fi access point on the robot), and between the robot controller and any cameras or coprocessors like a Raspberry Pi.

In FRC, Ethernet is used for:

  • Driver Station → Robot: Your laptop connects to the robot's radio over Wi-Fi; that radio connects to the robot controller over Ethernet
  • Cameras: USB works for simple cameras, but Ethernet cameras (like the Limelight or a PhotonVision coprocessor) use the robot's onboard network switch
  • Coprocessors: A Raspberry Pi or similar running vision processing plugs in via Ethernet and communicates with the robot controller over the network

The robot uses a network switch (built into the radio or a separate device) so multiple Ethernet devices can share the same network.

tip

At competition, the field control system communicates with your robot over the radio's Ethernet connection.