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: Set the speed from the beginning

Part Number: MCF8316AEVM

Hi,

is it possible to operate the EVM without closed loop setting? At the beginning of the start up process it is not possible for me to adjust the speed.

Is there a way to set the speed from the beginning?

Thank you for your help

Best,

Linus

  • Hi Linus,

    At what point in the startup process are you attempting to change speed and it is not working, you can check the value of the ALGORITHUM_STATE register?

    Would you mind explaining a bit more what you are attempting to do with the motor?

    Regards,

    Joshua

  • Hi Joshua,

    for example if I continuously set a low speed the engine starts with a higher speed (which is dependent on the maximum speed configured in the GUI) and then falls to the intended speed. From this point the motor can be rotated as desired. I do not use the controller for what it is recommended for. I control it via a microcontroller to position a BLDC motor through the EVM. For this, the motor makes between 0 and 50 revolutions, for which a controllable speed from the beginning would be helpful. As I understood with this board it is not possible to activate auto read because otherwise it will fail. But if it is helpful I will determine the sequence of the ALGORITHUM_STATE.

  • Hi Linus,

    You should be able to read the ALGORITHM_STATE register while the motor is not in idle state. This issue that you are referring to occurs when to many I2C commands are sent to the device in a short amount of time.

    Is this speed issue repeatable if you start the motor from standby without power cycling the EVM?

    Can you provide the register configuration that you are using? 

    is it possible to operate the EVM without closed loop setting?

    To operate the motor only in open loop (without closed loop) you can set the CLOSED_LOOP_DIS register to 1 in the register field ALGO_CTRL1.

    Regards,

    Joshua

  • Hi Joshua,

    Yes, the problem is always the same. The Board starts at the same speed no matter which one you specify.

    I have set the registers for open loop operation, but could not notice any difference. This will be because after the initial Idle state it goes into the open loop. Due to the short running time this is the last state. Sometimes the state ISD is also displayed. I will provide you with the Configuration. 

    I also have a different problem. In the beginning I had one evaluation board. Because this did not work with the desired configuration I bought a second board to make sure it is not a defect of the board. On the new board the configuration runs with the problems I described earlier. But the other Board doesn’t even spin the Motor. Under any circumstances it displays IPD_T1_FAULT. Even if I restore the default settings I can't get it out of the error state. Now my question is if my board is faulty or what I can do.

    Regards,

    Linus

    {
      "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": "0x4B68DDC0"
          },
          {
            "idx": 3,
            "id": "motor_startup2",
            "value": "0x24AE6000"
          },
          {
            "idx": 4,
            "id": "closed_loop1",
            "value": "0x1A3181B0"
          },
          {
            "idx": 5,
            "id": "closed_loop2",
            "value": "0x1AAD6E3C"
          },
          {
            "idx": 6,
            "id": "closed_loop3",
            "value": "0x0C800002"
          },
          {
            "idx": 7,
            "id": "closed_loop4",
            "value": "0x26898708"
          },
          {
            "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": "0x6FE80206"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x74000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config",
            "value": "0x00000001"
          },
          {
            "idx": 1,
            "id": "device_config1",
            "value": "0x00100000"
          },
          {
            "idx": 2,
            "id": "device_config2",
            "value": "0x0000B000"
          },
          {
            "idx": 3,
            "id": "peri_config1",
            "value": "0x40000000"
          },
          {
            "idx": 4,
            "id": "gd_config1",
            "value": "0x00000100"
          },
          {
            "idx": 5,
            "id": "gd_config2",
            "value": "0x00200000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x48004800"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x0000000C"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x00001332"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x806DC85D"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0xD371013A"
          }
        ],
        [
          {
            "idx": 0,
            "id": "int_algo_1",
            "value": "0x00B1407D"
          },
          {
            "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": "0x00000000"
          },
          {
            "idx": 1,
            "id": "mtr_params",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_status_mpet",
            "value": "0x0A000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "dev_ctrl",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000001"
          },
          {
            "idx": 1,
            "id": "algo_ctrl2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "current_pi",
            "value": "0x00047661"
          },
          {
            "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": "0x00000000"
          },
          {
            "idx": 1,
            "id": "fg_speed_fdbk",
            "value": "0x7FFFFFFF"
          },
          {
            "idx": 2,
            "id": "bus_current",
            "value": "0x00000000"
          },
          {
            "idx": 3,
            "id": "phase_current_a",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "phase_current_b",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "phase_current_c",
            "value": "0x00000000"
          },
          {
            "idx": 6,
            "id": "csa_gain_feedback",
            "value": "0x00010003"
          },
          {
            "idx": 7,
            "id": "voltage_gain_feedback",
            "value": "0x00000001"
          },
          {
            "idx": 8,
            "id": "vm_voltage",
            "value": "0x01CF8000"
          },
          {
            "idx": 9,
            "id": "phase_voltage_va",
            "value": "0x00000000"
          },
          {
            "idx": 10,
            "id": "phase_voltage_vb",
            "value": "0x00000000"
          },
          {
            "idx": 11,
            "id": "phase_voltage_vc",
            "value": "0x00000000"
          },
          {
            "idx": 12,
            "id": "sin_commutation_angle",
            "value": "0x00000000"
          },
          {
            "idx": 13,
            "id": "cos_commutation_angle",
            "value": "0x00000000"
          },
          {
            "idx": 14,
            "id": "ialpha",
            "value": "0x00000000"
          },
          {
            "idx": 15,
            "id": "ibeta",
            "value": "0x00000000"
          },
          {
            "idx": 16,
            "id": "valpha",
            "value": "0x00000000"
          },
          {
            "idx": 17,
            "id": "vbeta",
            "value": "0x00000000"
          },
          {
            "idx": 18,
            "id": "id",
            "value": "0x00000000"
          },
          {
            "idx": 19,
            "id": "iq",
            "value": "0x00000000"
          },
          {
            "idx": 20,
            "id": "vd",
            "value": "0x00000000"
          },
          {
            "idx": 21,
            "id": "vq",
            "value": "0x00000000"
          },
          {
            "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": "0x00000000"
          },
          {
            "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": "0x00000000"
          },
          {
            "idx": 29,
            "id": "isd_speed",
            "value": "0x00000000"
          },
          {
            "idx": 30,
            "id": "ipd_state",
            "value": "0x00000000"
          },
          {
            "idx": 31,
            "id": "ipd_angle",
            "value": "0x00000000"
          },
          {
            "idx": 32,
            "id": "ed",
            "value": "0x00000000"
          },
          {
            "idx": 33,
            "id": "eq",
            "value": "0x00000000"
          },
          {
            "idx": 34,
            "id": "speed_fdbk",
            "value": "0x00000000"
          },
          {
            "idx": 35,
            "id": "theta_est",
            "value": "0x00000000"
          }
        ]
      ]
    }

  • Hi Linus,

    I will aim to get back to you by the end of the week at the latest.

    Regards,

    Joshua

  • Hi Linus,

    For the  IPD_T1_FAULT, try to decrease both the IPD_CURR_THR and the IPD_CLK_FREQ. 

    As for the speed issue, in low speed applications sensorless algorithms have the down side of needing to speed up to detect the BEMF before going into closed loop where it can go to the target speed. You can try to lower the OL_ACC_A1 and OL_ACC_A2 values to slow the acceleration rate while in open loop. You can also try lowering OPN_CL_HANDOFF_THR to transition closed loop faster although setting this too low can lead to faults occurring. 

    If you are targeting a low speed, such as less than 8% of max speed, a sensored motor driver will preform better at these lower speeds as there is not BEMF measurement required.

    Regards,

    Joshua