For my TT robot, I coded it to be on motor hold when the motors are not in motion.
Is this a smart idead, or unnecessarily wasteful?
Depends on the motor. If we 're talking about a lift or intake motor, definitely worth it. I’m the case of drive, no real reason to hold.
If you have a claw, you want the motors to hold when they are gripping, but then you might want it on coast when the claw is open.
Well if you have a claw (not a rolling intake) then I would suggest using rubber bands to keep it pushing inwards constantly instead of using motor power.
Also, there are different types of motor brake modes.
It depends what you want to use it for; its just another tool in the toolbox.
You can choose between passive or active hold, which have different advantages.
What kinds of stopping is effective for what? Would coast or brake be better for the drivetrain?
Also where would one use coast?
You would use coast to give your motors a break. So if you are powering a shooter that has a ratchet, after it has gone far enough to engage the ratchet, you set the motor to coast. This will give the motor a rest and help prevent it from overheating.
For the drivetrain, I would think you would want the bot to stop when you let go of the sticks, so I’d break.
Many people would disagree. What a lot of drivers prefer is that the motor power is strictly controlled by the sticks, and when the sticks are 0, the motors coast at 0. Its like taking your foot off the gas pedal - you don’t want the car to brake, you just want to stop accelerating and slow down.
Having the motors brake when the sticks are at 0 is very jolting, and many people do not want the robot to suddenly brake when they stop applying power.
Well, many people prefer coast for the drivetrain, because it is the method that gives the most control. Coast is the default mode of motors.
Coast is also used for motors that are not relevant to the operation of the robot when powered off. An example of this would be an elastic intake or flywheel. When they are off, they are not being used. When using coast, off means off. The motors are doing absolutely nothing, freely spinning until they stop due to internal friction. This is also the gentlest way of stopping in terms of motor strain.
Brake is when you want a motor to passively lock. It does not try to maintain its position, it just applies extra friction to the motor. This might be used for a grabber or something you don’t want to freely move when turned off. Brake does not apply any additional energy to the system, it just applies passive friction.
Hold is when you want the motor to actively hold the position. In this case, it is never off, constantly fighting to stay in the same position. Additional power is being sent to the motor to maintain the position. This might be used for an arm, where you want it to hold a position with a load, or a grabber where you want to maintain pressure. Hold has the largest strain on the motor, because it is constantly trying to adjust. It is practically impossible to force a motor to turn with hold on.
I personally mostly used coast on my robot. I used brake on my intake to stop the ball from sliding out, and I used hold on our arm. Don’t use hold unless you have to, as it is quite taxing on the motors.
Note that brake mode is only regarded when using velocity control, i.e. telling the motors to spin 0 velocity. Velocity control is default for VCS/VEXcode, and it uses PID to try to make the motors turn the exact velocity you ask regardless of load. However, PROS and the other languages also offer voltage control, where you simply control the end voltage that is being sent to the motor. In this cause, the brake mode is disregarded, and the motor will coast when 0 voltage is applied.
Yes, that makes sense. Thanks!