EDIT - clarifications
1) running full throttle always consumes peak power no matter the load;
- consumed power should be proportional to load;
- actually relates to partial throttle as well;
2) unable to reach high RPMs;
- there's no way now to define target rated RPM;
- it's unclear what defines rated or max RPM now;
3) extremely slow spin-up;
- OK, may be normal, due to prop weight.

Generally, motor size should define rated power capacity.
Then, rated RPM and rated torque should be related as RPM.RATED * TORQUE.RATED = POWER, hence two cross-dependent sliders can implement this relationship.
RPM.RATED can be defined as 80% of RPM.MAX, close to common maximum efficiency point.
Knowing that torque at RPM.MAX is 0, full load curve can be calculated.

Bug Rejected Found in 1.1.109.0
Sandbox View

17 Comments

  • Log in to leave a comment
  • Profile image
    2,237 TomKerbal

    @mundindel Yes, I like that power dependent calculation (P=U*I), too, since U and I can be changed in each power class with different (reasonable) motor coil winding.
    So that's quite good Juno :-)

    1.1 years ago
  • Profile image
    134 mundindel

    @TomKerbal 👍, although you don't even need to go that deep, as pretty much any electric motor can be specified with good accuracy using just Kv, R and Iidle.
    And instead of going into differential equations, the cross-dependent parameters can be calculated in iterative manner with fine enough time slice. Thus trading little bit of precision toward simplicity.
    U and I need to be abstracted though as [if I understand it right], existing battery model doesn't support them individually, only total power.

    1.1 years ago
  • Profile image
    2,237 TomKerbal

    @mundindel
    "RPM = Kv * ( V - R * ( Iload + Iidle))
    Iload = L(RPM) / Kt, where L(RPM) is clamped at Tmax = ( V / R - Iidle) * Kt for passive load since Kt = 1 / Kv, thus RPM = Kv * ( V - R * ( Kv * L(RPM) + Iidle )) and Tmax = ( V / R - Iidle ) / Kv"
    => From the ideal motor equations I wrote you can even calculate that Kv and Kt constants:
    I = c1T + c2U
    w = k1U-k2T
    (I: motor current, T: motor torque, U: terminal voltage, not V since this is the SI unit for voltage)
    c1= 1 / ( (1+r*R/PHI^2) ) / PHI) and so on.
    r: linear friction coefficient.
    The equations for I(U,T)),w(U,T); I(U,w),T(U,w); T(U,I),w(U,I); U(I,T), w(I,T); U(I,w),T(I,w) and U(T,w),I(T,w) can be calculated from the diff.equations I wrote before relatively easily.

    @Pedro So what I want to say: One can model the electric motor using this differential equations leading to a very realistic motor behavior in a very efficient way ( I made some Matlab Simulink models with it, working pretty well).

    Sorry for bad formatting. We could better use LATEX here :)

    1.1 years ago
  • Profile image
    134 mundindel

    @TomKerbal Imagine modern EVs designed with this physics in place - you would only be able to run to the nearest grocery store off 100 KWh battery 😆
    Vizzy won't fix it as the issue is underlaying. At some point I was thinking about just designing an electric motor mod with correct physics myself, but it seems it will take me longer to get practical with dev tools than coding the equations themselves. Besides, if I understand it right, the mod won't be usable in career mode anyway, and sharing craft designs based on it will be complicated. So not worth it.

    +1 1.1 years ago
  • Profile image
    2,237 TomKerbal

    @Pedro @mundindel Perhaps the rpm limiter is modelled as a brake, then this could happen. But as mundinel says, that's not realisitc, since the motor controler controls the motor speed. But one can perhaps write a nice Vizzy program to control the motor... that would be fun as well.

    1.1 years ago
  • Profile image
    134 mundindel

    @Pedro @TomKerbal Please don't focus on a design as it's a test case specifically for the purpose of demonstrating a major physics issue: this prop would consume well less than 100 W, so where remaining ~6.9 MW go ? In real world, even if such sort of an experiment was possible, the excessive power would dissipate as a heat. Now imagine ~7MW heater in size of industrial motor. And this is only one of many fundamental issues the current electric motor model has.
    How did you guys program governor and RPM limiter ? In real life, governor is a closed control loop over throttle. Which means it lowers power at lower RPM settings. In existing implementation the limiter magically slows the motor down while somehow pushing full-throttle / full-load power.
    Anyway. Electric drive is a well studied topic. There is unlimited amount of information available, every piece of which proves that existing implementation is totally wrong. I'm open to helping with bringing it into order, but honestly, not interested in arguing any further.

    1.1 years ago
  • Profile image
    2,237 TomKerbal

    @Pedro Well yes, bad design, but a free running motor (without load) even this size normally does not consume 7MW Pedro. Never :)

    1.1 years ago
  • Profile image
    Dev Pedro

    @TomKerbal "7MW is really a lot" because they used an industrial size motor to run a fan. That proof was just unreasonable, the problem is a bad craft design in that example, not a bug. I'd rather make the motor get hot than work at ridiculously low torques for its size personally

    1.1 years ago
  • Profile image
    2,237 TomKerbal

    @Pedro @mundindel Well, you are right in principle, but under certain conditions (motor blocked) motor can consume a huge amount of electric current (pure ohmic behavior then, I = U / R) with hundreds or thousend of Ampere (destroying the motor and electrics of course, without fuse). With U = 600V (commonly used in electic vehicles) and 1000A you got 0.6 MW ... o.k. 7MW is really a lot.
    For me this is a (physical) bug, too, but I can fully understand Pedro why he would not like to touch this topic.

    Btw: Nice tiny propeller in you picture :-D

    1.1 years ago
  • Profile image
    134 mundindel

    @Pedro please take a look
    Spinning a ceiling-fan-sized prop at 50 RPM while consuming 7 MegaWatt is breaking the very basic energy conservation law by a huge margin.
    I would still say it's a bug.
    Let me know if you need any more tests or data to prioritize this.

    1.1 years ago
  • Profile image
    Dev Pedro

    @mundindel this is not in our list of priorities and it doesn't belong in the bug reports, you should post a suggestion instead

    1.1 years ago
  • Profile image
    2,237 TomKerbal

    @mundindel Nice :-)
    I think @Pedro will re-analyze Juno's motor modeling (he did this successfully for Fuel Cells, which I appreciated).The problem is that if they change too much there, the behavior of the user crafts will change. This is always a big problem. Hopefully we can show that the current Juno modeling of electric motors is already not so bad :)

    1.1 years ago
  • Profile image
    134 mundindel

    @TomKerbal appreciate your input !
    I've corrected the links in my 3rd reply, and one of them is a load curve you're talking about. But this is even better one, all interactive (for motor alone, set reduction ratio to 1 and gearhead efficiency to 100%)
    And I've corrected Kt application too.
    I used to rewind RC motors to fit exact specs, and would run MotoCalc and eCalc for static performance analysis. So I guess we're on the same page.
    What you're suggesting is a level 3 improvement, while we're still at level 0 with current implementation. Of course would be great to jump straight to full equations, but for "good enough" quality, this would be enough I think:
    RPM = Kv * ( V - R * ( Iload + Iidle))
    Iload = L(RPM) / Kt, where L(RPM) is clamped at Tmax = ( V / R - Iidle) * Kt for passive load
    since Kt = 1 / Kv,
    thus RPM = Kv * ( V - R * ( Kv * L(RPM) + Iidle )) and Tmax = ( V / R - Iidle ) / Kv
    R is internal resistance, Iidle is a current at no load, both are products of a motor size parameter, can be hidden. Kv should be directly adjustable.

    +1 1.1 years ago
  • Profile image
    2,237 TomKerbal

    @mundindel I think you are right in principle, but :
    RPM = V * Kv and I = L * Kt is a simplification for motors in their optimal operation condition ( design range). Surely a motor under load with decrease its speed if the clamp voltage is not increased (that means: RPM = V * Kv is not exact).

    In engineering normally characteristic maps are used.
    For an ideal motor one can find analytic solutions with this two coupled basic differential equations (SI units) :
    I. TM = -r * w + PHI * I - TL
    II. U_C = R * I + PHI * w
    (for stationary condition)

    TM : Torque of motor
    r : friction coefficient
    w : rotational speed
    PHI : magnetic flux constant
    T
    L : load torque
    U_C : clamp voltage
    R : Ohmic resistance
    I : current

    A motor with very little load should indead behave like RPM = V * Kv and with a small power load depending on internal friction and losses induced by the motor controller.

    If you are doing RC you probably know how hot bad conditioned brushless DC motors can become if the gearbox ratio is not choosen well e.g. :-)

    1.1 years ago
  • Profile image
    134 mundindel

    @Pedro Are you guys going to work on this ?

    1.2 years ago
  • Profile image
    134 mundindel

    Nope.
    When you apply voltage, the motor tries to reach RPM = V * Kv. When external load is applied, it starts pulling current I = L / Kt. This means, spinning with no load should result in close-to-zero power consumption no matter RPM or throttle.
    Kv is [radian/sec per volt] constant, Kt is [ampere per N/m], the relationship is Kt = 1 / Kv. Both are motor design parameters, hence should be adjustable to fit application.

    Here's the quick explanation of Kv and Kt

    This is more about load curve

    1.2 years ago
  • Profile image
    Dev Pedro

    You provide a voltage to the motor, if it exceeds the necessary, it is wasted power, so you have to balance both the power and throttle carefully.

    If you set the motor to have a governor, the throttle will define the target RPM (throttle * max RPM).

    1.2 years ago

No Upvotes

Log in in to upvote this post.