Saturday, May 17, 2014

Why compensating for resistance using additional voltage is bad design

This is an expansion on, and a preemption of an anticipated response to, this post, in which a certain modification style involving stock or thin replacement wiring and TrustFires or equivalents in battery trays was analyzed and found to be grossly inadequate relative to the use of battery packs and thick wire.

"But wait," one might say, "why can't I compensate for the underwhelming performance of my favorite ***Fire brand by using more of them? Won't massive overvoltage overwhelm that pesky resistance?"

Yes, but this creates other problems. Simply put, any system which compensates for excessive resistance using excessive voltage will deliver excessive power to your motors when they need it the least, and/or underperform when they need it the most.

The nature of the problem is straightforward. Spinning motors act as generators which produce an electromotive force which opposes the current which drives them (a.k.a. back EMF), which is a linear function of the motor's speed. A still motor generates no back EMF, and a free running motor generates back EMF which almost cancels the applied voltage ("almost" because a small amount of current is needed to overcome friction). This causes the current drawn by the motor to vary with speed - which is good. During transient conditions (winding up, flinging a dart, and recovery - or winding up and compressing a spring), the motor moves at less than it's maximum speed, and high current is desired for torque. While free-running, less current is desired, to minimize motor wear. At constant voltage, motors naturally draw the current that we want them to. Convenient, right?

This only works if the back EMF is large compared to the resistance. If the resistance is large, the resistance dominates the current regulation, and the current will consequently vary much less. This presents the Morton's fork of choosing a high voltage (and thus current) which will damage the motors (and/or cause other problems) or a low voltage (and thus current) which will harm performance under transient conditions.

Due to the contribution made to muzzle velocity by flywheel inertia, the reduction in performance of high-resistance high-voltage setups is the most severe when the ROF is high. So, someone who throws TrustFires in a Stryfe may have deceptively adequate muzzle velocity so long as their ROF is low when they test their system, but this will falter when they fire several darts in quick succession, as one often does during a game to secure a stun.

If you want a more rigorous argument which details the magnitude of the problem, read on.

To begin, here is a little recap for context. The stall current - that is, the current which flows through the motors when they are still - is a good proxy for measuring the torque of a blaster's motor(s) during operation, which affects all aspects of performance. (Obvious nitpick: except for the range of spring-powered blasters or the ROF of semi-auto blasters.) In the aforementioned post, Toruk calculated the stall current of a typical flywheel blaster powered by three TrustFires (henceforth the "TF build") to be 8.9 amps. Compare this to the conservative estimate of the stall current of a "properly" modified blaster (henceforth the "pack build") of 16 amps, done by myself in a comment, and a theoretical ideal blaster where only the motor's resistance is significant: 20.5 amps.

Let's stack these up:
  • TF build: 8.9 amps
  • Pack build: 16 amps
  • Ideal build: 20.5 amps
It is worth emphasizing that the comparison between the TF and pack build is very generously slanted in the TF build's favour - it completely ignores some sources of resistance that are specific to the TF build, doesn't take microswitches (which would likely be stock in the TF build and upgraded in the pack build) into account, and uses high estimates of resistance for the pack build. So, the TF build looks rather bad, eh?

Now, let's see what happens when more cells are used. Let's assume that trays with exactly the right number of slots are used - no blanks needed - so we're being a little more generous than the calculations in the previous post. With these assumptions, the resistance is 592 milliOhms (for the motors and wire) plus 215 milliOhms (for the spring contact and internal resistance) per cell.

Calculated performance for TrustFire batteries and FN130A-2080 motors

That's right - between 30 and 40 cells would be needed to match the stall current of a half-decent pack build. Even with infinitely many cells, ***Fires won't put much more into what is effectively a short circuit than the pack puts into the motors. (In case anyone is interested, diminishing returns begin to set in hard at 100 cells, and you need 290 cells to get 17 A - but this is of purely theoretical interest because there are several good reasons why no-one should ever build this. Safety is one of them.)

Here are a few miscellaneous problems:

These ***Fires are being pushed well out of the linear voltage/discharge regime and well into the "fall flat on their faces" regime. So, these calculations overestimate - and perhaps dramatically overestimate - the stall current that a given cell count would provide.

Also, keep in mind that these batteries are close to being shorted here, in that their internal resistance dominates current regulation, and more so at a high cell count. That's why people use unprotected batteries. If protected batteries are used, the protection kicks in - and that in and of itself is a sign that something is being done wrong. We all know what can happen when Lithium-based batteries are shorted, right?

Let's return to the main argument:

How many cells can one use? Well, this is a non-trivial question. The main limitation, if we ignore safety (!!!), on the cell count in flywheel blasters comes from the possibility of burning out the motors during free-running. As was said before, free-running motors draw a few amps to overcome friction. Unfortunately, with ***Fires, a few amps is enough to cause a non-negligible voltage drop. The current is a function of the voltage, and the voltage is a function of the current and cell count. We're going to have to do some algebra here.

Let v be the voltage across the motor's terminals and let i be the current through both motors combined. Let S be the number of cells.

For simplicity, I'm going to treat both voltage-current relationships as if they were perfectly linear. For the batteries and wiring:

    v = S*3.7V - i * (S*0.215 + 0.051) Ohm

A FN130A-2080 motor runs on about 3A at 11.1 V, so:

    i = (0.27 A/V) * v

Substitute for i and solve for v,

    v = S*3.7V - (0.27 A/V * v) * (S*0.215 + 0.051) Ohm

    (1 + (0.27 A/V) * (S*0.215 + 0.051) Ohm) v = S*3.7V

    v = S*3.7V / (1 + ((0.27 A/V) * (S*0.215 + 0.051) Ohm)

Cancel units and simplify,

    v = S*3.7V / (1.01 + S*0.058)

This gives the running voltage in terms of cell count.

More calculated performance for TrustFire batteries and FN130A-2080 motors
FN130A-2080 motors have a reputation for performance and reliability up to about 12 V. If 5 cells are used, which exceeds this limit but not by much, the stall current is 11.1 amps. Compare this best-case calculation to the worst-case pack build's stall current of 16 amps - not good. Note that the number of TrustFires required to match the pack build's stall current would lead to a running voltage of over 40 V!

It is worth emphasizing that FN130A-2080 motors are, compared to other motors used in Nerf, cold wound, so other motors would perform even worse with ***Fires. Granted, one might find a very cold-wound motor which can extract good performance from ***Fires, but if you are willing to go to the effort to find such a motor, you'd be better off spending that effort elsewhere. By elsewhere I mean battery packs and good wiring.

So, to summarize: any system which compensates for excessive resistance using excessive voltage will deliver excessive power to your motors when they need it the least, and/or underperform when they need it the most. This isn't a matter of opinion or personal taste. This is basic physics.

If someone throws inferior cells into a high-resistance rig because that's what they have on hand, then that's their business. If someone throws more of those inferior cells into a high-resistance rig and claims that this is a good way to mod, they are wrong. It isn't.

Addendum: By ***Fires I mean TrustFires, UltraFires, and similar brands. I'm not calling them something obscene, as tempting as that may be.

Addendum #2: When I first wrote this, I intended to go on to do similar analysis for electric spring-powered blasters. So far, things have not been going smoothly. Here's a summary.

For everything without cycle control, motor damage is the limiting factor on viable cell count, simply because high voltage doesn't cause any other problems (crazy-high ROF isn't a problem in everyone's eyes). There is no problem so far if we ignore the Stampede and use a high estimate (lacking a good estimate) for the motor-damage point.

There is no good data for the running current of electric springers, aside from the fact that it is significant (as pack-powered blasters perform better at lower nominal voltages). I expected to have to find a way to obtain this (or use a reasonable upper bound) because of this - but couldn't come up with a workable way. A generous overguesstimate made it seem as if sufficiently many ***Fires might give good performance, which would be surprising if true.

Simply throwing an ammeter into the loop won't do. Digital ammeters cannot accurately measure time-varying currents with an irregular waveform and, from what I can tell from a quick google search, analog hobby ammeters virtually never go up to sufficiently high amperages.

This is a problem. 

Sound analysis of videos of Swarmfires running on ***Fires might be instructive. I'll try that next.  


  1. As you can tell from the username, DZ just gained a contributor. And on that subject, excellent post, Herbert West. This should end the myth of "Just add a cell, it'll be just as good" quite definitively.

    On the subject of motor damage, the most common situation is that of rapid metal brush failure in stock-type 130 flywheel motors, and I can confirm that high voltages are a major cause (prime example being Stryfe motors and observed failures with 4S configurations of trustfires). Power dissipation in the brush and arc energy at the commutator contact are certainly current-dependent and thus affected by raising the idle current, but I suspect that there is an additional and purely voltage-related effect compounding this, such as aggravated arcing issues. Use of a 3S lipo will generally not take out Stryfe motors' stock brush packs as fast as 4 trustfires, and unless you do a whole lot of useless revving without shooting, I would bet the average current over the motor life with the lipo is higher.

    Ultimately it's moot, the gist of it is that attempting to compensate for sag by throwing cells at the problem is especially bad with metal brushes.

    Regarding feedback on the post, you do an excellent job being more reserved and civil than me, for one thing. I also appreciate that you formalized the math and thought through the presentation of it all which is something I don't typically get around to. I am used to working out builds in my head.

  2. Decreasing returns, Ho! Wow those returns drop off fast.

    For those of us that can't solder to save our lives, this makes it pretty clear that tossing more cells at it won't make it an better.

    1. Thanks for the comment. I should point out thing, though: can't solder, or won't?

      Soldering is easy so long as the right size of iron is used and the pieces are held in a brace (after all, we only have two hands). Anyone who is attentive and doesn't do anything stupid could do it safely.