MCT8315A: Motor Lock Caused by Failure of Open-loop to Closed-loop Conversion

Part Number: MCT8315A

Tool/software:

    See picture,this is Open-loop to Closed-loop Conversion oscilloscope waveform,my motor startup failure at this moment.

    I need some advice how to optimize this waveform,Make this electromagnetic Angle accurate.

This is my configuration parameter,Please check to see if there is any problem.

uint32_t prop_data[PROP_DATA_MAX]={
0x2C822180, //0x80
0x58C949C9, //0x82 
0x724DA83C, //0x84
0x114670C8, //0x86
0x438A0028, //0x88 
0x4CC40180, //0x8A
0x000008F9, //0x8C 
0x1F41F419, //0x8E 
0x0AF04C84, //0x90
0x78C24820, //0x92
0x79E80229, //0x94
0x36DB6DA6, //0x96
0x36DB6D80, //0x98
0x054BA106, //0x9A
0x12880000, //0x9C
0x00000000, //0x9E
0x00000000, //0xA0
0x00000000, //0xA2
0x00000004, //0xA4
0x000C0000, //0xA6
0x7FFF4800, //0xA8
0x00000000, //0xAA
0x1440180C, //0xAC
0x14000000}; //0xAE

  • Zachary,

    Let me assign this to the correct engineer, we will get back to you tomorrow.

    Regards,

    -Adam

  • We tried to adjust a number of parameter configurations,but have no effect,there will always be a state of lead or lag.

    If possible,please describe the algorithmic processing of this paragraph.

  • Hi Zachary,

    I made few edits just for testing. I don't have idea about the motor property which you are using.

    Motor properties like, current rating, inertia etc.

    I modified

    1. Slew rate in Gate driver from 50V/us to 200V / us, this will improve thermal as well as torque

    2. Startup to open loop settings - You had slow-first cycle (15Hz) right after IPD, I changed it to 0 Hz since we don't know about inertia of motor

    3. IPD frequency was 2000Hz, I reduced to 50Hz since we don't know about the electrical time constant of the motor, you can verify with oscilloscope if IPD pulses are clearly distinguished and not merging.

    4. Reduced PWM switching frequency from 40KHz to 20KHz, because we have not measured ringing duration, we need to adjust the delay for sampling based on the amount of time ringing seen during switching.

    Please verify this JSON (Copied down) and let me know. Also we please share motor details

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x2C822180"
          },
          {
            "idx": 1,
            "id": "motor_startup1",
            "value": "0x58C809D9"
          },
          {
            "idx": 2,
            "id": "motor_startup2",
            "value": "0x724DA87C"
          },
          {
            "idx": 3,
            "id": "closed_loop1",
            "value": "0x1145F0C8"
          },
          {
            "idx": 4,
            "id": "closed_loop2",
            "value": "0x438A0028"
          },
          {
            "idx": 5,
            "id": "closed_loop3",
            "value": "0x4CC40180"
          },
          {
            "idx": 6,
            "id": "closed_loop4",
            "value": "0x000008F9"
          },
          {
            "idx": 7,
            "id": "const_speed",
            "value": "0x1F41F418"
          },
          {
            "idx": 8,
            "id": "const_pwr",
            "value": "0x0AF00C84"
          },
          {
            "idx": 9,
            "id": "150_deg_two_ph_profile",
            "value": "0x36DB6DA6"
          },
          {
            "idx": 10,
            "id": "150_deg_three_ph_profile",
            "value": "0x36DB6D80"
          },
          {
            "idx": 11,
            "id": "trap_config1",
            "value": "0x054BA106"
          },
          {
            "idx": 12,
            "id": "trap_config2",
            "value": "0x12880000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x78C24820"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x79E80229"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gd_config1",
            "value": "0x1C40180C"
          },
          {
            "idx": 1,
            "id": "gd_config2",
            "value": "0x14000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config1",
            "value": "0x00000004"
          },
          {
            "idx": 1,
            "id": "pin_config2",
            "value": "0x000C0000"
          },
          {
            "idx": 2,
            "id": "device_config",
            "value": "0x7FFF4800"
          },
          {
            "idx": 3,
            "id": "peri_config",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x00000000"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x00000000"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x00000000"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_reserved1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_reserved2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_reserved3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "sys_status1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "sys_status2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "sys_status3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "device_ctrl",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000000"
          }
        ]
      ]
    }
    Thanks and Best Regards
    Venkatadri S
  • This is the configuration parameter you gave and does not solve the problem.

    Motor parameter Line resistance12.5Ω,Inductance 4.1mH.

    Our scenario is an underwater thruster with a relatively stable and low load.Therefore, we used the value above the rated current to drive the open loop drag, and each time it can be synchronized normally,it is meaningless to adjust the open-loop starting parameters and IPD, wel it will slow down our starting speed.

    We adjusted the Slew rate in Gate driver,No obvious effect.

    About the PWM switching frequency,We adjusted from 14Khz to 40Khz, which can significantly improve some startup success rates,However, it has the consequence of the minimum speed increase, and we look at the waveform and find that the commutation Angle has become posivite,But our LD_ANGLE_POLARITY configuration itself is negative 0x64, and if we increase it, it will crash.

    Our main problem is,How to make this electromagnetic Angle accurate.

  • Hi Venkatadri,

    There has recently been a new problem with the machine, where the speed loop suddenly stopped responding during operation, continuously outputting a constant duty cycle. I tried re-sending the speed command via I2C instructions, but it did not change the output. However, the speed and current feedback were able to be obtained normally, and were also normal values. When accessing the fault registers E0 and E2, I found that there was no feedback. The problem only resolved when I sent a zero speed braking command. I would like to know what bug has been triggered by this and if it has occurred before. Is there any solution?

  • Hi Zachary,

    I will verify this and get back to you.

    Regarding PWM frequency I prefer 20KHz instead of 14KHz.

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri,

    YES,We are now finally using 20 kHz.

  • Hi Zachary,

    Can you confirm again about the zero speed braking command. Did you send zero speed command over I2C or brake pin?

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri,

    Our brake pin hardware is always grounded.When the speed ring lost control problem occurs, it was determined that it returned to normal after sending the I2C zero speed command.

  • Hi Zachary,

    Thanks for clarification, we are looking into the details provided by you.

    I will respond by early next week.

    Thanks and Best Regards

    Venkatadri S