My long-flight-time quad (APM 2.6, or Pixhawk) is a specialized aerial survey platform using 4S4P unprotected NCR18650B Li-Ion batteries. I have been using Afro Slim 20A ESCs successfully, but I want to be certain that they will not pull more than 3C of current from the battery. Theoretically, these ESCs could pull 80A during a max climb. I can eliminate this possibility by setting the climb rate conservatively, but are there other conditions where overcurrent could occur?
I'm only considering normal flight, not crash conditions such as impact or extremely high wind.
I believe that the ESC current rating means that it cannot drive a motor beyond that current draw at the max PWM command, correct? I want my system to be unable to burn out my battery (3C, 13600mah) during stabilization and I can set climb rates to be conservative. However, can I be certain that the only condition under which maximum battery current draw will be during climbs? What about maximum roll correction?
Since the battery is the limiting factor in this equation and finding the maximum ESC rating allowable is the result, motor/prop/weight can be ignored for now.
In essence, "Could my 20A ESCs burn my battery during stabilization in autopilot mode?" "Would using 10A ESCs be the best choice for max motor thrust while limiting the chance for battery overcurrent?"
Could I set the firmware to not draw more than a set current from the battery?
"Could my 20A ESCs burn my battery during stabilization in autopilot mode?"
Yep, quite possibly.
"Would using 10A ESCs be the best choice for max motor thrust while limiting the chance for battery overcurrent?"
NO... Do what Kevin said, or get a lower pitch props (or fine tune solution using combination of both). Each option will ultimately drop the max motor thrust, the latter option might well yield greater efficiency though!
No, you don't want to do that, as has already been said a lower rated esc can actually privide more current, it just might set it self on fire doing so.
The other issue is to stabilise one esc may momentarily use quite a bit of current, while the oppostite corner esc is not using very much at all, resulting in the overall current being ok still. So what you suggest would limit attitude control power (if it worked the way you are asking about that is), which is bad.
you are better off looking at maximum climb rate parameters for alt hold/loiter, but this may get you in trouble in other ways.
This is a system design and flying style issue. Also need to consider are these low c rated batteries fit for your purpose, system and application if you do actually need the power to get you out of trouble or even fly safely.
Your testing method is a good one and I have some 4S lipos that I could test with. I'll reexamine the max power characteristics with ecalc as well.
It would be nice to get some data as to what PWM range gives me a 2:1 thrust to weight, then tell arducopter to set that upper level as the max PWM signals to the motor ESC. Not sure if attitude control would ever need more thrust, but experimentation could determine if such a limit caused excessively sluggish stabilization.
This type of solution would allow one to use ESCs powerful enough to never burn up while also controlling the max power output to protect the battery. Pretty much a win-win, but I don't know if anyone has coded such a program before.
You are interested in total current, limiting individual outputs that may need more current instantaneously and independently seems stupid to me. There is sluggish stabilisation and not enough power on each corner to stop it crashing. 2:1 on an individual motor may be enough, just seems the wrong way to do it to me.
If you go that way though, you would still need to measure overall current even at your 2:1 thrust, it may be over you battery current limit.
Seems to me there would be more value in developing the code for this particular application that allows a current limiter in the code that limits the global throttle value. This could be a parameter that is by default not crippling low for non endurance types. I don't think the code does that at the moment.