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.

MCF8316A: Motor is not working with MCF8316A

Part Number: MCF8316A
Other Parts Discussed in Thread: , DRV10987

Hi Team,

I have a question on MCF8316A. Now we set drvoff low, speed 10k 90%, break low, dir high, I2C is not set. AVDD 3.25V, DVDD 1.56V. But the motor is not working.

Are there any other parameter we need to set? Thanks!

BRs, Sherman

  • Hi Sherman,

    MCF8316AEVM might not work out of the box because the EEPROM registers in MCF8316A should be configured and tuned to get the motor running. We provide a GUI to communicate to the MCF8316AEVM. Using the GUI, registers can be configured using I2C communication. GUI provides a section "Guided tuning" which provides step by step guidance to tune the motor. 

    Here's the link to the GUI: https://dev.ti.com/gallery/view/BLDC/MCF8316A_GUI/

    Please let me know if you have any questions or see any issues in accessing and communicating to the EVM. 

    Regards,

    Vishnu

  • Hi Vishnu,

    Thanks a lot for your reply!

    Now the customer evaluate the MCF8316A in their own designing board, not our EVM. So do you mean if they want to run the motor, they also need to write some EEPROM register by I2C firstly? Although they prefer control the motor by hardware interface. And do we have a guidance for what register need to write to help customer run the motor successfully with their own board? 

    Of course I will also let customer do some evaluation with EVM and GUI. Many thanks!

    BRs, Sherman

  • Hi Sherman,

    Can you ask customer to share the register settings that are currently being used? Once the GUI is connected to the EVM, click "Read all registers" on top right. After 10 seconds, go to File-->Save Registers. This will generate a JSON file. Please share this file with us. We will review the settings and get back. 

    Regards,

    Vishnu 

  • Hi Vishnu,

    Please find the file as below:

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x64738C20"
          },
          {
            "idx": 1,
            "id": "rev_drive_config",
            "value": "0xA8200000"
          },
          {
            "idx": 2,
            "id": "motor_startup1",
            "value": "0x0B6807D0"
          },
          {
            "idx": 3,
            "id": "motor_startup2",
            "value": "0xA306600C"
          },
          {
            "idx": 4,
            "id": "closed_loop1",
            "value": "0x0D3201B5"
          },
          {
            "idx": 5,
            "id": "closed_loop2",
            "value": "0x00007790"
          },
          {
            "idx": 6,
            "id": "closed_loop3",
            "value": "0x00000000"
          },
          {
            "idx": 7,
            "id": "closed_loop4",
            "value": "0x00000384"
          },
          {
            "idx": 8,
            "id": "speed_profiles1",
            "value": "0x00000000"
          },
          {
            "idx": 9,
            "id": "speed_profiles2",
            "value": "0x00000000"
          },
          {
            "idx": 10,
            "id": "speed_profiles3",
            "value": "0x00000000"
          },
          {
            "idx": 11,
            "id": "speed_profiles4",
            "value": "0x800D0000"
          },
          {
            "idx": 12,
            "id": "speed_profiles5",
            "value": "0x00000000"
          },
          {
            "idx": 13,
            "id": "speed_profiles6",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x58000000"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0xF0D00888"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "device_config1",
            "value": "0x00101462"
          },
          {
            "idx": 2,
            "id": "device_config2",
            "value": "0xC000F00F"
          },
          {
            "idx": 3,
            "id": "peri_config1",
            "value": "0xC1C01F00"
          },
          {
            "idx": 4,
            "id": "gd_config1",
            "value": "0x9C450100"
          },
          {
            "idx": 5,
            "id": "gd_config2",
            "value": "0x80200000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x48004800"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x80000004"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x80005E48"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x0041981F"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0xD36A113B"
          }
        ],
        [
          {
            "idx": 0,
            "id": "int_algo_1",
            "value": "0xA433407D"
          },
          {
            "idx": 1,
            "id": "int_algo_2",
            "value": "0x000001A7"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x81000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_status",
            "value": "0x187DBF00"
          },
          {
            "idx": 1,
            "id": "mtr_params",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_status_mpet",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "dev_ctrl",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_ctrl2",
            "value": "0x00000020"
          },
          {
            "idx": 2,
            "id": "current_pi",
            "value": "0x0004812D"
          },
          {
            "idx": 3,
            "id": "speed_pi",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "dac_1",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "dac_2",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algorithm_state",
            "value": "0x00000018"
          },
          {
            "idx": 1,
            "id": "fg_speed_fdbk",
            "value": "0x01FEFA5E"
          },
          {
            "idx": 2,
            "id": "bus_current",
            "value": "0x00000000"
          },
          {
            "idx": 3,
            "id": "phase_current_a",
            "value": "0xFFF20000"
          },
          {
            "idx": 4,
            "id": "phase_current_b",
            "value": "0x000C0000"
          },
          {
            "idx": 5,
            "id": "phase_current_c",
            "value": "0x00020000"
          },
          {
            "idx": 6,
            "id": "csa_gain_feedback",
            "value": "0x00010003"
          },
          {
            "idx": 7,
            "id": "voltage_gain_feedback",
            "value": "0x00000001"
          },
          {
            "idx": 8,
            "id": "vm_voltage",
            "value": "0x03390000"
          },
          {
            "idx": 9,
            "id": "phase_voltage_va",
            "value": "0x0001BB67"
          },
          {
            "idx": 10,
            "id": "phase_voltage_vb",
            "value": "0x0001BB67"
          },
          {
            "idx": 11,
            "id": "phase_voltage_vc",
            "value": "0x00006ED9"
          },
          {
            "idx": 12,
            "id": "sin_commutation_angle",
            "value": "0xFB737824"
          },
          {
            "idx": 13,
            "id": "cos_commutation_angle",
            "value": "0x06925B9C"
          },
          {
            "idx": 14,
            "id": "ialpha",
            "value": "0x03020000"
          },
          {
            "idx": 15,
            "id": "ibeta",
            "value": "0x053A4C43"
          },
          {
            "idx": 16,
            "id": "valpha",
            "value": "0x00299EC6"
          },
          {
            "idx": 17,
            "id": "vbeta",
            "value": "0x004079EE"
          },
          {
            "idx": 18,
            "id": "id",
            "value": "0xFF627F6D"
          },
          {
            "idx": 19,
            "id": "iq",
            "value": "0x05FFA224"
          },
          {
            "idx": 20,
            "id": "vd",
            "value": "0xFFFD85C0"
          },
          {
            "idx": 21,
            "id": "vq",
            "value": "0x004CC64B"
          },
          {
            "idx": 22,
            "id": "iq_ref_rotor_align",
            "value": "0x00000000"
          },
          {
            "idx": 23,
            "id": "speed_ref_open_loop",
            "value": "0x00000000"
          },
          {
            "idx": 24,
            "id": "iq_ref_open_loop",
            "value": "0x06664E40"
          },
          {
            "idx": 25,
            "id": "speed_ref_closed_loop",
            "value": "0x00000000"
          },
          {
            "idx": 26,
            "id": "id_ref_closed_loop",
            "value": "0x00000000"
          },
          {
            "idx": 27,
            "id": "iq_ref_closed_loop",
            "value": "0x00000000"
          },
          {
            "idx": 28,
            "id": "isd_state",
            "value": "0x00000005"
          },
          {
            "idx": 29,
            "id": "isd_speed",
            "value": "0x006B772B"
          },
          {
            "idx": 30,
            "id": "ipd_state",
            "value": "0x00000000"
          },
          {
            "idx": 31,
            "id": "ipd_angle",
            "value": "0x00000000"
          },
          {
            "idx": 32,
            "id": "ed",
            "value": "0xFFFFF660"
          },
          {
            "idx": 33,
            "id": "eq",
            "value": "0xFFFFFB5C"
          },
          {
            "idx": 34,
            "id": "speed_fdbk",
            "value": "0xFF9488D5"
          },
          {
            "idx": 35,
            "id": "theta_est",
            "value": "0xFD4FDF50"
          }
        ]
      ]
    }

    Thanks!

    BRs, Sherman

  • Sherman,

    Motor BEMF constant is programmed to 0 mV/Hz. This means when the speed command is issued, device will run Motor parameter extraction tool to measure the BEMF constant of the motor. Do you see any faults getting triggered? nFAULT LED should turn RED when there is a fault. Also, I noticed that the SPEED_MODE is configured to "Analog". In your previous post, you mentioned that you are applying 10k 90% PWM signal. If this is true, you should configure SPEED_MODE to "Controlled by duty cycle of SPEED input pin".

    Regards,

    Vishnu

  • Hi Vishnu,

    Thanks a lot for your reply!

    Still two questions. 1. As showed in below figure, the motor speed RPM equals to (120x10^6)*(poles box)/(Electrical Period box), I am little confused about the formula. Could you please help me explain how to get this formula? In my view, motor speed is equal to 60f/P.  2. As below figure, What will happen if IPD and ISD are not set? If it must be set, what value do you suggest?

    Many thanks!

          

    BRs, Sherman

  • Hi Sherman,

    Thanks for the additional questions! Today was a TI holiday but Vishnu should be able to respond soon.

    Regards,

    Anthony Lodi

  • Hi Sherman,

    The GUI screenshots that you shared are from DRV109xx EVM but we have been discussing about MCF8316A in our earlier posts. Can you clarify?

    1. As showed in below figure, the motor speed RPM equals to (120x10^6)*(poles box)/(Electrical Period box), I am little confused about the formula. Could you please help me explain how to get this formula? In my view, motor speed is equal to 60f/P.

    You are absolutely right! The equation in the DRV109xx GUI is incorrect. Motor speed in RPM should be 60f/P. 

    2. As below figure, What will happen if IPD and ISD are not set? If it must be set, what value do you suggest?

    If IPD is not set, device chooses "Align" as the motor startup method. If you select IPD, device will choose IPD as the motor startup method. IPD is chosen when you do not wish the motor to rotate in opposite direction during startup. More details about motor startup in  section 8.4.3.5 (Motor Initialization) in DRV10987 datasheet. You can start with the default values programmed in the device. 

    ISD is initial speed detect. The ISD function is used to identify the initial condition of the motor. If the function is disabled, the DRV10987 device does not perform the initial speed detect function and treats the motor as if it is stationary. If the function is enabled, the speed and position information measured during ISD are used to initialize the drive state of the device, which can transition directly into closed loop (or open loop if motor speed is not sufficient for closed loop operation) state without needing to stop the motor. More details about ISD in section 8.4.3.1 in DRV10987 datasheetYou can start with the default values programmed in the device. 

    Please refer to the DRV10987 tuning guide and "DRV10983x, DRV10975x, and DRV10987 IPD Tuning Guide" for more details related to tune IPD and ISD. 

    Regards,

    Vishnu

  • Hi Vishnu,

    Thanks a lot for your reply! So clear.

    One new question is about Kp/Ki set in GUI. As showed in below, why the Kp and Ki value is restricted to 2.55/25.5 in customer's GUI? They want to set Kp=10 and Ki=1, and wonder how to realize. Many thanks!

    BRs, Sherman

  • Sherman,

    Kp and Ki scaling is based on how it is scaled in the algorithm and there are no standard units or scaling for these parameters. I would recommend to manually tune both parameters until the desired speed response is achieved. 

    Regards,

    Vishnu  

  • Hi Vishnu,

    Yes I agree that we need manually tune Kp and Ki, but the fact is that Kp and Ki value is strictly restricted, customer can't realize good result within this range. It maybe somewhere wrong in GUI, because I saw that the range is no restricted in other post. So do you have some comments on this GUI issue?

    Many thanks!

    BRs, Sherman

  • Shreman,

    MCF8316A auto calculates Speed loop PI controller gains by setting [SPD_LOOP_KP] and [SPD_LOOP_KI] to zero. Set both values to zero and issue speed command. MCF8316A will start running MPET to calculate the Speed Kp and Ki based on the motor mechanical parameters. 

    Regards,

    Vishnu