Arm falcon motor stalling at set position


Our team is using a custom gearbox paired with a Falcon 500 to control our arm pivoting. We are using CTRE Motion Magic to control the arm. However, whenever we set the arm to go to a near horizontal position (where the greatest amount of force is being exerted on the arm due to gravity) the arm stays still but the motor stalls. The motion profile is good with configured cruise velocity, acceleration, and arbitrary feedforward (passed in with set(ControlMode.MotionMagic, position, DemandType.ArbitraryFeedForward, demandFF)). We figured out that the arm motor required around 7% of motor output to hold the arm in place at horizontal, so we scale that accounting for the angle of the arm, just as it says in the CTRE docs. Our angles are accurate and we are logging the set feedforward values, which are also accurate. However, when we self-test snapshot in Pheonix Tuner, the percent output is around 5%, not ~7% as it should be.

We set a neutralDeadband of 0.001, so the controller shouldn’t be ignoring the low motor outputs.

We have tried fiddling with P and D values, but we have found that just a P value works best. We have tried setting an allowableClosedLoopError but it just generally goes to the lower bound of error while stalling.

Another note to mention is we have another pivoting mechanism with custom gearboxes and 2 motors with Motion Magic working flawlessly.

At this point we are debating whether to just switch to on-board Rio WPILib control, but we really want to get Motion Magic working because of its smoothness and ease of use (as contradicting as it sounds).



What current are you pulling when it stalls. If the current is low enough the motor will be just fine. Are you troubled by the annoying sound it makes?

EDIT: Link to Topic about Protecting Motor

When we had our arm stalled using 10% output from the motor it was doing the chirping stall sound, but the current wasn’t enough to actually damage the motor, so we considered leaving it and told the students we might rename the robot to Squealy. The arm was moving plenty fast so we ended up adding a 3:1 slice to the gearbox to give it more power and that helped get rid of the chirping. We currently have our deadband set at .02 and the motor is set to brake mode.

Your exact situation is probably different, but this is what we did.

The arm stalls at 3.75 amps

That seems like a safe holding amperage.

What is actually the problem you are having? You say it is stalling at the set position, is that not what you want?

1 Like

The motor is making the whining noise when it is at position.

Is that the only problem? Seems like kind of a non-issue unless the noise is irritating people.

If it’s really that bad you could adjust the gearing up or down to try and change the frequency.
3.75A is 1/10th of what Vex’s data shows you could draw for an entire match: Falcon 500 - VEXpro Motors - VEX Robotics

Ours has this same problem, we just geared it down in an effort to make it faster it didn’t used to stall but now it does, it still moves fantastically and achieves the desired positions but the stall horn is ear searing, does this warrant us going back?

Seems like a firmware issue and CTRE doesn’t allow us to configure the stall whining. I wish we could configure it to make the screeching noise if it is drawing current above a certain level, but it only seems to emit noise when the motor is plainly stalling, no matter the current draw. We added another gearbox and motor, but it only halved the current it was stalling at, still making the noise. During testing it is very annoying to us and to other teams I’d assume. However, to circumvent that I guess you could detect whenever the arm is at the goal position, then switch to PercentOutput to hold at the position. We just decided to deal with the noise.

  1. To clarify: Stalling just means the motor is at a stop while power is being applied.
    Was it coming to a stop before? If yes, then it was already stalling.

  2. Stalling isn’t necessarily bad. The problem is when you stall at a high voltage (and therefore a high current) for long enough to cause thermal damage.

  3. There is no such thing as a “stall horn” or a “stall alarm”. Brushless dc motors are actually a form of AC motor and the noise just means it is operating in a range where the frequency of the alternating current is causing a vibration that can be heard as sound.
    edit: the Falcon 500 does actually have a “stall whistle” feature listed in the manual, see below.

Falcons have a “Stall whistle” feature, the noise that they make when they stall is on purpose, not just coincidental.

1 Like

Huh, I stand corrected on that one:

However it might still be coincidental. While we aren’t using falcons this year, I’ve never heard one make a noise that sounded different from any other brushless motor approaching 0rpm.

falcons just do that :man_shrugging: it’s singing you the song of its people. The behavior is good so I wouldn’t worry about it.

I see five options (excluding combinations of these) straight up, though there are almost certainly others. In rough order of increasing amount of effort:

  1. Live with the chirping Falcon.
  2. Use something other than a Falcon
  3. Use a sufficiently inefficient gearbox that it will not be back driven (many if not most worm gear boxes meet this criterion), possibly supplemented by brake mode on the motor controller, and go to zero to hold position rather than stalling the motor.
  4. Add load balancing springs (or weights) [Probably the best option if it works for you because it also helps reduce energy requirements as you do the lift]. The Funky Monkeys (FRC 846) did an awesome video in 2020. (Awesome in terms of content, practicality, and explaining the physics at a high school level. Production values, I’ll call it fair. It’s almost an hour long, so get yourself a glass of water and maybe a snack before you settle in.) Counterbalancing a Robot's Arm Using Springs WVROX 2020 - YouTube
  5. Use a brake to hold position. It’s solid, but it requires an extra thing to control, and doesn’t help when you do the lift.
1 Like

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