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.

MCF8316A: Can't get the motor running using I2C speed control.

Part Number: MCF8316A

Hello,

I'm using the MCF8316A on our own hardware to drive the UTS-19-A-30-A-N-000 motor from celeramotion.

I'm trying for some time now but can't get the motor to rotate continuously, I think the MCF8316A is stuck in the MPET routine, even when I configure the motor driver with MOTOR_RES, MOTOR_IND and MOTOR_BEMF_CONST. I also followed the steps described in the tuning guide SLLU335A chapter 3.6.2 without success.

I want to control the motor via the I2c interface. As soon as something is written to DIGITAL_SPEED_CTRL in ALGO_CTRL1, the motor turns about 90 degrees in about half a second and then stops. I measure 50% PWM on all motor phases. ALGORITHM_STATE in register 0x210 is set to 0x14.

After a few minutes a fault is set, register 0xE2 is set to 0x8100000 (MPET_BEMF_FAULT) and a MOTOR_MPET_FAULT is set in register 0x210.

I also couldn't find out what the unit of the DIGITAL_SPEED_CTRL is?

BR

Nicolas

  • Hi Nicolas,

    It looks like MPET is failing to complete the KE measurement step. Just to clarify how MPET works on this device, in addition to motor resistance, inductance, and BEMF constant (Ke), the device also requires the SPD_LOOP_KP and SPD_LOOP_KI to be non-zero values. Otherwise, when you input a speed command (using [DIGITAL_SPEED_CTRL]), MPET will run automatically when any one of these 5 parameters is zero.

    MPET has 2 distinct steps:

    1. First is the MOTOR_MPET_RL_MEASURE, where it measures R and L
    2. Second is MOTOR_MPET_KE_MEASURE when it measures Ke, speed loop KP, and speed loop KI.

    During the MOTOR_MPET_KE_MEASURE, the device spins up the motor in open loop until a speed threshold then measures the 3 parameters. One reason that MPET KE measurement may be failing to spin up the motor can be due to MPET configuration. From your description, the motor turns a little for a split second then stops. This is likely due to insufficient current or too high of acceleration, leading to motor losing sync. Before you set the [DIGITAL_SPEED_CTRL], you can try setting a higher [MPET_OPEN_LOOP_CURRENT_REF] or setting a lower [MPET_OPEN_LOOP_SLEW_RATE], then try running MPET again. (Also, ensure that the [MPET_KE_MEAS_PARAMETER_SELECT] bit is set to 1 so that MPET will use the above configs instead of the normal open loop settings).

    Another thing to check is whether R, L, and BEMF constant values are entered correctly. The MCF8316A expects the phase-to-centertap values instead of phase-to-phase values. Please refer to this E2E FAQ for more details and instructions on how to hand measure these parameters if needed.

    Regards,
    Eric C.

  • Hi Eric,

    thanks for your reply.

    I got the motor driver running now. The problem was that i set a current reference which was too high and impossible to reach because of the motor resistance and the supply voltage.

    BR

    Nicolas