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.

MCF8316AEVM: Handoff from open to close loop not working

Part Number: MCF8316AEVM
Other Parts Discussed in Thread: MCT8315EVM, MCF8315EVM

Tool/software:

I am working with a custom with the following specifications:

  • 4 poles
  • Resistance: 3.4 Ohms
  • Inductance: 40 uH
  • BEMF Constant: 10 mV/Hz
  • Rated current: 500 mA
  • Max RPM: 30k (1kHz)
  • VM voltage 14V

The speed loop constants are unknown, and the motor comes with a load that I cannot remove for testing. I am currently using these values:

  • Kp: 2
  • Ki: 0.01

It starts with IPD and Slow Cycle, and not with align or double align. 

With the present configuration (attached) it starts to spin and goes to open loop, then it ramps up the speed until it tries to get to close loop but always fails and stops spinning. Also, while it is in open loop it draws the maximum current according to the settings. Neither it seems like it is running smoothly in that mode, it's quite noisy.  

I've tried with Enable Auto Handoff and without it, with different Minimum BEMF, with similar results. I've also disabled ABN_BEMF fault, which was activated each time it moved to closed loop. MPET has not worked. The same motor runs perfectly with MCT8315EVM.

{
"signature":"oneui-register-data",
"data":[
[
{
"idx":0,
"id":"ISD_CONFIG",
"value":"0x44E38CA0",
"addr":"0x00000080"
},
{
"idx":1,
"id":"REV_DRIVE_CONFIG",
"value":"0x283AF064",
"addr":"0x00000082"
},
{
"idx":2,
"id":"MOTOR_STARTUP1",
"value":"0x4B6941D0",
"addr":"0x00000084"
},
{
"idx":3,
"id":"MOTOR_STARTUP2",
"value":"0x11866002",
"addr":"0x00000086"
},
{
"idx":4,
"id":"CLOSED_LOOP1",
"value":"0x070381B0",
"addr":"0x00000088"
},
{
"idx":5,
"id":"CLOSED_LOOP2",
"value":"0x1AADCB19",
"addr":"0x0000008A"
},
{
"idx":6,
"id":"CLOSED_LOOP3",
"value":"0x1BA82B21",
"addr":"0x0000008C"
},
{
"idx":7,
"id":"CLOSED_LOOP4",
"value":"0x48D91770",
"addr":"0x0000008E"
},
{
"idx":8,
"id":"SPEED_PROFILES1",
"value":"0x00000000",
"addr":"0x00000094"
},
{
"idx":9,
"id":"SPEED_PROFILES2",
"value":"0x00000000",
"addr":"0x00000096"
},
{
"idx":10,
"id":"SPEED_PROFILES3",
"value":"0x00000000",
"addr":"0x00000098"
},
{
"idx":11,
"id":"SPEED_PROFILES4",
"value":"0x00000000",
"addr":"0x0000009A"
},
{
"idx":12,
"id":"SPEED_PROFILES5",
"value":"0x00000000",
"addr":"0x0000009C"
},
{
"idx":13,
"id":"SPEED_PROFILES6",
"value":"0x00000000",
"addr":"0x0000009E"
}
],
[
{
"idx":0,
"id":"FAULT_CONFIG1",
"value":"0x17E80206",
"addr":"0x00000090"
},
{
"idx":1,
"id":"FAULT_CONFIG2",
"value":"0x54C00000",
"addr":"0x00000092"
}
],
[
{
"idx":0,
"id":"INT_ALGO_1",
"value":"0x0275687D",
"addr":"0x000000A0"
},
{
"idx":1,
"id":"INT_ALGO_2",
"value":"0x00000027",
"addr":"0x000000A2"
}
],
[
{
"idx":0,
"id":"PIN_CONFIG",
"value":"0x00000000",
"addr":"0x000000A4"
},
{
"idx":1,
"id":"DEVICE_CONFIG1",
"value":"0x00000000",
"addr":"0x000000A6"
},
{
"idx":2,
"id":"DEVICE_CONFIG2",
"value":"0x0000B000",
"addr":"0x000000A8"
},
{
"idx":3,
"id":"PERI_CONFIG1",
"value":"0x40000000",
"addr":"0x000000AA"
},
{
"idx":4,
"id":"GD_CONFIG1",
"value":"0x0C000100",
"addr":"0x000000AC"
},
{
"idx":5,
"id":"GD_CONFIG2",
"value":"0x00200000",
"addr":"0x000000AE"
}
],
[
{
"idx":0,
"id":"GATE_DRIVER_FAULT_STATUS",
"value":"0x00000000",
"addr":"0x000000E0"
},
{
"idx":1,
"id":"CONTROLLER_FAULT_STATUS",
"value":"0x00000000",
"addr":"0x000000E2"
}
],
[
{
"idx":0,
"id":"ALGO_STATUS",
"value":"0x00000000",
"addr":"0x000000E4"
},
{
"idx":1,
"id":"MTR_PARAMS",
"value":"0x00000000",
"addr":"0x000000E6"
},
{
"idx":2,
"id":"ALGO_STATUS_MPET",
"value":"0x0A000000",
"addr":"0x000000E8"
}
],
[
{
"idx":0,
"id":"ALGO_CTRL1",
"value":"0xAA500000",
"addr":"0x000000EA"
}
],
[
{
"idx":0,
"id":"ALGO_DEBUG1",
"value":"0x80000000",
"addr":"0x000000EC"
},
{
"idx":1,
"id":"ALGO_DEBUG2",
"value":"0x00000000",
"addr":"0x000000EE"
},
{
"idx":2,
"id":"CURRENT_PI",
"value":"0x000C130E",
"addr":"0x000000F0"
},
{
"idx":3,
"id":"SPEED_PI",
"value":"0x00000000",
"addr":"0x000000F2"
},
{
"idx":4,
"id":"DAC_1",
"value":"0x00000000",
"addr":"0x000000F4"
},
{
"idx":5,
"id":"DAC_2",
"value":"0x00000000",
"addr":"0x000000F6"
}
],
[
{
"idx":0,
"id":"ALGORITHM_STATE",
"value":"0x00000000",
"addr":"0x00000210"
},
{
"idx":1,
"id":"FG_SPEED_FDBK",
"value":"0x7FFFFFFF",
"addr":"0x00000216"
},
{
"idx":2,
"id":"BUS_CURRENT",
"value":"0x00000000",
"addr":"0x00000410"
},
{
"idx":3,
"id":"PHASE_CURRENT_A",
"value":"0x00000000",
"addr":"0x0000043E"
},
{
"idx":4,
"id":"PHASE_CURRENT_B",
"value":"0x00000000",
"addr":"0x00000440"
},
{
"idx":5,
"id":"PHASE_CURRENT_C",
"value":"0x00000000",
"addr":"0x00000442"
},
{
"idx":6,
"id":"CSA_GAIN_FEEDBACK",
"value":"0x00010000",
"addr":"0x00000466"
},
{
"idx":7,
"id":"VOLTAGE_GAIN_FEEDBACK",
"value":"0x00000002",
"addr":"0x00000476"
},
{
"idx":8,
"id":"VM_VOLTAGE",
"value":"0x01E60000",
"addr":"0x0000047A"
},
{
"idx":9,
"id":"PHASE_VOLTAGE_VA",
"value":"0x0000376C",
"addr":"0x0000047E"
},
{
"idx":10,
"id":"PHASE_VOLTAGE_VB",
"value":"0x0000376C",
"addr":"0x00000480"
},
{
"idx":11,
"id":"PHASE_VOLTAGE_VC",
"value":"0x0000A646",
"addr":"0x00000482"
},
{
"idx":12,
"id":"SIN_COMMUTATION_ANGLE",
"value":"0x00000000",
"addr":"0x000004BA"
},
{
"idx":13,
"id":"COS_COMMUTATION_ANGLE",
"value":"0x00000000",
"addr":"0x000004BC"
},
{
"idx":14,
"id":"IALPHA",
"value":"0x00000000",
"addr":"0x000004D4"
},
{
"idx":15,
"id":"IBETA",
"value":"0x00000000",
"addr":"0x000004D6"
},
{
"idx":16,
"id":"VALPHA",
"value":"0x00000000",
"addr":"0x000004D8"
},
{
"idx":17,
"id":"VBETA",
"value":"0x00000000",
"addr":"0x000004DA"
},
{
"idx":18,
"id":"ID",
"value":"0x00000000",
"addr":"0x000004E4"
},
{
"idx":19,
"id":"IQ",
"value":"0x00000000",
"addr":"0x000004E6"
},
{
"idx":20,
"id":"VD",
"value":"0x00000000",
"addr":"0x000004E8"
},
{
"idx":21,
"id":"VQ",
"value":"0x00000000",
"addr":"0x000004EA"
},
{
"idx":22,
"id":"IQ_REF_ROTOR_ALIGN",
"value":"0x00000000",
"addr":"0x00000524"
},
{
"idx":23,
"id":"SPEED_REF_OPEN_LOOP",
"value":"0x00000000",
"addr":"0x0000053A"
},
{
"idx":24,
"id":"IQ_REF_OPEN_LOOP",
"value":"0x00000000",
"addr":"0x00000548"
},
{
"idx":25,
"id":"SPEED_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x000005CC"
},
{
"idx":26,
"id":"ID_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x000005FC"
},
{
"idx":27,
"id":"IQ_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x000005FE"
},
{
"idx":28,
"id":"ISD_STATE",
"value":"0x00000005",
"addr":"0x0000067A"
},
{
"idx":29,
"id":"ISD_SPEED",
"value":"0x5D7D3FEA",
"addr":"0x00000684"
},
{
"idx":30,
"id":"IPD_STATE",
"value":"0x0005000C",
"addr":"0x000006B8"
},
{
"idx":31,
"id":"IPD_ANGLE",
"value":"0x00000000",
"addr":"0x000006FC"
},
{
"idx":32,
"id":"ED",
"value":"0xFFFFF99B",
"addr":"0x00000742"
},
{
"idx":33,
"id":"EQ",
"value":"0xFFFFF45E",
"addr":"0x00000744"
},
{
"idx":34,
"id":"SPEED_FDBK",
"value":"0x00000000",
"addr":"0x00000752"
},
{
"idx":35,
"id":"THETA_EST",
"value":"0x2AAAAC80",
"addr":"0x00000756"
}
]
]
}

  • Hi Nicolás,

    1. Try enabling IQ ramp down. This setting will help to ramp down the phase current during the handoff period which can make it more successful.
    2. Try Increasing the ABNORMAL_BEMF_THR to 80% to give the BEMF the most room for variation
    3. In the MPET page on Motor Studio please disable "MPET IPD Parameter select" and "MPET open loop parameter resistance"
      1. Only enable Measure Motor Resistance and Inductance and click Run MPET, the motor should not move and MPET will measure the motors resistance and inductance.
      2. Next, enable Measure Motor Mechanical Parameter and and click Run MPET, the motor should start spinning in open loop and into closed loop and measure the speed loop Kp and Ki.
      3. If MPET finishes a measurement and the MPET results does not update, go to the Register Map page and select Read All.

    Regards,

    Joshua

  • Hi Joshua, 

    Thanks for your answer. After looking at the values available for the MCF8316 registers and realizing they were not suitable for a low current motor (<1A) I moved to the MCF8315EVM, and it worked right away. I am still working on the optimization of the parameters and have some questions, I will create a new post for that.

    Thanks, 

    Nicolás