Arm braking options

Disclaimer: I haven’t read through this whole thread yet.

In 2018 we put a pneumaticly actuated bike brake on the elevator which worked well, but was hard to package due to its size and the awkward mounting of the caliper. In 2019 we stole an idea from 971’s 2018 robot, and put a hex hub on a relatively fast moving axle, that we could then use a pneumatic pancake piston to drive a stationary plate into. Hard to describe nicely and hard to see in the CAD, but it looks like this:

It packaged well into the robot and has worked flawlessly all year. See 971’s CAD for the “gold standard” implimentation.


Did you use any sort of friction material on the plate?

I know 254 did something similar in 2015, but with a steel disk and some brake liner.

We were originally going to put some high durometer neoprene in there, but when we tried it out for the first time the bare aluminum worked fine. It’s geared down enough from the drum that you don’t need a ton of force to hold it stationary. When it’s locked in, you really can’t move the elevator by hand.

Edit: in the image I posted above, you can see a thin layer of black material to the left of the piston. That was the rubber that we ommitted from the final robot.

Using this technique for short term holds (during a match) is OK, but don’t use this for holds longer than a few minutes. 3946 burned out a CIM stalled at 10% throttle on the 2017 robot in a 2018 Mardi Gras parade. This was the CIM for the climber; during the match it was held inside the frame perimeter by running it at 10% in reverse against the ratchet.

That’s rather close to the wording I used in the post-mortem. I was just sharing my experience on the limits of this technique - good for matches, and do not use for long-term (at least for a CIM, which was the most stall tolerant FRC motor until the NEO). For practice, I would recommend monitoring the CIM temperature or checking it about every ten minutes, and certainly at battery changes.

For sure, all engineering projects should be designed around the criteria required for their intended function, and when using such projects outside of their intended use-case, it is important to recognize the requirements the project was designed around and adjust your usage appropriately.

If a toaster was found to be ineffective at heating an office building, I wouldn’t put the blame on the toaster (that is, of course, provided one of its initial requirements wasn’t heating office buildings alongside making delicious toast - then that would just be a bad toaster/heater).

That idea looks great, and I’ll bookmark it for next season if it becomes necessary. The problem with implementing it in my current design is that I’m trying to eliminate pneumatics from the robot design, not because we can’t do it, but because I don’t think the entire system is necessary for most of our mechanisms. The downside of this is that we can’t use a pancake piston to push the stationary plate if we remove pneumatics, so your example becomes a lot harder to implement.

What pressure was that pancake piston using? I’d like to try looking into using an electronic solenoid or a rack and pinion to press the plates together, but if your pancake cylinder was driving at the full 60psi, I’m not sure if it’ll work for us.

EDIT: I dug through CD for more examples of brakes, and found this comment that might solve my problem:

We have that piston up at 60psi. It’s a small bore and the disk it’s pressing on isn’t all that large so we need the pressure to make it work. If you’ve already got a pneumatic system on the bot, then it’s a great little mechanism.

How do you design a gearbox so the motor stalls at a low voltage

What material was the hex hub made of? Did you see any wear from repeated use?

The hub is a standard aluminum hub from AndyMark (I think). It has a replaceable plate bolted to the front (also aluminum) but we haven’t had to replace it yet this year. Now that you mention it though, we should probably check it before Chezy Champs.

Take a look at the locked rotor stall tests on VEX’s motor testing site, and you’ll see that a lower stall voltage = slower motor degradation. Therefore, you want the stall voltage to be as low as possible to prevent motor burnout.

I’d recommend JVN’s design calculator for designing gearboxes. It lets you specify what motors and gears you’re using, and in response, it gives you the max current draw of each motor. For the “Rotary Mechanisms” tab, you can add this equation to a cell to get the stall voltage of each motor:


Our target was <2V for CIMs and <1V for 775s, although you can alter those numbers based on how safe you want to be. If you add your gearing info to the spreadsheet and your stall voltage is higher than your target, increase the gearing (add a chain and sprocket reduction, swap out VersaPlanetary stages, use external gearing for COTS gearboxes, etc.) until the number is low enough.

Along the lines of those who have already mentioned worm drive, leadscrews are also an option.

1 Like

Ok, so the JVN calculator does all the math. I just need to worry about parameters and gear ratios. Does the esc automatically send a lower amount of voltage? Ex. Let’s say I designed an arm to stall at 1volt, what’s preventing the esc from sending 12volts to the motor and damaging it? And in general I’m assuming a higher gear ratio will mean a lower stall voltage.

Last year, team 118 used a pneumatically engaged arm that had a toothed profile cut in it on their intake to prevent the pressure of the ball back driving the intake. You can see it in action here. I believe I have seen 4488 do a similar design too. However, I am personally curious how it holds up under pressure and shock loads.


Why not use an encoder and have the software monitor it. Like for example if the desired position is at 1000 then something like (pseudo code)
If position < 1000 go up ELSE go down
You could give the up and down a speed (voltage based on how much it is off. or if you use a controller that can do PID on position with the encoder then you can let it handle it

I don’t know if anyone has already brought this up but in 2018, 118 used a servo with a cam that would when turned, open and closed a disc brake on their arm. You can even see it working here in their 2018 reveal (2:55). Also they have their cad made publicly available on their website here.


You can also use the mechanism calculator in my design spreadsheet, which automatically includes a stall voltage calculation. It also lets you specify an allowable stall voltage and automatically calculates the gear ratio needed to achieve it rather than having to guess and check.

The issue with the bang-bang control algorithm you described is that, aside from the lack of a fine control resolution, and overall jerky and imprecise movements, it normally results in oscillations around the setpoint, which can do some serious damage to the motors if the frequency is high enough(we had issues with our motors burning up after only around 30 seconds of oscillation when tuning our arm control loop).

The reason they didn’t want to use a PID controller alone was that they were worried about the motors burning out under stall, which is effectively what PID does to hold the mechanism in place, and there’s no real way to counteract that in software alone.

1 Like

Our team will be using PID to get the arm to the right angle, but since we’re using 775s, we don’t want to stall the motors at the setpoint. Instead, we want to use a combination of PID and braking, where the PID gets to the setpoint, and the brakes hold it there.

Yeah, that’s what I thought. Any particular reason you don’t just want to gear the arm slower, to put less strain on the motors(and then use a feedforward or something to hold it in place)?