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: Cannot get motor to spin

Part Number: MCF8316AEVM

I'm using the 180kv version of this motor, still trying to get all the specs, will post update when I get them.

I've tried a number of the troubleshooting steps outlined in the tuning guide, etc. but nothing has made any kind of difference in the behavior of the motor.

I had tried changing some parameters and then ended up getting LOCK_LIMIT and HW_LOCK_LIMIT faults, but I restored the default settings and I'm not getting those any more.

Now that I'm not getting any faults, if I set the motor speed to 25% and then turn the pot, I can see one pulse simultaneously on all phases, and then nothing.  I can feel a very slight tug on the motor when I try to spin it manually with the pot > 0, but the motor does not spin at all, not even the slightest movement.

We have one of the ST Drone Discovery kits and have no trouble getting the motor to spin and hold RPM.  Our application is not a drone. The highest current draw we see using the ST motor controller at 12V is 6-700 mA on start, settling to less than 300 mA in steady state, so the motor is completely understressed.

What parameters should I need to tweak to get started?  I do know that there is very low resistance between phases, and have tried changing that parameter, but it had no effect.

  • Hi Gregory,

    Thanks for positing your question in MD forum. Firstly, I want to check if you followed the instructions mentioned in the Essential controls in the "Guided tuning" section of the GUI (see screenshot below). Was the device able to run MPET successfully? Can you share the phase current waveform and the register settings? 

      

    Regards,

    Vishnu

  • I re-ran though the guided tuning, making sure I followed all the steps.  Still no joy. 

    One thing I noticed though, was that even though I could see the Duty Command % go up and down when I moved the pot, VM Voltage is always zero, despite measuring 12V on the VM terminal.  I have power coming in through VBAT, but even after the RP protection circuitry, I see 12V on the VM terminal.  However, if I read the entry under MOTOR STATUS properly, the chip does not see any voltage - is it correct that should I see pretty much 12V for VM Votlage in the tool if I measure 12V at the VM terminal?

    How do I validate everything is working correctly - it's too bad a motor that works with the default settings didn't ship with the board as a reference.

    Unfortunately, I do not have current probes for my oscilloscope (and it's only two channel).  If you have some way of measuring / generating the phase current waveform, given a somewhat rudimentary test environment, I'm all ears.

    As far as register settings, I have reset those to default - the only changes after that are for the 14 pole pairs of my motor and 2160 RPM for the 180kv rating of the motor (at 12V).

  • Gregory,

    Yes, you should see the device read back 12V Vm voltage under "Motor status". Can you make sure you enabled "Auto read motor status"? Are you issuing speed command using the potentiometer or I2C? If you are commanding via I2C, make sure [SPEED_PIN_CONFIG] bit and "Speed control via I2C" are enabled. Slide the I2C speed command percentage to issue speed command via I2C. 

    Regards,

    Vishnu

  • >>Yes, you should see the device read back 12V Vm voltage under "Motor status".

    Hmmm... No joy there.

    >>Can you make sure you enabled "Auto read motor status"?

    Always.  Along with auto read faults.

    >>Are you issuing speed command using the potentiometer or I2C? If you are commanding via I2C,
    >>make sure [SPEED_PIN_CONFIG] bit and "Speed control via I2C" are enabled. Slide the I2C
    >>speed command percentage to issue speed command via I2C. 

    I have done this both ways.  Using the pot and the slider.

    I'm wondering if my board is functioning properly if I don't see a value for VM Voltage.

    I didn't see a way to attach a file, so here's the saved registers.

    {
    "signature": "oneui-register-data",
    "data": [
    [
    {
    "idx": 0,
    "id": "isd_config",
    "value": "0x44638C20"
    },
    {
    "idx": 1,
    "id": "rev_drive_config",
    "value": "0x283AF064"
    },
    {
    "idx": 2,
    "id": "motor_startup1",
    "value": "0x0B6807D0"
    },
    {
    "idx": 3,
    "id": "motor_startup2",
    "value": "0x23066004"
    },
    {
    "idx": 4,
    "id": "closed_loop1",
    "value": "0x0D3201B0"
    },
    {
    "idx": 5,
    "id": "closed_loop2",
    "value": "0x1AAD0000"
    },
    {
    "idx": 6,
    "id": "closed_loop3",
    "value": "0x00000000"
    },
    {
    "idx": 7,
    "id": "closed_loop4",
    "value": "0x00000BD0"
    },
    {
    "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": "0x00000000"
    },
    {
    "idx": 12,
    "id": "speed_profiles5",
    "value": "0x00000000"
    },
    {
    "idx": 13,
    "id": "speed_profiles6",
    "value": "0x00000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "fault_config1",
    "value": "0x5FE8820E"
    },
    {
    "idx": 1,
    "id": "fault_config2",
    "value": "0x74C08000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "pin_config",
    "value": "0x2DD0E480"
    },
    {
    "idx": 1,
    "id": "device_config1",
    "value": "0x18000000"
    },
    {
    "idx": 2,
    "id": "device_config2",
    "value": "0x00003000"
    },
    {
    "idx": 3,
    "id": "peri_config1",
    "value": "0x40000000"
    },
    {
    "idx": 4,
    "id": "gd_config1",
    "value": "0x1C400100"
    },
    {
    "idx": 5,
    "id": "gd_config2",
    "value": "0x00200000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "ana_trim3",
    "value": "0x00000000"
    },
    {
    "idx": 1,
    "id": "ana_trim4",
    "value": "0x00000000"
    },
    {
    "idx": 2,
    "id": "ana_trim5",
    "value": "0x00000000"
    },
    {
    "idx": 3,
    "id": "ana_trim6",
    "value": "0x00000000"
    },
    {
    "idx": 4,
    "id": "ana_trim7",
    "value": "0x00000000"
    },
    {
    "idx": 5,
    "id": "ana_trim8",
    "value": "0x00000000"
    },
    {
    "idx": 6,
    "id": "ana_trim9",
    "value": "0x00000000"
    },
    {
    "idx": 7,
    "id": "ana_trim10",
    "value": "0x00000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "int_algo_1",
    "value": "0x04B3407D"
    },
    {
    "idx": 1,
    "id": "int_algo_2",
    "value": "0x000001A7"
    }
    ],
    [
    {
    "idx": 0,
    "id": "gate_driver_fault_status",
    "value": "0x00000000"
    },
    {
    "idx": 1,
    "id": "controller_fault_status",
    "value": "0x00000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "algo_status",
    "value": "0x00770000"
    },
    {
    "idx": 1,
    "id": "mtr_params",
    "value": "0x00000000"
    },
    {
    "idx": 2,
    "id": "algo_status_mpet",
    "value": "0x00000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "algo_ctrl1",
    "value": "0x60000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "algo_debug1",
    "value": "0x80000000"
    },
    {
    "idx": 1,
    "id": "algo_debug2",
    "value": "0x00000000"
    },
    {
    "idx": 2,
    "id": "current_pi",
    "value": "0x00000000"
    },
    {
    "idx": 3,
    "id": "speed_pi",
    "value": "0x00000000"
    }
    ],
    [
    {
    "idx": 0,
    "id": "speed_ref_closed_loop",
    "value": "0x00000000"
    },
    {
    "idx": 1,
    "id": "vm_voltage",
    "value": "0x00000002"
    },
    {
    "idx": 2,
    "id": "voltage_gain_feedback",
    "value": "0x0000A980"
    },
    {
    "idx": 3,
    "id": "csa_gain_feedback",
    "value": "0x0000000E"
    },
    {
    "idx": 4,
    "id": "phase_voltage_va",
    "value": "0x00000000"
    },
    {
    "idx": 5,
    "id": "phase_voltage_vb",
    "value": "0x00000000"
    },
    {
    "idx": 6,
    "id": "phase_voltage_vc",
    "value": "0x00A70000"
    },
    {
    "idx": 7,
    "id": "id_ref_closed_loop",
    "value": "0x00000000"
    },
    {
    "idx": 8,
    "id": "iq_ref_closed_loop",
    "value": "0x00000000"
    },
    {
    "idx": 9,
    "id": "id",
    "value": "0x00000000"
    },
    {
    "idx": 10,
    "id": "iq",
    "value": "0x00000000"
    },
    {
    "idx": 11,
    "id": "vd",
    "value": "0x00000000"
    },
    {
    "idx": 12,
    "id": "vq",
    "value": "0x00000000"
    },
    {
    "idx": 13,
    "id": "ialpha",
    "value": "0x00020004"
    },
    {
    "idx": 14,
    "id": "ibeta",
    "value": "0x00010000"
    },
    {
    "idx": 15,
    "id": "valpha",
    "value": "0x00000000"
    },
    {
    "idx": 16,
    "id": "vbeta",
    "value": "0x00000000"
    },
    {
    "idx": 17,
    "id": "bus_current",
    "value": "0x00000000"
    },
    {
    "idx": 18,
    "id": "ipd_state",
    "value": "0x00000000"
    },
    {
    "idx": 19,
    "id": "isd_state",
    "value": "0x00000000"
    },
    {
    "idx": 20,
    "id": "algorithm_state",
    "value": "0x00000000"
    },
    {
    "idx": 21,
    "id": "phase_current_a",
    "value": "0x00000001"
    },
    {
    "idx": 22,
    "id": "phase_current_b",
    "value": "0x0000000D"
    },
    {
    "idx": 23,
    "id": "phase_current_c",
    "value": "0x00000001"
    },
    {
    "idx": 24,
    "id": "ipd_angle",
    "value": "0x000007F9"
    },
    {
    "idx": 25,
    "id": "isd_speed",
    "value": "0x00000000"
    },
    {
    "idx": 26,
    "id": "speed_ref_open_loop",
    "value": "0x00000000"
    },
    {
    "idx": 27,
    "id": "iq_ref_open_loop",
    "value": "0x00000000"
    },
    {
    "idx": 28,
    "id": "iq_ref_rotor_align",
    "value": "0x00000000"
    },
    {
    "idx": 29,
    "id": "ed",
    "value": "0x00000000"
    },
    {
    "idx": 30,
    "id": "eq",
    "value": "0x00000000"
    },
    {
    "idx": 31,
    "id": "theta_est",
    "value": "0x00000002"
    },
    {
    "idx": 32,
    "id": "speed_fdbk",
    "value": "0x00000001"
    },
    {
    "idx": 33,
    "id": "sin_commutation_angle",
    "value": "0x00000000"
    },
    {
    "idx": 34,
    "id": "cos_commutation_angle",
    "value": "0x00000000"
    }
    ]
    ]
    }

  • This is what I'm seeing in the GUI when the motor should be spinning

    This doesn't work either.

  • Hi Gregory, 

    Vishnu is out of office and will return on Thursday, 12/16/21. Thanks for your patience!

    Regards,
    Aaron

  • Hi Gregory,

    Looks like the device is not connected to the GUI. Do you see "Hardware connected" text at the bottom left of the GUI? Can you click "Read all registers" and see if you get a message at the bottom left of the GUI saying "Read xx registers"? 

    Also, can you check if the switches S1, S2 and S3 are flipped in the right direction as shown in below screenshot?

      

    Regards,

    Vishnu.

  • Of course, the board has been connected, we're way past the "is there gas in the car" diags.  And yes, the switches and jumpers are just as the diagram and all the reference material indicates.

    I really think the chip not seeing any VM voltage, even though I can measure very similar voltages on the VIN and VM it on the test points could be a problem.

  • Gregory,

    If the chip is not seeing any Vm voltage then the GUI will not be making any communication to the EVM. I would like to firstly check if this is a GUI communication issue or device issue. Did you click "Read all registers" and see if you get a message at the bottom left of the GUI saying "Read xx registers"? If yes, then we can confirm that the GUI is communicating to the EVM and start focusing on the root cause for the device to not read back supply voltage. 

    Regards,

    Vishnu 

  • I was so excited to actually get one of the boards from TI that I didn't realize I got the MCT version, not the MCF version.  I now have my motor spinning