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: Motor is not rotating with lesser PWM command

Part Number: MCF8316A


Dear Team,

We made a motor driver board after evaluating the motor in MCF8316A EVM board.

{
  "signature": "oneui-register-data",
  "data": [
    [
      {
        "idx": 0,
        "id": "isd_config",
        "value": "0x44638C20"
      },
      {
        "idx": 1,
        "id": "rev_drive_config",
        "value": "0x283AF064"
      },
      {
        "idx": 2,
        "id": "motor_startup1",
        "value": "0x0B6807D0"
      },
      {
        "idx": 3,
        "id": "motor_startup2",
        "value": "0x23066000"
      },
      {
        "idx": 4,
        "id": "closed_loop1",
        "value": "0x0C3181B8"
      },
      {
        "idx": 5,
        "id": "closed_loop2",
        "value": "0x1AAD9819"
      },
      {
        "idx": 6,
        "id": "closed_loop3",
        "value": "0x2A800000"
      },
      {
        "idx": 7,
        "id": "closed_loop4",
        "value": "0x32CC8642"
      },
      {
        "idx": 8,
        "id": "speed_profiles1",
        "value": "0x00000000"
      },
      {
        "idx": 9,
        "id": "speed_profiles2",
        "value": "0x00000000"
      },
      {
        "idx": 10,
        "id": "speed_profiles3",
        "value": "0x00000000"
      },
      {
        "idx": 11,
        "id": "speed_profiles4",
        "value": "0x00000000"
      },
      {
        "idx": 12,
        "id": "speed_profiles5",
        "value": "0x00000000"
      },
      {
        "idx": 13,
        "id": "speed_profiles6",
        "value": "0x00000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "fault_config1",
        "value": "0x2FE80206"
      },
      {
        "idx": 1,
        "id": "fault_config2",
        "value": "0x74000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "pin_config",
        "value": "0x00000001"
      },
      {
        "idx": 1,
        "id": "device_config1",
        "value": "0x00100000"
      },
      {
        "idx": 2,
        "id": "device_config2",
        "value": "0x0000B000"
      },
      {
        "idx": 3,
        "id": "peri_config1",
        "value": "0x41A00000"
      },
      {
        "idx": 4,
        "id": "gd_config1",
        "value": "0x00010100"
      },
      {
        "idx": 5,
        "id": "gd_config2",
        "value": "0x00200000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "ana_trim3",
        "value": "0x48004800"
      },
      {
        "idx": 1,
        "id": "ana_trim4",
        "value": "0x00000000"
      },
      {
        "idx": 2,
        "id": "ana_trim5",
        "value": "0x800003F2"
      },
      {
        "idx": 3,
        "id": "ana_trim6",
        "value": "0x00000000"
      },
      {
        "idx": 4,
        "id": "ana_trim7",
        "value": "0x00000000"
      },
      {
        "idx": 5,
        "id": "ana_trim8",
        "value": "0x00005851"
      },
      {
        "idx": 6,
        "id": "ana_trim9",
        "value": "0x0075775D"
      },
      {
        "idx": 7,
        "id": "ana_trim10",
        "value": "0xD3740038"
      }
    ],
    [
      {
        "idx": 0,
        "id": "int_algo_1",
        "value": "0x00B3407D"
      },
      {
        "idx": 1,
        "id": "int_algo_2",
        "value": "0x000001A7"
      }
    ],
    [
      {
        "idx": 0,
        "id": "gate_driver_fault_status",
        "value": "0x00000000"
      },
      {
        "idx": 1,
        "id": "controller_fault_status",
        "value": "0x00000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "algo_status",
        "value": "0x00000000"
      },
      {
        "idx": 1,
        "id": "mtr_params",
        "value": "0x00000000"
      },
      {
        "idx": 2,
        "id": "algo_status_mpet",
        "value": "0x0A000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "dev_ctrl",
        "value": "0x00000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "algo_ctrl1",
        "value": "0x00000000"
      },
      {
        "idx": 1,
        "id": "algo_ctrl2",
        "value": "0x00000000"
      },
      {
        "idx": 2,
        "id": "current_pi",
        "value": "0x0004D21F"
      },
      {
        "idx": 3,
        "id": "speed_pi",
        "value": "0x00000000"
      },
      {
        "idx": 4,
        "id": "dac_1",
        "value": "0x00000000"
      },
      {
        "idx": 5,
        "id": "dac_2",
        "value": "0x00000000"
      }
    ],
    [
      {
        "idx": 0,
        "id": "algorithm_state",
        "value": "0x00000000"
      },
      {
        "idx": 1,
        "id": "fg_speed_fdbk",
        "value": "0x7FFFFFFF"
      },
      {
        "idx": 2,
        "id": "bus_current",
        "value": "0x00000000"
      },
      {
        "idx": 3,
        "id": "phase_current_a",
        "value": "0x00000000"
      },
      {
        "idx": 4,
        "id": "phase_current_b",
        "value": "0x00000000"
      },
      {
        "idx": 5,
        "id": "phase_current_c",
        "value": "0x00000000"
      },
      {
        "idx": 6,
        "id": "csa_gain_feedback",
        "value": "0x00010003"
      },
      {
        "idx": 7,
        "id": "voltage_gain_feedback",
        "value": "0x00000001"
      },
      {
        "idx": 8,
        "id": "vm_voltage",
        "value": "0x03418000"
      },
      {
        "idx": 9,
        "id": "phase_voltage_va",
        "value": "0x00000000"
      },
      {
        "idx": 10,
        "id": "phase_voltage_vb",
        "value": "0x00000000"
      },
      {
        "idx": 11,
        "id": "phase_voltage_vc",
        "value": "0x00000000"
      },
      {
        "idx": 12,
        "id": "sin_commutation_angle",
        "value": "0x00000000"
      },
      {
        "idx": 13,
        "id": "cos_commutation_angle",
        "value": "0x00000000"
      },
      {
        "idx": 14,
        "id": "ialpha",
        "value": "0x00000000"
      },
      {
        "idx": 15,
        "id": "ibeta",
        "value": "0x00000000"
      },
      {
        "idx": 16,
        "id": "valpha",
        "value": "0x00000000"
      },
      {
        "idx": 17,
        "id": "vbeta",
        "value": "0x00000000"
      },
      {
        "idx": 18,
        "id": "id",
        "value": "0x00000000"
      },
      {
        "idx": 19,
        "id": "iq",
        "value": "0x00000000"
      },
      {
        "idx": 20,
        "id": "vd",
        "value": "0x00000000"
      },
      {
        "idx": 21,
        "id": "vq",
        "value": "0x00000000"
      },
      {
        "idx": 22,
        "id": "iq_ref_rotor_align",
        "value": "0x00000000"
      },
      {
        "idx": 23,
        "id": "speed_ref_open_loop",
        "value": "0x00000000"
      },
      {
        "idx": 24,
        "id": "iq_ref_open_loop",
        "value": "0x00000000"
      },
      {
        "idx": 25,
        "id": "speed_ref_closed_loop",
        "value": "0x00000000"
      },
      {
        "idx": 26,
        "id": "id_ref_closed_loop",
        "value": "0x00000000"
      },
      {
        "idx": 27,
        "id": "iq_ref_closed_loop",
        "value": "0x00000000"
      },
      {
        "idx": 28,
        "id": "isd_state",
        "value": "0x00000000"
      },
      {
        "idx": 29,
        "id": "isd_speed",
        "value": "0x00000000"
      },
      {
        "idx": 30,
        "id": "ipd_state",
        "value": "0x00000000"
      },
      {
        "idx": 31,
        "id": "ipd_angle",
        "value": "0x00000000"
      },
      {
        "idx": 32,
        "id": "ed",
        "value": "0x00000000"
      },
      {
        "idx": 33,
        "id": "eq",
        "value": "0x00000000"
      },
      {
        "idx": 34,
        "id": "speed_fdbk",
        "value": "0x00000000"
      },
      {
        "idx": 35,
        "id": "theta_est",
        "value": "0x00000000"
      }
    ]
  ]
}

Register files are attached for your reference. The motor is not running with lesser duty cycle but rotates with 80% duty cycle.

 at 80% input.

  at 30% input.

Any idea why the motor is stuck at ISD state?

Thanks and Regards,

Sujeesh V

  • Hi Sujeesh,

    Do you observe any fault status if you read the fault registers?

    Could you please try making sure the motor is stationary before applying 30% speed command?

    Also, what happens if you spin the motor at 80% then change the speed command to 30%?

    Regards,
    Eric C.

  • Hi Eric,

    No fault status has been triggered during the testing. We have connected LEDs for both nFAULT & ALARM, nothing was glowing during the testing.

    30% command was given after the power on of the setup and then followed by 80% command.

    Once the motor starts rotating, it consumes around 0.29A, even after reducing the duty cycle the motor continue to consume same current. The motor stops once the duty cycle is 0.

    Regards,

    Sujeesh

  • Hi Eric,

    Today, I started again to follow the MCF8316A setup procedure. The problem still persist after the initial setup.

    When I give 50% command the current increases to 0.3A and then it settles to 0.028A (Idle situation).

    Once the motor starts with 80% command, it is responding to lower command properly.

    But the motor is not running if I give lower duty cycle command.

    Regards,

    Sujeesh

  • Hi Sujeesh,

    • Could you please help provide the specification for the motor?
      • Pole #
      • Max Speed RPM
      • Peak phase current @ max speed
    • I understand that you had successfully configured and spun up a motor previously using the MCF8316AEVM. Is this a new motor that you're seeing this issue? if so, how are the motors different?
    • In the register settings you provided, were the motor parameters and Kp + Ki obtained using the device's MPET algorithm?
    • If possible, could you please provide scope capture of the phase current waveform after setting speed command to 80% and to 50%.

    Also, I'd like to point out an errata on the MCF8316A:

    • While the algorithm is NOT in idle, e.g. motor is spinning, sending any I2C read or write commands to the MCF8316A may cause the control algorithm to get stuck, requiring power-cycle to reset.
    • I recommend disabling the GUI's Auto Read toggle buttons when spinning up the motor. Then only briefly enable and disable the auto read button to update the device status or fault status when needed.

    Regards,
    Eric C.

  • Hi Eric,

    Motor details are as follows,

    • Poles : 1 pair
    • No Load Speed RPM : 20300
    • No Load current : 139mA
    • Max speed at given load : 16398 RPM
    • Max continuous current : 1.59A

    It's the same motor which I evaluated in the EVM is used to test the new board.

    I'm not pretty sure about the Kp & Ki in the register, mostly it is from the MOET algorithm as we didn't wanted to tune the motor further using the EVM.

    I'll share the phase current waveform once I capture the same. Do you want the data while the motor runs or just after the 80% and 50% command given?

    I'm aware about the errata. All the Auto read options are disabled and the data is only captured by using "Read All Registers"

    Regards,

    Sujeesh

  • Hi Sujeesh,

    Thanks for providing the details regarding your motor. Just to confirm, are you able to spin the same motor consistently at lower speed command using the same register settings on an EVM?

    If you provide a lower speed command (e.g. 50%) when the motor is stationary, does the device always become stuck in ISD?

    I'm interested in seeing the entire current waveform for the following:

    1. motor is stationary -> provide 80% speed command -> motor spins in closed loop
    2. motor is stationary -> provide 50% speed command -> device becomes stuck in ISD

    Thanks,
    Eric C.

  • Hi Eric,

    Sorry I couldn't get a current probe for my oscilloscope to measure the phase current.

    I haven't tried it again in the EVM, but the register settings were saved after completing all the sufficient test cases.

    Thanks,

    Sujeesh

  • Hi Sujeesh,

    As discussed offline, we will review your schematic and provide feedback next week.

    If possible, please do try with the EVM again on the same exact motor to isolate the problem to your custom PCB.

    Thanks,
    Eric C.