Home
FIRST Robotics Team 2648 Infinite Loop
Home of Maine's FIRST Offseason Event

Electrical System Overview

This documentation is designed to help teams understand the control system for FRC robots. This documentation will explain the purpose of each piece of the control system and how they interact with each other.

RoboRIO

Picture
The RoboRIO is the brain of your robot. The RoboRIO breaks out all of the connections you will need to operate your robot with and gives you the option of programming your robot in three different languages, Java, C++, and LabView. The RoboRIO specifications are as follows:
  • Xilinx z-7020 CPU with a Dual Core ARM Cortex A-9 processor and FPGA combination
  • 256MB DDR3 RAM
  • 512MB nonvolatile storage(for programs)
  • 2 Host USB ports (For cameras and other external USB hardware)
  • 1 10/100BaseT Ethernet connection(for robot communication)
  • Up to 8 Analog Inputs(4 on Analog In Header/ 4 on Expansion Port)
  • 2 Analog Outputs(on the Expansion Port)
  • Up to 16 Digital IO ports(10 on DIO Header/ 6 on Expansion Port)
  • 10 Pulse Width Modulation(PWM) Ports(for motor control)
  • 4 Relay Ports(for directional motor control)
  • Other communication types available including RS232, I2C, SPI, and CAN


Power Distribution Board(PDB)/Power Distribution Panel(PDP)
​

Picture
If the RoboRIO is the brain of your robot, then the PDB/PDP is the heart. All of the power for your robot must come from this device in one way or another. This version of the PDB/PDP has several upgrades from its predecessor, the most prevalent new feature being the ability to check the amount of power being consumed by each channel in software, making it much easier to see how much power each of your robot systems is using at any given time. The PDB/PDP has the following specifications:
  • 12v DC Input designed for FRC-legal batteries
  • 8 40 Amp Protected Channels(For high draw situations, like CIMs
  • 8 20/30 Amp Protected Channels(For smaller motors, like MiniCIMs and window motors)
  • 1 20 Amp Protected Channel(shared between the Pneumatics Control Module(PCM) and the Voltage Regulator Module(VRM)
  • 1 10 Amp Protected Channel(for the RoboRIO)
  • 1 CAN Bus (For feedback to the RoboRIO)


Voltage Regulator Module(VRM)

Picture
The VRM is an addition to the PDB/PDP. It takes a 12 volt input from the PDB/PDP and makes it more useful for certain things. One use for the VRM is providing power to your robot radio, but other uses include power for sensors, LEDs, small microcontrollers, amongst other things. The VRM provides the following connections:
  • 1 12v DC Input(From the PDB/PDP dedicated 20 Amp connection)
  • 2 5v outputs; 500mA limit
  • 2 5V outputs; 2 Amp limit
  • 2 12v outputs; 500mA limit
  • 2 12v outputs; 2 Amp limit



Pneumatic Control Module(PCM)

Picture
The PCM allows the RoboRIO to control pneumatic devices. It provides connections for a compressor and a pressure switch so that air pressure can be monitored and maintained automatically. It also provides 8 connections for solenoids that can control pneumatic cylinders. The full list of specifications are as follows:
  • 1 CAN Bus connection(for RoboRIO control)
  • 1 12v Input(From the PDB/PDP dedicated 20 Amp connection)
  • 1 Pressure Switch Input
  • 8 Solenoid Outputs(12v/24v operation selectable with jumper)
  • 1 Compressor DC


Robot Wireless Radio

Picture
The robot wireless radio is how the robot communicates with the Driver's Station and is plugged directly into the RoboRIO through its Ethernet connection. This part on the robot changes often, as FIRST strives to make sure that matches are fair, it must find new hardware that can handle high amounts of network traffic and protect itself against unwanted and/or malicious connections. For now, FIRST has decided on using the Open-Mesh OM5P-AN Access Point with OpenWRT firmware(as pictured on the left). The OM5P-AN has the following specifications:
  • Max combined speed of 450Mbps(150 + 300)
  • 2.4GHz 802.11b/g/n + 5GHz 802.11a/n
  • Approximate range indoors : 50-100ft(Through 2-3 walls)
  • Approximate range outdoors : 400ft
  • 802.3af Compliant for Power over Ethernet at 24v


Motor Controllers

Picture
Motors controllers do literally what the name implies, they control the motors on your robot. Each motor must have its own motor controller powered by its own connection on the PDB/PDP. Each motor controller must also have a connection from the RoboRIO, more often than not a PWM connection, so that each controller can be controlled in software. The two controllers depicted on the left are the Victor SP(upper left) and the Talon SRX(lower right). These are the two most commonly used motor controllers and while they look very similar in form they do have some differences when it comes to there capabilities. The following specifications apply to the Victor SP:
  • Minimum/Maximum Input Voltage : 6-16v
  • Continuous Current : 60 Amp
  • Surge Current : 100 Amp (Max 2 Seconds)

The following specifications apply to the Talon SRX:
  • Minimum/Maximum Input Voltage : 6-28v
  • Continuous Current : 60 Amp
  • Surge Current : 100 Amp (Max 2 Seconds)
  • On board sensor inputs and Proportional - Integral - Derivative(PID) control make complex motor control accessible to all teams
  • Supports PWM, CAN, SPI, and USART for motor control


Sensors
​

Picture
Sensors are one way of providing your robot with feedback about its environment. There are a slew of different sensors available to you all with unique purposes and features designed to make your robot perform better on the field. The type of sensor will change how it interfaces with your robot. For the most part, sensors will either interface with the Digital IO on your robot, or the Analog In on your robot. Some examples of Digital sensors are:
  • Switches
  • Encoders (Top left image)
  • Ultrasonic Sensors
  • Photoswitches
Some examples of Analog sensors are:
  • Potentiometers (Top right image)
  • Proximity (Lower left image)
  • Analog pressure switch (Lower right image)
  • Gyroscopes
  • Accelerometers (There is a 3 Axis Accelerometer built into the RoboRIO)


Driver's Station

Picture
The Driver's Station is where most of the control of your robot happens by plugging in various types of joysticks (or Xbox controllers if you prefer). Rookie teams are given a version of the 2GoPC (some models are depicted on the left) but you do not have to use a 2GoPC for your Driver's station if you don't want to. Any Windows machine can be used as a Driver's Station as long as the FRC Software Update Suite is installed on the device. The Driver's Station should be able to quickly deploy changes to robot code and connect to the Field Management System through a standard Ethernet connection. 


Bringing It All Together

I know this may have been a lot to take in all at once, but it all comes together in the end. The following diagram shows the basic setup of all the parts you've seen before in some way shape or form.
Picture
This is a very basic setup, designed to drive two motors. Some elements (like the PCM) are unused in this example but it's fairly straightforward.
The Driver's Station is connected to the robot by WiFi and then the Open-Mesh Access Point connects directly to the RoboRIO through Ethernet.
The PDB/PDP provides power to each of the devices, directly or indirectly through the VRM. There is a 20 Amp Protected Channel for the PCM and VRM, a 10 Amp Protected Channel for the RoboRIO. The VRM provides power to the robot's Open-Mesh Access Point, and each of the motor controllers have there own 40 Amp connection on the PDB/PDP with an associated Snap Action Breaker.
The PDB/PDP and PCM communicate with the RoboRIO via CAN (Controller Area Network) to provide feedback and control for each of the devices. The motor controllers communicate with the RoboRIO via PWM. 

Code To Make The Example Work

package com.zephyr.robots;

import edu.wpi.first.wpilibj.IterativeRobot;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Talon;


//The basic implementation of robot control for two motors
public class Robot extends IterativeRobot {

//Create the two motorcontrollers
private Talon t1;
private Talon t2;

//Create the joystick
private Joystick j1;

public void robotInit() {

t1 = new Talon(0);//Create the first motor controller and specify that it's on PWM 0
t2 = new Talon(1);//Create the second motor controller and specify that it's on PWM 1

j1 = new Joystick(0);//Create the joystick and specify that it's connected to USB 0

}

//Unused
public void autonomousPeriodic() {

}

//Called every 20ms to make your robot do things during the teleoperated period
public void teleopPeriodic() {

t1.set(j1.getX());//Make the first motor move based on the Joystick's X axis
t2.set(j1.getY());//Make the second motor move based on the Joystick's Y axis
}

//Unused
public void testPeriodic() {

}

}

And that's it! This is a very basic form of a control system example, and from this you can expand to create a fully fledged robot! If you have any questions, comments, or something you'd like to see added to this page, please use the Contact Us page and someone will get back to you as soon as possible!
  • Offseason Event
  • About Our Team
    • History
    • Team Members
    • Mentors
    • Alumni
    • Fundraising
    • Accomplishments
    • Engineering Inspiration
  • Challenge
    • Stronghold 2016
    • Recycle Rush 2015
    • Aerial Assist 2014
    • Ultimate Ascent 2013
    • Rebound Rumble 2012
    • Logomotion 2011
    • Breakaway 2010
    • Lunacy 2009
    • Overdrive 2008
  • Our Robots
  • Sponsors
    • Sponsor Us!
  • Resources
    • Electrical System Overview
    • FRC Vocabulary
  • US FIRST
  • Contact Us
  • Social Media
  • Offseason Event
  • About Our Team
    • History
    • Team Members
    • Mentors
    • Alumni
    • Fundraising
    • Accomplishments
    • Engineering Inspiration
  • Challenge
    • Stronghold 2016
    • Recycle Rush 2015
    • Aerial Assist 2014
    • Ultimate Ascent 2013
    • Rebound Rumble 2012
    • Logomotion 2011
    • Breakaway 2010
    • Lunacy 2009
    • Overdrive 2008
  • Our Robots
  • Sponsors
    • Sponsor Us!
  • Resources
    • Electrical System Overview
    • FRC Vocabulary
  • US FIRST
  • Contact Us
  • Social Media

For the Inspiration and Recognition of Science and Technology

Picture
To create a world where science and technology are celebrated and where young people dream of becoming science and technology heroes.

firstinspires.org

© 2023 Infinite Loop Robotics. FRC Team 2648 All Rights Reserved
Copyrights are the property of their respective owners.
About our website | Mail | Contact Us | Visit our Facebook Page


Powered by Create your own unique website with customizable templates.