Motor Configuration

Essentials

Every motor controller should be configured for safety and consistency. Key parameters:

Parameters

Configure these:

  • Inversion: Positive input = Forward motion.
  • Idle Mode: Brake (Hold) vs Coast (Spin).
  • Current Limit: Protect motor/battery (e.g., 40A).
  • Voltage Comp: Consistent output despite battery drain (e.g., 12V).
  • Ramp Rate: Limit acceleration to prevent brownouts/wear.

Configuration Code

Applying these settings:
package frc.robot.subsystems;

import com.ctre.phoenix6.hardware.TalonFX;
import com.ctre.phoenix6.configs.TalonFXConfiguration;
import com.ctre.phoenix6.signals.InvertedValue;
import com.ctre.phoenix6.signals.NeutralModeValue;

public class Drivetrain extends SubsystemBase {
    private TalonFX motor = new TalonFX(1);
    
    // ... (other fields and methods)
    
    public void configureMotor() {
        TalonFXConfiguration config = new TalonFXConfiguration();
        
        // Set motor direction
        config.MotorOutput.Inverted = InvertedValue.CounterClockwise_Positive;
        // Set neutral mode (Brake or Coast)
        config.MotorOutput.NeutralMode = NeutralModeValue.Brake;
        
        // Current limiting (Stator = motor protection, Supply = battery protection)
        config.CurrentLimits.StatorCurrentLimitEnable = true;
        config.CurrentLimits.StatorCurrentLimit = 40.0;
        
        // Voltage compensation (maintains consistent output despite battery voltage)
        config.Voltage.PeakForwardVoltage = 12.0;
        config.Voltage.PeakReverseVoltage = -12.0;
        
        // Ramp rate: time to reach full output (reduces sudden changes)
        config.ClosedLoopRamps.VoltageClosedLoopRampPeriod = 0.25; // 0.25 seconds
        
        motor.getConfigurator().apply(config);
    }
    
    // ... (rest of class)

Resources

Open full interactive app