MCF8316A: Motor first start always takes time to reach the target speed

Part Number: MCF8316A

Tool/software:

Good morning, I am currently working with the MCF8316A driver to control a DF45M024053-A2 BLDC motor. I am currently having problems understanding how to set the required motor parameters to have a "clean" start. I enabled the MPET measurements and the writing operation which updates the parameters by writing in the EEPROM memory. Once the motor stopped spinning I stored the information into a flash memory of the microprocessor with which I am sending commands to the driver. Once this was done, I set the MPET measurements OFF once and for all. Doing so, I can load the current saved configuration directly from the flash memory, without waiting for the motor to estimate all its parameters. My problem right now is that once I turn on the motor, it takes quite a long time to execute the command I sent it (for example I set the speed to 2000, but it takes like 20 seconds before actually reaching this speed). After this first start, the motor reacts efficiently to the commands I sent also according to the configuration data I set. Still, I am not able to understand why it behaves like this, I was thinking that maybe the problem is because initially the motor performs an open loop and it's what I'm seeing when it doesn't react accordingly to the commands sent. Here's the configuration I'm using, in this case, the MPET is disabled.
   
      Address:  Value:

    {0x0080, 0x44638C20}, // ISD_CONFIG  
    {0x0082, 0x283AF064}, // REV_DRIVE_CONFIG
    {0x0084, 0x0E6807D0}, // MOTOR_STARTUP1 
    {0x0086, 0x23AE6000}, // MOTOR_STARTUP2 
    {0x0088, 0x28A181B0}, // CLOSE_LOOP1  
    {0x008A, 0x1AAD0000}, // CLOSE_LOOP2
    {0x008C, 0x00000000}, // CLOSE_LOOP3
    {0x008E, 0x00000F2C}, // CLOSE_LOOP4 
    {0x0094, 0x00000000}, // SPEED_PROFILES1
    {0x0096, 0x00000000}, // SPEED_PROFILES2
    {0x0098, 0x00000000}, // SPEED_PROFILES3
    {0x009A, 0x00000000}, // SPEED_PROFILES4
    {0x009C, 0x00000000}, // SPEED_PROFILES5
    {0x009E, 0x00000000}, // SPEED_PROFILES6
    {0x0090, 0x5FE80207}, // FAULT_CONFIG1
    {0x0092, 0x74000000}, // FAULT_CONFIG2
    {0x00A0, 0x00B3407D}, // INT_ALGO_1
    {0x00A2, 0x000001A7},  // INT_ALGO_2  (old 2BD)
    {0x00A4, 0x00000001}, // PIN_CONFIG
    {0x00A6, 0x00000000}, // DEVICE_CONFIG1
    {0x00A8, 0x0000B000}, // DEVICE_CONFIG2
    {0x00AA, 0x40000000}, // PERI_CONFIG1
    {0x00AC, 0x00000100}, // GD_CONFIG1
    {0x00AE, 0x00200000}, // GD_CONFIG2
    {0x00EA, 0x00000000}, // ALGO_CTRL1
    {0x00EE, 0x00000000}, // ALGO_CTRL2
I tried playing with different open loop parameters and MOTOR_STARTUP configurations, but nothing seems to change for this problem. Thanks in advance if you could grant me any help!
  • Hi Silvio,

    1. When the motor takes 20 seconds to spin up to the configured speed, can you read the ALGORITHM_STATE to check which states it is reaching and sitting in the longest?
    2. Also can you provide a capture of the phase current and VM voltage when starting the motor? 

    Regards,

    Joshua

  • Hi Joshua,

    Sorry for the late answer, but I only worked with the motor today. Regarding your suggestion:
    1) The ALGORITHM_STATE always return a value of 00000000, which according to the datasheet corresponds to the MOTOR_IDLE state. This always happens, whether I have turned it on for the first time or it is successfully responding to my commands.

    2) I'm alimenting the driver with a power supply set to 16 V when still it displays a current of 0.023 A and a power of 0.386. At the first start, it starts accelerating reaching up to 0.23 A and a power of almost 4 W, then it sets back to the commands sets and those values oscillate with respect to the acceleration required and the speed at which it is spinning.

    Thanks again for your help!

  • Hi Silvio,

    1. I see that you do not have the Motor Parameters in the register configuration you provided. If you are loading this configuration every time then MPET will always run at least one to measure the motor parameters. I recommend running MPET and then saving the motor parameters to be used in your register configuration you load into the MCF8316A since MPET can take sometime to measure the motor's parameters.
    2. I also see that the current limit during closed loop is 0.125 A, can you try increasing this current limit to see if you get an improvement in the acceleration rate?
    3. Also I recommend trying to increase the CL_SLOW_ACC since this is the acceleration during the handoff period from open to closed loop this can affect the time it takes the motor to accelerate.
    4. After the motor reaches steady state, is the response of the motor quick or is it slow to get to the new speed?

    Regards,

    Joshua

  • Hi Joshua,

    1) I tried to store the Motor Parameters once the MPET measured them and I also tried to load them each time the motor was powered on but it didn't solve the problem. I could only update the motor resistance and inductance in the CLOSED_LOOP2 by taking the data from the MTR_PARAM address once the MPET measured them. I initially thought to load those values directly to this last address (0xE6) but I noticed it permits only read operations.

    2) Teorically my closed loop current limit should be 1.5 A if you are referring to the ALIGN_OR_SLOW_CURRENT_ILIMIT current limit. 

    3) I tried to increment this value but it resulted in blocking the motor each time it tried to perform the MPET routine.

    4) Once the motor has computed a first MPET, it can reach the target speed quickly.

    Regards,

    Silvio

  • Hi Silvo,

    4) Once the motor has computed a first MPET, it can reach the target speed quickly.

    Are you now able to achieve you desired start up time or do you need more support to get the motor to spin up faster?

    2) Teorically my closed loop current limit should be 1.5 A if you are referring to the ALIGN_OR_SLOW_CURRENT_ILIMIT current limit. 

    The Closed loop current limit is located in the FAULT_CONFIG1 register as ILIMIT. The current limit you mentioned is used only during align or slow first cycle start up methods before the motor switches to Open Loop operation.

    After the motor is able to complete an MPET run and is able to repeatedly reach the target speed, save the registers to a .json using the Save Registers button if you are using Motor Studio.

    After saving the registers, execute a EEPROM write, wait at least 750ms, and then power cycle the MCF8316A and check if the motor is able to spin up to the target speed in the same time as before.

    If after the power cycle the motor is slower or running MPET can you send the saved registers and the content of the registers after a power cycle?

    Regards,

    Joshua