This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Position estimation in motor + gear

Dear Sir / Madam

I am working on a steer by wire system. This system is composed of a motor with a gear that moves the wheel. The motor is controlled  with InstaSpin FOC (Sensorless speed control). The position of the wheel is measured with an absolute + incremental encoder. A position loop has been implemented in the microcontroller (the loop is closed with the encoder) and it generates a speed reference for the InstaSpin speed control. This encoder can not be used for the motor control (since there are some elastic elements, tolerances,...  the wheel position should not be directly derived from motor position ) it just gives information about the wheel position

The steering is a critical system so safety functions and redundancies should be applied in order to achieve the necessary ASIL level. I would like to use the estimated angle as a secondary wheel position sensor. Wheel position should not be directly derived from motor position for normal position control, but it could be OK in case of failure (primary sensor failure). Is there any accesible variable or function with this mechanical position information (like Pos_mrev in lab12a)? I have seen that there is a function called EST_getAngle_pu, but I don' t really know if this is really what I need.

Thank you in advance,

Borja

  • the FAST estimator can only give an electrical angle. To be able to relate this to mechanical you would have to create an offset when the electrical is at a known zero. An alignment phase. And then keep track of the electrical roll over to mechanical conversion, This is done in InstaSPIN-MOTION labs 12 and 13.

    be aware that FAST can not provide an accurate electrical angle at very low speeds, so actually doing position control will not be possible. You will basically need to ignore FAST when at zero / low speed.
  • Hi Chirs,

    when you say "be aware that FAST can not provide an accurate electrical angle at very low speeds, so actually doing position control will not be possible. You will basically need to ignore FAST when at zero / low speed",
    you mean that, in case of not apply any torque to the motor, It’s not possible to get the position. For example, what about if the motor is without torque and I move the motor by hand? Could FAST get the position?
    I ask this question so I have some problems in this situation, because the rotor flux estimator (angle_pu = EST_getAngle_pu(obj->estHandle);) returns random values (for sure with a small range) and my “virtual “ encoder counts so this is taking this changes into consideration.

    Thank you in advance.
    e
  • FAST can not work at zero and very low speeds. It's estimates are gibberish. In fact, it's flux estimate is "frozen" under these conditions. It requires some Bemf being generated to start producing estimates, and there is a minimum frequency for reasonable estimation and then a higher frequency for accurate estimation.

    and FAST never produces a mechanical position. it produces an electrical rotor flux angle (relative to the D-axis of the stator flux).