Shooting wheel with 2 falcons power issue

Hey everyone.
We have a shooting wheel system powered by two Falcon 500 motors.
The system operates smoothly with a manual PWM controller but through our software, we are facing some issues.

First thing first, the PWM Controller is an external box connected directly to a 12V battery and the controller is an Arduino board.

When we are trying to power the system through our software the motors cant make the system move while making horrible sounds (the sound of motors which are trying too hard)
we tried using ramp rate - without any success, ramp rate of 1.5 seconds couldn’t make the system accelerate normally.

does anyone have a clue what could it be?
Yeah, the system is not optimal with its friction. but if an external PWM controller can make it move., why the software can’t?

Would it be possible to share your code on GitHub? There are many possibilities here.

If you cant share them maybe just your teleop periodic?

I can’t think of a reason you would get more power out of your shooter when running off an external controller vs your code.

Would need to see the wiring and code - try disconnecting one motor and seeing if it runs. The fact that you have two motors makes me wonder if your code has them working against each other.

Are you plugging the power inputs of the Falcon 500 into another motor controller? The Falcon has a built-in controller, it’s supposed to get power in straight from the battery and the control input comes over the signal wires (either CAN or PWM)

1 Like

Our team has encountered a very similar problem. Our shooter also makes a terrible noise when using software control. The difference is that our flywheel can actually spin up and reach its setpoint with a pretty good response time. That horrible sound only appears when the flywheel accelerates/decelerates drastically - for example, raise from 0 RPM to 3000 RPM.

Friction is (very likely) not the problem. We have our belt and pulley system replaced, seeing no sign of improvements. Slew rate is neither the problem - changing PID constants and limiting slew rates have no effect.

For wiring, we have our Falcon 500s connected through CAN. Both motors show the correct signal light and both behave normally when the flywheel is disconnected.

For coding, here’s an excerpt from our program that configs and runs the shooter.

private ShooterSubsystem() {
    shooterFollowerMotor.configFactoryDefault();
    shooterFollowerMotor.follow(shooterLeadMotor);
    shooterFollowerMotor.setInverted(InvertType.OpposeMaster);
    shooterFollowerMotor.setNeutralMode(NeutralMode.Coast);
    shooterFollowerMotor.enableVoltageCompensation(true);

    shooterLeadMotor.configFactoryDefault();
    shooterLeadMotor.configSelectedFeedbackSensor(FeedbackDevice.IntegratedSensor);
    shooterLeadMotor.enableVoltageCompensation(true);
    shooterLeadMotor.setInverted(InvertType.None);
    shooterLeadMotor.setNeutralMode(NeutralMode.Coast);
    shooterLeadMotor.config_kF(0, Constants.SHOOTER_KF);
    shooterLeadMotor.config_kP(0, Constants.SHOOTER_KP);
    shooterLeadMotor.config_kD(0, Constants.SHOOTER_KD);
}

public void setShooterRPM(double rpm){
    this.shooterLeadMotor.set(ControlMode.Velocity, Conversions.RPMToFalcon(rpm, Constants.SHOOTER_GEAR_RATIO));
}

I believe there are tons of similarities between your problem and ours. Hope this will provide a clue to the problem.

1 Like

Can you take a video of it doing this? Often being able to hear what’s happening can help, and being able to see the setup may let us make guesses as to any other causes (mechanical binding, for example).

I would recommend starting by mechanically disconnecting one of the motors and running it. That will tell you if the motors are fighting against each other - hopefully you’ll see the sound disappear and both motors spinning. It’ll let you see if one is spinning in the wrong direction, too!

For what its worth, we have two falcons powering our shooter, and it works and sounds great - so it can be done!

2 Likes

This was my first thought. If code doesn’t have one of the motors reversed (assuming it needs to be), they would be driving against each other, be very unhappy, and the end result would be (virtually) no movement of the mechanism. This sounds VERY similar to what OP described

1 Like

You should post a link to your code for more help.

For example, in @KeseterG’s post above, they aren’t using any sort of kF for their velocity PID. That means that all the possible recovery in the shooter like when spinning up or touching a ball will be based on Feedback only.

Reading CTRE’s closed-loop control documentation says the following:

Relying on feedback alone in the process may very well be the cause of your motors over-exerting and stalling. Could also be that your motors are fighting against each other.

For example, with the TalonFX if you have a follower, you should make sure the follower is matching the leader’s inversion setting using the InvertType.FollowMaster setting.

1 Like

Thx everybody
It seems like the issue was friction.
The external controller also faced the same issue as our software
And as we changed the gear ratio the mechanizem started working as expected…

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.