I am controlling the quadrature current (Iq) of this BLDC using the TMC4671 FOC controller. The FOC control seems to work fine, but the end goal is to control the real torque produced by the motor. I tried to simply multiply the target torque by the inverse of the motor torque constant but that does not seem to be the right way. Is there a generic formula for torque to Iq conversion for BLDC motors?

EDIT: the motor I'm using is the ref. 200142 (first column in the datasheet)


1 Answer 1


It sounds like your expectations are correct, and you did what I would have done. Just to be sure let me run through it.

25.5 mNm/A implies .0392 A per mNm. So if you want 10 mNm, you need to set Iq to 392 mA. Does that match what you tried so far?

In the FOC implementations I have seen, Iq is definitely proportional to torque. It is also equal to the peak phase current. I guess the question is, is the torque constant given in the motor datasheet based on peak phase current or something else?

There is also the possibility that the FOC block in the trinamic chip scales the current in some fashion so that the effective torque constant is different.

In any event, if the controller is otherwise doing a good job, I would not feel bad about determining the ratio of Iq to torque empirically (basically, determine your own torque constant empirically). If the relationship is not very linear between Iq and torque, that could indicate a problem of some sort.

The other thing to check is that your current sensor inputs to the controller are accurate.

As a final comment, since I don't know your experience level, in order for FOC to produce the desired torque at the desired speed, you have to be operating substantially below the no-load speed. The FOC controller cannot achieve the Iq setpoint if the speed is high-ish. Unless you enable field-weakening (set the Id current to some negative value).

  • \$\begingroup\$ Thank you for your answer. My way of estimating torque for a given Iq is basically to set a constant Iq target and measure the angular rate of the motor, and since the inertia of the rotor is known, I can calculate the angular momentum and differentiate it to get the torque. After some tests, the ratio between the target Iq and the estimated torque does not match the torque constant of the motor. You are right to point out that this torque constant might not be given based on the Iq current. I will try to find more information on that and let you know. \$\endgroup\$
    – Gab
    Commented Feb 5, 2023 at 21:33
  • \$\begingroup\$ If possible, it might be helpful to add a relatively large known external inertia to the motor. Then any error in the inertia of the rotor would be small compared to the total, and any effect from drag or friction would be less significant. \$\endgroup\$
    – user57037
    Commented Feb 6, 2023 at 2:42
  • 1
    \$\begingroup\$ Thank you, I will give it a try. In the meantime I asked Maxon's customer service about the torque constant given in the datasheet. They said it is applicable to the motor total current, which in the context of FOC is indeed equal to the Iq current (Id = 0) except the torque constant value is given for trapezoidal commutation, so for sine commutation one need to scale this constant by a factor of 0.9. \$\endgroup\$
    – Gab
    Commented Feb 6, 2023 at 15:49
  • \$\begingroup\$ I guess then my problem lies somewhere else, possibly in some scaling factors in the chip or bad calibration as you said. \$\endgroup\$
    – Gab
    Commented Feb 6, 2023 at 15:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.