MCT8316A: Close speed mode when input voltage drop

Part Number: MCT8316A

Tool/software:

Hi,

We are using the MCT8316A to drive motors on a commercial device that using battery.
On whatever battery level (down to about 20V), I must provide the motors a constant (known) speed.
Since my device can run on varying input voltage levels, I need to be sure that the motor speed will remain constant.

I can use software to implement the close-loop by reading the input voltage and calculating the pwm value (via I2C), but I'd like to know if there's a way to use a driver feature instead.

I tried turning on the SPEED_LOOP on the CLOSE_LOOP_MODE register, but I found that the speed unexpectedly decreased when I lowered the input voltage (using a lab power supply).
What have I been missing?

Thanks,
Dagan

  • Hi Dagan,

    Can you check if the DUTY is maximum when Voltage is lowered?

    Also, how is KP, KI and MAX speed reference is configured?

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri S,

    What register you mean by "DUTY"? I'm using the 8316A device and not 8315.

    my speed_loop parameters:
    SPD_POWER_V_MIN = 2.5%
    SPD_POWER_V_MAX = 75%
    KI = 0xA
    KP = 0xA

    I2C speed command is 47.0, but I test it with several values - only accelaration rate was changed (as expected).

    Motor status for input 22V:
    SPEED_CMD = 47.00
    VOLT_MAG = 22.0
    Motor electric speed = 184.1 Hz
    DC_BUS_CURR = 0.11A (motor is without load)
    DC_BATT_PW = 2.44W

    Motor status for input 26V:
    SPEED_CMD = 47.00
    VOLT_MAG = 26.0
    Motor electric speed = 217.9 Hz
    DC_BUS_CURR = 0.12A (motor is without load)
    DC_BATT_PW = 3.09W

    Thanks,

    Dagan

  • Some update:
    I re-define the motor related parameters and now the speed_loop is working OK if the duty cycle (SPEED_CMD) is below ~80.
    Above this value, the motor speed is directly changed with the SPEED_CMD.

    See below configuration:

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x2F044140"
          },
          {
            "idx": 1,
            "id": "motor_startup1",
            "value": "0x34949195"
          },
          {
            "idx": 2,
            "id": "motor_startup2",
            "value": "0x0A295990"
          },
          {
            "idx": 3,
            "id": "closed_loop1",
            "value": "0x10396254"
          },
          {
            "idx": 4,
            "id": "closed_loop2",
            "value": "0x0AA5A4F8"
          },
          {
            "idx": 5,
            "id": "closed_loop3",
            "value": "0x4CC40100"
          },
          {
            "idx": 6,
            "id": "closed_loop4",
            "value": "0x000CE9C4"
          },
          {
            "idx": 7,
            "id": "const_speed",
            "value": "0x08006411"
          },
          {
            "idx": 8,
            "id": "const_pwr",
            "value": "0x0A284C84"
          },
          {
            "idx": 9,
            "id": "150_deg_two_ph_profile",
            "value": "0x36DB6DA6"
          },
          {
            "idx": 10,
            "id": "150_deg_three_ph_profile",
            "value": "0x36DB6D80"
          },
          {
            "idx": 11,
            "id": "trap_config1",
            "value": "0x054BA106"
          },
          {
            "idx": 12,
            "id": "trap_config2",
            "value": "0x3A880000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x7BF43048"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x71462009"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gd_config1",
            "value": "0x1C40000C"
          },
          {
            "idx": 1,
            "id": "gd_config2",
            "value": "0x14000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config1",
            "value": "0x2D720604"
          },
          {
            "idx": 1,
            "id": "pin_config2",
            "value": "0x080C0000"
          },
          {
            "idx": 2,
            "id": "device_config",
            "value": "0x7FFF0000"
          },
          {
            "idx": 3,
            "id": "peri_config",
            "value": "0x00000000"
          }
        ],
        [
          {
            "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": "0x00000A81"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x00AE081E"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0x536B113A"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_reserved1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_reserved2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_reserved3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "sys_status1",
            "value": "0x00FA8E06"
          },
          {
            "idx": 1,
            "id": "sys_status2",
            "value": "0x2001070B"
          },
          {
            "idx": 2,
            "id": "sys_status3",
            "value": "0x0019009E"
          }
        ],
        [
          {
            "idx": 0,
            "id": "device_ctrl",
            "value": "0x40688000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000000"
          }
        ]
      ]
    }

  • Hi Degan

    You are saying speed varying properly up to 80% and can you explain again for second statement "Above this value, the motor speed is directly changed with the SPEED_CMD"

    Thanks and Best Regards

    Venkatadri S

  • Hi,
    My mistake - I mean the speed is change directly with the input voltage (and not SPEED_CMD).

    Thus, up to about 80%, the speed_loop functions properly - the driver maintains the speed at the same level despite variations in the input voltage.
    Above this level, the input voltage causes an unexpected change in speed (greater input results in higher speed, lower input results in lower speed).

    Thanks,
    Dagan

  • Hi Degan,

    I suspect duty cycle is maximum, can you share phase voltage waveform above 80%?

    Thanks and Best Regards

    Venkatadri S

  • Hi Venkatadri S,
    Phase voltage for D.C = 50%:

    Phase voltage for D.C = 85%:

    Thanks,

    Dagan

  • Hi Venkatadri S,
    That help me understand the problem Slight smile
    My motor max speed is 2500 RPM with 5 pole pair --> max speed is 208Hz
    I re-configure the CONST_PWR register with this value (208*16=3328) and now the motor behave as expected up-to 100% D.C.

    Thanks for your support,

    Dagan