Skip to content
Merged

AWG #44

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
de21db9
AWG section in intro
Mukiewukie Aug 3, 2026
be1c3e2
Merge origin/main into new-feature-branch
Mukiewukie Aug 3, 2026
1ac2082
added examples
Mukiewukie Aug 3, 2026
a83bbbc
added safety reasonings
Mukiewukie Aug 3, 2026
3c7444e
strain relief explanation
Mukiewukie Aug 3, 2026
8975525
parallel series explanation
Mukiewukie Aug 3, 2026
dbdddf6
I2C
Mukiewukie Aug 3, 2026
6c35042
soldering update ty banks
Mukiewukie Aug 3, 2026
6b0e35a
tim suggestions
Mukiewukie Aug 3, 2026
f4b8e5a
ohms law
Mukiewukie Aug 3, 2026
6359221
short circuit
Mukiewukie Aug 3, 2026
4ad6c8e
add 18 gauge wire for smaller components
Mukiewukie Aug 5, 2026
3878a08
reference systemcore smart io
Mukiewukie Aug 5, 2026
29fd695
safety and ohms law
Mukiewukie Aug 10, 2026
0da98f2
accuracy on short circuits
Mukiewukie Aug 10, 2026
3a3ea77
exposed wire
Mukiewukie Aug 10, 2026
11f9351
eriks suggestions
Mukiewukie Aug 10, 2026
6097f24
Update docs/FRC-Control-System.md
Mukiewukie Aug 10, 2026
ab5e5a9
proper wording
Mukiewukie Aug 10, 2026
cc732dd
refine link
Mukiewukie Aug 10, 2026
70d242c
Update docs/FRC-Control-System.md
Mukiewukie Aug 10, 2026
466b6a6
Communication wording
Mukiewukie Aug 10, 2026
b627ef4
enunciating i2c
Mukiewukie Aug 10, 2026
cc7547f
wording
Mukiewukie Aug 10, 2026
b0e84b9
fix merge conflicts
Mukiewukie Aug 10, 2026
3917e2f
Update docs/FRC-Control-System.md
Mukiewukie Aug 10, 2026
411be84
Update docs/FRC-Control-System.md
Mukiewukie Aug 10, 2026
e994fea
CAN specs
Mukiewukie Aug 10, 2026
988ccfb
shorten rsl wording
Mukiewukie Aug 10, 2026
3b8a7ee
Update docs/intro.md
Mukiewukie Aug 10, 2026
3623a2e
specify wire touches
Mukiewukie Aug 10, 2026
4223a3f
exposed wire wording
Mukiewukie Aug 10, 2026
aa924d0
strain relief touch up
Mukiewukie Aug 10, 2026
e83b945
smart i/o wording redundancy fixes
Mukiewukie Aug 10, 2026
943ea95
Merge branch 'new-feature-branch' of https://github.com/Mukiewukie/FR…
Mukiewukie Aug 10, 2026
f7bbdb2
add erik to contributors
Mukiewukie Aug 11, 2026
c6ae008
no pronounciation :sob
Mukiewukie Aug 11, 2026
e191359
various formatting fixes
witherslayer67 Aug 11, 2026
c8d7466
credit Tim - 78M
witherslayer67 Aug 11, 2026
ce90e72
Merge branch 'main' into new-feature-branch
witherslayer67 Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 37 additions & 11 deletions docs/FRC-Control-System.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,46 @@ title: FRC Control System
## Control System Basics

* Battery supplies Power to the Robot
* Power originates with a distribution hub or panel (PDH/PDP/AMPD)
* Swerve encoders can be spliced from a single wire.
* Soldering is a way that teams have done this. You’ll learn later why soldering is considered bad for an FRC environment, but for now, just understand it is a worse solution than others.
* A 5-port [Wago](https://www.amazon.com/LEPEVNEY-Electrical-Connectors-Retardant-Connector/dp/B0GCJGNR1R/ref=sr_1_4?crid=3S5XVPL2BYERF&dib=eyJ2IjoiMSJ9.fnqoyr8S4BoE6gGHz4zoKNKmHKklMrr4b2weTcpcWDTtgCFb9RqDgBQ5F-tbMFAbu-gasv3x3za6PIa3aqW2dUvf2vMRlnPKnQA48KHO2SYTRiV69c_SfiG7Uk7fiULECS2MLTP-yaaymRvp14ij9Mud3-jhJY4C9Ki-CUEiCTAhYIK6Oak4YNHcirDnV_LF4RVtLIb8UO6KggrtqmTMvYdDPQzeTNgsVz_f8BBDDcQ.zFwnjvta4aXVr957XsFxWN2hmtDJTrVbEffRnxRYKV0&dib_tag=se&keywords=Wago%2B2%2BPort%2B(10)%2B3%2BPort%2B(10)%2B5%2BPort%2B(4)%2BLever-Nut%2BAssortment%2BPack%2BConductor%2BCompact%2BConnector%2BTerminal%2BBlock%2BWire%2BPush%2BCable%2BConnector%2B12-28%2BAWG%2C%2B32A%3A%2BAutomotiveor%2BCompact%2BConnector%2BTerminal%2BBlock%2BWire%2BPush%2BCable%2BConnector%2B12-28%2BAWG%2C%2B32A%3A%2BAutomotive&nsdOptOutParam=true&qid=1780958682&sprefix=wago%2B2%2Bport%2B10%2B3%2Bport%2B10%2B5%2Bport%2B4%2Blever-nut%2Bassortment%2Bpack%2Bconductor%2Bcompact%2Bconnector%2Bterminal%2Bblock%2Bwire%2Bpush%2Bcable%2Bconnector%2B12-28%2Bawg%2C%2B32a%2Bautomotiveor%2Bcompact%2Bconnector%2Bterminal%2Bblock%2Bwire%2Bpush%2Bcable%2Bconnector%2B12-28%2Bawg%2C%2B32a%2Bautomotive%2Caps%2C183&sr=8-4&th=1) is the most common correct way to accomplish a 4-way splice for encoder wires.
* The battery connects to a Main Breaker and then a Power Distribution (PD) device
* Every other component that receives power from the battery is connected to a PD circuit, either directly or indirectly.
* This covers almost everything on your robot. The only exceptions are for cameras or coprocessors (other computing devices in addition to the Systemcore) that come with built-in batteries or take small USB battery packs.
Comment thread
Mukiewukie marked this conversation as resolved.
* Every port on the PD that you use must be protected by a Breaker or a Fuse. You will use breakers to protect most devices. The minimum gauge of wire that you are allowed to use in each port is determined by which breaker or fuse is connected to that port—larger breakers/fuses require larger wires.
* Each port on the PD may only connect to one pair of wires. Most of your use cases, like powering motors, will involve connecting only one device per port, so only one pair of power wires is necessary.
* However, some small devices, like the four encoders on a swerve drive, can easily be powered together by a single PD port. To power multiple devices from one PD port, you can connect a smaller power distribution device, like a REV Mini Power Module, or splice multiple wires together by soldering them or using a terminal block.
* This [5-port Wago-style connector](https://www.amazon.com/LEPEVNEY-Electrical-Connectors-Retardant-Connector/dp/B0GCJGNR1R/ref=sr_1_4?) is our preferred way to make a four-way splice. Soldering, especially with power wires 18 AWG or larger, is not recommended.

!!! warning
Some components, like the Radio, have specific rules regarding how they must be powered. Be sure to read the power distribution rules fully and ensure that you are powering every device in a legal way.

![5Wago](/assets/FRC-Control-System/5Wago.png)

## Control System Communications & Signal Basics

The previous section only covered how to power your control system. This section will cover communication with your control system devices.

* The robot radio allows the Driver Station to communicate with the robot, and connects onboard devices with the robot controller. The radio communicates with other devices on the robot through Ethernet cables. The radio has 4 Ethernet ports—1 for the Systemcore, 2 for other devices (such as cameras), and 1 to connect direction to the Driver Station or other computer.
* Avoid using the Driver Station port for onboard devices. Instead, you can use a dedicated network switch to provide more ports than the radio alone provides.
* If you need additional ports on the radio, you can connect one port to an Ethernet switch and your additional devices to that.
* The Systemcore can control motors via its PWM or CAN interfaces. Modern FRC motor controllers support both protocols, though CAN provides bidirectional communication, and more advanced control. The Systemcore supports 5 native CAN buses, as well as external CAN Busses such as the CTRE Canivore.
* CAN Busses have a bandwidth limit that should not be exceeded. Consider splitting devices across multiple busses to keep individual bus utilization lower. Devices that are on separate busses will not be able to communicate with each other. Be sure to keep sensors on the same bus as the motors that utilize them, such as your swerve motors and encoders.
* The Systemcore has 4 USB ports. You can also create a CAN bus by connecting a [CTRE CANivore](https://store.ctr-electronics.com/products/canivore) to the Systemcore through one of its USB ports.
* It is also useful to use a USB port for a flash drive to store robot data log files. After each match at a competition, you can unplug it to quickly view the logs on your computer without needing to keep the robot powered on.
* Many types of sensors, like [CTRE’s CANcoder](https://store.ctr-electronics.com/products/cancoder), communicate over CAN, so you can wire them into your CAN buses just like motors
* Some other sensors, like [TTB’s Thrifty Absolute Magnetic Encoder](https://www.thethriftybot.com/products/thrifty-absolute-magnetic-encoder), can connect directly to the motor controller of the relevant motor
* For any other sensors, or for cases where you do not want to connect a sensor to its motor controller, the Systemcore also contains 6 Smart I/O ports. While these ports can be used in multiple ways, the most common is to read the outputs of digital or analog sensors.
* These ports can also function as Pulse Width Modulation (PWM) outputs or digital outputs.
* PWM is another way to command a motor controller, but it is far inferior to CAN because it does not allow the motor controller to communicate at all with any other devices. A Smart I/O port set to PWM output can only control one motor controller, compared to the dozen or more devices you can connect to a single CAN bus.
* Digital outputs can be used to control pneumatic solenoids
* The Systemcore also contains an RSL port


## CAN (Controller Area Network)
* CAN can be wired in two different ways:
* Daisy-chained: this is the way that CAN is meant to be wired, and it is the most common way that FRC components are wired. CAN wires originate at the Systemcore in one of the CAN bus ports. The wires then go to each component in order, ending at the terminating resistor. One full loop, as mentioned previously, is called a CAN bus.
* Star topology (not recommended): This is the method used to branch the CAN bus by each individual component. This is used by some teams because in a normal CAN bus, if one component loses a connection, they all do.
* With a Star topology, each component has its own individual “CAN bus”. This is not recommended at all in modern FRC, as the introduction of SystemCore allows you to split up CAN buses much further than originally.
* Additionally, a star topology presents many issues as it is NOT AT ALL how CAN is meant to be wired.
* CAN loops always need to be terminated using a 120 OHM resistor to prevent signal reflection. Read about CAN termination below.
* Daisy-chained: this is the way that CAN is meant to be wired, and it is the most common way that FRC components are wired. CAN wires originate at the Systemcore in one of the CAN bus ports. The wires then go to each component in order, ending at the terminating resistor. One full loop, as mentioned previously, is called a CAN bus.
* Star topology (not recommended): This is the method used to branch the CAN bus by each individual component. This is used by some teams because in a normal CAN bus, if one component loses a connection, they all do.
* With a Star topology, each component has its own individual “CAN bus”. This is not recommended at all in modern FRC, as the introduction of SystemCore allows you to split up CAN buses much further than originally.
* Additionally, a star topology presents many issues as it is NOT AT ALL how CAN is meant to be wired.
* Always place the resistor at the end of each loop. This will be a 120 OHM resistor in a WAGO, or if terminating at a motor with a powerpole adapter board, the Weidmuller connectors may be used.

![CAN-Wiring](/assets/FRC-Control-System/CAN-Wiring.png)

Expand All @@ -32,7 +58,7 @@ There are many ways to terminate a CAN bus, but the most common ways are:
* Using the Weidmuller connectors on a motor with a powerpole adapter board
* Soldering a 120 OHM resistor
* Using a 120 OHM resistor in a Power Distribution Panel (PDP) or Power Distribution Hub (PDH)
* Using the [Swyft](https://swyftrobotics.com/electrical/swyft-canender) CANender
* Using the [SWYFT](https://swyftrobotics.com/electrical/swyft-canender) CANender

!!! info "Terminating a CAN Bus"
When terminating a CAN bus, it is important to ensure that the resistor is placed at the end of the loop. This will prevent any signal reflection and ensure that the CAN bus is properly terminated.
Expand Down Expand Up @@ -102,7 +128,7 @@ These are the devices that control the motors and help direct power and signals

=== "CTRE's Talon FX"

![TalonFX](/assets/FRC-Control-System/Talon-FX.png)
![TalonFX](/assets/FRC-Control-System/Talon-FX.png){ width="75%" }

* This is the controller that is integrated into the Kraken’s (both X60 and X44). Talon FX acts as an integrated motor controller, meaning that an external controller that is separately wired is not needed.
* For Kraken X60/X44s, wiring is relatively simple because the controller is integrated in the motor itself. CAN and power directly stem from the motor and can be connected to their appropriate locations.
Expand Down
7 changes: 4 additions & 3 deletions docs/Making-Connections.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,14 @@ This page covers everything needed for you to make successful connections in the
### Why Soldering is Not Recommended
* They are more prone to failure under vibration and stress
* Repairing solder joints is more time-consuming and difficult in competition stress
* Solder can be poor conductor which can be brittle when done improperly
* Solder can be a good conductor, however, brittle connections can lead to failure that crimped connections do not have.
* Similarly, for newer teams, it requires more of a learning curve and practice to get right.
* Low gauge wire should not be soldered as it is usually a failure point on the robot. Refrain from soldering battery wire.
* Large gauge wire should not be soldered as it is typically a failure point on the robot.
- This is a failure point as it is incredibly hard to apply enough heat to create a proper joint. This can lead to a brittle connection that can fail.
- **Solder Sleeves**: Solder sleeves are not recommended for FRC robots.
- They use low-melting-point solder and rely on heat to both solder the wire and shrink the tubing, making it difficult to achieve a consistent, reliable connection.
- If not heated correctly, they can create weak electrical or mechanical joints that may fail under the vibration and impacts experienced during competition.
- Properly crimped connectors are the preferred solution, while hand-soldered splices with heat shrink should only be used when a crimped connection is not practical.
- Properly crimped connectors are the preferred solution.

### When Soldering Might Be Acceptable
* For temporary connections
Expand Down
1 change: 1 addition & 0 deletions docs/Pneumatics.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ This is the general FRC Pneumatics Layout you need to learn:
![FRC Pneumatics System](assets/FRC%20Pneumatics%20Layout.png)

Here are the FRC Pneumatic Components Explained:

* Compressor: Charges air for components on the robot, like a battery that provides electricity to components, and the compressor provides air.

* Pressure Switch: Works with a controller to tell the compressor when to shut off.
Expand Down
4 changes: 3 additions & 1 deletion docs/contributions/Contribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ title: Contribution
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Alex - FRC 6238A / CSA</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Banks - FRC 2974M</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Bhanu - FRC 3506</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Laukik - FRC503</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Erik - FRC 1648M</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Laukik - FRC 503</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Nick - FRC 2851A</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Rowan - FRC 1778A</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Ryan - FRC 3647M</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Tim - FRC 78M</span>
<span style="display: inline-block; background-color: #121212; color: #e8e8e8; padding: 2px 10px; margin: 2px 4px 6px 0; border-radius: 9999px; font-size: 0.7rem; border: 1px solid #2d2d2d; white-space: nowrap;">Yoyo - FRC 100</span>


Expand Down
Loading
Loading