Logically, it seems like a drive train with 3 CIMs/3 Falcons/3 NEOs on each side would draw too much power and cause brownouts during matches. Obviously using that many of those types of motors is overkill, but shouldn’t it actually draw less power than a 3 Mini CIM drivetrain since the larger motors are more efficient? Theoretically, the power usage shouldn’t depend on the motor, since it takes the same amount of work to accelerate to a certain speed no matter what motor is causing the acceleration (it shouldn’t even matter how fast it accelerates, if I’m thinking about this correctly). Is there something I’m missing, or would a drivetrain with 3 Falcons actually be less likely to cause brownouts than a drivetrain with 3 Mini CIMs?
Acceleration speed does matter: it’s not just total work performed, it’s the amount of time taken to perform that work. If you are doing the same amount of work in less time, that means more power for that duration (Power = Work / Time). More power means more current, which causes a larger voltage drop (due to battery and cabling resistance). A larger voltage drop, for a sufficiently long period of time, causes brownout.
And they will without code to protect you; even worse they can pop your main breaker which will end your match in a hurry. That said with proper gearing and good code they will also let you accelerate like a rocket. Like with all things, measure, log, test and repeat.
That makes sense. I think my confusion was from what causes most brownouts - last year, we had major problems with brownouts at the end of matches because we were using mostly KOP batteries from the past couple years (we definitely learned our lesson on that one), and those brownouts seemed to be at least partially caused by the amount of energy already drained from the battery rather than just instantaneous power. But that was primarily a different issue causing the brownouts than would normally be the case.
The main breaker issue was something that hadn’t even crossed my mind - when using 6 motors, do you put 20 amp breakers on each of them rather than 40 amps to try to help with that? We’ve always used 4 motor drivetrains in the past and put 40 amp breakers on each one, but now that I’m thinking about it, that probably wasn’t a smart move.
No, still use 40A breakers. The trip time of breakers is orders of magnitude longer than the brownout time. Current limiting / speed ramping is done in software to limit the peak current in timeframes that help with brownout.
I was more wondering about using lower amperage breakers as an extra layer of safety to ensure you don’t pop the main breaker, rather than in relation to brownouts.
The entire purpose of browning out is to stop the motors before you pop the main breaker in a stall type condition. Basically, if you’re pulling enough current to pop the main, the voltage will dip low enough to trigger brownout and stop the motors from driving, thereby stopping the current from flowing and allowing the system to recover.
The usual problem with the main breaker tripping is not the peak current but the fact it heats up under sustained high current operation, which shifts the trip curve.
Trip curves can be found on the datasheets:
We can analyze the system at different overload points.
At stall current for a CIM is 130A. At this current the 40A breaker will trip in less than 1 second.
- If you have 6 motors, that’s 6 * 130A = 780A of current, which is 800% overload and above the datasheet limit. It’s likely the trip time is on the order of 1-2 seconds.
- If you only have 4 motors, that’s 4 * 130A = 520A of current, which has a 1-3 second trip time.
- In both of these cases, you will brownout first. 520A with 20mohm battery+wire resistance would be 10.4V of drop, so you’ll brown out well before you trip the main breaker.
At 200% (80A), the 40A breaker will trip in less than 3.9 seconds (min 1.5 seconds).
- 6 motors: 480A, 2-7 second trip time. 9.6V of drop = you’ll brown out first
- 4 motors: 320A, 5-12 second trip time. 6.4V of drop = you might not brown out, but you also won’t trip the main breaker, because the 40A breakers will trip first)
At 150% (60A), the 40A breaker may take as long as 47 seconds to trip (min 3.9 seconds).
- 6 motors: 360A, 4-12 second trip time. 7.2V of drop = brown out
- 4 motors: 240A, 10-40 second trip time. 4.8V of drop. This is actually a danger zone, because you won’t brown out, but you might also trip the main. It would take a perfect storm of long 40A breaker trip and short main breaker trip to do it.
Interestingly, you might be theoretically more likely to trip the main from 4 motor drive because brownout doesn’t kick in. Again, practically speaking, the only times I’ve seen main breaker trips are due to long-running heating shifting the trip curve. There were teams some years who chilled their main breakers before each match for this reason.
I thought part of browning out was done by roborio to “save” itself. If the whole robot is using too much power, the roborio cuts off power to non-essential robot functions to conserve power for itself. This way, you hopefully have only a couple moments of downtime instead of a 30 -second reboot.
Whoops, yes, you’re right, the first priority is preventing device resets (of both the RoboRIO and other control system components). The main breaker trip avoidance is a major ancillary benefit however. https://docs.wpilib.org/en/latest/docs/software/roborio-info/roborio-brownouts.html
Unfortunately, the RIO brownouts are designed to keep the RIO up, not the radio. In recent years, the radio has been somewhat easier to reset than the RIO, and takes longer to reboot than the RIO by almost an order of magnitude.
As the RoboRIO browns out at 6.8V, and the VRM will supply power with an input voltage of only 5V, I think it would take an extremely rare set of circumstances for the radio to reset before brownout kicks in (eg very high current spike on a nearly dead battery). Basically all radio power problems I’ve seen or heard about are due to connection issues (eg barrel jack or flaky PoE). Everyone should dual wire their radio power (PoE and barrel in parallel)!