My team is considering using 775 Pros for a 4 bar linkage on our carriage to hold up our intake. If we wanted to voltage limit them, would we do that programmatically?
I should have been more specific, you certainly can stall 775s at lower voltages and have them survive, so there are exceptions to the rule certainly, I simply meant it as a best practice for teams not experienced with doing this (which I assume is the case for OP).
If you’re running a TalonSRX or SparkMAX to power them, the feature is actually built in to the controller, so you could set the max voltage value (either through the CAN/Configuration tool or through a command from the code (see the user guide for your specific controller) and the controller will attempt to not exceed that voltage. Potentially you could also limit the voltage regardless of controller type by monitoring the data from the PDP and adjusting the throttle but this is harder to set up.
Me simple mechanical guy. No know fancy programming. But pseudo code look like:
throttle_limit = 6/system_voltage 'for 6v max throttle, adjust lower if desired
if 775_throttle > throttle limit
775_throttle = throttle limit
Otherwise, like @cbale2000 points out, there are lots of built-in voltage and current limiting options in CAN-enabled motor controllers.
Thanks for the tips. Last question, are there any design calculators that allow you too factor in voltage limiting when designing subsystems?
The JVN Mechanical Design Calculator is a good tool to use, and while it doesn’t have a built-in feature to change voltage, it’s not that hard to add one, since it assumes 12v by default. If you’re familiar with working in Excel it’s relatively easy to modify. I’ll try to find a version I edited for this purpose and link it for you.
You can use my design calculator, which does the same stuff as JVN’s and more, and includes an input for motor voltage.
Nevermind, use his calculator, it’s better than what I would have posted anyways.
Especially if you’re going to use the SRX, you should probably consider current limiting rather than voltage limiting. Voltage limiting reduces the top speed of your motor as well as the top torque. Current limiting limits torque and heat generation, but allows the motor to run fast when there is little to no load. Note that the SRX measures the current on the INPUT, not the output, so figuring out the correct limiting current is a bit tricky. A good start point would likely be to square the voltage fraction for the curve you’re looking for, and multiply that by the stall current at 12V. So if you wanted to match stall time at 6V, you’d limit to (6V/12V)^2 * 134A, or ~ 33A.
Actually this is a good rule of thumb. Good rules of thumb are conservative by their nature.
Yes if you do the calculations, your mechanism is (properly) designed around those calculations and the programing is also properly designed you can get away with stalling a fan cooled motor. However that doesn’t change the fact that it is a good rule of thumb to avoid stalling a fan cooled motor.
I would recommend designing the mechanism so that with the desired voltage it could be held in place. Then using a Position PID Loop for controlling it should automatically drop the voltage to safe levels. Thats how my team achieved safe levels during 2018.
Was it @Paul_Copioli who once said ‘you get a comfortable factor of safety or a competitive robot, not both?’
I am more comfortable suggesting that a team current- or voltage-limit their 775 via motor controller or programming than add weight or lose power (or both) by switching to a sealed-can motor.
I’m a programming mentor with little mechanical experience and I’m struggling to understand how to design our system so that our motors can hold our arms via a PID loop without smoking our 775s. We have a pair of motors going through 100:1 reduction and then driving a small sprocket connected via chain to a bigger sprocket. A rough guess is that our arms are 50” long and weigh 25 lbs. Is it a case of needing more gear reduction to make it easier for the motors to hold in place? Is there a good resource for trying to understand the relationship between gear ratio and current and voltage and anything else that might be important in this equation? Thanks for any advice you can provide. Good luck this season.
If there’s a lot of friction in the system, then the voltage applied by a controller (such as PID) to hold a fixed position can vary widely, depending on whether the friction is assisting the motor or resisting it.
Look up jvn’s design calculator and go to the rotary motion tab.
You can use my design spreadsheet to calculate the approximate voltage needed to hold your arm at stall at a 90° angle . Check that voltage against the locked rotor stall tests at motors.vex.com to see how long the motor can survive stalling at that voltage.
If you’re satisfied, it’s time to tune your PID loop. There’s a lot of good information on here about how to tune PID for an arm, but I’ll give the basics here. First thing, you need to linearize your system. Assuming you’re using an un-counterbalanced arm, you’ll need a dynamic feedforward term to counter the force of gravity. Hold your arm at 90° and slowly increase the voltage you give the motor until it holds the arm still without any help. Your feedforward will be that voltage multiplied by the cosine of the angle the arm makes with the ground. Once you have that, you can tune your PID loop with your preferred PID tuning method.
Are you restricted to software solutions only?
Holding position on an arm (or elevator) is usually accomplished with some combination of:
- Software control
- Friction inherrent in the system such as in the gearbox(es) and motor i.e. the resistance to backdriving
- Friction that is added and under software control i.e. usually a disk brake from a bicycle
I don’t think we are completely restricted to software control but that’s the part I control . I’ve heard talk of adding some counterbalance so hopefully that happens. I really wanted to understand the “design” process better and not just the build it and see if it works process. After my original post yesterday I watched a video from team 1678 on motor sizing and that with all the other threads I’ve read make me think I kind of understand it better. I appreciate the feedback .
Thanks for the suggestion on the feedforward. I wasn’t sure if that was appropriate for position control, but compensation for gravity makes sense.
I forgot about counterbalancing in my list. What your team ends up using will depend on factors such as what you know how to do well, what materials you have available and what other functions/features are needed.