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.

MCF8329EVM: Control loop instability under load

Part Number: MCF8329EVM
Other Parts Discussed in Thread: MCF8329A

Hi, I'm seeing some control loop instability when running my motor with higher loads. I have the motor driving and adjustable load that I can control. At no load and smaller loads it runs fine, but when the load is increased I end up with the situation shown in the scope capture below. The motor seems to handle the increased load for up to a few seconds but then the currents oscillate out of control until limits are exceeded or the power supply is overwhelmed and can't keep up. I suspect the issue lies in the control loop settings but I could use some guidance on where to look.

The motor is rated for 80A peak and ILIMIT settings are around 90A. The only fault I see this time is APP_RESET presumably from the bus undervoltage

In this first trace channels 1-3 are phase currents and channel 4 is bus voltage

In this second image CH4 is monitoring motor speed through FGOUT. You can see here that RPM remains stable until the problem occurs, so I'm not sure what the control loop would be reacting to to increase current so drastically

  • Hi Ian Garcia,

    Can you check if saturation flag is being set? Current Loop Saturation?

    Can you provide motor parameters, rated voltage, rated speed? 

    Also, what is the PWM frequency you are operating? 

    In the ISD_CONFIG register there a Blanking time setting, can you share me the JSON file?

    Thanks and Best Regards,

    Venkatadri S

  • Motor is 48V, 3600 RPM max. I was running it at 3000 RPM. None of the saturation flags were set. Running at 60kHz PWM. Blanking time is 0.5us.

    Would be happy to share my JSON file but I don't see any way to upload it on these forums. The "Insert Image/Video/File" dialog does not work for JSON. Please advise on how to do that.

  • {
    "signature":"oneui-register-data",
    "data":[
    [
    {
    "idx":0,
    "id":"ISD_CONFIG",
    "value":"0xE4A2D4A1",
    "addr":"0x00000080"
    },
    {
    "idx":1,
    "id":"REV_DRIVE_CONFIG",
    "value":"0x48300000",
    "addr":"0x00000082"
    },
    {
    "idx":2,
    "id":"MOTOR_STARTUP1",
    "value":"0x10CA4DC4",
    "addr":"0x00000084"
    },
    {
    "idx":3,
    "id":"MOTOR_STARTUP2",
    "value":"0xC2AEE0F6",
    "addr":"0x00000086"
    },
    {
    "idx":4,
    "id":"CLOSED_LOOP1",
    "value":"0x167D013C",
    "addr":"0x00000088"
    },
    {
    "idx":5,
    "id":"CLOSED_LOOP2",
    "value":"0x8AAD3917",
    "addr":"0x0000008A"
    },
    {
    "idx":6,
    "id":"CLOSED_LOOP3",
    "value":"0x55E29828",
    "addr":"0x0000008C"
    },
    {
    "idx":7,
    "id":"CLOSED_LOOP4",
    "value":"0x7A3E85A0",
    "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":"0x47E02186",
    "addr":"0x00000090"
    },
    {
    "idx":1,
    "id":"FAULT_CONFIG2",
    "value":"0x51407888",
    "addr":"0x00000092"
    }
    ],
    [
    {
    "idx":0,
    "id":"INT_ALGO_1",
    "value":"0x0948007D",
    "addr":"0x000000A0"
    },
    {
    "idx":1,
    "id":"INT_ALGO_2",
    "value":"0x02008163",
    "addr":"0x000000A2"
    }
    ],
    [
    {
    "idx":0,
    "id":"PIN_CONFIG",
    "value":"0x4022C301",
    "addr":"0x000000A4"
    },
    {
    "idx":1,
    "id":"DEVICE_CONFIG1",
    "value":"0x00100002",
    "addr":"0x000000A6"
    },
    {
    "idx":2,
    "id":"DEVICE_CONFIG2",
    "value":"0x03E8C00C",
    "addr":"0x000000A8"
    },
    {
    "idx":3,
    "id":"PERI_CONFIG1",
    "value":"0x69845CC0",
    "addr":"0x000000AA"
    },
    {
    "idx":4,
    "id":"GD_CONFIG1",
    "value":"0x80008279",
    "addr":"0x000000AC"
    },
    {
    "idx":5,
    "id":"GD_CONFIG2",
    "value":"0x80001000",
    "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":"0x145F0004",
    "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":"0x03050314",
    "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":"0x0012000E",
    "addr":"0x00000196"
    },
    {
    "idx":1,
    "id":"FG_SPEED_FDBK",
    "value":"0x017122FC",
    "addr":"0x0000019C"
    },
    {
    "idx":2,
    "id":"BUS_CURRENT",
    "value":"0x00000000",
    "addr":"0x0000040E"
    },
    {
    "idx":3,
    "id":"PHASE_CURRENT_A",
    "value":"0xFFFC0000",
    "addr":"0x0000043C"
    },
    {
    "idx":4,
    "id":"PHASE_CURRENT_B",
    "value":"0x00040000",
    "addr":"0x0000043E"
    },
    {
    "idx":5,
    "id":"PHASE_CURRENT_C",
    "value":"0x00000000",
    "addr":"0x00000440"
    },
    {
    "idx":6,
    "id":"CSA_GAIN_FEEDBACK",
    "value":"0x00000002",
    "addr":"0x00000450"
    },
    {
    "idx":7,
    "id":"VOLTAGE_GAIN_FEEDBACK",
    "value":"0x00000000",
    "addr":"0x00000458"
    },
    {
    "idx":8,
    "id":"VM_VOLTAGE",
    "value":"0x06768000",
    "addr":"0x0000045C"
    },
    {
    "idx":9,
    "id":"PHASE_VOLTAGE_VA",
    "value":"0x02C7DF74",
    "addr":"0x00000460"
    },
    {
    "idx":10,
    "id":"PHASE_VOLTAGE_VB",
    "value":"0x02C701C0",
    "addr":"0x00000462"
    },
    {
    "idx":11,
    "id":"PHASE_VOLTAGE_VC",
    "value":"0x02C54658",
    "addr":"0x00000464"
    },
    {
    "idx":12,
    "id":"SIN_COMMUTATION_ANGLE",
    "value":"0x07F980D0",
    "addr":"0x000004AA"
    },
    {
    "idx":13,
    "id":"COS_COMMUTATION_ANGLE",
    "value":"0x007BF624",
    "addr":"0x000004AC"
    },
    {
    "idx":14,
    "id":"IALPHA",
    "value":"0xFEF00000",
    "addr":"0x000004CC"
    },
    {
    "idx":15,
    "id":"IBETA",
    "value":"0x00A1A877",
    "addr":"0x000004CE"
    },
    {
    "idx":16,
    "id":"VALPHA",
    "value":"0xFEF7AA46",
    "addr":"0x000004D0"
    },
    {
    "idx":17,
    "id":"VBETA",
    "value":"0x0010DCF8",
    "addr":"0x000004D2"
    },
    {
    "idx":18,
    "id":"ID",
    "value":"0x0086531C",
    "addr":"0x000004DC"
    },
    {
    "idx":19,
    "id":"IQ",
    "value":"0x011E5D79",
    "addr":"0x000004DE"
    },
    {
    "idx":20,
    "id":"VD",
    "value":"0x0000CFEC",
    "addr":"0x000004E0"
    },
    {
    "idx":21,
    "id":"VQ",
    "value":"0x010939B6",
    "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":"0x1332EAC0",
    "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":"0x00000005",
    "addr":"0x000006B0"
    },
    {
    "idx":29,
    "id":"ISD_SPEED",
    "value":"0x0000004E",
    "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":"0x002B1979",
    "addr":"0x0000076E"
    },
    {
    "idx":35,
    "id":"THETA_EST",
    "value":"0x00000000",
    "addr":"0x00000774"
    }
    ]
    ]
    }
  • This time I monitored bus current (blue trace). It seems the inciting factor for things going wrong is when bus current goes negative. Any insights on why that happens in the first place? I haven't observed this problem when using an off the shelf motor driver on the same setup.

    This plot has all 3 phase currents and the bus current (green)

  • Hi Ian Garcia,

    Can you reduce PWM switching frequency to say 20KHz and try it.

    Meanwhile I will look into the details you have shared and reply to you by end of this week.

    Thanks and Best Regards,

    Venkatadri S

  • I'll double check tomorrow but I tried 20kHz PWM freq before and was unable to get it into closed loop speed control even without load.

    In my last plot, you can see that all phase currents go negative just before the bus current goes negative. Is that a normal occurrence? I was surprised to see that happen

  • Hi Ian Garcia,

    I will have to see the JSON file, I will respond to you by end of this week.

    Thanks and Best Regards,

    Venkatadri S

  • Just tried 20kHz, the motor starts turning but then stops. Sometimes without error sometimes triggering LOCK_LIMIT or HW_LOCK_LIMIT

  • Hi Ian Garcia,

    I looked into tuning file. Are you using EVM with 1mohm shunt?

    Base current you have set is 140A.

    Speed Ki value looks very high, we need to characterize the motor and then apply correct Kp, Ki

    Let us try few steps mentioned below

    1. Let PWM Frequency for 15KHz to 25Khz and not more than that.

    2. Open Loop current is very high, do you need that high value?

    3. Switch to current loop, start with reasonably low value which can drive the load and then increment slowly until we get to required speed. Monitor for stability here. In current loop you can first try internal calculated current loop Kp, Ki and then we can reduce bandwidth until stable response is achieved. If convinced, then start speed loop tuning. Optional test -> We can also test in Voltage mode and verify the stability. 

    4.  How did you measure the R, L?

    5.  For speed loop and current loop Motor studio provides Close Loop Tuning, we can use that facility to understand Kp, Ki response, we provide time and bode plot. For simplicity, we can refer to Time response plot which provides fair idea about system behavior. Can you use Control Loop Tuning feature provided on the Motor studio and retune the speed loop.

    6. Also, close loop accel and decel is very high, can you reduce to below 60Hz. 

    Thanks and Best Regards,

    Venkatadri S

  • Yes using the EVM with 1mOhm shunt.

    Speed Ki is indeed high, but this value was determined through manual tuning with the actual motor. With lower gains the controller fails to respond to even small amounts of load and the motor stops turning.

    1. I will try that again, but as mentioned with lower PWM frequency the motor fails to get into closed loop at all.

    2. Yes, without high open loop current settings the motor does not start up reliably. Especially with load applied. I don't see how this is relevant to the issue at hand though, the problem occurs during closed loop control.

    3. Will try this next week. What do you mean by reduce bandwidth here?

    4. I believe those values were determined by MPET. Data sheet values are 0.06 Ohm resistance 0.3 mH inductance

    5. Might try this, but relatively low priority as measuring the required motor parameters will be time consuming.

    6. Will try next week

    Thanks

  • Hi Ian, 

    Thanks for posting to the e2e motor drivers forum. 

    Our team expert on this device is out of office for a week, so responses to this debug thread will be delayed until he returns next week.

    Please give us some additional time to address your questions/concerns, and feel free to add further information to the thread in the meantime if you believe it will help the debug effort. 

    Best Regards, 
    Andrew 

  • I've followed suggestions and retuned the motor to operate at 20kHz. Performance does seem better but I'm still facing issues. I've attached my new json (had to change the file type to .txt in order to upload.

    {
    "signature":"oneui-register-data",
    "data":[
    [
    {
    "idx":0,
    "id":"ISD_CONFIG",
    "value":"0xE4A2D4A1",
    "addr":"0x00000080"
    },
    {
    "idx":1,
    "id":"REV_DRIVE_CONFIG",
    "value":"0x48300000",
    "addr":"0x00000082"
    },
    {
    "idx":2,
    "id":"MOTOR_STARTUP1",
    "value":"0x0AC24DC4",
    "addr":"0x00000084"
    },
    {
    "idx":3,
    "id":"MOTOR_STARTUP2",
    "value":"0x8AAEE0F6",
    "addr":"0x00000086"
    },
    {
    "idx":4,
    "id":"CLOSED_LOOP1",
    "value":"0x0E39013C",
    "addr":"0x00000088"
    },
    {
    "idx":5,
    "id":"CLOSED_LOOP2",
    "value":"0x8AAD3917",
    "addr":"0x0000008A"
    },
    {
    "idx":6,
    "id":"CLOSED_LOOP3",
    "value":"0x4F441819",
    "addr":"0x0000008C"
    },
    {
    "idx":7,
    "id":"CLOSED_LOOP4",
    "value":"0x483E85A0",
    "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":"0x47E06186",
    "addr":"0x00000090"
    },
    {
    "idx":1,
    "id":"FAULT_CONFIG2",
    "value":"0x51407888",
    "addr":"0x00000092"
    }
    ],
    [
    {
    "idx":0,
    "id":"INT_ALGO_1",
    "value":"0x0946007D",
    "addr":"0x000000A0"
    },
    {
    "idx":1,
    "id":"INT_ALGO_2",
    "value":"0x02008163",
    "addr":"0x000000A2"
    }
    ],
    [
    {
    "idx":0,
    "id":"PIN_CONFIG",
    "value":"0x4022C301",
    "addr":"0x000000A4"
    },
    {
    "idx":1,
    "id":"DEVICE_CONFIG1",
    "value":"0x00100002",
    "addr":"0x000000A6"
    },
    {
    "idx":2,
    "id":"DEVICE_CONFIG2",
    "value":"0x03E8C00C",
    "addr":"0x000000A8"
    },
    {
    "idx":3,
    "id":"PERI_CONFIG1",
    "value":"0x69845CC0",
    "addr":"0x000000AA"
    },
    {
    "idx":4,
    "id":"GD_CONFIG1",
    "value":"0x80008279",
    "addr":"0x000000AC"
    },
    {
    "idx":5,
    "id":"GD_CONFIG2",
    "value":"0x80001000",
    "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":"0x1D360004",
    "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":"0x03050314",
    "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":"0x0288EC30",
    "addr":"0x0000019C"
    },
    {
    "idx":2,
    "id":"BUS_CURRENT",
    "value":"0x00000000",
    "addr":"0x0000040E"
    },
    {
    "idx":3,
    "id":"PHASE_CURRENT_A",
    "value":"0xFF6C0000",
    "addr":"0x0000043C"
    },
    {
    "idx":4,
    "id":"PHASE_CURRENT_B",
    "value":"0x016C0000",
    "addr":"0x0000043E"
    },
    {
    "idx":5,
    "id":"PHASE_CURRENT_C",
    "value":"0xFF280000",
    "addr":"0x00000440"
    },
    {
    "idx":6,
    "id":"CSA_GAIN_FEEDBACK",
    "value":"0x00000002",
    "addr":"0x00000450"
    },
    {
    "idx":7,
    "id":"VOLTAGE_GAIN_FEEDBACK",
    "value":"0x00000000",
    "addr":"0x00000458"
    },
    {
    "idx":8,
    "id":"VM_VOLTAGE",
    "value":"0x067B8000",
    "addr":"0x0000045C"
    },
    {
    "idx":9,
    "id":"PHASE_VOLTAGE_VA",
    "value":"0x02EB6141",
    "addr":"0x00000460"
    },
    {
    "idx":10,
    "id":"PHASE_VOLTAGE_VB",
    "value":"0x00045483",
    "addr":"0x00000462"
    },
    {
    "idx":11,
    "id":"PHASE_VOLTAGE_VC",
    "value":"0x01E79281",
    "addr":"0x00000464"
    },
    {
    "idx":12,
    "id":"SIN_COMMUTATION_ANGLE",
    "value":"0x00C411FC",
    "addr":"0x000004AA"
    },
    {
    "idx":13,
    "id":"COS_COMMUTATION_ANGLE",
    "value":"0x07F5B950",
    "addr":"0x000004AC"
    },
    {
    "idx":14,
    "id":"IALPHA",
    "value":"0x00480000",
    "addr":"0x000004CC"
    },
    {
    "idx":15,
    "id":"IBETA",
    "value":"0x0137C4E6",
    "addr":"0x000004CE"
    },
    {
    "idx":16,
    "id":"VALPHA",
    "value":"0xFEB6AE27",
    "addr":"0x000004D0"
    },
    {
    "idx":17,
    "id":"VBETA",
    "value":"0x00BE030F",
    "addr":"0x000004D2"
    },
    {
    "idx":18,
    "id":"ID",
    "value":"0xFF2CD798",
    "addr":"0x000004DC"
    },
    {
    "idx":19,
    "id":"IQ",
    "value":"0x013AAC71",
    "addr":"0x000004DE"
    },
    {
    "idx":20,
    "id":"VD",
    "value":"0xFECA432F",
    "addr":"0x000004E0"
    },
    {
    "idx":21,
    "id":"VQ",
    "value":"0x00D5BE53",
    "addr":"0x000004E2"
    },
    {
    "idx":22,
    "id":"IQ_REF_ROTOR_ALIGN",
    "value":"0x09997560",
    "addr":"0x0000051A"
    },
    {
    "idx":23,
    "id":"SPEED_REF_OPEN_LOOP",
    "value":"0x0266658C",
    "addr":"0x00000532"
    },
    {
    "idx":24,
    "id":"IQ_REF_OPEN_LOOP",
    "value":"0x01F97CBF",
    "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":"0x00600F58",
    "addr":"0x0000060C"
    },
    {
    "idx":28,
    "id":"ISD_STATE",
    "value":"0x00000005",
    "addr":"0x000006B0"
    },
    {
    "idx":29,
    "id":"ISD_SPEED",
    "value":"0x00000006",
    "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":"0xA67EA7B4",
    "addr":"0x00000774"
    }
    ]
    ]
    }

    The problem I'm facing now is that SPEED_FDBK seems to be incorrect under load. Here's my test setup

    1. Start motor with no load at 3000 RPM (200 Hz). SPEED_FDBK (observed in motor studio), FG_SPEED_FDBK (observed with scope on FG pin), and an external tach all agree that the driver is maintaining speed.

    2. Apply load. SPEED_FDBK still says ~200Hz. Both external tach and FG_SPEED_FDBK show a lower value. Current does increase, so the motor is operating under speed control. But it seems to be referencing the wrong speed. If I increase the load eventually the motor stalls out.

    I'm very confused as to how the board could report an incorrect SPEED_FDBK but a correct FG_SPEED_FDBK

  • Hi Ian Garcia,

    I will check this and get back to you. 

    Can you verify SPEED_FDBK from the register mode?

    Also,  can you check if Auto read motor status is not disabled? 

    Thanks and Best Regards,

    Venkatadri S

  • Here are the various speed measurements with the motor running under load

    External tach- 2327 RPM

    FG pin frequency 152.9 Hz-> 2294 RPM

    Motor Studio GUI ~200Hz (Same as reference) -> 3000 RPM

    SPEED_FDBK register 0x06D088EF

    estimatedSpeed = (SPEED_FDBK / 2^27)*MAXIMUM_SPEED_HZ = 204 Hz

    Auto read motor status is enabled, you can see SPEED_FDBK fluctuate slightly so it's actively being read. I checked the register value and it is indeed around 200Hz, which is incorrect. The FG output is correct. So I believe my issue is that the speed control loop is somehow being fed an inaccurate estimated speed. Are there any settings that could cause this?

    Here's another run with similar results.

    ...

  • Hi Ian Garcia,

    I was not available last week , I will look into the details and reply to you by today or tomorrow.

    Thanks and Best Regards,

    Venkatadri S

     

  • Hi Ian Garcia,

    I missed to get back to you. I will remember to reply to you by tomorrow.

    Thanks and Best Regards,

    Venkatadri S

  • Hi, it's been a week. Anything?

  • Hi Ian Garcia,

    I was on medical leave for couple of days, I am sorry for delaying.

    I am back to work today, I will get back to you today.

    Thanks and Best Regards,

    Venkatadri S

  • Hi Ian Garcia,

    Can you make sure the register is read properly (Refreshed). Try following and confirm

    1. Before reading please try read selected register.

    2. Can you use current probe and measure the frequency on the current probe which is actually estimated speed.

    3. When you apply load, since you are in speed loop why speed is not reaching to set speed? Can you increase the ILIMIT if you are seeing current loop saturation or try increasing the DC bus voltage?

     6

    Thanks and Best Regards,

    Venkatadri S

  • 1. Yes the register was being refreshed properly in my previous posts. I am confident of this.

    2. I can try later this week. But as mentioned previously I used an external tachometer to confirm the actual speed of the motor shaft already.

    3. ILIMIT is far higher than the actual current being output, no saturation. We are already at the rated bus voltage for this motor and cannot increase it. As I already mentioned SPEED_FDBK is incorrect, so the controller thinks it is reaching set speed even though it is not.

    How are SPEED_FDBK and FG_SPEED_FDBK calculated by the MCF8329A? FG_SPEED_FDBK is correct and matches my external tach while SPEED_FDBK is incorrect. So they must be some difference in how they are estimated.

  • Hi Ian Garcia,

    I will respond to you tomorrow.

    Thanks and Best Regards,

    Venkatadri S