MCF8329EVM: MAX SPEED cannot be reached and SPEED/CURRENT LOOP SATURATION are reported

Part Number: MCF8329EVM

Tool/software:

Hi Support,

I'm tuning a BLDC motor using MCF8329EVM. The max speed in our application is about 250 Hz. But after running the motor with the configration attached below, the MAX speed can be reached  is about 150 Hz only (from SPEED_FDBK) with SPEED/CURRENT LOOP SATURATION flags set at the same time when hitting this MAX speed. 

I've seen another thread in which you said these flags are set when the modulation is full and more voltage is needed. As I increased the supply voltage, the speed indeed increased simultaneously, and finally reached the set MAX SPEED of 250Hz at over 22V (SPEED/CURRENT LOOP SATURATION also disappeared). But the supply voltage of our system is 12V, and we'd prefer not to add additional transformer. So are there any ways the achieve my target speed except increasing the voltage?

I've tried flux weakening function with different Kp/Ki, but the max speed only increased from 150hz to 160hz. The motor draws only 2.x A from the supply which is far below the ILIMIT (37.5 A * 60% = 22.5 A).

And here's the parameters of the motor:

Pole Pairs: 4

Max Speed: 6000 rpm

Rated Current: 100A Peak Max

Phase Res: 31.7 mOhm (manually measured)

Phase Ind: 56.65 uH (manually measured)

MOTOR_BEMF_CONST: 0x7b (from MPET, and current/speed loop kp/ki also from MPET)

{
"signature":"oneui-register-data",
"data":[
[
{
"idx":0,
"id":"ISD_CONFIG",
"value":"0xA0A0D4A1",
"addr":"0x00000080"
},
{
"idx":1,
"id":"REV_DRIVE_CONFIG",
"value":"0x48300000",
"addr":"0x00000082"
},
{
"idx":2,
"id":"MOTOR_STARTUP1",
"value":"0x26CC4CC4",
"addr":"0x00000084"
},
{
"idx":3,
"id":"MOTOR_STARTUP2",
"value":"0x9AAF2007",
"addr":"0x00000086"
},
{
"idx":4,
"id":"CLOSED_LOOP1",
"value":"0x127A013C",
"addr":"0x00000088"
},
{
"idx":5,
"id":"CLOSED_LOOP2",
"value":"0x8AAD1521",
"addr":"0x0000008A"
},
{
"idx":6,
"id":"CLOSED_LOOP3",
"value":"0x3DC690E9",
"addr":"0x0000008C"
},
{
"idx":7,
"id":"CLOSED_LOOP4",
"value":"0x096245DC",
"addr":"0x0000008E"
},
{
"idx":8,
"id":"REF_PROFILES1",
"value":"0x00000000",
"addr":"0x00000094"
},
{
"idx":9,
"id":"REF_PROFILES2",
"value":"0x00000000",
"addr":"0x00000096"
},
{
"idx":10,
"id":"REF_PROFILES3",
"value":"0x80000004",
"addr":"0x00000098"
},
{
"idx":11,
"id":"REF_PROFILES4",
"value":"0x00000000",
"addr":"0x0000009A"
},
{
"idx":12,
"id":"REF_PROFILES5",
"value":"0x00000000",
"addr":"0x0000009C"
},
{
"idx":13,
"id":"REF_PROFILES6",
"value":"0x00000000",
"addr":"0x0000009E"
}
],
[
{
"idx":0,
"id":"FAULT_CONFIG1",
"value":"0x46583187",
"addr":"0x00000090"
},
{
"idx":1,
"id":"FAULT_CONFIG2",
"value":"0x31404888",
"addr":"0x00000092"
}
],
[
{
"idx":0,
"id":"INT_ALGO_1",
"value":"0x094202FD",
"addr":"0x000000A0"
},
{
"idx":1,
"id":"INT_ALGO_2",
"value":"0x02008161",
"addr":"0x000000A2"
}
],
[
{
"idx":0,
"id":"PIN_CONFIG",
"value":"0x000AF302",
"addr":"0x000000A4"
},
{
"idx":1,
"id":"DEVICE_CONFIG1",
"value":"0x10100001",
"addr":"0x000000A6"
},
{
"idx":2,
"id":"DEVICE_CONFIG2",
"value":"0x03E8C00C",
"addr":"0x000000A8"
},
{
"idx":3,
"id":"PERI_CONFIG1",
"value":"0x69805CC0",
"addr":"0x000000AA"
},
{
"idx":4,
"id":"GD_CONFIG1",
"value":"0x8000007B",
"addr":"0x000000AC"
},
{
"idx":5,
"id":"GD_CONFIG2",
"value":"0x80000400",
"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":"0x00000004",
"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":"0x20000000",
"addr":"0x000000EA"
}
],
[
{
"idx":0,
"id":"ALGO_DEBUG1",
"value":"0x00000000",
"addr":"0x000000EC"
},
{
"idx":1,
"id":"ALGO_DEBUG2",
"value":"0x00000026",
"addr":"0x000000EE"
},
{
"idx":2,
"id":"CURRENT_PI",
"value":"0x030503A0",
"addr":"0x000000F0"
},
{
"idx":3,
"id":"SPEED_PI",
"value":"0x00000000",
"addr":"0x000000F2"
},
{
"idx":4,
"id":"DAC_1",
"value":"0x00000000",
"addr":"0x000000F4"
}
],
[
{
"idx":0,
"id":"ALGORITHM_STATE",
"value":"0x00000000",
"addr":"0x00000196"
},
{
"idx":1,
"id":"FG_SPEED_FDBK",
"value":"0x7FFFFFFF",
"addr":"0x0000019C"
},
{
"idx":2,
"id":"BUS_CURRENT",
"value":"0x00000000",
"addr":"0x0000040E"
},
{
"idx":3,
"id":"PHASE_CURRENT_A",
"value":"0x00000000",
"addr":"0x0000043C"
},
{
"idx":4,
"id":"PHASE_CURRENT_B",
"value":"0x00000000",
"addr":"0x0000043E"
},
{
"idx":5,
"id":"PHASE_CURRENT_C",
"value":"0x00000000",
"addr":"0x00000440"
},
{
"idx":6,
"id":"CSA_GAIN_FEEDBACK",
"value":"0x00000000",
"addr":"0x00000450"
},
{
"idx":7,
"id":"VOLTAGE_GAIN_FEEDBACK",
"value":"0x00000000",
"addr":"0x00000458"
},
{
"idx":8,
"id":"VM_VOLTAGE",
"value":"0x02070000",
"addr":"0x0000045C"
},
{
"idx":9,
"id":"PHASE_VOLTAGE_VA",
"value":"0x023D4F0D",
"addr":"0x00000460"
},
{
"idx":10,
"id":"PHASE_VOLTAGE_VB",
"value":"0x023D4F0D",
"addr":"0x00000462"
},
{
"idx":11,
"id":"PHASE_VOLTAGE_VC",
"value":"0x023FE829",
"addr":"0x00000464"
},
{
"idx":12,
"id":"SIN_COMMUTATION_ANGLE",
"value":"0x00000000",
"addr":"0x000004AA"
},
{
"idx":13,
"id":"COS_COMMUTATION_ANGLE",
"value":"0x00000000",
"addr":"0x000004AC"
},
{
"idx":14,
"id":"IALPHA",
"value":"0x00000000",
"addr":"0x000004CC"
},
{
"idx":15,
"id":"IBETA",
"value":"0x00000000",
"addr":"0x000004CE"
},
{
"idx":16,
"id":"VALPHA",
"value":"0x00000000",
"addr":"0x000004D0"
},
{
"idx":17,
"id":"VBETA",
"value":"0x00000000",
"addr":"0x000004D2"
},
{
"idx":18,
"id":"ID",
"value":"0x00000000",
"addr":"0x000004DC"
},
{
"idx":19,
"id":"IQ",
"value":"0x00000000",
"addr":"0x000004DE"
},
{
"idx":20,
"id":"VD",
"value":"0x00000000",
"addr":"0x000004E0"
},
{
"idx":21,
"id":"VQ",
"value":"0x00000000",
"addr":"0x000004E2"
},
{
"idx":22,
"id":"IQ_REF_ROTOR_ALIGN",
"value":"0x00000000",
"addr":"0x0000051A"
},
{
"idx":23,
"id":"SPEED_REF_OPEN_LOOP",
"value":"0x00000000",
"addr":"0x00000532"
},
{
"idx":24,
"id":"IQ_REF_OPEN_LOOP",
"value":"0x00000000",
"addr":"0x00000542"
},
{
"idx":25,
"id":"SPEED_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x000005D0"
},
{
"idx":26,
"id":"ID_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x0000060A"
},
{
"idx":27,
"id":"IQ_REF_CLOSED_LOOP",
"value":"0x00000000",
"addr":"0x0000060C"
},
{
"idx":28,
"id":"ISD_STATE",
"value":"0x00000000",
"addr":"0x000006B0"
},
{
"idx":29,
"id":"ISD_SPEED",
"value":"0x00000000",
"addr":"0x000006BA"
},
{
"idx":30,
"id":"IPD_STATE",
"value":"0x00000000",
"addr":"0x000006E4"
},
{
"idx":31,
"id":"IPD_ANGLE",
"value":"0x00000000",
"addr":"0x0000071A"
},
{
"idx":32,
"id":"ED",
"value":"0x00000000",
"addr":"0x0000075C"
},
{
"idx":33,
"id":"EQ",
"value":"0x00000000",
"addr":"0x0000075E"
},
{
"idx":34,
"id":"SPEED_FDBK",
"value":"0x00000000",
"addr":"0x0000076E"
},
{
"idx":35,
"id":"THETA_EST",
"value":"0x00000000",
"addr":"0x00000774"
}
]
]
}


Best regards,

Kel

  • Hi Kel,

    Thanks for posting your question and providing very detailed information. 

    We will look into it and respond soon. 

    We are OOO this week,  we may need more time to respond. 

    Thanks and Best Regards 

    Venkatadri S 

  • I am also facing the same problem.

  • Hi All,

    We will look at this on 2nd and respond. 

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Venkatadri,

    Hope you enjoyed the holiday.

    I just found another issue. I'm testing the motor without load currently. The rotor can be stopped even by hand during startup (MTR_LCK and ABN_BEMF reported). Is this normal? What influence the startup torque? Does run MPET with load fix this issue? 

    Looking forward to your respond of this and the former issue.

    Regard,

    Kel

  • Hi Kel,

    Happy new year! Yes we had good break and hope you too had good holidays.

    I started looking to the threads, I will aim to reply to 1st question by this weekend.

    For the second issue, during startup in order to increase the torque we have to increase Open loop current limit; to get better torque we have to ensure startup phase is proper. Motor needs to align well, it has to be stable zero speed without moving before starting the open loop so that open loop will have good torque.

    I will reply again with JSON file by today.

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Venkatadri,

    So the motor is loaded or not does not effect the result of MPET and the torque that can be got?

    The OL_ILIMIT was set to 20%. It shouldn't exceed this limit because the bus current was less than 1A when I pinched the rotor to keep it stopped. I can feel the high-frequency vibration in the motor before the faults were reported (lasted for about 2s). Seems it lost sync.

    I've tried increasing OL_ILIMIT but no markable improvemrnt. The motor even failed to startup after I set the limit to 80% and HW_LOCK_ILIMIT were reported.

    Regards,

    Kel

  • Hi Kel, try decreasing open loop acceleration constants A1 and A2.

  • Hi Kel, Prabhat,

    A1, A2 is already low I made some changes.

    Current Loop KP. KI I made it zero let device auto calculate it (provides gain by canceling poles and zero).

    I changed closed loop mode to current loop from speed loop.

    I disabled the IQ Ramp down.

    Can you confirm what is the RSHUNT value on the EVM? Is it possible to show the image?

    {
    "signature":"oneui-register-data",
    "data":[
    [
    {
    "idx":0,
    "id":"ISD_CONFIG",
    "value":"0xA0A0D4A1",
    "addr":"0x00000080"
    },
    {
    "idx":1,
    "id":"REV_DRIVE_CONFIG",
    "value":"0x48300000",
    "addr":"0x00000082"
    },
    {
    "idx":2,
    "id":"MOTOR_STARTUP1",
    "value":"0x26CC4CC0",
    "addr":"0x00000084"
    },
    {
    "idx":3,
    "id":"MOTOR_STARTUP2",
    "value":"0x9AAF2007",
    "addr":"0x00000086"
    },
    {
    "idx":4,
    "id":"CLOSED_LOOP1",
    "value":"0x1242013C",
    "addr":"0x00000088"
    },
    {
    "idx":5,
    "id":"CLOSED_LOOP2",
    "value":"0x8AAD1521",
    "addr":"0x0000008A"
    },
    {
    "idx":6,
    "id":"CLOSED_LOOP3",
    "value":"0x3D800001",
    "addr":"0x0000008C"
    },
    {
    "idx":7,
    "id":"CLOSED_LOOP4",
    "value":"0x096245DC",
    "addr":"0x0000008E"
    },
    {
    "idx":8,
    "id":"REF_PROFILES1",
    "value":"0x00000000",
    "addr":"0x00000094"
    },
    {
    "idx":9,
    "id":"REF_PROFILES2",
    "value":"0x00000000",
    "addr":"0x00000096"
    },
    {
    "idx":10,
    "id":"REF_PROFILES3",
    "value":"0x80000004",
    "addr":"0x00000098"
    },
    {
    "idx":11,
    "id":"REF_PROFILES4",
    "value":"0x00000000",
    "addr":"0x0000009A"
    },
    {
    "idx":12,
    "id":"REF_PROFILES5",
    "value":"0x00000000",
    "addr":"0x0000009C"
    },
    {
    "idx":13,
    "id":"REF_PROFILES6",
    "value":"0x00000000",
    "addr":"0x0000009E"
    }
    ],
    [
    {
    "idx":0,
    "id":"FAULT_CONFIG1",
    "value":"0x46583187",
    "addr":"0x00000090"
    },
    {
    "idx":1,
    "id":"FAULT_CONFIG2",
    "value":"0x31404888",
    "addr":"0x00000092"
    }
    ],
    [
    {
    "idx":0,
    "id":"INT_ALGO_1",
    "value":"0x094202FD",
    "addr":"0x000000A0"
    },
    {
    "idx":1,
    "id":"INT_ALGO_2",
    "value":"0x02008161",
    "addr":"0x000000A2"
    }
    ],
    [
    {
    "idx":0,
    "id":"PIN_CONFIG",
    "value":"0x000AF302",
    "addr":"0x000000A4"
    },
    {
    "idx":1,
    "id":"DEVICE_CONFIG1",
    "value":"0x10100001",
    "addr":"0x000000A6"
    },
    {
    "idx":2,
    "id":"DEVICE_CONFIG2",
    "value":"0x03E8C00C",
    "addr":"0x000000A8"
    },
    {
    "idx":3,
    "id":"PERI_CONFIG1",
    "value":"0x69805CE0",
    "addr":"0x000000AA"
    },
    {
    "idx":4,
    "id":"GD_CONFIG1",
    "value":"0x8000007B",
    "addr":"0x000000AC"
    },
    {
    "idx":5,
    "id":"GD_CONFIG2",
    "value":"0x80000400",
    "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":"0x00000004",
    "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":"0x20000000",
    "addr":"0x000000EA"
    }
    ],
    [
    {
    "idx":0,
    "id":"ALGO_DEBUG1",
    "value":"0x00000000",
    "addr":"0x000000EC"
    },
    {
    "idx":1,
    "id":"ALGO_DEBUG2",
    "value":"0x00000026",
    "addr":"0x000000EE"
    },
    {
    "idx":2,
    "id":"CURRENT_PI",
    "value":"0x030503A0",
    "addr":"0x000000F0"
    },
    {
    "idx":3,
    "id":"SPEED_PI",
    "value":"0x00000000",
    "addr":"0x000000F2"
    },
    {
    "idx":4,
    "id":"DAC_1",
    "value":"0x00000000",
    "addr":"0x000000F4"
    }
    ],
    [
    {
    "idx":0,
    "id":"ALGORITHM_STATE",
    "value":"0x00000000",
    "addr":"0x00000196"
    },
    {
    "idx":1,
    "id":"FG_SPEED_FDBK",
    "value":"0x7FFFFFFF",
    "addr":"0x0000019C"
    },
    {
    "idx":2,
    "id":"BUS_CURRENT",
    "value":"0x00000000",
    "addr":"0x0000040E"
    },
    {
    "idx":3,
    "id":"PHASE_CURRENT_A",
    "value":"0x00000000",
    "addr":"0x0000043C"
    },
    {
    "idx":4,
    "id":"PHASE_CURRENT_B",
    "value":"0x00000000",
    "addr":"0x0000043E"
    },
    {
    "idx":5,
    "id":"PHASE_CURRENT_C",
    "value":"0x00000000",
    "addr":"0x00000440"
    },
    {
    "idx":6,
    "id":"CSA_GAIN_FEEDBACK",
    "value":"0x00000000",
    "addr":"0x00000450"
    },
    {
    "idx":7,
    "id":"VOLTAGE_GAIN_FEEDBACK",
    "value":"0x00000000",
    "addr":"0x00000458"
    },
    {
    "idx":8,
    "id":"VM_VOLTAGE",
    "value":"0x02070000",
    "addr":"0x0000045C"
    },
    {
    "idx":9,
    "id":"PHASE_VOLTAGE_VA",
    "value":"0x023D4F0D",
    "addr":"0x00000460"
    },
    {
    "idx":10,
    "id":"PHASE_VOLTAGE_VB",
    "value":"0x023D4F0D",
    "addr":"0x00000462"
    },
    {
    "idx":11,
    "id":"PHASE_VOLTAGE_VC",
    "value":"0x023FE829",
    "addr":"0x00000464"
    },
    {
    "idx":12,
    "id":"SIN_COMMUTATION_ANGLE",
    "value":"0x00000000",
    "addr":"0x000004AA"
    },
    {
    "idx":13,
    "id":"COS_COMMUTATION_ANGLE",
    "value":"0x00000000",
    "addr":"0x000004AC"
    },
    {
    "idx":14,
    "id":"IALPHA",
    "value":"0x00000000",
    "addr":"0x000004CC"
    },
    {
    "idx":15,
    "id":"IBETA",
    "value":"0x00000000",
    "addr":"0x000004CE"
    },
    {
    "idx":16,
    "id":"VALPHA",
    "value":"0x00000000",
    "addr":"0x000004D0"
    },
    {
    "idx":17,
    "id":"VBETA",
    "value":"0x00000000",
    "addr":"0x000004D2"
    },
    {
    "idx":18,
    "id":"ID",
    "value":"0x00000000",
    "addr":"0x000004DC"
    },
    {
    "idx":19,
    "id":"IQ",
    "value":"0x00000000",
    "addr":"0x000004DE"
    },
    {
    "idx":20,
    "id":"VD",
    "value":"0x00000000",
    "addr":"0x000004E0"
    },
    {
    "idx":21,
    "id":"VQ",
    "value":"0x00000000",
    "addr":"0x000004E2"
    },
    {
    "idx":22,
    "id":"IQ_REF_ROTOR_ALIGN",
    "value":"0x00000000",
    "addr":"0x0000051A"
    },
    {
    "idx":23,
    "id":"SPEED_REF_OPEN_LOOP",
    "value":"0x00000000",
    "addr":"0x00000532"
    },
    {
    "idx":24,
    "id":"IQ_REF_OPEN_LOOP",
    "value":"0x00000000",
    "addr":"0x00000542"
    },
    {
    "idx":25,
    "id":"SPEED_REF_CLOSED_LOOP",
    "value":"0x00000000",
    "addr":"0x000005D0"
    },
    {
    "idx":26,
    "id":"ID_REF_CLOSED_LOOP",
    "value":"0x00000000",
    "addr":"0x0000060A"
    },
    {
    "idx":27,
    "id":"IQ_REF_CLOSED_LOOP",
    "value":"0x00000000",
    "addr":"0x0000060C"
    },
    {
    "idx":28,
    "id":"ISD_STATE",
    "value":"0x00000000",
    "addr":"0x000006B0"
    },
    {
    "idx":29,
    "id":"ISD_SPEED",
    "value":"0x00000000",
    "addr":"0x000006BA"
    },
    {
    "idx":30,
    "id":"IPD_STATE",
    "value":"0x00000000",
    "addr":"0x000006E4"
    },
    {
    "idx":31,
    "id":"IPD_ANGLE",
    "value":"0x00000000",
    "addr":"0x0000071A"
    },
    {
    "idx":32,
    "id":"ED",
    "value":"0x00000000",
    "addr":"0x0000075C"
    },
    {
    "idx":33,
    "id":"EQ",
    "value":"0x00000000",
    "addr":"0x0000075E"
    },
    {
    "idx":34,
    "id":"SPEED_FDBK",
    "value":"0x00000000",
    "addr":"0x0000076E"
    },
    {
    "idx":35,
    "id":"THETA_EST",
    "value":"0x00000000",
    "addr":"0x00000774"
    }
    ]
    ]
    }

    Thanks and Best Regards 

    Venkatadri S 

  • How do we control speed when operating in current loop.

  • Hi Prabhat,

    Current loop can only regulate current, this is to check torque capability.

    Enable Speed loop after we verify operating torque at operating speed.

    For speed loop tuning we need load to be applied and run MPET.

    Plant will be nonlinear for speed controller; we need to do small signal approximation which is done by MPET.

    What is the load type? Fan, Pump or any actuator type?

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Venkatadri, 

    The shunt resistor is the default 1mΩ one. 

    I will try this configuration and give feedback next week.

    Regards,

    Kel

  • Hi Kel,

    Thanks for sharing the RSENSE image. We found issue with this component which is showing some offset when sampling at switching.

    We recommend changing this to CRE2512-FZ-R001E-3   or 5omohm/10mOhm.

    Thanks and Best Regards 

    Venkatadri S 

  • HI Venkatadri,

    when in current loop mode I am unable to take my bus current above 15 AMps, my motor is rated for 40Amps at 6600 rpm for the fan load I have applied, I know that the current limit of EVM is 37.5A but at least my motor should go upwards of 25Amps.

  • Hi Prabhat

    What is the applied voltage? Do you see saturation flags?

    Thanks and Best Regards 

    Venkatadri S 

  • I have shared the json with you in a message.

    When I was using speed control mode above 1100Hz I was getting speed loop saturation flag, in current loop mode I am not getting any flags although I was able to get to higher current but the problem is that at 1200 Hz my speed stops increasing but current is increased up to 20Amps.

  • There is also one problem, I manually calculated the value of back emf constant it was coming 9.6mV/Hz but the MPET reading always calculates 4mV/Hz. is it due to that?

  • Hi Prabhat

    Verify how you are calculating 

    BEMF=( Peak to Peak / 2*SQRT(3) ) * Time period

    Also , approximate check about maximum speed we can achieve (I am not considering duty cycle reduction due to Dead time, blanking time, PWM frequency etc), this purely theoretical to get some idea

    Per phase terminal voltage = VM / Sqrt(3) =  Peak Phase current * Per phase R +  Speed(Hz)* BEMF Contant  (NOTE:I am ignoring L di/dt at steady state)

    Thanks and Best Regards 

    Venkatadri S 

  • As per new calculations as guided by you, BEMF is coming 3.4mV/Hz.

  • Yes, This is close to MPET .

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Venkatadri,

    I replaced the RSENSE with the recommended 1mΩ one. The startup torque is normal now.

    However the target max speed still cannot be reached after I applied your config. The situation was the same as before, except by changing to current mode, only CURRENT SATURATION was reported.

    Here's the new MPET result:

    CLOSED_LOOP3   0x3D800000

    CLOSED_LOOP4   0x4C5305DC

    CURRENT_PI         0x021D0234

    Regards,

    Kel

  • The problem remains the same with me: I am unable to reach the max speed.

    One more thing how do we use the closed loop tuning.

    For me even if I increase the speed command to 100% I am not reaching above a threshold after that it says controller fault and speed loop saturartion

  • even when I am using current control the speed is not increasing beyond certain point, while with other controller (a trapezoidal one) I am able to get to very high speed on the same motor and battery combination.

  • Just a reminder, have you set SATURATION _FLAGS_EN in FAULT_CONFIG1.

  • Hi,

    If you are seeing current loop saturation means maximum modulation is applied already.

    This can be either DC bus voltage need to increase if the voltage spec is higher or go for flux weakening.

    What is the expected speed and present speed?

    Thanks and Best Regards 

    Venkatadri S 

  • The expected speed is 1300-1400 Hz, and the current speed is 1050 Hz.

    I am using the trapezoidal based controller for same motor and battery voltage to achieve the desired speed.

    go for flux weakening

    How do I activate it?

  • Hi Prabhat,

    I will respond to you by late evening today or by morning tomorrow.

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Venkatadri,

    I tried flux weakening after replacing the RSENSE. This time it works much better, but I still cannot reach the set max speed of 250 Hz. The maximum speed I can reach now is 200 Hz in both current mode and speed mode. Could you provide a guide on how to tune flux weakening? There's too little information in the datasheet.

    Besides, I find that the I2C becomes unstable at high speeds. I'm using the jumper bridge to communicate with my own MCU. I'm not sure whether this is caused by the characteristics of the EVM or my configuration of I2c. The datasheet says a 100us delay should be applied between every byte, but the MCU does not support configuring a delay between bytes. I can only achieve a 100us delay between each packet. What should I do to achieve stable I2C communication under these circumstances?

    Regards,

    Kel

  • Hi Kel,

    What is the current at 200Hz? With 1mohm RSENSE and set configuration max base current is 37.5A.

    Flux weakening can be used to increase but there also max current of 37A we can deliver.

    To increase the current, we have to change the CSA_GAIN in GD_CONFIG register.

    Before we go there, please share the current waveform and peak phase current value.

    For I2C  can you reduce clock to 10KHz and verify? No need to add inter byte delay, the clock stretching feature on the device will help.

    Can you explain about unstable behavior? What is happening?

    Thanks and Best Regards 

    Venkatadri S 

  • Hi Prabhat,

    I will respond to you by late evening today or by morning tomorrow.

    Still waiting

  • Hi Prabhat,

    I will look into it tomorrow.

    Thanks and Best Regards 

    Venkatadri S

  • An update, surprisingly, with modulation index control, I can get to somewhat higher speeds.
    But not reaching the peak.

  • Per phase terminal voltage = VM / Sqrt(3) =  Peak Phase current * Per phase R +  Speed(Hz)* BEMF Contant  (NOTE:I am ignoring L di/dt at steady state)

    As per this calculation, motor can easily reach 2000-2100 Hz, and I am trying to run the motor at 1300-1400 Hz.

  • Hi Prabhat

    Couple of tests you can do

    1. The duty cycle is limited by few configurations, one in ISD_CONFIG[SINGLE_SHUNT_BLANKING_TIME]  by default will be 0.5us. This is provided for avoiding sampling during ringing region due to switching, you can reduce to 0.25us which is lowest

    2. Keep PWM frequency 15 to 20KHz

    3. Enable saturation flag and test when 100% command is issued whether any saturation flag sets, this indicates applied voltage may not be sufficient (We have discussed about this previously)

    4. Enable Flux weakening, for those registers

    In INT_ALGO_2 [FLUX_WEAKENING] = Enable, keep FLUX_WEAKENING_KP, KI to 0x10 which is default.

    In PIN_CONFIG[FLUX_WEAKENING_CURRENT_RATIO] start with 20% , this will introduce 20% of ID current which increases the speed, slowly increase until desired speed is reached or torque start dropping which fails to spin the motor.

    Please note, when flux weakening is used large current flows in the winding and motor should be able to withstand. Also, more usage of flux weakening will reduce magnet life. I am suggesting flux weakening to check if speed can be increased beyond this.

    Before you test flux weakening try three and also DC bus voltage.

    Thanks and Best Regards 

    Venkatadri S

  • Hi Venkatadri,

    I measured the peak phase current, and it was indeed limited. I adjusted CSA_GAIN to 20V/V and BASE_CURRENT to 0x800. As a result, the speed can now be increased further. However, due to the I2C issue (the bus locks up at high motor speeds), I am unable to check the real-time speed by reading SPEED_FDBK. In speed mode, the speed will not exceed the set maximum speed even with flux weakening enabled, correct?

    For the I2C issue,

    No need to add inter byte delay, the clock stretching feature on the device will help.

    Does that mean the I2C should work well at my clock frequency (60KHz) or even higher? What is the highest frequency available?

    I removed the original pull-up resistors (R7, R8, R9, and R10) on the board and pulled up those pins to an external 5V because I am using a 5V MCU. Could this modification affect the stability of the I2C communication?

    Regards,

    Kel

  • Hi Kel,

    Since you are able to increase speed by increasing BASE current that means motor current rating is higher than previously thought.

    To monitor speed in real time you need to use FG pin or use DAC module , map the Speed feed back.

    I2C clock supports upto 400KHz but you need to make sure bus capacitance should not distort the quality of clock/Data, you can increase pull up strength .

    Use I2C for configuration and utilize DAC and FG pin for real time monitoring.

    Thanks and Best Regards 

    Venkatadri S

  • Why can't I monitor speed by I2C reading?

  • Hi Kel,

    You can monitor speed over I2C, since you wanted much faster update I suggested for monitoring FG pin or DACOUT.

    Thanks and Best Regards 

    Venkatadri S