I feel like this is a dumb question, but in code, should the motors be set to 100% power. Our team generally does not keep our motors at full power but I feel like we are losing performance doing so. We do this all around the bot generally but specifically in the drivetrain (am 14u). Like the arm we had on our bot, I don’t believe it was set at full power but I remember another thread saying how to calculate gear ratios to stall motors at a lower voltage. Would that mean reducing power to the motor?
If in doubt, you can always add in a scaler/multiplier for each of your motor - either on the front end of your calculation or after your calculations.
What do you mean by that, I’m not in programming
So say you never want the motor to ever reach 100% (which translate to sending a ‘1’ to the PWM library as parameter). You can then cap it by doing this multiplier, X. So say you wanted to cap it at 80%, then you do a 0.8*parameter.
Oh, that’s what we do. I meant like is it good practice to keep the motor speed lower than 100%
First off there are no dumb questions. I wouldn’t say its bad practice necessarily but in some applications it is detrimental. The biggest place it would be detrimental that I can think of is in a drivetrain. There are places it is beneficial to run motors at a lower speed or voltage such as in long stall applications, another would be to tune an in-take or out-takes speed if you were looking for a certain repeatability. So in the end the answer is maybe it all depends on by how much slower your running the motors, what motor your using, how much load is on it, etc. I personally wouldn’t run drive motors under 80%, At that point I would just switch the pinion on the motor.
And even then, it might be advantageous to have a slow mode. Of course (as a mechanical person), that should be called “Low Gear”, as in the slower gears in a shifting drivetrain, but I can see a situation where having a code equivalent could be useful. Some of the defenses in 2016 were best tackled slowly, for example.
That said: You do NOT want to do that with any fan-cooled motor. Those motors rely on their fans to stay cool, and when the motor runs slowly so does the fan. When the fan doesn’t cool the running motor properly, bad things can happen rather quickly–see also: magic smoke.
And to go off that again sometimes it’s helpful to limit you drivetrain speed off of a mechanism like an arm or elevator while it’s extended. If you really wanted to get fancy with it I know some teams that made their drivetrains in 2018 proportional to the hight of their elevator, something as simple as having a certain hight that it set the speed lower would also work great though.
Ok, so the bigger importance is using proper gear ratios and then running motors at full speed. That’s what I’m understanding
I would say that is mostly correct. Theoreticaly in a perfect world you could predict everying about the game and gear things so they would be running at 100% speed but thats not gonna happen so your usualy going to have to run your motors a little under on some things but it shouldn’t be a massive amount.
More or less. For a more detailed understanding, check out the motor curves (and understand that those curves are for motors run at 100%). For example, we designed the gear reductions on our climber arms this year around the max-power point for 775pros (knowing that the motors would only be pushing for a few seconds per match). Then, we just had to implement a little motion control software to keep the robot level as it climbed. For applications that run closer to 100% duty cycle, like drivetrain, it pays to keep the motor on the “happy side” (high speed, low torque) of the curve as much as possible.
Be careful though. Fastest way to brown out is to drive all your motors at 100% especially if you are using the 40A fuse on those motors and the load condition on all those motors are such that they all wants 40A. Remember the battery is only rated up to 120A (TOTAL!!! and short period). So if you drive all 4 motors and all wants 40A…your battery going to try and as it does, its voltage will drop and it’s a very fast route to under ~7-8V when brown out will occur (chances are you’ll have radio issues before you’ll get to the actual brown out situation).
You got 2 things you can control on a motor
1.) Voltage which roughly translates into speed (rpm) on the chart so running a motor at 12 V gives you full speed running it at 6 gives you roughly 1/2 speed the controllers use PWM to achieve that
2.) Amperage - which is torque - the more A the more torque.
Now if you run a robot at lets say full speed you might draw 2-4 amps if there is nothing around impeding it Now if you run it into a wall or another robot the torque will go up and with that your amps as the controller tries to maintain V (Speed) its kinda if you go up a hill on your bike you got to pedal harder. Now at some point 1 of 2 things theoretically happen you either stall the motor which on a CIM is 120 A or the wheels start to slip and spin out which with most standard wheels and gearing happens somewhere around 20-30A Now if you got real good grip on the tires you might drive the current up and at some point exceed 40A and blow the fuse and then that motor is dead as a blown fuse means 0V and 0A. So when you control the motor and there is nothing mechanical to limit the torque like wheels peeling out/slipping It is a good idea to read the A(mps) back from the motor to lets say keep it under 36 to keep it from blowing a fuse and to watch the voltage to avoid a brownout or system shutdown. on other motors you can also use it to avoid the motor from overheating and burning out cause lets say you are running a CIM at 40A for a long time that is 12V*40 =480W that is a small space heater of heat so you either got some real good cooling on the motor or before long you can cook an omelet on it and it will burn out. Especially if its a smaller motor that is rated for a max Amperage below the fuse blowing at 20 or 40 A depending on where you are connected to.
So that is why for example in some years on the climber we had 2 motors. 1 motor theoretically would have worked but would have drawn 50A to lift the robot might be ok for a short time the few seconds it climbs but 50A even for a very short time will blow the fuse now 2 motors roughly running at 25 A each will put out similar torque and speed and power and 25A does not blow the fuse.
You can look at the graph for each motor that will show you have V(speed), A(torque) relate and what the efficiency is at that power (V*A=W) is and if the efficiency is 60% then that means 60 % of your electrical power (watts) gets transfered into mechanical power (torque,speed) and the rest gets transferred into heat.
Ok, what about if you’re playing defense and trying to push another robot. Won’t the max amperage jump above 40a? The fuse won’t trip though immediately since it does have some time, right?
I would recommend watching the Talon SRX Motor Training videos here:
Even if you’re not using Talons, the videos help in understanding how motors work and the speed/torque curve thing and how voltage and current effects them.
I did a Control-F to look, and there is one application not mentioned here: small-can motors. BaneBots 550, AndyMark 9015 and RedLine, 775pro.
In each of these cases, the motor uses small fan blades inside of the can to help cool the motor. These blades spin at the speed of the motor shaft–so if you’re stalling them, there’s no cooling. In this application, it pays to design the system so the motors can run happily along at close to free speed (and thus max cooling), then do your speed reductions in gearboxes/chain/belts/etc.
Fuses usually trip within a second or 2 of going above the rated current some within ms So counting on some extra current for a shoving match is kinda dangerous as if you blow the fuse you are going to sit on the field as an extra obstacle incapable of moving if its on your drive train or you will be running in circles if only one motor was affected. So for me I’d rather lose one shoving match and keep on playing with all motors working
It’s much longer than that for FRC breakers, at least for the main breaker. There is a decent margin in the trip curve, but, the quickest-tripping breaker with trip at 600A load after around 1 second, 480A after 2 seconds, 350A after 5 seconds, 240A after 10 seconds and around 150A after 30 seconds. The average breaker will trip at 350A after around 5 seconds. I’ve seen driver station logs from my team’s 2016 robot showing total current of over 600A. I don’t recall ever seeing a main breaker trip.
The 40A breakers trip much faster. 240A for 100ms, and 90A for 1s. They reset very quickly, so it is really no big deal. It’s inconvenient, but won’t ruin your match.
That being said, 548 has a “slow mode” for precise alignment, but we push as hard as we can.
Here are the data sheets for the 120A main breaker, 40A branch breakers, and smaller branch breakers. As you can see, the time it takes the breaker to trip is based on a number of factors, including over-current ratio, temperature, and random manufacturing tolerances. It doesn’t say it in the data sheets, but breakers that have previously tripped will be easier to trip in the future due to how they work mechanically, so if you find that you’ve tripped a breaker it’s a good idea to replace it with a fresh one.
The branch circuits are “auto-resetting” breakers, meaning once the over-current event ends they will cool off and close the circuit again. The main breaker is not auto-resetting, so if you trip that you’ll be dead for the rest of the match. This has become much less common in recent years with the addition of brownout protection in the roboRIO, which momentarily turns off the motors if the bus voltage falls below ~7V. This makes it harder to trip the main breaker but causes its own set of problems if you run into it.
Doesnt the pdp use fuses?